blob: 13b261517cce53d130235b43ce62bbfbe01e00ee [file] [log] [blame]
Arend van Spriel5b435de2011-10-05 13:19:03 +02001/*
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
Joe Perches02f77192012-01-15 00:38:44 -080017#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18
Arend van Spriel5b435de2011-10-05 13:19:03 +020019#include <linux/kernel.h>
20#include <linux/delay.h>
21#include <linux/cordic.h>
22
23#include <brcm_hw_ids.h>
24#include <aiutils.h>
25#include <chipcommon.h>
26#include <pmu.h>
27#include <d11.h>
28#include <phy_shim.h>
29#include "phy_int.h"
30#include "phy_hal.h"
31#include "phy_radio.h"
32#include "phyreg_n.h"
33#include "phytbl_n.h"
Alwin Beukers23038212011-10-18 14:02:58 +020034#include "soc.h"
Arend van Spriel5b435de2011-10-05 13:19:03 +020035
36#define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
37 read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
38 ((core == PHY_CORE_0) ? \
39 radio_type##_##jspace##0 : \
40 radio_type##_##jspace##1))
41
42#define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
43 write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
44 ((core == PHY_CORE_0) ? \
45 radio_type##_##jspace##0 : \
46 radio_type##_##jspace##1), value)
47
48#define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
49 write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
50
51#define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
52 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53 radio_type##_##jspace##0##_##reg_name : \
54 radio_type##_##jspace##1##_##reg_name))
55
56#define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
57 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
58 radio_type##_##jspace##0##_##reg_name : \
59 radio_type##_##jspace##1##_##reg_name), \
60 value)
61
62#define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
63 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
64 radio_type##_##reg_name##_##jspace##0 : \
65 radio_type##_##reg_name##_##jspace##1))
66
67#define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
68 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
69 radio_type##_##reg_name##_##jspace##0 : \
70 radio_type##_##reg_name##_##jspace##1), \
71 value)
72
73#define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
74#define NPHY_ACI_CHANNEL_DELTA 5
75#define NPHY_ACI_CHANNEL_SKIP 4
76#define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
77#define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
78#define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
79#define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
80#define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
81#define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
82
83#define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
84
85#define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
86
87#define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
88
89#define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
90
91#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
92
93#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
94
95#define NPHY_NOISE_NOASSOC_ENTER_TH 400
96
97#define NPHY_NOISE_ASSOC_ENTER_TH 400
98
99#define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH 400
100
101#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
102#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
103
104#define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
105
106#define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
107
108#define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
109
110#define NPHY_RSSICAL_MAXREAD 31
111
112#define NPHY_RSSICAL_NPOLL 8
113#define NPHY_RSSICAL_MAXD (1<<20)
114#define NPHY_MIN_RXIQ_PWR 2
115
116#define NPHY_RSSICAL_W1_TARGET 25
117#define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
118#define NPHY_RSSICAL_NB_TARGET 0
119
120#define NPHY_RSSICAL_W1_TARGET_REV3 29
121#define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
122
123#define NPHY_CALSANITY_RSSI_NB_MAX_POS 9
124#define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
125#define NPHY_CALSANITY_RSSI_W1_MAX_POS 12
126#define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
127 NPHY_RSSICAL_MAXREAD)
128#define NPHY_CALSANITY_RSSI_W2_MAX_POS NPHY_CALSANITY_RSSI_W1_MAX_POS
129#define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
130 NPHY_RSSICAL_MAXREAD)
131#define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
132#define NPHY_RSSI_NB_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
133 ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
134#define NPHY_RSSI_W1_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
135 ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
136#define NPHY_RSSI_W2_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
137 ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
138
139#define NPHY_IQCAL_NUMGAINS 9
140#define NPHY_N_GCTL 0x66
141
142#define NPHY_PAPD_EPS_TBL_SIZE 64
143#define NPHY_PAPD_SCL_TBL_SIZE 64
144#define NPHY_NUM_DIG_FILT_COEFFS 15
145
146#define NPHY_PAPD_COMP_OFF 0
147#define NPHY_PAPD_COMP_ON 1
148
149#define NPHY_SROM_TEMPSHIFT 32
150#define NPHY_SROM_MAXTEMPOFFSET 16
151#define NPHY_SROM_MINTEMPOFFSET -16
152
153#define NPHY_CAL_MAXTEMPDELTA 64
154
155#define NPHY_NOISEVAR_TBLLEN40 256
156#define NPHY_NOISEVAR_TBLLEN20 128
157
158#define NPHY_ANARXLPFBW_REDUCTIONFACT 7
159
160#define NPHY_ADJUSTED_MINCRSPOWER 0x1e
161
162/* 5357 Chip specific ChipControl register bits */
163#define CCTRL5357_EXTPA (1<<14) /* extPA in ChipControl 1, bit 14 */
164#define CCTRL5357_ANT_MUX_2o3 (1<<15) /* 2o3 in ChipControl 1, bit 15 */
165
166#define NPHY_CAL_TSSISAMPS 64
167#define NPHY_TEST_TONE_FREQ_40MHz 4000
168#define NPHY_TEST_TONE_FREQ_20MHz 2500
169
170#define MAX_205x_RCAL_WAITLOOPS 10000
171
172#define NPHY_RXCAL_TONEAMP 181
173#define NPHY_RXCAL_TONEFREQ_40MHz 4000
174#define NPHY_RXCAL_TONEFREQ_20MHz 2000
175
176#define TXFILT_SHAPING_OFDM20 0
177#define TXFILT_SHAPING_OFDM40 1
178#define TXFILT_SHAPING_CCK 2
179#define TXFILT_DEFAULT_OFDM20 3
180#define TXFILT_DEFAULT_OFDM40 4
181
182struct nphy_iqcal_params {
183 u16 txlpf;
184 u16 txgm;
185 u16 pga;
186 u16 pad;
187 u16 ipa;
188 u16 cal_gain;
189 u16 ncorr[5];
190};
191
192struct nphy_txiqcal_ladder {
193 u8 percent;
194 u8 g_env;
195};
196
197struct nphy_ipa_txcalgains {
198 struct nphy_txgains gains;
199 bool useindex;
200 u8 index;
201};
202
203struct nphy_papd_restore_state {
204 u16 fbmix[2];
205 u16 vga_master[2];
206 u16 intpa_master[2];
207 u16 afectrl[2];
208 u16 afeoverride[2];
209 u16 pwrup[2];
210 u16 atten[2];
211 u16 mm;
212};
213
214struct nphy_ipa_txrxgain {
215 u16 hpvga;
216 u16 lpf_biq1;
217 u16 lpf_biq0;
218 u16 lna2;
219 u16 lna1;
220 s8 txpwrindex;
221};
222
223#define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
224
225static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
226 {0, 0, 0, 0, 0, 100},
227 {0, 0, 0, 0, 0, 50},
228 {0, 0, 0, 0, 0, -1},
229 {0, 0, 0, 3, 0, -1},
230 {0, 0, 3, 3, 0, -1},
231 {0, 2, 3, 3, 0, -1}
232};
233
234static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
235 {0, 0, 0, 0, 0, 128},
236 {0, 0, 0, 0, 0, 70},
237 {0, 0, 0, 0, 0, 20},
238 {0, 0, 0, 3, 0, 20},
239 {0, 0, 3, 3, 0, 20},
240 {0, 2, 3, 3, 0, 20}
241};
242
243static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
244 {0, 0, 0, 0, 0, 100},
245 {0, 0, 0, 0, 0, 50},
246 {0, 0, 0, 0, 0, -1},
247 {0, 0, 0, 3, 0, -1},
248 {0, 0, 3, 3, 0, -1},
249 {0, 0, 5, 3, 0, -1}
250};
251
252static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
253 {0, 0, 0, 0, 0, 10},
254 {0, 0, 0, 1, 0, 10},
255 {0, 0, 1, 2, 0, 10},
256 {0, 0, 1, 3, 0, 10},
257 {0, 0, 4, 3, 0, 10},
258 {0, 0, 6, 3, 0, 10}
259};
260
261enum {
262 NPHY_RXCAL_GAIN_INIT = 0,
263 NPHY_RXCAL_GAIN_UP,
264 NPHY_RXCAL_GAIN_DOWN
265};
266
267#define wlc_phy_get_papd_nphy(pi) \
268 (read_phy_reg((pi), 0x1e7) & \
269 ((0x1 << 15) | \
270 (0x1 << 14) | \
271 (0x1 << 13)))
272
273static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
274 {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
275 230, -44, 230, 201, -191, 201},
276 {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
277 26, 34, -32, 34},
278 {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
279 121, -73, 121, 91, 124, 91},
280 {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
281 151, 301, 151, 602, -752, 602},
282 {-92, 58, -96, 49, -104, 44, 17, 35, 17,
283 12, 25, 12, 13, 27, 13},
284 {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
285 230, -44, 230, 201, -191, 201},
286 {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
287 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
288};
289
290struct chan_info_nphy_2055 {
291 u16 chan;
292 u16 freq;
293 uint unknown;
294 u8 RF_pll_ref;
295 u8 RF_rf_pll_mod1;
296 u8 RF_rf_pll_mod0;
297 u8 RF_vco_cap_tail;
298 u8 RF_vco_cal1;
299 u8 RF_vco_cal2;
300 u8 RF_pll_lf_c1;
301 u8 RF_pll_lf_r1;
302 u8 RF_pll_lf_c2;
303 u8 RF_lgbuf_cen_buf;
304 u8 RF_lgen_tune1;
305 u8 RF_lgen_tune2;
306 u8 RF_core1_lgbuf_a_tune;
307 u8 RF_core1_lgbuf_g_tune;
308 u8 RF_core1_rxrf_reg1;
309 u8 RF_core1_tx_pga_pad_tn;
310 u8 RF_core1_tx_mx_bgtrim;
311 u8 RF_core2_lgbuf_a_tune;
312 u8 RF_core2_lgbuf_g_tune;
313 u8 RF_core2_rxrf_reg1;
314 u8 RF_core2_tx_pga_pad_tn;
315 u8 RF_core2_tx_mx_bgtrim;
316 u16 PHY_BW1a;
317 u16 PHY_BW2;
318 u16 PHY_BW3;
319 u16 PHY_BW4;
320 u16 PHY_BW5;
321 u16 PHY_BW6;
322};
323
324struct chan_info_nphy_radio205x {
325 u16 chan;
326 u16 freq;
327 u8 RF_SYN_pll_vcocal1;
328 u8 RF_SYN_pll_vcocal2;
329 u8 RF_SYN_pll_refdiv;
330 u8 RF_SYN_pll_mmd2;
331 u8 RF_SYN_pll_mmd1;
332 u8 RF_SYN_pll_loopfilter1;
333 u8 RF_SYN_pll_loopfilter2;
334 u8 RF_SYN_pll_loopfilter3;
335 u8 RF_SYN_pll_loopfilter4;
336 u8 RF_SYN_pll_loopfilter5;
337 u8 RF_SYN_reserved_addr27;
338 u8 RF_SYN_reserved_addr28;
339 u8 RF_SYN_reserved_addr29;
340 u8 RF_SYN_logen_VCOBUF1;
341 u8 RF_SYN_logen_MIXER2;
342 u8 RF_SYN_logen_BUF3;
343 u8 RF_SYN_logen_BUF4;
344 u8 RF_RX0_lnaa_tune;
345 u8 RF_RX0_lnag_tune;
346 u8 RF_TX0_intpaa_boost_tune;
347 u8 RF_TX0_intpag_boost_tune;
348 u8 RF_TX0_pada_boost_tune;
349 u8 RF_TX0_padg_boost_tune;
350 u8 RF_TX0_pgaa_boost_tune;
351 u8 RF_TX0_pgag_boost_tune;
352 u8 RF_TX0_mixa_boost_tune;
353 u8 RF_TX0_mixg_boost_tune;
354 u8 RF_RX1_lnaa_tune;
355 u8 RF_RX1_lnag_tune;
356 u8 RF_TX1_intpaa_boost_tune;
357 u8 RF_TX1_intpag_boost_tune;
358 u8 RF_TX1_pada_boost_tune;
359 u8 RF_TX1_padg_boost_tune;
360 u8 RF_TX1_pgaa_boost_tune;
361 u8 RF_TX1_pgag_boost_tune;
362 u8 RF_TX1_mixa_boost_tune;
363 u8 RF_TX1_mixg_boost_tune;
364 u16 PHY_BW1a;
365 u16 PHY_BW2;
366 u16 PHY_BW3;
367 u16 PHY_BW4;
368 u16 PHY_BW5;
369 u16 PHY_BW6;
370};
371
372struct chan_info_nphy_radio2057 {
373 u16 chan;
374 u16 freq;
375 u8 RF_vcocal_countval0;
376 u8 RF_vcocal_countval1;
377 u8 RF_rfpll_refmaster_sparextalsize;
378 u8 RF_rfpll_loopfilter_r1;
379 u8 RF_rfpll_loopfilter_c2;
380 u8 RF_rfpll_loopfilter_c1;
381 u8 RF_cp_kpd_idac;
382 u8 RF_rfpll_mmd0;
383 u8 RF_rfpll_mmd1;
384 u8 RF_vcobuf_tune;
385 u8 RF_logen_mx2g_tune;
386 u8 RF_logen_mx5g_tune;
387 u8 RF_logen_indbuf2g_tune;
388 u8 RF_logen_indbuf5g_tune;
389 u8 RF_txmix2g_tune_boost_pu_core0;
390 u8 RF_pad2g_tune_pus_core0;
391 u8 RF_pga_boost_tune_core0;
392 u8 RF_txmix5g_boost_tune_core0;
393 u8 RF_pad5g_tune_misc_pus_core0;
394 u8 RF_lna2g_tune_core0;
395 u8 RF_lna5g_tune_core0;
396 u8 RF_txmix2g_tune_boost_pu_core1;
397 u8 RF_pad2g_tune_pus_core1;
398 u8 RF_pga_boost_tune_core1;
399 u8 RF_txmix5g_boost_tune_core1;
400 u8 RF_pad5g_tune_misc_pus_core1;
401 u8 RF_lna2g_tune_core1;
402 u8 RF_lna5g_tune_core1;
403 u16 PHY_BW1a;
404 u16 PHY_BW2;
405 u16 PHY_BW3;
406 u16 PHY_BW4;
407 u16 PHY_BW5;
408 u16 PHY_BW6;
409};
410
411struct chan_info_nphy_radio2057_rev5 {
412 u16 chan;
413 u16 freq;
414 u8 RF_vcocal_countval0;
415 u8 RF_vcocal_countval1;
416 u8 RF_rfpll_refmaster_sparextalsize;
417 u8 RF_rfpll_loopfilter_r1;
418 u8 RF_rfpll_loopfilter_c2;
419 u8 RF_rfpll_loopfilter_c1;
420 u8 RF_cp_kpd_idac;
421 u8 RF_rfpll_mmd0;
422 u8 RF_rfpll_mmd1;
423 u8 RF_vcobuf_tune;
424 u8 RF_logen_mx2g_tune;
425 u8 RF_logen_indbuf2g_tune;
426 u8 RF_txmix2g_tune_boost_pu_core0;
427 u8 RF_pad2g_tune_pus_core0;
428 u8 RF_lna2g_tune_core0;
429 u8 RF_txmix2g_tune_boost_pu_core1;
430 u8 RF_pad2g_tune_pus_core1;
431 u8 RF_lna2g_tune_core1;
432 u16 PHY_BW1a;
433 u16 PHY_BW2;
434 u16 PHY_BW3;
435 u16 PHY_BW4;
436 u16 PHY_BW5;
437 u16 PHY_BW6;
438};
439
440struct nphy_sfo_cfg {
441 u16 PHY_BW1a;
442 u16 PHY_BW2;
443 u16 PHY_BW3;
444 u16 PHY_BW4;
445 u16 PHY_BW5;
446 u16 PHY_BW6;
447};
448
449static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
450 {
451 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
452 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
454 {
455 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
456 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
458 {
459 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
460 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
462 {
463 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
464 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
466 {
467 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
468 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
470 {
471 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
472 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
474 {
475 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
476 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
477 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
478 {
479 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
480 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
481 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
482 {
483 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
484 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
485 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
486 {
487 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
488 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
489 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
490 {
491 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
492 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
493 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
494 {
495 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
496 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
497 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
498 {
499 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
500 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
501 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
502 {
503 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
504 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
505 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
506 {
507 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
508 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
509 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
510 {
511 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
512 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
513 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
514 {
515 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
516 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
517 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
518 {
519 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
520 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
521 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
522 {
523 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
524 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
525 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
526 {
527 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
528 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
529 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
530 {
531 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
532 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
533 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
534 {
535 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
536 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
537 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
538 {
539 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
540 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
541 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
542 {
543 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
544 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
545 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
546 {
547 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
548 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
549 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
550 {
551 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
552 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
553 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
554 {
555 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
556 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
557 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
558 {
559 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
560 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
561 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
562 {
563 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
564 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
565 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
566 {
567 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
568 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
569 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
570 {
571 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
572 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
573 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
574 {
575 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
576 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
577 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
578 {
579 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
580 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
581 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
582 {
583 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
584 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
585 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
586 {
587 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
588 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
589 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
590 {
591 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
592 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
593 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
594 {
595 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
596 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
597 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
598 {
599 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
600 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
601 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
602 {
603 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
604 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
605 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
606 {
607 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
608 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
609 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
610 {
611 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
612 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
613 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
614 {
615 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
616 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
617 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
618 {
619 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
620 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
621 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
622 {
623 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
624 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
625 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
626 {
627 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
628 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
629 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
630 {
631 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
632 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
633 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
634 {
635 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
636 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
637 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
638 {
639 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
640 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
641 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
642 {
643 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
644 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
645 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
646 {
647 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
648 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
649 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
650 {
651 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
652 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
653 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
654 {
655 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
656 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
657 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
658 {
659 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
660 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
661 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
662 {
663 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
664 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
665 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
666 {
667 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
668 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
669 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
670 {
671 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
672 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
673 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
674 {
675 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
676 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
677 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
678 {
679 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
680 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
681 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
682 {
683 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
684 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
685 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
686 {
687 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
688 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
689 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
690 {
691 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
692 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
693 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
694 {
695 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
696 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
697 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
698 {
699 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
700 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
701 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
702 {
703 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
704 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
705 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
706 {
707 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
708 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
709 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
710 {
711 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
712 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
713 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
714 {
715 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
716 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
717 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
718 {
719 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
720 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
721 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
722 {
723 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
724 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
725 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
726 {
727 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
728 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
729 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
730 {
731 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
732 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
733 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
734 {
735 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
736 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
738 {
739 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
740 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
742 {
743 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
744 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
746 {
747 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
748 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
750 {
751 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
752 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
754 {
755 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
756 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
758 {
759 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
760 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
762 {
763 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
764 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
766 {
767 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
768 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
770 {
771 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
772 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
774 {
775 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
776 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
778 {
779 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
780 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
782 {
783 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
784 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
786 {
787 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
788 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
790 {
791 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
792 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
794 {
795 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
796 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
798 {
799 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
800 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
802 {
803 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
804 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
806 {
807 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
808 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
810 {
811 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
812 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
814 {
815 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
816 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
818 {
819 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
820 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
822 {
823 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
824 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
826 {
827 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
828 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
830 {
831 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
832 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
834 {
835 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
836 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
838 {
839 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
840 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
842 {
843 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
844 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
846 {
847 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
848 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
850 {
851 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
852 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
854 {
855 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
856 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
858 {
859 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
860 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
861 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
862 {
863 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
864 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
865 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
866 {
867 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
868 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
869 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
870 {
871 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
872 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
873 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
874 {
875 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
876 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
877 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
878 {
879 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
880 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
881 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
882 {
883 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
884 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
885 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
886 {
887 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
888 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
889 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
890 {
891 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
892 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
893 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
894 {
895 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
896 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
897 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
898 {
899 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
900 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
901 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
902 {
903 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
904 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
905 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
906 {
907 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
908 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
909 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
910 {
911 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
912 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
913 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
914 {
915 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
916 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
917 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
918 {
919 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
920 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
921 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
922 {
923 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
924 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
925 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
926 {
927 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
928 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
929 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
930 {
931 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
932 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
933 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
934 {
935 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
936 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
937 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
938 {
939 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
940 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
941 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
942 {
943 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
944 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
945 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
946};
947
948static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
949 {
950 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
951 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
952 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
953 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
954 {
955 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
956 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
957 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
958 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
959 {
960 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
961 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
962 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
963 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
964 {
965 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
966 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
967 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
968 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
969 {
970 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
971 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
972 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
973 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
974 {
975 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
976 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
977 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
978 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
979 {
980 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
981 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
982 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
983 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
984 {
985 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
986 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
987 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
988 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
989 {
990 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
991 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
992 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
993 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
994 {
995 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
996 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
997 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
998 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
999 {
1000 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1001 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1002 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1003 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1004 {
1005 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1006 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1007 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1008 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1009 {
1010 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1011 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1012 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1013 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1014 {
1015 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1016 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1017 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1018 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1019 {
1020 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1021 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1022 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1023 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1024 {
1025 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1026 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1027 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1028 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1029 {
1030 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1031 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1032 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1033 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1034 {
1035 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1036 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1037 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1038 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1039 {
1040 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1041 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1042 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1043 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1044 {
1045 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1046 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1047 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1048 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1049 {
1050 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1051 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1052 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1053 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1054 {
1055 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1056 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1057 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1058 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1059 {
1060 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1061 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1062 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1063 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1064 {
1065 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1066 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1067 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1068 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1069 {
1070 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1071 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1072 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1073 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1074 {
1075 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1076 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1077 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1078 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1079 {
1080 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1081 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1082 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1083 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1084 {
1085 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1086 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1087 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1088 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1089 {
1090 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1091 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1092 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1093 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1094 {
1095 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1096 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1097 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1098 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1099 {
1100 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1101 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1102 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1103 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1104 {
1105 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1106 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1107 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1108 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1109 {
1110 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1111 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1112 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1113 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1114 {
1115 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1116 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1117 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1118 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1119 {
1120 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1121 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1122 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1123 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1124 {
1125 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1126 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1127 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1128 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1129 {
1130 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1131 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1132 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1133 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1134 {
1135 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1136 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1137 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1138 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1139 {
1140 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1141 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1142 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1143 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1144 {
1145 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1146 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1147 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1148 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1149 {
1150 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1151 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1152 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1153 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1154 {
1155 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1156 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1157 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1158 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1159 {
1160 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1161 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1162 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1163 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1164 {
1165 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1166 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1167 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1168 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1169 {
1170 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1171 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1172 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1173 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1174 {
1175 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1176 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1177 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1178 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1179 {
1180 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1181 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1182 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1183 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1184 {
1185 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1186 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1187 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1188 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1189 {
1190 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1191 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1192 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1193 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1194 {
1195 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1196 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1197 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1198 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1199 {
1200 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1201 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1202 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1203 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1204 {
1205 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1206 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1207 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1208 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1209 {
1210 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1211 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1212 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1213 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1214 {
1215 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1216 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1217 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1218 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1219 {
1220 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1221 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1222 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1223 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1224 {
1225 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1226 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1227 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1228 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1229 {
1230 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1231 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1232 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1233 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1234 {
1235 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1236 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1237 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1238 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1239 {
1240 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1241 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1242 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1243 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1244 {
1245 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1246 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1247 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1248 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1249 {
1250 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1251 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1252 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1253 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1254 {
1255 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1256 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1257 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1258 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1259 {
1260 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1261 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1262 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1263 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1264 {
1265 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1266 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1267 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1268 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1269 {
1270 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1271 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1272 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1273 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1274 {
1275 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1276 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1277 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1278 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1279 {
1280 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1281 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1282 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1283 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1284 {
1285 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1286 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1287 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1288 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1289 {
1290 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1291 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1292 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1293 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1294 {
1295 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1296 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1297 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1298 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1299 {
1300 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1301 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1302 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1303 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1304 {
1305 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1306 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1307 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1308 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1309 {
1310 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1311 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1312 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1313 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1314 {
1315 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1316 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1317 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1318 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1319 {
1320 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1321 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1322 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1323 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1324 {
1325 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1326 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1327 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1328 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1329 {
1330 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1331 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1332 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1333 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1334 {
1335 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1336 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1337 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1338 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1339 {
1340 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1341 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1342 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1343 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1344 {
1345 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1346 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1347 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1348 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1349 {
1350 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1351 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1352 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1353 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1354 {
1355 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1356 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1357 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1358 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1359 {
1360 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1361 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1362 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1363 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1364 {
1365 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1366 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1367 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1368 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1369 {
1370 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1371 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1372 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1373 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1374 {
1375 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1376 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1377 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1378 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1379 {
1380 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1381 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1382 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1383 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1384 {
1385 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1386 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1387 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1388 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1389 {
1390 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1391 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1392 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1393 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1394 {
1395 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1396 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1397 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1398 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1399 {
1400 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1401 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1402 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1403 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1404 {
1405 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1406 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1407 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1408 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1409 {
1410 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1411 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1412 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1413 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1414 {
1415 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1416 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1417 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1418 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1419 {
1420 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1421 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1422 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1423 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1424 {
1425 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1426 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1427 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1428 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1429 {
1430 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1431 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1432 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1433 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1434 {
1435 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1436 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1437 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1438 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1439 {
1440 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1441 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1442 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1443 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1444 {
1445 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1446 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1447 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1448 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1449 {
1450 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1451 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1452 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1453 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1454 {
1455 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1456 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1457 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1458 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1459 {
1460 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1461 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1462 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1463 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1464 {
1465 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1466 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1467 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1468 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1469 {
1470 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1471 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1472 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1473 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1474 {
1475 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1476 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1477 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1478 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1479 {
1480 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1481 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1482 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1483 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1484 {
1485 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1486 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1487 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1488 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1489 {
1490 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1491 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1492 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1493 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1494 {
1495 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1496 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1497 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1498 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1499 {
1500 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1501 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1502 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1503 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1504 {
1505 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1506 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1507 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1508 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1509 {
1510 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1511 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1512 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1513 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1514 {
1515 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1516 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1517 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1518 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1519 {
1520 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1521 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1522 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1523 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1524 {
1525 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1526 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1527 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1528 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1529 {
1530 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1531 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1532 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1533 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1534 {
1535 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1536 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1537 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1538 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1539 {
1540 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1541 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1542 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1543 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1544 {
1545 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1546 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1547 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1548 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1549 {
1550 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1551 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1552 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1553 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1554 {
1555 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1556 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1557 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1558 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1559 {
1560 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1561 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1562 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1563 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1564 {
1565 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1566 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1567 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1568 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1569};
1570
1571static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1572 {
1573 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1574 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1575 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1576 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1577 {
1578 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1579 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1580 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1581 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1582 {
1583 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1584 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1585 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1586 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1587 {
1588 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1589 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1590 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1591 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1592 {
1593 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1594 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1595 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1596 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1597 {
1598 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1599 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1600 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1601 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1602 {
1603 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1604 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1605 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1606 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1607 {
1608 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1609 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1610 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1611 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1612 {
1613 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1614 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1615 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1616 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1617 {
1618 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1619 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1620 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1621 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1622 {
1623 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1624 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1625 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1626 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1627 {
1628 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1629 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1630 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1631 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1632 {
1633 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1634 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1635 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1636 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1637 {
1638 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1639 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1640 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1641 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1642 {
1643 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1644 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1645 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1646 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1647 {
1648 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1649 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1650 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1651 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1652 {
1653 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1654 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1655 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1656 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1657 {
1658 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1659 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1660 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1661 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1662 {
1663 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1664 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1665 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1666 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1667 {
1668 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1669 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1670 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1671 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1672 {
1673 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1674 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1675 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1676 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1677 {
1678 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1679 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1680 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1681 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1682 {
1683 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1684 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1685 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1686 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1687 {
1688 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1689 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1690 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1691 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1692 {
1693 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1694 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1695 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1696 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1697 {
1698 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1699 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1700 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1701 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1702 {
1703 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1704 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1705 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1706 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1707 {
1708 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1709 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1710 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1711 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1712 {
1713 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1714 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1715 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1716 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1717 {
1718 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1719 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1720 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1721 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1722 {
1723 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1724 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1725 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1726 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1727 {
1728 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1729 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1730 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1731 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1732 {
1733 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1734 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1735 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1736 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1737 {
1738 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1739 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1740 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1741 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1742 {
1743 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1744 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1745 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1746 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1747 {
1748 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1749 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1750 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1751 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1752 {
1753 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1754 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1755 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1756 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1757 {
1758 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1759 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1760 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1761 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1762 {
1763 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1764 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1765 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1766 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1767 {
1768 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1769 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1770 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1771 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1772 {
1773 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1774 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1775 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1776 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1777 {
1778 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1779 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1780 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1781 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1782 {
1783 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1784 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1785 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1786 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1787 {
1788 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1789 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1790 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1791 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1792 {
1793 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1794 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1795 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1796 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1797 {
1798 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1799 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1800 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1801 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1802 {
1803 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1804 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1805 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1806 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1807 {
1808 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1809 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1810 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1811 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1812 {
1813 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1814 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1815 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1816 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1817 {
1818 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1819 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1820 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1821 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1822 {
1823 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1824 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1825 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1826 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1827 {
1828 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1829 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1830 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1831 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1832 {
1833 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1834 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1835 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1836 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1837 {
1838 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1839 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1840 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1841 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1842 {
1843 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1844 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1845 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1846 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1847 {
1848 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1849 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1850 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1851 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1852 {
1853 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1854 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1855 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1856 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1857 {
1858 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1859 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1860 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1861 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1862 {
1863 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1864 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1865 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1866 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1867 {
1868 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1869 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1870 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1871 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1872 {
1873 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1874 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1875 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1876 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1877 {
1878 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1879 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1880 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1881 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1882 {
1883 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1884 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1885 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1886 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1887 {
1888 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1889 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1890 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1891 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1892 {
1893 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1894 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1895 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1896 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1897 {
1898 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1899 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1900 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1901 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1902 {
1903 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1904 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1905 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1906 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1907 {
1908 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1909 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1910 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1911 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1912 {
1913 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1914 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1915 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1916 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1917 {
1918 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1919 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1920 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1921 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1922 {
1923 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1924 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1925 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1926 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1927 {
1928 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1929 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1930 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1931 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1932 {
1933 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1934 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1935 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1936 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1937 {
1938 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1939 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1940 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1941 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1942 {
1943 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1944 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1945 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1946 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1947 {
1948 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1949 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1950 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1951 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1952 {
1953 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1954 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1955 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1956 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1957 {
1958 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1959 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1960 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1961 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1962 {
1963 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1964 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1965 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1966 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1967 {
1968 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1969 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1970 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1971 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1972 {
1973 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1974 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1975 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1976 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1977 {
1978 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1979 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1980 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1981 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1982 {
1983 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1984 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1985 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1986 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1987 {
1988 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1989 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1990 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1991 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1992 {
1993 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1994 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1995 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1996 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1997 {
1998 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1999 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
2000 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2001 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2002 {
2003 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2004 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2005 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2006 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2007 {
2008 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2009 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2010 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2011 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2012 {
2013 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2014 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2015 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2016 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2017 {
2018 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2019 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2020 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2021 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2022 {
2023 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2024 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2025 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2026 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2027 {
2028 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2029 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2030 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2031 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2032 {
2033 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2034 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2035 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2036 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2037 {
2038 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2039 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2040 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2041 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2042 {
2043 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2044 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2045 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2046 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2047 {
2048 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2049 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2050 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2051 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2052 {
2053 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2054 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2055 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2056 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2057 {
2058 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2059 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2060 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2061 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2062 {
2063 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2064 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2065 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2066 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2067 {
2068 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2069 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2070 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2071 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2072 {
2073 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2074 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2075 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2076 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2077 {
2078 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2079 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2080 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2081 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2082 {
2083 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2084 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2085 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2086 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2087 {
2088 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2089 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2090 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2091 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2092 {
2093 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2094 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2095 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2096 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2097 {
2098 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2099 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2100 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2101 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2102 {
2103 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2104 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2105 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2106 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2107 {
2108 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2109 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2110 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2111 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2112 {
2113 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2114 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2115 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2116 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2117 {
2118 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2119 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2120 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2121 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2122 {
2123 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2124 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2125 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2126 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2127 {
2128 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2129 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2130 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2131 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2132 {
2133 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2134 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2135 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2136 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2137 {
2138 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2139 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2140 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2141 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2142 {
2143 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2144 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2145 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2146 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2147 {
2148 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2149 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2150 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2151 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2152 {
2153 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2154 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2155 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2156 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2157 {
2158 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2159 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2160 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2161 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2162 {
2163 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2164 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2165 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2166 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2167 {
2168 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2169 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2170 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2171 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2172 {
2173 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2174 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2175 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2176 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2177 {
2178 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2179 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2180 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2181 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2182 {
2183 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2184 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2185 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2186 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2187 {
2188 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2189 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2190 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2191 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2192};
2193
2194static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2195 {
2196 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2197 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2198 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2199 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2200 {
2201 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2202 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2203 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2204 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2205 {
2206 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2207 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2208 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2209 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2210 {
2211 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2212 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2213 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2214 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2215 {
2216 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2217 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2218 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2219 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2220 {
2221 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2222 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2223 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2224 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2225 {
2226 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2227 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2228 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2229 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2230 {
2231 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2232 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2233 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2234 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2235 {
2236 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2237 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2238 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2239 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2240 {
2241 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2242 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2243 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2244 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2245 {
2246 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2247 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2248 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2249 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2250 {
2251 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2252 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2253 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2254 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2255 {
2256 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2257 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2258 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2259 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2260 {
2261 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2262 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2263 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2264 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2265 {
2266 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2267 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2268 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2269 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2270 {
2271 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2272 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2273 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2274 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2275 {
2276 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2277 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2278 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2279 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2280 {
2281 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2282 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2283 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2284 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2285 {
2286 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2287 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2288 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2289 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2290 {
2291 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2292 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2293 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2294 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2295 {
2296 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2297 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2298 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2299 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2300 {
2301 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2302 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2303 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2304 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2305 {
2306 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2307 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2308 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2309 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2310 {
2311 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2312 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2313 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2314 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2315 {
2316 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2317 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2318 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2319 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2320 {
2321 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2322 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2323 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2324 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2325 {
2326 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2327 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2328 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2329 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2330 {
2331 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2332 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2333 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2334 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2335 {
2336 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2337 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2338 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2339 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2340 {
2341 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2342 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2343 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2344 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2345 {
2346 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2347 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2348 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2349 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2350 {
2351 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2352 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2353 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2354 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2355 {
2356 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2357 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2358 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2359 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2360 {
2361 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2362 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2363 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2364 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2365 {
2366 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2367 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2368 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2369 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2370 {
2371 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2372 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2373 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2374 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2375 {
2376 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2377 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2378 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2379 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2380 {
2381 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2382 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2383 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2384 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2385 {
2386 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2387 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2388 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2389 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2390 {
2391 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2392 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2393 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2394 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2395 {
2396 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2397 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2398 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2399 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2400 {
2401 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2402 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2403 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2404 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2405 {
2406 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2407 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2408 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2409 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2410 {
2411 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2412 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2413 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2414 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2415 {
2416 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2417 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2418 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2419 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2420 {
2421 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2422 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2423 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2424 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2425 {
2426 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2427 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2428 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2429 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2430 {
2431 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2432 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2433 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2434 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2435 {
2436 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2437 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2438 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2439 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2440 {
2441 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2442 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2443 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2444 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2445 {
2446 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2447 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2448 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2449 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2450 {
2451 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2452 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2453 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2454 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2455 {
2456 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2457 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2458 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2459 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2460 {
2461 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2462 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2463 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2464 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2465 {
2466 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2467 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2468 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2469 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2470 {
2471 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2472 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2473 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2474 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2475 {
2476 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2477 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2478 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2479 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2480 {
2481 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2482 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2483 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2484 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2485 {
2486 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2487 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2488 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2489 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2490 {
2491 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2492 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2493 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2494 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2495 {
2496 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2497 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2498 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2499 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2500 {
2501 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2502 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2503 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2504 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2505 {
2506 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2507 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2508 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2509 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2510 {
2511 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2512 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2513 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2514 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2515 {
2516 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2517 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2518 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2519 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2520 {
2521 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2522 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2523 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2524 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2525 {
2526 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2527 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2528 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2529 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2530 {
2531 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2532 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2533 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2534 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2535 {
2536 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2537 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2538 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2539 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2540 {
2541 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2542 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2543 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2544 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2545 {
2546 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2547 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2548 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2549 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2550 {
2551 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2552 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2553 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2554 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2555 {
2556 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2557 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2558 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2559 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2560 {
2561 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2562 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2563 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2564 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2565 {
2566 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2567 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2568 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2569 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2570 {
2571 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2572 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2573 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2574 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2575 {
2576 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2577 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2578 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2579 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2580 {
2581 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2582 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2583 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2584 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2585 {
2586 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2587 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2588 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2589 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2590 {
2591 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2592 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2593 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2594 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2595 {
2596 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2597 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2598 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2599 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2600 {
2601 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2602 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2603 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2604 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2605 {
2606 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2607 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2608 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2609 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2610 {
2611 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2612 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2613 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2614 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2615 {
2616 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2617 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2618 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2619 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2620 {
2621 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2622 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2623 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2624 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2625 {
2626 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2627 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2628 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2629 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2630 {
2631 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2632 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2633 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2634 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2635 {
2636 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2637 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2638 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2639 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2640 {
2641 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2642 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2643 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2644 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2645 {
2646 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2647 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2648 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2649 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2650 {
2651 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2652 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2653 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2654 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2655 {
2656 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2657 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2658 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2659 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2660 {
2661 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2662 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2663 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2664 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2665 {
2666 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2667 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2668 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2669 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2670 {
2671 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2672 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2673 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2674 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2675 {
2676 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2677 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2678 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2679 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2680 {
2681 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2682 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2683 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2684 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2685 {
2686 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2687 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2688 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2689 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2690 {
2691 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2692 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2693 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2694 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2695 {
2696 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2697 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2698 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2699 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2700 {
2701 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2702 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2703 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2704 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2705 {
2706 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2707 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2708 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2709 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2710 {
2711 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2712 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2713 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2714 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2715 {
2716 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2717 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2718 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2719 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2720 {
2721 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2722 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2723 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2724 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2725 {
2726 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2727 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2728 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2729 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2730 {
2731 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2732 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2733 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2734 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2735 {
2736 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2737 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2738 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2739 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2740 {
2741 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2742 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2743 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2744 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2745 {
2746 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2747 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2748 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2749 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2750 {
2751 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2752 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2753 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2754 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2755 {
2756 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2757 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2758 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2759 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2760 {
2761 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2762 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2763 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2764 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2765 {
2766 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2767 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2768 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2769 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2770 {
2771 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2772 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2773 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2774 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2775 {
2776 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2777 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2778 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2779 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2780 {
2781 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2782 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2783 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2784 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2785 {
2786 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2787 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2788 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2789 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2790 {
2791 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2792 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2793 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2794 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2795 {
2796 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2797 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2798 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2799 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2800 {
2801 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2802 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2803 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2804 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2805 {
2806 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2807 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2808 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2809 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2810 {
2811 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2812 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2813 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2814 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2815};
2816
2817static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2818 {
2819 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2820 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2821 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2822 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2823 {
2824 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2825 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2826 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2827 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2828 {
2829 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2830 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2831 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2832 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2833 {
2834 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2835 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2836 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2837 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2838 {
2839 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2840 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2841 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2842 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2843 {
2844 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2845 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2846 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2847 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2848 {
2849 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2850 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2851 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2852 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2853 {
2854 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2855 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2856 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2857 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2858 {
2859 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2860 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2861 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2862 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2863 {
2864 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2865 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2866 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2867 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2868 {
2869 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2870 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2871 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2872 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2873 {
2874 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2875 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2876 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2877 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2878 {
2879 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2880 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2881 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2882 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2883 {
2884 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2885 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2886 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2887 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2888 {
2889 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2890 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2891 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2892 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2893 {
2894 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2895 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2896 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2897 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2898 {
2899 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2900 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2901 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2902 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2903 {
2904 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2905 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2906 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2907 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2908 {
2909 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2910 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2911 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2912 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2913 {
2914 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2915 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2916 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2917 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2918 {
2919 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2920 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2921 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2922 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2923 {
2924 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2925 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2926 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2927 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2928 {
2929 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2930 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2931 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2932 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2933 {
2934 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2935 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2936 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2937 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2938 {
2939 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2940 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2941 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2942 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2943 {
2944 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2945 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2946 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2947 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2948 {
2949 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2950 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2951 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2952 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2953 {
2954 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2955 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2956 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2957 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2958 {
2959 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2960 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2961 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2962 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2963 {
2964 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2965 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2966 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2967 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2968 {
2969 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2970 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2971 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2972 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2973 {
2974 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2975 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2976 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2977 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2978 {
2979 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2980 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2981 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2982 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2983 {
2984 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2985 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2986 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2987 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2988 {
2989 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2990 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2991 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2992 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2993 {
2994 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2995 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2996 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2997 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2998 {
2999 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3000 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3001 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3002 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3003 {
3004 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3005 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3006 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3007 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3008 {
3009 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3010 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3011 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3012 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3013 {
3014 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3015 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3016 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3017 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3018 {
3019 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3020 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3021 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3022 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3023 {
3024 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3025 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3026 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3027 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3028 {
3029 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3030 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3031 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3032 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3033 {
3034 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3035 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3036 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3037 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3038 {
3039 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3040 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3041 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3042 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3043 {
3044 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3045 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3046 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3047 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3048 {
3049 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3050 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3051 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3052 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3053 {
3054 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3055 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3056 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3057 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3058 {
3059 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3060 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3061 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3062 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3063 {
3064 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3065 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3066 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3067 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3068 {
3069 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3070 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3071 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3072 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3073 {
3074 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3075 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3076 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3077 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3078 {
3079 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3080 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3081 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3082 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3083 {
3084 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3085 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3086 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3087 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3088 {
3089 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3090 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3091 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3092 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3093 {
3094 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3095 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3096 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3097 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3098 {
3099 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3100 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3101 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3102 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3103 {
3104 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3105 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3106 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3107 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3108 {
3109 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3110 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3111 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3112 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3113 {
3114 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3115 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3116 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3117 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3118 {
3119 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3120 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3121 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3122 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3123 {
3124 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3125 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3126 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3127 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3128 {
3129 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3130 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3131 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3132 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3133 {
3134 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3135 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3136 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3137 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3138 {
3139 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3140 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3141 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3142 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3143 {
3144 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3145 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3146 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3147 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3148 {
3149 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3150 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3151 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3152 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3153 {
3154 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3155 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3156 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3157 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3158 {
3159 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3160 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3161 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3162 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3163 {
3164 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3165 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3166 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3167 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3168 {
3169 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3170 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3171 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3172 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3173 {
3174 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3175 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3176 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3177 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3178 {
3179 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3180 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3181 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3182 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3183 {
3184 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3185 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3186 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3187 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3188 {
3189 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3190 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3191 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3192 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3193 {
3194 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3195 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3196 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3197 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3198 {
3199 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3200 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3201 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3202 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3203 {
3204 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3205 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3206 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3207 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3208 {
3209 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3210 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3211 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3212 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3213 {
3214 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3215 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3216 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3217 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3218 {
3219 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3220 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3221 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3222 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3223 {
3224 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3225 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3226 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3227 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3228 {
3229 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3230 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3231 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3232 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3233 {
3234 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3235 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3236 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3237 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3238 {
3239 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3240 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3241 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3242 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3243 {
3244 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3245 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3246 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3247 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3248 {
3249 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3250 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3251 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3252 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3253 {
3254 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3255 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3256 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3257 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3258 {
3259 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3260 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3261 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3262 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3263 {
3264 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3265 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3266 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3267 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3268 {
3269 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3270 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3271 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3272 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3273 {
3274 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3275 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3276 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3277 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3278 {
3279 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3280 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3281 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3282 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3283 {
3284 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3285 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3286 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3287 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3288 {
3289 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3290 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3291 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3292 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3293 {
3294 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3295 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3296 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3297 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3298 {
3299 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3300 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3301 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3302 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3303 {
3304 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3305 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3306 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3307 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3308 {
3309 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3310 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3311 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3312 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3313 {
3314 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3315 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3316 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3317 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3318 {
3319 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3320 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3321 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3322 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3323 {
3324 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3325 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3326 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3327 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3328 {
3329 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3330 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3331 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3332 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3333 {
3334 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3335 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3336 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3337 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3338 {
3339 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3340 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3341 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3342 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3343 {
3344 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3345 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3346 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3347 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3348 {
3349 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3350 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3351 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3352 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3353 {
3354 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3355 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3356 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3357 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3358 {
3359 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3360 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3361 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3362 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3363 {
3364 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3365 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3366 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3367 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3368 {
3369 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3370 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3371 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3372 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3373 {
3374 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3375 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3376 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3377 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3378 {
3379 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3380 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3381 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3382 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3383 {
3384 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3385 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3386 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3387 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3388 {
3389 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3390 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3391 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3392 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3393 {
3394 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3395 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3396 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3397 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3398 {
3399 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3400 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3401 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3402 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3403 {
3404 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3405 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3406 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3407 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3408 {
3409 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3410 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3411 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3412 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3413 {
3414 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3415 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3416 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3417 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3418 {
3419 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3420 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3421 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3422 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3423 {
3424 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3425 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3426 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3427 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3428 {
3429 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3430 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3431 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3432 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3433 {
3434 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3435 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3436 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3437 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3438};
3439
3440static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3441 {
3442 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3443 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3444 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3445 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3446 {
3447 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3448 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3449 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3450 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3451 {
3452 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3453 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3454 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3455 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3456 {
3457 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3458 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3459 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3460 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3461 {
3462 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3463 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3464 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3465 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3466 {
3467 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3468 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3469 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3470 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3471 {
3472 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3473 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3474 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3475 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3476 {
3477 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3478 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3479 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3480 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3481 {
3482 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3483 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3484 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3485 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3486 {
3487 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3488 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3489 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3490 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3491 {
3492 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3493 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3494 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3495 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3496 {
3497 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3498 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3499 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3500 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3501 {
3502 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3503 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3504 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3505 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3506 {
3507 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3508 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3509 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3510 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3511 {
3512 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3513 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3514 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3515 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3516 {
3517 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3518 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3519 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3520 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3521 {
3522 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3523 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3524 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3525 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3526 {
3527 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3528 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3529 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3530 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3531 {
3532 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3533 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3534 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3535 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3536 {
3537 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3538 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3539 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3540 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3541 {
3542 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3543 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3544 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3545 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3546 {
3547 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3548 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3549 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3550 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3551 {
3552 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3553 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3554 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3555 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3556 {
3557 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3558 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3559 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3560 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3561 {
3562 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3563 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3564 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3565 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3566 {
3567 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3568 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3569 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3570 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3571 {
3572 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3573 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3574 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3575 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3576 {
3577 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3578 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3579 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3580 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3581 {
3582 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3583 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3584 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3585 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3586 {
3587 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3588 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3589 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3590 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3591 {
3592 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3593 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3594 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3595 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3596 {
3597 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3598 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3599 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3600 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3601 {
3602 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3603 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3604 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3605 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3606 {
3607 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3608 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3609 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3610 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3611 {
3612 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3613 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3614 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3615 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3616 {
3617 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3618 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3619 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3620 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3621 {
3622 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3623 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3624 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3625 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3626 {
3627 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3628 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3629 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3630 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3631 {
3632 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3633 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3634 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3635 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3636 {
3637 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3638 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3639 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3640 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3641 {
3642 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3643 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3644 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3645 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3646 {
3647 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3648 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3649 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3650 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3651 {
3652 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3653 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3654 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3655 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3656 {
3657 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3658 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3659 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3660 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3661 {
3662 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3663 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3664 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3665 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3666 {
3667 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3668 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3669 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3670 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3671 {
3672 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3673 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3674 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3675 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3676 {
3677 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3678 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3679 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3680 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3681 {
3682 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3683 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3684 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3685 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3686 {
3687 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3688 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3689 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3690 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3691 {
3692 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3693 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3694 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3695 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3696 {
3697 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3698 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3699 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3700 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3701 {
3702 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3703 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3704 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3705 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3706 {
3707 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3708 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3709 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3710 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3711 {
3712 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3713 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3714 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3715 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3716 {
3717 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3718 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3719 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3720 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3721 {
3722 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3723 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3724 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3725 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3726 {
3727 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3728 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3729 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3730 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3731 {
3732 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3733 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3734 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3735 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3736 {
3737 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3738 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3739 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3740 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3741 {
3742 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3743 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3744 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3745 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3746 {
3747 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3748 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3749 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3750 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3751 {
3752 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3753 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3754 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3755 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3756 {
3757 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3758 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3759 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3760 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3761 {
3762 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3763 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3764 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3765 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3766 {
3767 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3768 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3769 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3770 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3771 {
3772 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3773 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3774 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3775 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3776 {
3777 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3778 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3779 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3780 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3781 {
3782 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3783 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3784 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3785 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3786 {
3787 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3788 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3789 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3790 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3791 {
3792 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3793 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3794 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3795 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3796 {
3797 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3798 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3799 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3800 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3801 {
3802 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3803 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3804 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3805 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3806 {
3807 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3808 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3809 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3810 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3811 {
3812 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3813 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3814 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3815 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3816 {
3817 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3818 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3819 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3820 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3821 {
3822 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3823 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3824 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3825 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3826 {
3827 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3828 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3829 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3830 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3831 {
3832 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3833 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3834 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3835 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3836 {
3837 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3838 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3839 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3840 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3841 {
3842 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3843 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3844 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3845 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3846 {
3847 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3848 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3849 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3850 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3851 {
3852 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3853 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3854 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3855 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3856 {
3857 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3858 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3859 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3860 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3861 {
3862 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3863 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3864 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3865 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3866 {
3867 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3868 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3869 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3870 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3871 {
3872 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3873 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3874 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3875 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3876 {
3877 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3878 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3879 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3880 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3881 {
3882 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3883 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3884 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3885 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3886 {
3887 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3888 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3889 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3890 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3891 {
3892 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3893 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3894 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3895 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3896 {
3897 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3898 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3899 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3900 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3901 {
3902 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3903 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3904 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3905 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3906 {
3907 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3908 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3909 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3910 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3911 {
3912 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3913 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3914 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3915 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3916 {
3917 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3918 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3919 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3920 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3921 {
3922 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3923 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3924 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3925 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3926 {
3927 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3928 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3929 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3930 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3931 {
3932 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3933 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3934 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3935 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3936 {
3937 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3938 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3939 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3940 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3941 {
3942 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3943 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3944 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3945 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3946 {
3947 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3948 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3949 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3950 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3951 {
3952 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3953 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3954 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3955 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3956 {
3957 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3958 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3959 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3960 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3961 {
3962 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3963 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3964 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3965 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3966 {
3967 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3968 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3969 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3970 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3971 {
3972 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3973 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3974 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3975 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3976 {
3977 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3978 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3979 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3980 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3981 {
3982 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3983 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3984 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3985 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3986 {
3987 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3988 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3989 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3990 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3991 {
3992 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3993 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3994 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3995 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3996 {
3997 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3998 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3999 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4000 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4001 {
4002 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4003 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4004 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4005 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4006 {
4007 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4008 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4009 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4010 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4011 {
4012 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4013 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4014 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4015 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4016 {
4017 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4018 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4019 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4020 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4021 {
4022 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4023 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4024 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4025 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4026 {
4027 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4028 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4029 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4030 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4031 {
4032 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4033 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4034 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4035 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4036 {
4037 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4038 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4039 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4040 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4041 {
4042 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4043 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4044 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4045 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4046 {
4047 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4048 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4049 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4050 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4051 {
4052 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4053 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4054 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4055 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4056 {
4057 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4058 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4059 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4060 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4061};
4062
4063static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4064 {
4065 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4066 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4067 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4068 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4069 {
4070 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4071 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4072 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4073 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4074 {
4075 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4076 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4077 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4078 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4079 {
4080 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4081 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4082 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4083 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4084 {
4085 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4086 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4087 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4088 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4089 {
4090 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4091 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4092 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4093 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4094 {
4095 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4096 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4097 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4098 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4099 {
4100 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4101 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4102 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4103 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4104 {
4105 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4106 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4107 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4108 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4109 {
4110 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4111 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4112 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4113 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4114 {
4115 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4116 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4117 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4118 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4119 {
4120 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4121 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4122 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4123 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4124 {
4125 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4126 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4127 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4128 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4129 {
4130 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4131 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4132 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4133 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4134 {
4135 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4136 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4137 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4138 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4139 {
4140 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4141 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4142 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4143 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4144 {
4145 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4146 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4147 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4148 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4149 {
4150 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4151 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4152 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4153 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4154 {
4155 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4156 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4157 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4158 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4159 {
4160 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4161 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4162 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4163 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4164 {
4165 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4166 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4167 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4168 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4169 {
4170 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4171 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4172 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4173 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4174 {
4175 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4176 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4177 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4178 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4179 {
4180 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4181 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4182 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4183 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4184 {
4185 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4186 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4187 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4188 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4189 {
4190 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4191 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4192 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4193 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4194 {
4195 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4196 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4197 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4198 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4199 {
4200 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4201 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4202 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4203 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4204 {
4205 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4206 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4207 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4208 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4209 {
4210 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4211 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4212 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4213 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4214 {
4215 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4216 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4217 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4218 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4219 {
4220 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4221 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4222 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4223 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4224 {
4225 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4226 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4227 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4228 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4229 {
4230 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4231 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4232 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4233 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4234 {
4235 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4236 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4237 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4238 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4239 {
4240 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4241 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4242 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4243 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4244 {
4245 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4246 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4247 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4248 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4249 {
4250 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4251 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4252 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4253 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4254 {
4255 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4256 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4257 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4258 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4259 {
4260 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4261 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4262 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4263 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4264 {
4265 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4266 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4267 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4268 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4269 {
4270 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4271 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4272 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4273 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4274 {
4275 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4276 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4277 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4278 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4279 {
4280 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4281 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4282 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4283 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4284 {
4285 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4286 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4287 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4288 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4289 {
4290 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4291 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4292 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4293 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4294 {
4295 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4296 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4297 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4298 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4299 {
4300 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4301 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4302 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4303 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4304 {
4305 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4306 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4307 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4308 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4309 {
4310 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4311 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4312 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4313 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4314 {
4315 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4316 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4317 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4318 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4319 {
4320 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4321 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4322 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4323 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4324 {
4325 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4326 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4327 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4328 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4329 {
4330 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4331 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4332 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4333 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4334 {
4335 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4336 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4337 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4338 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4339 {
4340 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4341 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4342 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4343 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4344 {
4345 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4346 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4347 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4348 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4349 {
4350 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4351 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4352 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4353 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4354 {
4355 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4356 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4357 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4358 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4359 {
4360 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4361 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4362 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4363 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4364 {
4365 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4366 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4367 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4368 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4369 {
4370 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4371 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4372 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4373 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4374 {
4375 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4376 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4377 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4378 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4379 {
4380 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4381 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4382 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4383 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4384 {
4385 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4386 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4387 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4388 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4389 {
4390 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4391 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4392 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4393 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4394 {
4395 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4396 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4397 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4398 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4399 {
4400 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4401 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4402 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4403 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4404 {
4405 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4406 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4407 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4408 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4409 {
4410 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4411 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4412 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4413 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4414 {
4415 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4416 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4417 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4418 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4419 {
4420 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4421 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4422 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4423 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4424 {
4425 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4426 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4427 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4428 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4429 {
4430 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4431 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4432 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4433 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4434 {
4435 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4436 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4437 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4438 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4439 {
4440 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4441 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4442 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4443 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4444 {
4445 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4446 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4447 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4448 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4449 {
4450 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4451 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4452 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4453 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4454 {
4455 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4456 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4457 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4458 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4459 {
4460 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4461 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4462 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4463 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4464 {
4465 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4466 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4467 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4468 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4469 {
4470 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4471 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4472 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4473 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4474 {
4475 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4476 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4477 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4478 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4479 {
4480 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4481 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4482 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4483 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4484 {
4485 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4486 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4487 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4488 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4489 {
4490 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4491 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4492 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4493 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4494 {
4495 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4496 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4497 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4498 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4499 {
4500 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4501 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4502 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4503 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4504 {
4505 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4506 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4507 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4508 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4509 {
4510 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4511 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4512 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4513 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4514 {
4515 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4516 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4517 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4518 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4519 {
4520 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4521 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4522 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4523 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4524 {
4525 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4526 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4527 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4528 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4529 {
4530 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4531 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4532 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4533 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4534 {
4535 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4536 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4537 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4538 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4539 {
4540 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4541 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4542 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4543 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4544 {
4545 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4546 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4547 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4548 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4549 {
4550 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4551 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4552 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4553 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4554 {
4555 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4556 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4557 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4558 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4559 {
4560 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4561 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4562 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4563 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4564 {
4565 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4566 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4567 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4568 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4569 {
4570 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4571 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4572 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4573 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4574 {
4575 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4576 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4577 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4578 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4579 {
4580 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4581 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4582 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4583 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4584 {
4585 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4586 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4587 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4588 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4589 {
4590 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4591 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4592 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4593 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4594 {
4595 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4596 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4597 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4598 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4599 {
4600 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4601 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4602 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4603 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4604 {
4605 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4606 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4607 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4608 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4609 {
4610 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4611 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4612 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4613 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4614 {
4615 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4616 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4617 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4618 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4619 {
4620 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4621 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4622 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4623 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4624 {
4625 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4626 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4627 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4628 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4629 {
4630 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4631 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4632 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4633 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4634 {
4635 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4636 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4637 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4638 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4639 {
4640 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4641 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4642 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4643 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4644 {
4645 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4646 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4647 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4648 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4649 {
4650 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4651 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4652 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4653 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4654 {
4655 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4656 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4657 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4658 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4659 {
4660 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4661 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4662 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4663 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4664 {
4665 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4666 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4667 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4668 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4669 {
4670 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4671 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4672 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4673 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4674 {
4675 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4676 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4677 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4678 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4679 {
4680 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4681 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4682 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4683 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4684};
4685
4686static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4687 {
4688 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4689 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4690 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4691 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4692 {
4693 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4694 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4695 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4696 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4697 {
4698 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4699 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4700 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4701 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4702 {
4703 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4704 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4705 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4706 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4707 {
4708 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4709 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4710 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4711 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4712 {
4713 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4714 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4715 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4716 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4717 {
4718 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4719 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4720 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4721 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4722 {
4723 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4724 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4725 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4726 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4727 {
4728 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4729 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4730 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4731 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4732 {
4733 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4734 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4735 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4736 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4737 {
4738 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4739 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4740 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4741 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4742 {
4743 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4744 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4745 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4746 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4747 {
4748 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4749 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4750 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4751 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4752 {
4753 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4754 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4755 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4756 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4757 {
4758 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4759 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4760 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4761 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4762 {
4763 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4764 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4765 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4766 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4767 {
4768 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4769 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4770 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4771 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4772 {
4773 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4774 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4775 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4776 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4777 {
4778 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4779 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4780 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4781 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4782 {
4783 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4784 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4785 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4786 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4787 {
4788 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4789 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4790 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4791 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4792 {
4793 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4794 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4795 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4796 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4797 {
4798 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4799 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4800 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4801 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4802 {
4803 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4804 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4805 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4806 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4807 {
4808 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4809 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4810 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4811 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4812 {
4813 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4814 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4815 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4816 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4817 {
4818 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4819 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4820 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4821 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4822 {
4823 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4824 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4825 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4826 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4827 {
4828 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4829 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4830 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4831 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4832 {
4833 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4834 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4835 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4836 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4837 {
4838 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4839 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4840 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4841 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4842 {
4843 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4844 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4845 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4846 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4847 {
4848 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4849 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4850 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4851 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4852 {
4853 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4854 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4855 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4856 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4857 {
4858 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4859 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4860 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4861 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4862 {
4863 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4864 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4865 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4866 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4867 {
4868 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4869 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4870 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4871 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4872 {
4873 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4874 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4875 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4876 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4877 {
4878 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4879 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4880 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4881 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4882 {
4883 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4884 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4885 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4886 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4887 {
4888 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4889 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4890 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4891 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4892 {
4893 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4894 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4895 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4896 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4897 {
4898 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4899 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4900 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4901 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4902 {
4903 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4904 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4905 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4906 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4907 {
4908 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4909 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4910 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4911 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4912 {
4913 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4914 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4915 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4916 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4917 {
4918 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4919 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4920 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4921 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4922 {
4923 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4924 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4925 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4926 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4927 {
4928 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4929 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4930 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4931 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4932 {
4933 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4934 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4935 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4936 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4937 {
4938 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4939 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4940 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4941 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4942 {
4943 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4944 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4945 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4946 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4947 {
4948 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4949 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4950 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4951 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4952 {
4953 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4954 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4955 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4956 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4957 {
4958 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4959 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4960 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4961 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4962 {
4963 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4964 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4965 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4966 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4967 {
4968 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4969 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4970 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4971 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4972 {
4973 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4974 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4975 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4976 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4977 {
4978 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4979 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4980 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4981 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4982 {
4983 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4984 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4985 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4986 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4987 {
4988 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4989 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4990 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4991 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4992 {
4993 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4994 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4995 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4996 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4997 {
4998 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4999 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5000 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5001 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5002 {
5003 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5004 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5005 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5006 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5007 {
5008 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5009 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5010 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5011 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5012 {
5013 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5014 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5015 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5016 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5017 {
5018 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5019 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5020 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5021 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5022 {
5023 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5024 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5025 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5026 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5027 {
5028 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5029 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5030 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5031 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5032 {
5033 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5034 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5035 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5036 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5037 {
5038 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5039 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5040 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5041 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5042 {
5043 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5044 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5045 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5046 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5047 {
5048 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5049 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5050 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5051 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5052 {
5053 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5054 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5055 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5056 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5057 {
5058 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5059 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5060 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5061 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5062 {
5063 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5064 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5065 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5066 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5067 {
5068 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5069 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5070 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5071 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5072 {
5073 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5074 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5075 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5076 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5077 {
5078 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5079 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5080 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5081 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5082 {
5083 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5084 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5085 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5086 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5087 {
5088 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5089 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5090 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5091 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5092 {
5093 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5094 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5095 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5096 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5097 {
5098 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5099 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5100 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5101 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5102 {
5103 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5104 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5105 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5106 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5107 {
5108 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5109 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5110 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5111 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5112 {
5113 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5114 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5115 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5116 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5117 {
5118 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5119 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5120 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5121 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5122 {
5123 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5124 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5125 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5126 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5127 {
5128 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5129 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5130 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5131 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5132 {
5133 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5134 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5135 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5136 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5137 {
5138 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5139 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5140 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5141 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5142 {
5143 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5144 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5145 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5146 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5147 {
5148 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5149 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5150 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5151 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5152 {
5153 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5154 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5155 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5156 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5157 {
5158 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5159 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5160 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5161 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5162 {
5163 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5164 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5165 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5166 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5167 {
5168 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5169 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5170 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5171 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5172 {
5173 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5174 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5175 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5176 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5177 {
5178 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5179 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5180 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5181 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5182 {
5183 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5184 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5185 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5186 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5187 {
5188 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5189 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5190 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5191 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5192 {
5193 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5194 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5195 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5196 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5197 {
5198 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5199 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5200 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5201 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5202 {
5203 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5204 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5205 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5206 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5207 {
5208 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5209 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5210 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5211 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5212 {
5213 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5214 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5215 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5216 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5217 {
5218 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5219 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5220 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5221 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5222 {
5223 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5224 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5225 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5226 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5227 {
5228 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5229 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5230 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5231 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5232 {
5233 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5234 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5235 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5236 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5237 {
5238 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5239 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5240 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5241 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5242 {
5243 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5244 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5245 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5246 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5247 {
5248 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5249 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5250 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5251 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5252 {
5253 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5254 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5255 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5256 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5257 {
5258 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5259 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5260 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5261 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5262 {
5263 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5264 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5265 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5266 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5267 {
5268 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5269 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5270 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5271 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5272 {
5273 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5274 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5275 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5276 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5277 {
5278 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5279 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5280 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5281 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5282 {
5283 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5284 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5285 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5286 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5287 {
5288 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5289 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5290 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5291 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5292 {
5293 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5294 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5295 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5296 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5297 {
5298 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5299 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5300 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5301 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5302 {
5303 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5304 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5305 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5306 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5307};
5308
5309static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5310 {
5311 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5312 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5313 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5314 0x0215,
5315 0x0216,
5316 },
5317 {
5318 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5319 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5320 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5321 0x0214,
5322 0x0215,
5323 },
5324 {
5325 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5326 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5327 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5328 0x0213,
5329 0x0214,
5330 },
5331 {
5332 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5333 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5334 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5335 0x0212,
5336 0x0213,
5337 },
5338 {
5339 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5340 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5341 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5342 0x0211,
5343 0x0212,
5344 },
5345 {
5346 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5347 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5348 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5349 0x020f,
5350 0x0211,
5351 },
5352 {
5353 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5354 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5355 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5356 0x020e,
5357 0x020f,
5358 },
5359 {
5360 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5361 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5362 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5363 0x020d,
5364 0x020e,
5365 },
5366 {
5367 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5368 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5369 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5370 0x020c,
5371 0x020d,
5372 },
5373 {
5374 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5375 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5376 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5377 0x020b,
5378 0x020c,
5379 },
5380 {
5381 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5382 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5383 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5384 0x020a,
5385 0x020b,
5386 },
5387 {
5388 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5389 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5390 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5391 0x0209,
5392 0x020a,
5393 },
5394 {
5395 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5396 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5397 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5398 0x0208,
5399 0x0209,
5400 },
5401 {
5402 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5403 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5404 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5405 0x0207,
5406 0x0208,
5407 },
5408 {
5409 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5410 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5411 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5412 0x0206,
5413 0x0207,
5414 },
5415 {
5416 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5417 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5418 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5419 0x0205,
5420 0x0206,
5421 },
5422 {
5423 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5424 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5425 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5426 0x0204,
5427 0x0205,
5428 },
5429 {
5430 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5431 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5432 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5433 0x0203,
5434 0x0204,
5435 },
5436 {
5437 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5438 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5439 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5440 0x0202,
5441 0x0203,
5442 },
5443 {
5444 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5445 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5446 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5447 0x0201,
5448 0x0202,
5449 },
5450 {
5451 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5452 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5453 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5454 0x0200,
5455 0x0201,
5456 },
5457 {
5458 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5459 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5460 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5461 0x01ff,
5462 0x0200,
5463 },
5464 {
5465 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5466 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5467 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5468 0x01fe,
5469 0x01ff,
5470 },
5471 {
5472 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5473 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5474 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5475 0x01fc,
5476 0x01fd,
5477 },
5478 {
5479 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5480 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5481 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5482 0x01fb,
5483 0x01fc,
5484 },
5485 {
5486 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5487 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5488 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5489 0x01fa,
5490 0x01fb,
5491 },
5492 {
5493 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5494 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5495 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5496 0x01f9,
5497 0x01fa,
5498 },
5499 {
5500 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5501 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5502 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5503 0x01f8,
5504 0x01f9,
5505 },
5506 {
5507 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5508 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5509 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5510 0x01f7,
5511 0x01f8,
5512 },
5513 {
5514 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5515 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5516 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5517 0x01f6,
5518 0x01f7,
5519 },
5520 {
5521 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5522 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5523 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5524 0x01f5,
5525 0x01f6,
5526 },
5527 {
5528 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5529 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5530 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5531 0x01f4,
5532 0x01f5,
5533 },
5534 {
5535 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5536 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5537 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5538 0x01f3,
5539 0x01f4,
5540 },
5541 {
5542 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5543 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5544 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5545 0x01f2,
5546 0x01f3,
5547 },
5548 {
5549 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5550 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5551 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5552 0x01f1,
5553 0x01f2,
5554 },
5555 {
5556 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5557 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5558 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5559 0x01f0,
5560 0x01f1,
5561 },
5562 {
5563 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5564 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5565 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5566 0x01f0,
5567 0x01f0,
5568 },
5569 {
5570 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5571 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5572 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5573 0x01ef,
5574 0x01f0,
5575 },
5576 {
5577 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5578 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5579 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5580 0x01ee,
5581 0x01ef,
5582 },
5583 {
5584 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5585 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5586 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5587 0x01ed,
5588 0x01ee,
5589 },
5590 {
5591 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5592 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5593 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5594 0x01ec,
5595 0x01ed,
5596 },
5597 {
5598 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5599 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5600 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5601 0x01eb,
5602 0x01ec,
5603 },
5604 {
5605 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5606 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5607 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5608 0x01ea,
5609 0x01eb,
5610 },
5611 {
5612 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5613 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5614 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5615 0x01e9,
5616 0x01ea,
5617 },
5618 {
5619 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5620 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5621 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5622 0x01e8,
5623 0x01e9,
5624 },
5625 {
5626 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5627 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5628 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5629 0x01e7,
5630 0x01e8,
5631 },
5632 {
5633 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5634 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5635 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5636 0x01e6,
5637 0x01e7,
5638 },
5639 {
5640 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5641 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5642 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5643 0x01e5,
5644 0x01e6,
5645 },
5646 {
5647 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5648 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5649 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5650 0x01e5,
5651 0x01e5,
5652 },
5653 {
5654 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5655 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5656 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5657 0x01e4,
5658 0x01e5,
5659 },
5660 {
5661 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5662 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5663 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5664 0x01e3,
5665 0x01e4,
5666 },
5667 {
5668 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5669 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5670 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5671 0x01e2,
5672 0x01e3,
5673 },
5674 {
5675 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5676 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5677 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5678 0x01e1,
5679 0x01e2,
5680 },
5681 {
5682 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5683 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5684 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5685 0x01e0,
5686 0x01e1,
5687 },
5688 {
5689 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5690 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5691 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5692 0x01df,
5693 0x01e0,
5694 },
5695 {
5696 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5697 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5698 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5699 0x01de,
5700 0x01df,
5701 },
5702 {
5703 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5704 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5705 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5706 0x01dd,
5707 0x01de,
5708 },
5709 {
5710 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5711 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5712 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5713 0x01dd,
5714 0x01dd,
5715 },
5716 {
5717 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5718 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5719 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5720 0x01dc,
5721 0x01dd,
5722 },
5723 {
5724 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5725 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5726 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5727 0x01db,
5728 0x01dc,
5729 },
5730 {
5731 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5732 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5733 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5734 0x01da,
5735 0x01db,
5736 },
5737 {
5738 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5739 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5740 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5741 0x01d9,
5742 0x01da,
5743 },
5744 {
5745 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5746 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5747 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5748 0x01d8,
5749 0x01d9,
5750 },
5751 {
5752 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5753 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5754 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5755 0x01d7,
5756 0x01d8,
5757 },
5758 {
5759 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5760 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5761 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5762 0x01d7,
5763 0x01d7,
5764 },
5765 {
5766 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5767 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5768 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5769 0x01d6,
5770 0x01d7,
5771 },
5772 {
5773 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5774 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5775 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5776 0x01d5,
5777 0x01d6,
5778 },
5779 {
5780 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5781 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5782 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5783 0x01d4,
5784 0x01d5,
5785 },
5786 {
5787 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5788 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5789 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5790 0x01d3,
5791 0x01d4,
5792 },
5793 {
5794 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5795 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5796 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5797 0x01d2,
5798 0x01d3,
5799 },
5800 {
5801 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5802 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5803 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5804 0x01d2,
5805 0x01d2,
5806 },
5807 {
5808 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5809 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5810 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5811 0x01d1,
5812 0x01d2,
5813 },
5814 {
5815 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5816 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5817 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5818 0x01d0,
5819 0x01d1,
5820 },
5821 {
5822 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5823 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5824 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5825 0x01cf,
5826 0x01d0,
5827 },
5828 {
5829 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5830 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5831 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5832 0x01ce,
5833 0x01cf,
5834 },
5835 {
5836 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5837 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5838 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5839 0x01ce,
5840 0x01ce,
5841 },
5842 {
5843 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5844 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5845 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5846 0x01cd,
5847 0x01ce,
5848 },
5849 {
5850 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5851 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5852 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5853 0x01cc,
5854 0x01cd,
5855 },
5856 {
5857 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5858 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5859 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5860 0x01cb,
5861 0x01cc,
5862 },
5863 {
5864 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5865 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5866 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5867 0x01ca,
5868 0x01cb,
5869 },
5870 {
5871 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5872 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5873 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5874 0x01ca,
5875 0x01cb,
5876 },
5877 {
5878 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5879 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5880 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5881 0x01c9,
5882 0x01ca,
5883 },
5884 {
5885 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5886 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5887 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5888 0x01c9,
5889 0x01ca,
5890 },
5891 {
5892 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5893 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5894 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5895 0x01c9,
5896 0x01c9,
5897 },
5898 {
5899 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5900 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5901 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5902 0x01c8,
5903 0x01c9,
5904 },
5905 {
5906 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5907 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5908 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5909 0x01c8,
5910 0x01c9,
5911 },
5912 {
5913 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5914 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5915 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5916 0x01c8,
5917 0x01c8,
5918 },
5919 {
5920 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5921 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5922 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5923 0x01c7,
5924 0x01c8,
5925 },
5926 {
5927 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5928 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5929 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5930 0x01c7,
5931 0x01c8,
5932 },
5933 {
5934 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5935 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5936 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5937 0x01c6,
5938 0x01c7,
5939 },
5940 {
5941 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5942 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5943 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5944 0x01c6,
5945 0x01c7,
5946 },
5947 {
5948 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5949 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5950 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5951 0x01c6,
5952 0x01c6,
5953 },
5954 {
5955 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5956 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5957 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5958 0x01c5,
5959 0x01c6,
5960 },
5961 {
5962 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5963 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5964 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5965 0x01c5,
5966 0x01c6,
5967 },
5968 {
5969 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5970 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5971 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5972 0x01c4,
5973 0x01c5,
5974 },
5975 {
5976 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5977 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5978 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5979 0x01c4,
5980 0x01c5,
5981 },
5982 {
5983 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5984 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5985 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5986 0x01c4,
5987 0x01c4,
5988 },
5989 {
5990 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5991 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5992 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5993 0x01c3,
5994 0x01c4,
5995 },
5996 {
5997 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5998 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5999 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6000 0x01c3,
6001 0x01c4,
6002 },
6003 {
6004 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6005 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6006 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6007 0x01c2,
6008 0x01c3,
6009 },
6010 {
6011 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6012 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6013 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6014 0x01c2,
6015 0x01c3,
6016 },
6017 {
6018 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6019 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6020 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6021 0x01c2,
6022 0x01c2,
6023 },
6024 {
6025 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6026 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6027 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6028 0x01c1,
6029 0x01c2,
6030 },
6031 {
6032 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6033 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6034 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6035 0x01c0,
6036 0x01c1,
6037 },
6038 {
6039 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6040 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6041 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6042 0x01bf,
6043 0x01c0,
6044 },
6045 {
6046 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6047 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6048 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6049 0x01bf,
6050 0x01bf,
6051 },
6052 {
6053 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6054 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6055 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6056 0x01be,
6057 0x01bf,
6058 },
6059 {
6060 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6061 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6062 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6063 0x01bd,
6064 0x01be,
6065 },
6066 {
6067 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6068 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6069 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6070 0x01bc,
6071 0x01bd,
6072 },
6073 {
6074 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6075 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6076 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6077 0x043f,
6078 0x0443,
6079 },
6080 {
6081 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6082 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6083 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6084 0x043d,
6085 0x0441,
6086 },
6087 {
6088 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6089 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6090 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6091 0x043a,
6092 0x043f,
6093 },
6094 {
6095 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6096 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6097 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6098 0x0438,
6099 0x043d,
6100 },
6101 {
6102 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6103 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6104 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6105 0x0436,
6106 0x043a,
6107 },
6108 {
6109 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6110 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6111 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6112 0x0434,
6113 0x0438,
6114 },
6115 {
6116 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6117 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6118 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6119 0x0431,
6120 0x0436,
6121 },
6122 {
6123 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6124 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6125 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6126 0x042f,
6127 0x0434,
6128 },
6129 {
6130 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6131 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6132 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6133 0x042d,
6134 0x0431,
6135 },
6136 {
6137 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6138 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6139 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6140 0x042b,
6141 0x042f,
6142 },
6143 {
6144 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6145 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6146 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6147 0x0429,
6148 0x042d,
6149 },
6150 {
6151 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6152 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6153 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6154 0x0427,
6155 0x042b,
6156 },
6157 {
6158 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6159 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6160 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6161 0x0424,
6162 0x0429,
6163 },
6164 {
6165 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6166 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6167 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6168 0x041f,
6169 0x0424}
6170};
6171
6172static const struct chan_info_nphy_radio2057_rev5
6173chan_info_nphyrev8_2057_rev5[] = {
6174 {
6175 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6176 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6177 0x043a, 0x043f, 0x0443},
6178 {
6179 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6180 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6181 0x0438, 0x043d, 0x0441},
6182 {
6183 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6184 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6185 0x0436, 0x043a, 0x043f},
6186 {
6187 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6188 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6189 0x0434, 0x0438, 0x043d},
6190 {
6191 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6192 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6193 0x0431, 0x0436, 0x043a},
6194 {
6195 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6196 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6197 0x042f, 0x0434, 0x0438},
6198 {
6199 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6200 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6201 0x042d, 0x0431, 0x0436},
6202 {
6203 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6204 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6205 0x042b, 0x042f, 0x0434},
6206 {
6207 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6208 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6209 0x0429, 0x042d, 0x0431},
6210 {
6211 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6212 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6213 0x0427, 0x042b, 0x042f},
6214 {
6215 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6216 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6217 0x0424, 0x0429, 0x042d},
6218 {
6219 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6220 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6221 0x0422, 0x0427, 0x042b},
6222 {
6223 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6224 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6225 0x0420, 0x0424, 0x0429},
6226 {
6227 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6228 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6229 0x041b, 0x041f, 0x0424}
6230};
6231
6232static const struct chan_info_nphy_radio2057_rev5
6233chan_info_nphyrev9_2057_rev5v1[] = {
6234 {
6235 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6236 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6237 0x043a, 0x043f, 0x0443},
6238 {
6239 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6240 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6241 0x0438, 0x043d, 0x0441},
6242 {
6243 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6244 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6245 0x0436, 0x043a, 0x043f},
6246 {
6247 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6248 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6249 0x0434, 0x0438, 0x043d},
6250 {
6251 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6252 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6253 0x0431, 0x0436, 0x043a},
6254 {
6255 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6256 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6257 0x042f, 0x0434, 0x0438},
6258 {
6259 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6260 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6261 0x042d, 0x0431, 0x0436},
6262 {
6263 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6264 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6265 0x042b, 0x042f, 0x0434},
6266 {
6267 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6268 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6269 0x0429, 0x042d, 0x0431},
6270 {
6271 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6272 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6273 0x0427, 0x042b, 0x042f},
6274 {
6275 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6276 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6277 0x0424, 0x0429, 0x042d},
6278 {
6279 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6280 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6281 0x0422, 0x0427, 0x042b},
6282 {
6283 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6284 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6285 0x0420, 0x0424, 0x0429},
6286 {
6287 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6288 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6289 0x041b, 0x041f, 0x0424}
6290};
6291
6292static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6293 {
6294 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6295 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6297 0x0215,
6298 0x0216},
6299 {
6300 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6301 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6303 0x0214,
6304 0x0215},
6305 {
6306 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6307 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6308 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6309 0x0213,
6310 0x0214},
6311 {
6312 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6313 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6314 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6315 0x0212,
6316 0x0213},
6317 {
6318 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6319 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6320 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6321 0x0211,
6322 0x0212},
6323 {
6324 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6325 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6326 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6327 0x020f,
6328 0x0211},
6329 {
6330 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6331 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6332 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6333 0x020e,
6334 0x020f},
6335 {
6336 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6337 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6338 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6339 0x020d,
6340 0x020e},
6341 {
6342 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6343 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6345 0x020c,
6346 0x020d},
6347 {
6348 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6349 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6351 0x020b,
6352 0x020c},
6353 {
6354 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6355 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6357 0x020a,
6358 0x020b},
6359 {
6360 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6361 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6363 0x0209,
6364 0x020a},
6365 {
6366 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6367 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6368 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6369 0x0208,
6370 0x0209},
6371 {
6372 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6373 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6374 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6375 0x0207,
6376 0x0208},
6377 {
6378 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6379 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6380 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6381 0x0206,
6382 0x0207},
6383 {
6384 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6385 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6386 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6387 0x0205,
6388 0x0206},
6389 {
6390 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6391 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6392 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6393 0x0204,
6394 0x0205},
6395 {
6396 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6397 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6398 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6399 0x0203,
6400 0x0204},
6401 {
6402 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6403 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6405 0x0202,
6406 0x0203},
6407 {
6408 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6409 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6411 0x0201,
6412 0x0202},
6413 {
6414 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6415 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6417 0x0200,
6418 0x0201},
6419 {
6420 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6421 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6422 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6423 0x01ff,
6424 0x0200},
6425 {
6426 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6427 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6428 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6429 0x01fe,
6430 0x01ff},
6431 {
6432 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6433 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6434 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6435 0x01fc,
6436 0x01fd},
6437 {
6438 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6439 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6440 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6441 0x01fb,
6442 0x01fc},
6443 {
6444 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6445 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6446 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6447 0x01fa,
6448 0x01fb},
6449 {
6450 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6451 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6452 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6453 0x01f9,
6454 0x01fa},
6455 {
6456 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6457 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6459 0x01f8,
6460 0x01f9},
6461 {
6462 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6463 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6465 0x01f7,
6466 0x01f8},
6467 {
6468 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6469 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6471 0x01f6,
6472 0x01f7},
6473 {
6474 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6475 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6477 0x01f5,
6478 0x01f6},
6479 {
6480 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6481 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6482 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6483 0x01f4,
6484 0x01f5},
6485 {
6486 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6487 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6488 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6489 0x01f3,
6490 0x01f4},
6491 {
6492 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6493 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6494 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6495 0x01f2,
6496 0x01f3},
6497 {
6498 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6499 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6500 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6501 0x01f1,
6502 0x01f2},
6503 {
6504 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6505 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6506 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6507 0x01f0,
6508 0x01f1},
6509 {
6510 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6511 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6512 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6513 0x01f0,
6514 0x01f0},
6515 {
6516 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6517 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6519 0x01ef,
6520 0x01f0},
6521 {
6522 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6523 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6525 0x01ee,
6526 0x01ef},
6527 {
6528 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6529 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6531 0x01ed,
6532 0x01ee},
6533 {
6534 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6535 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6537 0x01ec,
6538 0x01ed},
6539 {
6540 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6541 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6542 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6543 0x01eb,
6544 0x01ec},
6545 {
6546 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6547 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6548 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6549 0x01ea,
6550 0x01eb},
6551 {
6552 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6553 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6554 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6555 0x01e9,
6556 0x01ea},
6557 {
6558 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6559 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6560 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6561 0x01e8,
6562 0x01e9},
6563 {
6564 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6565 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6566 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6567 0x01e7,
6568 0x01e8},
6569 {
6570 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6571 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6572 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6573 0x01e6,
6574 0x01e7},
6575 {
6576 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6577 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6579 0x01e5,
6580 0x01e6},
6581 {
6582 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6583 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6585 0x01e5,
6586 0x01e5},
6587 {
6588 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6589 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6591 0x01e4,
6592 0x01e5},
6593 {
6594 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6595 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6597 0x01e3,
6598 0x01e4},
6599 {
6600 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6601 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6602 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6603 0x01e2,
6604 0x01e3},
6605 {
6606 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6607 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6608 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6609 0x01e1,
6610 0x01e2},
6611 {
6612 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6613 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6614 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6615 0x01e0,
6616 0x01e1},
6617 {
6618 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6619 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6620 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6621 0x01df,
6622 0x01e0},
6623 {
6624 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6625 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6626 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6627 0x01de,
6628 0x01df},
6629 {
6630 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6631 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6632 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6633 0x01dd,
6634 0x01de},
6635 {
6636 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6637 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6639 0x01dd,
6640 0x01dd},
6641 {
6642 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6643 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6645 0x01dc,
6646 0x01dd},
6647 {
6648 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6649 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6651 0x01db,
6652 0x01dc},
6653 {
6654 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6655 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6657 0x01da,
6658 0x01db},
6659 {
6660 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6661 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6662 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6663 0x01d9,
6664 0x01da},
6665 {
6666 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6667 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6668 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6669 0x01d8,
6670 0x01d9},
6671 {
6672 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6673 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6674 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6675 0x01d7,
6676 0x01d8},
6677 {
6678 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6679 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6680 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6681 0x01d7,
6682 0x01d7},
6683 {
6684 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6685 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6686 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6687 0x01d6,
6688 0x01d7},
6689 {
6690 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6691 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6692 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6693 0x01d5,
6694 0x01d6},
6695 {
6696 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6697 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6698 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6699 0x01d4,
6700 0x01d5},
6701 {
6702 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6703 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6704 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6705 0x01d3,
6706 0x01d4},
6707 {
6708 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6709 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6710 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6711 0x01d2,
6712 0x01d3},
6713 {
6714 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6715 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6716 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6717 0x01d2,
6718 0x01d2},
6719 {
6720 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6721 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6722 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6723 0x01d1,
6724 0x01d2},
6725 {
6726 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6727 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6728 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6729 0x01d0,
6730 0x01d1},
6731 {
6732 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6733 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6734 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6735 0x01cf,
6736 0x01d0},
6737 {
6738 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6739 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6740 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6741 0x01ce,
6742 0x01cf},
6743 {
6744 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6745 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6746 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6747 0x01ce,
6748 0x01ce},
6749 {
6750 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6751 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6752 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6753 0x01cd,
6754 0x01ce},
6755 {
6756 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6757 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6759 0x01cc,
6760 0x01cd},
6761 {
6762 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6763 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6765 0x01cb,
6766 0x01cc},
6767 {
6768 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6769 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6770 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6771 0x01ca,
6772 0x01cb},
6773 {
6774 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6775 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6776 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6777 0x01ca,
6778 0x01cb},
6779 {
6780 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6781 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6782 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6783 0x01c9,
6784 0x01ca},
6785 {
6786 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6787 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6788 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6789 0x01c9,
6790 0x01ca},
6791 {
6792 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6793 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6794 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6795 0x01c9,
6796 0x01c9},
6797 {
6798 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6799 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6800 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6801 0x01c8,
6802 0x01c9},
6803 {
6804 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6805 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6807 0x01c8,
6808 0x01c9},
6809 {
6810 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6811 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6813 0x01c8,
6814 0x01c8},
6815 {
6816 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6817 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6819 0x01c7,
6820 0x01c8},
6821 {
6822 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6823 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6825 0x01c7,
6826 0x01c8},
6827 {
6828 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6829 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6830 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6831 0x01c6,
6832 0x01c7},
6833 {
6834 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6835 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6836 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6837 0x01c6,
6838 0x01c7},
6839 {
6840 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6841 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6842 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6843 0x01c6,
6844 0x01c6},
6845 {
6846 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6847 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6848 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6849 0x01c5,
6850 0x01c6},
6851 {
6852 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6853 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6854 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6855 0x01c5,
6856 0x01c6},
6857 {
6858 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6859 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6860 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6861 0x01c4,
6862 0x01c5},
6863 {
6864 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6865 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6866 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6867 0x01c4,
6868 0x01c5},
6869 {
6870 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6871 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6873 0x01c4,
6874 0x01c4},
6875 {
6876 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6877 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6879 0x01c3,
6880 0x01c4},
6881 {
6882 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6883 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6885 0x01c3,
6886 0x01c4},
6887 {
6888 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6889 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6891 0x01c2,
6892 0x01c3},
6893 {
6894 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6895 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6897 0x01c2,
6898 0x01c3},
6899 {
6900 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6901 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6903 0x01c2,
6904 0x01c2},
6905 {
6906 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6907 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6909 0x01c1,
6910 0x01c2},
6911 {
6912 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6913 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6914 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6915 0x01c0,
6916 0x01c1},
6917 {
6918 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6919 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6920 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6921 0x01bf,
6922 0x01c0},
6923 {
6924 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6925 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6926 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6927 0x01bf,
6928 0x01bf},
6929 {
6930 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6931 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6932 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6933 0x01be,
6934 0x01bf},
6935 {
6936 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6937 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6938 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6939 0x01bd,
6940 0x01be},
6941 {
6942 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6943 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6944 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6945 0x01bc,
6946 0x01bd},
6947 {
6948 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6949 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6951 0x043f,
6952 0x0443},
6953 {
6954 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6955 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6957 0x043d,
6958 0x0441},
6959 {
6960 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6961 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6963 0x043a,
6964 0x043f},
6965 {
6966 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6967 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6969 0x0438,
6970 0x043d},
6971 {
6972 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6973 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6975 0x0436,
6976 0x043a},
6977 {
6978 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6979 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6981 0x0434,
6982 0x0438},
6983 {
6984 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6985 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6987 0x0431,
6988 0x0436},
6989 {
6990 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6991 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6992 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6993 0x042f,
6994 0x0434},
6995 {
6996 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6997 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6998 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6999 0x042d,
7000 0x0431},
7001 {
7002 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7003 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7004 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7005 0x042b,
7006 0x042f},
7007 {
7008 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7009 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7010 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7011 0x0429,
7012 0x042d},
7013 {
7014 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7015 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7016 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7017 0x0427,
7018 0x042b},
7019 {
7020 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7021 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7022 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7023 0x0424,
7024 0x0429},
7025 {
7026 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7027 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7028 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7029 0x041f,
7030 0x0424}
7031};
7032
7033static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7034 {
7035 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7036 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7038 0x0214,
7039 0x0215},
7040 {
7041 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7042 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7043 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7044 0x0213,
7045 0x0214},
7046 {
7047 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7048 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7049 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7050 0x0212,
7051 0x0213},
7052 {
7053 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7054 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7055 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7056 0x0211,
7057 0x0212},
7058 {
7059 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7060 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7061 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7062 0x020f,
7063 0x0211},
7064 {
7065 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7066 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7067 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7068 0x020e,
7069 0x020f},
7070 {
7071 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7072 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7073 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7074 0x020d,
7075 0x020e},
7076 {
7077 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7078 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7080 0x020c,
7081 0x020d},
7082 {
7083 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7084 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7086 0x020b,
7087 0x020c},
7088 {
7089 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7090 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7092 0x020a,
7093 0x020b},
7094 {
7095 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7096 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7098 0x0209,
7099 0x020a},
7100 {
7101 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7102 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7103 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7104 0x0208,
7105 0x0209},
7106 {
7107 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7108 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7109 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7110 0x0207,
7111 0x0208},
7112 {
7113 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7114 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7115 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7116 0x0206,
7117 0x0207},
7118 {
7119 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7120 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7121 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7122 0x0205,
7123 0x0206},
7124 {
7125 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7126 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7127 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7128 0x0204,
7129 0x0205},
7130 {
7131 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7132 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7133 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7134 0x0203,
7135 0x0204},
7136 {
7137 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7138 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7140 0x0202,
7141 0x0203},
7142 {
7143 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7144 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7146 0x0201,
7147 0x0202},
7148 {
7149 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7150 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7152 0x0200,
7153 0x0201},
7154 {
7155 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7156 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7157 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7158 0x01ff,
7159 0x0200},
7160 {
7161 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7162 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7163 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7164 0x01fe,
7165 0x01ff},
7166 {
7167 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7168 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7169 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7170 0x01fc,
7171 0x01fd},
7172 {
7173 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7174 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7175 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7176 0x01fb,
7177 0x01fc},
7178 {
7179 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7180 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7181 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7182 0x01fa,
7183 0x01fb},
7184 {
7185 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7186 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7187 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7188 0x01f9,
7189 0x01fa},
7190 {
7191 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7192 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7194 0x01f8,
7195 0x01f9},
7196 {
7197 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7198 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7200 0x01f7,
7201 0x01f8},
7202 {
7203 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7204 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7206 0x01f6,
7207 0x01f7},
7208 {
7209 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7210 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7212 0x01f5,
7213 0x01f6},
7214 {
7215 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7216 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7217 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7218 0x01f4,
7219 0x01f5},
7220 {
7221 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7222 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7223 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7224 0x01f3,
7225 0x01f4},
7226 {
7227 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7228 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7229 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7230 0x01f2,
7231 0x01f3},
7232 {
7233 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7234 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7235 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7236 0x01f1,
7237 0x01f2},
7238 {
7239 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7240 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7241 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7242 0x01f0,
7243 0x01f1},
7244 {
7245 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7246 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7247 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7248 0x01f0,
7249 0x01f0},
7250 {
7251 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7252 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7254 0x01ef,
7255 0x01f0},
7256 {
7257 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7258 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7260 0x01ee,
7261 0x01ef},
7262 {
7263 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7264 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7266 0x01ed,
7267 0x01ee},
7268 {
7269 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7270 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7272 0x01ec,
7273 0x01ed},
7274 {
7275 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7276 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7277 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7278 0x01eb,
7279 0x01ec},
7280 {
7281 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7282 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7283 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7284 0x01ea,
7285 0x01eb},
7286 {
7287 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7288 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7289 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7290 0x01e9,
7291 0x01ea},
7292 {
7293 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7294 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7295 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7296 0x01e8,
7297 0x01e9},
7298 {
7299 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7300 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7301 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7302 0x01e7,
7303 0x01e8},
7304 {
7305 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7306 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7307 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7308 0x01e6,
7309 0x01e7},
7310 {
7311 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7312 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7314 0x01e5,
7315 0x01e6},
7316 {
7317 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7318 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7320 0x01e5,
7321 0x01e5},
7322 {
7323 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7324 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7326 0x01e4,
7327 0x01e5},
7328 {
7329 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7330 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7332 0x01e3,
7333 0x01e4},
7334 {
7335 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7336 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7337 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7338 0x01e2,
7339 0x01e3},
7340 {
7341 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7342 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7343 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7344 0x01e1,
7345 0x01e2},
7346 {
7347 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7348 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7349 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7350 0x01e0,
7351 0x01e1},
7352 {
7353 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7354 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7355 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7356 0x01df,
7357 0x01e0},
7358 {
7359 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7360 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7361 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7362 0x01de,
7363 0x01df},
7364 {
7365 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7366 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7367 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7368 0x01dd,
7369 0x01de},
7370 {
7371 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7372 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7374 0x01dd,
7375 0x01dd},
7376 {
7377 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7378 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7380 0x01dc,
7381 0x01dd},
7382 {
7383 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7384 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7386 0x01db,
7387 0x01dc},
7388 {
7389 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7390 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7392 0x01da,
7393 0x01db},
7394 {
7395 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7396 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7397 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7398 0x01d9,
7399 0x01da},
7400 {
7401 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7402 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7403 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7404 0x01d8,
7405 0x01d9},
7406 {
7407 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7408 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7409 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7410 0x01d7,
7411 0x01d8},
7412 {
7413 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7414 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7415 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7416 0x01d7,
7417 0x01d7},
7418 {
7419 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7420 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7421 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7422 0x01d6,
7423 0x01d7},
7424 {
7425 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7426 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7427 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7428 0x01d5,
7429 0x01d6},
7430 {
7431 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7432 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7433 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7434 0x01d4,
7435 0x01d5},
7436 {
7437 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7438 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7439 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7440 0x01d3,
7441 0x01d4},
7442 {
7443 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7444 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7445 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7446 0x01d2,
7447 0x01d3},
7448 {
7449 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7450 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7451 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7452 0x01d2,
7453 0x01d2},
7454 {
7455 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7456 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7457 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7458 0x01d1,
7459 0x01d2},
7460 {
7461 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7462 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7463 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7464 0x01d0,
7465 0x01d1},
7466 {
7467 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7468 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7469 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7470 0x01cf,
7471 0x01d0},
7472 {
7473 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7474 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7475 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7476 0x01ce,
7477 0x01cf},
7478 {
7479 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7480 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7481 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7482 0x01ce,
7483 0x01ce},
7484 {
7485 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7486 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7487 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7488 0x01cd,
7489 0x01ce},
7490 {
7491 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7492 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7494 0x01cc,
7495 0x01cd},
7496 {
7497 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7498 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7500 0x01cb,
7501 0x01cc},
7502 {
7503 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7504 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7505 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7506 0x01ca,
7507 0x01cb},
7508 {
7509 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7510 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7511 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7512 0x01ca,
7513 0x01cb},
7514 {
7515 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7516 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7517 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7518 0x01c9,
7519 0x01ca},
7520 {
7521 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7522 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7523 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7524 0x01c9,
7525 0x01ca},
7526 {
7527 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7528 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7529 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7530 0x01c9,
7531 0x01c9},
7532 {
7533 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7534 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7535 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7536 0x01c8,
7537 0x01c9},
7538 {
7539 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7540 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7542 0x01c8,
7543 0x01c9},
7544 {
7545 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7546 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7548 0x01c8,
7549 0x01c8},
7550 {
7551 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7552 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7554 0x01c7,
7555 0x01c8},
7556 {
7557 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7558 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7560 0x01c7,
7561 0x01c8},
7562 {
7563 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7564 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7565 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7566 0x01c6,
7567 0x01c7},
7568 {
7569 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7570 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7571 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7572 0x01c6,
7573 0x01c7},
7574 {
7575 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7576 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7577 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7578 0x01c6,
7579 0x01c6},
7580 {
7581 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7582 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7583 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7584 0x01c5,
7585 0x01c6},
7586 {
7587 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7588 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7589 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7590 0x01c5,
7591 0x01c6},
7592 {
7593 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7594 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7595 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7596 0x01c4,
7597 0x01c5},
7598 {
7599 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7600 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7601 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7602 0x01c4,
7603 0x01c5},
7604 {
7605 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7606 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7608 0x01c4,
7609 0x01c4},
7610 {
7611 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7612 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7614 0x01c3,
7615 0x01c4},
7616 {
7617 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7618 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7620 0x01c3,
7621 0x01c4},
7622 {
7623 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7624 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7626 0x01c2,
7627 0x01c3},
7628 {
7629 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7630 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7632 0x01c2,
7633 0x01c3},
7634 {
7635 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7636 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7638 0x01c2,
7639 0x01c2},
7640 {
7641 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7642 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7644 0x01c1,
7645 0x01c2},
7646 {
7647 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7648 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7649 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7650 0x01c0,
7651 0x01c1},
7652 {
7653 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7654 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7655 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7656 0x01bf,
7657 0x01c0},
7658 {
7659 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7660 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7661 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7662 0x01bf,
7663 0x01bf},
7664 {
7665 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7666 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7667 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7668 0x01be,
7669 0x01bf},
7670 {
7671 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7672 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7673 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7674 0x01bd,
7675 0x01be},
7676 {
7677 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7678 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7679 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7680 0x01bc,
7681 0x01bd},
7682 {
7683 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7684 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7686 0x043f,
7687 0x0443},
7688 {
7689 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7690 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7692 0x043d,
7693 0x0441},
7694 {
7695 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7696 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7698 0x043a,
7699 0x043f},
7700 {
7701 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7702 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7704 0x0438,
7705 0x043d},
7706 {
7707 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7708 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7710 0x0436,
7711 0x043a},
7712 {
7713 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7714 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7716 0x0434,
7717 0x0438},
7718 {
7719 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7720 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7722 0x0431,
7723 0x0436},
7724 {
7725 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7726 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7727 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7728 0x042f,
7729 0x0434},
7730 {
7731 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7732 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7733 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7734 0x042d,
7735 0x0431},
7736 {
7737 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7738 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7739 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7740 0x042b,
7741 0x042f},
7742 {
7743 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7744 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7745 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7746 0x0429,
7747 0x042d},
7748 {
7749 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7750 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7751 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7752 0x0427,
7753 0x042b},
7754 {
7755 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7756 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7757 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7758 0x0424,
7759 0x0429},
7760 {
7761 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7762 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7763 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7764 0x041f,
7765 0x0424}
7766};
7767
7768static struct radio_regs regs_2055[] = {
7769 {0x02, 0x80, 0x80, 0, 0},
7770 {0x03, 0, 0, 0, 0},
7771 {0x04, 0x27, 0x27, 0, 0},
7772 {0x05, 0, 0, 0, 0},
7773 {0x06, 0x27, 0x27, 0, 0},
7774 {0x07, 0x7f, 0x7f, 1, 1},
7775 {0x08, 0x7, 0x7, 1, 1},
7776 {0x09, 0x7f, 0x7f, 1, 1},
7777 {0x0A, 0x7, 0x7, 1, 1},
7778 {0x0B, 0x15, 0x15, 0, 0},
7779 {0x0C, 0x15, 0x15, 0, 0},
7780 {0x0D, 0x4f, 0x4f, 1, 1},
7781 {0x0E, 0x5, 0x5, 1, 1},
7782 {0x0F, 0x4f, 0x4f, 1, 1},
7783 {0x10, 0x5, 0x5, 1, 1},
7784 {0x11, 0xd0, 0xd0, 0, 0},
7785 {0x12, 0x2, 0x2, 0, 0},
7786 {0x13, 0, 0, 0, 0},
7787 {0x14, 0x40, 0x40, 0, 0},
7788 {0x15, 0, 0, 0, 0},
7789 {0x16, 0, 0, 0, 0},
7790 {0x17, 0, 0, 0, 0},
7791 {0x18, 0, 0, 0, 0},
7792 {0x19, 0, 0, 0, 0},
7793 {0x1A, 0, 0, 0, 0},
7794 {0x1B, 0, 0, 0, 0},
7795 {0x1C, 0, 0, 0, 0},
7796 {0x1D, 0xc0, 0xc0, 0, 0},
7797 {0x1E, 0xff, 0xff, 0, 0},
7798 {0x1F, 0xc0, 0xc0, 0, 0},
7799 {0x20, 0xff, 0xff, 0, 0},
7800 {0x21, 0xc0, 0xc0, 0, 0},
7801 {0x22, 0, 0, 0, 0},
7802 {0x23, 0x2c, 0x2c, 0, 0},
7803 {0x24, 0, 0, 0, 0},
7804 {0x25, 0, 0, 0, 0},
7805 {0x26, 0, 0, 0, 0},
7806 {0x27, 0, 0, 0, 0},
7807 {0x28, 0, 0, 0, 0},
7808 {0x29, 0, 0, 0, 0},
7809 {0x2A, 0, 0, 0, 0},
7810 {0x2B, 0, 0, 0, 0},
7811 {0x2C, 0, 0, 0, 0},
7812 {0x2D, 0xa4, 0xa4, 0, 0},
7813 {0x2E, 0x38, 0x38, 0, 0},
7814 {0x2F, 0, 0, 0, 0},
7815 {0x30, 0x4, 0x4, 1, 1},
7816 {0x31, 0, 0, 0, 0},
7817 {0x32, 0xa, 0xa, 0, 0},
7818 {0x33, 0x87, 0x87, 0, 0},
7819 {0x34, 0x9, 0x9, 0, 0},
7820 {0x35, 0x70, 0x70, 0, 0},
7821 {0x36, 0x11, 0x11, 0, 0},
7822 {0x37, 0x18, 0x18, 1, 1},
7823 {0x38, 0x6, 0x6, 0, 0},
7824 {0x39, 0x4, 0x4, 1, 1},
7825 {0x3A, 0x6, 0x6, 0, 0},
7826 {0x3B, 0x9e, 0x9e, 0, 0},
7827 {0x3C, 0x9, 0x9, 0, 0},
7828 {0x3D, 0xc8, 0xc8, 1, 1},
7829 {0x3E, 0x88, 0x88, 0, 0},
7830 {0x3F, 0, 0, 0, 0},
7831 {0x40, 0, 0, 0, 0},
7832 {0x41, 0, 0, 0, 0},
7833 {0x42, 0x1, 0x1, 0, 0},
7834 {0x43, 0x2, 0x2, 0, 0},
7835 {0x44, 0x96, 0x96, 0, 0},
7836 {0x45, 0x3e, 0x3e, 0, 0},
7837 {0x46, 0x3e, 0x3e, 0, 0},
7838 {0x47, 0x13, 0x13, 0, 0},
7839 {0x48, 0x2, 0x2, 0, 0},
7840 {0x49, 0x15, 0x15, 0, 0},
7841 {0x4A, 0x7, 0x7, 0, 0},
7842 {0x4B, 0, 0, 0, 0},
7843 {0x4C, 0, 0, 0, 0},
7844 {0x4D, 0, 0, 0, 0},
7845 {0x4E, 0, 0, 0, 0},
7846 {0x4F, 0, 0, 0, 0},
7847 {0x50, 0x8, 0x8, 0, 0},
7848 {0x51, 0x8, 0x8, 0, 0},
7849 {0x52, 0x6, 0x6, 0, 0},
7850 {0x53, 0x84, 0x84, 1, 1},
7851 {0x54, 0xc3, 0xc3, 0, 0},
7852 {0x55, 0x8f, 0x8f, 0, 0},
7853 {0x56, 0xff, 0xff, 0, 0},
7854 {0x57, 0xff, 0xff, 0, 0},
7855 {0x58, 0x88, 0x88, 0, 0},
7856 {0x59, 0x88, 0x88, 0, 0},
7857 {0x5A, 0, 0, 0, 0},
7858 {0x5B, 0xcc, 0xcc, 0, 0},
7859 {0x5C, 0x6, 0x6, 0, 0},
7860 {0x5D, 0x80, 0x80, 0, 0},
7861 {0x5E, 0x80, 0x80, 0, 0},
7862 {0x5F, 0xf8, 0xf8, 0, 0},
7863 {0x60, 0x88, 0x88, 0, 0},
7864 {0x61, 0x88, 0x88, 0, 0},
7865 {0x62, 0x88, 0x8, 1, 1},
7866 {0x63, 0x88, 0x88, 0, 0},
7867 {0x64, 0, 0, 0, 0},
7868 {0x65, 0x1, 0x1, 1, 1},
7869 {0x66, 0x8a, 0x8a, 0, 0},
7870 {0x67, 0x8, 0x8, 0, 0},
7871 {0x68, 0x83, 0x83, 0, 0},
7872 {0x69, 0x6, 0x6, 0, 0},
7873 {0x6A, 0xa0, 0xa0, 0, 0},
7874 {0x6B, 0xa, 0xa, 0, 0},
7875 {0x6C, 0x87, 0x87, 1, 1},
7876 {0x6D, 0x2a, 0x2a, 0, 0},
7877 {0x6E, 0x2a, 0x2a, 0, 0},
7878 {0x6F, 0x2a, 0x2a, 0, 0},
7879 {0x70, 0x2a, 0x2a, 0, 0},
7880 {0x71, 0x18, 0x18, 0, 0},
7881 {0x72, 0x6a, 0x6a, 1, 1},
7882 {0x73, 0xab, 0xab, 1, 1},
7883 {0x74, 0x13, 0x13, 1, 1},
7884 {0x75, 0xc1, 0xc1, 1, 1},
7885 {0x76, 0xaa, 0xaa, 1, 1},
7886 {0x77, 0x87, 0x87, 1, 1},
7887 {0x78, 0, 0, 0, 0},
7888 {0x79, 0x6, 0x6, 0, 0},
7889 {0x7A, 0x7, 0x7, 0, 0},
7890 {0x7B, 0x7, 0x7, 0, 0},
7891 {0x7C, 0x15, 0x15, 0, 0},
7892 {0x7D, 0x55, 0x55, 0, 0},
7893 {0x7E, 0x97, 0x97, 1, 1},
7894 {0x7F, 0x8, 0x8, 0, 0},
7895 {0x80, 0x14, 0x14, 1, 1},
7896 {0x81, 0x33, 0x33, 0, 0},
7897 {0x82, 0x88, 0x88, 0, 0},
7898 {0x83, 0x6, 0x6, 0, 0},
7899 {0x84, 0x3, 0x3, 1, 1},
7900 {0x85, 0xa, 0xa, 0, 0},
7901 {0x86, 0x3, 0x3, 1, 1},
7902 {0x87, 0x2a, 0x2a, 0, 0},
7903 {0x88, 0xa4, 0xa4, 0, 0},
7904 {0x89, 0x18, 0x18, 0, 0},
7905 {0x8A, 0x28, 0x28, 0, 0},
7906 {0x8B, 0, 0, 0, 0},
7907 {0x8C, 0x4a, 0x4a, 0, 0},
7908 {0x8D, 0, 0, 0, 0},
7909 {0x8E, 0xf8, 0xf8, 0, 0},
7910 {0x8F, 0x88, 0x88, 0, 0},
7911 {0x90, 0x88, 0x88, 0, 0},
7912 {0x91, 0x88, 0x8, 1, 1},
7913 {0x92, 0x88, 0x88, 0, 0},
7914 {0x93, 0, 0, 0, 0},
7915 {0x94, 0x1, 0x1, 1, 1},
7916 {0x95, 0x8a, 0x8a, 0, 0},
7917 {0x96, 0x8, 0x8, 0, 0},
7918 {0x97, 0x83, 0x83, 0, 0},
7919 {0x98, 0x6, 0x6, 0, 0},
7920 {0x99, 0xa0, 0xa0, 0, 0},
7921 {0x9A, 0xa, 0xa, 0, 0},
7922 {0x9B, 0x87, 0x87, 1, 1},
7923 {0x9C, 0x2a, 0x2a, 0, 0},
7924 {0x9D, 0x2a, 0x2a, 0, 0},
7925 {0x9E, 0x2a, 0x2a, 0, 0},
7926 {0x9F, 0x2a, 0x2a, 0, 0},
7927 {0xA0, 0x18, 0x18, 0, 0},
7928 {0xA1, 0x6a, 0x6a, 1, 1},
7929 {0xA2, 0xab, 0xab, 1, 1},
7930 {0xA3, 0x13, 0x13, 1, 1},
7931 {0xA4, 0xc1, 0xc1, 1, 1},
7932 {0xA5, 0xaa, 0xaa, 1, 1},
7933 {0xA6, 0x87, 0x87, 1, 1},
7934 {0xA7, 0, 0, 0, 0},
7935 {0xA8, 0x6, 0x6, 0, 0},
7936 {0xA9, 0x7, 0x7, 0, 0},
7937 {0xAA, 0x7, 0x7, 0, 0},
7938 {0xAB, 0x15, 0x15, 0, 0},
7939 {0xAC, 0x55, 0x55, 0, 0},
7940 {0xAD, 0x97, 0x97, 1, 1},
7941 {0xAE, 0x8, 0x8, 0, 0},
7942 {0xAF, 0x14, 0x14, 1, 1},
7943 {0xB0, 0x33, 0x33, 0, 0},
7944 {0xB1, 0x88, 0x88, 0, 0},
7945 {0xB2, 0x6, 0x6, 0, 0},
7946 {0xB3, 0x3, 0x3, 1, 1},
7947 {0xB4, 0xa, 0xa, 0, 0},
7948 {0xB5, 0x3, 0x3, 1, 1},
7949 {0xB6, 0x2a, 0x2a, 0, 0},
7950 {0xB7, 0xa4, 0xa4, 0, 0},
7951 {0xB8, 0x18, 0x18, 0, 0},
7952 {0xB9, 0x28, 0x28, 0, 0},
7953 {0xBA, 0, 0, 0, 0},
7954 {0xBB, 0x4a, 0x4a, 0, 0},
7955 {0xBC, 0, 0, 0, 0},
7956 {0xBD, 0x71, 0x71, 0, 0},
7957 {0xBE, 0x72, 0x72, 0, 0},
7958 {0xBF, 0x73, 0x73, 0, 0},
7959 {0xC0, 0x74, 0x74, 0, 0},
7960 {0xC1, 0x75, 0x75, 0, 0},
7961 {0xC2, 0x76, 0x76, 0, 0},
7962 {0xC3, 0x77, 0x77, 0, 0},
7963 {0xC4, 0x78, 0x78, 0, 0},
7964 {0xC5, 0x79, 0x79, 0, 0},
7965 {0xC6, 0x7a, 0x7a, 0, 0},
7966 {0xC7, 0, 0, 0, 0},
7967 {0xC8, 0, 0, 0, 0},
7968 {0xC9, 0, 0, 0, 0},
7969 {0xCA, 0, 0, 0, 0},
7970 {0xCB, 0, 0, 0, 0},
7971 {0xCC, 0, 0, 0, 0},
7972 {0xCD, 0, 0, 0, 0},
7973 {0xCE, 0x6, 0x6, 0, 0},
7974 {0xCF, 0, 0, 0, 0},
7975 {0xD0, 0, 0, 0, 0},
7976 {0xD1, 0x18, 0x18, 0, 0},
7977 {0xD2, 0x88, 0x88, 0, 0},
7978 {0xD3, 0, 0, 0, 0},
7979 {0xD4, 0, 0, 0, 0},
7980 {0xD5, 0, 0, 0, 0},
7981 {0xD6, 0, 0, 0, 0},
7982 {0xD7, 0, 0, 0, 0},
7983 {0xD8, 0, 0, 0, 0},
7984 {0xD9, 0, 0, 0, 0},
7985 {0xDA, 0x6, 0x6, 0, 0},
7986 {0xDB, 0, 0, 0, 0},
7987 {0xDC, 0, 0, 0, 0},
7988 {0xDD, 0x18, 0x18, 0, 0},
7989 {0xDE, 0x88, 0x88, 0, 0},
7990 {0xDF, 0, 0, 0, 0},
7991 {0xE0, 0, 0, 0, 0},
7992 {0xE1, 0, 0, 0, 0},
7993 {0xE2, 0, 0, 0, 0},
7994 {0xFFFF, 0, 0, 0, 0},
7995};
7996
7997static struct radio_regs regs_SYN_2056[] = {
7998 {0x02, 0, 0, 0, 0},
7999 {0x03, 0, 0, 0, 0},
8000 {0x04, 0, 0, 0, 0},
8001 {0x05, 0, 0, 0, 0},
8002 {0x06, 0, 0, 0, 0},
8003 {0x07, 0, 0, 0, 0},
8004 {0x08, 0, 0, 0, 0},
8005 {0x09, 0x1, 0x1, 0, 0},
8006 {0x0A, 0, 0, 0, 0},
8007 {0x0B, 0, 0, 0, 0},
8008 {0x0C, 0, 0, 0, 0},
8009 {0x0D, 0, 0, 0, 0},
8010 {0x0E, 0, 0, 0, 0},
8011 {0x0F, 0, 0, 0, 0},
8012 {0x10, 0, 0, 0, 0},
8013 {0x11, 0, 0, 0, 0},
8014 {0x12, 0, 0, 0, 0},
8015 {0x13, 0, 0, 0, 0},
8016 {0x14, 0, 0, 0, 0},
8017 {0x15, 0, 0, 0, 0},
8018 {0x16, 0, 0, 0, 0},
8019 {0x17, 0, 0, 0, 0},
8020 {0x18, 0, 0, 0, 0},
8021 {0x19, 0, 0, 0, 0},
8022 {0x1A, 0, 0, 0, 0},
8023 {0x1B, 0, 0, 0, 0},
8024 {0x1C, 0, 0, 0, 0},
8025 {0x1D, 0, 0, 0, 0},
8026 {0x1E, 0, 0, 0, 0},
8027 {0x1F, 0, 0, 0, 0},
8028 {0x20, 0, 0, 0, 0},
8029 {0x21, 0, 0, 0, 0},
8030 {0x22, 0x60, 0x60, 0, 0},
8031 {0x23, 0x6, 0x6, 0, 0},
8032 {0x24, 0xc, 0xc, 0, 0},
8033 {0x25, 0, 0, 0, 0},
8034 {0x26, 0, 0, 0, 0},
8035 {0x27, 0, 0, 0, 0},
8036 {0x28, 0x1, 0x1, 0, 0},
8037 {0x29, 0, 0, 0, 0},
8038 {0x2A, 0, 0, 0, 0},
8039 {0x2B, 0, 0, 0, 0},
8040 {0x2C, 0, 0, 0, 0},
8041 {0x2D, 0, 0, 0, 0},
8042 {0x2E, 0xd, 0xd, 0, 0},
8043 {0x2F, 0x1f, 0x1f, 0, 0},
8044 {0x30, 0x15, 0x15, 0, 0},
8045 {0x31, 0xf, 0xf, 0, 0},
8046 {0x32, 0, 0, 0, 0},
8047 {0x33, 0, 0, 0, 0},
8048 {0x34, 0, 0, 0, 0},
8049 {0x35, 0, 0, 0, 0},
8050 {0x36, 0, 0, 0, 0},
8051 {0x37, 0, 0, 0, 0},
8052 {0x38, 0, 0, 0, 0},
8053 {0x39, 0, 0, 0, 0},
8054 {0x3A, 0, 0, 0, 0},
8055 {0x3B, 0, 0, 0, 0},
8056 {0x3C, 0x13, 0x13, 0, 0},
8057 {0x3D, 0xf, 0xf, 0, 0},
8058 {0x3E, 0x18, 0x18, 0, 0},
8059 {0x3F, 0, 0, 0, 0},
8060 {0x40, 0, 0, 0, 0},
8061 {0x41, 0x20, 0x20, 0, 0},
8062 {0x42, 0x20, 0x20, 0, 0},
8063 {0x43, 0, 0, 0, 0},
8064 {0x44, 0x77, 0x77, 0, 0},
8065 {0x45, 0x7, 0x7, 0, 0},
8066 {0x46, 0x1, 0x1, 0, 0},
8067 {0x47, 0x4, 0x4, 0, 0},
8068 {0x48, 0xf, 0xf, 0, 0},
8069 {0x49, 0x30, 0x30, 0, 0},
8070 {0x4A, 0x32, 0x32, 0, 0},
8071 {0x4B, 0xd, 0xd, 0, 0},
8072 {0x4C, 0xd, 0xd, 0, 0},
8073 {0x4D, 0x4, 0x4, 0, 0},
8074 {0x4E, 0x6, 0x6, 0, 0},
8075 {0x4F, 0x1, 0x1, 0, 0},
8076 {0x50, 0x1c, 0x1c, 0, 0},
8077 {0x51, 0x2, 0x2, 0, 0},
8078 {0x52, 0x2, 0x2, 0, 0},
8079 {0x53, 0xf7, 0xf7, 1, 1},
8080 {0x54, 0xb4, 0xb4, 0, 0},
8081 {0x55, 0xd2, 0xd2, 0, 0},
8082 {0x56, 0, 0, 0, 0},
8083 {0x57, 0, 0, 0, 0},
8084 {0x58, 0x4, 0x4, 0, 0},
8085 {0x59, 0x96, 0x96, 0, 0},
8086 {0x5A, 0x3e, 0x3e, 0, 0},
8087 {0x5B, 0x3e, 0x3e, 0, 0},
8088 {0x5C, 0x13, 0x13, 0, 0},
8089 {0x5D, 0x2, 0x2, 0, 0},
8090 {0x5E, 0, 0, 0, 0},
8091 {0x5F, 0x7, 0x7, 0, 0},
8092 {0x60, 0x7, 0x7, 1, 1},
8093 {0x61, 0x8, 0x8, 0, 0},
8094 {0x62, 0x3, 0x3, 0, 0},
8095 {0x63, 0, 0, 0, 0},
8096 {0x64, 0, 0, 0, 0},
8097 {0x65, 0, 0, 0, 0},
8098 {0x66, 0, 0, 0, 0},
8099 {0x67, 0, 0, 0, 0},
8100 {0x68, 0x40, 0x40, 0, 0},
8101 {0x69, 0, 0, 0, 0},
8102 {0x6A, 0, 0, 0, 0},
8103 {0x6B, 0, 0, 0, 0},
8104 {0x6C, 0, 0, 0, 0},
8105 {0x6D, 0x1, 0x1, 0, 0},
8106 {0x6E, 0, 0, 0, 0},
8107 {0x6F, 0, 0, 0, 0},
8108 {0x70, 0x60, 0x60, 0, 0},
8109 {0x71, 0x66, 0x66, 0, 0},
8110 {0x72, 0xc, 0xc, 0, 0},
8111 {0x73, 0x66, 0x66, 0, 0},
8112 {0x74, 0x8f, 0x8f, 1, 1},
8113 {0x75, 0, 0, 0, 0},
8114 {0x76, 0xcc, 0xcc, 0, 0},
8115 {0x77, 0x1, 0x1, 0, 0},
8116 {0x78, 0x66, 0x66, 0, 0},
8117 {0x79, 0x66, 0x66, 0, 0},
8118 {0x7A, 0, 0, 0, 0},
8119 {0x7B, 0, 0, 0, 0},
8120 {0x7C, 0, 0, 0, 0},
8121 {0x7D, 0, 0, 0, 0},
8122 {0x7E, 0, 0, 0, 0},
8123 {0x7F, 0, 0, 0, 0},
8124 {0x80, 0, 0, 0, 0},
8125 {0x81, 0, 0, 0, 0},
8126 {0x82, 0, 0, 0, 0},
8127 {0x83, 0, 0, 0, 0},
8128 {0x84, 0, 0, 0, 0},
8129 {0x85, 0xff, 0xff, 0, 0},
8130 {0x86, 0, 0, 0, 0},
8131 {0x87, 0, 0, 0, 0},
8132 {0x88, 0, 0, 0, 0},
8133 {0x89, 0, 0, 0, 0},
8134 {0x8A, 0, 0, 0, 0},
8135 {0x8B, 0, 0, 0, 0},
8136 {0x8C, 0, 0, 0, 0},
8137 {0x8D, 0, 0, 0, 0},
8138 {0x8E, 0, 0, 0, 0},
8139 {0x8F, 0, 0, 0, 0},
8140 {0x90, 0, 0, 0, 0},
8141 {0x91, 0, 0, 0, 0},
8142 {0x92, 0, 0, 0, 0},
8143 {0x93, 0, 0, 0, 0},
8144 {0x94, 0, 0, 0, 0},
8145 {0x95, 0, 0, 0, 0},
8146 {0x96, 0, 0, 0, 0},
8147 {0x97, 0, 0, 0, 0},
8148 {0x98, 0, 0, 0, 0},
8149 {0x99, 0, 0, 0, 0},
8150 {0x9A, 0, 0, 0, 0},
8151 {0x9B, 0, 0, 0, 0},
8152 {0x9C, 0, 0, 0, 0},
8153 {0x9D, 0, 0, 0, 0},
8154 {0x9E, 0, 0, 0, 0},
8155 {0x9F, 0x6, 0x6, 0, 0},
8156 {0xA0, 0x66, 0x66, 0, 0},
8157 {0xA1, 0x66, 0x66, 0, 0},
8158 {0xA2, 0x66, 0x66, 0, 0},
8159 {0xA3, 0x66, 0x66, 0, 0},
8160 {0xA4, 0x66, 0x66, 0, 0},
8161 {0xA5, 0x66, 0x66, 0, 0},
8162 {0xA6, 0x66, 0x66, 0, 0},
8163 {0xA7, 0x66, 0x66, 0, 0},
8164 {0xA8, 0x66, 0x66, 0, 0},
8165 {0xA9, 0x66, 0x66, 0, 0},
8166 {0xAA, 0x66, 0x66, 0, 0},
8167 {0xAB, 0x66, 0x66, 0, 0},
8168 {0xAC, 0x66, 0x66, 0, 0},
8169 {0xAD, 0x66, 0x66, 0, 0},
8170 {0xAE, 0x66, 0x66, 0, 0},
8171 {0xAF, 0x66, 0x66, 0, 0},
8172 {0xB0, 0x66, 0x66, 0, 0},
8173 {0xB1, 0x66, 0x66, 0, 0},
8174 {0xB2, 0x66, 0x66, 0, 0},
8175 {0xB3, 0xa, 0xa, 0, 0},
8176 {0xB4, 0, 0, 0, 0},
8177 {0xB5, 0, 0, 0, 0},
8178 {0xB6, 0, 0, 0, 0},
8179 {0xFFFF, 0, 0, 0, 0}
8180};
8181
8182static struct radio_regs regs_TX_2056[] = {
8183 {0x02, 0, 0, 0, 0},
8184 {0x03, 0, 0, 0, 0},
8185 {0x04, 0, 0, 0, 0},
8186 {0x05, 0, 0, 0, 0},
8187 {0x06, 0, 0, 0, 0},
8188 {0x07, 0, 0, 0, 0},
8189 {0x08, 0, 0, 0, 0},
8190 {0x09, 0, 0, 0, 0},
8191 {0x0A, 0, 0, 0, 0},
8192 {0x0B, 0, 0, 0, 0},
8193 {0x0C, 0, 0, 0, 0},
8194 {0x0D, 0, 0, 0, 0},
8195 {0x0E, 0, 0, 0, 0},
8196 {0x0F, 0, 0, 0, 0},
8197 {0x10, 0, 0, 0, 0},
8198 {0x11, 0, 0, 0, 0},
8199 {0x12, 0, 0, 0, 0},
8200 {0x13, 0, 0, 0, 0},
8201 {0x14, 0, 0, 0, 0},
8202 {0x15, 0, 0, 0, 0},
8203 {0x16, 0, 0, 0, 0},
8204 {0x17, 0, 0, 0, 0},
8205 {0x18, 0, 0, 0, 0},
8206 {0x19, 0, 0, 0, 0},
8207 {0x1A, 0, 0, 0, 0},
8208 {0x1B, 0, 0, 0, 0},
8209 {0x1C, 0, 0, 0, 0},
8210 {0x1D, 0, 0, 0, 0},
8211 {0x1E, 0, 0, 0, 0},
8212 {0x1F, 0, 0, 0, 0},
8213 {0x20, 0, 0, 0, 0},
8214 {0x21, 0x88, 0x88, 0, 0},
8215 {0x22, 0x88, 0x88, 0, 0},
8216 {0x23, 0x88, 0x88, 0, 0},
8217 {0x24, 0x88, 0x88, 0, 0},
8218 {0x25, 0xc, 0xc, 0, 0},
8219 {0x26, 0, 0, 0, 0},
8220 {0x27, 0x3, 0x3, 0, 0},
8221 {0x28, 0, 0, 0, 0},
8222 {0x29, 0x3, 0x3, 0, 0},
8223 {0x2A, 0x37, 0x37, 0, 0},
8224 {0x2B, 0x3, 0x3, 0, 0},
8225 {0x2C, 0, 0, 0, 0},
8226 {0x2D, 0, 0, 0, 0},
8227 {0x2E, 0x1, 0x1, 0, 0},
8228 {0x2F, 0x1, 0x1, 0, 0},
8229 {0x30, 0, 0, 0, 0},
8230 {0x31, 0, 0, 0, 0},
8231 {0x32, 0, 0, 0, 0},
8232 {0x33, 0x11, 0x11, 0, 0},
8233 {0x34, 0x11, 0x11, 0, 0},
8234 {0x35, 0, 0, 0, 0},
8235 {0x36, 0, 0, 0, 0},
8236 {0x37, 0x3, 0x3, 0, 0},
8237 {0x38, 0xf, 0xf, 0, 0},
8238 {0x39, 0, 0, 0, 0},
8239 {0x3A, 0x2d, 0x2d, 0, 0},
8240 {0x3B, 0, 0, 0, 0},
8241 {0x3C, 0x6e, 0x6e, 0, 0},
8242 {0x3D, 0xf0, 0xf0, 1, 1},
8243 {0x3E, 0, 0, 0, 0},
8244 {0x3F, 0, 0, 0, 0},
8245 {0x40, 0, 0, 0, 0},
8246 {0x41, 0x3, 0x3, 0, 0},
8247 {0x42, 0x3, 0x3, 0, 0},
8248 {0x43, 0, 0, 0, 0},
8249 {0x44, 0x1e, 0x1e, 0, 0},
8250 {0x45, 0, 0, 0, 0},
8251 {0x46, 0x6e, 0x6e, 0, 0},
8252 {0x47, 0xf0, 0xf0, 1, 1},
8253 {0x48, 0, 0, 0, 0},
8254 {0x49, 0x2, 0x2, 0, 0},
8255 {0x4A, 0xff, 0xff, 1, 1},
8256 {0x4B, 0xc, 0xc, 0, 0},
8257 {0x4C, 0, 0, 0, 0},
8258 {0x4D, 0x38, 0x38, 0, 0},
8259 {0x4E, 0x70, 0x70, 1, 1},
8260 {0x4F, 0x2, 0x2, 0, 0},
8261 {0x50, 0x88, 0x88, 0, 0},
8262 {0x51, 0xc, 0xc, 0, 0},
8263 {0x52, 0, 0, 0, 0},
8264 {0x53, 0x8, 0x8, 0, 0},
8265 {0x54, 0x70, 0x70, 1, 1},
8266 {0x55, 0x2, 0x2, 0, 0},
8267 {0x56, 0xff, 0xff, 1, 1},
8268 {0x57, 0, 0, 0, 0},
8269 {0x58, 0x83, 0x83, 0, 0},
8270 {0x59, 0x77, 0x77, 1, 1},
8271 {0x5A, 0, 0, 0, 0},
8272 {0x5B, 0x2, 0x2, 0, 0},
8273 {0x5C, 0x88, 0x88, 0, 0},
8274 {0x5D, 0, 0, 0, 0},
8275 {0x5E, 0x8, 0x8, 0, 0},
8276 {0x5F, 0x77, 0x77, 1, 1},
8277 {0x60, 0x1, 0x1, 0, 0},
8278 {0x61, 0, 0, 0, 0},
8279 {0x62, 0x7, 0x7, 0, 0},
8280 {0x63, 0, 0, 0, 0},
8281 {0x64, 0x7, 0x7, 0, 0},
8282 {0x65, 0, 0, 0, 0},
8283 {0x66, 0, 0, 0, 0},
8284 {0x67, 0x74, 0x74, 1, 1},
8285 {0x68, 0, 0, 0, 0},
8286 {0x69, 0xa, 0xa, 0, 0},
8287 {0x6A, 0, 0, 0, 0},
8288 {0x6B, 0, 0, 0, 0},
8289 {0x6C, 0, 0, 0, 0},
8290 {0x6D, 0, 0, 0, 0},
8291 {0x6E, 0, 0, 0, 0},
8292 {0x6F, 0, 0, 0, 0},
8293 {0x70, 0, 0, 0, 0},
8294 {0x71, 0x2, 0x2, 0, 0},
8295 {0x72, 0, 0, 0, 0},
8296 {0x73, 0, 0, 0, 0},
8297 {0x74, 0xe, 0xe, 0, 0},
8298 {0x75, 0xe, 0xe, 0, 0},
8299 {0x76, 0xe, 0xe, 0, 0},
8300 {0x77, 0x13, 0x13, 0, 0},
8301 {0x78, 0x13, 0x13, 0, 0},
8302 {0x79, 0x1b, 0x1b, 0, 0},
8303 {0x7A, 0x1b, 0x1b, 0, 0},
8304 {0x7B, 0x55, 0x55, 0, 0},
8305 {0x7C, 0x5b, 0x5b, 0, 0},
8306 {0x7D, 0, 0, 0, 0},
8307 {0x7E, 0, 0, 0, 0},
8308 {0x7F, 0, 0, 0, 0},
8309 {0x80, 0, 0, 0, 0},
8310 {0x81, 0, 0, 0, 0},
8311 {0x82, 0, 0, 0, 0},
8312 {0x83, 0, 0, 0, 0},
8313 {0x84, 0, 0, 0, 0},
8314 {0x85, 0, 0, 0, 0},
8315 {0x86, 0, 0, 0, 0},
8316 {0x87, 0, 0, 0, 0},
8317 {0x88, 0, 0, 0, 0},
8318 {0x89, 0, 0, 0, 0},
8319 {0x8A, 0, 0, 0, 0},
8320 {0x8B, 0, 0, 0, 0},
8321 {0x8C, 0, 0, 0, 0},
8322 {0x8D, 0, 0, 0, 0},
8323 {0x8E, 0, 0, 0, 0},
8324 {0x8F, 0, 0, 0, 0},
8325 {0x90, 0, 0, 0, 0},
8326 {0x91, 0, 0, 0, 0},
8327 {0x92, 0, 0, 0, 0},
8328 {0xFFFF, 0, 0, 0, 0}
8329};
8330
8331static struct radio_regs regs_RX_2056[] = {
8332 {0x02, 0, 0, 0, 0},
8333 {0x03, 0, 0, 0, 0},
8334 {0x04, 0, 0, 0, 0},
8335 {0x05, 0, 0, 0, 0},
8336 {0x06, 0, 0, 0, 0},
8337 {0x07, 0, 0, 0, 0},
8338 {0x08, 0, 0, 0, 0},
8339 {0x09, 0, 0, 0, 0},
8340 {0x0A, 0, 0, 0, 0},
8341 {0x0B, 0, 0, 0, 0},
8342 {0x0C, 0, 0, 0, 0},
8343 {0x0D, 0, 0, 0, 0},
8344 {0x0E, 0, 0, 0, 0},
8345 {0x0F, 0, 0, 0, 0},
8346 {0x10, 0, 0, 0, 0},
8347 {0x11, 0, 0, 0, 0},
8348 {0x12, 0, 0, 0, 0},
8349 {0x13, 0, 0, 0, 0},
8350 {0x14, 0, 0, 0, 0},
8351 {0x15, 0, 0, 0, 0},
8352 {0x16, 0, 0, 0, 0},
8353 {0x17, 0, 0, 0, 0},
8354 {0x18, 0, 0, 0, 0},
8355 {0x19, 0, 0, 0, 0},
8356 {0x1A, 0, 0, 0, 0},
8357 {0x1B, 0, 0, 0, 0},
8358 {0x1C, 0, 0, 0, 0},
8359 {0x1D, 0, 0, 0, 0},
8360 {0x1E, 0, 0, 0, 0},
8361 {0x1F, 0, 0, 0, 0},
8362 {0x20, 0x3, 0x3, 0, 0},
8363 {0x21, 0, 0, 0, 0},
8364 {0x22, 0, 0, 0, 0},
8365 {0x23, 0x90, 0x90, 0, 0},
8366 {0x24, 0x55, 0x55, 0, 0},
8367 {0x25, 0x15, 0x15, 0, 0},
8368 {0x26, 0x5, 0x5, 0, 0},
8369 {0x27, 0x15, 0x15, 0, 0},
8370 {0x28, 0x5, 0x5, 0, 0},
8371 {0x29, 0x20, 0x20, 0, 0},
8372 {0x2A, 0x11, 0x11, 0, 0},
8373 {0x2B, 0x90, 0x90, 0, 0},
8374 {0x2C, 0, 0, 0, 0},
8375 {0x2D, 0x88, 0x88, 0, 0},
8376 {0x2E, 0x32, 0x32, 0, 0},
8377 {0x2F, 0x77, 0x77, 0, 0},
8378 {0x30, 0x17, 0x17, 1, 1},
8379 {0x31, 0xff, 0xff, 1, 1},
8380 {0x32, 0x20, 0x20, 0, 0},
8381 {0x33, 0, 0, 0, 0},
8382 {0x34, 0x88, 0x88, 0, 0},
8383 {0x35, 0x32, 0x32, 0, 0},
8384 {0x36, 0x77, 0x77, 0, 0},
8385 {0x37, 0x17, 0x17, 1, 1},
8386 {0x38, 0xf0, 0xf0, 1, 1},
8387 {0x39, 0x20, 0x20, 0, 0},
8388 {0x3A, 0x8, 0x8, 0, 0},
8389 {0x3B, 0x99, 0x99, 0, 0},
8390 {0x3C, 0, 0, 0, 0},
8391 {0x3D, 0x44, 0x44, 1, 1},
8392 {0x3E, 0, 0, 0, 0},
8393 {0x3F, 0x44, 0x44, 0, 0},
8394 {0x40, 0xf, 0xf, 1, 1},
8395 {0x41, 0x6, 0x6, 0, 0},
8396 {0x42, 0x4, 0x4, 0, 0},
8397 {0x43, 0x50, 0x50, 1, 1},
8398 {0x44, 0x8, 0x8, 0, 0},
8399 {0x45, 0x99, 0x99, 0, 0},
8400 {0x46, 0, 0, 0, 0},
8401 {0x47, 0x11, 0x11, 0, 0},
8402 {0x48, 0, 0, 0, 0},
8403 {0x49, 0x44, 0x44, 0, 0},
8404 {0x4A, 0x7, 0x7, 0, 0},
8405 {0x4B, 0x6, 0x6, 0, 0},
8406 {0x4C, 0x4, 0x4, 0, 0},
8407 {0x4D, 0, 0, 0, 0},
8408 {0x4E, 0, 0, 0, 0},
8409 {0x4F, 0x66, 0x66, 0, 0},
8410 {0x50, 0x66, 0x66, 0, 0},
8411 {0x51, 0x57, 0x57, 0, 0},
8412 {0x52, 0x57, 0x57, 0, 0},
8413 {0x53, 0x44, 0x44, 0, 0},
8414 {0x54, 0, 0, 0, 0},
8415 {0x55, 0, 0, 0, 0},
8416 {0x56, 0x8, 0x8, 0, 0},
8417 {0x57, 0x8, 0x8, 0, 0},
8418 {0x58, 0x7, 0x7, 0, 0},
8419 {0x59, 0x22, 0x22, 0, 0},
8420 {0x5A, 0x22, 0x22, 0, 0},
8421 {0x5B, 0x2, 0x2, 0, 0},
8422 {0x5C, 0x23, 0x23, 0, 0},
8423 {0x5D, 0x7, 0x7, 0, 0},
8424 {0x5E, 0x55, 0x55, 0, 0},
8425 {0x5F, 0x23, 0x23, 0, 0},
8426 {0x60, 0x41, 0x41, 0, 0},
8427 {0x61, 0x1, 0x1, 0, 0},
8428 {0x62, 0xa, 0xa, 0, 0},
8429 {0x63, 0, 0, 0, 0},
8430 {0x64, 0, 0, 0, 0},
8431 {0x65, 0, 0, 0, 0},
8432 {0x66, 0, 0, 0, 0},
8433 {0x67, 0, 0, 0, 0},
8434 {0x68, 0, 0, 0, 0},
8435 {0x69, 0, 0, 0, 0},
8436 {0x6A, 0, 0, 0, 0},
8437 {0x6B, 0xc, 0xc, 0, 0},
8438 {0x6C, 0, 0, 0, 0},
8439 {0x6D, 0, 0, 0, 0},
8440 {0x6E, 0, 0, 0, 0},
8441 {0x6F, 0, 0, 0, 0},
8442 {0x70, 0, 0, 0, 0},
8443 {0x71, 0, 0, 0, 0},
8444 {0x72, 0x22, 0x22, 0, 0},
8445 {0x73, 0x22, 0x22, 0, 0},
8446 {0x74, 0x2, 0x2, 0, 0},
8447 {0x75, 0xa, 0xa, 0, 0},
8448 {0x76, 0x1, 0x1, 0, 0},
8449 {0x77, 0x22, 0x22, 0, 0},
8450 {0x78, 0x30, 0x30, 0, 0},
8451 {0x79, 0, 0, 0, 0},
8452 {0x7A, 0, 0, 0, 0},
8453 {0x7B, 0, 0, 0, 0},
8454 {0x7C, 0, 0, 0, 0},
8455 {0x7D, 0, 0, 0, 0},
8456 {0x7E, 0, 0, 0, 0},
8457 {0x7F, 0, 0, 0, 0},
8458 {0x80, 0, 0, 0, 0},
8459 {0x81, 0, 0, 0, 0},
8460 {0x82, 0, 0, 0, 0},
8461 {0x83, 0, 0, 0, 0},
8462 {0x84, 0, 0, 0, 0},
8463 {0x85, 0, 0, 0, 0},
8464 {0x86, 0, 0, 0, 0},
8465 {0x87, 0, 0, 0, 0},
8466 {0x88, 0, 0, 0, 0},
8467 {0x89, 0, 0, 0, 0},
8468 {0x8A, 0, 0, 0, 0},
8469 {0x8B, 0, 0, 0, 0},
8470 {0x8C, 0, 0, 0, 0},
8471 {0x8D, 0, 0, 0, 0},
8472 {0x8E, 0, 0, 0, 0},
8473 {0x8F, 0, 0, 0, 0},
8474 {0x90, 0, 0, 0, 0},
8475 {0x91, 0, 0, 0, 0},
8476 {0x92, 0, 0, 0, 0},
8477 {0x93, 0, 0, 0, 0},
8478 {0x94, 0, 0, 0, 0},
8479 {0xFFFF, 0, 0, 0, 0}
8480};
8481
8482static struct radio_regs regs_SYN_2056_A1[] = {
8483 {0x02, 0, 0, 0, 0},
8484 {0x03, 0, 0, 0, 0},
8485 {0x04, 0, 0, 0, 0},
8486 {0x05, 0, 0, 0, 0},
8487 {0x06, 0, 0, 0, 0},
8488 {0x07, 0, 0, 0, 0},
8489 {0x08, 0, 0, 0, 0},
8490 {0x09, 0x1, 0x1, 0, 0},
8491 {0x0A, 0, 0, 0, 0},
8492 {0x0B, 0, 0, 0, 0},
8493 {0x0C, 0, 0, 0, 0},
8494 {0x0D, 0, 0, 0, 0},
8495 {0x0E, 0, 0, 0, 0},
8496 {0x0F, 0, 0, 0, 0},
8497 {0x10, 0, 0, 0, 0},
8498 {0x11, 0, 0, 0, 0},
8499 {0x12, 0, 0, 0, 0},
8500 {0x13, 0, 0, 0, 0},
8501 {0x14, 0, 0, 0, 0},
8502 {0x15, 0, 0, 0, 0},
8503 {0x16, 0, 0, 0, 0},
8504 {0x17, 0, 0, 0, 0},
8505 {0x18, 0, 0, 0, 0},
8506 {0x19, 0, 0, 0, 0},
8507 {0x1A, 0, 0, 0, 0},
8508 {0x1B, 0, 0, 0, 0},
8509 {0x1C, 0, 0, 0, 0},
8510 {0x1D, 0, 0, 0, 0},
8511 {0x1E, 0, 0, 0, 0},
8512 {0x1F, 0, 0, 0, 0},
8513 {0x20, 0, 0, 0, 0},
8514 {0x21, 0, 0, 0, 0},
8515 {0x22, 0x60, 0x60, 0, 0},
8516 {0x23, 0x6, 0x6, 0, 0},
8517 {0x24, 0xc, 0xc, 0, 0},
8518 {0x25, 0, 0, 0, 0},
8519 {0x26, 0, 0, 0, 0},
8520 {0x27, 0, 0, 0, 0},
8521 {0x28, 0x1, 0x1, 0, 0},
8522 {0x29, 0, 0, 0, 0},
8523 {0x2A, 0, 0, 0, 0},
8524 {0x2B, 0, 0, 0, 0},
8525 {0x2C, 0, 0, 0, 0},
8526 {0x2D, 0, 0, 0, 0},
8527 {0x2E, 0xd, 0xd, 0, 0},
8528 {0x2F, 0x1f, 0x1f, 0, 0},
8529 {0x30, 0x15, 0x15, 0, 0},
8530 {0x31, 0xf, 0xf, 0, 0},
8531 {0x32, 0, 0, 0, 0},
8532 {0x33, 0, 0, 0, 0},
8533 {0x34, 0, 0, 0, 0},
8534 {0x35, 0, 0, 0, 0},
8535 {0x36, 0, 0, 0, 0},
8536 {0x37, 0, 0, 0, 0},
8537 {0x38, 0, 0, 0, 0},
8538 {0x39, 0, 0, 0, 0},
8539 {0x3A, 0, 0, 0, 0},
8540 {0x3B, 0, 0, 0, 0},
8541 {0x3C, 0x13, 0x13, 0, 0},
8542 {0x3D, 0xf, 0xf, 0, 0},
8543 {0x3E, 0x18, 0x18, 0, 0},
8544 {0x3F, 0, 0, 0, 0},
8545 {0x40, 0, 0, 0, 0},
8546 {0x41, 0x20, 0x20, 0, 0},
8547 {0x42, 0x20, 0x20, 0, 0},
8548 {0x43, 0, 0, 0, 0},
8549 {0x44, 0x77, 0x77, 0, 0},
8550 {0x45, 0x7, 0x7, 0, 0},
8551 {0x46, 0x1, 0x1, 0, 0},
8552 {0x47, 0x4, 0x4, 0, 0},
8553 {0x48, 0xf, 0xf, 0, 0},
8554 {0x49, 0x30, 0x30, 0, 0},
8555 {0x4A, 0x32, 0x32, 0, 0},
8556 {0x4B, 0xd, 0xd, 0, 0},
8557 {0x4C, 0xd, 0xd, 0, 0},
8558 {0x4D, 0x4, 0x4, 0, 0},
8559 {0x4E, 0x6, 0x6, 0, 0},
8560 {0x4F, 0x1, 0x1, 0, 0},
8561 {0x50, 0x1c, 0x1c, 0, 0},
8562 {0x51, 0x2, 0x2, 0, 0},
8563 {0x52, 0x2, 0x2, 0, 0},
8564 {0x53, 0xf7, 0xf7, 1, 1},
8565 {0x54, 0xb4, 0xb4, 0, 0},
8566 {0x55, 0xd2, 0xd2, 0, 0},
8567 {0x56, 0, 0, 0, 0},
8568 {0x57, 0, 0, 0, 0},
8569 {0x58, 0x4, 0x4, 0, 0},
8570 {0x59, 0x96, 0x96, 0, 0},
8571 {0x5A, 0x3e, 0x3e, 0, 0},
8572 {0x5B, 0x3e, 0x3e, 0, 0},
8573 {0x5C, 0x13, 0x13, 0, 0},
8574 {0x5D, 0x2, 0x2, 0, 0},
8575 {0x5E, 0, 0, 0, 0},
8576 {0x5F, 0x7, 0x7, 0, 0},
8577 {0x60, 0x7, 0x7, 1, 1},
8578 {0x61, 0x8, 0x8, 0, 0},
8579 {0x62, 0x3, 0x3, 0, 0},
8580 {0x63, 0, 0, 0, 0},
8581 {0x64, 0, 0, 0, 0},
8582 {0x65, 0, 0, 0, 0},
8583 {0x66, 0, 0, 0, 0},
8584 {0x67, 0, 0, 0, 0},
8585 {0x68, 0x40, 0x40, 0, 0},
8586 {0x69, 0, 0, 0, 0},
8587 {0x6A, 0, 0, 0, 0},
8588 {0x6B, 0, 0, 0, 0},
8589 {0x6C, 0, 0, 0, 0},
8590 {0x6D, 0x1, 0x1, 0, 0},
8591 {0x6E, 0, 0, 0, 0},
8592 {0x6F, 0, 0, 0, 0},
8593 {0x70, 0x60, 0x60, 0, 0},
8594 {0x71, 0x66, 0x66, 0, 0},
8595 {0x72, 0xc, 0xc, 0, 0},
8596 {0x73, 0x66, 0x66, 0, 0},
8597 {0x74, 0x8f, 0x8f, 1, 1},
8598 {0x75, 0, 0, 0, 0},
8599 {0x76, 0xcc, 0xcc, 0, 0},
8600 {0x77, 0x1, 0x1, 0, 0},
8601 {0x78, 0x66, 0x66, 0, 0},
8602 {0x79, 0x66, 0x66, 0, 0},
8603 {0x7A, 0, 0, 0, 0},
8604 {0x7B, 0, 0, 0, 0},
8605 {0x7C, 0, 0, 0, 0},
8606 {0x7D, 0, 0, 0, 0},
8607 {0x7E, 0, 0, 0, 0},
8608 {0x7F, 0, 0, 0, 0},
8609 {0x80, 0, 0, 0, 0},
8610 {0x81, 0, 0, 0, 0},
8611 {0x82, 0, 0, 0, 0},
8612 {0x83, 0, 0, 0, 0},
8613 {0x84, 0, 0, 0, 0},
8614 {0x85, 0xff, 0xff, 0, 0},
8615 {0x86, 0, 0, 0, 0},
8616 {0x87, 0, 0, 0, 0},
8617 {0x88, 0, 0, 0, 0},
8618 {0x89, 0, 0, 0, 0},
8619 {0x8A, 0, 0, 0, 0},
8620 {0x8B, 0, 0, 0, 0},
8621 {0x8C, 0, 0, 0, 0},
8622 {0x8D, 0, 0, 0, 0},
8623 {0x8E, 0, 0, 0, 0},
8624 {0x8F, 0, 0, 0, 0},
8625 {0x90, 0, 0, 0, 0},
8626 {0x91, 0, 0, 0, 0},
8627 {0x92, 0, 0, 0, 0},
8628 {0x93, 0, 0, 0, 0},
8629 {0x94, 0, 0, 0, 0},
8630 {0x95, 0, 0, 0, 0},
8631 {0x96, 0, 0, 0, 0},
8632 {0x97, 0, 0, 0, 0},
8633 {0x98, 0, 0, 0, 0},
8634 {0x99, 0, 0, 0, 0},
8635 {0x9A, 0, 0, 0, 0},
8636 {0x9B, 0, 0, 0, 0},
8637 {0x9C, 0, 0, 0, 0},
8638 {0x9D, 0, 0, 0, 0},
8639 {0x9E, 0, 0, 0, 0},
8640 {0x9F, 0x6, 0x6, 0, 0},
8641 {0xA0, 0x66, 0x66, 0, 0},
8642 {0xA1, 0x66, 0x66, 0, 0},
8643 {0xA2, 0x66, 0x66, 0, 0},
8644 {0xA3, 0x66, 0x66, 0, 0},
8645 {0xA4, 0x66, 0x66, 0, 0},
8646 {0xA5, 0x66, 0x66, 0, 0},
8647 {0xA6, 0x66, 0x66, 0, 0},
8648 {0xA7, 0x66, 0x66, 0, 0},
8649 {0xA8, 0x66, 0x66, 0, 0},
8650 {0xA9, 0x66, 0x66, 0, 0},
8651 {0xAA, 0x66, 0x66, 0, 0},
8652 {0xAB, 0x66, 0x66, 0, 0},
8653 {0xAC, 0x66, 0x66, 0, 0},
8654 {0xAD, 0x66, 0x66, 0, 0},
8655 {0xAE, 0x66, 0x66, 0, 0},
8656 {0xAF, 0x66, 0x66, 0, 0},
8657 {0xB0, 0x66, 0x66, 0, 0},
8658 {0xB1, 0x66, 0x66, 0, 0},
8659 {0xB2, 0x66, 0x66, 0, 0},
8660 {0xB3, 0xa, 0xa, 0, 0},
8661 {0xB4, 0, 0, 0, 0},
8662 {0xB5, 0, 0, 0, 0},
8663 {0xB6, 0, 0, 0, 0},
8664 {0xFFFF, 0, 0, 0, 0}
8665};
8666
8667static struct radio_regs regs_TX_2056_A1[] = {
8668 {0x02, 0, 0, 0, 0},
8669 {0x03, 0, 0, 0, 0},
8670 {0x04, 0, 0, 0, 0},
8671 {0x05, 0, 0, 0, 0},
8672 {0x06, 0, 0, 0, 0},
8673 {0x07, 0, 0, 0, 0},
8674 {0x08, 0, 0, 0, 0},
8675 {0x09, 0, 0, 0, 0},
8676 {0x0A, 0, 0, 0, 0},
8677 {0x0B, 0, 0, 0, 0},
8678 {0x0C, 0, 0, 0, 0},
8679 {0x0D, 0, 0, 0, 0},
8680 {0x0E, 0, 0, 0, 0},
8681 {0x0F, 0, 0, 0, 0},
8682 {0x10, 0, 0, 0, 0},
8683 {0x11, 0, 0, 0, 0},
8684 {0x12, 0, 0, 0, 0},
8685 {0x13, 0, 0, 0, 0},
8686 {0x14, 0, 0, 0, 0},
8687 {0x15, 0, 0, 0, 0},
8688 {0x16, 0, 0, 0, 0},
8689 {0x17, 0, 0, 0, 0},
8690 {0x18, 0, 0, 0, 0},
8691 {0x19, 0, 0, 0, 0},
8692 {0x1A, 0, 0, 0, 0},
8693 {0x1B, 0, 0, 0, 0},
8694 {0x1C, 0, 0, 0, 0},
8695 {0x1D, 0, 0, 0, 0},
8696 {0x1E, 0, 0, 0, 0},
8697 {0x1F, 0, 0, 0, 0},
8698 {0x20, 0, 0, 0, 0},
8699 {0x21, 0x88, 0x88, 0, 0},
8700 {0x22, 0x88, 0x88, 0, 0},
8701 {0x23, 0x88, 0x88, 0, 0},
8702 {0x24, 0x88, 0x88, 0, 0},
8703 {0x25, 0xc, 0xc, 0, 0},
8704 {0x26, 0, 0, 0, 0},
8705 {0x27, 0x3, 0x3, 0, 0},
8706 {0x28, 0, 0, 0, 0},
8707 {0x29, 0x3, 0x3, 0, 0},
8708 {0x2A, 0x37, 0x37, 0, 0},
8709 {0x2B, 0x3, 0x3, 0, 0},
8710 {0x2C, 0, 0, 0, 0},
8711 {0x2D, 0, 0, 0, 0},
8712 {0x2E, 0x1, 0x1, 0, 0},
8713 {0x2F, 0x1, 0x1, 0, 0},
8714 {0x30, 0, 0, 0, 0},
8715 {0x31, 0, 0, 0, 0},
8716 {0x32, 0, 0, 0, 0},
8717 {0x33, 0x11, 0x11, 0, 0},
8718 {0x34, 0x11, 0x11, 0, 0},
8719 {0x35, 0, 0, 0, 0},
8720 {0x36, 0, 0, 0, 0},
8721 {0x37, 0x3, 0x3, 0, 0},
8722 {0x38, 0xf, 0xf, 0, 0},
8723 {0x39, 0, 0, 0, 0},
8724 {0x3A, 0x2d, 0x2d, 0, 0},
8725 {0x3B, 0, 0, 0, 0},
8726 {0x3C, 0x6e, 0x6e, 0, 0},
8727 {0x3D, 0xf0, 0xf0, 1, 1},
8728 {0x3E, 0, 0, 0, 0},
8729 {0x3F, 0, 0, 0, 0},
8730 {0x40, 0, 0, 0, 0},
8731 {0x41, 0x3, 0x3, 0, 0},
8732 {0x42, 0x3, 0x3, 0, 0},
8733 {0x43, 0, 0, 0, 0},
8734 {0x44, 0x1e, 0x1e, 0, 0},
8735 {0x45, 0, 0, 0, 0},
8736 {0x46, 0x6e, 0x6e, 0, 0},
8737 {0x47, 0xf0, 0xf0, 1, 1},
8738 {0x48, 0, 0, 0, 0},
8739 {0x49, 0x2, 0x2, 0, 0},
8740 {0x4A, 0xff, 0xff, 1, 1},
8741 {0x4B, 0xc, 0xc, 0, 0},
8742 {0x4C, 0, 0, 0, 0},
8743 {0x4D, 0x38, 0x38, 0, 0},
8744 {0x4E, 0x70, 0x70, 1, 1},
8745 {0x4F, 0x2, 0x2, 0, 0},
8746 {0x50, 0x88, 0x88, 0, 0},
8747 {0x51, 0xc, 0xc, 0, 0},
8748 {0x52, 0, 0, 0, 0},
8749 {0x53, 0x8, 0x8, 0, 0},
8750 {0x54, 0x70, 0x70, 1, 1},
8751 {0x55, 0x2, 0x2, 0, 0},
8752 {0x56, 0xff, 0xff, 1, 1},
8753 {0x57, 0, 0, 0, 0},
8754 {0x58, 0x83, 0x83, 0, 0},
8755 {0x59, 0x77, 0x77, 1, 1},
8756 {0x5A, 0, 0, 0, 0},
8757 {0x5B, 0x2, 0x2, 0, 0},
8758 {0x5C, 0x88, 0x88, 0, 0},
8759 {0x5D, 0, 0, 0, 0},
8760 {0x5E, 0x8, 0x8, 0, 0},
8761 {0x5F, 0x77, 0x77, 1, 1},
8762 {0x60, 0x1, 0x1, 0, 0},
8763 {0x61, 0, 0, 0, 0},
8764 {0x62, 0x7, 0x7, 0, 0},
8765 {0x63, 0, 0, 0, 0},
8766 {0x64, 0x7, 0x7, 0, 0},
8767 {0x65, 0, 0, 0, 0},
8768 {0x66, 0, 0, 0, 0},
8769 {0x67, 0x72, 0x72, 1, 1},
8770 {0x68, 0, 0, 0, 0},
8771 {0x69, 0xa, 0xa, 0, 0},
8772 {0x6A, 0, 0, 0, 0},
8773 {0x6B, 0, 0, 0, 0},
8774 {0x6C, 0, 0, 0, 0},
8775 {0x6D, 0, 0, 0, 0},
8776 {0x6E, 0, 0, 0, 0},
8777 {0x6F, 0, 0, 0, 0},
8778 {0x70, 0, 0, 0, 0},
8779 {0x71, 0x2, 0x2, 0, 0},
8780 {0x72, 0, 0, 0, 0},
8781 {0x73, 0, 0, 0, 0},
8782 {0x74, 0xe, 0xe, 0, 0},
8783 {0x75, 0xe, 0xe, 0, 0},
8784 {0x76, 0xe, 0xe, 0, 0},
8785 {0x77, 0x13, 0x13, 0, 0},
8786 {0x78, 0x13, 0x13, 0, 0},
8787 {0x79, 0x1b, 0x1b, 0, 0},
8788 {0x7A, 0x1b, 0x1b, 0, 0},
8789 {0x7B, 0x55, 0x55, 0, 0},
8790 {0x7C, 0x5b, 0x5b, 0, 0},
8791 {0x7D, 0, 0, 0, 0},
8792 {0x7E, 0, 0, 0, 0},
8793 {0x7F, 0, 0, 0, 0},
8794 {0x80, 0, 0, 0, 0},
8795 {0x81, 0, 0, 0, 0},
8796 {0x82, 0, 0, 0, 0},
8797 {0x83, 0, 0, 0, 0},
8798 {0x84, 0, 0, 0, 0},
8799 {0x85, 0, 0, 0, 0},
8800 {0x86, 0, 0, 0, 0},
8801 {0x87, 0, 0, 0, 0},
8802 {0x88, 0, 0, 0, 0},
8803 {0x89, 0, 0, 0, 0},
8804 {0x8A, 0, 0, 0, 0},
8805 {0x8B, 0, 0, 0, 0},
8806 {0x8C, 0, 0, 0, 0},
8807 {0x8D, 0, 0, 0, 0},
8808 {0x8E, 0, 0, 0, 0},
8809 {0x8F, 0, 0, 0, 0},
8810 {0x90, 0, 0, 0, 0},
8811 {0x91, 0, 0, 0, 0},
8812 {0x92, 0, 0, 0, 0},
8813 {0xFFFF, 0, 0, 0, 0}
8814};
8815
8816static struct radio_regs regs_RX_2056_A1[] = {
8817 {0x02, 0, 0, 0, 0},
8818 {0x03, 0, 0, 0, 0},
8819 {0x04, 0, 0, 0, 0},
8820 {0x05, 0, 0, 0, 0},
8821 {0x06, 0, 0, 0, 0},
8822 {0x07, 0, 0, 0, 0},
8823 {0x08, 0, 0, 0, 0},
8824 {0x09, 0, 0, 0, 0},
8825 {0x0A, 0, 0, 0, 0},
8826 {0x0B, 0, 0, 0, 0},
8827 {0x0C, 0, 0, 0, 0},
8828 {0x0D, 0, 0, 0, 0},
8829 {0x0E, 0, 0, 0, 0},
8830 {0x0F, 0, 0, 0, 0},
8831 {0x10, 0, 0, 0, 0},
8832 {0x11, 0, 0, 0, 0},
8833 {0x12, 0, 0, 0, 0},
8834 {0x13, 0, 0, 0, 0},
8835 {0x14, 0, 0, 0, 0},
8836 {0x15, 0, 0, 0, 0},
8837 {0x16, 0, 0, 0, 0},
8838 {0x17, 0, 0, 0, 0},
8839 {0x18, 0, 0, 0, 0},
8840 {0x19, 0, 0, 0, 0},
8841 {0x1A, 0, 0, 0, 0},
8842 {0x1B, 0, 0, 0, 0},
8843 {0x1C, 0, 0, 0, 0},
8844 {0x1D, 0, 0, 0, 0},
8845 {0x1E, 0, 0, 0, 0},
8846 {0x1F, 0, 0, 0, 0},
8847 {0x20, 0x3, 0x3, 0, 0},
8848 {0x21, 0, 0, 0, 0},
8849 {0x22, 0, 0, 0, 0},
8850 {0x23, 0x90, 0x90, 0, 0},
8851 {0x24, 0x55, 0x55, 0, 0},
8852 {0x25, 0x15, 0x15, 0, 0},
8853 {0x26, 0x5, 0x5, 0, 0},
8854 {0x27, 0x15, 0x15, 0, 0},
8855 {0x28, 0x5, 0x5, 0, 0},
8856 {0x29, 0x20, 0x20, 0, 0},
8857 {0x2A, 0x11, 0x11, 0, 0},
8858 {0x2B, 0x90, 0x90, 0, 0},
8859 {0x2C, 0, 0, 0, 0},
8860 {0x2D, 0x88, 0x88, 0, 0},
8861 {0x2E, 0x32, 0x32, 0, 0},
8862 {0x2F, 0x77, 0x77, 0, 0},
8863 {0x30, 0x17, 0x17, 1, 1},
8864 {0x31, 0xff, 0xff, 1, 1},
8865 {0x32, 0x20, 0x20, 0, 0},
8866 {0x33, 0, 0, 0, 0},
8867 {0x34, 0x88, 0x88, 0, 0},
8868 {0x35, 0x32, 0x32, 0, 0},
8869 {0x36, 0x77, 0x77, 0, 0},
8870 {0x37, 0x17, 0x17, 1, 1},
8871 {0x38, 0xf0, 0xf0, 1, 1},
8872 {0x39, 0x20, 0x20, 0, 0},
8873 {0x3A, 0x8, 0x8, 0, 0},
8874 {0x3B, 0x55, 0x55, 1, 1},
8875 {0x3C, 0, 0, 0, 0},
8876 {0x3D, 0x44, 0x44, 1, 1},
8877 {0x3E, 0, 0, 0, 0},
8878 {0x3F, 0x44, 0x44, 0, 0},
8879 {0x40, 0xf, 0xf, 1, 1},
8880 {0x41, 0x6, 0x6, 0, 0},
8881 {0x42, 0x4, 0x4, 0, 0},
8882 {0x43, 0x50, 0x50, 1, 1},
8883 {0x44, 0x8, 0x8, 0, 0},
8884 {0x45, 0x55, 0x55, 1, 1},
8885 {0x46, 0, 0, 0, 0},
8886 {0x47, 0x11, 0x11, 0, 0},
8887 {0x48, 0, 0, 0, 0},
8888 {0x49, 0x44, 0x44, 0, 0},
8889 {0x4A, 0x7, 0x7, 0, 0},
8890 {0x4B, 0x6, 0x6, 0, 0},
8891 {0x4C, 0x4, 0x4, 0, 0},
8892 {0x4D, 0, 0, 0, 0},
8893 {0x4E, 0, 0, 0, 0},
8894 {0x4F, 0x26, 0x26, 1, 1},
8895 {0x50, 0x26, 0x26, 1, 1},
8896 {0x51, 0xf, 0xf, 1, 1},
8897 {0x52, 0xf, 0xf, 1, 1},
8898 {0x53, 0x44, 0x44, 0, 0},
8899 {0x54, 0, 0, 0, 0},
8900 {0x55, 0, 0, 0, 0},
8901 {0x56, 0x8, 0x8, 0, 0},
8902 {0x57, 0x8, 0x8, 0, 0},
8903 {0x58, 0x7, 0x7, 0, 0},
8904 {0x59, 0x22, 0x22, 0, 0},
8905 {0x5A, 0x22, 0x22, 0, 0},
8906 {0x5B, 0x2, 0x2, 0, 0},
8907 {0x5C, 0x2f, 0x2f, 1, 1},
8908 {0x5D, 0x7, 0x7, 0, 0},
8909 {0x5E, 0x55, 0x55, 0, 0},
8910 {0x5F, 0x23, 0x23, 0, 0},
8911 {0x60, 0x41, 0x41, 0, 0},
8912 {0x61, 0x1, 0x1, 0, 0},
8913 {0x62, 0xa, 0xa, 0, 0},
8914 {0x63, 0, 0, 0, 0},
8915 {0x64, 0, 0, 0, 0},
8916 {0x65, 0, 0, 0, 0},
8917 {0x66, 0, 0, 0, 0},
8918 {0x67, 0, 0, 0, 0},
8919 {0x68, 0, 0, 0, 0},
8920 {0x69, 0, 0, 0, 0},
8921 {0x6A, 0, 0, 0, 0},
8922 {0x6B, 0xc, 0xc, 0, 0},
8923 {0x6C, 0, 0, 0, 0},
8924 {0x6D, 0, 0, 0, 0},
8925 {0x6E, 0, 0, 0, 0},
8926 {0x6F, 0, 0, 0, 0},
8927 {0x70, 0, 0, 0, 0},
8928 {0x71, 0, 0, 0, 0},
8929 {0x72, 0x22, 0x22, 0, 0},
8930 {0x73, 0x22, 0x22, 0, 0},
8931 {0x74, 0, 0, 1, 1},
8932 {0x75, 0xa, 0xa, 0, 0},
8933 {0x76, 0x1, 0x1, 0, 0},
8934 {0x77, 0x22, 0x22, 0, 0},
8935 {0x78, 0x30, 0x30, 0, 0},
8936 {0x79, 0, 0, 0, 0},
8937 {0x7A, 0, 0, 0, 0},
8938 {0x7B, 0, 0, 0, 0},
8939 {0x7C, 0, 0, 0, 0},
8940 {0x7D, 0, 0, 0, 0},
8941 {0x7E, 0, 0, 0, 0},
8942 {0x7F, 0, 0, 0, 0},
8943 {0x80, 0, 0, 0, 0},
8944 {0x81, 0, 0, 0, 0},
8945 {0x82, 0, 0, 0, 0},
8946 {0x83, 0, 0, 0, 0},
8947 {0x84, 0, 0, 0, 0},
8948 {0x85, 0, 0, 0, 0},
8949 {0x86, 0, 0, 0, 0},
8950 {0x87, 0, 0, 0, 0},
8951 {0x88, 0, 0, 0, 0},
8952 {0x89, 0, 0, 0, 0},
8953 {0x8A, 0, 0, 0, 0},
8954 {0x8B, 0, 0, 0, 0},
8955 {0x8C, 0, 0, 0, 0},
8956 {0x8D, 0, 0, 0, 0},
8957 {0x8E, 0, 0, 0, 0},
8958 {0x8F, 0, 0, 0, 0},
8959 {0x90, 0, 0, 0, 0},
8960 {0x91, 0, 0, 0, 0},
8961 {0x92, 0, 0, 0, 0},
8962 {0x93, 0, 0, 0, 0},
8963 {0x94, 0, 0, 0, 0},
8964 {0xFFFF, 0, 0, 0, 0}
8965};
8966
8967static struct radio_regs regs_SYN_2056_rev5[] = {
8968 {0x02, 0, 0, 0, 0},
8969 {0x03, 0, 0, 0, 0},
8970 {0x04, 0, 0, 0, 0},
8971 {0x05, 0, 0, 0, 0},
8972 {0x06, 0, 0, 0, 0},
8973 {0x07, 0, 0, 0, 0},
8974 {0x08, 0, 0, 0, 0},
8975 {0x09, 0x1, 0x1, 0, 0},
8976 {0x0A, 0, 0, 0, 0},
8977 {0x0B, 0, 0, 0, 0},
8978 {0x0C, 0, 0, 0, 0},
8979 {0x0D, 0, 0, 0, 0},
8980 {0x0E, 0, 0, 0, 0},
8981 {0x0F, 0, 0, 0, 0},
8982 {0x10, 0, 0, 0, 0},
8983 {0x11, 0, 0, 0, 0},
8984 {0x12, 0, 0, 0, 0},
8985 {0x13, 0, 0, 0, 0},
8986 {0x14, 0, 0, 0, 0},
8987 {0x15, 0, 0, 0, 0},
8988 {0x16, 0, 0, 0, 0},
8989 {0x17, 0, 0, 0, 0},
8990 {0x18, 0, 0, 0, 0},
8991 {0x19, 0, 0, 0, 0},
8992 {0x1A, 0, 0, 0, 0},
8993 {0x1B, 0, 0, 0, 0},
8994 {0x1C, 0, 0, 0, 0},
8995 {0x1D, 0, 0, 0, 0},
8996 {0x1E, 0, 0, 0, 0},
8997 {0x1F, 0, 0, 0, 0},
8998 {0x20, 0, 0, 0, 0},
8999 {0x21, 0, 0, 0, 0},
9000 {0x22, 0x60, 0x60, 0, 0},
9001 {0x23, 0x6, 0x6, 0, 0},
9002 {0x24, 0xc, 0xc, 0, 0},
9003 {0x25, 0, 0, 0, 0},
9004 {0x26, 0, 0, 0, 0},
9005 {0x27, 0, 0, 0, 0},
9006 {0x28, 0x1, 0x1, 0, 0},
9007 {0x29, 0, 0, 0, 0},
9008 {0x2A, 0, 0, 0, 0},
9009 {0x2B, 0, 0, 0, 0},
9010 {0x2C, 0, 0, 0, 0},
9011 {0x2D, 0, 0, 0, 0},
9012 {0x2E, 0, 0, 0, 0},
9013 {0x2F, 0x1f, 0x1f, 0, 0},
9014 {0x30, 0x15, 0x15, 0, 0},
9015 {0x31, 0xf, 0xf, 0, 0},
9016 {0x32, 0, 0, 0, 0},
9017 {0x33, 0, 0, 0, 0},
9018 {0x34, 0, 0, 0, 0},
9019 {0x35, 0, 0, 0, 0},
9020 {0x36, 0, 0, 0, 0},
9021 {0x37, 0, 0, 0, 0},
9022 {0x38, 0, 0, 0, 0},
9023 {0x39, 0, 0, 0, 0},
9024 {0x3A, 0, 0, 0, 0},
9025 {0x3B, 0, 0, 0, 0},
9026 {0x3C, 0x13, 0x13, 0, 0},
9027 {0x3D, 0xf, 0xf, 0, 0},
9028 {0x3E, 0x18, 0x18, 0, 0},
9029 {0x3F, 0, 0, 0, 0},
9030 {0x40, 0, 0, 0, 0},
9031 {0x41, 0x20, 0x20, 0, 0},
9032 {0x42, 0x20, 0x20, 0, 0},
9033 {0x43, 0, 0, 0, 0},
9034 {0x44, 0x77, 0x77, 0, 0},
9035 {0x45, 0x7, 0x7, 0, 0},
9036 {0x46, 0x1, 0x1, 0, 0},
9037 {0x47, 0x4, 0x4, 0, 0},
9038 {0x48, 0xf, 0xf, 0, 0},
9039 {0x49, 0x30, 0x30, 0, 0},
9040 {0x4A, 0x32, 0x32, 0, 0},
9041 {0x4B, 0xd, 0xd, 0, 0},
9042 {0x4C, 0xd, 0xd, 0, 0},
9043 {0x4D, 0x4, 0x4, 0, 0},
9044 {0x4E, 0x6, 0x6, 0, 0},
9045 {0x4F, 0x1, 0x1, 0, 0},
9046 {0x50, 0x1c, 0x1c, 0, 0},
9047 {0x51, 0x2, 0x2, 0, 0},
9048 {0x52, 0x2, 0x2, 0, 0},
9049 {0x53, 0xf7, 0xf7, 1, 1},
9050 {0x54, 0xb4, 0xb4, 0, 0},
9051 {0x55, 0xd2, 0xd2, 0, 0},
9052 {0x56, 0, 0, 0, 0},
9053 {0x57, 0, 0, 0, 0},
9054 {0x58, 0x4, 0x4, 0, 0},
9055 {0x59, 0x96, 0x96, 0, 0},
9056 {0x5A, 0x3e, 0x3e, 0, 0},
9057 {0x5B, 0x3e, 0x3e, 0, 0},
9058 {0x5C, 0x13, 0x13, 0, 0},
9059 {0x5D, 0x2, 0x2, 0, 0},
9060 {0x5E, 0, 0, 0, 0},
9061 {0x5F, 0x7, 0x7, 0, 0},
9062 {0x60, 0x7, 0x7, 1, 1},
9063 {0x61, 0x8, 0x8, 0, 0},
9064 {0x62, 0x3, 0x3, 0, 0},
9065 {0x63, 0, 0, 0, 0},
9066 {0x64, 0, 0, 0, 0},
9067 {0x65, 0, 0, 0, 0},
9068 {0x66, 0, 0, 0, 0},
9069 {0x67, 0, 0, 0, 0},
9070 {0x68, 0x40, 0x40, 0, 0},
9071 {0x69, 0, 0, 0, 0},
9072 {0x6A, 0, 0, 0, 0},
9073 {0x6B, 0, 0, 0, 0},
9074 {0x6C, 0, 0, 0, 0},
9075 {0x6D, 0x1, 0x1, 0, 0},
9076 {0x6E, 0, 0, 0, 0},
9077 {0x6F, 0, 0, 0, 0},
9078 {0x70, 0x60, 0x60, 0, 0},
9079 {0x71, 0x66, 0x66, 0, 0},
9080 {0x72, 0xc, 0xc, 0, 0},
9081 {0x73, 0x66, 0x66, 0, 0},
9082 {0x74, 0x8f, 0x8f, 1, 1},
9083 {0x75, 0, 0, 0, 0},
9084 {0x76, 0xcc, 0xcc, 0, 0},
9085 {0x77, 0x1, 0x1, 0, 0},
9086 {0x78, 0x66, 0x66, 0, 0},
9087 {0x79, 0x66, 0x66, 0, 0},
9088 {0x7A, 0, 0, 0, 0},
9089 {0x7B, 0, 0, 0, 0},
9090 {0x7C, 0, 0, 0, 0},
9091 {0x7D, 0, 0, 0, 0},
9092 {0x7E, 0, 0, 0, 0},
9093 {0x7F, 0, 0, 0, 0},
9094 {0x80, 0, 0, 0, 0},
9095 {0x81, 0, 0, 0, 0},
9096 {0x82, 0, 0, 0, 0},
9097 {0x83, 0, 0, 0, 0},
9098 {0x84, 0, 0, 0, 0},
9099 {0x85, 0xff, 0xff, 0, 0},
9100 {0x86, 0, 0, 0, 0},
9101 {0x87, 0, 0, 0, 0},
9102 {0x88, 0, 0, 0, 0},
9103 {0x89, 0, 0, 0, 0},
9104 {0x8A, 0, 0, 0, 0},
9105 {0x8B, 0, 0, 0, 0},
9106 {0x8C, 0, 0, 0, 0},
9107 {0x8D, 0, 0, 0, 0},
9108 {0x8E, 0, 0, 0, 0},
9109 {0x8F, 0, 0, 0, 0},
9110 {0x90, 0, 0, 0, 0},
9111 {0x91, 0, 0, 0, 0},
9112 {0x92, 0, 0, 0, 0},
9113 {0x93, 0, 0, 0, 0},
9114 {0x94, 0, 0, 0, 0},
9115 {0x95, 0, 0, 0, 0},
9116 {0x96, 0, 0, 0, 0},
9117 {0x97, 0, 0, 0, 0},
9118 {0x98, 0, 0, 0, 0},
9119 {0x99, 0, 0, 0, 0},
9120 {0x9A, 0, 0, 0, 0},
9121 {0x9B, 0, 0, 0, 0},
9122 {0x9C, 0, 0, 0, 0},
9123 {0x9D, 0, 0, 0, 0},
9124 {0x9E, 0, 0, 0, 0},
9125 {0x9F, 0x6, 0x6, 0, 0},
9126 {0xA0, 0x66, 0x66, 0, 0},
9127 {0xA1, 0x66, 0x66, 0, 0},
9128 {0xA2, 0x66, 0x66, 0, 0},
9129 {0xA3, 0x66, 0x66, 0, 0},
9130 {0xA4, 0x66, 0x66, 0, 0},
9131 {0xA5, 0x66, 0x66, 0, 0},
9132 {0xA6, 0x66, 0x66, 0, 0},
9133 {0xA7, 0x66, 0x66, 0, 0},
9134 {0xA8, 0x66, 0x66, 0, 0},
9135 {0xA9, 0x66, 0x66, 0, 0},
9136 {0xAA, 0x66, 0x66, 0, 0},
9137 {0xAB, 0x66, 0x66, 0, 0},
9138 {0xAC, 0x66, 0x66, 0, 0},
9139 {0xAD, 0x66, 0x66, 0, 0},
9140 {0xAE, 0x66, 0x66, 0, 0},
9141 {0xAF, 0x66, 0x66, 0, 0},
9142 {0xB0, 0x66, 0x66, 0, 0},
9143 {0xB1, 0x66, 0x66, 0, 0},
9144 {0xB2, 0x66, 0x66, 0, 0},
9145 {0xB3, 0xa, 0xa, 0, 0},
9146 {0xB4, 0, 0, 0, 0},
9147 {0xB5, 0, 0, 0, 0},
9148 {0xB6, 0, 0, 0, 0},
9149 {0xFFFF, 0, 0, 0, 0}
9150};
9151
9152static struct radio_regs regs_TX_2056_rev5[] = {
9153 {0x02, 0, 0, 0, 0},
9154 {0x03, 0, 0, 0, 0},
9155 {0x04, 0, 0, 0, 0},
9156 {0x05, 0, 0, 0, 0},
9157 {0x06, 0, 0, 0, 0},
9158 {0x07, 0, 0, 0, 0},
9159 {0x08, 0, 0, 0, 0},
9160 {0x09, 0, 0, 0, 0},
9161 {0x0A, 0, 0, 0, 0},
9162 {0x0B, 0, 0, 0, 0},
9163 {0x0C, 0, 0, 0, 0},
9164 {0x0D, 0, 0, 0, 0},
9165 {0x0E, 0, 0, 0, 0},
9166 {0x0F, 0, 0, 0, 0},
9167 {0x10, 0, 0, 0, 0},
9168 {0x11, 0, 0, 0, 0},
9169 {0x12, 0, 0, 0, 0},
9170 {0x13, 0, 0, 0, 0},
9171 {0x14, 0, 0, 0, 0},
9172 {0x15, 0, 0, 0, 0},
9173 {0x16, 0, 0, 0, 0},
9174 {0x17, 0, 0, 0, 0},
9175 {0x18, 0, 0, 0, 0},
9176 {0x19, 0, 0, 0, 0},
9177 {0x1A, 0, 0, 0, 0},
9178 {0x1B, 0, 0, 0, 0},
9179 {0x1C, 0, 0, 0, 0},
9180 {0x1D, 0, 0, 0, 0},
9181 {0x1E, 0, 0, 0, 0},
9182 {0x1F, 0, 0, 0, 0},
9183 {0x20, 0, 0, 0, 0},
9184 {0x21, 0x88, 0x88, 0, 0},
9185 {0x22, 0x88, 0x88, 0, 0},
9186 {0x23, 0x88, 0x88, 0, 0},
9187 {0x24, 0x88, 0x88, 0, 0},
9188 {0x25, 0xc, 0xc, 0, 0},
9189 {0x26, 0, 0, 0, 0},
9190 {0x27, 0x3, 0x3, 0, 0},
9191 {0x28, 0, 0, 0, 0},
9192 {0x29, 0x3, 0x3, 0, 0},
9193 {0x2A, 0x37, 0x37, 0, 0},
9194 {0x2B, 0x3, 0x3, 0, 0},
9195 {0x2C, 0, 0, 0, 0},
9196 {0x2D, 0, 0, 0, 0},
9197 {0x2E, 0x1, 0x1, 0, 0},
9198 {0x2F, 0x1, 0x1, 0, 0},
9199 {0x30, 0, 0, 0, 0},
9200 {0x31, 0, 0, 0, 0},
9201 {0x32, 0, 0, 0, 0},
9202 {0x33, 0x11, 0x11, 0, 0},
9203 {0x34, 0x11, 0x11, 0, 0},
9204 {0x35, 0, 0, 0, 0},
9205 {0x36, 0, 0, 0, 0},
9206 {0x37, 0x3, 0x3, 0, 0},
9207 {0x38, 0xf, 0xf, 0, 0},
9208 {0x39, 0, 0, 0, 0},
9209 {0x3A, 0x2d, 0x2d, 0, 0},
9210 {0x3B, 0, 0, 0, 0},
9211 {0x3C, 0x6e, 0x6e, 0, 0},
9212 {0x3D, 0xf0, 0xf0, 1, 1},
9213 {0x3E, 0, 0, 0, 0},
9214 {0x3F, 0, 0, 0, 0},
9215 {0x40, 0, 0, 0, 0},
9216 {0x41, 0x3, 0x3, 0, 0},
9217 {0x42, 0x3, 0x3, 0, 0},
9218 {0x43, 0, 0, 0, 0},
9219 {0x44, 0x1e, 0x1e, 0, 0},
9220 {0x45, 0, 0, 0, 0},
9221 {0x46, 0x6e, 0x6e, 0, 0},
9222 {0x47, 0xf0, 0xf0, 1, 1},
9223 {0x48, 0, 0, 0, 0},
9224 {0x49, 0x2, 0x2, 0, 0},
9225 {0x4A, 0xff, 0xff, 1, 1},
9226 {0x4B, 0xc, 0xc, 0, 0},
9227 {0x4C, 0, 0, 0, 0},
9228 {0x4D, 0x38, 0x38, 0, 0},
9229 {0x4E, 0x70, 0x70, 1, 1},
9230 {0x4F, 0x2, 0x2, 0, 0},
9231 {0x50, 0x88, 0x88, 0, 0},
9232 {0x51, 0xc, 0xc, 0, 0},
9233 {0x52, 0, 0, 0, 0},
9234 {0x53, 0x8, 0x8, 0, 0},
9235 {0x54, 0x70, 0x70, 1, 1},
9236 {0x55, 0x2, 0x2, 0, 0},
9237 {0x56, 0xff, 0xff, 1, 1},
9238 {0x57, 0, 0, 0, 0},
9239 {0x58, 0x83, 0x83, 0, 0},
9240 {0x59, 0x77, 0x77, 1, 1},
9241 {0x5A, 0, 0, 0, 0},
9242 {0x5B, 0x2, 0x2, 0, 0},
9243 {0x5C, 0x88, 0x88, 0, 0},
9244 {0x5D, 0, 0, 0, 0},
9245 {0x5E, 0x8, 0x8, 0, 0},
9246 {0x5F, 0x77, 0x77, 1, 1},
9247 {0x60, 0x1, 0x1, 0, 0},
9248 {0x61, 0, 0, 0, 0},
9249 {0x62, 0x7, 0x7, 0, 0},
9250 {0x63, 0, 0, 0, 0},
9251 {0x64, 0x7, 0x7, 0, 0},
9252 {0x65, 0, 0, 0, 0},
9253 {0x66, 0, 0, 0, 0},
9254 {0x67, 0, 0, 1, 1},
9255 {0x68, 0, 0, 0, 0},
9256 {0x69, 0xa, 0xa, 0, 0},
9257 {0x6A, 0, 0, 0, 0},
9258 {0x6B, 0, 0, 0, 0},
9259 {0x6C, 0, 0, 0, 0},
9260 {0x6D, 0, 0, 0, 0},
9261 {0x6E, 0, 0, 0, 0},
9262 {0x6F, 0, 0, 0, 0},
9263 {0x70, 0, 0, 0, 0},
9264 {0x71, 0x2, 0x2, 0, 0},
9265 {0x72, 0, 0, 0, 0},
9266 {0x73, 0, 0, 0, 0},
9267 {0x74, 0xe, 0xe, 0, 0},
9268 {0x75, 0xe, 0xe, 0, 0},
9269 {0x76, 0xe, 0xe, 0, 0},
9270 {0x77, 0x13, 0x13, 0, 0},
9271 {0x78, 0x13, 0x13, 0, 0},
9272 {0x79, 0x1b, 0x1b, 0, 0},
9273 {0x7A, 0x1b, 0x1b, 0, 0},
9274 {0x7B, 0x55, 0x55, 0, 0},
9275 {0x7C, 0x5b, 0x5b, 0, 0},
9276 {0x7D, 0, 0, 0, 0},
9277 {0x7E, 0, 0, 0, 0},
9278 {0x7F, 0, 0, 0, 0},
9279 {0x80, 0, 0, 0, 0},
9280 {0x81, 0, 0, 0, 0},
9281 {0x82, 0, 0, 0, 0},
9282 {0x83, 0, 0, 0, 0},
9283 {0x84, 0, 0, 0, 0},
9284 {0x85, 0, 0, 0, 0},
9285 {0x86, 0, 0, 0, 0},
9286 {0x87, 0, 0, 0, 0},
9287 {0x88, 0, 0, 0, 0},
9288 {0x89, 0, 0, 0, 0},
9289 {0x8A, 0, 0, 0, 0},
9290 {0x8B, 0, 0, 0, 0},
9291 {0x8C, 0, 0, 0, 0},
9292 {0x8D, 0, 0, 0, 0},
9293 {0x8E, 0, 0, 0, 0},
9294 {0x8F, 0, 0, 0, 0},
9295 {0x90, 0, 0, 0, 0},
9296 {0x91, 0, 0, 0, 0},
9297 {0x92, 0, 0, 0, 0},
9298 {0x93, 0x70, 0x70, 0, 0},
9299 {0x94, 0x70, 0x70, 0, 0},
9300 {0x95, 0x71, 0x71, 1, 1},
9301 {0x96, 0x71, 0x71, 1, 1},
9302 {0x97, 0x72, 0x72, 1, 1},
9303 {0x98, 0x73, 0x73, 1, 1},
9304 {0x99, 0x74, 0x74, 1, 1},
9305 {0x9A, 0x75, 0x75, 1, 1},
9306 {0xFFFF, 0, 0, 0, 0}
9307};
9308
9309static struct radio_regs regs_RX_2056_rev5[] = {
9310 {0x02, 0, 0, 0, 0},
9311 {0x03, 0, 0, 0, 0},
9312 {0x04, 0, 0, 0, 0},
9313 {0x05, 0, 0, 0, 0},
9314 {0x06, 0, 0, 0, 0},
9315 {0x07, 0, 0, 0, 0},
9316 {0x08, 0, 0, 0, 0},
9317 {0x09, 0, 0, 0, 0},
9318 {0x0A, 0, 0, 0, 0},
9319 {0x0B, 0, 0, 0, 0},
9320 {0x0C, 0, 0, 0, 0},
9321 {0x0D, 0, 0, 0, 0},
9322 {0x0E, 0, 0, 0, 0},
9323 {0x0F, 0, 0, 0, 0},
9324 {0x10, 0, 0, 0, 0},
9325 {0x11, 0, 0, 0, 0},
9326 {0x12, 0, 0, 0, 0},
9327 {0x13, 0, 0, 0, 0},
9328 {0x14, 0, 0, 0, 0},
9329 {0x15, 0, 0, 0, 0},
9330 {0x16, 0, 0, 0, 0},
9331 {0x17, 0, 0, 0, 0},
9332 {0x18, 0, 0, 0, 0},
9333 {0x19, 0, 0, 0, 0},
9334 {0x1A, 0, 0, 0, 0},
9335 {0x1B, 0, 0, 0, 0},
9336 {0x1C, 0, 0, 0, 0},
9337 {0x1D, 0, 0, 0, 0},
9338 {0x1E, 0, 0, 0, 0},
9339 {0x1F, 0, 0, 0, 0},
9340 {0x20, 0x3, 0x3, 0, 0},
9341 {0x21, 0, 0, 0, 0},
9342 {0x22, 0, 0, 0, 0},
9343 {0x23, 0x90, 0x90, 0, 0},
9344 {0x24, 0x55, 0x55, 0, 0},
9345 {0x25, 0x15, 0x15, 0, 0},
9346 {0x26, 0x5, 0x5, 0, 0},
9347 {0x27, 0x15, 0x15, 0, 0},
9348 {0x28, 0x5, 0x5, 0, 0},
9349 {0x29, 0x20, 0x20, 0, 0},
9350 {0x2A, 0x11, 0x11, 0, 0},
9351 {0x2B, 0x90, 0x90, 0, 0},
9352 {0x2C, 0, 0, 0, 0},
9353 {0x2D, 0x88, 0x88, 0, 0},
9354 {0x2E, 0x32, 0x32, 0, 0},
9355 {0x2F, 0x77, 0x77, 0, 0},
9356 {0x30, 0x17, 0x17, 1, 1},
9357 {0x31, 0xff, 0xff, 1, 1},
9358 {0x32, 0x20, 0x20, 0, 0},
9359 {0x33, 0, 0, 0, 0},
9360 {0x34, 0x88, 0x88, 0, 0},
9361 {0x35, 0x32, 0x32, 0, 0},
9362 {0x36, 0x77, 0x77, 0, 0},
9363 {0x37, 0x17, 0x17, 1, 1},
9364 {0x38, 0xf0, 0xf0, 1, 1},
9365 {0x39, 0x20, 0x20, 0, 0},
9366 {0x3A, 0x8, 0x8, 0, 0},
9367 {0x3B, 0x55, 0x55, 1, 1},
9368 {0x3C, 0, 0, 0, 0},
9369 {0x3D, 0x88, 0x88, 1, 1},
9370 {0x3E, 0, 0, 0, 0},
9371 {0x3F, 0, 0, 1, 1},
9372 {0x40, 0x7, 0x7, 1, 1},
9373 {0x41, 0x6, 0x6, 0, 0},
9374 {0x42, 0x4, 0x4, 0, 0},
9375 {0x43, 0, 0, 0, 0},
9376 {0x44, 0x8, 0x8, 0, 0},
9377 {0x45, 0x55, 0x55, 1, 1},
9378 {0x46, 0, 0, 0, 0},
9379 {0x47, 0x11, 0x11, 0, 0},
9380 {0x48, 0, 0, 0, 0},
9381 {0x49, 0, 0, 1, 1},
9382 {0x4A, 0x7, 0x7, 0, 0},
9383 {0x4B, 0x6, 0x6, 0, 0},
9384 {0x4C, 0x4, 0x4, 0, 0},
9385 {0x4D, 0, 0, 0, 0},
9386 {0x4E, 0, 0, 0, 0},
9387 {0x4F, 0x26, 0x26, 1, 1},
9388 {0x50, 0x26, 0x26, 1, 1},
9389 {0x51, 0xf, 0xf, 1, 1},
9390 {0x52, 0xf, 0xf, 1, 1},
9391 {0x53, 0x44, 0x44, 0, 0},
9392 {0x54, 0, 0, 0, 0},
9393 {0x55, 0, 0, 0, 0},
9394 {0x56, 0x8, 0x8, 0, 0},
9395 {0x57, 0x8, 0x8, 0, 0},
9396 {0x58, 0x7, 0x7, 0, 0},
9397 {0x59, 0x22, 0x22, 0, 0},
9398 {0x5A, 0x22, 0x22, 0, 0},
9399 {0x5B, 0x2, 0x2, 0, 0},
9400 {0x5C, 0x4, 0x4, 1, 1},
9401 {0x5D, 0x7, 0x7, 0, 0},
9402 {0x5E, 0x55, 0x55, 0, 0},
9403 {0x5F, 0x23, 0x23, 0, 0},
9404 {0x60, 0x41, 0x41, 0, 0},
9405 {0x61, 0x1, 0x1, 0, 0},
9406 {0x62, 0xa, 0xa, 0, 0},
9407 {0x63, 0, 0, 0, 0},
9408 {0x64, 0, 0, 0, 0},
9409 {0x65, 0, 0, 0, 0},
9410 {0x66, 0, 0, 0, 0},
9411 {0x67, 0, 0, 0, 0},
9412 {0x68, 0, 0, 0, 0},
9413 {0x69, 0, 0, 0, 0},
9414 {0x6A, 0, 0, 0, 0},
9415 {0x6B, 0xc, 0xc, 0, 0},
9416 {0x6C, 0, 0, 0, 0},
9417 {0x6D, 0, 0, 0, 0},
9418 {0x6E, 0, 0, 0, 0},
9419 {0x6F, 0, 0, 0, 0},
9420 {0x70, 0, 0, 0, 0},
9421 {0x71, 0, 0, 0, 0},
9422 {0x72, 0x22, 0x22, 0, 0},
9423 {0x73, 0x22, 0x22, 0, 0},
9424 {0x74, 0, 0, 1, 1},
9425 {0x75, 0xa, 0xa, 0, 0},
9426 {0x76, 0x1, 0x1, 0, 0},
9427 {0x77, 0x22, 0x22, 0, 0},
9428 {0x78, 0x30, 0x30, 0, 0},
9429 {0x79, 0, 0, 0, 0},
9430 {0x7A, 0, 0, 0, 0},
9431 {0x7B, 0, 0, 0, 0},
9432 {0x7C, 0, 0, 0, 0},
9433 {0x7D, 0, 0, 0, 0},
9434 {0x7E, 0, 0, 0, 0},
9435 {0x7F, 0, 0, 0, 0},
9436 {0x80, 0, 0, 0, 0},
9437 {0x81, 0, 0, 0, 0},
9438 {0x82, 0, 0, 0, 0},
9439 {0x83, 0, 0, 0, 0},
9440 {0x84, 0, 0, 0, 0},
9441 {0x85, 0, 0, 0, 0},
9442 {0x86, 0, 0, 0, 0},
9443 {0x87, 0, 0, 0, 0},
9444 {0x88, 0, 0, 0, 0},
9445 {0x89, 0, 0, 0, 0},
9446 {0x8A, 0, 0, 0, 0},
9447 {0x8B, 0, 0, 0, 0},
9448 {0x8C, 0, 0, 0, 0},
9449 {0x8D, 0, 0, 0, 0},
9450 {0x8E, 0, 0, 0, 0},
9451 {0x8F, 0, 0, 0, 0},
9452 {0x90, 0, 0, 0, 0},
9453 {0x91, 0, 0, 0, 0},
9454 {0x92, 0, 0, 0, 0},
9455 {0x93, 0, 0, 0, 0},
9456 {0x94, 0, 0, 0, 0},
9457 {0xFFFF, 0, 0, 0, 0}
9458};
9459
9460static struct radio_regs regs_SYN_2056_rev6[] = {
9461 {0x02, 0, 0, 0, 0},
9462 {0x03, 0, 0, 0, 0},
9463 {0x04, 0, 0, 0, 0},
9464 {0x05, 0, 0, 0, 0},
9465 {0x06, 0, 0, 0, 0},
9466 {0x07, 0, 0, 0, 0},
9467 {0x08, 0, 0, 0, 0},
9468 {0x09, 0x1, 0x1, 0, 0},
9469 {0x0A, 0, 0, 0, 0},
9470 {0x0B, 0, 0, 0, 0},
9471 {0x0C, 0, 0, 0, 0},
9472 {0x0D, 0, 0, 0, 0},
9473 {0x0E, 0, 0, 0, 0},
9474 {0x0F, 0, 0, 0, 0},
9475 {0x10, 0, 0, 0, 0},
9476 {0x11, 0, 0, 0, 0},
9477 {0x12, 0, 0, 0, 0},
9478 {0x13, 0, 0, 0, 0},
9479 {0x14, 0, 0, 0, 0},
9480 {0x15, 0, 0, 0, 0},
9481 {0x16, 0, 0, 0, 0},
9482 {0x17, 0, 0, 0, 0},
9483 {0x18, 0, 0, 0, 0},
9484 {0x19, 0, 0, 0, 0},
9485 {0x1A, 0, 0, 0, 0},
9486 {0x1B, 0, 0, 0, 0},
9487 {0x1C, 0, 0, 0, 0},
9488 {0x1D, 0, 0, 0, 0},
9489 {0x1E, 0, 0, 0, 0},
9490 {0x1F, 0, 0, 0, 0},
9491 {0x20, 0, 0, 0, 0},
9492 {0x21, 0, 0, 0, 0},
9493 {0x22, 0x60, 0x60, 0, 0},
9494 {0x23, 0x6, 0x6, 0, 0},
9495 {0x24, 0xc, 0xc, 0, 0},
9496 {0x25, 0, 0, 0, 0},
9497 {0x26, 0, 0, 0, 0},
9498 {0x27, 0, 0, 0, 0},
9499 {0x28, 0x1, 0x1, 0, 0},
9500 {0x29, 0, 0, 0, 0},
9501 {0x2A, 0, 0, 0, 0},
9502 {0x2B, 0, 0, 0, 0},
9503 {0x2C, 0, 0, 0, 0},
9504 {0x2D, 0, 0, 0, 0},
9505 {0x2E, 0, 0, 0, 0},
9506 {0x2F, 0x1f, 0x1f, 0, 0},
9507 {0x30, 0x15, 0x15, 0, 0},
9508 {0x31, 0xf, 0xf, 0, 0},
9509 {0x32, 0, 0, 0, 0},
9510 {0x33, 0, 0, 0, 0},
9511 {0x34, 0, 0, 0, 0},
9512 {0x35, 0, 0, 0, 0},
9513 {0x36, 0, 0, 0, 0},
9514 {0x37, 0, 0, 0, 0},
9515 {0x38, 0, 0, 0, 0},
9516 {0x39, 0, 0, 0, 0},
9517 {0x3A, 0, 0, 0, 0},
9518 {0x3B, 0, 0, 0, 0},
9519 {0x3C, 0x13, 0x13, 0, 0},
9520 {0x3D, 0xf, 0xf, 0, 0},
9521 {0x3E, 0x18, 0x18, 0, 0},
9522 {0x3F, 0, 0, 0, 0},
9523 {0x40, 0, 0, 0, 0},
9524 {0x41, 0x20, 0x20, 0, 0},
9525 {0x42, 0x20, 0x20, 0, 0},
9526 {0x43, 0, 0, 0, 0},
9527 {0x44, 0x77, 0x77, 0, 0},
9528 {0x45, 0x7, 0x7, 0, 0},
9529 {0x46, 0x1, 0x1, 0, 0},
9530 {0x47, 0x4, 0x4, 0, 0},
9531 {0x48, 0xf, 0xf, 0, 0},
9532 {0x49, 0x30, 0x30, 0, 0},
9533 {0x4A, 0x32, 0x32, 0, 0},
9534 {0x4B, 0xd, 0xd, 0, 0},
9535 {0x4C, 0xd, 0xd, 0, 0},
9536 {0x4D, 0x4, 0x4, 0, 0},
9537 {0x4E, 0x6, 0x6, 0, 0},
9538 {0x4F, 0x1, 0x1, 0, 0},
9539 {0x50, 0x1c, 0x1c, 0, 0},
9540 {0x51, 0x2, 0x2, 0, 0},
9541 {0x52, 0x2, 0x2, 0, 0},
9542 {0x53, 0xf7, 0xf7, 1, 1},
9543 {0x54, 0xb4, 0xb4, 0, 0},
9544 {0x55, 0xd2, 0xd2, 0, 0},
9545 {0x56, 0, 0, 0, 0},
9546 {0x57, 0, 0, 0, 0},
9547 {0x58, 0x4, 0x4, 0, 0},
9548 {0x59, 0x96, 0x96, 0, 0},
9549 {0x5A, 0x3e, 0x3e, 0, 0},
9550 {0x5B, 0x3e, 0x3e, 0, 0},
9551 {0x5C, 0x13, 0x13, 0, 0},
9552 {0x5D, 0x2, 0x2, 0, 0},
9553 {0x5E, 0, 0, 0, 0},
9554 {0x5F, 0x7, 0x7, 0, 0},
9555 {0x60, 0x7, 0x7, 1, 1},
9556 {0x61, 0x8, 0x8, 0, 0},
9557 {0x62, 0x3, 0x3, 0, 0},
9558 {0x63, 0, 0, 0, 0},
9559 {0x64, 0, 0, 0, 0},
9560 {0x65, 0, 0, 0, 0},
9561 {0x66, 0, 0, 0, 0},
9562 {0x67, 0, 0, 0, 0},
9563 {0x68, 0x40, 0x40, 0, 0},
9564 {0x69, 0, 0, 0, 0},
9565 {0x6A, 0, 0, 0, 0},
9566 {0x6B, 0, 0, 0, 0},
9567 {0x6C, 0, 0, 0, 0},
9568 {0x6D, 0x1, 0x1, 0, 0},
9569 {0x6E, 0, 0, 0, 0},
9570 {0x6F, 0, 0, 0, 0},
9571 {0x70, 0x60, 0x60, 0, 0},
9572 {0x71, 0x66, 0x66, 0, 0},
9573 {0x72, 0xc, 0xc, 0, 0},
9574 {0x73, 0x66, 0x66, 0, 0},
9575 {0x74, 0x8f, 0x8f, 1, 1},
9576 {0x75, 0, 0, 0, 0},
9577 {0x76, 0xcc, 0xcc, 0, 0},
9578 {0x77, 0x1, 0x1, 0, 0},
9579 {0x78, 0x66, 0x66, 0, 0},
9580 {0x79, 0x66, 0x66, 0, 0},
9581 {0x7A, 0, 0, 0, 0},
9582 {0x7B, 0, 0, 0, 0},
9583 {0x7C, 0, 0, 0, 0},
9584 {0x7D, 0, 0, 0, 0},
9585 {0x7E, 0, 0, 0, 0},
9586 {0x7F, 0, 0, 0, 0},
9587 {0x80, 0, 0, 0, 0},
9588 {0x81, 0, 0, 0, 0},
9589 {0x82, 0, 0, 0, 0},
9590 {0x83, 0, 0, 0, 0},
9591 {0x84, 0, 0, 0, 0},
9592 {0x85, 0xff, 0xff, 0, 0},
9593 {0x86, 0, 0, 0, 0},
9594 {0x87, 0, 0, 0, 0},
9595 {0x88, 0, 0, 0, 0},
9596 {0x89, 0, 0, 0, 0},
9597 {0x8A, 0, 0, 0, 0},
9598 {0x8B, 0, 0, 0, 0},
9599 {0x8C, 0, 0, 0, 0},
9600 {0x8D, 0, 0, 0, 0},
9601 {0x8E, 0, 0, 0, 0},
9602 {0x8F, 0, 0, 0, 0},
9603 {0x90, 0, 0, 0, 0},
9604 {0x91, 0, 0, 0, 0},
9605 {0x92, 0, 0, 0, 0},
9606 {0x93, 0, 0, 0, 0},
9607 {0x94, 0, 0, 0, 0},
9608 {0x95, 0, 0, 0, 0},
9609 {0x96, 0, 0, 0, 0},
9610 {0x97, 0, 0, 0, 0},
9611 {0x98, 0, 0, 0, 0},
9612 {0x99, 0, 0, 0, 0},
9613 {0x9A, 0, 0, 0, 0},
9614 {0x9B, 0, 0, 0, 0},
9615 {0x9C, 0, 0, 0, 0},
9616 {0x9D, 0, 0, 0, 0},
9617 {0x9E, 0, 0, 0, 0},
9618 {0x9F, 0x6, 0x6, 0, 0},
9619 {0xA0, 0x66, 0x66, 0, 0},
9620 {0xA1, 0x66, 0x66, 0, 0},
9621 {0xA2, 0x66, 0x66, 0, 0},
9622 {0xA3, 0x66, 0x66, 0, 0},
9623 {0xA4, 0x66, 0x66, 0, 0},
9624 {0xA5, 0x66, 0x66, 0, 0},
9625 {0xA6, 0x66, 0x66, 0, 0},
9626 {0xA7, 0x66, 0x66, 0, 0},
9627 {0xA8, 0x66, 0x66, 0, 0},
9628 {0xA9, 0x66, 0x66, 0, 0},
9629 {0xAA, 0x66, 0x66, 0, 0},
9630 {0xAB, 0x66, 0x66, 0, 0},
9631 {0xAC, 0x66, 0x66, 0, 0},
9632 {0xAD, 0x66, 0x66, 0, 0},
9633 {0xAE, 0x66, 0x66, 0, 0},
9634 {0xAF, 0x66, 0x66, 0, 0},
9635 {0xB0, 0x66, 0x66, 0, 0},
9636 {0xB1, 0x66, 0x66, 0, 0},
9637 {0xB2, 0x66, 0x66, 0, 0},
9638 {0xB3, 0xa, 0xa, 0, 0},
9639 {0xB4, 0, 0, 0, 0},
9640 {0xB5, 0, 0, 0, 0},
9641 {0xB6, 0, 0, 0, 0},
9642 {0xFFFF, 0, 0, 0, 0}
9643};
9644
9645static struct radio_regs regs_TX_2056_rev6[] = {
9646 {0x02, 0, 0, 0, 0},
9647 {0x03, 0, 0, 0, 0},
9648 {0x04, 0, 0, 0, 0},
9649 {0x05, 0, 0, 0, 0},
9650 {0x06, 0, 0, 0, 0},
9651 {0x07, 0, 0, 0, 0},
9652 {0x08, 0, 0, 0, 0},
9653 {0x09, 0, 0, 0, 0},
9654 {0x0A, 0, 0, 0, 0},
9655 {0x0B, 0, 0, 0, 0},
9656 {0x0C, 0, 0, 0, 0},
9657 {0x0D, 0, 0, 0, 0},
9658 {0x0E, 0, 0, 0, 0},
9659 {0x0F, 0, 0, 0, 0},
9660 {0x10, 0, 0, 0, 0},
9661 {0x11, 0, 0, 0, 0},
9662 {0x12, 0, 0, 0, 0},
9663 {0x13, 0, 0, 0, 0},
9664 {0x14, 0, 0, 0, 0},
9665 {0x15, 0, 0, 0, 0},
9666 {0x16, 0, 0, 0, 0},
9667 {0x17, 0, 0, 0, 0},
9668 {0x18, 0, 0, 0, 0},
9669 {0x19, 0, 0, 0, 0},
9670 {0x1A, 0, 0, 0, 0},
9671 {0x1B, 0, 0, 0, 0},
9672 {0x1C, 0, 0, 0, 0},
9673 {0x1D, 0, 0, 0, 0},
9674 {0x1E, 0, 0, 0, 0},
9675 {0x1F, 0, 0, 0, 0},
9676 {0x20, 0, 0, 0, 0},
9677 {0x21, 0x88, 0x88, 0, 0},
9678 {0x22, 0x88, 0x88, 0, 0},
9679 {0x23, 0x88, 0x88, 0, 0},
9680 {0x24, 0x88, 0x88, 0, 0},
9681 {0x25, 0xc, 0xc, 0, 0},
9682 {0x26, 0, 0, 0, 0},
9683 {0x27, 0x3, 0x3, 0, 0},
9684 {0x28, 0, 0, 0, 0},
9685 {0x29, 0x3, 0x3, 0, 0},
9686 {0x2A, 0x37, 0x37, 0, 0},
9687 {0x2B, 0x3, 0x3, 0, 0},
9688 {0x2C, 0, 0, 0, 0},
9689 {0x2D, 0, 0, 0, 0},
9690 {0x2E, 0x1, 0x1, 0, 0},
9691 {0x2F, 0x1, 0x1, 0, 0},
9692 {0x30, 0, 0, 0, 0},
9693 {0x31, 0, 0, 0, 0},
9694 {0x32, 0, 0, 0, 0},
9695 {0x33, 0x11, 0x11, 0, 0},
9696 {0x34, 0xee, 0xee, 1, 1},
9697 {0x35, 0, 0, 0, 0},
9698 {0x36, 0, 0, 0, 0},
9699 {0x37, 0x3, 0x3, 0, 0},
9700 {0x38, 0x50, 0x50, 1, 1},
9701 {0x39, 0, 0, 0, 0},
9702 {0x3A, 0x50, 0x50, 1, 1},
9703 {0x3B, 0, 0, 0, 0},
9704 {0x3C, 0x6e, 0x6e, 0, 0},
9705 {0x3D, 0xf0, 0xf0, 1, 1},
9706 {0x3E, 0, 0, 0, 0},
9707 {0x3F, 0, 0, 0, 0},
9708 {0x40, 0, 0, 0, 0},
9709 {0x41, 0x3, 0x3, 0, 0},
9710 {0x42, 0x3, 0x3, 0, 0},
9711 {0x43, 0, 0, 0, 0},
9712 {0x44, 0x1e, 0x1e, 0, 0},
9713 {0x45, 0, 0, 0, 0},
9714 {0x46, 0x6e, 0x6e, 0, 0},
9715 {0x47, 0xf0, 0xf0, 1, 1},
9716 {0x48, 0, 0, 0, 0},
9717 {0x49, 0x2, 0x2, 0, 0},
9718 {0x4A, 0xff, 0xff, 1, 1},
9719 {0x4B, 0xc, 0xc, 0, 0},
9720 {0x4C, 0, 0, 0, 0},
9721 {0x4D, 0x38, 0x38, 0, 0},
9722 {0x4E, 0x70, 0x70, 1, 1},
9723 {0x4F, 0x2, 0x2, 0, 0},
9724 {0x50, 0x88, 0x88, 0, 0},
9725 {0x51, 0xc, 0xc, 0, 0},
9726 {0x52, 0, 0, 0, 0},
9727 {0x53, 0x8, 0x8, 0, 0},
9728 {0x54, 0x70, 0x70, 1, 1},
9729 {0x55, 0x2, 0x2, 0, 0},
9730 {0x56, 0xff, 0xff, 1, 1},
9731 {0x57, 0, 0, 0, 0},
9732 {0x58, 0x83, 0x83, 0, 0},
9733 {0x59, 0x77, 0x77, 1, 1},
9734 {0x5A, 0, 0, 0, 0},
9735 {0x5B, 0x2, 0x2, 0, 0},
9736 {0x5C, 0x88, 0x88, 0, 0},
9737 {0x5D, 0, 0, 0, 0},
9738 {0x5E, 0x8, 0x8, 0, 0},
9739 {0x5F, 0x77, 0x77, 1, 1},
9740 {0x60, 0x1, 0x1, 0, 0},
9741 {0x61, 0, 0, 0, 0},
9742 {0x62, 0x7, 0x7, 0, 0},
9743 {0x63, 0, 0, 0, 0},
9744 {0x64, 0x7, 0x7, 0, 0},
9745 {0x65, 0, 0, 0, 0},
9746 {0x66, 0, 0, 0, 0},
9747 {0x67, 0, 0, 1, 1},
9748 {0x68, 0, 0, 0, 0},
9749 {0x69, 0xa, 0xa, 0, 0},
9750 {0x6A, 0, 0, 0, 0},
9751 {0x6B, 0, 0, 0, 0},
9752 {0x6C, 0, 0, 0, 0},
9753 {0x6D, 0, 0, 0, 0},
9754 {0x6E, 0, 0, 0, 0},
9755 {0x6F, 0, 0, 0, 0},
9756 {0x70, 0, 0, 0, 0},
9757 {0x71, 0x2, 0x2, 0, 0},
9758 {0x72, 0, 0, 0, 0},
9759 {0x73, 0, 0, 0, 0},
9760 {0x74, 0xe, 0xe, 0, 0},
9761 {0x75, 0xe, 0xe, 0, 0},
9762 {0x76, 0xe, 0xe, 0, 0},
9763 {0x77, 0x13, 0x13, 0, 0},
9764 {0x78, 0x13, 0x13, 0, 0},
9765 {0x79, 0x1b, 0x1b, 0, 0},
9766 {0x7A, 0x1b, 0x1b, 0, 0},
9767 {0x7B, 0x55, 0x55, 0, 0},
9768 {0x7C, 0x5b, 0x5b, 0, 0},
9769 {0x7D, 0x30, 0x30, 1, 1},
9770 {0x7E, 0, 0, 0, 0},
9771 {0x7F, 0, 0, 0, 0},
9772 {0x80, 0, 0, 0, 0},
9773 {0x81, 0, 0, 0, 0},
9774 {0x82, 0, 0, 0, 0},
9775 {0x83, 0, 0, 0, 0},
9776 {0x84, 0, 0, 0, 0},
9777 {0x85, 0, 0, 0, 0},
9778 {0x86, 0, 0, 0, 0},
9779 {0x87, 0, 0, 0, 0},
9780 {0x88, 0, 0, 0, 0},
9781 {0x89, 0, 0, 0, 0},
9782 {0x8A, 0, 0, 0, 0},
9783 {0x8B, 0, 0, 0, 0},
9784 {0x8C, 0, 0, 0, 0},
9785 {0x8D, 0, 0, 0, 0},
9786 {0x8E, 0, 0, 0, 0},
9787 {0x8F, 0, 0, 0, 0},
9788 {0x90, 0, 0, 0, 0},
9789 {0x91, 0, 0, 0, 0},
9790 {0x92, 0, 0, 0, 0},
9791 {0x93, 0x70, 0x70, 0, 0},
9792 {0x94, 0x70, 0x70, 0, 0},
9793 {0x95, 0x70, 0x70, 0, 0},
9794 {0x96, 0x70, 0x70, 0, 0},
9795 {0x97, 0x70, 0x70, 0, 0},
9796 {0x98, 0x70, 0x70, 0, 0},
9797 {0x99, 0x70, 0x70, 0, 0},
9798 {0x9A, 0x70, 0x70, 0, 0},
9799 {0xFFFF, 0, 0, 0, 0}
9800};
9801
9802static struct radio_regs regs_RX_2056_rev6[] = {
9803 {0x02, 0, 0, 0, 0},
9804 {0x03, 0, 0, 0, 0},
9805 {0x04, 0, 0, 0, 0},
9806 {0x05, 0, 0, 0, 0},
9807 {0x06, 0, 0, 0, 0},
9808 {0x07, 0, 0, 0, 0},
9809 {0x08, 0, 0, 0, 0},
9810 {0x09, 0, 0, 0, 0},
9811 {0x0A, 0, 0, 0, 0},
9812 {0x0B, 0, 0, 0, 0},
9813 {0x0C, 0, 0, 0, 0},
9814 {0x0D, 0, 0, 0, 0},
9815 {0x0E, 0, 0, 0, 0},
9816 {0x0F, 0, 0, 0, 0},
9817 {0x10, 0, 0, 0, 0},
9818 {0x11, 0, 0, 0, 0},
9819 {0x12, 0, 0, 0, 0},
9820 {0x13, 0, 0, 0, 0},
9821 {0x14, 0, 0, 0, 0},
9822 {0x15, 0, 0, 0, 0},
9823 {0x16, 0, 0, 0, 0},
9824 {0x17, 0, 0, 0, 0},
9825 {0x18, 0, 0, 0, 0},
9826 {0x19, 0, 0, 0, 0},
9827 {0x1A, 0, 0, 0, 0},
9828 {0x1B, 0, 0, 0, 0},
9829 {0x1C, 0, 0, 0, 0},
9830 {0x1D, 0, 0, 0, 0},
9831 {0x1E, 0, 0, 0, 0},
9832 {0x1F, 0, 0, 0, 0},
9833 {0x20, 0x3, 0x3, 0, 0},
9834 {0x21, 0, 0, 0, 0},
9835 {0x22, 0, 0, 0, 0},
9836 {0x23, 0x90, 0x90, 0, 0},
9837 {0x24, 0x55, 0x55, 0, 0},
9838 {0x25, 0x15, 0x15, 0, 0},
9839 {0x26, 0x5, 0x5, 0, 0},
9840 {0x27, 0x15, 0x15, 0, 0},
9841 {0x28, 0x5, 0x5, 0, 0},
9842 {0x29, 0x20, 0x20, 0, 0},
9843 {0x2A, 0x11, 0x11, 0, 0},
9844 {0x2B, 0x90, 0x90, 0, 0},
9845 {0x2C, 0, 0, 0, 0},
9846 {0x2D, 0x88, 0x88, 0, 0},
9847 {0x2E, 0x32, 0x32, 0, 0},
9848 {0x2F, 0x77, 0x77, 0, 0},
9849 {0x30, 0x17, 0x17, 1, 1},
9850 {0x31, 0xff, 0xff, 1, 1},
9851 {0x32, 0x20, 0x20, 0, 0},
9852 {0x33, 0, 0, 0, 0},
9853 {0x34, 0x88, 0x88, 0, 0},
9854 {0x35, 0x32, 0x32, 0, 0},
9855 {0x36, 0x77, 0x77, 0, 0},
9856 {0x37, 0x17, 0x17, 1, 1},
9857 {0x38, 0xf0, 0xf0, 1, 1},
9858 {0x39, 0x20, 0x20, 0, 0},
9859 {0x3A, 0x8, 0x8, 0, 0},
9860 {0x3B, 0x55, 0x55, 1, 1},
9861 {0x3C, 0, 0, 0, 0},
9862 {0x3D, 0x88, 0x88, 1, 1},
9863 {0x3E, 0, 0, 0, 0},
9864 {0x3F, 0x44, 0x44, 0, 0},
9865 {0x40, 0x7, 0x7, 1, 1},
9866 {0x41, 0x6, 0x6, 0, 0},
9867 {0x42, 0x4, 0x4, 0, 0},
9868 {0x43, 0, 0, 0, 0},
9869 {0x44, 0x8, 0x8, 0, 0},
9870 {0x45, 0x55, 0x55, 1, 1},
9871 {0x46, 0, 0, 0, 0},
9872 {0x47, 0x11, 0x11, 0, 0},
9873 {0x48, 0, 0, 0, 0},
9874 {0x49, 0x44, 0x44, 0, 0},
9875 {0x4A, 0x7, 0x7, 0, 0},
9876 {0x4B, 0x6, 0x6, 0, 0},
9877 {0x4C, 0x4, 0x4, 0, 0},
9878 {0x4D, 0, 0, 0, 0},
9879 {0x4E, 0, 0, 0, 0},
9880 {0x4F, 0x26, 0x26, 1, 1},
9881 {0x50, 0x26, 0x26, 1, 1},
9882 {0x51, 0xf, 0xf, 1, 1},
9883 {0x52, 0xf, 0xf, 1, 1},
9884 {0x53, 0x44, 0x44, 0, 0},
9885 {0x54, 0, 0, 0, 0},
9886 {0x55, 0, 0, 0, 0},
9887 {0x56, 0x8, 0x8, 0, 0},
9888 {0x57, 0x8, 0x8, 0, 0},
9889 {0x58, 0x7, 0x7, 0, 0},
9890 {0x59, 0x22, 0x22, 0, 0},
9891 {0x5A, 0x22, 0x22, 0, 0},
9892 {0x5B, 0x2, 0x2, 0, 0},
9893 {0x5C, 0x4, 0x4, 1, 1},
9894 {0x5D, 0x7, 0x7, 0, 0},
9895 {0x5E, 0x55, 0x55, 0, 0},
9896 {0x5F, 0x23, 0x23, 0, 0},
9897 {0x60, 0x41, 0x41, 0, 0},
9898 {0x61, 0x1, 0x1, 0, 0},
9899 {0x62, 0xa, 0xa, 0, 0},
9900 {0x63, 0, 0, 0, 0},
9901 {0x64, 0, 0, 0, 0},
9902 {0x65, 0, 0, 0, 0},
9903 {0x66, 0, 0, 0, 0},
9904 {0x67, 0, 0, 0, 0},
9905 {0x68, 0, 0, 0, 0},
9906 {0x69, 0, 0, 0, 0},
9907 {0x6A, 0, 0, 0, 0},
9908 {0x6B, 0xc, 0xc, 0, 0},
9909 {0x6C, 0, 0, 0, 0},
9910 {0x6D, 0, 0, 0, 0},
9911 {0x6E, 0, 0, 0, 0},
9912 {0x6F, 0, 0, 0, 0},
9913 {0x70, 0, 0, 0, 0},
9914 {0x71, 0, 0, 0, 0},
9915 {0x72, 0x22, 0x22, 0, 0},
9916 {0x73, 0x22, 0x22, 0, 0},
9917 {0x74, 0, 0, 1, 1},
9918 {0x75, 0xa, 0xa, 0, 0},
9919 {0x76, 0x1, 0x1, 0, 0},
9920 {0x77, 0x22, 0x22, 0, 0},
9921 {0x78, 0x30, 0x30, 0, 0},
9922 {0x79, 0, 0, 0, 0},
9923 {0x7A, 0, 0, 0, 0},
9924 {0x7B, 0, 0, 0, 0},
9925 {0x7C, 0, 0, 0, 0},
9926 {0x7D, 0x5, 0x5, 1, 1},
9927 {0x7E, 0, 0, 0, 0},
9928 {0x7F, 0, 0, 0, 0},
9929 {0x80, 0, 0, 0, 0},
9930 {0x81, 0, 0, 0, 0},
9931 {0x82, 0, 0, 0, 0},
9932 {0x83, 0, 0, 0, 0},
9933 {0x84, 0, 0, 0, 0},
9934 {0x85, 0, 0, 0, 0},
9935 {0x86, 0, 0, 0, 0},
9936 {0x87, 0, 0, 0, 0},
9937 {0x88, 0, 0, 0, 0},
9938 {0x89, 0, 0, 0, 0},
9939 {0x8A, 0, 0, 0, 0},
9940 {0x8B, 0, 0, 0, 0},
9941 {0x8C, 0, 0, 0, 0},
9942 {0x8D, 0, 0, 0, 0},
9943 {0x8E, 0, 0, 0, 0},
9944 {0x8F, 0, 0, 0, 0},
9945 {0x90, 0, 0, 0, 0},
9946 {0x91, 0, 0, 0, 0},
9947 {0x92, 0, 0, 0, 0},
9948 {0x93, 0, 0, 0, 0},
9949 {0x94, 0, 0, 0, 0},
9950 {0xFFFF, 0, 0, 0, 0}
9951};
9952
9953static struct radio_regs regs_SYN_2056_rev7[] = {
9954 {0x02, 0, 0, 0, 0},
9955 {0x03, 0, 0, 0, 0},
9956 {0x04, 0, 0, 0, 0},
9957 {0x05, 0, 0, 0, 0},
9958 {0x06, 0, 0, 0, 0},
9959 {0x07, 0, 0, 0, 0},
9960 {0x08, 0, 0, 0, 0},
9961 {0x09, 0x1, 0x1, 0, 0},
9962 {0x0A, 0, 0, 0, 0},
9963 {0x0B, 0, 0, 0, 0},
9964 {0x0C, 0, 0, 0, 0},
9965 {0x0D, 0, 0, 0, 0},
9966 {0x0E, 0, 0, 0, 0},
9967 {0x0F, 0, 0, 0, 0},
9968 {0x10, 0, 0, 0, 0},
9969 {0x11, 0, 0, 0, 0},
9970 {0x12, 0, 0, 0, 0},
9971 {0x13, 0, 0, 0, 0},
9972 {0x14, 0, 0, 0, 0},
9973 {0x15, 0, 0, 0, 0},
9974 {0x16, 0, 0, 0, 0},
9975 {0x17, 0, 0, 0, 0},
9976 {0x18, 0, 0, 0, 0},
9977 {0x19, 0, 0, 0, 0},
9978 {0x1A, 0, 0, 0, 0},
9979 {0x1B, 0, 0, 0, 0},
9980 {0x1C, 0, 0, 0, 0},
9981 {0x1D, 0, 0, 0, 0},
9982 {0x1E, 0, 0, 0, 0},
9983 {0x1F, 0, 0, 0, 0},
9984 {0x20, 0, 0, 0, 0},
9985 {0x21, 0, 0, 0, 0},
9986 {0x22, 0x60, 0x60, 0, 0},
9987 {0x23, 0x6, 0x6, 0, 0},
9988 {0x24, 0xc, 0xc, 0, 0},
9989 {0x25, 0, 0, 0, 0},
9990 {0x26, 0, 0, 0, 0},
9991 {0x27, 0, 0, 0, 0},
9992 {0x28, 0x1, 0x1, 0, 0},
9993 {0x29, 0, 0, 0, 0},
9994 {0x2A, 0, 0, 0, 0},
9995 {0x2B, 0, 0, 0, 0},
9996 {0x2C, 0, 0, 0, 0},
9997 {0x2D, 0, 0, 0, 0},
9998 {0x2E, 0, 0, 0, 0},
9999 {0x2F, 0x1f, 0x1f, 0, 0},
10000 {0x30, 0x15, 0x15, 0, 0},
10001 {0x31, 0xf, 0xf, 0, 0},
10002 {0x32, 0, 0, 0, 0},
10003 {0x33, 0, 0, 0, 0},
10004 {0x34, 0, 0, 0, 0},
10005 {0x35, 0, 0, 0, 0},
10006 {0x36, 0, 0, 0, 0},
10007 {0x37, 0, 0, 0, 0},
10008 {0x38, 0, 0, 0, 0},
10009 {0x39, 0, 0, 0, 0},
10010 {0x3A, 0, 0, 0, 0},
10011 {0x3B, 0, 0, 0, 0},
10012 {0x3C, 0x13, 0x13, 0, 0},
10013 {0x3D, 0xf, 0xf, 0, 0},
10014 {0x3E, 0x18, 0x18, 0, 0},
10015 {0x3F, 0, 0, 0, 0},
10016 {0x40, 0, 0, 0, 0},
10017 {0x41, 0x20, 0x20, 0, 0},
10018 {0x42, 0x20, 0x20, 0, 0},
10019 {0x43, 0, 0, 0, 0},
10020 {0x44, 0x77, 0x77, 0, 0},
10021 {0x45, 0x7, 0x7, 0, 0},
10022 {0x46, 0x1, 0x1, 0, 0},
10023 {0x47, 0x4, 0x4, 0, 0},
10024 {0x48, 0xf, 0xf, 0, 0},
10025 {0x49, 0x30, 0x30, 0, 0},
10026 {0x4A, 0x32, 0x32, 0, 0},
10027 {0x4B, 0xd, 0xd, 0, 0},
10028 {0x4C, 0xd, 0xd, 0, 0},
10029 {0x4D, 0x4, 0x4, 0, 0},
10030 {0x4E, 0x6, 0x6, 0, 0},
10031 {0x4F, 0x1, 0x1, 0, 0},
10032 {0x50, 0x1c, 0x1c, 0, 0},
10033 {0x51, 0x2, 0x2, 0, 0},
10034 {0x52, 0x2, 0x2, 0, 0},
10035 {0x53, 0xf7, 0xf7, 1, 1},
10036 {0x54, 0xb4, 0xb4, 0, 0},
10037 {0x55, 0xd2, 0xd2, 0, 0},
10038 {0x56, 0, 0, 0, 0},
10039 {0x57, 0, 0, 0, 0},
10040 {0x58, 0x4, 0x4, 0, 0},
10041 {0x59, 0x96, 0x96, 0, 0},
10042 {0x5A, 0x3e, 0x3e, 0, 0},
10043 {0x5B, 0x3e, 0x3e, 0, 0},
10044 {0x5C, 0x13, 0x13, 0, 0},
10045 {0x5D, 0x2, 0x2, 0, 0},
10046 {0x5E, 0, 0, 0, 0},
10047 {0x5F, 0x7, 0x7, 0, 0},
10048 {0x60, 0x7, 0x7, 1, 1},
10049 {0x61, 0x8, 0x8, 0, 0},
10050 {0x62, 0x3, 0x3, 0, 0},
10051 {0x63, 0, 0, 0, 0},
10052 {0x64, 0, 0, 0, 0},
10053 {0x65, 0, 0, 0, 0},
10054 {0x66, 0, 0, 0, 0},
10055 {0x67, 0, 0, 0, 0},
10056 {0x68, 0x40, 0x40, 0, 0},
10057 {0x69, 0, 0, 0, 0},
10058 {0x6A, 0, 0, 0, 0},
10059 {0x6B, 0, 0, 0, 0},
10060 {0x6C, 0, 0, 0, 0},
10061 {0x6D, 0x1, 0x1, 0, 0},
10062 {0x6E, 0, 0, 0, 0},
10063 {0x6F, 0, 0, 0, 0},
10064 {0x70, 0x60, 0x60, 0, 0},
10065 {0x71, 0x66, 0x66, 0, 0},
10066 {0x72, 0xc, 0xc, 0, 0},
10067 {0x73, 0x66, 0x66, 0, 0},
10068 {0x74, 0x8f, 0x8f, 1, 1},
10069 {0x75, 0, 0, 0, 0},
10070 {0x76, 0xcc, 0xcc, 0, 0},
10071 {0x77, 0x1, 0x1, 0, 0},
10072 {0x78, 0x66, 0x66, 0, 0},
10073 {0x79, 0x66, 0x66, 0, 0},
10074 {0x7A, 0, 0, 0, 0},
10075 {0x7B, 0, 0, 0, 0},
10076 {0x7C, 0, 0, 0, 0},
10077 {0x7D, 0, 0, 0, 0},
10078 {0x7E, 0, 0, 0, 0},
10079 {0x7F, 0, 0, 0, 0},
10080 {0x80, 0, 0, 0, 0},
10081 {0x81, 0, 0, 0, 0},
10082 {0x82, 0, 0, 0, 0},
10083 {0x83, 0, 0, 0, 0},
10084 {0x84, 0, 0, 0, 0},
10085 {0x85, 0xff, 0xff, 0, 0},
10086 {0x86, 0, 0, 0, 0},
10087 {0x87, 0, 0, 0, 0},
10088 {0x88, 0, 0, 0, 0},
10089 {0x89, 0, 0, 0, 0},
10090 {0x8A, 0, 0, 0, 0},
10091 {0x8B, 0, 0, 0, 0},
10092 {0x8C, 0, 0, 0, 0},
10093 {0x8D, 0, 0, 0, 0},
10094 {0x8E, 0, 0, 0, 0},
10095 {0x8F, 0, 0, 0, 0},
10096 {0x90, 0, 0, 0, 0},
10097 {0x91, 0, 0, 0, 0},
10098 {0x92, 0, 0, 0, 0},
10099 {0x93, 0, 0, 0, 0},
10100 {0x94, 0, 0, 0, 0},
10101 {0x95, 0, 0, 0, 0},
10102 {0x96, 0, 0, 0, 0},
10103 {0x97, 0, 0, 0, 0},
10104 {0x98, 0, 0, 0, 0},
10105 {0x99, 0, 0, 0, 0},
10106 {0x9A, 0, 0, 0, 0},
10107 {0x9B, 0, 0, 0, 0},
10108 {0x9C, 0, 0, 0, 0},
10109 {0x9D, 0, 0, 0, 0},
10110 {0x9E, 0, 0, 0, 0},
10111 {0x9F, 0x6, 0x6, 0, 0},
10112 {0xA0, 0x66, 0x66, 0, 0},
10113 {0xA1, 0x66, 0x66, 0, 0},
10114 {0xA2, 0x66, 0x66, 0, 0},
10115 {0xA3, 0x66, 0x66, 0, 0},
10116 {0xA4, 0x66, 0x66, 0, 0},
10117 {0xA5, 0x66, 0x66, 0, 0},
10118 {0xA6, 0x66, 0x66, 0, 0},
10119 {0xA7, 0x66, 0x66, 0, 0},
10120 {0xA8, 0x66, 0x66, 0, 0},
10121 {0xA9, 0x66, 0x66, 0, 0},
10122 {0xAA, 0x66, 0x66, 0, 0},
10123 {0xAB, 0x66, 0x66, 0, 0},
10124 {0xAC, 0x66, 0x66, 0, 0},
10125 {0xAD, 0x66, 0x66, 0, 0},
10126 {0xAE, 0x66, 0x66, 0, 0},
10127 {0xAF, 0x66, 0x66, 0, 0},
10128 {0xB0, 0x66, 0x66, 0, 0},
10129 {0xB1, 0x66, 0x66, 0, 0},
10130 {0xB2, 0x66, 0x66, 0, 0},
10131 {0xB3, 0xa, 0xa, 0, 0},
10132 {0xB4, 0, 0, 0, 0},
10133 {0xB5, 0, 0, 0, 0},
10134 {0xB6, 0, 0, 0, 0},
10135 {0xFFFF, 0, 0, 0, 0},
10136};
10137
10138static struct radio_regs regs_TX_2056_rev7[] = {
10139 {0x02, 0, 0, 0, 0},
10140 {0x03, 0, 0, 0, 0},
10141 {0x04, 0, 0, 0, 0},
10142 {0x05, 0, 0, 0, 0},
10143 {0x06, 0, 0, 0, 0},
10144 {0x07, 0, 0, 0, 0},
10145 {0x08, 0, 0, 0, 0},
10146 {0x09, 0, 0, 0, 0},
10147 {0x0A, 0, 0, 0, 0},
10148 {0x0B, 0, 0, 0, 0},
10149 {0x0C, 0, 0, 0, 0},
10150 {0x0D, 0, 0, 0, 0},
10151 {0x0E, 0, 0, 0, 0},
10152 {0x0F, 0, 0, 0, 0},
10153 {0x10, 0, 0, 0, 0},
10154 {0x11, 0, 0, 0, 0},
10155 {0x12, 0, 0, 0, 0},
10156 {0x13, 0, 0, 0, 0},
10157 {0x14, 0, 0, 0, 0},
10158 {0x15, 0, 0, 0, 0},
10159 {0x16, 0, 0, 0, 0},
10160 {0x17, 0, 0, 0, 0},
10161 {0x18, 0, 0, 0, 0},
10162 {0x19, 0, 0, 0, 0},
10163 {0x1A, 0, 0, 0, 0},
10164 {0x1B, 0, 0, 0, 0},
10165 {0x1C, 0, 0, 0, 0},
10166 {0x1D, 0, 0, 0, 0},
10167 {0x1E, 0, 0, 0, 0},
10168 {0x1F, 0, 0, 0, 0},
10169 {0x20, 0, 0, 0, 0},
10170 {0x21, 0x88, 0x88, 0, 0},
10171 {0x22, 0x88, 0x88, 0, 0},
10172 {0x23, 0x88, 0x88, 0, 0},
10173 {0x24, 0x88, 0x88, 0, 0},
10174 {0x25, 0xc, 0xc, 0, 0},
10175 {0x26, 0, 0, 0, 0},
10176 {0x27, 0x3, 0x3, 0, 0},
10177 {0x28, 0, 0, 0, 0},
10178 {0x29, 0x3, 0x3, 0, 0},
10179 {0x2A, 0x37, 0x37, 0, 0},
10180 {0x2B, 0x3, 0x3, 0, 0},
10181 {0x2C, 0, 0, 0, 0},
10182 {0x2D, 0, 0, 0, 0},
10183 {0x2E, 0x1, 0x1, 0, 0},
10184 {0x2F, 0x1, 0x1, 0, 0},
10185 {0x30, 0, 0, 0, 0},
10186 {0x31, 0, 0, 0, 0},
10187 {0x32, 0, 0, 0, 0},
10188 {0x33, 0x11, 0x11, 0, 0},
10189 {0x34, 0xee, 0xee, 1, 1},
10190 {0x35, 0, 0, 0, 0},
10191 {0x36, 0, 0, 0, 0},
10192 {0x37, 0x3, 0x3, 0, 0},
10193 {0x38, 0x50, 0x50, 1, 1},
10194 {0x39, 0, 0, 0, 0},
10195 {0x3A, 0x50, 0x50, 1, 1},
10196 {0x3B, 0, 0, 0, 0},
10197 {0x3C, 0x6e, 0x6e, 0, 0},
10198 {0x3D, 0xf0, 0xf0, 1, 1},
10199 {0x3E, 0, 0, 0, 0},
10200 {0x3F, 0, 0, 0, 0},
10201 {0x40, 0, 0, 0, 0},
10202 {0x41, 0x3, 0x3, 0, 0},
10203 {0x42, 0x3, 0x3, 0, 0},
10204 {0x43, 0, 0, 0, 0},
10205 {0x44, 0x1e, 0x1e, 0, 0},
10206 {0x45, 0, 0, 0, 0},
10207 {0x46, 0x6e, 0x6e, 0, 0},
10208 {0x47, 0xf0, 0xf0, 1, 1},
10209 {0x48, 0, 0, 0, 0},
10210 {0x49, 0x2, 0x2, 0, 0},
10211 {0x4A, 0xff, 0xff, 1, 1},
10212 {0x4B, 0xc, 0xc, 0, 0},
10213 {0x4C, 0, 0, 0, 0},
10214 {0x4D, 0x38, 0x38, 0, 0},
10215 {0x4E, 0x70, 0x70, 1, 1},
10216 {0x4F, 0x2, 0x2, 0, 0},
10217 {0x50, 0x88, 0x88, 0, 0},
10218 {0x51, 0xc, 0xc, 0, 0},
10219 {0x52, 0, 0, 0, 0},
10220 {0x53, 0x8, 0x8, 0, 0},
10221 {0x54, 0x70, 0x70, 1, 1},
10222 {0x55, 0x2, 0x2, 0, 0},
10223 {0x56, 0xff, 0xff, 1, 1},
10224 {0x57, 0, 0, 0, 0},
10225 {0x58, 0x83, 0x83, 0, 0},
10226 {0x59, 0x77, 0x77, 1, 1},
10227 {0x5A, 0, 0, 0, 0},
10228 {0x5B, 0x2, 0x2, 0, 0},
10229 {0x5C, 0x88, 0x88, 0, 0},
10230 {0x5D, 0, 0, 0, 0},
10231 {0x5E, 0x8, 0x8, 0, 0},
10232 {0x5F, 0x77, 0x77, 1, 1},
10233 {0x60, 0x1, 0x1, 0, 0},
10234 {0x61, 0, 0, 0, 0},
10235 {0x62, 0x7, 0x7, 0, 0},
10236 {0x63, 0, 0, 0, 0},
10237 {0x64, 0x7, 0x7, 0, 0},
10238 {0x65, 0, 0, 0, 0},
10239 {0x66, 0, 0, 0, 0},
10240 {0x67, 0, 0, 1, 1},
10241 {0x68, 0, 0, 0, 0},
10242 {0x69, 0xa, 0xa, 0, 0},
10243 {0x6A, 0, 0, 0, 0},
10244 {0x6B, 0, 0, 0, 0},
10245 {0x6C, 0, 0, 0, 0},
10246 {0x6D, 0, 0, 0, 0},
10247 {0x6E, 0, 0, 0, 0},
10248 {0x6F, 0, 0, 0, 0},
10249 {0x70, 0, 0, 0, 0},
10250 {0x71, 0x2, 0x2, 0, 0},
10251 {0x72, 0, 0, 0, 0},
10252 {0x73, 0, 0, 0, 0},
10253 {0x74, 0xe, 0xe, 0, 0},
10254 {0x75, 0xe, 0xe, 0, 0},
10255 {0x76, 0xe, 0xe, 0, 0},
10256 {0x77, 0x13, 0x13, 0, 0},
10257 {0x78, 0x13, 0x13, 0, 0},
10258 {0x79, 0x1b, 0x1b, 0, 0},
10259 {0x7A, 0x1b, 0x1b, 0, 0},
10260 {0x7B, 0x55, 0x55, 0, 0},
10261 {0x7C, 0x5b, 0x5b, 0, 0},
10262 {0x7D, 0x30, 0x30, 1, 1},
10263 {0x7E, 0, 0, 0, 0},
10264 {0x7F, 0, 0, 0, 0},
10265 {0x80, 0, 0, 0, 0},
10266 {0x81, 0, 0, 0, 0},
10267 {0x82, 0, 0, 0, 0},
10268 {0x83, 0, 0, 0, 0},
10269 {0x84, 0, 0, 0, 0},
10270 {0x85, 0, 0, 0, 0},
10271 {0x86, 0, 0, 0, 0},
10272 {0x87, 0, 0, 0, 0},
10273 {0x88, 0, 0, 0, 0},
10274 {0x89, 0, 0, 0, 0},
10275 {0x8A, 0, 0, 0, 0},
10276 {0x8B, 0, 0, 0, 0},
10277 {0x8C, 0, 0, 0, 0},
10278 {0x8D, 0, 0, 0, 0},
10279 {0x8E, 0, 0, 0, 0},
10280 {0x8F, 0, 0, 0, 0},
10281 {0x90, 0, 0, 0, 0},
10282 {0x91, 0, 0, 0, 0},
10283 {0x92, 0, 0, 0, 0},
10284 {0x93, 0x70, 0x70, 0, 0},
10285 {0x94, 0x70, 0x70, 0, 0},
10286 {0x95, 0x71, 0x71, 1, 1},
10287 {0x96, 0x71, 0x71, 1, 1},
10288 {0x97, 0x72, 0x72, 1, 1},
10289 {0x98, 0x73, 0x73, 1, 1},
10290 {0x99, 0x74, 0x74, 1, 1},
10291 {0x9A, 0x75, 0x75, 1, 1},
10292 {0xFFFF, 0, 0, 0, 0},
10293};
10294
10295static struct radio_regs regs_RX_2056_rev7[] = {
10296 {0x02, 0, 0, 0, 0},
10297 {0x03, 0, 0, 0, 0},
10298 {0x04, 0, 0, 0, 0},
10299 {0x05, 0, 0, 0, 0},
10300 {0x06, 0, 0, 0, 0},
10301 {0x07, 0, 0, 0, 0},
10302 {0x08, 0, 0, 0, 0},
10303 {0x09, 0, 0, 0, 0},
10304 {0x0A, 0, 0, 0, 0},
10305 {0x0B, 0, 0, 0, 0},
10306 {0x0C, 0, 0, 0, 0},
10307 {0x0D, 0, 0, 0, 0},
10308 {0x0E, 0, 0, 0, 0},
10309 {0x0F, 0, 0, 0, 0},
10310 {0x10, 0, 0, 0, 0},
10311 {0x11, 0, 0, 0, 0},
10312 {0x12, 0, 0, 0, 0},
10313 {0x13, 0, 0, 0, 0},
10314 {0x14, 0, 0, 0, 0},
10315 {0x15, 0, 0, 0, 0},
10316 {0x16, 0, 0, 0, 0},
10317 {0x17, 0, 0, 0, 0},
10318 {0x18, 0, 0, 0, 0},
10319 {0x19, 0, 0, 0, 0},
10320 {0x1A, 0, 0, 0, 0},
10321 {0x1B, 0, 0, 0, 0},
10322 {0x1C, 0, 0, 0, 0},
10323 {0x1D, 0, 0, 0, 0},
10324 {0x1E, 0, 0, 0, 0},
10325 {0x1F, 0, 0, 0, 0},
10326 {0x20, 0x3, 0x3, 0, 0},
10327 {0x21, 0, 0, 0, 0},
10328 {0x22, 0, 0, 0, 0},
10329 {0x23, 0x90, 0x90, 0, 0},
10330 {0x24, 0x55, 0x55, 0, 0},
10331 {0x25, 0x15, 0x15, 0, 0},
10332 {0x26, 0x5, 0x5, 0, 0},
10333 {0x27, 0x15, 0x15, 0, 0},
10334 {0x28, 0x5, 0x5, 0, 0},
10335 {0x29, 0x20, 0x20, 0, 0},
10336 {0x2A, 0x11, 0x11, 0, 0},
10337 {0x2B, 0x90, 0x90, 0, 0},
10338 {0x2C, 0, 0, 0, 0},
10339 {0x2D, 0x88, 0x88, 0, 0},
10340 {0x2E, 0x32, 0x32, 0, 0},
10341 {0x2F, 0x77, 0x77, 0, 0},
10342 {0x30, 0x17, 0x17, 1, 1},
10343 {0x31, 0xff, 0xff, 1, 1},
10344 {0x32, 0x20, 0x20, 0, 0},
10345 {0x33, 0, 0, 0, 0},
10346 {0x34, 0x88, 0x88, 0, 0},
10347 {0x35, 0x32, 0x32, 0, 0},
10348 {0x36, 0x77, 0x77, 0, 0},
10349 {0x37, 0x17, 0x17, 1, 1},
10350 {0x38, 0xf0, 0xf0, 1, 1},
10351 {0x39, 0x20, 0x20, 0, 0},
10352 {0x3A, 0x8, 0x8, 0, 0},
10353 {0x3B, 0x55, 0x55, 1, 1},
10354 {0x3C, 0, 0, 0, 0},
10355 {0x3D, 0x88, 0x88, 1, 1},
10356 {0x3E, 0, 0, 0, 0},
10357 {0x3F, 0, 0, 1, 1},
10358 {0x40, 0x7, 0x7, 1, 1},
10359 {0x41, 0x6, 0x6, 0, 0},
10360 {0x42, 0x4, 0x4, 0, 0},
10361 {0x43, 0, 0, 0, 0},
10362 {0x44, 0x8, 0x8, 0, 0},
10363 {0x45, 0x55, 0x55, 1, 1},
10364 {0x46, 0, 0, 0, 0},
10365 {0x47, 0x11, 0x11, 0, 0},
10366 {0x48, 0, 0, 0, 0},
10367 {0x49, 0, 0, 1, 1},
10368 {0x4A, 0x7, 0x7, 0, 0},
10369 {0x4B, 0x6, 0x6, 0, 0},
10370 {0x4C, 0x4, 0x4, 0, 0},
10371 {0x4D, 0, 0, 0, 0},
10372 {0x4E, 0, 0, 0, 0},
10373 {0x4F, 0x26, 0x26, 1, 1},
10374 {0x50, 0x26, 0x26, 1, 1},
10375 {0x51, 0xf, 0xf, 1, 1},
10376 {0x52, 0xf, 0xf, 1, 1},
10377 {0x53, 0x44, 0x44, 0, 0},
10378 {0x54, 0, 0, 0, 0},
10379 {0x55, 0, 0, 0, 0},
10380 {0x56, 0x8, 0x8, 0, 0},
10381 {0x57, 0x8, 0x8, 0, 0},
10382 {0x58, 0x7, 0x7, 0, 0},
10383 {0x59, 0x22, 0x22, 0, 0},
10384 {0x5A, 0x22, 0x22, 0, 0},
10385 {0x5B, 0x2, 0x2, 0, 0},
10386 {0x5C, 0x4, 0x4, 1, 1},
10387 {0x5D, 0x7, 0x7, 0, 0},
10388 {0x5E, 0x55, 0x55, 0, 0},
10389 {0x5F, 0x23, 0x23, 0, 0},
10390 {0x60, 0x41, 0x41, 0, 0},
10391 {0x61, 0x1, 0x1, 0, 0},
10392 {0x62, 0xa, 0xa, 0, 0},
10393 {0x63, 0, 0, 0, 0},
10394 {0x64, 0, 0, 0, 0},
10395 {0x65, 0, 0, 0, 0},
10396 {0x66, 0, 0, 0, 0},
10397 {0x67, 0, 0, 0, 0},
10398 {0x68, 0, 0, 0, 0},
10399 {0x69, 0, 0, 0, 0},
10400 {0x6A, 0, 0, 0, 0},
10401 {0x6B, 0xc, 0xc, 0, 0},
10402 {0x6C, 0, 0, 0, 0},
10403 {0x6D, 0, 0, 0, 0},
10404 {0x6E, 0, 0, 0, 0},
10405 {0x6F, 0, 0, 0, 0},
10406 {0x70, 0, 0, 0, 0},
10407 {0x71, 0, 0, 0, 0},
10408 {0x72, 0x22, 0x22, 0, 0},
10409 {0x73, 0x22, 0x22, 0, 0},
10410 {0x74, 0, 0, 1, 1},
10411 {0x75, 0xa, 0xa, 0, 0},
10412 {0x76, 0x1, 0x1, 0, 0},
10413 {0x77, 0x22, 0x22, 0, 0},
10414 {0x78, 0x30, 0x30, 0, 0},
10415 {0x79, 0, 0, 0, 0},
10416 {0x7A, 0, 0, 0, 0},
10417 {0x7B, 0, 0, 0, 0},
10418 {0x7C, 0, 0, 0, 0},
10419 {0x7D, 0, 0, 0, 0},
10420 {0x7E, 0, 0, 0, 0},
10421 {0x7F, 0, 0, 0, 0},
10422 {0x80, 0, 0, 0, 0},
10423 {0x81, 0, 0, 0, 0},
10424 {0x82, 0, 0, 0, 0},
10425 {0x83, 0, 0, 0, 0},
10426 {0x84, 0, 0, 0, 0},
10427 {0x85, 0, 0, 0, 0},
10428 {0x86, 0, 0, 0, 0},
10429 {0x87, 0, 0, 0, 0},
10430 {0x88, 0, 0, 0, 0},
10431 {0x89, 0, 0, 0, 0},
10432 {0x8A, 0, 0, 0, 0},
10433 {0x8B, 0, 0, 0, 0},
10434 {0x8C, 0, 0, 0, 0},
10435 {0x8D, 0, 0, 0, 0},
10436 {0x8E, 0, 0, 0, 0},
10437 {0x8F, 0, 0, 0, 0},
10438 {0x90, 0, 0, 0, 0},
10439 {0x91, 0, 0, 0, 0},
10440 {0x92, 0, 0, 0, 0},
10441 {0x93, 0, 0, 0, 0},
10442 {0x94, 0, 0, 0, 0},
10443 {0xFFFF, 0, 0, 0, 0},
10444};
10445
10446static struct radio_regs regs_SYN_2056_rev8[] = {
10447 {0x02, 0, 0, 0, 0},
10448 {0x03, 0, 0, 0, 0},
10449 {0x04, 0, 0, 0, 0},
10450 {0x05, 0, 0, 0, 0},
10451 {0x06, 0, 0, 0, 0},
10452 {0x07, 0, 0, 0, 0},
10453 {0x08, 0, 0, 0, 0},
10454 {0x09, 0x1, 0x1, 0, 0},
10455 {0x0A, 0, 0, 0, 0},
10456 {0x0B, 0, 0, 0, 0},
10457 {0x0C, 0, 0, 0, 0},
10458 {0x0D, 0, 0, 0, 0},
10459 {0x0E, 0, 0, 0, 0},
10460 {0x0F, 0, 0, 0, 0},
10461 {0x10, 0, 0, 0, 0},
10462 {0x11, 0, 0, 0, 0},
10463 {0x12, 0, 0, 0, 0},
10464 {0x13, 0, 0, 0, 0},
10465 {0x14, 0, 0, 0, 0},
10466 {0x15, 0, 0, 0, 0},
10467 {0x16, 0, 0, 0, 0},
10468 {0x17, 0, 0, 0, 0},
10469 {0x18, 0, 0, 0, 0},
10470 {0x19, 0, 0, 0, 0},
10471 {0x1A, 0, 0, 0, 0},
10472 {0x1B, 0, 0, 0, 0},
10473 {0x1C, 0, 0, 0, 0},
10474 {0x1D, 0, 0, 0, 0},
10475 {0x1E, 0, 0, 0, 0},
10476 {0x1F, 0, 0, 0, 0},
10477 {0x20, 0, 0, 0, 0},
10478 {0x21, 0, 0, 0, 0},
10479 {0x22, 0x60, 0x60, 0, 0},
10480 {0x23, 0x6, 0x6, 0, 0},
10481 {0x24, 0xc, 0xc, 0, 0},
10482 {0x25, 0, 0, 0, 0},
10483 {0x26, 0, 0, 0, 0},
10484 {0x27, 0, 0, 0, 0},
10485 {0x28, 0x1, 0x1, 0, 0},
10486 {0x29, 0, 0, 0, 0},
10487 {0x2A, 0, 0, 0, 0},
10488 {0x2B, 0, 0, 0, 0},
10489 {0x2C, 0, 0, 0, 0},
10490 {0x2D, 0, 0, 0, 0},
10491 {0x2E, 0, 0, 0, 0},
10492 {0x2F, 0x1f, 0x1f, 0, 0},
10493 {0x30, 0x15, 0x15, 0, 0},
10494 {0x31, 0xf, 0xf, 0, 0},
10495 {0x32, 0, 0, 0, 0},
10496 {0x33, 0, 0, 0, 0},
10497 {0x34, 0, 0, 0, 0},
10498 {0x35, 0, 0, 0, 0},
10499 {0x36, 0, 0, 0, 0},
10500 {0x37, 0, 0, 0, 0},
10501 {0x38, 0, 0, 0, 0},
10502 {0x39, 0, 0, 0, 0},
10503 {0x3A, 0, 0, 0, 0},
10504 {0x3B, 0, 0, 0, 0},
10505 {0x3C, 0x13, 0x13, 0, 0},
10506 {0x3D, 0xf, 0xf, 0, 0},
10507 {0x3E, 0x18, 0x18, 0, 0},
10508 {0x3F, 0, 0, 0, 0},
10509 {0x40, 0, 0, 0, 0},
10510 {0x41, 0x20, 0x20, 0, 0},
10511 {0x42, 0x20, 0x20, 0, 0},
10512 {0x43, 0, 0, 0, 0},
10513 {0x44, 0x77, 0x77, 0, 0},
10514 {0x45, 0x7, 0x7, 0, 0},
10515 {0x46, 0x1, 0x1, 0, 0},
10516 {0x47, 0x4, 0x4, 0, 0},
10517 {0x48, 0xf, 0xf, 0, 0},
10518 {0x49, 0x30, 0x30, 0, 0},
10519 {0x4A, 0x32, 0x32, 0, 0},
10520 {0x4B, 0xd, 0xd, 0, 0},
10521 {0x4C, 0xd, 0xd, 0, 0},
10522 {0x4D, 0x4, 0x4, 0, 0},
10523 {0x4E, 0x6, 0x6, 0, 0},
10524 {0x4F, 0x1, 0x1, 0, 0},
10525 {0x50, 0x1c, 0x1c, 0, 0},
10526 {0x51, 0x2, 0x2, 0, 0},
10527 {0x52, 0x2, 0x2, 0, 0},
10528 {0x53, 0xf7, 0xf7, 1, 1},
10529 {0x54, 0xb4, 0xb4, 0, 0},
10530 {0x55, 0xd2, 0xd2, 0, 0},
10531 {0x56, 0, 0, 0, 0},
10532 {0x57, 0, 0, 0, 0},
10533 {0x58, 0x4, 0x4, 0, 0},
10534 {0x59, 0x96, 0x96, 0, 0},
10535 {0x5A, 0x3e, 0x3e, 0, 0},
10536 {0x5B, 0x3e, 0x3e, 0, 0},
10537 {0x5C, 0x13, 0x13, 0, 0},
10538 {0x5D, 0x2, 0x2, 0, 0},
10539 {0x5E, 0, 0, 0, 0},
10540 {0x5F, 0x7, 0x7, 0, 0},
10541 {0x60, 0x7, 0x7, 1, 1},
10542 {0x61, 0x8, 0x8, 0, 0},
10543 {0x62, 0x3, 0x3, 0, 0},
10544 {0x63, 0, 0, 0, 0},
10545 {0x64, 0, 0, 0, 0},
10546 {0x65, 0, 0, 0, 0},
10547 {0x66, 0, 0, 0, 0},
10548 {0x67, 0, 0, 0, 0},
10549 {0x68, 0x40, 0x40, 0, 0},
10550 {0x69, 0, 0, 0, 0},
10551 {0x6A, 0, 0, 0, 0},
10552 {0x6B, 0, 0, 0, 0},
10553 {0x6C, 0, 0, 0, 0},
10554 {0x6D, 0x1, 0x1, 0, 0},
10555 {0x6E, 0, 0, 0, 0},
10556 {0x6F, 0, 0, 0, 0},
10557 {0x70, 0x60, 0x60, 0, 0},
10558 {0x71, 0x66, 0x66, 0, 0},
10559 {0x72, 0xc, 0xc, 0, 0},
10560 {0x73, 0x66, 0x66, 0, 0},
10561 {0x74, 0x8f, 0x8f, 1, 1},
10562 {0x75, 0, 0, 0, 0},
10563 {0x76, 0xcc, 0xcc, 0, 0},
10564 {0x77, 0x1, 0x1, 0, 0},
10565 {0x78, 0x66, 0x66, 0, 0},
10566 {0x79, 0x66, 0x66, 0, 0},
10567 {0x7A, 0, 0, 0, 0},
10568 {0x7B, 0, 0, 0, 0},
10569 {0x7C, 0, 0, 0, 0},
10570 {0x7D, 0, 0, 0, 0},
10571 {0x7E, 0, 0, 0, 0},
10572 {0x7F, 0, 0, 0, 0},
10573 {0x80, 0, 0, 0, 0},
10574 {0x81, 0, 0, 0, 0},
10575 {0x82, 0, 0, 0, 0},
10576 {0x83, 0, 0, 0, 0},
10577 {0x84, 0, 0, 0, 0},
10578 {0x85, 0xff, 0xff, 0, 0},
10579 {0x86, 0, 0, 0, 0},
10580 {0x87, 0, 0, 0, 0},
10581 {0x88, 0, 0, 0, 0},
10582 {0x89, 0, 0, 0, 0},
10583 {0x8A, 0, 0, 0, 0},
10584 {0x8B, 0, 0, 0, 0},
10585 {0x8C, 0, 0, 0, 0},
10586 {0x8D, 0, 0, 0, 0},
10587 {0x8E, 0, 0, 0, 0},
10588 {0x8F, 0, 0, 0, 0},
10589 {0x90, 0, 0, 0, 0},
10590 {0x91, 0, 0, 0, 0},
10591 {0x92, 0, 0, 0, 0},
10592 {0x93, 0, 0, 0, 0},
10593 {0x94, 0, 0, 0, 0},
10594 {0x95, 0, 0, 0, 0},
10595 {0x96, 0, 0, 0, 0},
10596 {0x97, 0, 0, 0, 0},
10597 {0x98, 0, 0, 0, 0},
10598 {0x99, 0, 0, 0, 0},
10599 {0x9A, 0, 0, 0, 0},
10600 {0x9B, 0, 0, 0, 0},
10601 {0x9C, 0, 0, 0, 0},
10602 {0x9D, 0, 0, 0, 0},
10603 {0x9E, 0, 0, 0, 0},
10604 {0x9F, 0x6, 0x6, 0, 0},
10605 {0xA0, 0x66, 0x66, 0, 0},
10606 {0xA1, 0x66, 0x66, 0, 0},
10607 {0xA2, 0x66, 0x66, 0, 0},
10608 {0xA3, 0x66, 0x66, 0, 0},
10609 {0xA4, 0x66, 0x66, 0, 0},
10610 {0xA5, 0x66, 0x66, 0, 0},
10611 {0xA6, 0x66, 0x66, 0, 0},
10612 {0xA7, 0x66, 0x66, 0, 0},
10613 {0xA8, 0x66, 0x66, 0, 0},
10614 {0xA9, 0x66, 0x66, 0, 0},
10615 {0xAA, 0x66, 0x66, 0, 0},
10616 {0xAB, 0x66, 0x66, 0, 0},
10617 {0xAC, 0x66, 0x66, 0, 0},
10618 {0xAD, 0x66, 0x66, 0, 0},
10619 {0xAE, 0x66, 0x66, 0, 0},
10620 {0xAF, 0x66, 0x66, 0, 0},
10621 {0xB0, 0x66, 0x66, 0, 0},
10622 {0xB1, 0x66, 0x66, 0, 0},
10623 {0xB2, 0x66, 0x66, 0, 0},
10624 {0xB3, 0xa, 0xa, 0, 0},
10625 {0xB4, 0, 0, 0, 0},
10626 {0xB5, 0, 0, 0, 0},
10627 {0xB6, 0, 0, 0, 0},
10628 {0xFFFF, 0, 0, 0, 0},
10629};
10630
10631static struct radio_regs regs_TX_2056_rev8[] = {
10632 {0x02, 0, 0, 0, 0},
10633 {0x03, 0, 0, 0, 0},
10634 {0x04, 0, 0, 0, 0},
10635 {0x05, 0, 0, 0, 0},
10636 {0x06, 0, 0, 0, 0},
10637 {0x07, 0, 0, 0, 0},
10638 {0x08, 0, 0, 0, 0},
10639 {0x09, 0, 0, 0, 0},
10640 {0x0A, 0, 0, 0, 0},
10641 {0x0B, 0, 0, 0, 0},
10642 {0x0C, 0, 0, 0, 0},
10643 {0x0D, 0, 0, 0, 0},
10644 {0x0E, 0, 0, 0, 0},
10645 {0x0F, 0, 0, 0, 0},
10646 {0x10, 0, 0, 0, 0},
10647 {0x11, 0, 0, 0, 0},
10648 {0x12, 0, 0, 0, 0},
10649 {0x13, 0, 0, 0, 0},
10650 {0x14, 0, 0, 0, 0},
10651 {0x15, 0, 0, 0, 0},
10652 {0x16, 0, 0, 0, 0},
10653 {0x17, 0, 0, 0, 0},
10654 {0x18, 0, 0, 0, 0},
10655 {0x19, 0, 0, 0, 0},
10656 {0x1A, 0, 0, 0, 0},
10657 {0x1B, 0, 0, 0, 0},
10658 {0x1C, 0, 0, 0, 0},
10659 {0x1D, 0, 0, 0, 0},
10660 {0x1E, 0, 0, 0, 0},
10661 {0x1F, 0, 0, 0, 0},
10662 {0x20, 0, 0, 0, 0},
10663 {0x21, 0x88, 0x88, 0, 0},
10664 {0x22, 0x88, 0x88, 0, 0},
10665 {0x23, 0x88, 0x88, 0, 0},
10666 {0x24, 0x88, 0x88, 0, 0},
10667 {0x25, 0xc, 0xc, 0, 0},
10668 {0x26, 0, 0, 0, 0},
10669 {0x27, 0x3, 0x3, 0, 0},
10670 {0x28, 0, 0, 0, 0},
10671 {0x29, 0x3, 0x3, 0, 0},
10672 {0x2A, 0x37, 0x37, 0, 0},
10673 {0x2B, 0x3, 0x3, 0, 0},
10674 {0x2C, 0, 0, 0, 0},
10675 {0x2D, 0, 0, 0, 0},
10676 {0x2E, 0x1, 0x1, 0, 0},
10677 {0x2F, 0x1, 0x1, 0, 0},
10678 {0x30, 0, 0, 0, 0},
10679 {0x31, 0, 0, 0, 0},
10680 {0x32, 0, 0, 0, 0},
10681 {0x33, 0x11, 0x11, 0, 0},
10682 {0x34, 0xee, 0xee, 1, 1},
10683 {0x35, 0, 0, 0, 0},
10684 {0x36, 0, 0, 0, 0},
10685 {0x37, 0x3, 0x3, 0, 0},
10686 {0x38, 0x50, 0x50, 1, 1},
10687 {0x39, 0, 0, 0, 0},
10688 {0x3A, 0x50, 0x50, 1, 1},
10689 {0x3B, 0, 0, 0, 0},
10690 {0x3C, 0x6e, 0x6e, 0, 0},
10691 {0x3D, 0xf0, 0xf0, 1, 1},
10692 {0x3E, 0, 0, 0, 0},
10693 {0x3F, 0, 0, 0, 0},
10694 {0x40, 0, 0, 0, 0},
10695 {0x41, 0x3, 0x3, 0, 0},
10696 {0x42, 0x3, 0x3, 0, 0},
10697 {0x43, 0, 0, 0, 0},
10698 {0x44, 0x1e, 0x1e, 0, 0},
10699 {0x45, 0, 0, 0, 0},
10700 {0x46, 0x6e, 0x6e, 0, 0},
10701 {0x47, 0xf0, 0xf0, 1, 1},
10702 {0x48, 0, 0, 0, 0},
10703 {0x49, 0x2, 0x2, 0, 0},
10704 {0x4A, 0xff, 0xff, 1, 1},
10705 {0x4B, 0xc, 0xc, 0, 0},
10706 {0x4C, 0, 0, 0, 0},
10707 {0x4D, 0x38, 0x38, 0, 0},
10708 {0x4E, 0x70, 0x70, 1, 1},
10709 {0x4F, 0x2, 0x2, 0, 0},
10710 {0x50, 0x88, 0x88, 0, 0},
10711 {0x51, 0xc, 0xc, 0, 0},
10712 {0x52, 0, 0, 0, 0},
10713 {0x53, 0x8, 0x8, 0, 0},
10714 {0x54, 0x70, 0x70, 1, 1},
10715 {0x55, 0x2, 0x2, 0, 0},
10716 {0x56, 0xff, 0xff, 1, 1},
10717 {0x57, 0, 0, 0, 0},
10718 {0x58, 0x83, 0x83, 0, 0},
10719 {0x59, 0x77, 0x77, 1, 1},
10720 {0x5A, 0, 0, 0, 0},
10721 {0x5B, 0x2, 0x2, 0, 0},
10722 {0x5C, 0x88, 0x88, 0, 0},
10723 {0x5D, 0, 0, 0, 0},
10724 {0x5E, 0x8, 0x8, 0, 0},
10725 {0x5F, 0x77, 0x77, 1, 1},
10726 {0x60, 0x1, 0x1, 0, 0},
10727 {0x61, 0, 0, 0, 0},
10728 {0x62, 0x7, 0x7, 0, 0},
10729 {0x63, 0, 0, 0, 0},
10730 {0x64, 0x7, 0x7, 0, 0},
10731 {0x65, 0, 0, 0, 0},
10732 {0x66, 0, 0, 0, 0},
10733 {0x67, 0, 0, 1, 1},
10734 {0x68, 0, 0, 0, 0},
10735 {0x69, 0xa, 0xa, 0, 0},
10736 {0x6A, 0, 0, 0, 0},
10737 {0x6B, 0, 0, 0, 0},
10738 {0x6C, 0, 0, 0, 0},
10739 {0x6D, 0, 0, 0, 0},
10740 {0x6E, 0, 0, 0, 0},
10741 {0x6F, 0, 0, 0, 0},
10742 {0x70, 0, 0, 0, 0},
10743 {0x71, 0x2, 0x2, 0, 0},
10744 {0x72, 0, 0, 0, 0},
10745 {0x73, 0, 0, 0, 0},
10746 {0x74, 0xe, 0xe, 0, 0},
10747 {0x75, 0xe, 0xe, 0, 0},
10748 {0x76, 0xe, 0xe, 0, 0},
10749 {0x77, 0x13, 0x13, 0, 0},
10750 {0x78, 0x13, 0x13, 0, 0},
10751 {0x79, 0x1b, 0x1b, 0, 0},
10752 {0x7A, 0x1b, 0x1b, 0, 0},
10753 {0x7B, 0x55, 0x55, 0, 0},
10754 {0x7C, 0x5b, 0x5b, 0, 0},
10755 {0x7D, 0x30, 0x30, 1, 1},
10756 {0x7E, 0, 0, 0, 0},
10757 {0x7F, 0, 0, 0, 0},
10758 {0x80, 0, 0, 0, 0},
10759 {0x81, 0, 0, 0, 0},
10760 {0x82, 0, 0, 0, 0},
10761 {0x83, 0, 0, 0, 0},
10762 {0x84, 0, 0, 0, 0},
10763 {0x85, 0, 0, 0, 0},
10764 {0x86, 0, 0, 0, 0},
10765 {0x87, 0, 0, 0, 0},
10766 {0x88, 0, 0, 0, 0},
10767 {0x89, 0, 0, 0, 0},
10768 {0x8A, 0, 0, 0, 0},
10769 {0x8B, 0, 0, 0, 0},
10770 {0x8C, 0, 0, 0, 0},
10771 {0x8D, 0, 0, 0, 0},
10772 {0x8E, 0, 0, 0, 0},
10773 {0x8F, 0, 0, 0, 0},
10774 {0x90, 0, 0, 0, 0},
10775 {0x91, 0, 0, 0, 0},
10776 {0x92, 0, 0, 0, 0},
10777 {0x93, 0x70, 0x70, 0, 0},
10778 {0x94, 0x70, 0x70, 0, 0},
10779 {0x95, 0x70, 0x70, 0, 0},
10780 {0x96, 0x70, 0x70, 0, 0},
10781 {0x97, 0x70, 0x70, 0, 0},
10782 {0x98, 0x70, 0x70, 0, 0},
10783 {0x99, 0x70, 0x70, 0, 0},
10784 {0x9A, 0x70, 0x70, 0, 0},
10785 {0xFFFF, 0, 0, 0, 0},
10786};
10787
10788static struct radio_regs regs_RX_2056_rev8[] = {
10789 {0x02, 0, 0, 0, 0},
10790 {0x03, 0, 0, 0, 0},
10791 {0x04, 0, 0, 0, 0},
10792 {0x05, 0, 0, 0, 0},
10793 {0x06, 0, 0, 0, 0},
10794 {0x07, 0, 0, 0, 0},
10795 {0x08, 0, 0, 0, 0},
10796 {0x09, 0, 0, 0, 0},
10797 {0x0A, 0, 0, 0, 0},
10798 {0x0B, 0, 0, 0, 0},
10799 {0x0C, 0, 0, 0, 0},
10800 {0x0D, 0, 0, 0, 0},
10801 {0x0E, 0, 0, 0, 0},
10802 {0x0F, 0, 0, 0, 0},
10803 {0x10, 0, 0, 0, 0},
10804 {0x11, 0, 0, 0, 0},
10805 {0x12, 0, 0, 0, 0},
10806 {0x13, 0, 0, 0, 0},
10807 {0x14, 0, 0, 0, 0},
10808 {0x15, 0, 0, 0, 0},
10809 {0x16, 0, 0, 0, 0},
10810 {0x17, 0, 0, 0, 0},
10811 {0x18, 0, 0, 0, 0},
10812 {0x19, 0, 0, 0, 0},
10813 {0x1A, 0, 0, 0, 0},
10814 {0x1B, 0, 0, 0, 0},
10815 {0x1C, 0, 0, 0, 0},
10816 {0x1D, 0, 0, 0, 0},
10817 {0x1E, 0, 0, 0, 0},
10818 {0x1F, 0, 0, 0, 0},
10819 {0x20, 0x3, 0x3, 0, 0},
10820 {0x21, 0, 0, 0, 0},
10821 {0x22, 0, 0, 0, 0},
10822 {0x23, 0x90, 0x90, 0, 0},
10823 {0x24, 0x55, 0x55, 0, 0},
10824 {0x25, 0x15, 0x15, 0, 0},
10825 {0x26, 0x5, 0x5, 0, 0},
10826 {0x27, 0x15, 0x15, 0, 0},
10827 {0x28, 0x5, 0x5, 0, 0},
10828 {0x29, 0x20, 0x20, 0, 0},
10829 {0x2A, 0x11, 0x11, 0, 0},
10830 {0x2B, 0x90, 0x90, 0, 0},
10831 {0x2C, 0, 0, 0, 0},
10832 {0x2D, 0x88, 0x88, 0, 0},
10833 {0x2E, 0x32, 0x32, 0, 0},
10834 {0x2F, 0x77, 0x77, 0, 0},
10835 {0x30, 0x17, 0x17, 1, 1},
10836 {0x31, 0xff, 0xff, 1, 1},
10837 {0x32, 0x20, 0x20, 0, 0},
10838 {0x33, 0, 0, 0, 0},
10839 {0x34, 0x88, 0x88, 0, 0},
10840 {0x35, 0x32, 0x32, 0, 0},
10841 {0x36, 0x77, 0x77, 0, 0},
10842 {0x37, 0x17, 0x17, 1, 1},
10843 {0x38, 0xf0, 0xf0, 1, 1},
10844 {0x39, 0x20, 0x20, 0, 0},
10845 {0x3A, 0x8, 0x8, 0, 0},
10846 {0x3B, 0x55, 0x55, 1, 1},
10847 {0x3C, 0, 0, 0, 0},
10848 {0x3D, 0x88, 0x88, 1, 1},
10849 {0x3E, 0, 0, 0, 0},
10850 {0x3F, 0x44, 0x44, 0, 0},
10851 {0x40, 0x7, 0x7, 1, 1},
10852 {0x41, 0x6, 0x6, 0, 0},
10853 {0x42, 0x4, 0x4, 0, 0},
10854 {0x43, 0, 0, 0, 0},
10855 {0x44, 0x8, 0x8, 0, 0},
10856 {0x45, 0x55, 0x55, 1, 1},
10857 {0x46, 0, 0, 0, 0},
10858 {0x47, 0x11, 0x11, 0, 0},
10859 {0x48, 0, 0, 0, 0},
10860 {0x49, 0x44, 0x44, 0, 0},
10861 {0x4A, 0x7, 0x7, 0, 0},
10862 {0x4B, 0x6, 0x6, 0, 0},
10863 {0x4C, 0x4, 0x4, 0, 0},
10864 {0x4D, 0, 0, 0, 0},
10865 {0x4E, 0, 0, 0, 0},
10866 {0x4F, 0x26, 0x26, 1, 1},
10867 {0x50, 0x26, 0x26, 1, 1},
10868 {0x51, 0xf, 0xf, 1, 1},
10869 {0x52, 0xf, 0xf, 1, 1},
10870 {0x53, 0x44, 0x44, 0, 0},
10871 {0x54, 0, 0, 0, 0},
10872 {0x55, 0, 0, 0, 0},
10873 {0x56, 0x8, 0x8, 0, 0},
10874 {0x57, 0x8, 0x8, 0, 0},
10875 {0x58, 0x7, 0x7, 0, 0},
10876 {0x59, 0x22, 0x22, 0, 0},
10877 {0x5A, 0x22, 0x22, 0, 0},
10878 {0x5B, 0x2, 0x2, 0, 0},
10879 {0x5C, 0x4, 0x4, 1, 1},
10880 {0x5D, 0x7, 0x7, 0, 0},
10881 {0x5E, 0x55, 0x55, 0, 0},
10882 {0x5F, 0x23, 0x23, 0, 0},
10883 {0x60, 0x41, 0x41, 0, 0},
10884 {0x61, 0x1, 0x1, 0, 0},
10885 {0x62, 0xa, 0xa, 0, 0},
10886 {0x63, 0, 0, 0, 0},
10887 {0x64, 0, 0, 0, 0},
10888 {0x65, 0, 0, 0, 0},
10889 {0x66, 0, 0, 0, 0},
10890 {0x67, 0, 0, 0, 0},
10891 {0x68, 0, 0, 0, 0},
10892 {0x69, 0, 0, 0, 0},
10893 {0x6A, 0, 0, 0, 0},
10894 {0x6B, 0xc, 0xc, 0, 0},
10895 {0x6C, 0, 0, 0, 0},
10896 {0x6D, 0, 0, 0, 0},
10897 {0x6E, 0, 0, 0, 0},
10898 {0x6F, 0, 0, 0, 0},
10899 {0x70, 0, 0, 0, 0},
10900 {0x71, 0, 0, 0, 0},
10901 {0x72, 0x22, 0x22, 0, 0},
10902 {0x73, 0x22, 0x22, 0, 0},
10903 {0x74, 0, 0, 1, 1},
10904 {0x75, 0xa, 0xa, 0, 0},
10905 {0x76, 0x1, 0x1, 0, 0},
10906 {0x77, 0x22, 0x22, 0, 0},
10907 {0x78, 0x30, 0x30, 0, 0},
10908 {0x79, 0, 0, 0, 0},
10909 {0x7A, 0, 0, 0, 0},
10910 {0x7B, 0, 0, 0, 0},
10911 {0x7C, 0, 0, 0, 0},
10912 {0x7D, 0x5, 0x5, 1, 1},
10913 {0x7E, 0, 0, 0, 0},
10914 {0x7F, 0, 0, 0, 0},
10915 {0x80, 0, 0, 0, 0},
10916 {0x81, 0, 0, 0, 0},
10917 {0x82, 0, 0, 0, 0},
10918 {0x83, 0, 0, 0, 0},
10919 {0x84, 0, 0, 0, 0},
10920 {0x85, 0, 0, 0, 0},
10921 {0x86, 0, 0, 0, 0},
10922 {0x87, 0, 0, 0, 0},
10923 {0x88, 0, 0, 0, 0},
10924 {0x89, 0, 0, 0, 0},
10925 {0x8A, 0, 0, 0, 0},
10926 {0x8B, 0, 0, 0, 0},
10927 {0x8C, 0, 0, 0, 0},
10928 {0x8D, 0, 0, 0, 0},
10929 {0x8E, 0, 0, 0, 0},
10930 {0x8F, 0, 0, 0, 0},
10931 {0x90, 0, 0, 0, 0},
10932 {0x91, 0, 0, 0, 0},
10933 {0x92, 0, 0, 0, 0},
10934 {0x93, 0, 0, 0, 0},
10935 {0x94, 0, 0, 0, 0},
10936 {0xFFFF, 0, 0, 0, 0},
10937};
10938
10939static const struct radio_regs regs_SYN_2056_rev11[] = {
10940 {0x02, 0, 0, 0, 0},
10941 {0x03, 0, 0, 0, 0},
10942 {0x04, 0, 0, 0, 0},
10943 {0x05, 0, 0, 0, 0},
10944 {0x06, 0, 0, 0, 0},
10945 {0x07, 0, 0, 0, 0},
10946 {0x08, 0, 0, 0, 0},
10947 {0x09, 0x1, 0x1, 0, 0},
10948 {0x0A, 0, 0, 0, 0},
10949 {0x0B, 0, 0, 0, 0},
10950 {0x0C, 0, 0, 0, 0},
10951 {0x0D, 0, 0, 0, 0},
10952 {0x0E, 0, 0, 0, 0},
10953 {0x0F, 0, 0, 0, 0},
10954 {0x10, 0, 0, 0, 0},
10955 {0x11, 0, 0, 0, 0},
10956 {0x12, 0, 0, 0, 0},
10957 {0x13, 0, 0, 0, 0},
10958 {0x14, 0, 0, 0, 0},
10959 {0x15, 0, 0, 0, 0},
10960 {0x16, 0, 0, 0, 0},
10961 {0x17, 0, 0, 0, 0},
10962 {0x18, 0, 0, 0, 0},
10963 {0x19, 0, 0, 0, 0},
10964 {0x1A, 0, 0, 0, 0},
10965 {0x1B, 0, 0, 0, 0},
10966 {0x1C, 0, 0, 0, 0},
10967 {0x1D, 0, 0, 0, 0},
10968 {0x1E, 0, 0, 0, 0},
10969 {0x1F, 0, 0, 0, 0},
10970 {0x20, 0, 0, 0, 0},
10971 {0x21, 0, 0, 0, 0},
10972 {0x22, 0x60, 0x60, 0, 0},
10973 {0x23, 0x6, 0x6, 0, 0},
10974 {0x24, 0xc, 0xc, 0, 0},
10975 {0x25, 0, 0, 0, 0},
10976 {0x26, 0, 0, 0, 0},
10977 {0x27, 0, 0, 0, 0},
10978 {0x28, 0x1, 0x1, 0, 0},
10979 {0x29, 0, 0, 0, 0},
10980 {0x2A, 0, 0, 0, 0},
10981 {0x2B, 0, 0, 0, 0},
10982 {0x2C, 0, 0, 0, 0},
10983 {0x2D, 0, 0, 0, 0},
10984 {0x2E, 0, 0, 0, 0},
10985 {0x2F, 0x1f, 0x1f, 0, 0},
10986 {0x30, 0x15, 0x15, 0, 0},
10987 {0x31, 0xf, 0xf, 0, 0},
10988 {0x32, 0, 0, 0, 0},
10989 {0x33, 0, 0, 0, 0},
10990 {0x34, 0, 0, 0, 0},
10991 {0x35, 0, 0, 0, 0},
10992 {0x36, 0, 0, 0, 0},
10993 {0x37, 0, 0, 0, 0},
10994 {0x38, 0, 0, 0, 0},
10995 {0x39, 0, 0, 0, 0},
10996 {0x3A, 0, 0, 0, 0},
10997 {0x3B, 0, 0, 0, 0},
10998 {0x3C, 0x13, 0x13, 0, 0},
10999 {0x3D, 0xf, 0xf, 0, 0},
11000 {0x3E, 0x18, 0x18, 0, 0},
11001 {0x3F, 0, 0, 0, 0},
11002 {0x40, 0, 0, 0, 0},
11003 {0x41, 0x20, 0x20, 0, 0},
11004 {0x42, 0x20, 0x20, 0, 0},
11005 {0x43, 0, 0, 0, 0},
11006 {0x44, 0x77, 0x77, 0, 0},
11007 {0x45, 0x7, 0x7, 0, 0},
11008 {0x46, 0x1, 0x1, 0, 0},
11009 {0x47, 0x6, 0x6, 1, 1},
11010 {0x48, 0xf, 0xf, 0, 0},
11011 {0x49, 0x3f, 0x3f, 1, 1},
11012 {0x4A, 0x32, 0x32, 0, 0},
11013 {0x4B, 0x6, 0x6, 1, 1},
11014 {0x4C, 0x6, 0x6, 1, 1},
11015 {0x4D, 0x4, 0x4, 0, 0},
11016 {0x4E, 0x2b, 0x2b, 1, 1},
11017 {0x4F, 0x1, 0x1, 0, 0},
11018 {0x50, 0x1c, 0x1c, 0, 0},
11019 {0x51, 0x2, 0x2, 0, 0},
11020 {0x52, 0x2, 0x2, 0, 0},
11021 {0x53, 0xf7, 0xf7, 1, 1},
11022 {0x54, 0xb4, 0xb4, 0, 0},
11023 {0x55, 0xd2, 0xd2, 0, 0},
11024 {0x56, 0, 0, 0, 0},
11025 {0x57, 0, 0, 0, 0},
11026 {0x58, 0x4, 0x4, 0, 0},
11027 {0x59, 0x96, 0x96, 0, 0},
11028 {0x5A, 0x3e, 0x3e, 0, 0},
11029 {0x5B, 0x3e, 0x3e, 0, 0},
11030 {0x5C, 0x13, 0x13, 0, 0},
11031 {0x5D, 0x2, 0x2, 0, 0},
11032 {0x5E, 0, 0, 0, 0},
11033 {0x5F, 0x7, 0x7, 0, 0},
11034 {0x60, 0x7, 0x7, 1, 1},
11035 {0x61, 0x8, 0x8, 0, 0},
11036 {0x62, 0x3, 0x3, 0, 0},
11037 {0x63, 0, 0, 0, 0},
11038 {0x64, 0, 0, 0, 0},
11039 {0x65, 0, 0, 0, 0},
11040 {0x66, 0, 0, 0, 0},
11041 {0x67, 0, 0, 0, 0},
11042 {0x68, 0x40, 0x40, 0, 0},
11043 {0x69, 0, 0, 0, 0},
11044 {0x6A, 0, 0, 0, 0},
11045 {0x6B, 0, 0, 0, 0},
11046 {0x6C, 0, 0, 0, 0},
11047 {0x6D, 0x1, 0x1, 0, 0},
11048 {0x6E, 0, 0, 0, 0},
11049 {0x6F, 0, 0, 0, 0},
11050 {0x70, 0x60, 0x60, 0, 0},
11051 {0x71, 0x66, 0x66, 0, 0},
11052 {0x72, 0xc, 0xc, 0, 0},
11053 {0x73, 0x66, 0x66, 0, 0},
11054 {0x74, 0x8f, 0x8f, 1, 1},
11055 {0x75, 0, 0, 0, 0},
11056 {0x76, 0xcc, 0xcc, 0, 0},
11057 {0x77, 0x1, 0x1, 0, 0},
11058 {0x78, 0x66, 0x66, 0, 0},
11059 {0x79, 0x66, 0x66, 0, 0},
11060 {0x7A, 0, 0, 0, 0},
11061 {0x7B, 0, 0, 0, 0},
11062 {0x7C, 0, 0, 0, 0},
11063 {0x7D, 0, 0, 0, 0},
11064 {0x7E, 0, 0, 0, 0},
11065 {0x7F, 0, 0, 0, 0},
11066 {0x80, 0, 0, 0, 0},
11067 {0x81, 0, 0, 0, 0},
11068 {0x82, 0, 0, 0, 0},
11069 {0x83, 0, 0, 0, 0},
11070 {0x84, 0, 0, 0, 0},
11071 {0x85, 0xff, 0xff, 0, 0},
11072 {0x86, 0, 0, 0, 0},
11073 {0x87, 0, 0, 0, 0},
11074 {0x88, 0, 0, 0, 0},
11075 {0x89, 0, 0, 0, 0},
11076 {0x8A, 0, 0, 0, 0},
11077 {0x8B, 0, 0, 0, 0},
11078 {0x8C, 0, 0, 0, 0},
11079 {0x8D, 0, 0, 0, 0},
11080 {0x8E, 0, 0, 0, 0},
11081 {0x8F, 0, 0, 0, 0},
11082 {0x90, 0, 0, 0, 0},
11083 {0x91, 0, 0, 0, 0},
11084 {0x92, 0, 0, 0, 0},
11085 {0x93, 0, 0, 0, 0},
11086 {0x94, 0, 0, 0, 0},
11087 {0x95, 0, 0, 0, 0},
11088 {0x96, 0, 0, 0, 0},
11089 {0x97, 0, 0, 0, 0},
11090 {0x98, 0, 0, 0, 0},
11091 {0x99, 0, 0, 0, 0},
11092 {0x9A, 0, 0, 0, 0},
11093 {0x9B, 0, 0, 0, 0},
11094 {0x9C, 0, 0, 0, 0},
11095 {0x9D, 0, 0, 0, 0},
11096 {0x9E, 0, 0, 0, 0},
11097 {0x9F, 0x6, 0x6, 0, 0},
11098 {0xA0, 0x66, 0x66, 0, 0},
11099 {0xA1, 0x66, 0x66, 0, 0},
11100 {0xA2, 0x66, 0x66, 0, 0},
11101 {0xA3, 0x66, 0x66, 0, 0},
11102 {0xA4, 0x66, 0x66, 0, 0},
11103 {0xA5, 0x66, 0x66, 0, 0},
11104 {0xA6, 0x66, 0x66, 0, 0},
11105 {0xA7, 0x66, 0x66, 0, 0},
11106 {0xA8, 0x66, 0x66, 0, 0},
11107 {0xA9, 0x66, 0x66, 0, 0},
11108 {0xAA, 0x66, 0x66, 0, 0},
11109 {0xAB, 0x66, 0x66, 0, 0},
11110 {0xAC, 0x66, 0x66, 0, 0},
11111 {0xAD, 0x66, 0x66, 0, 0},
11112 {0xAE, 0x66, 0x66, 0, 0},
11113 {0xAF, 0x66, 0x66, 0, 0},
11114 {0xB0, 0x66, 0x66, 0, 0},
11115 {0xB1, 0x66, 0x66, 0, 0},
11116 {0xB2, 0x66, 0x66, 0, 0},
11117 {0xB3, 0xa, 0xa, 0, 0},
11118 {0xB4, 0, 0, 0, 0},
11119 {0xB5, 0, 0, 0, 0},
11120 {0xB6, 0, 0, 0, 0},
11121 {0xFFFF, 0, 0, 0, 0},
11122};
11123
11124static const struct radio_regs regs_TX_2056_rev11[] = {
11125 {0x02, 0, 0, 0, 0},
11126 {0x03, 0, 0, 0, 0},
11127 {0x04, 0, 0, 0, 0},
11128 {0x05, 0, 0, 0, 0},
11129 {0x06, 0, 0, 0, 0},
11130 {0x07, 0, 0, 0, 0},
11131 {0x08, 0, 0, 0, 0},
11132 {0x09, 0, 0, 0, 0},
11133 {0x0A, 0, 0, 0, 0},
11134 {0x0B, 0, 0, 0, 0},
11135 {0x0C, 0, 0, 0, 0},
11136 {0x0D, 0, 0, 0, 0},
11137 {0x0E, 0, 0, 0, 0},
11138 {0x0F, 0, 0, 0, 0},
11139 {0x10, 0, 0, 0, 0},
11140 {0x11, 0, 0, 0, 0},
11141 {0x12, 0, 0, 0, 0},
11142 {0x13, 0, 0, 0, 0},
11143 {0x14, 0, 0, 0, 0},
11144 {0x15, 0, 0, 0, 0},
11145 {0x16, 0, 0, 0, 0},
11146 {0x17, 0, 0, 0, 0},
11147 {0x18, 0, 0, 0, 0},
11148 {0x19, 0, 0, 0, 0},
11149 {0x1A, 0, 0, 0, 0},
11150 {0x1B, 0, 0, 0, 0},
11151 {0x1C, 0, 0, 0, 0},
11152 {0x1D, 0, 0, 0, 0},
11153 {0x1E, 0, 0, 0, 0},
11154 {0x1F, 0, 0, 0, 0},
11155 {0x20, 0, 0, 0, 0},
11156 {0x21, 0x88, 0x88, 0, 0},
11157 {0x22, 0x88, 0x88, 0, 0},
11158 {0x23, 0x88, 0x88, 0, 0},
11159 {0x24, 0x88, 0x88, 0, 0},
11160 {0x25, 0xc, 0xc, 0, 0},
11161 {0x26, 0, 0, 0, 0},
11162 {0x27, 0x3, 0x3, 0, 0},
11163 {0x28, 0, 0, 0, 0},
11164 {0x29, 0x3, 0x3, 0, 0},
11165 {0x2A, 0x37, 0x37, 0, 0},
11166 {0x2B, 0x3, 0x3, 0, 0},
11167 {0x2C, 0, 0, 0, 0},
11168 {0x2D, 0, 0, 0, 0},
11169 {0x2E, 0x1, 0x1, 0, 0},
11170 {0x2F, 0x1, 0x1, 0, 0},
11171 {0x30, 0, 0, 0, 0},
11172 {0x31, 0, 0, 0, 0},
11173 {0x32, 0, 0, 0, 0},
11174 {0x33, 0x11, 0x11, 0, 0},
11175 {0x34, 0xee, 0xee, 1, 1},
11176 {0x35, 0, 0, 0, 0},
11177 {0x36, 0, 0, 0, 0},
11178 {0x37, 0x3, 0x3, 0, 0},
11179 {0x38, 0x50, 0x50, 1, 1},
11180 {0x39, 0, 0, 0, 0},
11181 {0x3A, 0x50, 0x50, 1, 1},
11182 {0x3B, 0, 0, 0, 0},
11183 {0x3C, 0x6e, 0x6e, 0, 0},
11184 {0x3D, 0xf0, 0xf0, 1, 1},
11185 {0x3E, 0, 0, 0, 0},
11186 {0x3F, 0, 0, 0, 0},
11187 {0x40, 0, 0, 0, 0},
11188 {0x41, 0x3, 0x3, 0, 0},
11189 {0x42, 0x3, 0x3, 0, 0},
11190 {0x43, 0, 0, 0, 0},
11191 {0x44, 0x1e, 0x1e, 0, 0},
11192 {0x45, 0, 0, 0, 0},
11193 {0x46, 0x6e, 0x6e, 0, 0},
11194 {0x47, 0xf0, 0xf0, 1, 1},
11195 {0x48, 0, 0, 0, 0},
11196 {0x49, 0x2, 0x2, 0, 0},
11197 {0x4A, 0xff, 0xff, 1, 1},
11198 {0x4B, 0xc, 0xc, 0, 0},
11199 {0x4C, 0, 0, 0, 0},
11200 {0x4D, 0x38, 0x38, 0, 0},
11201 {0x4E, 0x70, 0x70, 1, 1},
11202 {0x4F, 0x2, 0x2, 0, 0},
11203 {0x50, 0x88, 0x88, 0, 0},
11204 {0x51, 0xc, 0xc, 0, 0},
11205 {0x52, 0, 0, 0, 0},
11206 {0x53, 0x8, 0x8, 0, 0},
11207 {0x54, 0x70, 0x70, 1, 1},
11208 {0x55, 0x2, 0x2, 0, 0},
11209 {0x56, 0xff, 0xff, 1, 1},
11210 {0x57, 0, 0, 0, 0},
11211 {0x58, 0x83, 0x83, 0, 0},
11212 {0x59, 0x77, 0x77, 1, 1},
11213 {0x5A, 0, 0, 0, 0},
11214 {0x5B, 0x2, 0x2, 0, 0},
11215 {0x5C, 0x88, 0x88, 0, 0},
11216 {0x5D, 0, 0, 0, 0},
11217 {0x5E, 0x8, 0x8, 0, 0},
11218 {0x5F, 0x77, 0x77, 1, 1},
11219 {0x60, 0x1, 0x1, 0, 0},
11220 {0x61, 0, 0, 0, 0},
11221 {0x62, 0x7, 0x7, 0, 0},
11222 {0x63, 0, 0, 0, 0},
11223 {0x64, 0x7, 0x7, 0, 0},
11224 {0x65, 0, 0, 0, 0},
11225 {0x66, 0, 0, 0, 0},
11226 {0x67, 0, 0, 1, 1},
11227 {0x68, 0, 0, 0, 0},
11228 {0x69, 0xa, 0xa, 0, 0},
11229 {0x6A, 0, 0, 0, 0},
11230 {0x6B, 0, 0, 0, 0},
11231 {0x6C, 0, 0, 0, 0},
11232 {0x6D, 0, 0, 0, 0},
11233 {0x6E, 0, 0, 0, 0},
11234 {0x6F, 0, 0, 0, 0},
11235 {0x70, 0, 0, 0, 0},
11236 {0x71, 0x2, 0x2, 0, 0},
11237 {0x72, 0, 0, 0, 0},
11238 {0x73, 0, 0, 0, 0},
11239 {0x74, 0xe, 0xe, 0, 0},
11240 {0x75, 0xe, 0xe, 0, 0},
11241 {0x76, 0xe, 0xe, 0, 0},
11242 {0x77, 0x13, 0x13, 0, 0},
11243 {0x78, 0x13, 0x13, 0, 0},
11244 {0x79, 0x1b, 0x1b, 0, 0},
11245 {0x7A, 0x1b, 0x1b, 0, 0},
11246 {0x7B, 0x55, 0x55, 0, 0},
11247 {0x7C, 0x5b, 0x5b, 0, 0},
11248 {0x7D, 0x30, 0x30, 1, 1},
11249 {0x7E, 0, 0, 0, 0},
11250 {0x7F, 0, 0, 0, 0},
11251 {0x80, 0, 0, 0, 0},
11252 {0x81, 0, 0, 0, 0},
11253 {0x82, 0, 0, 0, 0},
11254 {0x83, 0, 0, 0, 0},
11255 {0x84, 0, 0, 0, 0},
11256 {0x85, 0, 0, 0, 0},
11257 {0x86, 0, 0, 0, 0},
11258 {0x87, 0, 0, 0, 0},
11259 {0x88, 0, 0, 0, 0},
11260 {0x89, 0, 0, 0, 0},
11261 {0x8A, 0, 0, 0, 0},
11262 {0x8B, 0, 0, 0, 0},
11263 {0x8C, 0, 0, 0, 0},
11264 {0x8D, 0, 0, 0, 0},
11265 {0x8E, 0, 0, 0, 0},
11266 {0x8F, 0, 0, 0, 0},
11267 {0x90, 0, 0, 0, 0},
11268 {0x91, 0, 0, 0, 0},
11269 {0x92, 0, 0, 0, 0},
11270 {0x93, 0x70, 0x70, 0, 0},
11271 {0x94, 0x70, 0x70, 0, 0},
11272 {0x95, 0x70, 0x70, 0, 0},
11273 {0x96, 0x70, 0x70, 0, 0},
11274 {0x97, 0x70, 0x70, 0, 0},
11275 {0x98, 0x70, 0x70, 0, 0},
11276 {0x99, 0x70, 0x70, 0, 0},
11277 {0x9A, 0x70, 0x70, 0, 0},
11278 {0xFFFF, 0, 0, 0, 0},
11279};
11280
11281static const struct radio_regs regs_RX_2056_rev11[] = {
11282 {0x02, 0, 0, 0, 0},
11283 {0x03, 0, 0, 0, 0},
11284 {0x04, 0, 0, 0, 0},
11285 {0x05, 0, 0, 0, 0},
11286 {0x06, 0, 0, 0, 0},
11287 {0x07, 0, 0, 0, 0},
11288 {0x08, 0, 0, 0, 0},
11289 {0x09, 0, 0, 0, 0},
11290 {0x0A, 0, 0, 0, 0},
11291 {0x0B, 0, 0, 0, 0},
11292 {0x0C, 0, 0, 0, 0},
11293 {0x0D, 0, 0, 0, 0},
11294 {0x0E, 0, 0, 0, 0},
11295 {0x0F, 0, 0, 0, 0},
11296 {0x10, 0, 0, 0, 0},
11297 {0x11, 0, 0, 0, 0},
11298 {0x12, 0, 0, 0, 0},
11299 {0x13, 0, 0, 0, 0},
11300 {0x14, 0, 0, 0, 0},
11301 {0x15, 0, 0, 0, 0},
11302 {0x16, 0, 0, 0, 0},
11303 {0x17, 0, 0, 0, 0},
11304 {0x18, 0, 0, 0, 0},
11305 {0x19, 0, 0, 0, 0},
11306 {0x1A, 0, 0, 0, 0},
11307 {0x1B, 0, 0, 0, 0},
11308 {0x1C, 0, 0, 0, 0},
11309 {0x1D, 0, 0, 0, 0},
11310 {0x1E, 0, 0, 0, 0},
11311 {0x1F, 0, 0, 0, 0},
11312 {0x20, 0x3, 0x3, 0, 0},
11313 {0x21, 0, 0, 0, 0},
11314 {0x22, 0, 0, 0, 0},
11315 {0x23, 0x90, 0x90, 0, 0},
11316 {0x24, 0x55, 0x55, 0, 0},
11317 {0x25, 0x15, 0x15, 0, 0},
11318 {0x26, 0x5, 0x5, 0, 0},
11319 {0x27, 0x15, 0x15, 0, 0},
11320 {0x28, 0x5, 0x5, 0, 0},
11321 {0x29, 0x20, 0x20, 0, 0},
11322 {0x2A, 0x11, 0x11, 0, 0},
11323 {0x2B, 0x90, 0x90, 0, 0},
11324 {0x2C, 0, 0, 0, 0},
11325 {0x2D, 0x88, 0x88, 0, 0},
11326 {0x2E, 0x32, 0x32, 0, 0},
11327 {0x2F, 0x77, 0x77, 0, 0},
11328 {0x30, 0x17, 0x17, 1, 1},
11329 {0x31, 0xff, 0xff, 1, 1},
11330 {0x32, 0x20, 0x20, 0, 0},
11331 {0x33, 0, 0, 0, 0},
11332 {0x34, 0x88, 0x88, 0, 0},
11333 {0x35, 0x32, 0x32, 0, 0},
11334 {0x36, 0x77, 0x77, 0, 0},
11335 {0x37, 0x17, 0x17, 1, 1},
11336 {0x38, 0xf0, 0xf0, 1, 1},
11337 {0x39, 0x20, 0x20, 0, 0},
11338 {0x3A, 0x8, 0x8, 0, 0},
11339 {0x3B, 0x55, 0x55, 1, 1},
11340 {0x3C, 0, 0, 0, 0},
11341 {0x3D, 0x88, 0x88, 1, 1},
11342 {0x3E, 0, 0, 0, 0},
11343 {0x3F, 0x44, 0x44, 0, 0},
11344 {0x40, 0x7, 0x7, 1, 1},
11345 {0x41, 0x6, 0x6, 0, 0},
11346 {0x42, 0x4, 0x4, 0, 0},
11347 {0x43, 0, 0, 0, 0},
11348 {0x44, 0x8, 0x8, 0, 0},
11349 {0x45, 0x55, 0x55, 1, 1},
11350 {0x46, 0, 0, 0, 0},
11351 {0x47, 0x11, 0x11, 0, 0},
11352 {0x48, 0, 0, 0, 0},
11353 {0x49, 0x44, 0x44, 0, 0},
11354 {0x4A, 0x7, 0x7, 0, 0},
11355 {0x4B, 0x6, 0x6, 0, 0},
11356 {0x4C, 0x4, 0x4, 0, 0},
11357 {0x4D, 0, 0, 0, 0},
11358 {0x4E, 0, 0, 0, 0},
11359 {0x4F, 0x26, 0x26, 1, 1},
11360 {0x50, 0x26, 0x26, 1, 1},
11361 {0x51, 0xf, 0xf, 1, 1},
11362 {0x52, 0xf, 0xf, 1, 1},
11363 {0x53, 0x44, 0x44, 0, 0},
11364 {0x54, 0, 0, 0, 0},
11365 {0x55, 0, 0, 0, 0},
11366 {0x56, 0x8, 0x8, 0, 0},
11367 {0x57, 0x8, 0x8, 0, 0},
11368 {0x58, 0x7, 0x7, 0, 0},
11369 {0x59, 0x22, 0x22, 0, 0},
11370 {0x5A, 0x22, 0x22, 0, 0},
11371 {0x5B, 0x2, 0x2, 0, 0},
11372 {0x5C, 0x4, 0x4, 1, 1},
11373 {0x5D, 0x7, 0x7, 0, 0},
11374 {0x5E, 0x55, 0x55, 0, 0},
11375 {0x5F, 0x23, 0x23, 0, 0},
11376 {0x60, 0x41, 0x41, 0, 0},
11377 {0x61, 0x1, 0x1, 0, 0},
11378 {0x62, 0xa, 0xa, 0, 0},
11379 {0x63, 0, 0, 0, 0},
11380 {0x64, 0, 0, 0, 0},
11381 {0x65, 0, 0, 0, 0},
11382 {0x66, 0, 0, 0, 0},
11383 {0x67, 0, 0, 0, 0},
11384 {0x68, 0, 0, 0, 0},
11385 {0x69, 0, 0, 0, 0},
11386 {0x6A, 0, 0, 0, 0},
11387 {0x6B, 0xc, 0xc, 0, 0},
11388 {0x6C, 0, 0, 0, 0},
11389 {0x6D, 0, 0, 0, 0},
11390 {0x6E, 0, 0, 0, 0},
11391 {0x6F, 0, 0, 0, 0},
11392 {0x70, 0, 0, 0, 0},
11393 {0x71, 0, 0, 0, 0},
11394 {0x72, 0x22, 0x22, 0, 0},
11395 {0x73, 0x22, 0x22, 0, 0},
11396 {0x74, 0, 0, 1, 1},
11397 {0x75, 0xa, 0xa, 0, 0},
11398 {0x76, 0x1, 0x1, 0, 0},
11399 {0x77, 0x22, 0x22, 0, 0},
11400 {0x78, 0x30, 0x30, 0, 0},
11401 {0x79, 0, 0, 0, 0},
11402 {0x7A, 0, 0, 0, 0},
11403 {0x7B, 0, 0, 0, 0},
11404 {0x7C, 0, 0, 0, 0},
11405 {0x7D, 0x5, 0x5, 1, 1},
11406 {0x7E, 0, 0, 0, 0},
11407 {0x7F, 0, 0, 0, 0},
11408 {0x80, 0, 0, 0, 0},
11409 {0x81, 0, 0, 0, 0},
11410 {0x82, 0, 0, 0, 0},
11411 {0x83, 0, 0, 0, 0},
11412 {0x84, 0, 0, 0, 0},
11413 {0x85, 0, 0, 0, 0},
11414 {0x86, 0, 0, 0, 0},
11415 {0x87, 0, 0, 0, 0},
11416 {0x88, 0, 0, 0, 0},
11417 {0x89, 0, 0, 0, 0},
11418 {0x8A, 0, 0, 0, 0},
11419 {0x8B, 0, 0, 0, 0},
11420 {0x8C, 0, 0, 0, 0},
11421 {0x8D, 0, 0, 0, 0},
11422 {0x8E, 0, 0, 0, 0},
11423 {0x8F, 0, 0, 0, 0},
11424 {0x90, 0, 0, 0, 0},
11425 {0x91, 0, 0, 0, 0},
11426 {0x92, 0, 0, 0, 0},
11427 {0x93, 0, 0, 0, 0},
11428 {0x94, 0, 0, 0, 0},
11429 {0xFFFF, 0, 0, 0, 0},
11430};
11431
11432static struct radio_20xx_regs regs_2057_rev4[] = {
11433 {0x00, 0x84, 0},
11434 {0x01, 0, 0},
11435 {0x02, 0x60, 0},
11436 {0x03, 0x1f, 0},
11437 {0x04, 0x4, 0},
11438 {0x05, 0x2, 0},
11439 {0x06, 0x1, 0},
11440 {0x07, 0x1, 0},
11441 {0x08, 0x1, 0},
11442 {0x09, 0x69, 0},
11443 {0x0A, 0x66, 0},
11444 {0x0B, 0x6, 0},
11445 {0x0C, 0x18, 0},
11446 {0x0D, 0x3, 0},
11447 {0x0E, 0x20, 1},
11448 {0x0F, 0x20, 0},
11449 {0x10, 0, 0},
11450 {0x11, 0x7c, 0},
11451 {0x12, 0x42, 0},
11452 {0x13, 0xbd, 0},
11453 {0x14, 0x7, 0},
11454 {0x15, 0xf7, 0},
11455 {0x16, 0x8, 0},
11456 {0x17, 0x17, 0},
11457 {0x18, 0x7, 0},
11458 {0x19, 0, 0},
11459 {0x1A, 0x2, 0},
11460 {0x1B, 0x13, 0},
11461 {0x1C, 0x3e, 0},
11462 {0x1D, 0x3e, 0},
11463 {0x1E, 0x96, 0},
11464 {0x1F, 0x4, 0},
11465 {0x20, 0, 0},
11466 {0x21, 0, 0},
11467 {0x22, 0x17, 0},
11468 {0x23, 0x4, 0},
11469 {0x24, 0x1, 0},
11470 {0x25, 0x6, 0},
11471 {0x26, 0x4, 0},
11472 {0x27, 0xd, 0},
11473 {0x28, 0xd, 0},
11474 {0x29, 0x30, 0},
11475 {0x2A, 0x32, 0},
11476 {0x2B, 0x8, 0},
11477 {0x2C, 0x1c, 0},
11478 {0x2D, 0x2, 0},
11479 {0x2E, 0x4, 0},
11480 {0x2F, 0x7f, 0},
11481 {0x30, 0x27, 0},
11482 {0x31, 0, 1},
11483 {0x32, 0, 1},
11484 {0x33, 0, 1},
11485 {0x34, 0, 0},
11486 {0x35, 0x26, 1},
11487 {0x36, 0x18, 0},
11488 {0x37, 0x7, 0},
11489 {0x38, 0x66, 0},
11490 {0x39, 0x66, 0},
11491 {0x3A, 0x66, 0},
11492 {0x3B, 0x66, 0},
11493 {0x3C, 0xff, 1},
11494 {0x3D, 0xff, 1},
11495 {0x3E, 0xff, 1},
11496 {0x3F, 0xff, 1},
11497 {0x40, 0x16, 0},
11498 {0x41, 0x7, 0},
11499 {0x42, 0x19, 0},
11500 {0x43, 0x7, 0},
11501 {0x44, 0x6, 0},
11502 {0x45, 0x3, 0},
11503 {0x46, 0x1, 0},
11504 {0x47, 0x7, 0},
11505 {0x48, 0x33, 0},
11506 {0x49, 0x5, 0},
11507 {0x4A, 0x77, 0},
11508 {0x4B, 0x66, 0},
11509 {0x4C, 0x66, 0},
11510 {0x4D, 0, 0},
11511 {0x4E, 0x4, 0},
11512 {0x4F, 0xc, 0},
11513 {0x50, 0, 0},
11514 {0x51, 0x75, 0},
11515 {0x56, 0x7, 0},
11516 {0x57, 0, 0},
11517 {0x58, 0, 0},
11518 {0x59, 0xa8, 0},
11519 {0x5A, 0, 0},
11520 {0x5B, 0x1f, 0},
11521 {0x5C, 0x30, 0},
11522 {0x5D, 0x1, 0},
11523 {0x5E, 0x30, 0},
11524 {0x5F, 0x70, 0},
11525 {0x60, 0, 0},
11526 {0x61, 0, 0},
11527 {0x62, 0x33, 1},
11528 {0x63, 0x19, 0},
11529 {0x64, 0x62, 0},
11530 {0x65, 0, 0},
11531 {0x66, 0x11, 0},
11532 {0x69, 0, 0},
11533 {0x6A, 0x7e, 0},
11534 {0x6B, 0x3f, 0},
11535 {0x6C, 0x7f, 0},
11536 {0x6D, 0x78, 0},
11537 {0x6E, 0xc8, 0},
11538 {0x6F, 0x88, 0},
11539 {0x70, 0x8, 0},
11540 {0x71, 0xf, 0},
11541 {0x72, 0xbc, 0},
11542 {0x73, 0x8, 0},
11543 {0x74, 0x60, 0},
11544 {0x75, 0x1e, 0},
11545 {0x76, 0x70, 0},
11546 {0x77, 0, 0},
11547 {0x78, 0, 0},
11548 {0x79, 0, 0},
11549 {0x7A, 0x33, 0},
11550 {0x7B, 0x1e, 0},
11551 {0x7C, 0x62, 0},
11552 {0x7D, 0x11, 0},
11553 {0x80, 0x3c, 0},
11554 {0x81, 0x9c, 0},
11555 {0x82, 0xa, 0},
11556 {0x83, 0x9d, 0},
11557 {0x84, 0xa, 0},
11558 {0x85, 0, 0},
11559 {0x86, 0x40, 0},
11560 {0x87, 0x40, 0},
11561 {0x88, 0x88, 0},
11562 {0x89, 0x10, 0},
11563 {0x8A, 0xf0, 1},
11564 {0x8B, 0x10, 1},
11565 {0x8C, 0xf0, 1},
11566 {0x8D, 0, 0},
11567 {0x8E, 0, 0},
11568 {0x8F, 0x10, 0},
11569 {0x90, 0x55, 0},
11570 {0x91, 0x3f, 1},
11571 {0x92, 0x36, 1},
11572 {0x93, 0, 0},
11573 {0x94, 0, 0},
11574 {0x95, 0, 0},
11575 {0x96, 0x87, 0},
11576 {0x97, 0x11, 0},
11577 {0x98, 0, 0},
11578 {0x99, 0x33, 0},
11579 {0x9A, 0x88, 0},
11580 {0x9B, 0, 0},
11581 {0x9C, 0x87, 0},
11582 {0x9D, 0x11, 0},
11583 {0x9E, 0, 0},
11584 {0x9F, 0x33, 0},
11585 {0xA0, 0x88, 0},
11586 {0xA1, 0xe1, 0},
11587 {0xA2, 0x3f, 0},
11588 {0xA3, 0x44, 0},
11589 {0xA4, 0x8c, 1},
11590 {0xA5, 0x6d, 0},
11591 {0xA6, 0x22, 0},
11592 {0xA7, 0xbe, 0},
11593 {0xA8, 0x55, 1},
11594 {0xA9, 0xc, 0},
11595 {0xAA, 0xc, 0},
11596 {0xAB, 0xaa, 0},
11597 {0xAC, 0x2, 0},
11598 {0xAD, 0, 0},
11599 {0xAE, 0x10, 0},
11600 {0xAF, 0x1, 1},
11601 {0xB0, 0, 0},
11602 {0xB1, 0, 0},
11603 {0xB2, 0x80, 0},
11604 {0xB3, 0x60, 0},
11605 {0xB4, 0x44, 0},
11606 {0xB5, 0x55, 0},
11607 {0xB6, 0x1, 0},
11608 {0xB7, 0x55, 0},
11609 {0xB8, 0x1, 0},
11610 {0xB9, 0x5, 0},
11611 {0xBA, 0x55, 0},
11612 {0xBB, 0x55, 0},
11613 {0xC1, 0, 0},
11614 {0xC2, 0, 0},
11615 {0xC3, 0, 0},
11616 {0xC4, 0, 0},
11617 {0xC5, 0, 0},
11618 {0xC6, 0, 0},
11619 {0xC7, 0, 0},
11620 {0xC8, 0, 0},
11621 {0xC9, 0, 0},
11622 {0xCA, 0, 0},
11623 {0xCB, 0, 0},
11624 {0xCC, 0, 0},
11625 {0xCD, 0, 0},
11626 {0xCE, 0x5e, 0},
11627 {0xCF, 0xc, 0},
11628 {0xD0, 0xc, 0},
11629 {0xD1, 0xc, 0},
11630 {0xD2, 0, 0},
11631 {0xD3, 0x2b, 0},
11632 {0xD4, 0xc, 0},
11633 {0xD5, 0, 0},
11634 {0xD6, 0x75, 0},
11635 {0xDB, 0x7, 0},
11636 {0xDC, 0, 0},
11637 {0xDD, 0, 0},
11638 {0xDE, 0xa8, 0},
11639 {0xDF, 0, 0},
11640 {0xE0, 0x1f, 0},
11641 {0xE1, 0x30, 0},
11642 {0xE2, 0x1, 0},
11643 {0xE3, 0x30, 0},
11644 {0xE4, 0x70, 0},
11645 {0xE5, 0, 0},
11646 {0xE6, 0, 0},
11647 {0xE7, 0x33, 0},
11648 {0xE8, 0x19, 0},
11649 {0xE9, 0x62, 0},
11650 {0xEA, 0, 0},
11651 {0xEB, 0x11, 0},
11652 {0xEE, 0, 0},
11653 {0xEF, 0x7e, 0},
11654 {0xF0, 0x3f, 0},
11655 {0xF1, 0x7f, 0},
11656 {0xF2, 0x78, 0},
11657 {0xF3, 0xc8, 0},
11658 {0xF4, 0x88, 0},
11659 {0xF5, 0x8, 0},
11660 {0xF6, 0xf, 0},
11661 {0xF7, 0xbc, 0},
11662 {0xF8, 0x8, 0},
11663 {0xF9, 0x60, 0},
11664 {0xFA, 0x1e, 0},
11665 {0xFB, 0x70, 0},
11666 {0xFC, 0, 0},
11667 {0xFD, 0, 0},
11668 {0xFE, 0, 0},
11669 {0xFF, 0x33, 0},
11670 {0x100, 0x1e, 0},
11671 {0x101, 0x62, 0},
11672 {0x102, 0x11, 0},
11673 {0x105, 0x3c, 0},
11674 {0x106, 0x9c, 0},
11675 {0x107, 0xa, 0},
11676 {0x108, 0x9d, 0},
11677 {0x109, 0xa, 0},
11678 {0x10A, 0, 0},
11679 {0x10B, 0x40, 0},
11680 {0x10C, 0x40, 0},
11681 {0x10D, 0x88, 0},
11682 {0x10E, 0x10, 0},
11683 {0x10F, 0xf0, 1},
11684 {0x110, 0x10, 1},
11685 {0x111, 0xf0, 1},
11686 {0x112, 0, 0},
11687 {0x113, 0, 0},
11688 {0x114, 0x10, 0},
11689 {0x115, 0x55, 0},
11690 {0x116, 0x3f, 1},
11691 {0x117, 0x36, 1},
11692 {0x118, 0, 0},
11693 {0x119, 0, 0},
11694 {0x11A, 0, 0},
11695 {0x11B, 0x87, 0},
11696 {0x11C, 0x11, 0},
11697 {0x11D, 0, 0},
11698 {0x11E, 0x33, 0},
11699 {0x11F, 0x88, 0},
11700 {0x120, 0, 0},
11701 {0x121, 0x87, 0},
11702 {0x122, 0x11, 0},
11703 {0x123, 0, 0},
11704 {0x124, 0x33, 0},
11705 {0x125, 0x88, 0},
11706 {0x126, 0xe1, 0},
11707 {0x127, 0x3f, 0},
11708 {0x128, 0x44, 0},
11709 {0x129, 0x8c, 1},
11710 {0x12A, 0x6d, 0},
11711 {0x12B, 0x22, 0},
11712 {0x12C, 0xbe, 0},
11713 {0x12D, 0x55, 1},
11714 {0x12E, 0xc, 0},
11715 {0x12F, 0xc, 0},
11716 {0x130, 0xaa, 0},
11717 {0x131, 0x2, 0},
11718 {0x132, 0, 0},
11719 {0x133, 0x10, 0},
11720 {0x134, 0x1, 1},
11721 {0x135, 0, 0},
11722 {0x136, 0, 0},
11723 {0x137, 0x80, 0},
11724 {0x138, 0x60, 0},
11725 {0x139, 0x44, 0},
11726 {0x13A, 0x55, 0},
11727 {0x13B, 0x1, 0},
11728 {0x13C, 0x55, 0},
11729 {0x13D, 0x1, 0},
11730 {0x13E, 0x5, 0},
11731 {0x13F, 0x55, 0},
11732 {0x140, 0x55, 0},
11733 {0x146, 0, 0},
11734 {0x147, 0, 0},
11735 {0x148, 0, 0},
11736 {0x149, 0, 0},
11737 {0x14A, 0, 0},
11738 {0x14B, 0, 0},
11739 {0x14C, 0, 0},
11740 {0x14D, 0, 0},
11741 {0x14E, 0, 0},
11742 {0x14F, 0, 0},
11743 {0x150, 0, 0},
11744 {0x151, 0, 0},
11745 {0x152, 0, 0},
11746 {0x153, 0, 0},
11747 {0x154, 0xc, 0},
11748 {0x155, 0xc, 0},
11749 {0x156, 0xc, 0},
11750 {0x157, 0, 0},
11751 {0x158, 0x2b, 0},
11752 {0x159, 0x84, 0},
11753 {0x15A, 0x15, 0},
11754 {0x15B, 0xf, 0},
11755 {0x15C, 0, 0},
11756 {0x15D, 0, 0},
11757 {0x15E, 0, 1},
11758 {0x15F, 0, 1},
11759 {0x160, 0, 1},
11760 {0x161, 0, 1},
11761 {0x162, 0, 1},
11762 {0x163, 0, 1},
11763 {0x164, 0, 0},
11764 {0x165, 0, 0},
11765 {0x166, 0, 0},
11766 {0x167, 0, 0},
11767 {0x168, 0, 0},
11768 {0x169, 0x2, 1},
11769 {0x16A, 0, 1},
11770 {0x16B, 0, 1},
11771 {0x16C, 0, 1},
11772 {0x16D, 0, 0},
11773 {0x170, 0, 0},
11774 {0x171, 0x77, 0},
11775 {0x172, 0x77, 0},
11776 {0x173, 0x77, 0},
11777 {0x174, 0x77, 0},
11778 {0x175, 0, 0},
11779 {0x176, 0x3, 0},
11780 {0x177, 0x37, 0},
11781 {0x178, 0x3, 0},
11782 {0x179, 0, 0},
11783 {0x17A, 0x21, 0},
11784 {0x17B, 0x21, 0},
11785 {0x17C, 0, 0},
11786 {0x17D, 0xaa, 0},
11787 {0x17E, 0, 0},
11788 {0x17F, 0xaa, 0},
11789 {0x180, 0, 0},
11790 {0x190, 0, 0},
11791 {0x191, 0x77, 0},
11792 {0x192, 0x77, 0},
11793 {0x193, 0x77, 0},
11794 {0x194, 0x77, 0},
11795 {0x195, 0, 0},
11796 {0x196, 0x3, 0},
11797 {0x197, 0x37, 0},
11798 {0x198, 0x3, 0},
11799 {0x199, 0, 0},
11800 {0x19A, 0x21, 0},
11801 {0x19B, 0x21, 0},
11802 {0x19C, 0, 0},
11803 {0x19D, 0xaa, 0},
11804 {0x19E, 0, 0},
11805 {0x19F, 0xaa, 0},
11806 {0x1A0, 0, 0},
11807 {0x1A1, 0x2, 0},
11808 {0x1A2, 0xf, 0},
11809 {0x1A3, 0xf, 0},
11810 {0x1A4, 0, 1},
11811 {0x1A5, 0, 1},
11812 {0x1A6, 0, 1},
11813 {0x1A7, 0x2, 0},
11814 {0x1A8, 0xf, 0},
11815 {0x1A9, 0xf, 0},
11816 {0x1AA, 0, 1},
11817 {0x1AB, 0, 1},
11818 {0x1AC, 0, 1},
11819 {0xFFFF, 0, 0},
11820};
11821
11822static struct radio_20xx_regs regs_2057_rev5[] = {
11823 {0x00, 0, 1},
11824 {0x01, 0x57, 1},
11825 {0x02, 0x20, 1},
11826 {0x03, 0x1f, 0},
11827 {0x04, 0x4, 0},
11828 {0x05, 0x2, 0},
11829 {0x06, 0x1, 0},
11830 {0x07, 0x1, 0},
11831 {0x08, 0x1, 0},
11832 {0x09, 0x69, 0},
11833 {0x0A, 0x66, 0},
11834 {0x0B, 0x6, 0},
11835 {0x0C, 0x18, 0},
11836 {0x0D, 0x3, 0},
11837 {0x0E, 0x20, 0},
11838 {0x0F, 0x20, 0},
11839 {0x10, 0, 0},
11840 {0x11, 0x7c, 0},
11841 {0x12, 0x42, 0},
11842 {0x13, 0xbd, 0},
11843 {0x14, 0x7, 0},
11844 {0x15, 0x87, 0},
11845 {0x16, 0x8, 0},
11846 {0x17, 0x17, 0},
11847 {0x18, 0x7, 0},
11848 {0x19, 0, 0},
11849 {0x1A, 0x2, 0},
11850 {0x1B, 0x13, 0},
11851 {0x1C, 0x3e, 0},
11852 {0x1D, 0x3e, 0},
11853 {0x1E, 0x96, 0},
11854 {0x1F, 0x4, 0},
11855 {0x20, 0, 0},
11856 {0x21, 0, 0},
11857 {0x22, 0x17, 0},
11858 {0x23, 0x6, 1},
11859 {0x24, 0x1, 0},
11860 {0x25, 0x6, 0},
11861 {0x26, 0x4, 0},
11862 {0x27, 0xd, 0},
11863 {0x28, 0xd, 0},
11864 {0x29, 0x30, 0},
11865 {0x2A, 0x32, 0},
11866 {0x2B, 0x8, 0},
11867 {0x2C, 0x1c, 0},
11868 {0x2D, 0x2, 0},
11869 {0x2E, 0x4, 0},
11870 {0x2F, 0x7f, 0},
11871 {0x30, 0x27, 0},
11872 {0x31, 0, 1},
11873 {0x32, 0, 1},
11874 {0x33, 0, 1},
11875 {0x34, 0, 0},
11876 {0x35, 0x20, 0},
11877 {0x36, 0x18, 0},
11878 {0x37, 0x7, 0},
11879 {0x38, 0x66, 0},
11880 {0x39, 0x66, 0},
11881 {0x3C, 0xff, 0},
11882 {0x3D, 0xff, 0},
11883 {0x40, 0x16, 0},
11884 {0x41, 0x7, 0},
11885 {0x45, 0x3, 0},
11886 {0x46, 0x1, 0},
11887 {0x47, 0x7, 0},
11888 {0x4B, 0x66, 0},
11889 {0x4C, 0x66, 0},
11890 {0x4D, 0, 0},
11891 {0x4E, 0x4, 0},
11892 {0x4F, 0xc, 0},
11893 {0x50, 0, 0},
11894 {0x51, 0x70, 1},
11895 {0x56, 0x7, 0},
11896 {0x57, 0, 0},
11897 {0x58, 0, 0},
11898 {0x59, 0x88, 1},
11899 {0x5A, 0, 0},
11900 {0x5B, 0x1f, 0},
11901 {0x5C, 0x20, 1},
11902 {0x5D, 0x1, 0},
11903 {0x5E, 0x30, 0},
11904 {0x5F, 0x70, 0},
11905 {0x60, 0, 0},
11906 {0x61, 0, 0},
11907 {0x62, 0x33, 1},
11908 {0x63, 0xf, 1},
11909 {0x64, 0xf, 1},
11910 {0x65, 0, 0},
11911 {0x66, 0x11, 0},
11912 {0x80, 0x3c, 0},
11913 {0x81, 0x1, 1},
11914 {0x82, 0xa, 0},
11915 {0x85, 0, 0},
11916 {0x86, 0x40, 0},
11917 {0x87, 0x40, 0},
11918 {0x88, 0x88, 0},
11919 {0x89, 0x10, 0},
11920 {0x8A, 0xf0, 0},
11921 {0x8B, 0x10, 0},
11922 {0x8C, 0xf0, 0},
11923 {0x8F, 0x10, 0},
11924 {0x90, 0x55, 0},
11925 {0x91, 0x3f, 1},
11926 {0x92, 0x36, 1},
11927 {0x93, 0, 0},
11928 {0x94, 0, 0},
11929 {0x95, 0, 0},
11930 {0x96, 0x87, 0},
11931 {0x97, 0x11, 0},
11932 {0x98, 0, 0},
11933 {0x99, 0x33, 0},
11934 {0x9A, 0x88, 0},
11935 {0xA1, 0x20, 1},
11936 {0xA2, 0x3f, 0},
11937 {0xA3, 0x44, 0},
11938 {0xA4, 0x8c, 0},
11939 {0xA5, 0x6c, 0},
11940 {0xA6, 0x22, 0},
11941 {0xA7, 0xbe, 0},
11942 {0xA8, 0x55, 0},
11943 {0xAA, 0xc, 0},
11944 {0xAB, 0xaa, 0},
11945 {0xAC, 0x2, 0},
11946 {0xAD, 0, 0},
11947 {0xAE, 0x10, 0},
11948 {0xAF, 0x1, 0},
11949 {0xB0, 0, 0},
11950 {0xB1, 0, 0},
11951 {0xB2, 0x80, 0},
11952 {0xB3, 0x60, 0},
11953 {0xB4, 0x44, 0},
11954 {0xB5, 0x55, 0},
11955 {0xB6, 0x1, 0},
11956 {0xB7, 0x55, 0},
11957 {0xB8, 0x1, 0},
11958 {0xB9, 0x5, 0},
11959 {0xBA, 0x55, 0},
11960 {0xBB, 0x55, 0},
11961 {0xC3, 0, 0},
11962 {0xC4, 0, 0},
11963 {0xC5, 0, 0},
11964 {0xC6, 0, 0},
11965 {0xC7, 0, 0},
11966 {0xC8, 0, 0},
11967 {0xC9, 0, 0},
11968 {0xCA, 0, 0},
11969 {0xCB, 0, 0},
11970 {0xCD, 0, 0},
11971 {0xCE, 0x5e, 0},
11972 {0xCF, 0xc, 0},
11973 {0xD0, 0xc, 0},
11974 {0xD1, 0xc, 0},
11975 {0xD2, 0, 0},
11976 {0xD3, 0x2b, 0},
11977 {0xD4, 0xc, 0},
11978 {0xD5, 0, 0},
11979 {0xD6, 0x70, 1},
11980 {0xDB, 0x7, 0},
11981 {0xDC, 0, 0},
11982 {0xDD, 0, 0},
11983 {0xDE, 0x88, 1},
11984 {0xDF, 0, 0},
11985 {0xE0, 0x1f, 0},
11986 {0xE1, 0x20, 1},
11987 {0xE2, 0x1, 0},
11988 {0xE3, 0x30, 0},
11989 {0xE4, 0x70, 0},
11990 {0xE5, 0, 0},
11991 {0xE6, 0, 0},
11992 {0xE7, 0x33, 0},
11993 {0xE8, 0xf, 1},
11994 {0xE9, 0xf, 1},
11995 {0xEA, 0, 0},
11996 {0xEB, 0x11, 0},
11997 {0x105, 0x3c, 0},
11998 {0x106, 0x1, 1},
11999 {0x107, 0xa, 0},
12000 {0x10A, 0, 0},
12001 {0x10B, 0x40, 0},
12002 {0x10C, 0x40, 0},
12003 {0x10D, 0x88, 0},
12004 {0x10E, 0x10, 0},
12005 {0x10F, 0xf0, 0},
12006 {0x110, 0x10, 0},
12007 {0x111, 0xf0, 0},
12008 {0x114, 0x10, 0},
12009 {0x115, 0x55, 0},
12010 {0x116, 0x3f, 1},
12011 {0x117, 0x36, 1},
12012 {0x118, 0, 0},
12013 {0x119, 0, 0},
12014 {0x11A, 0, 0},
12015 {0x11B, 0x87, 0},
12016 {0x11C, 0x11, 0},
12017 {0x11D, 0, 0},
12018 {0x11E, 0x33, 0},
12019 {0x11F, 0x88, 0},
12020 {0x126, 0x20, 1},
12021 {0x127, 0x3f, 0},
12022 {0x128, 0x44, 0},
12023 {0x129, 0x8c, 0},
12024 {0x12A, 0x6c, 0},
12025 {0x12B, 0x22, 0},
12026 {0x12C, 0xbe, 0},
12027 {0x12D, 0x55, 0},
12028 {0x12F, 0xc, 0},
12029 {0x130, 0xaa, 0},
12030 {0x131, 0x2, 0},
12031 {0x132, 0, 0},
12032 {0x133, 0x10, 0},
12033 {0x134, 0x1, 0},
12034 {0x135, 0, 0},
12035 {0x136, 0, 0},
12036 {0x137, 0x80, 0},
12037 {0x138, 0x60, 0},
12038 {0x139, 0x44, 0},
12039 {0x13A, 0x55, 0},
12040 {0x13B, 0x1, 0},
12041 {0x13C, 0x55, 0},
12042 {0x13D, 0x1, 0},
12043 {0x13E, 0x5, 0},
12044 {0x13F, 0x55, 0},
12045 {0x140, 0x55, 0},
12046 {0x148, 0, 0},
12047 {0x149, 0, 0},
12048 {0x14A, 0, 0},
12049 {0x14B, 0, 0},
12050 {0x14C, 0, 0},
12051 {0x14D, 0, 0},
12052 {0x14E, 0, 0},
12053 {0x14F, 0, 0},
12054 {0x150, 0, 0},
12055 {0x154, 0xc, 0},
12056 {0x155, 0xc, 0},
12057 {0x156, 0xc, 0},
12058 {0x157, 0, 0},
12059 {0x158, 0x2b, 0},
12060 {0x159, 0x84, 0},
12061 {0x15A, 0x15, 0},
12062 {0x15B, 0xf, 0},
12063 {0x15C, 0, 0},
12064 {0x15D, 0, 0},
12065 {0x15E, 0, 1},
12066 {0x15F, 0, 1},
12067 {0x160, 0, 1},
12068 {0x161, 0, 1},
12069 {0x162, 0, 1},
12070 {0x163, 0, 1},
12071 {0x164, 0, 0},
12072 {0x165, 0, 0},
12073 {0x166, 0, 0},
12074 {0x167, 0, 0},
12075 {0x168, 0, 0},
12076 {0x169, 0, 0},
12077 {0x16A, 0, 1},
12078 {0x16B, 0, 1},
12079 {0x16C, 0, 1},
12080 {0x16D, 0, 0},
12081 {0x170, 0, 0},
12082 {0x171, 0x77, 0},
12083 {0x172, 0x77, 0},
12084 {0x173, 0x77, 0},
12085 {0x174, 0x77, 0},
12086 {0x175, 0, 0},
12087 {0x176, 0x3, 0},
12088 {0x177, 0x37, 0},
12089 {0x178, 0x3, 0},
12090 {0x179, 0, 0},
12091 {0x17B, 0x21, 0},
12092 {0x17C, 0, 0},
12093 {0x17D, 0xaa, 0},
12094 {0x17E, 0, 0},
12095 {0x190, 0, 0},
12096 {0x191, 0x77, 0},
12097 {0x192, 0x77, 0},
12098 {0x193, 0x77, 0},
12099 {0x194, 0x77, 0},
12100 {0x195, 0, 0},
12101 {0x196, 0x3, 0},
12102 {0x197, 0x37, 0},
12103 {0x198, 0x3, 0},
12104 {0x199, 0, 0},
12105 {0x19B, 0x21, 0},
12106 {0x19C, 0, 0},
12107 {0x19D, 0xaa, 0},
12108 {0x19E, 0, 0},
12109 {0x1A1, 0x2, 0},
12110 {0x1A2, 0xf, 0},
12111 {0x1A3, 0xf, 0},
12112 {0x1A4, 0, 1},
12113 {0x1A5, 0, 1},
12114 {0x1A6, 0, 1},
12115 {0x1A7, 0x2, 0},
12116 {0x1A8, 0xf, 0},
12117 {0x1A9, 0xf, 0},
12118 {0x1AA, 0, 1},
12119 {0x1AB, 0, 1},
12120 {0x1AC, 0, 1},
12121 {0x1AD, 0x84, 0},
12122 {0x1AE, 0x60, 0},
12123 {0x1AF, 0x47, 0},
12124 {0x1B0, 0x47, 0},
12125 {0x1B1, 0, 0},
12126 {0x1B2, 0, 0},
12127 {0x1B3, 0, 0},
12128 {0x1B4, 0, 0},
12129 {0x1B5, 0, 0},
12130 {0x1B6, 0, 0},
12131 {0x1B7, 0xc, 1},
12132 {0x1B8, 0, 0},
12133 {0x1B9, 0, 0},
12134 {0x1BA, 0, 0},
12135 {0x1BB, 0, 0},
12136 {0x1BC, 0, 0},
12137 {0x1BD, 0, 0},
12138 {0x1BE, 0, 0},
12139 {0x1BF, 0, 0},
12140 {0x1C0, 0, 0},
12141 {0x1C1, 0x1, 1},
12142 {0x1C2, 0x80, 1},
12143 {0x1C3, 0, 0},
12144 {0x1C4, 0, 0},
12145 {0x1C5, 0, 0},
12146 {0x1C6, 0, 0},
12147 {0x1C7, 0, 0},
12148 {0x1C8, 0, 0},
12149 {0x1C9, 0, 0},
12150 {0x1CA, 0, 0},
12151 {0xFFFF, 0, 0}
12152};
12153
12154static struct radio_20xx_regs regs_2057_rev5v1[] = {
12155 {0x00, 0x15, 1},
12156 {0x01, 0x57, 1},
12157 {0x02, 0x20, 1},
12158 {0x03, 0x1f, 0},
12159 {0x04, 0x4, 0},
12160 {0x05, 0x2, 0},
12161 {0x06, 0x1, 0},
12162 {0x07, 0x1, 0},
12163 {0x08, 0x1, 0},
12164 {0x09, 0x69, 0},
12165 {0x0A, 0x66, 0},
12166 {0x0B, 0x6, 0},
12167 {0x0C, 0x18, 0},
12168 {0x0D, 0x3, 0},
12169 {0x0E, 0x20, 0},
12170 {0x0F, 0x20, 0},
12171 {0x10, 0, 0},
12172 {0x11, 0x7c, 0},
12173 {0x12, 0x42, 0},
12174 {0x13, 0xbd, 0},
12175 {0x14, 0x7, 0},
12176 {0x15, 0x87, 0},
12177 {0x16, 0x8, 0},
12178 {0x17, 0x17, 0},
12179 {0x18, 0x7, 0},
12180 {0x19, 0, 0},
12181 {0x1A, 0x2, 0},
12182 {0x1B, 0x13, 0},
12183 {0x1C, 0x3e, 0},
12184 {0x1D, 0x3e, 0},
12185 {0x1E, 0x96, 0},
12186 {0x1F, 0x4, 0},
12187 {0x20, 0, 0},
12188 {0x21, 0, 0},
12189 {0x22, 0x17, 0},
12190 {0x23, 0x6, 1},
12191 {0x24, 0x1, 0},
12192 {0x25, 0x6, 0},
12193 {0x26, 0x4, 0},
12194 {0x27, 0xd, 0},
12195 {0x28, 0xd, 0},
12196 {0x29, 0x30, 0},
12197 {0x2A, 0x32, 0},
12198 {0x2B, 0x8, 0},
12199 {0x2C, 0x1c, 0},
12200 {0x2D, 0x2, 0},
12201 {0x2E, 0x4, 0},
12202 {0x2F, 0x7f, 0},
12203 {0x30, 0x27, 0},
12204 {0x31, 0, 1},
12205 {0x32, 0, 1},
12206 {0x33, 0, 1},
12207 {0x34, 0, 0},
12208 {0x35, 0x20, 0},
12209 {0x36, 0x18, 0},
12210 {0x37, 0x7, 0},
12211 {0x38, 0x66, 0},
12212 {0x39, 0x66, 0},
12213 {0x3C, 0xff, 0},
12214 {0x3D, 0xff, 0},
12215 {0x40, 0x16, 0},
12216 {0x41, 0x7, 0},
12217 {0x45, 0x3, 0},
12218 {0x46, 0x1, 0},
12219 {0x47, 0x7, 0},
12220 {0x4B, 0x66, 0},
12221 {0x4C, 0x66, 0},
12222 {0x4D, 0, 0},
12223 {0x4E, 0x4, 0},
12224 {0x4F, 0xc, 0},
12225 {0x50, 0, 0},
12226 {0x51, 0x70, 1},
12227 {0x56, 0x7, 0},
12228 {0x57, 0, 0},
12229 {0x58, 0, 0},
12230 {0x59, 0x88, 1},
12231 {0x5A, 0, 0},
12232 {0x5B, 0x1f, 0},
12233 {0x5C, 0x20, 1},
12234 {0x5D, 0x1, 0},
12235 {0x5E, 0x30, 0},
12236 {0x5F, 0x70, 0},
12237 {0x60, 0, 0},
12238 {0x61, 0, 0},
12239 {0x62, 0x33, 1},
12240 {0x63, 0xf, 1},
12241 {0x64, 0xf, 1},
12242 {0x65, 0, 0},
12243 {0x66, 0x11, 0},
12244 {0x80, 0x3c, 0},
12245 {0x81, 0x1, 1},
12246 {0x82, 0xa, 0},
12247 {0x85, 0, 0},
12248 {0x86, 0x40, 0},
12249 {0x87, 0x40, 0},
12250 {0x88, 0x88, 0},
12251 {0x89, 0x10, 0},
12252 {0x8A, 0xf0, 0},
12253 {0x8B, 0x10, 0},
12254 {0x8C, 0xf0, 0},
12255 {0x8F, 0x10, 0},
12256 {0x90, 0x55, 0},
12257 {0x91, 0x3f, 1},
12258 {0x92, 0x36, 1},
12259 {0x93, 0, 0},
12260 {0x94, 0, 0},
12261 {0x95, 0, 0},
12262 {0x96, 0x87, 0},
12263 {0x97, 0x11, 0},
12264 {0x98, 0, 0},
12265 {0x99, 0x33, 0},
12266 {0x9A, 0x88, 0},
12267 {0xA1, 0x20, 1},
12268 {0xA2, 0x3f, 0},
12269 {0xA3, 0x44, 0},
12270 {0xA4, 0x8c, 0},
12271 {0xA5, 0x6c, 0},
12272 {0xA6, 0x22, 0},
12273 {0xA7, 0xbe, 0},
12274 {0xA8, 0x55, 0},
12275 {0xAA, 0xc, 0},
12276 {0xAB, 0xaa, 0},
12277 {0xAC, 0x2, 0},
12278 {0xAD, 0, 0},
12279 {0xAE, 0x10, 0},
12280 {0xAF, 0x1, 0},
12281 {0xB0, 0, 0},
12282 {0xB1, 0, 0},
12283 {0xB2, 0x80, 0},
12284 {0xB3, 0x60, 0},
12285 {0xB4, 0x44, 0},
12286 {0xB5, 0x55, 0},
12287 {0xB6, 0x1, 0},
12288 {0xB7, 0x55, 0},
12289 {0xB8, 0x1, 0},
12290 {0xB9, 0x5, 0},
12291 {0xBA, 0x55, 0},
12292 {0xBB, 0x55, 0},
12293 {0xC3, 0, 0},
12294 {0xC4, 0, 0},
12295 {0xC5, 0, 0},
12296 {0xC6, 0, 0},
12297 {0xC7, 0, 0},
12298 {0xC8, 0, 0},
12299 {0xC9, 0x1, 1},
12300 {0xCA, 0, 0},
12301 {0xCB, 0, 0},
12302 {0xCD, 0, 0},
12303 {0xCE, 0x5e, 0},
12304 {0xCF, 0xc, 0},
12305 {0xD0, 0xc, 0},
12306 {0xD1, 0xc, 0},
12307 {0xD2, 0, 0},
12308 {0xD3, 0x2b, 0},
12309 {0xD4, 0xc, 0},
12310 {0xD5, 0, 0},
12311 {0xD6, 0x70, 1},
12312 {0xDB, 0x7, 0},
12313 {0xDC, 0, 0},
12314 {0xDD, 0, 0},
12315 {0xDE, 0x88, 1},
12316 {0xDF, 0, 0},
12317 {0xE0, 0x1f, 0},
12318 {0xE1, 0x20, 1},
12319 {0xE2, 0x1, 0},
12320 {0xE3, 0x30, 0},
12321 {0xE4, 0x70, 0},
12322 {0xE5, 0, 0},
12323 {0xE6, 0, 0},
12324 {0xE7, 0x33, 0},
12325 {0xE8, 0xf, 1},
12326 {0xE9, 0xf, 1},
12327 {0xEA, 0, 0},
12328 {0xEB, 0x11, 0},
12329 {0x105, 0x3c, 0},
12330 {0x106, 0x1, 1},
12331 {0x107, 0xa, 0},
12332 {0x10A, 0, 0},
12333 {0x10B, 0x40, 0},
12334 {0x10C, 0x40, 0},
12335 {0x10D, 0x88, 0},
12336 {0x10E, 0x10, 0},
12337 {0x10F, 0xf0, 0},
12338 {0x110, 0x10, 0},
12339 {0x111, 0xf0, 0},
12340 {0x114, 0x10, 0},
12341 {0x115, 0x55, 0},
12342 {0x116, 0x3f, 1},
12343 {0x117, 0x36, 1},
12344 {0x118, 0, 0},
12345 {0x119, 0, 0},
12346 {0x11A, 0, 0},
12347 {0x11B, 0x87, 0},
12348 {0x11C, 0x11, 0},
12349 {0x11D, 0, 0},
12350 {0x11E, 0x33, 0},
12351 {0x11F, 0x88, 0},
12352 {0x126, 0x20, 1},
12353 {0x127, 0x3f, 0},
12354 {0x128, 0x44, 0},
12355 {0x129, 0x8c, 0},
12356 {0x12A, 0x6c, 0},
12357 {0x12B, 0x22, 0},
12358 {0x12C, 0xbe, 0},
12359 {0x12D, 0x55, 0},
12360 {0x12F, 0xc, 0},
12361 {0x130, 0xaa, 0},
12362 {0x131, 0x2, 0},
12363 {0x132, 0, 0},
12364 {0x133, 0x10, 0},
12365 {0x134, 0x1, 0},
12366 {0x135, 0, 0},
12367 {0x136, 0, 0},
12368 {0x137, 0x80, 0},
12369 {0x138, 0x60, 0},
12370 {0x139, 0x44, 0},
12371 {0x13A, 0x55, 0},
12372 {0x13B, 0x1, 0},
12373 {0x13C, 0x55, 0},
12374 {0x13D, 0x1, 0},
12375 {0x13E, 0x5, 0},
12376 {0x13F, 0x55, 0},
12377 {0x140, 0x55, 0},
12378 {0x148, 0, 0},
12379 {0x149, 0, 0},
12380 {0x14A, 0, 0},
12381 {0x14B, 0, 0},
12382 {0x14C, 0, 0},
12383 {0x14D, 0, 0},
12384 {0x14E, 0x1, 1},
12385 {0x14F, 0, 0},
12386 {0x150, 0, 0},
12387 {0x154, 0xc, 0},
12388 {0x155, 0xc, 0},
12389 {0x156, 0xc, 0},
12390 {0x157, 0, 0},
12391 {0x158, 0x2b, 0},
12392 {0x159, 0x84, 0},
12393 {0x15A, 0x15, 0},
12394 {0x15B, 0xf, 0},
12395 {0x15C, 0, 0},
12396 {0x15D, 0, 0},
12397 {0x15E, 0, 1},
12398 {0x15F, 0, 1},
12399 {0x160, 0, 1},
12400 {0x161, 0, 1},
12401 {0x162, 0, 1},
12402 {0x163, 0, 1},
12403 {0x164, 0, 0},
12404 {0x165, 0, 0},
12405 {0x166, 0, 0},
12406 {0x167, 0, 0},
12407 {0x168, 0, 0},
12408 {0x169, 0, 0},
12409 {0x16A, 0, 1},
12410 {0x16B, 0, 1},
12411 {0x16C, 0, 1},
12412 {0x16D, 0, 0},
12413 {0x170, 0, 0},
12414 {0x171, 0x77, 0},
12415 {0x172, 0x77, 0},
12416 {0x173, 0x77, 0},
12417 {0x174, 0x77, 0},
12418 {0x175, 0, 0},
12419 {0x176, 0x3, 0},
12420 {0x177, 0x37, 0},
12421 {0x178, 0x3, 0},
12422 {0x179, 0, 0},
12423 {0x17B, 0x21, 0},
12424 {0x17C, 0, 0},
12425 {0x17D, 0xaa, 0},
12426 {0x17E, 0, 0},
12427 {0x190, 0, 0},
12428 {0x191, 0x77, 0},
12429 {0x192, 0x77, 0},
12430 {0x193, 0x77, 0},
12431 {0x194, 0x77, 0},
12432 {0x195, 0, 0},
12433 {0x196, 0x3, 0},
12434 {0x197, 0x37, 0},
12435 {0x198, 0x3, 0},
12436 {0x199, 0, 0},
12437 {0x19B, 0x21, 0},
12438 {0x19C, 0, 0},
12439 {0x19D, 0xaa, 0},
12440 {0x19E, 0, 0},
12441 {0x1A1, 0x2, 0},
12442 {0x1A2, 0xf, 0},
12443 {0x1A3, 0xf, 0},
12444 {0x1A4, 0, 1},
12445 {0x1A5, 0, 1},
12446 {0x1A6, 0, 1},
12447 {0x1A7, 0x2, 0},
12448 {0x1A8, 0xf, 0},
12449 {0x1A9, 0xf, 0},
12450 {0x1AA, 0, 1},
12451 {0x1AB, 0, 1},
12452 {0x1AC, 0, 1},
12453 {0x1AD, 0x84, 0},
12454 {0x1AE, 0x60, 0},
12455 {0x1AF, 0x47, 0},
12456 {0x1B0, 0x47, 0},
12457 {0x1B1, 0, 0},
12458 {0x1B2, 0, 0},
12459 {0x1B3, 0, 0},
12460 {0x1B4, 0, 0},
12461 {0x1B5, 0, 0},
12462 {0x1B6, 0, 0},
12463 {0x1B7, 0xc, 1},
12464 {0x1B8, 0, 0},
12465 {0x1B9, 0, 0},
12466 {0x1BA, 0, 0},
12467 {0x1BB, 0, 0},
12468 {0x1BC, 0, 0},
12469 {0x1BD, 0, 0},
12470 {0x1BE, 0, 0},
12471 {0x1BF, 0, 0},
12472 {0x1C0, 0, 0},
12473 {0x1C1, 0x1, 1},
12474 {0x1C2, 0x80, 1},
12475 {0x1C3, 0, 0},
12476 {0x1C4, 0, 0},
12477 {0x1C5, 0, 0},
12478 {0x1C6, 0, 0},
12479 {0x1C7, 0, 0},
12480 {0x1C8, 0, 0},
12481 {0x1C9, 0, 0},
12482 {0x1CA, 0, 0},
12483 {0xFFFF, 0, 0}
12484};
12485
12486static struct radio_20xx_regs regs_2057_rev7[] = {
12487 {0x00, 0, 1},
12488 {0x01, 0x57, 1},
12489 {0x02, 0x20, 1},
12490 {0x03, 0x1f, 0},
12491 {0x04, 0x4, 0},
12492 {0x05, 0x2, 0},
12493 {0x06, 0x1, 0},
12494 {0x07, 0x1, 0},
12495 {0x08, 0x1, 0},
12496 {0x09, 0x69, 0},
12497 {0x0A, 0x66, 0},
12498 {0x0B, 0x6, 0},
12499 {0x0C, 0x18, 0},
12500 {0x0D, 0x3, 0},
12501 {0x0E, 0x20, 0},
12502 {0x0F, 0x20, 0},
12503 {0x10, 0, 0},
12504 {0x11, 0x7c, 0},
12505 {0x12, 0x42, 0},
12506 {0x13, 0xbd, 0},
12507 {0x14, 0x7, 0},
12508 {0x15, 0x87, 0},
12509 {0x16, 0x8, 0},
12510 {0x17, 0x17, 0},
12511 {0x18, 0x7, 0},
12512 {0x19, 0, 0},
12513 {0x1A, 0x2, 0},
12514 {0x1B, 0x13, 0},
12515 {0x1C, 0x3e, 0},
12516 {0x1D, 0x3e, 0},
12517 {0x1E, 0x96, 0},
12518 {0x1F, 0x4, 0},
12519 {0x20, 0, 0},
12520 {0x21, 0, 0},
12521 {0x22, 0x17, 0},
12522 {0x23, 0x6, 0},
12523 {0x24, 0x1, 0},
12524 {0x25, 0x6, 0},
12525 {0x26, 0x4, 0},
12526 {0x27, 0xd, 0},
12527 {0x28, 0xd, 0},
12528 {0x29, 0x30, 0},
12529 {0x2A, 0x32, 0},
12530 {0x2B, 0x8, 0},
12531 {0x2C, 0x1c, 0},
12532 {0x2D, 0x2, 0},
12533 {0x2E, 0x4, 0},
12534 {0x2F, 0x7f, 0},
12535 {0x30, 0x27, 0},
12536 {0x31, 0, 1},
12537 {0x32, 0, 1},
12538 {0x33, 0, 1},
12539 {0x34, 0, 0},
12540 {0x35, 0x20, 0},
12541 {0x36, 0x18, 0},
12542 {0x37, 0x7, 0},
12543 {0x38, 0x66, 0},
12544 {0x39, 0x66, 0},
12545 {0x3A, 0x66, 0},
12546 {0x3B, 0x66, 0},
12547 {0x3C, 0xff, 0},
12548 {0x3D, 0xff, 0},
12549 {0x3E, 0xff, 0},
12550 {0x3F, 0xff, 0},
12551 {0x40, 0x16, 0},
12552 {0x41, 0x7, 0},
12553 {0x42, 0x19, 0},
12554 {0x43, 0x7, 0},
12555 {0x44, 0x6, 0},
12556 {0x45, 0x3, 0},
12557 {0x46, 0x1, 0},
12558 {0x47, 0x7, 0},
12559 {0x48, 0x33, 0},
12560 {0x49, 0x5, 0},
12561 {0x4A, 0x77, 0},
12562 {0x4B, 0x66, 0},
12563 {0x4C, 0x66, 0},
12564 {0x4D, 0, 0},
12565 {0x4E, 0x4, 0},
12566 {0x4F, 0xc, 0},
12567 {0x50, 0, 0},
12568 {0x51, 0x70, 1},
12569 {0x56, 0x7, 0},
12570 {0x57, 0, 0},
12571 {0x58, 0, 0},
12572 {0x59, 0x88, 1},
12573 {0x5A, 0, 0},
12574 {0x5B, 0x1f, 0},
12575 {0x5C, 0x20, 1},
12576 {0x5D, 0x1, 0},
12577 {0x5E, 0x30, 0},
12578 {0x5F, 0x70, 0},
12579 {0x60, 0, 0},
12580 {0x61, 0, 0},
12581 {0x62, 0x33, 1},
12582 {0x63, 0xf, 1},
12583 {0x64, 0x13, 1},
12584 {0x65, 0, 0},
12585 {0x66, 0xee, 1},
12586 {0x69, 0, 0},
12587 {0x6A, 0x7e, 0},
12588 {0x6B, 0x3f, 0},
12589 {0x6C, 0x7f, 0},
12590 {0x6D, 0x78, 0},
12591 {0x6E, 0x58, 1},
12592 {0x6F, 0x88, 0},
12593 {0x70, 0x8, 0},
12594 {0x71, 0xf, 0},
12595 {0x72, 0xbc, 0},
12596 {0x73, 0x8, 0},
12597 {0x74, 0x60, 0},
12598 {0x75, 0x13, 1},
12599 {0x76, 0x70, 0},
12600 {0x77, 0, 0},
12601 {0x78, 0, 0},
12602 {0x79, 0, 0},
12603 {0x7A, 0x33, 0},
12604 {0x7B, 0x13, 1},
12605 {0x7C, 0x14, 1},
12606 {0x7D, 0xee, 1},
12607 {0x80, 0x3c, 0},
12608 {0x81, 0x1, 1},
12609 {0x82, 0xa, 0},
12610 {0x83, 0x9d, 0},
12611 {0x84, 0xa, 0},
12612 {0x85, 0, 0},
12613 {0x86, 0x40, 0},
12614 {0x87, 0x40, 0},
12615 {0x88, 0x88, 0},
12616 {0x89, 0x10, 0},
12617 {0x8A, 0xf0, 0},
12618 {0x8B, 0x10, 0},
12619 {0x8C, 0xf0, 0},
12620 {0x8D, 0, 0},
12621 {0x8E, 0, 0},
12622 {0x8F, 0x10, 0},
12623 {0x90, 0x55, 0},
12624 {0x91, 0x3f, 1},
12625 {0x92, 0x36, 1},
12626 {0x93, 0, 0},
12627 {0x94, 0, 0},
12628 {0x95, 0, 0},
12629 {0x96, 0x87, 0},
12630 {0x97, 0x11, 0},
12631 {0x98, 0, 0},
12632 {0x99, 0x33, 0},
12633 {0x9A, 0x88, 0},
12634 {0x9B, 0, 0},
12635 {0x9C, 0x87, 0},
12636 {0x9D, 0x11, 0},
12637 {0x9E, 0, 0},
12638 {0x9F, 0x33, 0},
12639 {0xA0, 0x88, 0},
12640 {0xA1, 0x20, 1},
12641 {0xA2, 0x3f, 0},
12642 {0xA3, 0x44, 0},
12643 {0xA4, 0x8c, 0},
12644 {0xA5, 0x6c, 0},
12645 {0xA6, 0x22, 0},
12646 {0xA7, 0xbe, 0},
12647 {0xA8, 0x55, 0},
12648 {0xAA, 0xc, 0},
12649 {0xAB, 0xaa, 0},
12650 {0xAC, 0x2, 0},
12651 {0xAD, 0, 0},
12652 {0xAE, 0x10, 0},
12653 {0xAF, 0x1, 0},
12654 {0xB0, 0, 0},
12655 {0xB1, 0, 0},
12656 {0xB2, 0x80, 0},
12657 {0xB3, 0x60, 0},
12658 {0xB4, 0x44, 0},
12659 {0xB5, 0x55, 0},
12660 {0xB6, 0x1, 0},
12661 {0xB7, 0x55, 0},
12662 {0xB8, 0x1, 0},
12663 {0xB9, 0x5, 0},
12664 {0xBA, 0x55, 0},
12665 {0xBB, 0x55, 0},
12666 {0xC1, 0, 0},
12667 {0xC2, 0, 0},
12668 {0xC3, 0, 0},
12669 {0xC4, 0, 0},
12670 {0xC5, 0, 0},
12671 {0xC6, 0, 0},
12672 {0xC7, 0, 0},
12673 {0xC8, 0, 0},
12674 {0xC9, 0, 0},
12675 {0xCA, 0, 0},
12676 {0xCB, 0, 0},
12677 {0xCC, 0, 0},
12678 {0xCD, 0, 0},
12679 {0xCE, 0x5e, 0},
12680 {0xCF, 0xc, 0},
12681 {0xD0, 0xc, 0},
12682 {0xD1, 0xc, 0},
12683 {0xD2, 0, 0},
12684 {0xD3, 0x2b, 0},
12685 {0xD4, 0xc, 0},
12686 {0xD5, 0, 0},
12687 {0xD6, 0x70, 1},
12688 {0xDB, 0x7, 0},
12689 {0xDC, 0, 0},
12690 {0xDD, 0, 0},
12691 {0xDE, 0x88, 1},
12692 {0xDF, 0, 0},
12693 {0xE0, 0x1f, 0},
12694 {0xE1, 0x20, 1},
12695 {0xE2, 0x1, 0},
12696 {0xE3, 0x30, 0},
12697 {0xE4, 0x70, 0},
12698 {0xE5, 0, 0},
12699 {0xE6, 0, 0},
12700 {0xE7, 0x33, 0},
12701 {0xE8, 0xf, 1},
12702 {0xE9, 0x13, 1},
12703 {0xEA, 0, 0},
12704 {0xEB, 0xee, 1},
12705 {0xEE, 0, 0},
12706 {0xEF, 0x7e, 0},
12707 {0xF0, 0x3f, 0},
12708 {0xF1, 0x7f, 0},
12709 {0xF2, 0x78, 0},
12710 {0xF3, 0x58, 1},
12711 {0xF4, 0x88, 0},
12712 {0xF5, 0x8, 0},
12713 {0xF6, 0xf, 0},
12714 {0xF7, 0xbc, 0},
12715 {0xF8, 0x8, 0},
12716 {0xF9, 0x60, 0},
12717 {0xFA, 0x13, 1},
12718 {0xFB, 0x70, 0},
12719 {0xFC, 0, 0},
12720 {0xFD, 0, 0},
12721 {0xFE, 0, 0},
12722 {0xFF, 0x33, 0},
12723 {0x100, 0x13, 1},
12724 {0x101, 0x14, 1},
12725 {0x102, 0xee, 1},
12726 {0x105, 0x3c, 0},
12727 {0x106, 0x1, 1},
12728 {0x107, 0xa, 0},
12729 {0x108, 0x9d, 0},
12730 {0x109, 0xa, 0},
12731 {0x10A, 0, 0},
12732 {0x10B, 0x40, 0},
12733 {0x10C, 0x40, 0},
12734 {0x10D, 0x88, 0},
12735 {0x10E, 0x10, 0},
12736 {0x10F, 0xf0, 0},
12737 {0x110, 0x10, 0},
12738 {0x111, 0xf0, 0},
12739 {0x112, 0, 0},
12740 {0x113, 0, 0},
12741 {0x114, 0x10, 0},
12742 {0x115, 0x55, 0},
12743 {0x116, 0x3f, 1},
12744 {0x117, 0x36, 1},
12745 {0x118, 0, 0},
12746 {0x119, 0, 0},
12747 {0x11A, 0, 0},
12748 {0x11B, 0x87, 0},
12749 {0x11C, 0x11, 0},
12750 {0x11D, 0, 0},
12751 {0x11E, 0x33, 0},
12752 {0x11F, 0x88, 0},
12753 {0x120, 0, 0},
12754 {0x121, 0x87, 0},
12755 {0x122, 0x11, 0},
12756 {0x123, 0, 0},
12757 {0x124, 0x33, 0},
12758 {0x125, 0x88, 0},
12759 {0x126, 0x20, 1},
12760 {0x127, 0x3f, 0},
12761 {0x128, 0x44, 0},
12762 {0x129, 0x8c, 0},
12763 {0x12A, 0x6c, 0},
12764 {0x12B, 0x22, 0},
12765 {0x12C, 0xbe, 0},
12766 {0x12D, 0x55, 0},
12767 {0x12F, 0xc, 0},
12768 {0x130, 0xaa, 0},
12769 {0x131, 0x2, 0},
12770 {0x132, 0, 0},
12771 {0x133, 0x10, 0},
12772 {0x134, 0x1, 0},
12773 {0x135, 0, 0},
12774 {0x136, 0, 0},
12775 {0x137, 0x80, 0},
12776 {0x138, 0x60, 0},
12777 {0x139, 0x44, 0},
12778 {0x13A, 0x55, 0},
12779 {0x13B, 0x1, 0},
12780 {0x13C, 0x55, 0},
12781 {0x13D, 0x1, 0},
12782 {0x13E, 0x5, 0},
12783 {0x13F, 0x55, 0},
12784 {0x140, 0x55, 0},
12785 {0x146, 0, 0},
12786 {0x147, 0, 0},
12787 {0x148, 0, 0},
12788 {0x149, 0, 0},
12789 {0x14A, 0, 0},
12790 {0x14B, 0, 0},
12791 {0x14C, 0, 0},
12792 {0x14D, 0, 0},
12793 {0x14E, 0, 0},
12794 {0x14F, 0, 0},
12795 {0x150, 0, 0},
12796 {0x151, 0, 0},
12797 {0x154, 0xc, 0},
12798 {0x155, 0xc, 0},
12799 {0x156, 0xc, 0},
12800 {0x157, 0, 0},
12801 {0x158, 0x2b, 0},
12802 {0x159, 0x84, 0},
12803 {0x15A, 0x15, 0},
12804 {0x15B, 0xf, 0},
12805 {0x15C, 0, 0},
12806 {0x15D, 0, 0},
12807 {0x15E, 0, 1},
12808 {0x15F, 0, 1},
12809 {0x160, 0, 1},
12810 {0x161, 0, 1},
12811 {0x162, 0, 1},
12812 {0x163, 0, 1},
12813 {0x164, 0, 0},
12814 {0x165, 0, 0},
12815 {0x166, 0, 0},
12816 {0x167, 0, 0},
12817 {0x168, 0, 0},
12818 {0x169, 0, 0},
12819 {0x16A, 0, 1},
12820 {0x16B, 0, 1},
12821 {0x16C, 0, 1},
12822 {0x16D, 0, 0},
12823 {0x170, 0, 0},
12824 {0x171, 0x77, 0},
12825 {0x172, 0x77, 0},
12826 {0x173, 0x77, 0},
12827 {0x174, 0x77, 0},
12828 {0x175, 0, 0},
12829 {0x176, 0x3, 0},
12830 {0x177, 0x37, 0},
12831 {0x178, 0x3, 0},
12832 {0x179, 0, 0},
12833 {0x17A, 0x21, 0},
12834 {0x17B, 0x21, 0},
12835 {0x17C, 0, 0},
12836 {0x17D, 0xaa, 0},
12837 {0x17E, 0, 0},
12838 {0x17F, 0xaa, 0},
12839 {0x180, 0, 0},
12840 {0x190, 0, 0},
12841 {0x191, 0x77, 0},
12842 {0x192, 0x77, 0},
12843 {0x193, 0x77, 0},
12844 {0x194, 0x77, 0},
12845 {0x195, 0, 0},
12846 {0x196, 0x3, 0},
12847 {0x197, 0x37, 0},
12848 {0x198, 0x3, 0},
12849 {0x199, 0, 0},
12850 {0x19A, 0x21, 0},
12851 {0x19B, 0x21, 0},
12852 {0x19C, 0, 0},
12853 {0x19D, 0xaa, 0},
12854 {0x19E, 0, 0},
12855 {0x19F, 0xaa, 0},
12856 {0x1A0, 0, 0},
12857 {0x1A1, 0x2, 0},
12858 {0x1A2, 0xf, 0},
12859 {0x1A3, 0xf, 0},
12860 {0x1A4, 0, 1},
12861 {0x1A5, 0, 1},
12862 {0x1A6, 0, 1},
12863 {0x1A7, 0x2, 0},
12864 {0x1A8, 0xf, 0},
12865 {0x1A9, 0xf, 0},
12866 {0x1AA, 0, 1},
12867 {0x1AB, 0, 1},
12868 {0x1AC, 0, 1},
12869 {0x1AD, 0x84, 0},
12870 {0x1AE, 0x60, 0},
12871 {0x1AF, 0x47, 0},
12872 {0x1B0, 0x47, 0},
12873 {0x1B1, 0, 0},
12874 {0x1B2, 0, 0},
12875 {0x1B3, 0, 0},
12876 {0x1B4, 0, 0},
12877 {0x1B5, 0, 0},
12878 {0x1B6, 0, 0},
12879 {0x1B7, 0x5, 1},
12880 {0x1B8, 0, 0},
12881 {0x1B9, 0, 0},
12882 {0x1BA, 0, 0},
12883 {0x1BB, 0, 0},
12884 {0x1BC, 0, 0},
12885 {0x1BD, 0, 0},
12886 {0x1BE, 0, 0},
12887 {0x1BF, 0, 0},
12888 {0x1C0, 0, 0},
12889 {0x1C1, 0, 0},
12890 {0x1C2, 0xa0, 1},
12891 {0x1C3, 0, 0},
12892 {0x1C4, 0, 0},
12893 {0x1C5, 0, 0},
12894 {0x1C6, 0, 0},
12895 {0x1C7, 0, 0},
12896 {0x1C8, 0, 0},
12897 {0x1C9, 0, 0},
12898 {0x1CA, 0, 0},
12899 {0xFFFF, 0, 0}
12900};
12901
12902static struct radio_20xx_regs regs_2057_rev8[] = {
12903 {0x00, 0x8, 1},
12904 {0x01, 0x57, 1},
12905 {0x02, 0x20, 1},
12906 {0x03, 0x1f, 0},
12907 {0x04, 0x4, 0},
12908 {0x05, 0x2, 0},
12909 {0x06, 0x1, 0},
12910 {0x07, 0x1, 0},
12911 {0x08, 0x1, 0},
12912 {0x09, 0x69, 0},
12913 {0x0A, 0x66, 0},
12914 {0x0B, 0x6, 0},
12915 {0x0C, 0x18, 0},
12916 {0x0D, 0x3, 0},
12917 {0x0E, 0x20, 0},
12918 {0x0F, 0x20, 0},
12919 {0x10, 0, 0},
12920 {0x11, 0x7c, 0},
12921 {0x12, 0x42, 0},
12922 {0x13, 0xbd, 0},
12923 {0x14, 0x7, 0},
12924 {0x15, 0x87, 0},
12925 {0x16, 0x8, 0},
12926 {0x17, 0x17, 0},
12927 {0x18, 0x7, 0},
12928 {0x19, 0, 0},
12929 {0x1A, 0x2, 0},
12930 {0x1B, 0x13, 0},
12931 {0x1C, 0x3e, 0},
12932 {0x1D, 0x3e, 0},
12933 {0x1E, 0x96, 0},
12934 {0x1F, 0x4, 0},
12935 {0x20, 0, 0},
12936 {0x21, 0, 0},
12937 {0x22, 0x17, 0},
12938 {0x23, 0x6, 0},
12939 {0x24, 0x1, 0},
12940 {0x25, 0x6, 0},
12941 {0x26, 0x4, 0},
12942 {0x27, 0xd, 0},
12943 {0x28, 0xd, 0},
12944 {0x29, 0x30, 0},
12945 {0x2A, 0x32, 0},
12946 {0x2B, 0x8, 0},
12947 {0x2C, 0x1c, 0},
12948 {0x2D, 0x2, 0},
12949 {0x2E, 0x4, 0},
12950 {0x2F, 0x7f, 0},
12951 {0x30, 0x27, 0},
12952 {0x31, 0, 1},
12953 {0x32, 0, 1},
12954 {0x33, 0, 1},
12955 {0x34, 0, 0},
12956 {0x35, 0x20, 0},
12957 {0x36, 0x18, 0},
12958 {0x37, 0x7, 0},
12959 {0x38, 0x66, 0},
12960 {0x39, 0x66, 0},
12961 {0x3A, 0x66, 0},
12962 {0x3B, 0x66, 0},
12963 {0x3C, 0xff, 0},
12964 {0x3D, 0xff, 0},
12965 {0x3E, 0xff, 0},
12966 {0x3F, 0xff, 0},
12967 {0x40, 0x16, 0},
12968 {0x41, 0x7, 0},
12969 {0x42, 0x19, 0},
12970 {0x43, 0x7, 0},
12971 {0x44, 0x6, 0},
12972 {0x45, 0x3, 0},
12973 {0x46, 0x1, 0},
12974 {0x47, 0x7, 0},
12975 {0x48, 0x33, 0},
12976 {0x49, 0x5, 0},
12977 {0x4A, 0x77, 0},
12978 {0x4B, 0x66, 0},
12979 {0x4C, 0x66, 0},
12980 {0x4D, 0, 0},
12981 {0x4E, 0x4, 0},
12982 {0x4F, 0xc, 0},
12983 {0x50, 0, 0},
12984 {0x51, 0x70, 1},
12985 {0x56, 0x7, 0},
12986 {0x57, 0, 0},
12987 {0x58, 0, 0},
12988 {0x59, 0x88, 1},
12989 {0x5A, 0, 0},
12990 {0x5B, 0x1f, 0},
12991 {0x5C, 0x20, 1},
12992 {0x5D, 0x1, 0},
12993 {0x5E, 0x30, 0},
12994 {0x5F, 0x70, 0},
12995 {0x60, 0, 0},
12996 {0x61, 0, 0},
12997 {0x62, 0x33, 1},
12998 {0x63, 0xf, 1},
12999 {0x64, 0xf, 1},
13000 {0x65, 0, 0},
13001 {0x66, 0x11, 0},
13002 {0x69, 0, 0},
13003 {0x6A, 0x7e, 0},
13004 {0x6B, 0x3f, 0},
13005 {0x6C, 0x7f, 0},
13006 {0x6D, 0x78, 0},
13007 {0x6E, 0x58, 1},
13008 {0x6F, 0x88, 0},
13009 {0x70, 0x8, 0},
13010 {0x71, 0xf, 0},
13011 {0x72, 0xbc, 0},
13012 {0x73, 0x8, 0},
13013 {0x74, 0x60, 0},
13014 {0x75, 0x13, 1},
13015 {0x76, 0x70, 0},
13016 {0x77, 0, 0},
13017 {0x78, 0, 0},
13018 {0x79, 0, 0},
13019 {0x7A, 0x33, 0},
13020 {0x7B, 0x13, 1},
13021 {0x7C, 0xf, 1},
13022 {0x7D, 0xee, 1},
13023 {0x80, 0x3c, 0},
13024 {0x81, 0x1, 1},
13025 {0x82, 0xa, 0},
13026 {0x83, 0x9d, 0},
13027 {0x84, 0xa, 0},
13028 {0x85, 0, 0},
13029 {0x86, 0x40, 0},
13030 {0x87, 0x40, 0},
13031 {0x88, 0x88, 0},
13032 {0x89, 0x10, 0},
13033 {0x8A, 0xf0, 0},
13034 {0x8B, 0x10, 0},
13035 {0x8C, 0xf0, 0},
13036 {0x8D, 0, 0},
13037 {0x8E, 0, 0},
13038 {0x8F, 0x10, 0},
13039 {0x90, 0x55, 0},
13040 {0x91, 0x3f, 1},
13041 {0x92, 0x36, 1},
13042 {0x93, 0, 0},
13043 {0x94, 0, 0},
13044 {0x95, 0, 0},
13045 {0x96, 0x87, 0},
13046 {0x97, 0x11, 0},
13047 {0x98, 0, 0},
13048 {0x99, 0x33, 0},
13049 {0x9A, 0x88, 0},
13050 {0x9B, 0, 0},
13051 {0x9C, 0x87, 0},
13052 {0x9D, 0x11, 0},
13053 {0x9E, 0, 0},
13054 {0x9F, 0x33, 0},
13055 {0xA0, 0x88, 0},
13056 {0xA1, 0x20, 1},
13057 {0xA2, 0x3f, 0},
13058 {0xA3, 0x44, 0},
13059 {0xA4, 0x8c, 0},
13060 {0xA5, 0x6c, 0},
13061 {0xA6, 0x22, 0},
13062 {0xA7, 0xbe, 0},
13063 {0xA8, 0x55, 0},
13064 {0xAA, 0xc, 0},
13065 {0xAB, 0xaa, 0},
13066 {0xAC, 0x2, 0},
13067 {0xAD, 0, 0},
13068 {0xAE, 0x10, 0},
13069 {0xAF, 0x1, 0},
13070 {0xB0, 0, 0},
13071 {0xB1, 0, 0},
13072 {0xB2, 0x80, 0},
13073 {0xB3, 0x60, 0},
13074 {0xB4, 0x44, 0},
13075 {0xB5, 0x55, 0},
13076 {0xB6, 0x1, 0},
13077 {0xB7, 0x55, 0},
13078 {0xB8, 0x1, 0},
13079 {0xB9, 0x5, 0},
13080 {0xBA, 0x55, 0},
13081 {0xBB, 0x55, 0},
13082 {0xC1, 0, 0},
13083 {0xC2, 0, 0},
13084 {0xC3, 0, 0},
13085 {0xC4, 0, 0},
13086 {0xC5, 0, 0},
13087 {0xC6, 0, 0},
13088 {0xC7, 0, 0},
13089 {0xC8, 0, 0},
13090 {0xC9, 0x1, 1},
13091 {0xCA, 0, 0},
13092 {0xCB, 0, 0},
13093 {0xCC, 0, 0},
13094 {0xCD, 0, 0},
13095 {0xCE, 0x5e, 0},
13096 {0xCF, 0xc, 0},
13097 {0xD0, 0xc, 0},
13098 {0xD1, 0xc, 0},
13099 {0xD2, 0, 0},
13100 {0xD3, 0x2b, 0},
13101 {0xD4, 0xc, 0},
13102 {0xD5, 0, 0},
13103 {0xD6, 0x70, 1},
13104 {0xDB, 0x7, 0},
13105 {0xDC, 0, 0},
13106 {0xDD, 0, 0},
13107 {0xDE, 0x88, 1},
13108 {0xDF, 0, 0},
13109 {0xE0, 0x1f, 0},
13110 {0xE1, 0x20, 1},
13111 {0xE2, 0x1, 0},
13112 {0xE3, 0x30, 0},
13113 {0xE4, 0x70, 0},
13114 {0xE5, 0, 0},
13115 {0xE6, 0, 0},
13116 {0xE7, 0x33, 0},
13117 {0xE8, 0xf, 1},
13118 {0xE9, 0xf, 1},
13119 {0xEA, 0, 0},
13120 {0xEB, 0x11, 0},
13121 {0xEE, 0, 0},
13122 {0xEF, 0x7e, 0},
13123 {0xF0, 0x3f, 0},
13124 {0xF1, 0x7f, 0},
13125 {0xF2, 0x78, 0},
13126 {0xF3, 0x58, 1},
13127 {0xF4, 0x88, 0},
13128 {0xF5, 0x8, 0},
13129 {0xF6, 0xf, 0},
13130 {0xF7, 0xbc, 0},
13131 {0xF8, 0x8, 0},
13132 {0xF9, 0x60, 0},
13133 {0xFA, 0x13, 1},
13134 {0xFB, 0x70, 0},
13135 {0xFC, 0, 0},
13136 {0xFD, 0, 0},
13137 {0xFE, 0, 0},
13138 {0xFF, 0x33, 0},
13139 {0x100, 0x13, 1},
13140 {0x101, 0xf, 1},
13141 {0x102, 0xee, 1},
13142 {0x105, 0x3c, 0},
13143 {0x106, 0x1, 1},
13144 {0x107, 0xa, 0},
13145 {0x108, 0x9d, 0},
13146 {0x109, 0xa, 0},
13147 {0x10A, 0, 0},
13148 {0x10B, 0x40, 0},
13149 {0x10C, 0x40, 0},
13150 {0x10D, 0x88, 0},
13151 {0x10E, 0x10, 0},
13152 {0x10F, 0xf0, 0},
13153 {0x110, 0x10, 0},
13154 {0x111, 0xf0, 0},
13155 {0x112, 0, 0},
13156 {0x113, 0, 0},
13157 {0x114, 0x10, 0},
13158 {0x115, 0x55, 0},
13159 {0x116, 0x3f, 1},
13160 {0x117, 0x36, 1},
13161 {0x118, 0, 0},
13162 {0x119, 0, 0},
13163 {0x11A, 0, 0},
13164 {0x11B, 0x87, 0},
13165 {0x11C, 0x11, 0},
13166 {0x11D, 0, 0},
13167 {0x11E, 0x33, 0},
13168 {0x11F, 0x88, 0},
13169 {0x120, 0, 0},
13170 {0x121, 0x87, 0},
13171 {0x122, 0x11, 0},
13172 {0x123, 0, 0},
13173 {0x124, 0x33, 0},
13174 {0x125, 0x88, 0},
13175 {0x126, 0x20, 1},
13176 {0x127, 0x3f, 0},
13177 {0x128, 0x44, 0},
13178 {0x129, 0x8c, 0},
13179 {0x12A, 0x6c, 0},
13180 {0x12B, 0x22, 0},
13181 {0x12C, 0xbe, 0},
13182 {0x12D, 0x55, 0},
13183 {0x12F, 0xc, 0},
13184 {0x130, 0xaa, 0},
13185 {0x131, 0x2, 0},
13186 {0x132, 0, 0},
13187 {0x133, 0x10, 0},
13188 {0x134, 0x1, 0},
13189 {0x135, 0, 0},
13190 {0x136, 0, 0},
13191 {0x137, 0x80, 0},
13192 {0x138, 0x60, 0},
13193 {0x139, 0x44, 0},
13194 {0x13A, 0x55, 0},
13195 {0x13B, 0x1, 0},
13196 {0x13C, 0x55, 0},
13197 {0x13D, 0x1, 0},
13198 {0x13E, 0x5, 0},
13199 {0x13F, 0x55, 0},
13200 {0x140, 0x55, 0},
13201 {0x146, 0, 0},
13202 {0x147, 0, 0},
13203 {0x148, 0, 0},
13204 {0x149, 0, 0},
13205 {0x14A, 0, 0},
13206 {0x14B, 0, 0},
13207 {0x14C, 0, 0},
13208 {0x14D, 0, 0},
13209 {0x14E, 0x1, 1},
13210 {0x14F, 0, 0},
13211 {0x150, 0, 0},
13212 {0x151, 0, 0},
13213 {0x154, 0xc, 0},
13214 {0x155, 0xc, 0},
13215 {0x156, 0xc, 0},
13216 {0x157, 0, 0},
13217 {0x158, 0x2b, 0},
13218 {0x159, 0x84, 0},
13219 {0x15A, 0x15, 0},
13220 {0x15B, 0xf, 0},
13221 {0x15C, 0, 0},
13222 {0x15D, 0, 0},
13223 {0x15E, 0, 1},
13224 {0x15F, 0, 1},
13225 {0x160, 0, 1},
13226 {0x161, 0, 1},
13227 {0x162, 0, 1},
13228 {0x163, 0, 1},
13229 {0x164, 0, 0},
13230 {0x165, 0, 0},
13231 {0x166, 0, 0},
13232 {0x167, 0, 0},
13233 {0x168, 0, 0},
13234 {0x169, 0, 0},
13235 {0x16A, 0, 1},
13236 {0x16B, 0, 1},
13237 {0x16C, 0, 1},
13238 {0x16D, 0, 0},
13239 {0x170, 0, 0},
13240 {0x171, 0x77, 0},
13241 {0x172, 0x77, 0},
13242 {0x173, 0x77, 0},
13243 {0x174, 0x77, 0},
13244 {0x175, 0, 0},
13245 {0x176, 0x3, 0},
13246 {0x177, 0x37, 0},
13247 {0x178, 0x3, 0},
13248 {0x179, 0, 0},
13249 {0x17A, 0x21, 0},
13250 {0x17B, 0x21, 0},
13251 {0x17C, 0, 0},
13252 {0x17D, 0xaa, 0},
13253 {0x17E, 0, 0},
13254 {0x17F, 0xaa, 0},
13255 {0x180, 0, 0},
13256 {0x190, 0, 0},
13257 {0x191, 0x77, 0},
13258 {0x192, 0x77, 0},
13259 {0x193, 0x77, 0},
13260 {0x194, 0x77, 0},
13261 {0x195, 0, 0},
13262 {0x196, 0x3, 0},
13263 {0x197, 0x37, 0},
13264 {0x198, 0x3, 0},
13265 {0x199, 0, 0},
13266 {0x19A, 0x21, 0},
13267 {0x19B, 0x21, 0},
13268 {0x19C, 0, 0},
13269 {0x19D, 0xaa, 0},
13270 {0x19E, 0, 0},
13271 {0x19F, 0xaa, 0},
13272 {0x1A0, 0, 0},
13273 {0x1A1, 0x2, 0},
13274 {0x1A2, 0xf, 0},
13275 {0x1A3, 0xf, 0},
13276 {0x1A4, 0, 1},
13277 {0x1A5, 0, 1},
13278 {0x1A6, 0, 1},
13279 {0x1A7, 0x2, 0},
13280 {0x1A8, 0xf, 0},
13281 {0x1A9, 0xf, 0},
13282 {0x1AA, 0, 1},
13283 {0x1AB, 0, 1},
13284 {0x1AC, 0, 1},
13285 {0x1AD, 0x84, 0},
13286 {0x1AE, 0x60, 0},
13287 {0x1AF, 0x47, 0},
13288 {0x1B0, 0x47, 0},
13289 {0x1B1, 0, 0},
13290 {0x1B2, 0, 0},
13291 {0x1B3, 0, 0},
13292 {0x1B4, 0, 0},
13293 {0x1B5, 0, 0},
13294 {0x1B6, 0, 0},
13295 {0x1B7, 0x5, 1},
13296 {0x1B8, 0, 0},
13297 {0x1B9, 0, 0},
13298 {0x1BA, 0, 0},
13299 {0x1BB, 0, 0},
13300 {0x1BC, 0, 0},
13301 {0x1BD, 0, 0},
13302 {0x1BE, 0, 0},
13303 {0x1BF, 0, 0},
13304 {0x1C0, 0, 0},
13305 {0x1C1, 0, 0},
13306 {0x1C2, 0xa0, 1},
13307 {0x1C3, 0, 0},
13308 {0x1C4, 0, 0},
13309 {0x1C5, 0, 0},
13310 {0x1C6, 0, 0},
13311 {0x1C7, 0, 0},
13312 {0x1C8, 0, 0},
13313 {0x1C9, 0, 0},
13314 {0x1CA, 0, 0},
13315 {0xFFFF, 0, 0}
13316};
13317
13318static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13319
13320static s32 nphy_lnagain_est0[] = { -315, 40370 };
13321static s32 nphy_lnagain_est1[] = { -224, 23242 };
13322
13323static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13324 {
13325 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13326 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13327 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13328 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13329 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13330 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13331 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13332 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13333 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13334 },
13335 {
13336 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13337 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13338 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13339 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13340 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13341 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13342 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13343 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13344 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13345 }
13346};
13347
13348static const u32 nphy_tpc_txgain[] = {
13349 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13350 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13351 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13352 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13353 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13354 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13355 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13356 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13357 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13358 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13359 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13360 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13361 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13362 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13363 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13364 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13365 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13366 0x03902942, 0x03902844, 0x03902842, 0x03902744,
13367 0x03902742, 0x03902644, 0x03902642, 0x03902544,
13368 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13369 0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13370 0x03802842, 0x03802744, 0x03802742, 0x03802644,
13371 0x03802642, 0x03802544, 0x03802542, 0x03802444,
13372 0x03802442, 0x03802344, 0x03802342, 0x03802244,
13373 0x03802242, 0x03802144, 0x03802142, 0x03802044,
13374 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13375 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13376 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13377 0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13378 0x03801842, 0x03801744, 0x03801742, 0x03801644,
13379 0x03801642, 0x03801544, 0x03801542, 0x03801444,
13380 0x03801442, 0x03801344, 0x03801342, 0x00002b00
13381};
13382
13383static const u16 nphy_tpc_loscale[] = {
13384 256, 256, 271, 271, 287, 256, 256, 271,
13385 271, 287, 287, 304, 304, 256, 256, 271,
13386 271, 287, 287, 304, 304, 322, 322, 341,
13387 341, 362, 362, 383, 383, 256, 256, 271,
13388 271, 287, 287, 304, 304, 322, 322, 256,
13389 256, 271, 271, 287, 287, 304, 304, 322,
13390 322, 341, 341, 362, 362, 256, 256, 271,
13391 271, 287, 287, 304, 304, 322, 322, 256,
13392 256, 271, 271, 287, 287, 304, 304, 322,
13393 322, 341, 341, 362, 362, 256, 256, 271,
13394 271, 287, 287, 304, 304, 322, 322, 341,
13395 341, 362, 362, 383, 383, 406, 406, 430,
13396 430, 455, 455, 482, 482, 511, 511, 541,
13397 541, 573, 573, 607, 607, 643, 643, 681,
13398 681, 722, 722, 764, 764, 810, 810, 858,
13399 858, 908, 908, 962, 962, 1019, 1019, 256
13400};
13401
13402static u32 nphy_tpc_txgain_ipa[] = {
13403 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13404 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13405 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13406 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13407 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13408 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13409 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13410 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13411 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13412 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13413 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13414 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13415 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13416 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13417 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13418 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13419 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13420 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13421 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13422 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13423 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13424 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13425 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13426 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13427 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13428 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13429 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13430 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13431 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13432 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13433 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13434 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13435};
13436
13437static u32 nphy_tpc_txgain_ipa_rev5[] = {
13438 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13439 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13440 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13441 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13442 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13443 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13444 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13445 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13446 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13447 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13448 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13449 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13450 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13451 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13452 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13453 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13454 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13455 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13456 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13457 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13458 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13459 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13460 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13461 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13462 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13463 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13464 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13465 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13466 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13467 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13468 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13469 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13470};
13471
13472static u32 nphy_tpc_txgain_ipa_rev6[] = {
13473 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13474 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13475 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13476 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13477 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13478 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13479 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13480 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13481 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13482 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13483 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13484 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13485 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13486 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13487 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13488 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13489 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13490 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13491 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13492 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13493 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13494 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13495 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13496 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13497 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13498 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13499 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13500 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13501 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13502 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13503 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13504 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13505};
13506
13507static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13508 0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13509 0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13510 0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13511 0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13512 0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13513 0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13514 0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13515 0x70470028, 0x70470026, 0x70470024, 0x70470022,
13516 0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13517 0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13518 0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13519 0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13520 0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13521 0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13522 0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13523 0x70170019, 0x70170018, 0x70170016, 0x70170015,
13524 0x70170014, 0x70170013, 0x70170012, 0x70170010,
13525 0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13526 0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13527 0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13528 0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13529 0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13530 0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13531 0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13532 0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13533 0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13534 0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13535 0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13536 0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13537 0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13538 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13539 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13540};
13541
13542static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13543 0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13544 0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13545 0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13546 0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13547 0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13548 0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13549 0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13550 0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13551 0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13552 0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13553 0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13554 0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13555 0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13556 0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13557 0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13558 0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13559 0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13560 0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13561 0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13562 0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13563 0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13564 0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13565 0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13566 0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13567 0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13568 0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13569 0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13570 0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13571 0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13572 0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13573 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13574 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13575};
13576
13577static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13578 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13579 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13580 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13581 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13582 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13583 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13584 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13585 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13586 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13587 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13588 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13589 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13590 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13591 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13592 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13593 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13594 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13595 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13596 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13597 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13610};
13611
13612static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13613 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13614 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13615 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13616 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13617 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13618 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13619 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13620 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13621 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13622 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13623 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13624 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13625 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13626 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13627 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13628 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13629 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13630 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13631 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13632 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13635 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13636 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13637 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13638 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13639 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13640 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13641 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13642 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13643 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13644 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13645};
13646
13647static u32 nphy_tpc_txgain_ipa_5g[] = {
13648 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13649 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13650 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13651 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13652 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13653 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13654 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13655 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13656 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13657 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13658 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13659 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13660 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13661 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13662 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13663 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13664 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13665 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13666 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13667 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13668 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13669 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13670 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13671 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13672 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13673 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13674 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13675 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13676 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13677 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13678 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13679 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13680};
13681
13682static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13683 0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13684 0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13685 0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13686 0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13687 0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13688 0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13689 0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13690 0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13691 0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13692 0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13693 0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13694 0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13695 0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13696 0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13697 0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13698 0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13699 0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13700 0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13701 0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13702 0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13703 0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13704 0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13705 0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13706 0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13707 0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13708 0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13709 0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13710 0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13711 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13712 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13713 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13714 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13715};
13716
13717static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13718 0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13719 0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13720 0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13721 0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13722 0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13723 0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13724 0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13725 0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13726 0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13727 0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13728 0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13729 0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13730 0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13731 0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13732 0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13733 0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13734 0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13735 0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13736 0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13737 0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13738 0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13739 0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13740 0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13741 0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13742 0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13743 0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13744 0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13745 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13747 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13748 0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13749 0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13750};
13751
13752static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13753 -114, -108, -98, -91, -84, -78, -70, -62,
13754 -54, -46, -39, -31, -23, -15, -8, 0
13755};
13756
13757static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13758 -100, -95, -89, -83, -77, -70, -63, -56,
13759 -48, -41, -33, -25, -19, -12, -6, 0
13760};
13761
13762static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13763 -159, -113, -86, -72, -62, -54, -48, -43,
13764 -39, -35, -31, -28, -25, -23, -20, -18,
13765 -17, -15, -13, -11, -10, -8, -7, -6,
13766 -5, -4, -3, -3, -2, -1, -1, 0
13767};
13768
13769static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13770 -109, -109, -82, -68, -58, -50, -44, -39,
13771 -35, -31, -28, -26, -23, -21, -19, -17,
13772 -16, -14, -13, -11, -10, -9, -8, -7,
13773 -5, -5, -4, -3, -2, -1, -1, 0
13774};
13775
13776static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13777 -122, -122, -95, -80, -69, -61, -54, -49,
13778 -43, -39, -35, -32, -28, -26, -23, -21,
13779 -18, -16, -15, -13, -11, -10, -8, -7,
13780 -6, -5, -4, -3, -2, -1, -1, 0
13781};
13782
13783static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13784 -107, -101, -92, -85, -78, -71, -62, -55,
13785 -47, -39, -32, -24, -19, -12, -6, 0
13786};
13787
13788static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13789 -110, -104, -95, -88, -81, -74, -66, -58,
13790 -50, -44, -36, -28, -23, -15, -8, 0
13791};
13792
13793static u8 pad_gain_codes_used_2057rev5[] = {
13794 20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13795 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13796};
13797
13798static u8 pad_gain_codes_used_2057rev7[] = {
13799 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13800 5, 4, 3, 2, 1
13801};
13802
13803static u8 pad_all_gain_codes_2057[] = {
13804 31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13805 21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13806 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13807 1, 0
13808};
13809
13810static u8 pga_all_gain_codes_2057[] = {
13811 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13812};
13813
13814static u32 nphy_papd_scaltbl[] = {
13815 0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13816 0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13817 0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13818 0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13819 0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13820 0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13821 0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13822 0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13823 0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13824 0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13825 0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13826 0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13827 0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13828 0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13829 0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13830 0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13831};
13832
13833static u32 nphy_tpc_txgain_rev3[] = {
13834 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13835 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13836 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13837 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13838 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13839 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13840 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13841 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13842 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13843 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13844 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13845 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13846 0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13847 0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13848 0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13849 0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13850 0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13851 0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13852 0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13853 0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13854 0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13855 0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13856 0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13857 0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13858 0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13859 0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13860 0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13861 0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13862 0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13863 0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13864 0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13865 0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13866};
13867
13868static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13869 0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13870 0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13871 0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13872 0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13873 0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13874 0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13875 0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13876 0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13877 0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13878 0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13879 0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13880 0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13881 0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13882 0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13883 0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13884 0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13885 0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13886 0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13887 0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13888 0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13889 0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13890 0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13891 0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13892 0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13893 0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13894 0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13895 0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13896 0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13897 0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13898 0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13899 0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13900 0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13901};
13902
13903static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13904 0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13905 0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13906 0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13907 0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13908 0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13909 0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13910 0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13911 0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13912 0x80290031, 0x80210039, 0x80210036, 0x80210033,
13913 0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13914 0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13915 0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13916 0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13917 0x80110027, 0x80110024, 0x80110022, 0x80110020,
13918 0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13919 0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13920 0x80090029, 0x80090027, 0x80090025, 0x80090023,
13921 0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13922 0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13923 0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13924 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13933 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13934 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13935 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13936};
13937
13938static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13939 0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13940 0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13941 0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13942 0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13943 0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13944 0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13945 0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13946 0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13947 0x10290031, 0x10210039, 0x10210036, 0x10210033,
13948 0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13949 0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13950 0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13951 0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13952 0x10110027, 0x10110024, 0x10110022, 0x10110020,
13953 0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13954 0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13955 0x10090029, 0x10090027, 0x10090025, 0x10090023,
13956 0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13957 0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13958 0x10090015, 0x10090013, 0x10090012, 0x10090011,
13959 0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13960 0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13961 0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13962 0x10090008, 0x10090008, 0x10090007, 0x10090007,
13963 0x10090007, 0x10090006, 0x10090006, 0x10090005,
13964 0x10090005, 0x10090005, 0x10090005, 0x10090004,
13965 0x10090004, 0x10090004, 0x10090004, 0x10090003,
13966 0x10090003, 0x10090003, 0x10090003, 0x10090003,
13967 0x10090003, 0x10090002, 0x10090002, 0x10090002,
13968 0x10090002, 0x10090002, 0x10090002, 0x10090002,
13969 0x10090002, 0x10090002, 0x10090001, 0x10090001,
13970 0x10090001, 0x10090001, 0x10090001, 0x10090001
13971};
13972
13973static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13974 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13975 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13976 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13977 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13978 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13979 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13980 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13981 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13982 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13983 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13984 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13985 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13986 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13987 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13988 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13989 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13990 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13991 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13992 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13993 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13994 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13995 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13996 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13997 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13998 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13999 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
14000 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
14001 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14002 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14003 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14004 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14005 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14006};
14007
14008static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14009 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14010 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14011 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14012 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14013 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14014 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14015 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14016 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14017 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14018 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14019 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14020 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14021 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14022 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14023 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14024 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14025 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14026 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14027 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14028 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14029 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14030 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14031 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14032 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14033 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14034 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14035 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14036 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14037 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14038 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14039 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14040 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14041};
14042
14043static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14044 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14045 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14046 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14047 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14048 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14049 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14050 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14051 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14052 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14053 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14054 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14055 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14056 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14057 0x09620039, 0x09620037, 0x09620035, 0x09620033,
14058 0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14059 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14060 0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14061 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14062 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14063 0x06620039, 0x06620037, 0x06620035, 0x06620033,
14064 0x05620046, 0x05620044, 0x05620042, 0x05620040,
14065 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14066 0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14067 0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14068 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14069 0x03620038, 0x03620037, 0x03620035, 0x03620033,
14070 0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14071 0x02620046, 0x02620044, 0x02620043, 0x02620042,
14072 0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14073 0x01620043, 0x01620042, 0x01620041, 0x01620040,
14074 0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14075 0x0062003b, 0x00620039, 0x00620037, 0x00620035
14076};
14077
14078static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14079 0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14080 0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14081 0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14082 0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14083 0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14084 0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14085 0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14086 0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14087 0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14088 0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14089 0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14090 0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14091 0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14092 0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14093 0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14094 0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14095 0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14096 0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14097 0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14098 0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14099 0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14100 0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14101 0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14102 0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14103 0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14104 0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14105 0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14106 0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14107 0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14108 0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14109 0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14110 0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14111};
14112
14113static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14114static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14115static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14116 0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14117};
14118static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14119 0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14120};
14121
14122bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14123{
14124 struct brcms_phy *pi = (struct brcms_phy *) pih;
14125 u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14126
14127 if (NREV_GE(pi->pubpi.phy_rev, 16))
14128 return true;
14129
14130 phybist0 = read_phy_reg(pi, 0x0e);
14131 phybist1 = read_phy_reg(pi, 0x0f);
14132 phybist2 = read_phy_reg(pi, 0xea);
14133 phybist3 = read_phy_reg(pi, 0xeb);
14134 phybist4 = read_phy_reg(pi, 0x156);
14135
14136 if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14137 (phybist3 == 0) && (phybist4 == 0))
14138 return true;
14139
14140 return false;
14141}
14142
14143static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14144{
14145 u16 addr, val;
14146
14147 val = 0x1e1f;
14148 for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14149 addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14150 write_phy_reg(pi, addr, val);
14151 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14152 val = 0x3e3f;
14153 else
14154 val -= 0x0202;
14155 }
14156
14157 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14158}
14159
14160void
14161wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14162 u32 width, const void *data)
14163{
14164 struct phytbl_info tbl;
14165
14166 tbl.tbl_id = id;
14167 tbl.tbl_len = len;
14168 tbl.tbl_offset = offset;
14169 tbl.tbl_width = width;
14170 tbl.tbl_ptr = data;
14171 wlc_phy_write_table_nphy(pi, &tbl);
14172}
14173
14174void
14175wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14176 u32 width, void *data)
14177{
14178 struct phytbl_info tbl;
14179
14180 tbl.tbl_id = id;
14181 tbl.tbl_len = len;
14182 tbl.tbl_offset = offset;
14183 tbl.tbl_width = width;
14184 tbl.tbl_ptr = data;
14185 wlc_phy_read_table_nphy(pi, &tbl);
14186}
14187
14188static void
14189wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14190{
14191 uint idx;
14192
14193 if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14194 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14195 wlc_phy_write_table_nphy(pi,
14196 &mimophytbl_info_rev16[idx]);
14197 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14198 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14199 wlc_phy_write_table_nphy(pi,
14200 &mimophytbl_info_rev7[idx]);
14201 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14202 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14203 wlc_phy_write_table_nphy(pi,
14204 &mimophytbl_info_rev3[idx]);
14205 } else {
14206 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14207 wlc_phy_write_table_nphy(pi,
14208 &mimophytbl_info_rev0[idx]);
14209 }
14210}
14211
14212static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14213{
14214 uint idx = 0;
14215 u8 antswctrllut;
14216
14217 if (pi->phy_init_por)
14218 wlc_phy_static_table_download_nphy(pi);
14219
14220 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14221
14222 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14223 pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14224 antswctrllut;
14225
14226 switch (antswctrllut) {
14227 case 0:
14228
14229 break;
14230
14231 case 1:
14232
14233 if (pi->aa2g == 7)
14234 wlc_phy_table_write_nphy(
14235 pi,
14236 NPHY_TBL_ID_ANTSWCTRLLUT,
14237 2, 0x21, 8,
14238 &ant_sw_ctrl_tbl_rev8_2o3[0]);
14239 else
14240 wlc_phy_table_write_nphy(
14241 pi,
14242 NPHY_TBL_ID_ANTSWCTRLLUT,
14243 2, 0x21, 8,
14244 &ant_sw_ctrl_tbl_rev8
14245 [0]);
14246
14247 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248 2, 0x25, 8,
14249 &ant_sw_ctrl_tbl_rev8[2]);
14250 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14251 2, 0x29, 8,
14252 &ant_sw_ctrl_tbl_rev8[4]);
14253 break;
14254
14255 case 2:
14256
14257 wlc_phy_table_write_nphy(
14258 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14259 2, 0x1, 8,
14260 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14261 wlc_phy_table_write_nphy(
14262 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14263 2, 0x5, 8,
14264 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14265 wlc_phy_table_write_nphy(
14266 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14267 2, 0x9, 8,
14268 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14269
14270 wlc_phy_table_write_nphy(
14271 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14272 2, 0x21, 8,
14273 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14274 wlc_phy_table_write_nphy(
14275 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14276 2, 0x25, 8,
14277 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14278 wlc_phy_table_write_nphy(
14279 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14280 2, 0x29, 8,
14281 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14282 break;
14283
14284 default:
14285 break;
14286 }
14287
14288 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14289 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14290
14291 if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14292 antswctrllut =
14293 CHSPEC_IS2G(pi->radio_chanspec) ?
14294 pi->srom_fem2g.antswctrllut :
14295 pi->srom_fem5g.antswctrllut;
14296 switch (antswctrllut) {
14297 case 0:
14298 wlc_phy_write_table_nphy(
14299 pi,
14300 &mimophytbl_info_rev3_volatile
14301 [idx]);
14302 break;
14303 case 1:
14304 wlc_phy_write_table_nphy(
14305 pi,
14306 &mimophytbl_info_rev3_volatile1
14307 [idx]);
14308 break;
14309 case 2:
14310 wlc_phy_write_table_nphy(
14311 pi,
14312 &mimophytbl_info_rev3_volatile2
14313 [idx]);
14314 break;
14315 case 3:
14316 wlc_phy_write_table_nphy(
14317 pi,
14318 &mimophytbl_info_rev3_volatile3
14319 [idx]);
14320 break;
14321 default:
14322 break;
14323 }
14324 } else {
14325 wlc_phy_write_table_nphy(
14326 pi,
14327 &mimophytbl_info_rev3_volatile[idx]);
14328 }
14329 }
14330 } else {
14331 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14332 wlc_phy_write_table_nphy(pi,
14333 &mimophytbl_info_rev0_volatile
14334 [idx]);
14335 }
14336}
14337
14338static void
14339wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14340{
14341 write_phy_reg(pi, 0x77, holdoff);
14342 write_phy_reg(pi, 0xb4, delay);
14343}
14344
14345void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14346{
14347 u16 holdoff, delay;
14348
14349 if (rifs) {
14350
14351 holdoff = 0x10;
14352 delay = 0x258;
14353 } else {
14354
14355 holdoff = 0x15;
14356 delay = 0x320;
14357 }
14358
14359 wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14360
14361 if (pi && pi->sh && (pi->sh->_rifs_phy != rifs))
14362 pi->sh->_rifs_phy = rifs;
14363}
14364
14365static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14366{
14367
14368 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14369 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14370 pi->phy_5g_pwrgain = true;
14371 return;
14372 }
14373
14374 pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14375 pi->phy_5g_pwrgain = false;
14376
14377 if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14378 NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14379 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14380 else if ((pi->sh->sromrev >= 4)
14381 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14382 pi->phy_5g_pwrgain = true;
14383}
14384
14385static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14386{
14387 u16 bw40po, cddpo, stbcpo, bwduppo;
14388 uint band_num;
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014389 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014390
14391 if (pi->sh->sromrev >= 9)
14392 return;
14393
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014394 bw40po = sprom->bw40po;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014395 pi->bw402gpo = bw40po & 0xf;
14396 pi->bw405gpo = (bw40po & 0xf0) >> 4;
14397 pi->bw405glpo = (bw40po & 0xf00) >> 8;
14398 pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14399
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014400 cddpo = sprom->cddpo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014401 pi->cdd2gpo = cddpo & 0xf;
14402 pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14403 pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14404 pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14405
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014406 stbcpo = sprom->stbcpo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014407 pi->stbc2gpo = stbcpo & 0xf;
14408 pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14409 pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14410 pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14411
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014412 bwduppo = sprom->bwduppo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014413 pi->bwdup2gpo = bwduppo & 0xf;
14414 pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14415 pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14416 pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14417
14418 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14419 band_num++) {
14420 switch (band_num) {
14421 case 0:
Arend van Spriel5b435de2011-10-05 13:19:03 +020014422 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014423 sprom->core_pwr_info[0].maxpwr_2g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014424 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014425 sprom->core_pwr_info[1].maxpwr_2g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014426 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014427 sprom->core_pwr_info[0].pa_2g[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014428 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014429 sprom->core_pwr_info[1].pa_2g[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014430 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014431 sprom->core_pwr_info[0].pa_2g[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014432 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014433 sprom->core_pwr_info[1].pa_2g[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014434 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014435 sprom->core_pwr_info[0].pa_2g[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014436 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014437 sprom->core_pwr_info[1].pa_2g[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014438 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014439 sprom->core_pwr_info[0].itssi_2g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014440 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014441 sprom->core_pwr_info[1].itssi_2g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014442
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014443 pi->cck2gpo = sprom->cck2gpo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014444
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014445 pi->ofdm2gpo = sprom->ofdm2gpo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014446
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014447 pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14448 pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14449 pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14450 pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14451 pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14452 pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14453 pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14454 pi->mcs2gpo[7] = sprom->mcs2gpo[7];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014455 break;
14456 case 1:
14457
Arend van Spriel5b435de2011-10-05 13:19:03 +020014458 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014459 sprom->core_pwr_info[0].maxpwr_5g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014460 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014461 sprom->core_pwr_info[1].maxpwr_5g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014462 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014463 sprom->core_pwr_info[0].pa_5g[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014464 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014465 sprom->core_pwr_info[1].pa_5g[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014466 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014467 sprom->core_pwr_info[0].pa_5g[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014468 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014469 sprom->core_pwr_info[1].pa_5g[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014470 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014471 sprom->core_pwr_info[0].pa_5g[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014472 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014473 sprom->core_pwr_info[1].pa_5g[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014474 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014475 sprom->core_pwr_info[0].itssi_5g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014476 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014477 sprom->core_pwr_info[1].itssi_5g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014478
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014479 pi->ofdm5gpo = sprom->ofdm5gpo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014480
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014481 pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14482 pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14483 pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14484 pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14485 pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14486 pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14487 pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14488 pi->mcs5gpo[7] = sprom->mcs5gpo[7];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014489 break;
14490 case 2:
14491
Arend van Spriel5b435de2011-10-05 13:19:03 +020014492 pi->nphy_pwrctrl_info[0].max_pwr_5gl =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014493 sprom->core_pwr_info[0].maxpwr_5gl;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014494 pi->nphy_pwrctrl_info[1].max_pwr_5gl =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014495 sprom->core_pwr_info[1].maxpwr_5gl;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014496 pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014497 sprom->core_pwr_info[0].pa_5gl[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014498 pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014499 sprom->core_pwr_info[1].pa_5gl[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014500 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014501 sprom->core_pwr_info[0].pa_5gl[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014502 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014503 sprom->core_pwr_info[1].pa_5gl[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014504 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014505 sprom->core_pwr_info[0].pa_5gl[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014506 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014507 sprom->core_pwr_info[1].pa_5gl[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014508 pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14509 pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14510
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014511 pi->ofdm5glpo = sprom->ofdm5glpo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014512
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014513 pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14514 pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14515 pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14516 pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14517 pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14518 pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14519 pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14520 pi->mcs5glpo[7] = sprom->mcs5glpo[7];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014521 break;
14522 case 3:
14523
Arend van Spriel5b435de2011-10-05 13:19:03 +020014524 pi->nphy_pwrctrl_info[0].max_pwr_5gh =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014525 sprom->core_pwr_info[0].maxpwr_5gh;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014526 pi->nphy_pwrctrl_info[1].max_pwr_5gh =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014527 sprom->core_pwr_info[1].maxpwr_5gh;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014528 pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014529 sprom->core_pwr_info[0].pa_5gh[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014530 pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014531 sprom->core_pwr_info[1].pa_5gh[0];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014532 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014533 sprom->core_pwr_info[0].pa_5gh[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014534 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014535 sprom->core_pwr_info[1].pa_5gh[1];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014536 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014537 sprom->core_pwr_info[0].pa_5gh[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014538 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014539 sprom->core_pwr_info[1].pa_5gh[2];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014540 pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14541 pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14542
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014543 pi->ofdm5ghpo = sprom->ofdm5ghpo;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014544
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014545 pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14546 pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14547 pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14548 pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14549 pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14550 pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14551 pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14552 pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
Arend van Spriel5b435de2011-10-05 13:19:03 +020014553 break;
14554 }
14555 }
14556
14557 wlc_phy_txpwr_apply_nphy(pi);
14558}
14559
14560static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14561{
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014562 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014563
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014564 pi->antswitch = sprom->antswitch;
14565 pi->aa2g = sprom->ant_available_bg;
14566 pi->aa5g = sprom->ant_available_a;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014567
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014568 pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14569 pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14570 pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14571 pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14572 pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014573
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014574 pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14575 pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14576 pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14577 pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14578 if (sprom->fem.ghz5.antswlut)
14579 pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014580 else
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014581 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014582
14583 wlc_phy_txpower_ipa_upd(pi);
14584
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014585 pi->phy_txcore_disable_temp = sprom->tempthresh;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014586 if (pi->phy_txcore_disable_temp == 0)
14587 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14588
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014589 pi->phy_tempsense_offset = sprom->tempoffset;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014590 if (pi->phy_tempsense_offset != 0) {
14591 if (pi->phy_tempsense_offset >
14592 (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14593 pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14594 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14595 NPHY_SROM_MINTEMPOFFSET))
14596 pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14597 else
14598 pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14599 }
14600
14601 pi->phy_txcore_enable_temp =
14602 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14603
Hauke Mehrtens898d3c32012-04-29 02:50:25 +020014604 pi->phycal_tempdelta = sprom->phycal_tempdelta;
Arend van Spriel5b435de2011-10-05 13:19:03 +020014605 if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14606 pi->phycal_tempdelta = 0;
14607
14608 wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14609
14610 return true;
14611}
14612
14613bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14614{
14615 uint i;
14616
14617 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14618 pi->phyhang_avoid = true;
14619
14620 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14621 pi->nphy_gband_spurwar_en = true;
14622 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14623 pi->nphy_aband_spurwar_en = true;
14624 }
14625 if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14626 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14627 pi->nphy_gband_spurwar2_en = true;
14628 }
14629
14630 pi->n_preamble_override = AUTO;
14631 if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14632 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14633
14634 pi->nphy_txrx_chain = AUTO;
14635 pi->phy_scraminit = AUTO;
14636
14637 pi->nphy_rxcalparams = 0x010100B5;
14638
14639 pi->nphy_perical = PHY_PERICAL_MPHASE;
14640 pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14641 pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14642
14643 pi->nphy_gain_boost = true;
14644 pi->nphy_elna_gain_config = false;
14645 pi->radio_is_on = false;
14646
14647 for (i = 0; i < pi->pubpi.phy_corenum; i++)
14648 pi->nphy_txpwrindex[i].index = AUTO;
14649
14650 wlc_phy_txpwrctrl_config_nphy(pi);
14651 if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14652 pi->hwpwrctrl_capable = true;
14653
14654 pi->pi_fptr.init = wlc_phy_init_nphy;
14655 pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14656 pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14657 pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14658
14659 if (!wlc_phy_txpwr_srom_read_nphy(pi))
14660 return false;
14661
14662 return true;
14663}
14664
14665static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14666{
14667 s32 rfpwr_offset = 0;
14668
14669 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14670 if ((pi->pubpi.radiorev == 3) ||
14671 (pi->pubpi.radiorev == 4) ||
14672 (pi->pubpi.radiorev == 6))
14673 rfpwr_offset = (s16)
14674 nphy_papd_padgain_dlt_2g_2057rev3n4
14675 [pad_gn];
14676 else if (pi->pubpi.radiorev == 5)
14677 rfpwr_offset = (s16)
14678 nphy_papd_padgain_dlt_2g_2057rev5
14679 [pad_gn];
14680 else if ((pi->pubpi.radiorev == 7)
14681 || (pi->pubpi.radiorev ==
14682 8))
14683 rfpwr_offset = (s16)
14684 nphy_papd_padgain_dlt_2g_2057rev7
14685 [pad_gn];
14686 } else {
14687 if ((pi->pubpi.radiorev == 3) ||
14688 (pi->pubpi.radiorev == 4) ||
14689 (pi->pubpi.radiorev == 6))
14690 rfpwr_offset = (s16)
14691 nphy_papd_pgagain_dlt_5g_2057
14692 [pga_gn];
14693 else if ((pi->pubpi.radiorev == 7)
14694 || (pi->pubpi.radiorev ==
14695 8))
14696 rfpwr_offset = (s16)
14697 nphy_papd_pgagain_dlt_5g_2057rev7
14698 [pga_gn];
14699 }
14700 return rfpwr_offset;
14701}
14702
14703static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14704{
14705 bool gf_preamble = false;
14706 u16 val;
14707
14708 if (preamble == BRCMS_N_PREAMBLE_GF)
14709 gf_preamble = true;
14710
14711 val = read_phy_reg(pi, 0xed);
14712
14713 val |= RX_GF_MM_AUTO;
14714 val &= ~RX_GF_OR_MM;
14715 if (gf_preamble)
14716 val |= RX_GF_OR_MM;
14717
14718 write_phy_reg(pi, 0xed, val);
14719}
14720
14721static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14722{
14723 int j, type;
14724 u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14725
14726 for (type = 0; type < 3; type++) {
14727 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728 write_phy_reg(pi, addr_offset[type] + j,
14729 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14730 }
14731
14732 if (pi->bw == WL_CHANSPEC_BW_40) {
14733 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734 write_phy_reg(pi, 0x186 + j,
14735 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14736 } else {
14737 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14738 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14739 write_phy_reg(pi, 0x186 + j,
14740 NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14741 }
14742
14743 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14744 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14745 write_phy_reg(pi, 0x2c5 + j,
14746 NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14747 }
14748 }
14749}
14750
14751static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14752{
14753 int j;
14754
14755 if (pi->bw == WL_CHANSPEC_BW_40) {
14756 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14757 write_phy_reg(pi, 0x195 + j,
14758 NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14759 } else {
14760 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14761 write_phy_reg(pi, 0x186 + j,
14762 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14763 }
14764}
14765
14766static void
14767wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14768 u8 len)
14769{
14770 u32 t1_offset, t2_offset;
14771 u8 ctr;
14772 u8 end_event =
14773 NREV_GE(pi->pubpi.phy_rev,
14774 3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14775 u8 end_dly = 1;
14776
14777 if (pi->phyhang_avoid)
14778 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14779
14780 t1_offset = cmd << 4;
14781 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14782 events);
14783 t2_offset = t1_offset + 0x080;
14784 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14785 dlys);
14786
14787 for (ctr = len; ctr < 16; ctr++) {
14788 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14789 t1_offset + ctr, 8, &end_event);
14790 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14791 t2_offset + ctr, 8, &end_dly);
14792 }
14793
14794 if (pi->phyhang_avoid)
14795 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14796}
14797
14798static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14799{
14800 u16 lpf_bw_ctl_val = 0;
14801 u16 rx2tx_lpf_rc_lut_offset = 0;
14802
14803 if (offset == 0) {
14804 if (CHSPEC_IS40(pi->radio_chanspec))
14805 rx2tx_lpf_rc_lut_offset = 0x159;
14806 else
14807 rx2tx_lpf_rc_lut_offset = 0x154;
14808 } else {
14809 rx2tx_lpf_rc_lut_offset = offset;
14810 }
14811 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14812 (u32) rx2tx_lpf_rc_lut_offset, 16,
14813 &lpf_bw_ctl_val);
14814
14815 lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14816
14817 return lpf_bw_ctl_val;
14818}
14819
14820static void
14821wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14822 u8 core_mask, u8 off, u8 override_id)
14823{
14824 u8 core_num;
14825 u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14826 u8 val_shift = 0;
14827
14828 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14829 en_mask = field;
14830 for (core_num = 0; core_num < 2; core_num++) {
14831 if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14832
14833 switch (field) {
14834 case (0x1 << 2):
14835 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14836 val_addr = (core_num == 0) ? 0x7a :
14837 0x7d;
14838 val_mask = (0x1 << 1);
14839 val_shift = 1;
14840 break;
14841 case (0x1 << 3):
14842 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14843 val_addr = (core_num == 0) ? 0x7a :
14844 0x7d;
14845 val_mask = (0x1 << 2);
14846 val_shift = 2;
14847 break;
14848 case (0x1 << 4):
14849 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14850 val_addr = (core_num == 0) ? 0x7a :
14851 0x7d;
14852 val_mask = (0x1 << 4);
14853 val_shift = 4;
14854 break;
14855 case (0x1 << 5):
14856 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14857 val_addr = (core_num == 0) ? 0x7a :
14858 0x7d;
14859 val_mask = (0x1 << 5);
14860 val_shift = 5;
14861 break;
14862 case (0x1 << 6):
14863 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14864 val_addr = (core_num == 0) ? 0x7a :
14865 0x7d;
14866 val_mask = (0x1 << 6);
14867 val_shift = 6;
14868 break;
14869 case (0x1 << 7):
14870 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14871 val_addr = (core_num == 0) ? 0x7a :
14872 0x7d;
14873 val_mask = (0x1 << 7);
14874 val_shift = 7;
14875 break;
14876 case (0x1 << 10):
14877 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14878 val_addr = (core_num == 0) ? 0xf8 :
14879 0xfa;
14880 val_mask = (0x7 << 4);
14881 val_shift = 4;
14882 break;
14883 case (0x1 << 11):
14884 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14885 val_addr = (core_num == 0) ? 0x7b :
14886 0x7e;
14887 val_mask = (0xffff << 0);
14888 val_shift = 0;
14889 break;
14890 case (0x1 << 12):
14891 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14892 val_addr = (core_num == 0) ? 0x7c :
14893 0x7f;
14894 val_mask = (0xffff << 0);
14895 val_shift = 0;
14896 break;
14897 case (0x3 << 13):
14898 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14899 val_addr = (core_num == 0) ? 0x348 :
14900 0x349;
14901 val_mask = (0xff << 0);
14902 val_shift = 0;
14903 break;
14904 case (0x1 << 13):
14905 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14906 val_addr = (core_num == 0) ? 0x348 :
14907 0x349;
14908 val_mask = (0xf << 0);
14909 val_shift = 0;
14910 break;
14911 default:
14912 addr = 0xffff;
14913 break;
14914 }
14915 } else if (override_id ==
14916 NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14917
14918 switch (field) {
14919 case (0x1 << 1):
14920 en_addr = (core_num == 0) ? 0x342 :
14921 0x343;
14922 val_addr = (core_num == 0) ? 0x340 :
14923 0x341;
14924 val_mask = (0x1 << 1);
14925 val_shift = 1;
14926 break;
14927 case (0x1 << 3):
14928 en_addr = (core_num == 0) ? 0x342 :
14929 0x343;
14930 val_addr = (core_num == 0) ? 0x340 :
14931 0x341;
14932 val_mask = (0x1 << 3);
14933 val_shift = 3;
14934 break;
14935 case (0x1 << 5):
14936 en_addr = (core_num == 0) ? 0x342 :
14937 0x343;
14938 val_addr = (core_num == 0) ? 0x340 :
14939 0x341;
14940 val_mask = (0x1 << 5);
14941 val_shift = 5;
14942 break;
14943 case (0x1 << 4):
14944 en_addr = (core_num == 0) ? 0x342 :
14945 0x343;
14946 val_addr = (core_num == 0) ? 0x340 :
14947 0x341;
14948 val_mask = (0x1 << 4);
14949 val_shift = 4;
14950 break;
14951 case (0x1 << 2):
14952
14953 en_addr = (core_num == 0) ? 0x342 :
14954 0x343;
14955 val_addr = (core_num == 0) ? 0x340 :
14956 0x341;
14957 val_mask = (0x1 << 2);
14958 val_shift = 2;
14959 break;
14960 case (0x1 << 7):
14961
14962 en_addr = (core_num == 0) ? 0x342 :
14963 0x343;
14964 val_addr = (core_num == 0) ? 0x340 :
14965 0x341;
14966 val_mask = (0x7 << 8);
14967 val_shift = 8;
14968 break;
14969 case (0x1 << 11):
14970 en_addr = (core_num == 0) ? 0x342 :
14971 0x343;
14972 val_addr = (core_num == 0) ? 0x340 :
14973 0x341;
14974 val_mask = (0x1 << 14);
14975 val_shift = 14;
14976 break;
14977 case (0x1 << 10):
14978 en_addr = (core_num == 0) ? 0x342 :
14979 0x343;
14980 val_addr = (core_num == 0) ? 0x340 :
14981 0x341;
14982 val_mask = (0x1 << 13);
14983 val_shift = 13;
14984 break;
14985 case (0x1 << 9):
14986 en_addr = (core_num == 0) ? 0x342 :
14987 0x343;
14988 val_addr = (core_num == 0) ? 0x340 :
14989 0x341;
14990 val_mask = (0x1 << 12);
14991 val_shift = 12;
14992 break;
14993 case (0x1 << 8):
14994 en_addr = (core_num == 0) ? 0x342 :
14995 0x343;
14996 val_addr = (core_num == 0) ? 0x340 :
14997 0x341;
14998 val_mask = (0x1 << 11);
14999 val_shift = 11;
15000 break;
15001 case (0x1 << 6):
15002 en_addr = (core_num == 0) ? 0x342 :
15003 0x343;
15004 val_addr = (core_num == 0) ? 0x340 :
15005 0x341;
15006 val_mask = (0x1 << 6);
15007 val_shift = 6;
15008 break;
15009 case (0x1 << 0):
15010 en_addr = (core_num == 0) ? 0x342 :
15011 0x343;
15012 val_addr = (core_num == 0) ? 0x340 :
15013 0x341;
15014 val_mask = (0x1 << 0);
15015 val_shift = 0;
15016 break;
15017 default:
15018 addr = 0xffff;
15019 break;
15020 }
15021 } else if (override_id ==
15022 NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15023
15024 switch (field) {
15025 case (0x1 << 3):
15026 en_addr = (core_num == 0) ? 0x346 :
15027 0x347;
15028 val_addr = (core_num == 0) ? 0x344 :
15029 0x345;
15030 val_mask = (0x1 << 3);
15031 val_shift = 3;
15032 break;
15033 case (0x1 << 1):
15034 en_addr = (core_num == 0) ? 0x346 :
15035 0x347;
15036 val_addr = (core_num == 0) ? 0x344 :
15037 0x345;
15038 val_mask = (0x1 << 1);
15039 val_shift = 1;
15040 break;
15041 case (0x1 << 0):
15042 en_addr = (core_num == 0) ? 0x346 :
15043 0x347;
15044 val_addr = (core_num == 0) ? 0x344 :
15045 0x345;
15046 val_mask = (0x1 << 0);
15047 val_shift = 0;
15048 break;
15049 case (0x1 << 2):
15050 en_addr = (core_num == 0) ? 0x346 :
15051 0x347;
15052 val_addr = (core_num == 0) ? 0x344 :
15053 0x345;
15054 val_mask = (0x1 << 2);
15055 val_shift = 2;
15056 break;
15057 case (0x1 << 4):
15058 en_addr = (core_num == 0) ? 0x346 :
15059 0x347;
15060 val_addr = (core_num == 0) ? 0x344 :
15061 0x345;
15062 val_mask = (0x1 << 4);
15063 val_shift = 4;
15064 break;
15065 default:
15066 addr = 0xffff;
15067 break;
15068 }
15069 }
15070
15071 if (off) {
15072 and_phy_reg(pi, en_addr, ~en_mask);
15073 and_phy_reg(pi, val_addr, ~val_mask);
15074 } else {
15075
15076 if ((core_mask == 0)
15077 || (core_mask & (1 << core_num))) {
15078 or_phy_reg(pi, en_addr, en_mask);
15079
15080 if (addr != 0xffff)
15081 mod_phy_reg(pi, val_addr,
15082 val_mask,
15083 (value <<
15084 val_shift));
15085 }
15086 }
15087 }
15088 }
15089}
15090
15091static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15092{
15093 uint core;
15094 int ctr;
15095 s16 gain_delta[2];
15096 u8 curr_channel;
15097 u16 minmax_gain[2];
15098 u16 regval[4];
15099
15100 if (pi->phyhang_avoid)
15101 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15102
15103 if (pi->nphy_gain_boost) {
15104 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15105
15106 gain_delta[0] = 6;
15107 gain_delta[1] = 6;
15108 } else {
15109
15110 curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15111 gain_delta[0] =
15112 (s16)
15113 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15114 curr_channel) +
15115 nphy_lnagain_est0[1]), 13);
15116 gain_delta[1] =
15117 (s16)
15118 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15119 curr_channel) +
15120 nphy_lnagain_est1[1]), 13);
15121 }
15122 } else {
15123
15124 gain_delta[0] = 0;
15125 gain_delta[1] = 0;
15126 }
15127
15128 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15129 if (pi->nphy_elna_gain_config) {
15130
15131 regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15132 regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15133 regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15134 regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15135 } else {
15136 for (ctr = 0; ctr < 4; ctr++)
15137 regval[ctr] =
15138 nphy_def_lnagains[ctr] +
15139 gain_delta[core];
15140 }
15141 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15142
15143 minmax_gain[core] =
15144 (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15145 }
15146
15147 mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15148 mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15149
15150 if (pi->phyhang_avoid)
15151 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15152}
15153
15154static void
15155wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15156{
15157 if (core == PHY_CORE_0) {
15158 write_phy_reg(pi, 0x38, 0x4);
15159 if (CHSPEC_IS2G(pi->radio_chanspec))
15160 write_phy_reg(pi, 0x37, 0x0060);
15161 else
15162 write_phy_reg(pi, 0x37, 0x1080);
15163 } else if (core == PHY_CORE_1) {
15164 write_phy_reg(pi, 0x2ae, 0x4);
15165 if (CHSPEC_IS2G(pi->radio_chanspec))
15166 write_phy_reg(pi, 0x2ad, 0x0060);
15167 else
15168 write_phy_reg(pi, 0x2ad, 0x1080);
15169 }
15170}
15171
15172static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15173{
15174 u8 txchain0, txchain1;
15175
15176 txchain0 = txchain & 0x1;
15177 txchain1 = (txchain & 0x2) >> 1;
15178 if (!txchain0)
15179 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15180
15181 if (!txchain1)
15182 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15183}
15184
15185static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15186{
15187 s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15188 s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15189 s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15190 s8 tia_gainbits[] = {
15191 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15192
15193 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15194 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15195
15196 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15197
15198 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15199 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15200
15201 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15202 lna1_gain_db);
15203 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15204 lna1_gain_db);
15205
15206 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15207 lna2_gain_db);
15208 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15209 lna2_gain_db);
15210
15211 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15212 tia_gain_db);
15213 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15214 tia_gain_db);
15215
15216 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15217 tia_gainbits);
15218 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15219 tia_gainbits);
15220
15221 write_phy_reg(pi, 0x37, 0x74);
15222 write_phy_reg(pi, 0x2ad, 0x74);
15223 write_phy_reg(pi, 0x38, 0x18);
15224 write_phy_reg(pi, 0x2ae, 0x18);
15225
15226 write_phy_reg(pi, 0x2b, 0xe8);
15227 write_phy_reg(pi, 0x41, 0xe8);
15228
15229 if (CHSPEC_IS20(pi->radio_chanspec)) {
15230
15231 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15232 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15233 } else {
15234
15235 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15236 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15237 }
15238}
15239
15240static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15241{
15242 u16 currband;
15243 s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15244 s8 *lna1_gain_db = NULL;
15245 s8 *lna1_gain_db_2 = NULL;
15246 s8 *lna2_gain_db = NULL;
15247 s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15248 s8 *tia_gain_db;
15249 s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15250 s8 *tia_gainbits;
15251 u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15252 u16 *rfseq_init_gain;
15253 u16 init_gaincode;
15254 u16 clip1hi_gaincode;
15255 u16 clip1md_gaincode = 0;
15256 u16 clip1md_gaincode_B;
15257 u16 clip1lo_gaincode;
15258 u16 clip1lo_gaincode_B;
15259 u8 crsminl_th = 0;
15260 u8 crsminu_th;
15261 u16 nbclip_th = 0;
15262 u8 w1clip_th;
15263 u16 freq;
15264 s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15265 u8 chg_nbclip_th = 0;
15266
15267 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15268 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15269
15270 currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15271 if (currband == 0) {
15272
15273 lna1_gain_db = lna1G_gain_db_rev7;
15274
15275 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15276 lna1_gain_db);
15277 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15278 lna1_gain_db);
15279
15280 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15281
15282 if (CHSPEC_IS40(pi->radio_chanspec)) {
15283 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15284 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15285 }
15286
15287 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15288
15289 if (CHSPEC_IS20(pi->radio_chanspec)) {
15290 mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15291 mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15292 }
15293 } else {
15294
15295 init_gaincode = 0x9e;
15296 clip1hi_gaincode = 0x9e;
15297 clip1md_gaincode_B = 0x24;
15298 clip1lo_gaincode = 0x8a;
15299 clip1lo_gaincode_B = 8;
15300 rfseq_init_gain = rfseqA_init_gain_rev7;
15301
15302 tia_gain_db = tiaA_gain_db_rev7;
15303 tia_gainbits = tiaA_gainbits_rev7;
15304
15305 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15306 if (CHSPEC_IS20(pi->radio_chanspec)) {
15307
15308 w1clip_th = 25;
15309 clip1md_gaincode = 0x82;
15310
15311 if ((freq <= 5080) || (freq == 5825)) {
15312
15313 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15314 s8 lna1A_gain_db_2_rev7[] = {
15315 11, 17, 22, 25};
15316 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15317
15318 crsminu_th = 0x3e;
15319 lna1_gain_db = lna1A_gain_db_rev7;
15320 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15321 lna2_gain_db = lna2A_gain_db_rev7;
15322 } else if ((freq >= 5500) && (freq <= 5700)) {
15323
15324 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15325 s8 lna1A_gain_db_2_rev7[] = {
15326 12, 18, 22, 26};
15327 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15328
15329 crsminu_th = 0x45;
15330 clip1md_gaincode_B = 0x14;
15331 nbclip_th = 0xff;
15332 chg_nbclip_th = 1;
15333 lna1_gain_db = lna1A_gain_db_rev7;
15334 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15335 lna2_gain_db = lna2A_gain_db_rev7;
15336 } else {
15337
15338 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15339 s8 lna1A_gain_db_2_rev7[] = {
15340 12, 18, 22, 26};
15341 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15342
15343 crsminu_th = 0x41;
15344 lna1_gain_db = lna1A_gain_db_rev7;
15345 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15346 lna2_gain_db = lna2A_gain_db_rev7;
15347 }
15348
15349 if (freq <= 4920) {
15350 nvar_baseline_offset0 = 5;
15351 nvar_baseline_offset1 = 5;
15352 } else if ((freq > 4920) && (freq <= 5320)) {
15353 nvar_baseline_offset0 = 3;
15354 nvar_baseline_offset1 = 5;
15355 } else if ((freq > 5320) && (freq <= 5700)) {
15356 nvar_baseline_offset0 = 3;
15357 nvar_baseline_offset1 = 2;
15358 } else {
15359 nvar_baseline_offset0 = 4;
15360 nvar_baseline_offset1 = 0;
15361 }
15362 } else {
15363
15364 crsminu_th = 0x3a;
15365 crsminl_th = 0x3a;
15366 w1clip_th = 20;
15367
15368 if ((freq >= 4920) && (freq <= 5320)) {
15369 nvar_baseline_offset0 = 4;
15370 nvar_baseline_offset1 = 5;
15371 } else if ((freq > 5320) && (freq <= 5550)) {
15372 nvar_baseline_offset0 = 4;
15373 nvar_baseline_offset1 = 2;
15374 } else {
15375 nvar_baseline_offset0 = 5;
15376 nvar_baseline_offset1 = 3;
15377 }
15378 }
15379
15380 write_phy_reg(pi, 0x20, init_gaincode);
15381 write_phy_reg(pi, 0x2a7, init_gaincode);
15382
15383 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15384 pi->pubpi.phy_corenum, 0x106, 16,
15385 rfseq_init_gain);
15386
15387 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15388 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15389
15390 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15391 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15392
15393 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15394 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15395 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15396 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15397
15398 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15399 tia_gain_db);
15400 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15401 tia_gain_db);
15402
15403 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15404 tia_gainbits);
15405 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15406 tia_gainbits);
15407
15408 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15409
15410 if (chg_nbclip_th == 1) {
15411 write_phy_reg(pi, 0x2b, nbclip_th);
15412 write_phy_reg(pi, 0x41, nbclip_th);
15413 }
15414
15415 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15416 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15417
15418 mod_phy_reg(pi, 0x2e4,
15419 (0x3f << 0), (nvar_baseline_offset0 << 0));
15420
15421 mod_phy_reg(pi, 0x2e4,
15422 (0x3f << 6), (nvar_baseline_offset1 << 6));
15423
15424 if (CHSPEC_IS20(pi->radio_chanspec)) {
15425
15426 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15427 lna1_gain_db);
15428 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15429 lna1_gain_db_2);
15430
15431 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15432 8, lna2_gain_db);
15433 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15434 8, lna2_gain_db);
15435
15436 write_phy_reg(pi, 0x24, clip1md_gaincode);
15437 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15438 } else {
15439 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15440 }
15441 }
15442}
15443
15444static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15445{
15446 u16 w1th, hpf_code, currband;
15447 int ctr;
15448 u8 rfseq_updategainu_events[] = {
15449 NPHY_RFSEQ_CMD_RX_GAIN,
15450 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15451 NPHY_RFSEQ_CMD_SET_HPF_BW
15452 };
15453 u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15454 s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15455 s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15456 s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15457 s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15458 s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15459 s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15460 s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15461 s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15462 s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15463 s8 *lna1_gain_db = NULL;
15464 s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15465 s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15466 s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15467 s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15468 s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15469 s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15470 s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15471 s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15472 s8 *lna2_gain_db = NULL;
15473 s8 tiaG_gain_db[] = {
15474 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15475 s8 tiaA_gain_db[] = {
15476 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15477 s8 tiaA_gain_db_rev4[] = {
15478 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15479 s8 tiaA_gain_db_rev5[] = {
15480 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15481 s8 tiaA_gain_db_rev6[] = {
15482 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15483 s8 *tia_gain_db;
15484 s8 tiaG_gainbits[] = {
15485 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15486 s8 tiaA_gainbits[] = {
15487 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15488 s8 tiaA_gainbits_rev4[] = {
15489 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15490 s8 tiaA_gainbits_rev5[] = {
15491 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15492 s8 tiaA_gainbits_rev6[] = {
15493 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15494 s8 *tia_gainbits;
15495 s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15496 s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15497 u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15498 u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15499 u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15500 u16 rfseqG_init_gain_rev5_elna[] = {
15501 0x013f, 0x013f, 0x013f, 0x013f };
15502 u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15503 u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15504 u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15505 u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15506 u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15507 u16 rfseqA_init_gain_rev4_elna[] = {
15508 0x314f, 0x314f, 0x314f, 0x314f };
15509 u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15510 u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15511 u16 *rfseq_init_gain;
15512 u16 initG_gaincode = 0x627e;
15513 u16 initG_gaincode_rev4 = 0x527e;
15514 u16 initG_gaincode_rev5 = 0x427e;
15515 u16 initG_gaincode_rev5_elna = 0x027e;
15516 u16 initG_gaincode_rev6 = 0x527e;
15517 u16 initG_gaincode_rev6_224B0 = 0x427e;
15518 u16 initG_gaincode_rev6_elna = 0x127e;
15519 u16 initA_gaincode = 0x52de;
15520 u16 initA_gaincode_rev4 = 0x629e;
15521 u16 initA_gaincode_rev4_elna = 0x329e;
15522 u16 initA_gaincode_rev5 = 0x729e;
15523 u16 initA_gaincode_rev6 = 0x729e;
15524 u16 init_gaincode;
15525 u16 clip1hiG_gaincode = 0x107e;
15526 u16 clip1hiG_gaincode_rev4 = 0x007e;
15527 u16 clip1hiG_gaincode_rev5 = 0x1076;
15528 u16 clip1hiG_gaincode_rev6 = 0x007e;
15529 u16 clip1hiA_gaincode = 0x00de;
15530 u16 clip1hiA_gaincode_rev4 = 0x029e;
15531 u16 clip1hiA_gaincode_rev5 = 0x029e;
15532 u16 clip1hiA_gaincode_rev6 = 0x029e;
15533 u16 clip1hi_gaincode;
15534 u16 clip1mdG_gaincode = 0x0066;
15535 u16 clip1mdA_gaincode = 0x00ca;
15536 u16 clip1mdA_gaincode_rev4 = 0x1084;
15537 u16 clip1mdA_gaincode_rev5 = 0x2084;
15538 u16 clip1mdA_gaincode_rev6 = 0x2084;
15539 u16 clip1md_gaincode = 0;
15540 u16 clip1loG_gaincode = 0x0074;
15541 u16 clip1loG_gaincode_rev5[] = {
15542 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15543 };
15544 u16 clip1loG_gaincode_rev6[] = {
15545 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15546 };
15547 u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15548 u16 clip1loA_gaincode = 0x00cc;
15549 u16 clip1loA_gaincode_rev4 = 0x0086;
15550 u16 clip1loA_gaincode_rev5 = 0x2086;
15551 u16 clip1loA_gaincode_rev6 = 0x2086;
15552 u16 clip1lo_gaincode;
15553 u8 crsminG_th = 0x18;
15554 u8 crsminG_th_rev5 = 0x18;
15555 u8 crsminG_th_rev6 = 0x18;
15556 u8 crsminA_th = 0x1e;
15557 u8 crsminA_th_rev4 = 0x24;
15558 u8 crsminA_th_rev5 = 0x24;
15559 u8 crsminA_th_rev6 = 0x24;
15560 u8 crsmin_th;
15561 u8 crsminlG_th = 0x18;
15562 u8 crsminlG_th_rev5 = 0x18;
15563 u8 crsminlG_th_rev6 = 0x18;
15564 u8 crsminlA_th = 0x1e;
15565 u8 crsminlA_th_rev4 = 0x24;
15566 u8 crsminlA_th_rev5 = 0x24;
15567 u8 crsminlA_th_rev6 = 0x24;
15568 u8 crsminl_th = 0;
15569 u8 crsminuG_th = 0x18;
15570 u8 crsminuG_th_rev5 = 0x18;
15571 u8 crsminuG_th_rev6 = 0x18;
15572 u8 crsminuA_th = 0x1e;
15573 u8 crsminuA_th_rev4 = 0x24;
15574 u8 crsminuA_th_rev5 = 0x24;
15575 u8 crsminuA_th_rev6 = 0x24;
15576 u8 crsminuA_th_rev6_224B0 = 0x2d;
15577 u8 crsminu_th;
15578 u16 nbclipG_th = 0x20d;
15579 u16 nbclipG_th_rev4 = 0x1a1;
15580 u16 nbclipG_th_rev5 = 0x1d0;
15581 u16 nbclipG_th_rev6 = 0x1d0;
15582 u16 nbclipA_th = 0x1a1;
15583 u16 nbclipA_th_rev4 = 0x107;
15584 u16 nbclipA_th_rev5 = 0x0a9;
15585 u16 nbclipA_th_rev6 = 0x0f0;
15586 u16 nbclip_th = 0;
15587 u8 w1clipG_th = 5;
15588 u8 w1clipG_th_rev5 = 9;
15589 u8 w1clipG_th_rev6 = 5;
15590 u8 w1clipA_th = 25, w1clip_th;
15591 u8 rssi_gain_default = 0x50;
15592 u8 rssiG_gain_rev6_224B0 = 0x50;
15593 u8 rssiA_gain_rev5 = 0x90;
15594 u8 rssiA_gain_rev6 = 0x90;
15595 u8 rssi_gain;
15596 u16 regval[21];
15597 u8 triso;
15598
15599 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15600 pi->srom_fem2g.triso;
15601
15602 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15603 if (pi->pubpi.radiorev == 5) {
15604 wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15605 } else if (pi->pubpi.radiorev == 7) {
15606 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15607
15608 mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15609 mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15610
15611 } else if ((pi->pubpi.radiorev == 3)
15612 || (pi->pubpi.radiorev == 8)) {
15613 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15614
15615 if (pi->pubpi.radiorev == 8) {
15616 mod_phy_reg(pi, 0x283,
15617 (0xff << 0), (0x44 << 0));
15618 mod_phy_reg(pi, 0x280,
15619 (0xff << 0), (0x44 << 0));
15620 }
15621 } else {
15622 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15623 }
15624 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15625
15626 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15627
15628 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15629 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15630
15631 currband =
15632 read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15633 if (currband == 0) {
15634 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15635 if (pi->pubpi.radiorev == 11) {
15636 lna1_gain_db = lna1G_gain_db_rev6_224B0;
15637 lna2_gain_db = lna2G_gain_db_rev6_224B0;
15638 rfseq_init_gain =
15639 rfseqG_init_gain_rev6_224B0;
15640 init_gaincode =
15641 initG_gaincode_rev6_224B0;
15642 clip1hi_gaincode =
15643 clip1hiG_gaincode_rev6;
15644 clip1lo_gaincode =
15645 clip1loG_gaincode_rev6_224B0;
15646 nbclip_th = nbclipG_th_rev6;
15647 w1clip_th = w1clipG_th_rev6;
15648 crsmin_th = crsminG_th_rev6;
15649 crsminl_th = crsminlG_th_rev6;
15650 crsminu_th = crsminuG_th_rev6;
15651 rssi_gain = rssiG_gain_rev6_224B0;
15652 } else {
15653 lna1_gain_db = lna1G_gain_db_rev6;
15654 lna2_gain_db = lna2G_gain_db_rev6;
15655 if (pi->sh->boardflags & BFL_EXTLNA) {
15656
15657 rfseq_init_gain =
15658 rfseqG_init_gain_rev6_elna;
15659 init_gaincode =
15660 initG_gaincode_rev6_elna;
15661 } else {
15662 rfseq_init_gain =
15663 rfseqG_init_gain_rev6;
15664 init_gaincode =
15665 initG_gaincode_rev6;
15666 }
15667 clip1hi_gaincode =
15668 clip1hiG_gaincode_rev6;
15669 switch (triso) {
15670 case 0:
15671 clip1lo_gaincode =
15672 clip1loG_gaincode_rev6
15673 [0];
15674 break;
15675 case 1:
15676 clip1lo_gaincode =
15677 clip1loG_gaincode_rev6
15678 [1];
15679 break;
15680 case 2:
15681 clip1lo_gaincode =
15682 clip1loG_gaincode_rev6
15683 [2];
15684 break;
15685 case 3:
15686 default:
15687
15688 clip1lo_gaincode =
15689 clip1loG_gaincode_rev6
15690 [3];
15691 break;
15692 case 4:
15693 clip1lo_gaincode =
15694 clip1loG_gaincode_rev6
15695 [4];
15696 break;
15697 case 5:
15698 clip1lo_gaincode =
15699 clip1loG_gaincode_rev6
15700 [5];
15701 break;
15702 case 6:
15703 clip1lo_gaincode =
15704 clip1loG_gaincode_rev6
15705 [6];
15706 break;
15707 case 7:
15708 clip1lo_gaincode =
15709 clip1loG_gaincode_rev6
15710 [7];
15711 break;
15712 }
15713 nbclip_th = nbclipG_th_rev6;
15714 w1clip_th = w1clipG_th_rev6;
15715 crsmin_th = crsminG_th_rev6;
15716 crsminl_th = crsminlG_th_rev6;
15717 crsminu_th = crsminuG_th_rev6;
15718 rssi_gain = rssi_gain_default;
15719 }
15720 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15721 lna1_gain_db = lna1G_gain_db_rev5;
15722 lna2_gain_db = lna2G_gain_db_rev5;
15723 if (pi->sh->boardflags & BFL_EXTLNA) {
15724
15725 rfseq_init_gain =
15726 rfseqG_init_gain_rev5_elna;
15727 init_gaincode =
15728 initG_gaincode_rev5_elna;
15729 } else {
15730 rfseq_init_gain = rfseqG_init_gain_rev5;
15731 init_gaincode = initG_gaincode_rev5;
15732 }
15733 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15734 switch (triso) {
15735 case 0:
15736 clip1lo_gaincode =
15737 clip1loG_gaincode_rev5[0];
15738 break;
15739 case 1:
15740 clip1lo_gaincode =
15741 clip1loG_gaincode_rev5[1];
15742 break;
15743 case 2:
15744 clip1lo_gaincode =
15745 clip1loG_gaincode_rev5[2];
15746 break;
15747 case 3:
15748
15749 clip1lo_gaincode =
15750 clip1loG_gaincode_rev5[3];
15751 break;
15752 case 4:
15753 clip1lo_gaincode =
15754 clip1loG_gaincode_rev5[4];
15755 break;
15756 case 5:
15757 clip1lo_gaincode =
15758 clip1loG_gaincode_rev5[5];
15759 break;
15760 case 6:
15761 clip1lo_gaincode =
15762 clip1loG_gaincode_rev5[6];
15763 break;
15764 case 7:
15765 clip1lo_gaincode =
15766 clip1loG_gaincode_rev5[7];
15767 break;
15768 default:
15769 clip1lo_gaincode =
15770 clip1loG_gaincode_rev5[3];
15771 break;
15772 }
15773 nbclip_th = nbclipG_th_rev5;
15774 w1clip_th = w1clipG_th_rev5;
15775 crsmin_th = crsminG_th_rev5;
15776 crsminl_th = crsminlG_th_rev5;
15777 crsminu_th = crsminuG_th_rev5;
15778 rssi_gain = rssi_gain_default;
15779 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15780 lna1_gain_db = lna1G_gain_db_rev4;
15781 lna2_gain_db = lna2G_gain_db;
15782 rfseq_init_gain = rfseqG_init_gain_rev4;
15783 init_gaincode = initG_gaincode_rev4;
15784 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15785 clip1lo_gaincode = clip1loG_gaincode;
15786 nbclip_th = nbclipG_th_rev4;
15787 w1clip_th = w1clipG_th;
15788 crsmin_th = crsminG_th;
15789 crsminl_th = crsminlG_th;
15790 crsminu_th = crsminuG_th;
15791 rssi_gain = rssi_gain_default;
15792 } else {
15793 lna1_gain_db = lna1G_gain_db;
15794 lna2_gain_db = lna2G_gain_db;
15795 rfseq_init_gain = rfseqG_init_gain;
15796 init_gaincode = initG_gaincode;
15797 clip1hi_gaincode = clip1hiG_gaincode;
15798 clip1lo_gaincode = clip1loG_gaincode;
15799 nbclip_th = nbclipG_th;
15800 w1clip_th = w1clipG_th;
15801 crsmin_th = crsminG_th;
15802 crsminl_th = crsminlG_th;
15803 crsminu_th = crsminuG_th;
15804 rssi_gain = rssi_gain_default;
15805 }
15806 tia_gain_db = tiaG_gain_db;
15807 tia_gainbits = tiaG_gainbits;
15808 clip1md_gaincode = clip1mdG_gaincode;
15809 } else {
15810 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15811 lna1_gain_db = lna1A_gain_db_rev6;
15812 lna2_gain_db = lna2A_gain_db_rev6;
15813 tia_gain_db = tiaA_gain_db_rev6;
15814 tia_gainbits = tiaA_gainbits_rev6;
15815 rfseq_init_gain = rfseqA_init_gain_rev6;
15816 init_gaincode = initA_gaincode_rev6;
15817 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15818 clip1md_gaincode = clip1mdA_gaincode_rev6;
15819 clip1lo_gaincode = clip1loA_gaincode_rev6;
15820 crsmin_th = crsminA_th_rev6;
15821 crsminl_th = crsminlA_th_rev6;
15822 if ((pi->pubpi.radiorev == 11) &&
15823 (CHSPEC_IS40(pi->radio_chanspec) == 0))
15824 crsminu_th = crsminuA_th_rev6_224B0;
15825 else
15826 crsminu_th = crsminuA_th_rev6;
15827
15828 nbclip_th = nbclipA_th_rev6;
15829 rssi_gain = rssiA_gain_rev6;
15830 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15831 lna1_gain_db = lna1A_gain_db_rev5;
15832 lna2_gain_db = lna2A_gain_db_rev5;
15833 tia_gain_db = tiaA_gain_db_rev5;
15834 tia_gainbits = tiaA_gainbits_rev5;
15835 rfseq_init_gain = rfseqA_init_gain_rev5;
15836 init_gaincode = initA_gaincode_rev5;
15837 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15838 clip1md_gaincode = clip1mdA_gaincode_rev5;
15839 clip1lo_gaincode = clip1loA_gaincode_rev5;
15840 crsmin_th = crsminA_th_rev5;
15841 crsminl_th = crsminlA_th_rev5;
15842 crsminu_th = crsminuA_th_rev5;
15843 nbclip_th = nbclipA_th_rev5;
15844 rssi_gain = rssiA_gain_rev5;
15845 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15846 lna1_gain_db = lna1A_gain_db_rev4;
15847 lna2_gain_db = lna2A_gain_db_rev4;
15848 tia_gain_db = tiaA_gain_db_rev4;
15849 tia_gainbits = tiaA_gainbits_rev4;
15850 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15851
15852 rfseq_init_gain =
15853 rfseqA_init_gain_rev4_elna;
15854 init_gaincode =
15855 initA_gaincode_rev4_elna;
15856 } else {
15857 rfseq_init_gain = rfseqA_init_gain_rev4;
15858 init_gaincode = initA_gaincode_rev4;
15859 }
15860 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15861 clip1md_gaincode = clip1mdA_gaincode_rev4;
15862 clip1lo_gaincode = clip1loA_gaincode_rev4;
15863 crsmin_th = crsminA_th_rev4;
15864 crsminl_th = crsminlA_th_rev4;
15865 crsminu_th = crsminuA_th_rev4;
15866 nbclip_th = nbclipA_th_rev4;
15867 rssi_gain = rssi_gain_default;
15868 } else {
15869 lna1_gain_db = lna1A_gain_db;
15870 lna2_gain_db = lna2A_gain_db;
15871 tia_gain_db = tiaA_gain_db;
15872 tia_gainbits = tiaA_gainbits;
15873 rfseq_init_gain = rfseqA_init_gain;
15874 init_gaincode = initA_gaincode;
15875 clip1hi_gaincode = clip1hiA_gaincode;
15876 clip1md_gaincode = clip1mdA_gaincode;
15877 clip1lo_gaincode = clip1loA_gaincode;
15878 crsmin_th = crsminA_th;
15879 crsminl_th = crsminlA_th;
15880 crsminu_th = crsminuA_th;
15881 nbclip_th = nbclipA_th;
15882 rssi_gain = rssi_gain_default;
15883 }
15884 w1clip_th = w1clipA_th;
15885 }
15886
15887 write_radio_reg(pi,
15888 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15889 RADIO_2056_RX0), 0x17);
15890 write_radio_reg(pi,
15891 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15892 RADIO_2056_RX1), 0x17);
15893
15894 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15895 0xf0);
15896 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15897 0xf0);
15898
15899 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15900 0x0);
15901 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15902 0x0);
15903
15904 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15905 rssi_gain);
15906 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15907 rssi_gain);
15908
15909 write_radio_reg(pi,
15910 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15911 RADIO_2056_RX0), 0x17);
15912 write_radio_reg(pi,
15913 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15914 RADIO_2056_RX1), 0x17);
15915
15916 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15917 0xFF);
15918 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15919 0xFF);
15920
15921 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15922 8, lna1_gain_db);
15923 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15924 8, lna1_gain_db);
15925
15926 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15927 8, lna2_gain_db);
15928 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15929 8, lna2_gain_db);
15930
15931 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15932 8, tia_gain_db);
15933 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15934 8, tia_gain_db);
15935
15936 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15937 8, tia_gainbits);
15938 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15939 8, tia_gainbits);
15940
15941 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15942 8, &lpf_gain_db);
15943 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15944 8, &lpf_gain_db);
15945 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15946 8, &lpf_gainbits);
15947 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15948 8, &lpf_gainbits);
15949
15950 write_phy_reg(pi, 0x20, init_gaincode);
15951 write_phy_reg(pi, 0x2a7, init_gaincode);
15952
15953 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15954 pi->pubpi.phy_corenum, 0x106, 16,
15955 rfseq_init_gain);
15956
15957 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15958 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15959
15960 write_phy_reg(pi, 0x24, clip1md_gaincode);
15961 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15962
15963 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15964 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15965
15966 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15967 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15968 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15969
15970 write_phy_reg(pi, 0x2b, nbclip_th);
15971 write_phy_reg(pi, 0x41, nbclip_th);
15972
15973 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15974 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15975
15976 write_phy_reg(pi, 0x150, 0x809c);
15977
15978 } else {
15979
15980 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15981 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15982
15983 write_phy_reg(pi, 0x2b, 0x84);
15984 write_phy_reg(pi, 0x41, 0x84);
15985
15986 if (CHSPEC_IS20(pi->radio_chanspec)) {
15987 write_phy_reg(pi, 0x6b, 0x2b);
15988 write_phy_reg(pi, 0x6c, 0x2b);
15989 write_phy_reg(pi, 0x6d, 0x9);
15990 write_phy_reg(pi, 0x6e, 0x9);
15991 }
15992
15993 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15994 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15995 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15996
15997 if (CHSPEC_IS20(pi->radio_chanspec)) {
15998 mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15999 mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16000
16001 mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16002 mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16003 }
16004
16005 write_phy_reg(pi, 0x150, 0x809c);
16006
16007 if (pi->nphy_gain_boost)
16008 if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16009 (CHSPEC_IS40(pi->radio_chanspec)))
16010 hpf_code = 4;
16011 else
16012 hpf_code = 5;
16013 else if (CHSPEC_IS40(pi->radio_chanspec))
16014 hpf_code = 6;
16015 else
16016 hpf_code = 7;
16017
16018 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16019 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16020
16021 for (ctr = 0; ctr < 4; ctr++)
16022 regval[ctr] = (hpf_code << 8) | 0x7c;
16023 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024
16025 wlc_phy_adjust_lnagaintbl_nphy(pi);
16026
16027 if (pi->nphy_elna_gain_config) {
16028 regval[0] = 0;
16029 regval[1] = 1;
16030 regval[2] = 1;
16031 regval[3] = 1;
16032 wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16033 wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16034
16035 for (ctr = 0; ctr < 4; ctr++)
16036 regval[ctr] = (hpf_code << 8) | 0x74;
16037 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16038 }
16039
16040 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16041 for (ctr = 0; ctr < 21; ctr++)
16042 regval[ctr] = 3 * ctr;
16043 wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16044 wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16045
16046 for (ctr = 0; ctr < 21; ctr++)
16047 regval[ctr] = (u16) ctr;
16048 wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16049 wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16050 }
16051
16052 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16053 rfseq_updategainu_events,
16054 rfseq_updategainu_dlys,
16055 sizeof(rfseq_updategainu_events) /
16056 sizeof(rfseq_updategainu_events[0]));
16057
16058 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16059
16060 if (CHSPEC_IS2G(pi->radio_chanspec))
16061 mod_phy_reg(pi,
16062 (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16063 0x7f, 0x4);
16064 }
16065}
16066
16067static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16068{
16069 u8 rfseq_rx2tx_events[] = {
16070 NPHY_RFSEQ_CMD_NOP,
16071 NPHY_RFSEQ_CMD_RXG_FBW,
16072 NPHY_RFSEQ_CMD_TR_SWITCH,
16073 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16074 NPHY_RFSEQ_CMD_RXPD_TXPD,
16075 NPHY_RFSEQ_CMD_TX_GAIN,
16076 NPHY_RFSEQ_CMD_EXT_PA
16077 };
16078 u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16079 u8 rfseq_tx2rx_events[] = {
16080 NPHY_RFSEQ_CMD_NOP,
16081 NPHY_RFSEQ_CMD_EXT_PA,
16082 NPHY_RFSEQ_CMD_TX_GAIN,
16083 NPHY_RFSEQ_CMD_RXPD_TXPD,
16084 NPHY_RFSEQ_CMD_TR_SWITCH,
16085 NPHY_RFSEQ_CMD_RXG_FBW,
16086 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16087 };
16088 u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16089 u8 rfseq_tx2rx_events_rev3[] = {
16090 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16091 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16092 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16093 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16094 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16095 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16096 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16097 NPHY_REV3_RFSEQ_CMD_END
16098 };
16099 u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16100 u8 rfseq_rx2tx_events_rev3[] = {
16101 NPHY_REV3_RFSEQ_CMD_NOP,
16102 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16103 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16104 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16105 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16106 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16107 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16108 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16109 NPHY_REV3_RFSEQ_CMD_END
16110 };
16111 u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16112
16113 u8 rfseq_rx2tx_events_rev3_ipa[] = {
16114 NPHY_REV3_RFSEQ_CMD_NOP,
16115 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16116 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16117 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16118 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16119 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16120 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16121 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16122 NPHY_REV3_RFSEQ_CMD_END
16123 };
16124 u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16125 u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16126
16127 s16 alpha0, alpha1, alpha2;
16128 s16 beta0, beta1, beta2;
16129 u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16130 stbc_data_weights;
16131 u8 chan_freq_range = 0;
16132 u16 dac_control = 0x0002;
16133 u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16134 u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16135 u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16136 u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16137 u16 *aux_adc_vmid;
16138 u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16139 u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16140 u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16141 u16 *aux_adc_gain;
16142 u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16143 u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16144 s32 min_nvar_val = 0x18d;
16145 s32 min_nvar_offset_6mbps = 20;
16146 u8 pdetrange;
16147 u8 triso;
16148 u16 regval;
16149 u16 afectrl_adc_ctrl1_rev7 = 0x20;
16150 u16 afectrl_adc_ctrl2_rev7 = 0x0;
16151 u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16152 u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16153 u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16154 u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16155 u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16156 u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16157 u16 ipalvlshift_3p3_war_en = 0;
16158 u16 rccal_bcap_val, rccal_scap_val;
16159 u16 rccal_tx20_11b_bcap = 0;
16160 u16 rccal_tx20_11b_scap = 0;
16161 u16 rccal_tx20_11n_bcap = 0;
16162 u16 rccal_tx20_11n_scap = 0;
16163 u16 rccal_tx40_11n_bcap = 0;
16164 u16 rccal_tx40_11n_scap = 0;
16165 u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16166 u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16167 u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16168 u16 tx_lpf_bw_ofdm_20mhz = 0;
16169 u16 tx_lpf_bw_ofdm_40mhz = 0;
16170 u16 tx_lpf_bw_11b = 0;
16171 u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16172 u16 txgm_idac_bleed = 0;
16173 bool rccal_ovrd = false;
16174 u16 freq;
16175 int coreNum;
16176
16177 if (CHSPEC_IS5G(pi->radio_chanspec))
16178 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16179 else
16180 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16181
16182 if (pi->phyhang_avoid)
16183 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16184
16185 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16186
16187 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16188
16189 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16190 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16191
16192 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16193 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16194 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16195 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16196 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16197 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16198 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16199 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16200 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16201 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16202 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16203 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16204 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16205 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16206 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16207 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16208 }
16209
16210 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16211 write_phy_reg(pi, 0x23f, 0x1b0);
16212 write_phy_reg(pi, 0x240, 0x1b0);
16213 }
16214
16215 if (NREV_GE(pi->pubpi.phy_rev, 8))
16216 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16217
16218 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16219 &dac_control);
16220 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16221 &dac_control);
16222
16223 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16224 1, 0, 32, &leg_data_weights);
16225 leg_data_weights = leg_data_weights & 0xffffff;
16226 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16227 1, 0, 32, &leg_data_weights);
16228
16229 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16230 2, 0x15e, 16,
16231 rfseq_rx2tx_dacbufpu_rev7);
16232 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16233 rfseq_rx2tx_dacbufpu_rev7);
16234
16235 if (PHY_IPA(pi))
16236 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16237 rfseq_rx2tx_events_rev3_ipa,
16238 rfseq_rx2tx_dlys_rev3_ipa,
Jim Cromief26b6f32012-04-10 17:02:34 -060016239 ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
Arend van Spriel5b435de2011-10-05 13:19:03 +020016240
16241 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16242 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16243
16244 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16245 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16246 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16247
16248 if (PHY_IPA(pi)) {
16249
16250 if (((pi->pubpi.radiorev == 5)
16251 && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16252 || (pi->pubpi.radiorev == 7)
16253 || (pi->pubpi.radiorev == 8)) {
16254
16255 rccal_bcap_val =
16256 read_radio_reg(
16257 pi,
16258 RADIO_2057_RCCAL_BCAP_VAL);
16259 rccal_scap_val =
16260 read_radio_reg(
16261 pi,
16262 RADIO_2057_RCCAL_SCAP_VAL);
16263
16264 rccal_tx20_11b_bcap = rccal_bcap_val;
16265 rccal_tx20_11b_scap = rccal_scap_val;
16266
16267 if ((pi->pubpi.radiorev == 5) &&
16268 (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16269
16270 rccal_tx20_11n_bcap = rccal_bcap_val;
16271 rccal_tx20_11n_scap = rccal_scap_val;
16272 rccal_tx40_11n_bcap = 0xc;
16273 rccal_tx40_11n_scap = 0xc;
16274
16275 rccal_ovrd = true;
16276
16277 } else if ((pi->pubpi.radiorev == 7)
16278 || (pi->pubpi.radiorev == 8)) {
16279
16280 tx_lpf_bw_ofdm_20mhz = 4;
16281 tx_lpf_bw_11b = 1;
16282
16283 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16284 rccal_tx20_11n_bcap = 0xc;
16285 rccal_tx20_11n_scap = 0xc;
16286 rccal_tx40_11n_bcap = 0xa;
16287 rccal_tx40_11n_scap = 0xa;
16288 } else {
16289 rccal_tx20_11n_bcap = 0x14;
16290 rccal_tx20_11n_scap = 0x14;
16291 rccal_tx40_11n_bcap = 0xf;
16292 rccal_tx40_11n_scap = 0xf;
16293 }
16294
16295 rccal_ovrd = true;
16296 }
16297 }
16298
16299 } else {
16300
16301 if (pi->pubpi.radiorev == 5) {
16302
16303 tx_lpf_bw_ofdm_20mhz = 1;
16304 tx_lpf_bw_ofdm_40mhz = 3;
16305
16306 rccal_bcap_val =
16307 read_radio_reg(
16308 pi,
16309 RADIO_2057_RCCAL_BCAP_VAL);
16310 rccal_scap_val =
16311 read_radio_reg(
16312 pi,
16313 RADIO_2057_RCCAL_SCAP_VAL);
16314
16315 rccal_tx20_11b_bcap = rccal_bcap_val;
16316 rccal_tx20_11b_scap = rccal_scap_val;
16317
16318 rccal_tx20_11n_bcap = 0x13;
16319 rccal_tx20_11n_scap = 0x11;
16320 rccal_tx40_11n_bcap = 0x13;
16321 rccal_tx40_11n_scap = 0x11;
16322
16323 rccal_ovrd = true;
16324 }
16325 }
16326
16327 if (rccal_ovrd) {
16328
16329 rx2tx_lpf_rc_lut_tx20_11b =
16330 (rccal_tx20_11b_bcap << 8) |
16331 (rccal_tx20_11b_scap << 3) |
16332 tx_lpf_bw_11b;
16333 rx2tx_lpf_rc_lut_tx20_11n =
16334 (rccal_tx20_11n_bcap << 8) |
16335 (rccal_tx20_11n_scap << 3) |
16336 tx_lpf_bw_ofdm_20mhz;
16337 rx2tx_lpf_rc_lut_tx40_11n =
16338 (rccal_tx40_11n_bcap << 8) |
16339 (rccal_tx40_11n_scap << 3) |
16340 tx_lpf_bw_ofdm_40mhz;
16341
16342 for (coreNum = 0; coreNum <= 1; coreNum++) {
16343 wlc_phy_table_write_nphy(
16344 pi, NPHY_TBL_ID_RFSEQ,
16345 1,
16346 0x152 + coreNum * 0x10,
16347 16,
16348 &rx2tx_lpf_rc_lut_tx20_11b);
16349 wlc_phy_table_write_nphy(
16350 pi, NPHY_TBL_ID_RFSEQ,
16351 1,
16352 0x153 + coreNum * 0x10,
16353 16,
16354 &rx2tx_lpf_rc_lut_tx20_11n);
16355 wlc_phy_table_write_nphy(
16356 pi, NPHY_TBL_ID_RFSEQ,
16357 1,
16358 0x154 + coreNum * 0x10,
16359 16,
16360 &rx2tx_lpf_rc_lut_tx20_11n);
16361 wlc_phy_table_write_nphy(
16362 pi, NPHY_TBL_ID_RFSEQ,
16363 1,
16364 0x155 + coreNum * 0x10,
16365 16,
16366 &rx2tx_lpf_rc_lut_tx40_11n);
16367 wlc_phy_table_write_nphy(
16368 pi, NPHY_TBL_ID_RFSEQ,
16369 1,
16370 0x156 + coreNum * 0x10,
16371 16,
16372 &rx2tx_lpf_rc_lut_tx40_11n);
16373 wlc_phy_table_write_nphy(
16374 pi, NPHY_TBL_ID_RFSEQ,
16375 1,
16376 0x157 + coreNum * 0x10,
16377 16,
16378 &rx2tx_lpf_rc_lut_tx40_11n);
16379 wlc_phy_table_write_nphy(
16380 pi, NPHY_TBL_ID_RFSEQ,
16381 1,
16382 0x158 + coreNum * 0x10,
16383 16,
16384 &rx2tx_lpf_rc_lut_tx40_11n);
16385 wlc_phy_table_write_nphy(
16386 pi, NPHY_TBL_ID_RFSEQ,
16387 1,
16388 0x159 + coreNum * 0x10,
16389 16,
16390 &rx2tx_lpf_rc_lut_tx40_11n);
16391 }
16392
16393 wlc_phy_rfctrl_override_nphy_rev7(
16394 pi, (0x1 << 4),
16395 1, 0x3, 0,
16396 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16397 }
16398
16399 write_phy_reg(pi, 0x32f, 0x3);
16400
16401 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16402 wlc_phy_rfctrl_override_nphy_rev7(
16403 pi, (0x1 << 2),
16404 1, 0x3, 0,
16405 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16406
16407 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16408 (pi->pubpi.radiorev == 6)) {
16409 if ((pi->sh->sromrev >= 8)
16410 && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16411 ipalvlshift_3p3_war_en = 1;
16412
16413 if (ipalvlshift_3p3_war_en) {
16414 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16415 0x5);
16416 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16417 0x30);
16418 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16419 or_radio_reg(pi,
16420 RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16421 0x1);
16422 or_radio_reg(pi,
16423 RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16424 0x1);
16425
16426 ipa2g_mainbias = 0x1f;
16427
16428 ipa2g_casconv = 0x6f;
16429
16430 ipa2g_biasfilt = 0xaa;
16431 } else {
16432
16433 ipa2g_mainbias = 0x2b;
16434
16435 ipa2g_casconv = 0x7f;
16436
16437 ipa2g_biasfilt = 0xee;
16438 }
16439
16440 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16441 for (coreNum = 0; coreNum <= 1; coreNum++) {
16442 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16443 coreNum, IPA2G_IMAIN,
16444 ipa2g_mainbias);
16445 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16446 coreNum, IPA2G_CASCONV,
16447 ipa2g_casconv);
16448 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16449 coreNum,
16450 IPA2G_BIAS_FILTER,
16451 ipa2g_biasfilt);
16452 }
16453 }
16454 }
16455
16456 if (PHY_IPA(pi)) {
16457 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16458 if ((pi->pubpi.radiorev == 3)
16459 || (pi->pubpi.radiorev == 4)
16460 || (pi->pubpi.radiorev == 6))
16461 txgm_idac_bleed = 0x7f;
16462
16463 for (coreNum = 0; coreNum <= 1; coreNum++) {
16464 if (txgm_idac_bleed != 0)
16465 WRITE_RADIO_REG4(
16466 pi, RADIO_2057,
16467 CORE, coreNum,
16468 TXGM_IDAC_BLEED,
16469 txgm_idac_bleed);
16470 }
16471
16472 if (pi->pubpi.radiorev == 5) {
16473
16474 for (coreNum = 0; coreNum <= 1;
16475 coreNum++) {
16476 WRITE_RADIO_REG4(pi, RADIO_2057,
16477 CORE, coreNum,
16478 IPA2G_CASCONV,
16479 0x13);
16480 WRITE_RADIO_REG4(pi, RADIO_2057,
16481 CORE, coreNum,
16482 IPA2G_IMAIN,
16483 0x1f);
16484 WRITE_RADIO_REG4(
16485 pi, RADIO_2057,
16486 CORE, coreNum,
16487 IPA2G_BIAS_FILTER,
16488 0xee);
16489 WRITE_RADIO_REG4(pi, RADIO_2057,
16490 CORE, coreNum,
16491 PAD2G_IDACS,
16492 0x8a);
16493 WRITE_RADIO_REG4(
16494 pi, RADIO_2057,
16495 CORE, coreNum,
16496 PAD_BIAS_FILTER_BWS,
16497 0x3e);
16498 }
16499
16500 } else if ((pi->pubpi.radiorev == 7)
16501 || (pi->pubpi.radiorev == 8)) {
16502
16503 if (CHSPEC_IS40(pi->radio_chanspec) ==
16504 0) {
16505 WRITE_RADIO_REG4(pi, RADIO_2057,
16506 CORE, 0,
16507 IPA2G_IMAIN,
16508 0x14);
16509 WRITE_RADIO_REG4(pi, RADIO_2057,
16510 CORE, 1,
16511 IPA2G_IMAIN,
16512 0x12);
16513 } else {
16514 WRITE_RADIO_REG4(pi, RADIO_2057,
16515 CORE, 0,
16516 IPA2G_IMAIN,
16517 0x16);
16518 WRITE_RADIO_REG4(pi, RADIO_2057,
16519 CORE, 1,
16520 IPA2G_IMAIN,
16521 0x16);
16522 }
16523 }
16524
16525 } else {
16526 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16527 pi->radio_chanspec));
16528 if (((freq >= 5180) && (freq <= 5230))
16529 || ((freq >= 5745) && (freq <= 5805))) {
16530 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16531 0, IPA5G_BIAS_FILTER,
16532 0xff);
16533 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16534 1, IPA5G_BIAS_FILTER,
16535 0xff);
16536 }
16537 }
16538 } else {
16539
16540 if (pi->pubpi.radiorev != 5) {
16541 for (coreNum = 0; coreNum <= 1; coreNum++) {
16542 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16543 coreNum,
16544 TXMIX2G_TUNE_BOOST_PU,
16545 0x61);
16546 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16547 coreNum,
16548 TXGM_IDAC_BLEED, 0x70);
16549 }
16550 }
16551 }
16552
16553 if (pi->pubpi.radiorev == 4) {
16554 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16555 0x05, 16,
16556 &afectrl_adc_ctrl1_rev7);
16557 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16558 0x15, 16,
16559 &afectrl_adc_ctrl1_rev7);
16560
16561 for (coreNum = 0; coreNum <= 1; coreNum++) {
16562 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16563 AFE_VCM_CAL_MASTER, 0x0);
16564 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16565 AFE_SET_VCM_I, 0x3f);
16566 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16567 AFE_SET_VCM_Q, 0x3f);
16568 }
16569 } else {
16570 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16571 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16572 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16573 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16574
16575 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16576 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16577 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16578 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16579
16580 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16581 0x05, 16,
16582 &afectrl_adc_ctrl2_rev7);
16583 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16584 0x15, 16,
16585 &afectrl_adc_ctrl2_rev7);
16586
16587 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16588 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16589 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16590 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16591 }
16592
16593 write_phy_reg(pi, 0x6a, 0x2);
16594
16595 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16596 &min_nvar_offset_6mbps);
16597
16598 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16599 &rfseq_pktgn_lpf_hpc_rev7);
16600
16601 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16602 &rfseq_pktgn_lpf_h_hpc_rev7);
16603
16604 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16605 &rfseq_htpktgn_lpf_hpc_rev7);
16606
16607 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16608 &rfseq_cckpktgn_lpf_hpc_rev7);
16609
16610 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16611 &rfseq_tx2rx_lpf_h_hpc_rev7);
16612
16613 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16614 &rfseq_rx2tx_lpf_h_hpc_rev7);
16615
16616 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16617 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16618 32, &min_nvar_val);
16619 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16620 127, 32, &min_nvar_val);
16621 } else {
16622 min_nvar_val = noise_var_tbl_rev7[3];
16623 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16624 32, &min_nvar_val);
16625
16626 min_nvar_val = noise_var_tbl_rev7[127];
16627 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16628 127, 32, &min_nvar_val);
16629 }
16630
16631 wlc_phy_workarounds_nphy_gainctrl(pi);
16632
16633 pdetrange =
16634 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16635 pdetrange : pi->srom_fem2g.pdetrange;
16636
16637 if (pdetrange == 0) {
16638 chan_freq_range =
16639 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16640 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16641 aux_adc_vmid_rev7_core0[3] = 0x70;
16642 aux_adc_vmid_rev7_core1[3] = 0x70;
16643 aux_adc_gain_rev7[3] = 2;
16644 } else {
16645 aux_adc_vmid_rev7_core0[3] = 0x80;
16646 aux_adc_vmid_rev7_core1[3] = 0x80;
16647 aux_adc_gain_rev7[3] = 3;
16648 }
16649 } else if (pdetrange == 1) {
16650 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16651 aux_adc_vmid_rev7_core0[3] = 0x7c;
16652 aux_adc_vmid_rev7_core1[3] = 0x7c;
16653 aux_adc_gain_rev7[3] = 2;
16654 } else {
16655 aux_adc_vmid_rev7_core0[3] = 0x8c;
16656 aux_adc_vmid_rev7_core1[3] = 0x8c;
16657 aux_adc_gain_rev7[3] = 1;
16658 }
16659 } else if (pdetrange == 2) {
16660 if (pi->pubpi.radioid == BCM2057_ID) {
16661 if ((pi->pubpi.radiorev == 5)
16662 || (pi->pubpi.radiorev == 7)
16663 || (pi->pubpi.radiorev == 8)) {
16664 if (chan_freq_range ==
16665 WL_CHAN_FREQ_RANGE_2G) {
16666 aux_adc_vmid_rev7_core0[3] =
16667 0x8c;
16668 aux_adc_vmid_rev7_core1[3] =
16669 0x8c;
16670 aux_adc_gain_rev7[3] = 0;
16671 } else {
16672 aux_adc_vmid_rev7_core0[3] =
16673 0x96;
16674 aux_adc_vmid_rev7_core1[3] =
16675 0x96;
16676 aux_adc_gain_rev7[3] = 0;
16677 }
16678 }
16679 }
16680
16681 } else if (pdetrange == 3) {
16682 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16683 aux_adc_vmid_rev7_core0[3] = 0x89;
16684 aux_adc_vmid_rev7_core1[3] = 0x89;
16685 aux_adc_gain_rev7[3] = 0;
16686 }
16687
16688 } else if (pdetrange == 5) {
16689
16690 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16691 aux_adc_vmid_rev7_core0[3] = 0x80;
16692 aux_adc_vmid_rev7_core1[3] = 0x80;
16693 aux_adc_gain_rev7[3] = 3;
16694 } else {
16695 aux_adc_vmid_rev7_core0[3] = 0x70;
16696 aux_adc_vmid_rev7_core1[3] = 0x70;
16697 aux_adc_gain_rev7[3] = 2;
16698 }
16699 }
16700
16701 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16702 &aux_adc_vmid_rev7_core0);
16703 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16704 &aux_adc_vmid_rev7_core1);
16705 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16706 &aux_adc_gain_rev7);
16707 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16708 &aux_adc_gain_rev7);
16709
16710 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16711
16712 write_phy_reg(pi, 0x23f, 0x1f8);
16713 write_phy_reg(pi, 0x240, 0x1f8);
16714
16715 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16716 1, 0, 32, &leg_data_weights);
16717 leg_data_weights = leg_data_weights & 0xffffff;
16718 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16719 1, 0, 32, &leg_data_weights);
16720
16721 alpha0 = 293;
16722 alpha1 = 435;
16723 alpha2 = 261;
16724 beta0 = 366;
16725 beta1 = 205;
16726 beta2 = 32;
16727 write_phy_reg(pi, 0x145, alpha0);
16728 write_phy_reg(pi, 0x146, alpha1);
16729 write_phy_reg(pi, 0x147, alpha2);
16730 write_phy_reg(pi, 0x148, beta0);
16731 write_phy_reg(pi, 0x149, beta1);
16732 write_phy_reg(pi, 0x14a, beta2);
16733
16734 write_phy_reg(pi, 0x38, 0xC);
16735 write_phy_reg(pi, 0x2ae, 0xC);
16736
16737 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16738 rfseq_tx2rx_events_rev3,
16739 rfseq_tx2rx_dlys_rev3,
Jim Cromief26b6f32012-04-10 17:02:34 -060016740 ARRAY_SIZE(rfseq_tx2rx_events_rev3));
Arend van Spriel5b435de2011-10-05 13:19:03 +020016741
16742 if (PHY_IPA(pi))
16743 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16744 rfseq_rx2tx_events_rev3_ipa,
16745 rfseq_rx2tx_dlys_rev3_ipa,
Jim Cromief26b6f32012-04-10 17:02:34 -060016746 ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
Arend van Spriel5b435de2011-10-05 13:19:03 +020016747
16748 if ((pi->sh->hw_phyrxchain != 0x3) &&
16749 (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16750
16751 if (PHY_IPA(pi)) {
16752 rfseq_rx2tx_dlys_rev3[5] = 59;
16753 rfseq_rx2tx_dlys_rev3[6] = 1;
16754 rfseq_rx2tx_events_rev3[7] =
16755 NPHY_REV3_RFSEQ_CMD_END;
16756 }
16757
16758 wlc_phy_set_rfseq_nphy(
16759 pi, NPHY_RFSEQ_RX2TX,
16760 rfseq_rx2tx_events_rev3,
16761 rfseq_rx2tx_dlys_rev3,
Jim Cromief26b6f32012-04-10 17:02:34 -060016762 ARRAY_SIZE(rfseq_rx2tx_events_rev3));
Arend van Spriel5b435de2011-10-05 13:19:03 +020016763 }
16764
16765 if (CHSPEC_IS2G(pi->radio_chanspec))
16766 write_phy_reg(pi, 0x6a, 0x2);
16767 else
16768 write_phy_reg(pi, 0x6a, 0x9c40);
16769
16770 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16771
16772 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16773 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16774 32, &min_nvar_val);
16775 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16776 127, 32, &min_nvar_val);
16777 } else {
16778 min_nvar_val = noise_var_tbl_rev3[3];
16779 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16780 32, &min_nvar_val);
16781
16782 min_nvar_val = noise_var_tbl_rev3[127];
16783 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16784 127, 32, &min_nvar_val);
16785 }
16786
16787 wlc_phy_workarounds_nphy_gainctrl(pi);
16788
16789 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16790 &dac_control);
16791 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16792 &dac_control);
16793
16794 pdetrange =
16795 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16796 pdetrange : pi->srom_fem2g.pdetrange;
16797
16798 if (pdetrange == 0) {
16799 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16800 aux_adc_vmid = aux_adc_vmid_rev4;
16801 aux_adc_gain = aux_adc_gain_rev4;
16802 } else {
16803 aux_adc_vmid = aux_adc_vmid_rev3;
16804 aux_adc_gain = aux_adc_gain_rev3;
16805 }
16806 chan_freq_range =
16807 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16808 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16809 switch (chan_freq_range) {
16810 case WL_CHAN_FREQ_RANGE_5GL:
16811 aux_adc_vmid[3] = 0x89;
16812 aux_adc_gain[3] = 0;
16813 break;
16814 case WL_CHAN_FREQ_RANGE_5GM:
16815 aux_adc_vmid[3] = 0x89;
16816 aux_adc_gain[3] = 0;
16817 break;
16818 case WL_CHAN_FREQ_RANGE_5GH:
16819 aux_adc_vmid[3] = 0x89;
16820 aux_adc_gain[3] = 0;
16821 break;
16822 default:
16823 break;
16824 }
16825 }
16826 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16827 0x08, 16, aux_adc_vmid);
16828 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16829 0x18, 16, aux_adc_vmid);
16830 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16831 0x0c, 16, aux_adc_gain);
16832 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16833 0x1c, 16, aux_adc_gain);
16834 } else if (pdetrange == 1) {
16835 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16836 0x08, 16, sk_adc_vmid);
16837 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16838 0x18, 16, sk_adc_vmid);
16839 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16840 0x0c, 16, sk_adc_gain);
16841 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16842 0x1c, 16, sk_adc_gain);
16843 } else if (pdetrange == 2) {
16844
16845 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16846 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16847
16848 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16849 chan_freq_range =
16850 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16851 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16852 bcm_adc_vmid[3] = 0x8e;
16853 bcm_adc_gain[3] = 0x03;
16854 } else {
16855 bcm_adc_vmid[3] = 0x94;
16856 bcm_adc_gain[3] = 0x03;
16857 }
16858 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16859 bcm_adc_vmid[3] = 0x84;
16860 bcm_adc_gain[3] = 0x02;
16861 }
16862
16863 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16864 0x08, 16, bcm_adc_vmid);
16865 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16866 0x18, 16, bcm_adc_vmid);
16867 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16868 0x0c, 16, bcm_adc_gain);
16869 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16870 0x1c, 16, bcm_adc_gain);
16871 } else if (pdetrange == 3) {
16872 chan_freq_range =
16873 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16874 if ((NREV_GE(pi->pubpi.phy_rev, 4))
16875 && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16876
16877 u16 auxadc_vmid[] = {
16878 0xa2, 0xb4, 0xb4, 0x270
16879 };
16880 u16 auxadc_gain[] = {
16881 0x02, 0x02, 0x02, 0x00
16882 };
16883
16884 wlc_phy_table_write_nphy(pi,
16885 NPHY_TBL_ID_AFECTRL, 4,
16886 0x08, 16, auxadc_vmid);
16887 wlc_phy_table_write_nphy(pi,
16888 NPHY_TBL_ID_AFECTRL, 4,
16889 0x18, 16, auxadc_vmid);
16890 wlc_phy_table_write_nphy(pi,
16891 NPHY_TBL_ID_AFECTRL, 4,
16892 0x0c, 16, auxadc_gain);
16893 wlc_phy_table_write_nphy(pi,
16894 NPHY_TBL_ID_AFECTRL, 4,
16895 0x1c, 16, auxadc_gain);
16896 }
16897 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16898 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16899 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16900 u16 Vmid[2], Av[2];
16901
16902 chan_freq_range =
16903 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16904 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16905 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16906 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16907 Av[0] = (pdetrange == 4) ? 2 : 0;
16908 Av[1] = (pdetrange == 4) ? 2 : 0;
16909 } else {
16910 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16911 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16912 Av[0] = (pdetrange == 4) ? 2 : 0;
16913 Av[1] = (pdetrange == 4) ? 2 : 0;
16914 }
16915
16916 bcm_adc_vmid[3] = Vmid[0];
16917 bcm_adc_gain[3] = Av[0];
16918 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16919 0x08, 16, bcm_adc_vmid);
16920 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16921 0x0c, 16, bcm_adc_gain);
16922
16923 bcm_adc_vmid[3] = Vmid[1];
16924 bcm_adc_gain[3] = Av[1];
16925 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16926 0x18, 16, bcm_adc_vmid);
16927 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16928 0x1c, 16, bcm_adc_gain);
16929 }
16930
16931 write_radio_reg(pi,
16932 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16933 0x0);
16934 write_radio_reg(pi,
16935 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16936 0x0);
16937
16938 write_radio_reg(pi,
16939 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16940 0x6);
16941 write_radio_reg(pi,
16942 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16943 0x6);
16944
16945 write_radio_reg(pi,
16946 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16947 0x7);
16948 write_radio_reg(pi,
16949 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16950 0x7);
16951
16952 write_radio_reg(pi,
16953 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16954 0x88);
16955 write_radio_reg(pi,
16956 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16957 0x88);
16958
16959 write_radio_reg(pi,
16960 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16961 0x0);
16962 write_radio_reg(pi,
16963 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16964 0x0);
16965
16966 write_radio_reg(pi,
16967 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16968 0x0);
16969 write_radio_reg(pi,
16970 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16971 0x0);
16972
16973 triso =
16974 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16975 triso : pi->srom_fem2g.triso;
16976 if (triso == 7) {
16977 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16978 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16979 }
16980
16981 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16982
16983 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16984 (CHSPEC_IS5G(pi->radio_chanspec))) ||
16985 (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16986 (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16987 (CHSPEC_IS2G(pi->radio_chanspec)))) {
16988 nss1_data_weights = 0x00088888;
16989 ht_data_weights = 0x00088888;
16990 stbc_data_weights = 0x00088888;
16991 } else {
16992 nss1_data_weights = 0x88888888;
16993 ht_data_weights = 0x88888888;
16994 stbc_data_weights = 0x88888888;
16995 }
16996 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16997 1, 1, 32, &nss1_data_weights);
16998 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16999 1, 2, 32, &ht_data_weights);
17000 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17001 1, 3, 32, &stbc_data_weights);
17002
17003 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17004 if (CHSPEC_IS5G(pi->radio_chanspec)) {
17005 write_radio_reg(pi,
17006 RADIO_2056_TX_GMBB_IDAC |
17007 RADIO_2056_TX0, 0x70);
17008 write_radio_reg(pi,
17009 RADIO_2056_TX_GMBB_IDAC |
17010 RADIO_2056_TX1, 0x70);
17011 }
17012 }
17013
17014 if (!pi->edcrs_threshold_lock) {
17015 write_phy_reg(pi, 0x224, 0x3eb);
17016 write_phy_reg(pi, 0x225, 0x3eb);
17017 write_phy_reg(pi, 0x226, 0x341);
17018 write_phy_reg(pi, 0x227, 0x341);
17019 write_phy_reg(pi, 0x228, 0x42b);
17020 write_phy_reg(pi, 0x229, 0x42b);
17021 write_phy_reg(pi, 0x22a, 0x381);
17022 write_phy_reg(pi, 0x22b, 0x381);
17023 write_phy_reg(pi, 0x22c, 0x42b);
17024 write_phy_reg(pi, 0x22d, 0x42b);
17025 write_phy_reg(pi, 0x22e, 0x381);
17026 write_phy_reg(pi, 0x22f, 0x381);
17027 }
17028
17029 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17030
17031 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17032 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17033 MHF4_BPHY_TXCORE0,
17034 MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17035 }
17036 } else {
17037
17038 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17039 (pi->sh->boardtype == 0x8b)) {
17040 uint i;
17041 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17042 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17043 rfseq_rx2tx_dlys[i] = war_dlys[i];
17044 }
17045
17046 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17047 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17048 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17049 } else {
17050 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17051 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17052 }
17053
17054 regval = 0x000a;
17055 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17056 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17057
17058 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17059 regval = 0xcdaa;
17060 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17061 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17062 }
17063
17064 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17065 regval = 0x0000;
17066 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17067 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17068
17069 regval = 0x7aab;
17070 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17071 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17072
17073 regval = 0x0800;
17074 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17075 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17076 }
17077
17078 write_phy_reg(pi, 0xf8, 0x02d8);
17079 write_phy_reg(pi, 0xf9, 0x0301);
17080 write_phy_reg(pi, 0xfa, 0x02d8);
17081 write_phy_reg(pi, 0xfb, 0x0301);
17082
17083 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17084 rfseq_rx2tx_dlys,
Jim Cromief26b6f32012-04-10 17:02:34 -060017085 ARRAY_SIZE(rfseq_rx2tx_events));
Arend van Spriel5b435de2011-10-05 13:19:03 +020017086
17087 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17088 rfseq_tx2rx_dlys,
Jim Cromief26b6f32012-04-10 17:02:34 -060017089 ARRAY_SIZE(rfseq_tx2rx_events));
Arend van Spriel5b435de2011-10-05 13:19:03 +020017090
17091 wlc_phy_workarounds_nphy_gainctrl(pi);
17092
17093 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17094
17095 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17096 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17097 MHF3_NPHY_MLADV_WAR,
17098 MHF3_NPHY_MLADV_WAR,
17099 BRCM_BAND_ALL);
17100
17101 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17102 write_phy_reg(pi, 0x1e3, 0x0);
17103 write_phy_reg(pi, 0x1e4, 0x0);
17104 }
17105
17106 if (NREV_LT(pi->pubpi.phy_rev, 2))
17107 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17108
17109 alpha0 = 293;
17110 alpha1 = 435;
17111 alpha2 = 261;
17112 beta0 = 366;
17113 beta1 = 205;
17114 beta2 = 32;
17115 write_phy_reg(pi, 0x145, alpha0);
17116 write_phy_reg(pi, 0x146, alpha1);
17117 write_phy_reg(pi, 0x147, alpha2);
17118 write_phy_reg(pi, 0x148, beta0);
17119 write_phy_reg(pi, 0x149, beta1);
17120 write_phy_reg(pi, 0x14a, beta2);
17121
17122 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17123 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17124
17125 write_phy_reg(pi, 0x192, 0xb5);
17126 write_phy_reg(pi, 0x193, 0xa4);
17127 write_phy_reg(pi, 0x194, 0x0);
17128 }
17129
17130 if (NREV_IS(pi->pubpi.phy_rev, 2))
17131 mod_phy_reg(pi, 0x221,
17132 NPHY_FORCESIG_DECODEGATEDCLKS,
17133 NPHY_FORCESIG_DECODEGATEDCLKS);
17134 }
17135
17136 if (pi->phyhang_avoid)
17137 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17138}
17139
17140static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17141{
17142 int j, type = 2;
17143 u16 addr_offset = 0x2c5;
17144
17145 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17146 write_phy_reg(pi, addr_offset + j,
17147 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17148}
17149
17150static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17151{
17152
17153 if (write == 0) {
17154 vals[0] = read_phy_reg(pi, 0x2c);
17155 vals[1] = read_phy_reg(pi, 0x42);
17156 } else {
17157 write_phy_reg(pi, 0x2c, vals[0]);
17158 write_phy_reg(pi, 0x42, vals[1]);
17159 }
17160}
17161
17162static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17163{
17164 u8 core;
17165
17166 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17167 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17168 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17169 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17170 TX_SSI_MASTER, 0x5);
17171 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17172 TX_SSI_MUX, 0xe);
17173
17174 if (pi->pubpi.radiorev != 5)
17175 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17176 core, TSSIA, 0);
17177
17178 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17179 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17180 core, TSSIG, 0x1);
17181 else
17182 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17183 core, TSSIG, 0x31);
17184 } else {
17185 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17186 TX_SSI_MASTER, 0x9);
17187 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17188 TX_SSI_MUX, 0xc);
17189 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17190 TSSIG, 0);
17191
17192 if (pi->pubpi.radiorev != 5) {
17193 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17194 WRITE_RADIO_REG3(pi, RADIO_2057,
17195 TX, core,
17196 TSSIA, 0x1);
17197 else
17198 WRITE_RADIO_REG3(pi, RADIO_2057,
17199 TX, core,
17200 TSSIA, 0x31);
17201 }
17202 }
17203 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17204 0);
17205 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17206 0);
17207 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17208 0x3);
17209 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17210 0x0);
17211 }
17212 } else {
17213 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17214 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17215 0x80);
17216 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17217 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17218
17219 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17220 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17221 0x0);
17222 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17223 0x0);
17224 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17225 0x3);
17226 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17227 0x0);
17228 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17229 0x8);
17230 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17231 0x0);
17232 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17233 0x0);
17234
17235 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17236 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17237 TX_SSI_MASTER, 0x5);
17238
17239 if (pi->pubpi.radiorev != 5)
17240 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17241 core, TSSIA, 0x0);
17242 if (NREV_GE(pi->pubpi.phy_rev, 5))
17243 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17244 core, TSSIG, 0x31);
17245 else
17246 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17247 core, TSSIG, 0x11);
17248 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17249 TX_SSI_MUX, 0xe);
17250 } else {
17251 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17252 TX_SSI_MASTER, 0x9);
17253 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17254 TSSIA, 0x31);
17255 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17256 TSSIG, 0x0);
17257 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17258 TX_SSI_MUX, 0xc);
17259 }
17260 }
17261 }
17262}
17263
17264static void
17265wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17266 u8 core_mask, u8 off)
17267{
17268 u8 core_num;
17269 u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17270 0, val_mask = 0;
17271 u8 shift = 0, val_shift = 0;
17272
17273 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17274
17275 en_mask = field;
17276 for (core_num = 0; core_num < 2; core_num++) {
17277
17278 switch (field) {
17279 case (0x1 << 1):
17280 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17281 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17282 val_mask = (0x1 << 0);
17283 val_shift = 0;
17284 break;
17285 case (0x1 << 2):
17286 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17287 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17288 val_mask = (0x1 << 1);
17289 val_shift = 1;
17290 break;
17291 case (0x1 << 3):
17292 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17293 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17294 val_mask = (0x1 << 2);
17295 val_shift = 2;
17296 break;
17297 case (0x1 << 4):
17298 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17299 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17300 val_mask = (0x1 << 4);
17301 val_shift = 4;
17302 break;
17303 case (0x1 << 5):
17304 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17305 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17306 val_mask = (0x1 << 5);
17307 val_shift = 5;
17308 break;
17309 case (0x1 << 6):
17310 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17311 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17312 val_mask = (0x1 << 6);
17313 val_shift = 6;
17314 break;
17315 case (0x1 << 7):
17316 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17317 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17318 val_mask = (0x1 << 7);
17319 val_shift = 7;
17320 break;
17321 case (0x1 << 8):
17322 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17323 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17324 val_mask = (0x7 << 8);
17325 val_shift = 8;
17326 break;
17327 case (0x1 << 11):
17328 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17329 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17330 val_mask = (0x7 << 13);
17331 val_shift = 13;
17332 break;
17333
17334 case (0x1 << 9):
17335 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17336 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17337 val_mask = (0x7 << 0);
17338 val_shift = 0;
17339 break;
17340
17341 case (0x1 << 10):
17342 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17343 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17344 val_mask = (0x7 << 4);
17345 val_shift = 4;
17346 break;
17347
17348 case (0x1 << 12):
17349 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17350 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17351 val_mask = (0xffff << 0);
17352 val_shift = 0;
17353 break;
17354 case (0x1 << 13):
17355 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17356 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17357 val_mask = (0xffff << 0);
17358 val_shift = 0;
17359 break;
17360 case (0x1 << 14):
17361 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17362 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17363 val_mask = (0x3 << 6);
17364 val_shift = 6;
17365 break;
17366 case (0x1 << 0):
17367 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17368 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17369 val_mask = (0x1 << 15);
17370 val_shift = 15;
17371 break;
17372 default:
17373 addr = 0xffff;
17374 break;
17375 }
17376
17377 if (off) {
17378 and_phy_reg(pi, en_addr, ~en_mask);
17379 and_phy_reg(pi, val_addr, ~val_mask);
17380 } else {
17381
17382 if ((core_mask == 0)
17383 || (core_mask & (1 << core_num))) {
17384 or_phy_reg(pi, en_addr, en_mask);
17385
17386 if (addr != 0xffff)
17387 mod_phy_reg(pi, val_addr,
17388 val_mask,
17389 (value <<
17390 val_shift));
17391 }
17392 }
17393 }
17394 } else {
17395
17396 if (off) {
17397 and_phy_reg(pi, 0xec, ~field);
17398 value = 0x0;
17399 } else {
17400 or_phy_reg(pi, 0xec, field);
17401 }
17402
17403 for (core_num = 0; core_num < 2; core_num++) {
17404
17405 switch (field) {
17406 case (0x1 << 1):
17407 case (0x1 << 9):
17408 case (0x1 << 12):
17409 case (0x1 << 13):
17410 case (0x1 << 14):
17411 addr = 0x78;
17412
17413 core_mask = 0x1;
17414 break;
17415 case (0x1 << 2):
17416 case (0x1 << 3):
17417 case (0x1 << 4):
17418 case (0x1 << 5):
17419 case (0x1 << 6):
17420 case (0x1 << 7):
17421 case (0x1 << 8):
17422 addr = (core_num == 0) ? 0x7a : 0x7d;
17423 break;
17424 case (0x1 << 10):
17425 addr = (core_num == 0) ? 0x7b : 0x7e;
17426 break;
17427 case (0x1 << 11):
17428 addr = (core_num == 0) ? 0x7c : 0x7f;
17429 break;
17430 default:
17431 addr = 0xffff;
17432 }
17433
17434 switch (field) {
17435 case (0x1 << 1):
17436 mask = (0x7 << 3);
17437 shift = 3;
17438 break;
17439 case (0x1 << 9):
17440 mask = (0x1 << 2);
17441 shift = 2;
17442 break;
17443 case (0x1 << 12):
17444 mask = (0x1 << 8);
17445 shift = 8;
17446 break;
17447 case (0x1 << 13):
17448 mask = (0x1 << 9);
17449 shift = 9;
17450 break;
17451 case (0x1 << 14):
17452 mask = (0xf << 12);
17453 shift = 12;
17454 break;
17455 case (0x1 << 2):
17456 mask = (0x1 << 0);
17457 shift = 0;
17458 break;
17459 case (0x1 << 3):
17460 mask = (0x1 << 1);
17461 shift = 1;
17462 break;
17463 case (0x1 << 4):
17464 mask = (0x1 << 2);
17465 shift = 2;
17466 break;
17467 case (0x1 << 5):
17468 mask = (0x3 << 4);
17469 shift = 4;
17470 break;
17471 case (0x1 << 6):
17472 mask = (0x3 << 6);
17473 shift = 6;
17474 break;
17475 case (0x1 << 7):
17476 mask = (0x1 << 8);
17477 shift = 8;
17478 break;
17479 case (0x1 << 8):
17480 mask = (0x1 << 9);
17481 shift = 9;
17482 break;
17483 case (0x1 << 10):
17484 mask = 0x1fff;
17485 shift = 0x0;
17486 break;
17487 case (0x1 << 11):
17488 mask = 0x1fff;
17489 shift = 0x0;
17490 break;
17491 default:
17492 mask = 0x0;
17493 shift = 0x0;
17494 break;
17495 }
17496
17497 if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17498 mod_phy_reg(pi, addr, mask, (value << shift));
17499 }
17500
17501 or_phy_reg(pi, 0xec, (0x1 << 0));
17502 or_phy_reg(pi, 0x78, (0x1 << 0));
17503 udelay(1);
17504 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17505 }
17506}
17507
17508static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17509{
17510 s32 rssi_buf[4];
17511 s32 int_val;
17512
17513 if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17514
17515 return;
17516
17517 if (PHY_IPA(pi))
17518 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17519
17520 if (NREV_GE(pi->pubpi.phy_rev, 7))
17521 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17522 0, 0x3, 0,
17523 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17524 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17525 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17526
17527 wlc_phy_stopplayback_nphy(pi);
17528
17529 wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17530
17531 udelay(20);
17532 int_val =
17533 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17534 1);
17535 wlc_phy_stopplayback_nphy(pi);
17536 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17537
17538 if (NREV_GE(pi->pubpi.phy_rev, 7))
17539 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17540 0, 0x3, 1,
17541 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17542 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17543 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17544
17545 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17546
17547 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17548 (u8) ((int_val >> 24) & 0xff);
17549 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17550 (u8) ((int_val >> 24) & 0xff);
17551
17552 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17553 (u8) ((int_val >> 8) & 0xff);
17554 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17555 (u8) ((int_val >> 8) & 0xff);
17556 } else {
17557 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17558 (u8) ((int_val >> 24) & 0xff);
17559
17560 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17561 (u8) ((int_val >> 8) & 0xff);
17562
17563 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17564 (u8) ((int_val >> 16) & 0xff);
17565 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17566 (u8) ((int_val) & 0xff);
17567 }
17568
17569}
17570
17571static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17572{
17573 u8 idx, idx2, i, delta_ind;
17574
17575 for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17576 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17577
17578 for (i = 0; i < 4; i++) {
17579 idx2 = 0;
17580
17581 delta_ind = 0;
17582
17583 switch (i) {
17584 case 0:
17585
17586 if (CHSPEC_IS40(pi->radio_chanspec)
17587 && NPHY_IS_SROM_REINTERPRET) {
17588 idx = TXP_FIRST_MCS_40_SISO;
17589 } else {
17590 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17591 TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17592 delta_ind = 1;
17593 }
17594 break;
17595
17596 case 1:
17597
17598 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17599 TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17600 break;
17601
17602 case 2:
17603
17604 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17605 TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17606 break;
17607
17608 case 3:
17609
17610 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17611 TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17612 break;
17613 }
17614
17615 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17616 pi->tx_power_offset[idx];
17617 idx = idx + delta_ind;
17618 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17619 pi->tx_power_offset[idx];
17620 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17621 pi->tx_power_offset[idx];
17622 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17623 pi->tx_power_offset[idx++];
17624
17625 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17626 pi->tx_power_offset[idx++];
17627 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17628 pi->tx_power_offset[idx];
17629 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17630 pi->tx_power_offset[idx];
17631 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17632 pi->tx_power_offset[idx++];
17633
17634 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17635 pi->tx_power_offset[idx++];
17636 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17637 pi->tx_power_offset[idx];
17638 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17639 pi->tx_power_offset[idx];
17640 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17641 pi->tx_power_offset[idx++];
17642
17643 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17644 pi->tx_power_offset[idx];
17645 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17646 pi->tx_power_offset[idx++];
17647 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17648 pi->tx_power_offset[idx];
17649 idx = idx + 1 - delta_ind;
17650 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17651 pi->tx_power_offset[idx];
17652
17653 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17654 pi->tx_power_offset[idx];
17655 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17656 pi->tx_power_offset[idx];
17657 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17658 pi->tx_power_offset[idx];
17659 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17660 pi->tx_power_offset[idx];
17661 }
17662}
17663
17664static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17665{
17666 u32 idx;
17667 s16 a1[2], b0[2], b1[2];
17668 s8 target_pwr_qtrdbm[2];
17669 s32 num, den, pwr_est;
17670 u8 chan_freq_range;
17671 u8 idle_tssi[2];
17672 u32 tbl_id, tbl_len, tbl_offset;
17673 u32 regval[64];
17674 u8 core;
17675
17676 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17677 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
Arend van Spriel4b006b12011-12-08 15:06:54 -080017678 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
Arend van Spriel5b435de2011-10-05 13:19:03 +020017679 udelay(1);
17680 }
17681
17682 if (pi->phyhang_avoid)
17683 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17684
17685 or_phy_reg(pi, 0x122, (0x1 << 0));
17686
17687 if (NREV_GE(pi->pubpi.phy_rev, 3))
17688 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17689 else
17690 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17691
17692 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17693 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17694
17695 if (pi->sh->sromrev < 4) {
17696 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17697 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020017698 a1[0] = -424;
17699 a1[1] = -424;
17700 b0[0] = 5612;
17701 b0[1] = 5612;
17702 b1[1] = -1393;
17703 b1[0] = -1393;
17704 } else {
17705
17706 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17707 switch (chan_freq_range) {
17708 case WL_CHAN_FREQ_RANGE_2G:
17709 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17710 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020017711 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17712 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17713 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17714 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17715 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17716 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17717 break;
17718 case WL_CHAN_FREQ_RANGE_5GL:
17719 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17720 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020017721 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17722 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17723 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17724 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17725 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17726 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17727 break;
17728 case WL_CHAN_FREQ_RANGE_5GM:
17729 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17730 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020017731 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17732 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17733 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17734 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17735 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17736 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17737 break;
17738 case WL_CHAN_FREQ_RANGE_5GH:
17739 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17740 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020017741 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17742 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17743 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17744 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17745 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17746 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17747 break;
17748 default:
17749 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17750 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
Arend van Spriel5b435de2011-10-05 13:19:03 +020017751 a1[0] = -424;
17752 a1[1] = -424;
17753 b0[0] = 5612;
17754 b0[1] = 5612;
17755 b1[1] = -1393;
17756 b1[0] = -1393;
17757 break;
17758 }
17759 }
17760
Arend van Spriel01343532012-02-09 21:08:57 +010017761 /* use the provided transmit power */
Arend van Spriel5b435de2011-10-05 13:19:03 +020017762 target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17763 target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17764
17765 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17766 if (pi->srom_fem2g.tssipos)
17767 or_phy_reg(pi, 0x1e9, (0x1 << 14));
17768
17769 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17770 for (core = 0; core <= 1; core++) {
17771 if (PHY_IPA(pi)) {
17772 if (CHSPEC_IS2G(pi->radio_chanspec))
17773 WRITE_RADIO_REG3(pi, RADIO_2057,
17774 TX, core,
17775 TX_SSI_MUX,
17776 0xe);
17777 else
17778 WRITE_RADIO_REG3(pi, RADIO_2057,
17779 TX, core,
17780 TX_SSI_MUX,
17781 0xc);
17782 }
17783 }
17784 } else {
17785 if (PHY_IPA(pi)) {
17786
17787 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17788 RADIO_2056_TX0,
17789 (CHSPEC_IS5G
17790 (pi->radio_chanspec)) ?
17791 0xc : 0xe);
17792 write_radio_reg(pi,
17793 RADIO_2056_TX_TX_SSI_MUX |
17794 RADIO_2056_TX1,
17795 (CHSPEC_IS5G
17796 (pi->radio_chanspec)) ?
17797 0xc : 0xe);
17798 } else {
17799
17800 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17801 RADIO_2056_TX0, 0x11);
17802 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17803 RADIO_2056_TX1, 0x11);
17804 }
17805 }
17806 }
17807
17808 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17809 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
Arend van Spriel4b006b12011-12-08 15:06:54 -080017810 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
Arend van Spriel5b435de2011-10-05 13:19:03 +020017811 udelay(1);
17812 }
17813
17814 if (NREV_GE(pi->pubpi.phy_rev, 7))
17815 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17816 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17817 else
17818 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17819 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17820
17821 if (NREV_GE(pi->pubpi.phy_rev, 7))
17822 mod_phy_reg(pi, 0x222, (0xff << 0),
17823 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17824 else if (NREV_GT(pi->pubpi.phy_rev, 1))
17825 mod_phy_reg(pi, 0x222, (0xff << 0),
17826 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17827
17828 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17829 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17830
17831 write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17832
17833 write_phy_reg(pi, 0x1e9,
17834 (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17835
17836 write_phy_reg(pi, 0x1ea,
17837 (target_pwr_qtrdbm[0] << 0) |
17838 (target_pwr_qtrdbm[1] << 8));
17839
17840 tbl_len = 64;
17841 tbl_offset = 0;
17842 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17843 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17844
17845 for (idx = 0; idx < tbl_len; idx++) {
17846 num = 8 *
17847 (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17848 den = 32768 + a1[tbl_id - 26] * idx;
17849 pwr_est = max(((4 * num + den / 2) / den), -8);
17850 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17851 if (idx <=
17852 (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17853 pwr_est =
17854 max(pwr_est,
17855 target_pwr_qtrdbm
17856 [tbl_id - 26] + 1);
17857 }
17858 regval[idx] = (u32) pwr_est;
17859 }
17860 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17861 regval);
17862 }
17863
17864 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17865 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17866 pi->adj_pwr_tbl_nphy);
17867 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17868 pi->adj_pwr_tbl_nphy);
17869
17870 if (pi->phyhang_avoid)
17871 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17872}
17873
17874static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17875{
17876 u32 *tx_pwrctrl_tbl = NULL;
17877
17878 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17879 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17880 if ((pi->pubpi.radiorev == 4)
17881 || (pi->pubpi.radiorev == 6))
17882 tx_pwrctrl_tbl =
17883 nphy_tpc_txgain_ipa_2g_2057rev4n6;
17884 else if (pi->pubpi.radiorev == 3)
17885 tx_pwrctrl_tbl =
17886 nphy_tpc_txgain_ipa_2g_2057rev3;
17887 else if (pi->pubpi.radiorev == 5)
17888 tx_pwrctrl_tbl =
17889 nphy_tpc_txgain_ipa_2g_2057rev5;
17890 else if ((pi->pubpi.radiorev == 7)
17891 || (pi->pubpi.radiorev == 8))
17892 tx_pwrctrl_tbl =
17893 nphy_tpc_txgain_ipa_2g_2057rev7;
17894 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17895 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17896 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17897 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17898 } else {
17899 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17900 }
17901 } else {
17902
17903 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17904 if ((pi->pubpi.radiorev == 3) ||
17905 (pi->pubpi.radiorev == 4) ||
17906 (pi->pubpi.radiorev == 6))
17907 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17908 else if ((pi->pubpi.radiorev == 7)
17909 || (pi->pubpi.radiorev == 8))
17910 tx_pwrctrl_tbl =
17911 nphy_tpc_txgain_ipa_5g_2057rev7;
17912 } else {
17913 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17914 }
17915 }
17916
17917 return tx_pwrctrl_tbl;
17918}
17919
17920static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17921{
17922 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17923 if (pi->nphy_rssical_chanspec_2G == 0)
17924 return;
17925
17926 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17927 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17928 RADIO_2057_VCM_MASK,
17929 pi->rssical_cache.
17930 rssical_radio_regs_2G[0]);
17931 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17932 RADIO_2057_VCM_MASK,
17933 pi->rssical_cache.
17934 rssical_radio_regs_2G[1]);
17935 } else {
17936 mod_radio_reg(pi,
17937 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17938 RADIO_2056_VCM_MASK,
17939 pi->rssical_cache.
17940 rssical_radio_regs_2G[0]);
17941 mod_radio_reg(pi,
17942 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17943 RADIO_2056_VCM_MASK,
17944 pi->rssical_cache.
17945 rssical_radio_regs_2G[1]);
17946 }
17947
17948 write_phy_reg(pi, 0x1a6,
17949 pi->rssical_cache.rssical_phyregs_2G[0]);
17950 write_phy_reg(pi, 0x1ac,
17951 pi->rssical_cache.rssical_phyregs_2G[1]);
17952 write_phy_reg(pi, 0x1b2,
17953 pi->rssical_cache.rssical_phyregs_2G[2]);
17954 write_phy_reg(pi, 0x1b8,
17955 pi->rssical_cache.rssical_phyregs_2G[3]);
17956 write_phy_reg(pi, 0x1a4,
17957 pi->rssical_cache.rssical_phyregs_2G[4]);
17958 write_phy_reg(pi, 0x1aa,
17959 pi->rssical_cache.rssical_phyregs_2G[5]);
17960 write_phy_reg(pi, 0x1b0,
17961 pi->rssical_cache.rssical_phyregs_2G[6]);
17962 write_phy_reg(pi, 0x1b6,
17963 pi->rssical_cache.rssical_phyregs_2G[7]);
17964 write_phy_reg(pi, 0x1a5,
17965 pi->rssical_cache.rssical_phyregs_2G[8]);
17966 write_phy_reg(pi, 0x1ab,
17967 pi->rssical_cache.rssical_phyregs_2G[9]);
17968 write_phy_reg(pi, 0x1b1,
17969 pi->rssical_cache.rssical_phyregs_2G[10]);
17970 write_phy_reg(pi, 0x1b7,
17971 pi->rssical_cache.rssical_phyregs_2G[11]);
17972
17973 } else {
17974 if (pi->nphy_rssical_chanspec_5G == 0)
17975 return;
17976
17977 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17978 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17979 RADIO_2057_VCM_MASK,
17980 pi->rssical_cache.
17981 rssical_radio_regs_5G[0]);
17982 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17983 RADIO_2057_VCM_MASK,
17984 pi->rssical_cache.
17985 rssical_radio_regs_5G[1]);
17986 } else {
17987 mod_radio_reg(pi,
17988 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17989 RADIO_2056_VCM_MASK,
17990 pi->rssical_cache.
17991 rssical_radio_regs_5G[0]);
17992 mod_radio_reg(pi,
17993 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17994 RADIO_2056_VCM_MASK,
17995 pi->rssical_cache.
17996 rssical_radio_regs_5G[1]);
17997 }
17998
17999 write_phy_reg(pi, 0x1a6,
18000 pi->rssical_cache.rssical_phyregs_5G[0]);
18001 write_phy_reg(pi, 0x1ac,
18002 pi->rssical_cache.rssical_phyregs_5G[1]);
18003 write_phy_reg(pi, 0x1b2,
18004 pi->rssical_cache.rssical_phyregs_5G[2]);
18005 write_phy_reg(pi, 0x1b8,
18006 pi->rssical_cache.rssical_phyregs_5G[3]);
18007 write_phy_reg(pi, 0x1a4,
18008 pi->rssical_cache.rssical_phyregs_5G[4]);
18009 write_phy_reg(pi, 0x1aa,
18010 pi->rssical_cache.rssical_phyregs_5G[5]);
18011 write_phy_reg(pi, 0x1b0,
18012 pi->rssical_cache.rssical_phyregs_5G[6]);
18013 write_phy_reg(pi, 0x1b6,
18014 pi->rssical_cache.rssical_phyregs_5G[7]);
18015 write_phy_reg(pi, 0x1a5,
18016 pi->rssical_cache.rssical_phyregs_5G[8]);
18017 write_phy_reg(pi, 0x1ab,
18018 pi->rssical_cache.rssical_phyregs_5G[9]);
18019 write_phy_reg(pi, 0x1b1,
18020 pi->rssical_cache.rssical_phyregs_5G[10]);
18021 write_phy_reg(pi, 0x1b7,
18022 pi->rssical_cache.rssical_phyregs_5G[11]);
18023 }
18024}
18025
18026static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18027{
18028 u16 txcal_gain[2];
18029
18030 pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18031 pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18032 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18033 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18034
18035 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18036 txcal_gain);
18037
18038 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18039 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18040 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18041 } else {
18042 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18043 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18044 }
18045
18046 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18047 txcal_gain);
18048}
18049
18050static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18051{
18052 bool save_bbmult = false;
18053 u8 txcal_index_2057_rev5n7 = 0;
18054 u8 txcal_index_2057_rev3n4n6 = 10;
18055
18056 if (pi->use_int_tx_iqlo_cal_nphy) {
18057 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18058 if ((pi->pubpi.radiorev == 3) ||
18059 (pi->pubpi.radiorev == 4) ||
18060 (pi->pubpi.radiorev == 6)) {
18061
18062 pi->nphy_txcal_pwr_idx[0] =
18063 txcal_index_2057_rev3n4n6;
18064 pi->nphy_txcal_pwr_idx[1] =
18065 txcal_index_2057_rev3n4n6;
18066 wlc_phy_txpwr_index_nphy(
18067 pi, 3,
18068 txcal_index_2057_rev3n4n6,
18069 false);
18070 } else {
18071
18072 pi->nphy_txcal_pwr_idx[0] =
18073 txcal_index_2057_rev5n7;
18074 pi->nphy_txcal_pwr_idx[1] =
18075 txcal_index_2057_rev5n7;
18076 wlc_phy_txpwr_index_nphy(
18077 pi, 3,
18078 txcal_index_2057_rev5n7,
18079 false);
18080 }
18081 save_bbmult = true;
18082
18083 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18084 wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18085 if (pi->sh->hw_phytxchain != 3) {
18086 pi->nphy_txcal_pwr_idx[1] =
18087 pi->nphy_txcal_pwr_idx[0];
18088 wlc_phy_txpwr_index_nphy(pi, 3,
18089 pi->
18090 nphy_txcal_pwr_idx[0],
18091 true);
18092 save_bbmult = true;
18093 }
18094
18095 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18096 if (PHY_IPA(pi)) {
18097 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18098 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18099 false);
18100 } else {
18101 pi->nphy_txcal_pwr_idx[0] = 80;
18102 pi->nphy_txcal_pwr_idx[1] = 80;
18103 wlc_phy_txpwr_index_nphy(pi, 3, 80,
18104 false);
18105 save_bbmult = true;
18106 }
18107 } else {
18108 wlc_phy_internal_cal_txgain_nphy(pi);
18109 save_bbmult = true;
18110 }
18111
18112 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18113 if (PHY_IPA(pi)) {
18114 if (CHSPEC_IS2G(pi->radio_chanspec))
18115 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18116 false);
18117 else
18118 wlc_phy_cal_txgainctrl_nphy(pi, 14,
18119 false);
18120 } else {
18121 wlc_phy_internal_cal_txgain_nphy(pi);
18122 save_bbmult = true;
18123 }
18124 }
18125
18126 } else {
18127 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18128 }
18129
18130 if (save_bbmult)
18131 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18132 &pi->nphy_txcal_bbmult);
18133}
18134
18135static void
18136wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18137 u8 core_code)
18138{
18139 u16 mask;
18140 u16 val;
18141 u8 core;
18142
18143 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18144 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18145 if (core_code == RADIO_MIMO_CORESEL_CORE1
18146 && core == PHY_CORE_1)
18147 continue;
18148 else if (core_code == RADIO_MIMO_CORESEL_CORE2
18149 && core == PHY_CORE_0)
18150 continue;
18151
18152 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18153
18154 mask = (0x1 << 10);
18155 val = 1 << 10;
18156 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18157 0x92, mask, val);
18158 }
18159
18160 if (field == NPHY_RfctrlIntc_override_OFF) {
18161
18162 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18163 0x92, 0);
18164
18165 wlc_phy_force_rfseq_nphy(pi,
18166 NPHY_RFSEQ_RESET2RX);
18167 } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18168
18169 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18170
18171 mask = (0x1 << 6) | (0x1 << 7);
18172
18173 val = value << 6;
18174 mod_phy_reg(pi,
18175 (core ==
18176 PHY_CORE_0) ? 0x91 : 0x92,
18177 mask, val);
18178
18179 or_phy_reg(pi,
18180 (core ==
18181 PHY_CORE_0) ? 0x91 : 0x92,
18182 (0x1 << 10));
18183
18184 and_phy_reg(pi, 0x2ff, (u16)
18185 ~(0x3 << 14));
18186 or_phy_reg(pi, 0x2ff, (0x1 << 13));
18187 or_phy_reg(pi, 0x2ff, (0x1 << 0));
18188 } else {
18189
18190 mask = (0x1 << 6) |
18191 (0x1 << 7) |
18192 (0x1 << 8) | (0x1 << 9);
18193 val = value << 6;
18194 mod_phy_reg(pi,
18195 (core ==
18196 PHY_CORE_0) ? 0x91 : 0x92,
18197 mask, val);
18198
18199 mask = (0x1 << 0);
18200 val = 1 << 0;
18201 mod_phy_reg(pi,
18202 (core ==
18203 PHY_CORE_0) ? 0xe7 : 0xec,
18204 mask, val);
18205
18206 mask = (core == PHY_CORE_0) ?
18207 (0x1 << 0) : (0x1 << 1);
18208 val = 1 << ((core == PHY_CORE_0) ?
18209 0 : 1);
18210 mod_phy_reg(pi, 0x78, mask, val);
18211
18212 SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18213 != 0), 10000);
18214 if (WARN(read_phy_reg(pi, 0x78) & val,
18215 "HW error: override failed"))
18216 return;
18217
18218 mask = (0x1 << 0);
18219 val = 0 << 0;
18220 mod_phy_reg(pi,
18221 (core ==
18222 PHY_CORE_0) ? 0xe7 : 0xec,
18223 mask, val);
18224 }
18225 } else if (field == NPHY_RfctrlIntc_override_PA) {
18226 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18227
18228 mask = (0x1 << 4) | (0x1 << 5);
18229
18230 if (CHSPEC_IS5G(pi->radio_chanspec))
18231 val = value << 5;
18232 else
18233 val = value << 4;
18234
18235 mod_phy_reg(pi,
18236 (core ==
18237 PHY_CORE_0) ? 0x91 : 0x92,
18238 mask, val);
18239
18240 or_phy_reg(pi,
18241 (core ==
18242 PHY_CORE_0) ? 0x91 : 0x92,
18243 (0x1 << 12));
18244 } else {
18245
18246 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18247 mask = (0x1 << 5);
18248 val = value << 5;
18249 } else {
18250 mask = (0x1 << 4);
18251 val = value << 4;
18252 }
18253 mod_phy_reg(pi,
18254 (core ==
18255 PHY_CORE_0) ? 0x91 : 0x92,
18256 mask, val);
18257 }
18258 } else if (field ==
18259 NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18260 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18261 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18262
18263 mask = (0x1 << 0);
18264 val = value << 0;
18265 mod_phy_reg(pi,
18266 (core ==
18267 PHY_CORE_0) ? 0x91
18268 : 0x92, mask, val);
18269
18270 mask = (0x1 << 2);
18271 mod_phy_reg(pi,
18272 (core ==
18273 PHY_CORE_0) ? 0x91
18274 : 0x92, mask, 0);
18275 } else {
18276
18277 mask = (0x1 << 2);
18278 val = value << 2;
18279 mod_phy_reg(pi,
18280 (core ==
18281 PHY_CORE_0) ? 0x91
18282 : 0x92, mask, val);
18283
18284 mask = (0x1 << 0);
18285 mod_phy_reg(pi,
18286 (core ==
18287 PHY_CORE_0) ? 0x91
18288 : 0x92, mask, 0);
18289 }
18290
18291 mask = (0x1 << 11);
18292 val = 1 << 11;
18293 mod_phy_reg(pi,
18294 (core ==
18295 PHY_CORE_0) ? 0x91 : 0x92,
18296 mask, val);
18297 } else {
18298
18299 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18300 mask = (0x1 << 0);
18301 val = value << 0;
18302 } else {
18303 mask = (0x1 << 2);
18304 val = value << 2;
18305 }
18306 mod_phy_reg(pi,
18307 (core ==
18308 PHY_CORE_0) ? 0x91 : 0x92,
18309 mask, val);
18310 }
18311 } else if (field ==
18312 NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18313 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18314 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18315
18316 mask = (0x1 << 1);
18317 val = value << 1;
18318 mod_phy_reg(pi,
18319 (core ==
18320 PHY_CORE_0) ? 0x91
18321 : 0x92, mask, val);
18322
18323 mask = (0x1 << 3);
18324 mod_phy_reg(pi,
18325 (core ==
18326 PHY_CORE_0) ? 0x91
18327 : 0x92, mask, 0);
18328 } else {
18329
18330 mask = (0x1 << 3);
18331 val = value << 3;
18332 mod_phy_reg(pi,
18333 (core ==
18334 PHY_CORE_0) ? 0x91
18335 : 0x92, mask, val);
18336
18337 mask = (0x1 << 1);
18338 mod_phy_reg(pi,
18339 (core ==
18340 PHY_CORE_0) ? 0x91
18341 : 0x92, mask, 0);
18342 }
18343
18344 mask = (0x1 << 11);
18345 val = 1 << 11;
18346 mod_phy_reg(pi,
18347 (core ==
18348 PHY_CORE_0) ? 0x91 : 0x92,
18349 mask, val);
18350 } else {
18351
18352 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18353 mask = (0x1 << 1);
18354 val = value << 1;
18355 } else {
18356 mask = (0x1 << 3);
18357 val = value << 3;
18358 }
18359 mod_phy_reg(pi,
18360 (core ==
18361 PHY_CORE_0) ? 0x91 : 0x92,
18362 mask, val);
18363 }
18364 }
18365 }
18366 }
18367}
18368
18369void
18370wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18371 bool debug)
18372{
18373 int gainctrl_loopidx;
18374 uint core;
18375 u16 m0m1, curr_m0m1;
18376 s32 delta_power;
18377 s32 txpwrindex;
18378 s32 qdBm_power[2];
18379 u16 orig_BBConfig;
18380 u16 phy_saveregs[4];
18381 u32 freq_test;
18382 u16 ampl_test = 250;
18383 uint stepsize;
18384 bool phyhang_avoid_state = false;
18385
18386 if (NREV_GE(pi->pubpi.phy_rev, 7))
18387 stepsize = 2;
18388 else
18389 stepsize = 1;
18390
18391 if (CHSPEC_IS40(pi->radio_chanspec))
18392 freq_test = 5000;
18393 else
18394 freq_test = 2500;
18395
18396 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18397 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18398
18399 if (pi->phyhang_avoid)
18400 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18401
18402 phyhang_avoid_state = pi->phyhang_avoid;
18403 pi->phyhang_avoid = false;
18404
18405 phy_saveregs[0] = read_phy_reg(pi, 0x91);
18406 phy_saveregs[1] = read_phy_reg(pi, 0x92);
18407 phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18408 phy_saveregs[3] = read_phy_reg(pi, 0xec);
18409 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18410 RADIO_MIMO_CORESEL_CORE1 |
18411 RADIO_MIMO_CORESEL_CORE2);
18412
18413 if (!debug) {
18414 wlc_phy_rfctrlintc_override_nphy(pi,
18415 NPHY_RfctrlIntc_override_TRSW,
18416 0x2, RADIO_MIMO_CORESEL_CORE1);
18417 wlc_phy_rfctrlintc_override_nphy(pi,
18418 NPHY_RfctrlIntc_override_TRSW,
18419 0x8, RADIO_MIMO_CORESEL_CORE2);
18420 } else {
18421 wlc_phy_rfctrlintc_override_nphy(pi,
18422 NPHY_RfctrlIntc_override_TRSW,
18423 0x1, RADIO_MIMO_CORESEL_CORE1);
18424 wlc_phy_rfctrlintc_override_nphy(pi,
18425 NPHY_RfctrlIntc_override_TRSW,
18426 0x7, RADIO_MIMO_CORESEL_CORE2);
18427 }
18428
18429 orig_BBConfig = read_phy_reg(pi, 0x01);
18430 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18431
18432 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18433
18434 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18435 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18436
18437 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18438 gainctrl_loopidx++) {
18439 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18440 false);
18441
18442 if (core == PHY_CORE_0)
18443 curr_m0m1 = m0m1 & 0xff00;
18444 else
18445 curr_m0m1 = m0m1 & 0x00ff;
18446
18447 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18448 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18449
18450 udelay(50);
18451
18452 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18453 NPHY_CAL_TSSISAMPS);
18454
18455 pi->nphy_bb_mult_save = 0;
18456 wlc_phy_stopplayback_nphy(pi);
18457
18458 delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18459
18460 txpwrindex -= stepsize * delta_power;
18461 if (txpwrindex < 0)
18462 txpwrindex = 0;
18463 else if (txpwrindex > 127)
18464 txpwrindex = 127;
18465
18466 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18467 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18468 (pi->srom_fem5g.extpagain == 3)) {
18469 if (txpwrindex < 30)
18470 txpwrindex = 30;
18471 }
18472 } else {
18473 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18474 (pi->srom_fem2g.extpagain == 3)) {
18475 if (txpwrindex < 50)
18476 txpwrindex = 50;
18477 }
18478 }
18479
18480 wlc_phy_txpwr_index_nphy(pi, (1 << core),
18481 (u8) txpwrindex, true);
18482 }
18483
18484 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18485
18486 if (debug) {
18487 u16 radio_gain;
18488 u16 dbg_m0m1;
18489
18490 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18491
18492 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18493 false);
18494
18495 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18496 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18497
18498 udelay(100);
18499
18500 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18501 NPHY_CAL_TSSISAMPS);
18502
18503 wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18504 &radio_gain);
18505
18506 mdelay(4000);
18507 pi->nphy_bb_mult_save = 0;
18508 wlc_phy_stopplayback_nphy(pi);
18509 }
18510 }
18511
18512 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18513 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18514
18515 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18516
18517 write_phy_reg(pi, 0x01, orig_BBConfig);
18518
18519 write_phy_reg(pi, 0x91, phy_saveregs[0]);
18520 write_phy_reg(pi, 0x92, phy_saveregs[1]);
18521 write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18522 write_phy_reg(pi, 0xec, phy_saveregs[3]);
18523
18524 pi->phyhang_avoid = phyhang_avoid_state;
18525
18526 if (pi->phyhang_avoid)
18527 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18528}
18529
18530static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18531{
18532 void *tbl_ptr;
18533 int coreNum;
18534 u16 *txcal_radio_regs = NULL;
18535
18536 if (pi->phyhang_avoid)
18537 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18538
18539 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18540
18541 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18542 &pi->calibration_cache.
18543 rxcal_coeffs_2G);
18544
18545 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18546 txcal_radio_regs =
18547 pi->calibration_cache.txcal_radio_regs_2G;
18548 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18549
18550 pi->calibration_cache.txcal_radio_regs_2G[0] =
18551 read_radio_reg(pi,
18552 RADIO_2056_TX_LOFT_FINE_I |
18553 RADIO_2056_TX0);
18554 pi->calibration_cache.txcal_radio_regs_2G[1] =
18555 read_radio_reg(pi,
18556 RADIO_2056_TX_LOFT_FINE_Q |
18557 RADIO_2056_TX0);
18558 pi->calibration_cache.txcal_radio_regs_2G[2] =
18559 read_radio_reg(pi,
18560 RADIO_2056_TX_LOFT_FINE_I |
18561 RADIO_2056_TX1);
18562 pi->calibration_cache.txcal_radio_regs_2G[3] =
18563 read_radio_reg(pi,
18564 RADIO_2056_TX_LOFT_FINE_Q |
18565 RADIO_2056_TX1);
18566
18567 pi->calibration_cache.txcal_radio_regs_2G[4] =
18568 read_radio_reg(pi,
18569 RADIO_2056_TX_LOFT_COARSE_I |
18570 RADIO_2056_TX0);
18571 pi->calibration_cache.txcal_radio_regs_2G[5] =
18572 read_radio_reg(pi,
18573 RADIO_2056_TX_LOFT_COARSE_Q |
18574 RADIO_2056_TX0);
18575 pi->calibration_cache.txcal_radio_regs_2G[6] =
18576 read_radio_reg(pi,
18577 RADIO_2056_TX_LOFT_COARSE_I |
18578 RADIO_2056_TX1);
18579 pi->calibration_cache.txcal_radio_regs_2G[7] =
18580 read_radio_reg(pi,
18581 RADIO_2056_TX_LOFT_COARSE_Q |
18582 RADIO_2056_TX1);
18583 } else {
18584 pi->calibration_cache.txcal_radio_regs_2G[0] =
18585 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18586 pi->calibration_cache.txcal_radio_regs_2G[1] =
18587 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18588 pi->calibration_cache.txcal_radio_regs_2G[2] =
18589 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18590 pi->calibration_cache.txcal_radio_regs_2G[3] =
18591 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18592 }
18593
18594 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18595 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18596 } else {
18597
18598 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18599 &pi->calibration_cache.
18600 rxcal_coeffs_5G);
18601
18602 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18603 txcal_radio_regs =
18604 pi->calibration_cache.txcal_radio_regs_5G;
18605 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18606
18607 pi->calibration_cache.txcal_radio_regs_5G[0] =
18608 read_radio_reg(pi,
18609 RADIO_2056_TX_LOFT_FINE_I |
18610 RADIO_2056_TX0);
18611 pi->calibration_cache.txcal_radio_regs_5G[1] =
18612 read_radio_reg(pi,
18613 RADIO_2056_TX_LOFT_FINE_Q |
18614 RADIO_2056_TX0);
18615 pi->calibration_cache.txcal_radio_regs_5G[2] =
18616 read_radio_reg(pi,
18617 RADIO_2056_TX_LOFT_FINE_I |
18618 RADIO_2056_TX1);
18619 pi->calibration_cache.txcal_radio_regs_5G[3] =
18620 read_radio_reg(pi,
18621 RADIO_2056_TX_LOFT_FINE_Q |
18622 RADIO_2056_TX1);
18623
18624 pi->calibration_cache.txcal_radio_regs_5G[4] =
18625 read_radio_reg(pi,
18626 RADIO_2056_TX_LOFT_COARSE_I |
18627 RADIO_2056_TX0);
18628 pi->calibration_cache.txcal_radio_regs_5G[5] =
18629 read_radio_reg(pi,
18630 RADIO_2056_TX_LOFT_COARSE_Q |
18631 RADIO_2056_TX0);
18632 pi->calibration_cache.txcal_radio_regs_5G[6] =
18633 read_radio_reg(pi,
18634 RADIO_2056_TX_LOFT_COARSE_I |
18635 RADIO_2056_TX1);
18636 pi->calibration_cache.txcal_radio_regs_5G[7] =
18637 read_radio_reg(pi,
18638 RADIO_2056_TX_LOFT_COARSE_Q |
18639 RADIO_2056_TX1);
18640 } else {
18641 pi->calibration_cache.txcal_radio_regs_5G[0] =
18642 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18643 pi->calibration_cache.txcal_radio_regs_5G[1] =
18644 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18645 pi->calibration_cache.txcal_radio_regs_5G[2] =
18646 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18647 pi->calibration_cache.txcal_radio_regs_5G[3] =
18648 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18649 }
18650
18651 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18652 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18653 }
18654 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18655 for (coreNum = 0; coreNum <= 1; coreNum++) {
18656
18657 txcal_radio_regs[2 * coreNum] =
18658 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18659 LOFT_FINE_I);
18660 txcal_radio_regs[2 * coreNum + 1] =
18661 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18662 LOFT_FINE_Q);
18663
18664 txcal_radio_regs[2 * coreNum + 4] =
18665 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18666 LOFT_COARSE_I);
18667 txcal_radio_regs[2 * coreNum + 5] =
18668 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18669 LOFT_COARSE_Q);
18670 }
18671 }
18672
18673 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18674
18675 if (pi->phyhang_avoid)
18676 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18677}
18678
18679static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18680{
18681 struct nphy_iq_comp tx_comp;
18682
18683 wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18684
18685 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18686 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18687 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18688 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18689}
18690
18691static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18692{
18693 u16 *loft_comp;
18694 u16 txcal_coeffs_bphy[4];
18695 u16 *tbl_ptr;
18696 int coreNum;
18697 u16 *txcal_radio_regs = NULL;
18698
18699 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18700 if (pi->nphy_iqcal_chanspec_2G == 0)
18701 return;
18702
18703 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18704 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18705 } else {
18706 if (pi->nphy_iqcal_chanspec_5G == 0)
18707 return;
18708
18709 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18710 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18711 }
18712
18713 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18714
18715 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18716 txcal_coeffs_bphy[0] = tbl_ptr[0];
18717 txcal_coeffs_bphy[1] = tbl_ptr[1];
18718 txcal_coeffs_bphy[2] = tbl_ptr[2];
18719 txcal_coeffs_bphy[3] = tbl_ptr[3];
18720 } else {
18721 txcal_coeffs_bphy[0] = 0;
18722 txcal_coeffs_bphy[1] = 0;
18723 txcal_coeffs_bphy[2] = 0;
18724 txcal_coeffs_bphy[3] = 0;
18725 }
18726
18727 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18728 txcal_coeffs_bphy);
18729
18730 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18731
18732 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18733
18734 if (NREV_LT(pi->pubpi.phy_rev, 2))
18735 wlc_phy_tx_iq_war_nphy(pi);
18736
18737 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18738 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18739 txcal_radio_regs =
18740 pi->calibration_cache.txcal_radio_regs_2G;
18741 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18742
18743 write_radio_reg(pi,
18744 RADIO_2056_TX_LOFT_FINE_I |
18745 RADIO_2056_TX0,
18746 pi->calibration_cache.
18747 txcal_radio_regs_2G[0]);
18748 write_radio_reg(pi,
18749 RADIO_2056_TX_LOFT_FINE_Q |
18750 RADIO_2056_TX0,
18751 pi->calibration_cache.
18752 txcal_radio_regs_2G[1]);
18753 write_radio_reg(pi,
18754 RADIO_2056_TX_LOFT_FINE_I |
18755 RADIO_2056_TX1,
18756 pi->calibration_cache.
18757 txcal_radio_regs_2G[2]);
18758 write_radio_reg(pi,
18759 RADIO_2056_TX_LOFT_FINE_Q |
18760 RADIO_2056_TX1,
18761 pi->calibration_cache.
18762 txcal_radio_regs_2G[3]);
18763
18764 write_radio_reg(pi,
18765 RADIO_2056_TX_LOFT_COARSE_I |
18766 RADIO_2056_TX0,
18767 pi->calibration_cache.
18768 txcal_radio_regs_2G[4]);
18769 write_radio_reg(pi,
18770 RADIO_2056_TX_LOFT_COARSE_Q |
18771 RADIO_2056_TX0,
18772 pi->calibration_cache.
18773 txcal_radio_regs_2G[5]);
18774 write_radio_reg(pi,
18775 RADIO_2056_TX_LOFT_COARSE_I |
18776 RADIO_2056_TX1,
18777 pi->calibration_cache.
18778 txcal_radio_regs_2G[6]);
18779 write_radio_reg(pi,
18780 RADIO_2056_TX_LOFT_COARSE_Q |
18781 RADIO_2056_TX1,
18782 pi->calibration_cache.
18783 txcal_radio_regs_2G[7]);
18784 } else {
18785 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18786 pi->calibration_cache.
18787 txcal_radio_regs_2G[0]);
18788 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18789 pi->calibration_cache.
18790 txcal_radio_regs_2G[1]);
18791 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18792 pi->calibration_cache.
18793 txcal_radio_regs_2G[2]);
18794 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18795 pi->calibration_cache.
18796 txcal_radio_regs_2G[3]);
18797 }
18798
18799 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18800 &pi->calibration_cache.
18801 rxcal_coeffs_2G);
18802 } else {
18803 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18804 txcal_radio_regs =
18805 pi->calibration_cache.txcal_radio_regs_5G;
18806 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18807
18808 write_radio_reg(pi,
18809 RADIO_2056_TX_LOFT_FINE_I |
18810 RADIO_2056_TX0,
18811 pi->calibration_cache.
18812 txcal_radio_regs_5G[0]);
18813 write_radio_reg(pi,
18814 RADIO_2056_TX_LOFT_FINE_Q |
18815 RADIO_2056_TX0,
18816 pi->calibration_cache.
18817 txcal_radio_regs_5G[1]);
18818 write_radio_reg(pi,
18819 RADIO_2056_TX_LOFT_FINE_I |
18820 RADIO_2056_TX1,
18821 pi->calibration_cache.
18822 txcal_radio_regs_5G[2]);
18823 write_radio_reg(pi,
18824 RADIO_2056_TX_LOFT_FINE_Q |
18825 RADIO_2056_TX1,
18826 pi->calibration_cache.
18827 txcal_radio_regs_5G[3]);
18828
18829 write_radio_reg(pi,
18830 RADIO_2056_TX_LOFT_COARSE_I |
18831 RADIO_2056_TX0,
18832 pi->calibration_cache.
18833 txcal_radio_regs_5G[4]);
18834 write_radio_reg(pi,
18835 RADIO_2056_TX_LOFT_COARSE_Q |
18836 RADIO_2056_TX0,
18837 pi->calibration_cache.
18838 txcal_radio_regs_5G[5]);
18839 write_radio_reg(pi,
18840 RADIO_2056_TX_LOFT_COARSE_I |
18841 RADIO_2056_TX1,
18842 pi->calibration_cache.
18843 txcal_radio_regs_5G[6]);
18844 write_radio_reg(pi,
18845 RADIO_2056_TX_LOFT_COARSE_Q |
18846 RADIO_2056_TX1,
18847 pi->calibration_cache.
18848 txcal_radio_regs_5G[7]);
18849 } else {
18850 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18851 pi->calibration_cache.
18852 txcal_radio_regs_5G[0]);
18853 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18854 pi->calibration_cache.
18855 txcal_radio_regs_5G[1]);
18856 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18857 pi->calibration_cache.
18858 txcal_radio_regs_5G[2]);
18859 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18860 pi->calibration_cache.
18861 txcal_radio_regs_5G[3]);
18862 }
18863
18864 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18865 &pi->calibration_cache.
18866 rxcal_coeffs_5G);
18867 }
18868
18869 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18870 for (coreNum = 0; coreNum <= 1; coreNum++) {
18871
18872 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18873 LOFT_FINE_I,
18874 txcal_radio_regs[2 * coreNum]);
18875 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18876 LOFT_FINE_Q,
18877 txcal_radio_regs[2 * coreNum + 1]);
18878
18879 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18880 LOFT_COARSE_I,
18881 txcal_radio_regs[2 * coreNum + 4]);
18882 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18883 LOFT_COARSE_Q,
18884 txcal_radio_regs[2 * coreNum + 5]);
18885 }
18886 }
18887}
18888
18889static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18890{
18891 u32 idx;
18892 u16 iqloCalbuf[7];
18893 u32 iqcomp, locomp, curr_locomp;
18894 s8 locomp_i, locomp_q;
18895 s8 curr_locomp_i, curr_locomp_q;
18896 u32 tbl_id, tbl_len, tbl_offset;
18897 u32 regval[128];
18898
18899 if (pi->phyhang_avoid)
18900 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18901
18902 wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18903
18904 tbl_len = 128;
18905 tbl_offset = 320;
18906 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18907 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18908 iqcomp =
18909 (tbl_id ==
18910 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18911 (iqloCalbuf[1] & 0x3ff)
18912 : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18913 (iqloCalbuf[3] & 0x3ff);
18914
18915 for (idx = 0; idx < tbl_len; idx++)
18916 regval[idx] = iqcomp;
18917 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18918 regval);
18919 }
18920
18921 tbl_offset = 448;
18922 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18923 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18924
18925 locomp =
18926 (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18927 locomp_i = (s8) ((locomp >> 8) & 0xff);
18928 locomp_q = (s8) ((locomp) & 0xff);
18929 for (idx = 0; idx < tbl_len; idx++) {
18930 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18931 curr_locomp_i = locomp_i;
18932 curr_locomp_q = locomp_q;
18933 } else {
18934 curr_locomp_i = (s8) ((locomp_i *
18935 nphy_tpc_loscale[idx] +
18936 128) >> 8);
18937 curr_locomp_q =
18938 (s8) ((locomp_q *
18939 nphy_tpc_loscale[idx] +
18940 128) >> 8);
18941 }
18942 curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18943 curr_locomp |= (u32) (curr_locomp_q & 0xff);
18944 regval[idx] = curr_locomp;
18945 }
18946 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18947 regval);
18948 }
18949
18950 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18951
18952 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18953 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18954 }
18955
18956 if (pi->phyhang_avoid)
18957 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18958}
18959
18960static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18961{
18962 u8 tx_lpf_bw = 0;
18963
18964 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18965 if (CHSPEC_IS40(pi->radio_chanspec))
18966 tx_lpf_bw = 3;
18967 else
18968 tx_lpf_bw = 1;
18969
18970 if (PHY_IPA(pi)) {
18971 if (CHSPEC_IS40(pi->radio_chanspec))
18972 tx_lpf_bw = 5;
18973 else
18974 tx_lpf_bw = 4;
18975 }
18976
18977 write_phy_reg(pi, 0xe8,
18978 (tx_lpf_bw << 0) |
18979 (tx_lpf_bw << 3) |
18980 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18981
18982 if (PHY_IPA(pi)) {
18983
18984 if (CHSPEC_IS40(pi->radio_chanspec))
18985 tx_lpf_bw = 4;
18986 else
18987 tx_lpf_bw = 1;
18988
18989 write_phy_reg(pi, 0xe9,
18990 (tx_lpf_bw << 0) |
18991 (tx_lpf_bw << 3) |
18992 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18993 }
18994 }
18995}
18996
18997static void
18998wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
18999{
19000 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19001 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19002 CHSPEC_IS40(pi->radio_chanspec)) {
19003 if (!pi->nphy_anarxlpf_adjusted) {
19004 write_radio_reg(pi,
19005 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19006 RADIO_2056_RX0),
19007 ((pi->nphy_rccal_value +
19008 reduction_factr) | 0x80));
19009
19010 pi->nphy_anarxlpf_adjusted = true;
19011 }
19012 } else {
19013 if (pi->nphy_anarxlpf_adjusted) {
19014 write_radio_reg(pi,
19015 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19016 RADIO_2056_RX0),
19017 (pi->nphy_rccal_value | 0x80));
19018
19019 pi->nphy_anarxlpf_adjusted = false;
19020 }
19021 }
19022 }
19023}
19024
19025static void
19026wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19027 int *tone_id_buf, u32 *noise_var_buf)
19028{
19029 int i;
19030 u32 offset;
19031 int tone_id;
19032 int tbllen =
19033 CHSPEC_IS40(pi->radio_chanspec) ?
19034 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19035
19036 if (pi->nphy_noisevars_adjusted) {
19037 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19038 tone_id = pi->nphy_saved_noisevars.tone_id[i];
19039 offset = (tone_id >= 0) ?
19040 ((tone_id *
19041 2) + 1) : (tbllen + (tone_id * 2) + 1);
19042 wlc_phy_table_write_nphy(
19043 pi, NPHY_TBL_ID_NOISEVAR, 1,
19044 offset, 32,
19045 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19046 }
19047
19048 pi->nphy_saved_noisevars.bufcount = 0;
19049 pi->nphy_noisevars_adjusted = false;
19050 }
19051
19052 if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19053 pi->nphy_saved_noisevars.bufcount = 0;
19054
19055 for (i = 0; i < ntones; i++) {
19056 tone_id = tone_id_buf[i];
19057 offset = (tone_id >= 0) ?
19058 ((tone_id * 2) + 1) :
19059 (tbllen + (tone_id * 2) + 1);
19060 pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19061 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19062 offset, 32,
19063 &pi->nphy_saved_noisevars.
19064 min_noise_vars[i]);
19065 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19066 offset, 32, &noise_var_buf[i]);
19067 pi->nphy_saved_noisevars.bufcount++;
19068 }
19069
19070 pi->nphy_noisevars_adjusted = true;
19071 }
19072}
19073
19074static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19075{
19076 u16 regval;
19077
19078 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19079 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19080 CHSPEC_IS40(pi->radio_chanspec)) {
19081 if (!pi->nphy_crsminpwr_adjusted) {
19082 regval = read_phy_reg(pi, 0x27d);
19083 pi->nphy_crsminpwr[0] = regval & 0xff;
19084 regval &= 0xff00;
19085 regval |= (u16) minpwr;
19086 write_phy_reg(pi, 0x27d, regval);
19087
19088 regval = read_phy_reg(pi, 0x280);
19089 pi->nphy_crsminpwr[1] = regval & 0xff;
19090 regval &= 0xff00;
19091 regval |= (u16) minpwr;
19092 write_phy_reg(pi, 0x280, regval);
19093
19094 regval = read_phy_reg(pi, 0x283);
19095 pi->nphy_crsminpwr[2] = regval & 0xff;
19096 regval &= 0xff00;
19097 regval |= (u16) minpwr;
19098 write_phy_reg(pi, 0x283, regval);
19099
19100 pi->nphy_crsminpwr_adjusted = true;
19101 }
19102 } else {
19103 if (pi->nphy_crsminpwr_adjusted) {
19104 regval = read_phy_reg(pi, 0x27d);
19105 regval &= 0xff00;
19106 regval |= pi->nphy_crsminpwr[0];
19107 write_phy_reg(pi, 0x27d, regval);
19108
19109 regval = read_phy_reg(pi, 0x280);
19110 regval &= 0xff00;
19111 regval |= pi->nphy_crsminpwr[1];
19112 write_phy_reg(pi, 0x280, regval);
19113
19114 regval = read_phy_reg(pi, 0x283);
19115 regval &= 0xff00;
19116 regval |= pi->nphy_crsminpwr[2];
19117 write_phy_reg(pi, 0x283, regval);
19118
19119 pi->nphy_crsminpwr_adjusted = false;
19120 }
19121 }
19122 }
19123}
19124
19125static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19126{
19127 u16 cur_channel = 0;
19128 int nphy_adj_tone_id_buf[] = { 57, 58 };
19129 u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19130 bool isAdjustNoiseVar = false;
19131 uint numTonesAdjust = 0;
19132 u32 tempval = 0;
19133
19134 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19135 if (pi->phyhang_avoid)
19136 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19137
19138 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19139
19140 if (pi->nphy_gband_spurwar_en) {
19141
19142 wlc_phy_adjust_rx_analpfbw_nphy(
19143 pi,
19144 NPHY_ANARXLPFBW_REDUCTIONFACT);
19145
19146 if (CHSPEC_IS2G(pi->radio_chanspec)) {
19147 if ((cur_channel == 11)
19148 && CHSPEC_IS40(pi->radio_chanspec))
19149 wlc_phy_adjust_min_noisevar_nphy(
19150 pi, 2,
19151 nphy_adj_tone_id_buf,
19152 nphy_adj_noise_var_buf);
19153 else
19154 wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19155 NULL,
19156 NULL);
19157 }
19158
19159 wlc_phy_adjust_crsminpwr_nphy(pi,
19160 NPHY_ADJUSTED_MINCRSPOWER);
19161 }
19162
19163 if ((pi->nphy_gband_spurwar2_en)
19164 && CHSPEC_IS2G(pi->radio_chanspec)) {
19165
19166 if (CHSPEC_IS40(pi->radio_chanspec)) {
19167 switch (cur_channel) {
19168 case 3:
19169 nphy_adj_tone_id_buf[0] = 57;
19170 nphy_adj_tone_id_buf[1] = 58;
19171 nphy_adj_noise_var_buf[0] = 0x22f;
19172 nphy_adj_noise_var_buf[1] = 0x25f;
19173 isAdjustNoiseVar = true;
19174 break;
19175 case 4:
19176 nphy_adj_tone_id_buf[0] = 41;
19177 nphy_adj_tone_id_buf[1] = 42;
19178 nphy_adj_noise_var_buf[0] = 0x22f;
19179 nphy_adj_noise_var_buf[1] = 0x25f;
19180 isAdjustNoiseVar = true;
19181 break;
19182 case 5:
19183 nphy_adj_tone_id_buf[0] = 25;
19184 nphy_adj_tone_id_buf[1] = 26;
19185 nphy_adj_noise_var_buf[0] = 0x24f;
19186 nphy_adj_noise_var_buf[1] = 0x25f;
19187 isAdjustNoiseVar = true;
19188 break;
19189 case 6:
19190 nphy_adj_tone_id_buf[0] = 9;
19191 nphy_adj_tone_id_buf[1] = 10;
19192 nphy_adj_noise_var_buf[0] = 0x22f;
19193 nphy_adj_noise_var_buf[1] = 0x24f;
19194 isAdjustNoiseVar = true;
19195 break;
19196 case 7:
19197 nphy_adj_tone_id_buf[0] = 121;
19198 nphy_adj_tone_id_buf[1] = 122;
19199 nphy_adj_noise_var_buf[0] = 0x18f;
19200 nphy_adj_noise_var_buf[1] = 0x24f;
19201 isAdjustNoiseVar = true;
19202 break;
19203 case 8:
19204 nphy_adj_tone_id_buf[0] = 105;
19205 nphy_adj_tone_id_buf[1] = 106;
19206 nphy_adj_noise_var_buf[0] = 0x22f;
19207 nphy_adj_noise_var_buf[1] = 0x25f;
19208 isAdjustNoiseVar = true;
19209 break;
19210 case 9:
19211 nphy_adj_tone_id_buf[0] = 89;
19212 nphy_adj_tone_id_buf[1] = 90;
19213 nphy_adj_noise_var_buf[0] = 0x22f;
19214 nphy_adj_noise_var_buf[1] = 0x24f;
19215 isAdjustNoiseVar = true;
19216 break;
19217 case 10:
19218 nphy_adj_tone_id_buf[0] = 73;
19219 nphy_adj_tone_id_buf[1] = 74;
19220 nphy_adj_noise_var_buf[0] = 0x22f;
19221 nphy_adj_noise_var_buf[1] = 0x24f;
19222 isAdjustNoiseVar = true;
19223 break;
19224 default:
19225 isAdjustNoiseVar = false;
19226 break;
19227 }
19228 }
19229
19230 if (isAdjustNoiseVar) {
Jim Cromief26b6f32012-04-10 17:02:34 -060019231 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
Arend van Spriel5b435de2011-10-05 13:19:03 +020019232
19233 wlc_phy_adjust_min_noisevar_nphy(
19234 pi,
19235 numTonesAdjust,
19236 nphy_adj_tone_id_buf,
19237 nphy_adj_noise_var_buf);
19238
19239 tempval = 0;
19240
19241 } else {
19242 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19243 NULL);
19244 }
19245 }
19246
19247 if ((pi->nphy_aband_spurwar_en) &&
19248 (CHSPEC_IS5G(pi->radio_chanspec))) {
19249 switch (cur_channel) {
19250 case 54:
19251 nphy_adj_tone_id_buf[0] = 32;
19252 nphy_adj_noise_var_buf[0] = 0x25f;
19253 break;
19254 case 38:
19255 case 102:
19256 case 118:
19257 nphy_adj_tone_id_buf[0] = 0;
19258 nphy_adj_noise_var_buf[0] = 0x0;
19259 break;
19260 case 134:
19261 nphy_adj_tone_id_buf[0] = 32;
19262 nphy_adj_noise_var_buf[0] = 0x21f;
19263 break;
19264 case 151:
19265 nphy_adj_tone_id_buf[0] = 16;
19266 nphy_adj_noise_var_buf[0] = 0x23f;
19267 break;
19268 case 153:
19269 case 161:
19270 nphy_adj_tone_id_buf[0] = 48;
19271 nphy_adj_noise_var_buf[0] = 0x23f;
19272 break;
19273 default:
19274 nphy_adj_tone_id_buf[0] = 0;
19275 nphy_adj_noise_var_buf[0] = 0x0;
19276 break;
19277 }
19278
19279 if (nphy_adj_tone_id_buf[0]
19280 && nphy_adj_noise_var_buf[0])
19281 wlc_phy_adjust_min_noisevar_nphy(
19282 pi, 1,
19283 nphy_adj_tone_id_buf,
19284 nphy_adj_noise_var_buf);
19285 else
19286 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19287 NULL);
19288 }
19289
19290 if (pi->phyhang_avoid)
19291 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19292 }
19293}
19294
19295void wlc_phy_init_nphy(struct brcms_phy *pi)
19296{
19297 u16 val;
19298 u16 clip1_ths[2];
19299 struct nphy_txgains target_gain;
19300 u8 tx_pwr_ctrl_state;
19301 bool do_nphy_cal = false;
19302 uint core;
Arend van Spriel5b435de2011-10-05 13:19:03 +020019303 u32 d11_clk_ctl_st;
19304 bool do_rssi_cal = false;
19305
19306 core = 0;
19307
19308 if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19309 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19310
19311 if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19312 ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19313 (pi->sh->chippkg == BCM4718_PKG_ID))) {
19314 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19315 (CHSPEC_IS2G(pi->radio_chanspec)))
Arend van Spriel7d8e18e2011-12-08 15:06:56 -080019316 ai_cc_reg(pi->sh->sih,
19317 offsetof(struct chipcregs, chipcontrol),
19318 0x40, 0x40);
Arend van Spriel5b435de2011-10-05 13:19:03 +020019319 }
19320
19321 if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19322 CHSPEC_IS40(pi->radio_chanspec)) {
19323
Arend van Spriel4b006b12011-12-08 15:06:54 -080019324 d11_clk_ctl_st = bcma_read32(pi->d11core,
19325 D11REGOFFS(clk_ctl_st));
19326 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19327 ~(CCS_FORCEHT | CCS_HTAREQ));
19328
19329 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19330 d11_clk_ctl_st);
Arend van Spriel5b435de2011-10-05 13:19:03 +020019331 }
19332
19333 pi->use_int_tx_iqlo_cal_nphy =
19334 (PHY_IPA(pi) ||
19335 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19336 (NREV_GE(pi->pubpi.phy_rev, 5)
19337 && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19338
19339 pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19340
19341 pi->nphy_deaf_count = 0;
19342
19343 wlc_phy_tbl_init_nphy(pi);
19344
19345 pi->nphy_crsminpwr_adjusted = false;
19346 pi->nphy_noisevars_adjusted = false;
19347
19348 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19349 write_phy_reg(pi, 0xe7, 0);
19350 write_phy_reg(pi, 0xec, 0);
19351 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19352 write_phy_reg(pi, 0x342, 0);
19353 write_phy_reg(pi, 0x343, 0);
19354 write_phy_reg(pi, 0x346, 0);
19355 write_phy_reg(pi, 0x347, 0);
19356 }
19357 write_phy_reg(pi, 0xe5, 0);
19358 write_phy_reg(pi, 0xe6, 0);
19359 } else {
19360 write_phy_reg(pi, 0xec, 0);
19361 }
19362
19363 write_phy_reg(pi, 0x91, 0);
19364 write_phy_reg(pi, 0x92, 0);
19365 if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19366 write_phy_reg(pi, 0x93, 0);
19367 write_phy_reg(pi, 0x94, 0);
19368 }
19369
19370 and_phy_reg(pi, 0xa1, ~3);
19371
19372 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19373 write_phy_reg(pi, 0x8f, 0);
19374 write_phy_reg(pi, 0xa5, 0);
19375 } else {
19376 write_phy_reg(pi, 0xa5, 0);
19377 }
19378
19379 if (NREV_IS(pi->pubpi.phy_rev, 2))
19380 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19381 else if (NREV_LT(pi->pubpi.phy_rev, 2))
19382 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19383
19384 write_phy_reg(pi, 0x203, 32);
19385 write_phy_reg(pi, 0x201, 32);
19386
19387 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19388 write_phy_reg(pi, 0x20d, 160);
19389 else
19390 write_phy_reg(pi, 0x20d, 184);
19391
19392 write_phy_reg(pi, 0x13a, 200);
19393
19394 write_phy_reg(pi, 0x70, 80);
19395
19396 write_phy_reg(pi, 0x1ff, 48);
19397
19398 if (NREV_LT(pi->pubpi.phy_rev, 8))
19399 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19400
19401 wlc_phy_stf_chain_upd_nphy(pi);
19402
19403 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19404 write_phy_reg(pi, 0x180, 0xaa8);
19405 write_phy_reg(pi, 0x181, 0x9a4);
19406 }
19407
19408 if (PHY_IPA(pi)) {
19409 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19410
19411 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19412 0x29b, (0x1 << 0), (1) << 0);
19413
19414 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19415 0x29c, (0x1ff << 7),
19416 (pi->nphy_papd_epsilon_offset[core]) << 7);
19417
19418 }
19419
19420 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19421 } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19422 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19423 }
19424
19425 wlc_phy_workarounds_nphy(pi);
19426
19427 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19428
19429 val = read_phy_reg(pi, 0x01);
19430 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19431 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19432 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19433
19434 wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19435
19436 wlc_phy_pa_override_nphy(pi, OFF);
19437 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19438 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19439 wlc_phy_pa_override_nphy(pi, ON);
19440
19441 wlc_phy_classifier_nphy(pi, 0, 0);
19442 wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19443
19444 if (CHSPEC_IS2G(pi->radio_chanspec))
19445 wlc_phy_bphy_init_nphy(pi);
19446
19447 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19448 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19449
19450 wlc_phy_txpwr_fixpower_nphy(pi);
19451
19452 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19453
19454 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19455
19456 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19457 u32 *tx_pwrctrl_tbl = NULL;
19458 u16 idx;
19459 s16 pga_gn = 0;
19460 s16 pad_gn = 0;
19461 s32 rfpwr_offset;
19462
19463 if (PHY_IPA(pi)) {
19464 tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19465 } else {
19466 if (CHSPEC_IS5G(pi->radio_chanspec)) {
19467 if (NREV_IS(pi->pubpi.phy_rev, 3))
19468 tx_pwrctrl_tbl =
19469 nphy_tpc_5GHz_txgain_rev3;
19470 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19471 tx_pwrctrl_tbl =
19472 (pi->srom_fem5g.extpagain ==
19473 3) ?
19474 nphy_tpc_5GHz_txgain_HiPwrEPA :
19475 nphy_tpc_5GHz_txgain_rev4;
19476 else
19477 tx_pwrctrl_tbl =
19478 nphy_tpc_5GHz_txgain_rev5;
19479 } else {
19480 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19481 if (pi->pubpi.radiorev == 5)
19482 tx_pwrctrl_tbl =
19483 nphy_tpc_txgain_epa_2057rev5;
19484 else if (pi->pubpi.radiorev == 3)
19485 tx_pwrctrl_tbl =
19486 nphy_tpc_txgain_epa_2057rev3;
19487 } else {
19488 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19489 (pi->srom_fem2g.extpagain == 3))
19490 tx_pwrctrl_tbl =
19491 nphy_tpc_txgain_HiPwrEPA;
19492 else
19493 tx_pwrctrl_tbl =
19494 nphy_tpc_txgain_rev3;
19495 }
19496 }
19497 }
19498
19499 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19500 192, 32, tx_pwrctrl_tbl);
19501 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19502 192, 32, tx_pwrctrl_tbl);
19503
19504 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19505
19506 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19507
19508 for (idx = 0; idx < 128; idx++) {
19509 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19510 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19511 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19512 pad_gn);
19513 wlc_phy_table_write_nphy(
19514 pi,
19515 NPHY_TBL_ID_CORE1TXPWRCTL,
19516 1, 576 + idx, 32,
19517 &rfpwr_offset);
19518 wlc_phy_table_write_nphy(
19519 pi,
19520 NPHY_TBL_ID_CORE2TXPWRCTL,
19521 1, 576 + idx, 32,
19522 &rfpwr_offset);
19523 }
19524 } else {
19525
19526 for (idx = 0; idx < 128; idx++) {
19527 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19528 if (CHSPEC_IS2G(pi->radio_chanspec))
19529 rfpwr_offset = (s16)
19530 nphy_papd_pga_gain_delta_ipa_2g
19531 [pga_gn];
19532 else
19533 rfpwr_offset = (s16)
19534 nphy_papd_pga_gain_delta_ipa_5g
19535 [pga_gn];
19536
19537 wlc_phy_table_write_nphy(
19538 pi,
19539 NPHY_TBL_ID_CORE1TXPWRCTL,
19540 1, 576 + idx, 32,
19541 &rfpwr_offset);
19542 wlc_phy_table_write_nphy(
19543 pi,
19544 NPHY_TBL_ID_CORE2TXPWRCTL,
19545 1, 576 + idx, 32,
19546 &rfpwr_offset);
19547 }
19548
19549 }
19550 } else {
19551
19552 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19553 192, 32, nphy_tpc_txgain);
19554 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19555 192, 32, nphy_tpc_txgain);
19556 }
19557
19558 if (pi->sh->phyrxchain != 0x3)
19559 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19560 pi->sh->phyrxchain);
19561
19562 if (PHY_PERICAL_MPHASE_PENDING(pi))
19563 wlc_phy_cal_perical_mphase_restart(pi);
19564
19565 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19566 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19567 (pi->nphy_rssical_chanspec_2G == 0) :
19568 (pi->nphy_rssical_chanspec_5G == 0);
19569
19570 if (do_rssi_cal)
19571 wlc_phy_rssi_cal_nphy(pi);
19572 else
19573 wlc_phy_restore_rssical_nphy(pi);
19574 } else {
19575 wlc_phy_rssi_cal_nphy(pi);
19576 }
19577
19578 if (!SCAN_RM_IN_PROGRESS(pi))
19579 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19580 (pi->nphy_iqcal_chanspec_2G == 0) :
19581 (pi->nphy_iqcal_chanspec_5G == 0);
19582
19583 if (!pi->do_initcal)
19584 do_nphy_cal = false;
19585
19586 if (do_nphy_cal) {
19587
19588 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19589
19590 if (pi->antsel_type == ANTSEL_2x3)
19591 wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19592 true);
19593
19594 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19595 wlc_phy_rssi_cal_nphy(pi);
19596
19597 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19598 pi->nphy_cal_orig_pwr_idx[0] =
19599 pi->nphy_txpwrindex[PHY_CORE_0]
19600 .
19601 index_internal;
19602 pi->nphy_cal_orig_pwr_idx[1] =
19603 pi->nphy_txpwrindex[PHY_CORE_1]
19604 .
19605 index_internal;
19606
19607 wlc_phy_precal_txgain_nphy(pi);
19608 target_gain =
19609 wlc_phy_get_tx_gain_nphy(pi);
19610 }
19611
19612 if (wlc_phy_cal_txiqlo_nphy
19613 (pi, target_gain, true,
19614 false) == 0) {
19615 if (wlc_phy_cal_rxiq_nphy
19616 (pi, target_gain, 2,
19617 false) == 0)
19618 wlc_phy_savecal_nphy(pi);
19619
19620 }
19621 } else if (pi->mphase_cal_phase_id ==
19622 MPHASE_CAL_STATE_IDLE) {
19623 wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19624 PHY_PERICAL_PHYINIT);
19625 }
19626 } else {
19627 wlc_phy_restorecal_nphy(pi);
19628 }
19629
19630 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19631
19632 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19633
19634 wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19635
19636 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19637
19638 write_phy_reg(pi, 0x70, 50);
19639
19640 wlc_phy_txlpfbw_nphy(pi);
19641
19642 wlc_phy_spurwar_nphy(pi);
19643
19644}
19645
19646static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19647{
19648 u16 val;
19649
19650 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19651
19652 val = read_phy_reg(pi, 0x01);
19653 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19654 udelay(1);
19655 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19656
19657 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19658
19659 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19660}
19661
19662void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19663{
19664 u16 rfctrlintc_override_val;
19665
19666 if (!en) {
19667
19668 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19669 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19670
19671 if (NREV_GE(pi->pubpi.phy_rev, 7))
19672 rfctrlintc_override_val = 0x1480;
19673 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19674 rfctrlintc_override_val =
19675 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19676 else
19677 rfctrlintc_override_val =
19678 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19679
19680 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19681 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19682 } else {
19683 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19684 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19685 }
19686
19687}
19688
19689void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19690{
19691
19692 u16 txrx_chain =
19693 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19694 bool CoreActv_override = false;
19695
19696 if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19697 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19698 CoreActv_override = true;
19699
19700 if (NREV_LE(pi->pubpi.phy_rev, 2))
19701 and_phy_reg(pi, 0xa0, ~0x20);
19702 } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19703 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19704 CoreActv_override = true;
19705
19706 if (NREV_LE(pi->pubpi.phy_rev, 2))
19707 or_phy_reg(pi, 0xa0, 0x20);
19708 }
19709
19710 mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19711
19712 if (CoreActv_override) {
19713 pi->nphy_perical = PHY_PERICAL_DISABLE;
19714 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19715 } else {
19716 pi->nphy_perical = PHY_PERICAL_MPHASE;
19717 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19718 }
19719}
19720
19721void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19722{
19723 u16 regval;
19724 u16 tbl_buf[16];
19725 uint i;
19726 struct brcms_phy *pi = (struct brcms_phy *) pih;
19727 u16 tbl_opcode;
19728 bool suspend;
19729
19730 pi->sh->phyrxchain = rxcore_bitmask;
19731
19732 if (!pi->sh->clk)
19733 return;
19734
Arend van Spriel4b006b12011-12-08 15:06:54 -080019735 suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19736 MCTL_EN_MAC));
Arend van Spriel5b435de2011-10-05 13:19:03 +020019737 if (!suspend)
19738 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19739
19740 if (pi->phyhang_avoid)
19741 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19742
19743 regval = read_phy_reg(pi, 0xa2);
19744 regval &= ~(0xf << 4);
19745 regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19746 write_phy_reg(pi, 0xa2, regval);
19747
19748 if ((rxcore_bitmask & 0x3) != 0x3) {
19749
19750 write_phy_reg(pi, 0x20e, 1);
19751
19752 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19753 if (pi->rx2tx_biasentry == -1) {
19754 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19755 ARRAY_SIZE(tbl_buf), 80,
19756 16, tbl_buf);
19757
19758 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19759 if (tbl_buf[i] ==
19760 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19761 pi->rx2tx_biasentry = (u8) i;
19762 tbl_opcode =
19763 NPHY_REV3_RFSEQ_CMD_NOP;
19764 wlc_phy_table_write_nphy(
19765 pi,
19766 NPHY_TBL_ID_RFSEQ,
19767 1, i,
19768 16,
19769 &tbl_opcode);
19770 break;
19771 } else if (tbl_buf[i] ==
19772 NPHY_REV3_RFSEQ_CMD_END)
19773 break;
19774 }
19775 }
19776 }
19777 } else {
19778
19779 write_phy_reg(pi, 0x20e, 30);
19780
19781 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19782 if (pi->rx2tx_biasentry != -1) {
19783 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19784 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19785 1, pi->rx2tx_biasentry,
19786 16, &tbl_opcode);
19787 pi->rx2tx_biasentry = -1;
19788 }
19789 }
19790 }
19791
19792 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19793
19794 if (pi->phyhang_avoid)
19795 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19796
19797 if (!suspend)
19798 wlapi_enable_mac(pi->sh->physhim);
19799}
19800
19801u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19802{
19803 u16 regval, rxen_bits;
19804 struct brcms_phy *pi = (struct brcms_phy *) pih;
19805
19806 regval = read_phy_reg(pi, 0xa2);
19807 rxen_bits = (regval >> 4) & 0xf;
19808
19809 return (u8) rxen_bits;
19810}
19811
19812bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19813{
19814 return PHY_IPA(pi);
19815}
19816
19817void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19818{
19819}
19820
19821static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19822{
19823
19824 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19825 and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19826
19827 or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19828 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19829
19830}
19831
19832static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19833{
19834 struct radio_20xx_regs *regs_2057_ptr = NULL;
19835
19836 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19837 regs_2057_ptr = regs_2057_rev4;
19838 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19839 || NREV_IS(pi->pubpi.phy_rev, 9)) {
19840 switch (pi->pubpi.radiorev) {
19841 case 5:
19842
Arend van Spriel1570e532012-02-09 21:08:56 +010019843 if (NREV_IS(pi->pubpi.phy_rev, 8))
Arend van Spriel5b435de2011-10-05 13:19:03 +020019844 regs_2057_ptr = regs_2057_rev5;
Arend van Spriel1570e532012-02-09 21:08:56 +010019845 else if (NREV_IS(pi->pubpi.phy_rev, 9))
Arend van Spriel5b435de2011-10-05 13:19:03 +020019846 regs_2057_ptr = regs_2057_rev5v1;
Arend van Spriel1570e532012-02-09 21:08:56 +010019847 break;
Arend van Spriel5b435de2011-10-05 13:19:03 +020019848
19849 case 7:
19850
19851 regs_2057_ptr = regs_2057_rev7;
19852 break;
19853
19854 case 8:
19855
19856 regs_2057_ptr = regs_2057_rev8;
19857 break;
19858
19859 default:
19860 break;
19861 }
19862 }
19863
19864 wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19865}
19866
19867static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19868{
19869 u16 rcal_reg = 0;
19870 int i;
19871
19872 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19873
19874 if (pi->pubpi.radiorev == 5) {
19875
19876 and_phy_reg(pi, 0x342, ~(0x1 << 1));
19877
19878 udelay(10);
19879
19880 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19881 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19882 0x1);
19883 }
19884 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19885
19886 udelay(10);
19887
19888 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19889
19890 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19891 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19892 if (rcal_reg & 0x1)
19893 break;
19894
19895 udelay(100);
19896 }
19897
19898 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19899 "HW error: radio calib2"))
19900 return 0;
19901
19902 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19903
19904 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19905
19906 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19907 if (pi->pubpi.radiorev == 5) {
19908
19909 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19910 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19911 0x0);
19912 }
19913
19914 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19915
19916 mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19917 rcal_reg);
19918 mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19919 rcal_reg << 2);
19920 }
19921
19922 } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19923 u16 savereg;
19924
19925 savereg =
19926 read_radio_reg(
19927 pi,
19928 RADIO_2056_SYN_PLL_MAST2 |
19929 RADIO_2056_SYN);
19930 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19931 savereg | 0x7);
19932 udelay(10);
19933
19934 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19935 0x1);
19936 udelay(10);
19937
19938 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19939 0x9);
19940
19941 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19942 rcal_reg = read_radio_reg(
19943 pi,
19944 RADIO_2056_SYN_RCAL_CODE_OUT |
19945 RADIO_2056_SYN);
19946 if (rcal_reg & 0x80)
19947 break;
19948
19949 udelay(100);
19950 }
19951
19952 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19953 "HW error: radio calib3"))
19954 return 0;
19955
19956 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19957 0x1);
19958
19959 rcal_reg =
19960 read_radio_reg(pi,
19961 RADIO_2056_SYN_RCAL_CODE_OUT |
19962 RADIO_2056_SYN);
19963
19964 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19965 0x0);
19966
19967 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19968 savereg);
19969
19970 return rcal_reg & 0x1f;
19971 }
19972 return rcal_reg & 0x3e;
19973}
19974
19975static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19976{
19977 u16 rccal_valid;
19978 int i;
19979 bool chip43226_6362A0;
19980
19981 chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19982 || (pi->pubpi.radiorev == 4)
19983 || (pi->pubpi.radiorev == 6));
19984
19985 rccal_valid = 0;
19986 if (chip43226_6362A0) {
19987 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19988 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19989 } else {
19990 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19991
19992 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19993 }
19994 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19995 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19996
19997 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19998 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19999 if (rccal_valid & 0x2)
20000 break;
20001
20002 udelay(500);
20003 }
20004
20005 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20006
20007 rccal_valid = 0;
20008 if (chip43226_6362A0) {
20009 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20010 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20011 } else {
20012 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20013
20014 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20015 }
20016 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20017 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20018
20019 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20020 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20021 if (rccal_valid & 0x2)
20022 break;
20023
20024 udelay(500);
20025 }
20026
20027 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20028
20029 rccal_valid = 0;
20030 if (chip43226_6362A0) {
20031 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20032
20033 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20034 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20035 } else {
20036 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20037 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20038 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20039 }
20040 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20041
20042 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20043 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20044 if (rccal_valid & 0x2)
20045 break;
20046
20047 udelay(500);
20048 }
20049
20050 if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20051 return 0;
20052
20053 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20054
20055 return rccal_valid;
20056}
20057
20058static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20059{
20060
20061 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20062
20063 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20064 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20065 mdelay(2);
20066 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20067 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20068
20069 if (pi->phy_init_por) {
20070 wlc_phy_radio205x_rcal(pi);
20071 wlc_phy_radio2057_rccal(pi);
20072 }
20073
20074 mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20075}
20076
20077static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20078{
20079 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20080 const struct radio_regs *regs_TX_2056_ptr = NULL;
20081 const struct radio_regs *regs_RX_2056_ptr = NULL;
20082
20083 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20084 regs_SYN_2056_ptr = regs_SYN_2056;
20085 regs_TX_2056_ptr = regs_TX_2056;
20086 regs_RX_2056_ptr = regs_RX_2056;
20087 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20088 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20089 regs_TX_2056_ptr = regs_TX_2056_A1;
20090 regs_RX_2056_ptr = regs_RX_2056_A1;
20091 } else {
20092 switch (pi->pubpi.radiorev) {
20093 case 5:
20094 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20095 regs_TX_2056_ptr = regs_TX_2056_rev5;
20096 regs_RX_2056_ptr = regs_RX_2056_rev5;
20097 break;
20098
20099 case 6:
20100 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20101 regs_TX_2056_ptr = regs_TX_2056_rev6;
20102 regs_RX_2056_ptr = regs_RX_2056_rev6;
20103 break;
20104
20105 case 7:
20106 case 9:
20107 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20108 regs_TX_2056_ptr = regs_TX_2056_rev7;
20109 regs_RX_2056_ptr = regs_RX_2056_rev7;
20110 break;
20111
20112 case 8:
20113 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20114 regs_TX_2056_ptr = regs_TX_2056_rev8;
20115 regs_RX_2056_ptr = regs_RX_2056_rev8;
20116 break;
20117
20118 case 11:
20119 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20120 regs_TX_2056_ptr = regs_TX_2056_rev11;
20121 regs_RX_2056_ptr = regs_RX_2056_rev11;
20122 break;
20123
20124 default:
20125 break;
20126 }
20127 }
20128
20129 wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20130
20131 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20132
20133 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20134
20135 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20136
20137 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20138}
20139
20140static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20141{
20142 mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20143
20144 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20145 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20146 udelay(1000);
20147 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20148
20149 if ((pi->sh->boardflags2 & BFL2_LEGACY)
20150 || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20151 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20152 else
20153 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20154
20155 mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20156
20157 if (pi->phy_init_por)
20158 wlc_phy_radio205x_rcal(pi);
20159}
20160
20161static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20162{
20163
20164 and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20165 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20166
20167 or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20168}
20169
20170static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20171{
20172 wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20173}
20174
20175static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20176{
20177
20178 and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20179 ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20180
20181 if (((pi->sh->sromrev >= 4)
20182 && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20183 || ((pi->sh->sromrev < 4))) {
20184 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20185 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20186 }
20187
20188 mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20189 write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20190
20191 and_radio_reg(pi, RADIO_2055_CAL_MISC,
20192 ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20193
20194 or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20195
20196 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20197
20198 udelay(1000);
20199
20200 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20201
20202 SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20203 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20204
20205 if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20206 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20207 "HW error: radio calibration1\n"))
20208 return;
20209
20210 and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20211 ~(RADIO_2055_CAL_LPO_ENABLE));
20212
20213 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20214
20215 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20216 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20217
20218 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20219 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20220
20221 mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20222 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20223 mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20224 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20225 if (pi->nphy_gain_boost) {
20226 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20227 ~(RADIO_2055_GAINBST_DISABLE));
20228 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20229 ~(RADIO_2055_GAINBST_DISABLE));
20230 } else {
20231 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20232 RADIO_2055_GAINBST_DISABLE);
20233 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20234 RADIO_2055_GAINBST_DISABLE);
20235 }
20236
20237 udelay(2);
20238}
20239
20240void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20241{
20242 if (on) {
20243 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20244 if (!pi->radio_is_on) {
20245 wlc_phy_radio_preinit_205x(pi);
20246 wlc_phy_radio_init_2057(pi);
20247 wlc_phy_radio_postinit_2057(pi);
20248 }
20249
20250 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20251 pi->radio_chanspec);
20252 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20253 wlc_phy_radio_preinit_205x(pi);
20254 wlc_phy_radio_init_2056(pi);
20255 wlc_phy_radio_postinit_2056(pi);
20256
20257 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20258 pi->radio_chanspec);
20259 } else {
20260 wlc_phy_radio_preinit_2055(pi);
20261 wlc_phy_radio_init_2055(pi);
20262 wlc_phy_radio_postinit_2055(pi);
20263 }
20264
20265 pi->radio_is_on = true;
20266
20267 } else {
20268
20269 if (NREV_GE(pi->pubpi.phy_rev, 3)
20270 && NREV_LT(pi->pubpi.phy_rev, 7)) {
20271 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20272 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20273
20274 write_radio_reg(pi,
20275 RADIO_2056_TX_PADA_BOOST_TUNE |
20276 RADIO_2056_TX0, 0);
20277 write_radio_reg(pi,
20278 RADIO_2056_TX_PADG_BOOST_TUNE |
20279 RADIO_2056_TX0, 0);
20280 write_radio_reg(pi,
20281 RADIO_2056_TX_PGAA_BOOST_TUNE |
20282 RADIO_2056_TX0, 0);
20283 write_radio_reg(pi,
20284 RADIO_2056_TX_PGAG_BOOST_TUNE |
20285 RADIO_2056_TX0, 0);
20286 mod_radio_reg(pi,
20287 RADIO_2056_TX_MIXA_BOOST_TUNE |
20288 RADIO_2056_TX0, 0xf0, 0);
20289 write_radio_reg(pi,
20290 RADIO_2056_TX_MIXG_BOOST_TUNE |
20291 RADIO_2056_TX0, 0);
20292
20293 write_radio_reg(pi,
20294 RADIO_2056_TX_PADA_BOOST_TUNE |
20295 RADIO_2056_TX1, 0);
20296 write_radio_reg(pi,
20297 RADIO_2056_TX_PADG_BOOST_TUNE |
20298 RADIO_2056_TX1, 0);
20299 write_radio_reg(pi,
20300 RADIO_2056_TX_PGAA_BOOST_TUNE |
20301 RADIO_2056_TX1, 0);
20302 write_radio_reg(pi,
20303 RADIO_2056_TX_PGAG_BOOST_TUNE |
20304 RADIO_2056_TX1, 0);
20305 mod_radio_reg(pi,
20306 RADIO_2056_TX_MIXA_BOOST_TUNE |
20307 RADIO_2056_TX1, 0xf0, 0);
20308 write_radio_reg(pi,
20309 RADIO_2056_TX_MIXG_BOOST_TUNE |
20310 RADIO_2056_TX1, 0);
20311
20312 pi->radio_is_on = false;
20313 }
20314
20315 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20316 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20317 pi->radio_is_on = false;
20318 }
20319
20320 }
20321}
20322
20323static bool
20324wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20325 const struct chan_info_nphy_radio2057 **t0,
20326 const struct chan_info_nphy_radio205x **t1,
20327 const struct chan_info_nphy_radio2057_rev5 **t2,
20328 const struct chan_info_nphy_2055 **t3)
20329{
20330 uint i;
20331 const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20332 const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20333 const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20334 u32 tbl_len = 0;
20335
20336 int freq = 0;
20337
20338 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20339
20340 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20341
20342 chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20343 tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20344
20345 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20346 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20347 switch (pi->pubpi.radiorev) {
20348
20349 case 5:
20350
20351 if (pi->pubpi.radiover == 0x0) {
20352
20353 chan_info_tbl_p_2 =
20354 chan_info_nphyrev8_2057_rev5;
20355 tbl_len = ARRAY_SIZE(
20356 chan_info_nphyrev8_2057_rev5);
20357
20358 } else if (pi->pubpi.radiover == 0x1) {
20359
20360 chan_info_tbl_p_2 =
20361 chan_info_nphyrev9_2057_rev5v1;
20362 tbl_len = ARRAY_SIZE(
20363 chan_info_nphyrev9_2057_rev5v1);
20364
20365 }
20366 break;
20367
20368 case 7:
20369 chan_info_tbl_p_0 =
20370 chan_info_nphyrev8_2057_rev7;
20371 tbl_len = ARRAY_SIZE(
20372 chan_info_nphyrev8_2057_rev7);
20373 break;
20374
20375 case 8:
20376 chan_info_tbl_p_0 =
20377 chan_info_nphyrev8_2057_rev8;
20378 tbl_len = ARRAY_SIZE(
20379 chan_info_nphyrev8_2057_rev8);
20380 break;
20381
20382 default:
20383 break;
20384 }
20385 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20386
20387 chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20388 tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20389 } else {
20390 goto fail;
20391 }
20392
20393 for (i = 0; i < tbl_len; i++) {
20394 if (pi->pubpi.radiorev == 5) {
20395
20396 if (chan_info_tbl_p_2[i].chan == channel)
20397 break;
20398 } else {
20399
20400 if (chan_info_tbl_p_0[i].chan == channel)
20401 break;
20402 }
20403 }
20404
20405 if (i >= tbl_len)
20406 goto fail;
20407
20408 if (pi->pubpi.radiorev == 5) {
20409 *t2 = &chan_info_tbl_p_2[i];
20410 freq = chan_info_tbl_p_2[i].freq;
20411 } else {
20412 *t0 = &chan_info_tbl_p_0[i];
20413 freq = chan_info_tbl_p_0[i].freq;
20414 }
20415
20416 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20417 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20418 chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20419 tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20420 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20421 chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20422 tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20423 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20424 || NREV_IS(pi->pubpi.phy_rev, 6)) {
20425 switch (pi->pubpi.radiorev) {
20426 case 5:
20427 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20428 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20429 break;
20430 case 6:
20431 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20432 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20433 break;
20434 case 7:
20435 case 9:
20436 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20437 tbl_len =
20438 ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20439 break;
20440 case 8:
20441 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20442 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20443 break;
20444 case 11:
20445 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20446 tbl_len = ARRAY_SIZE(
20447 chan_info_nphyrev6_2056v11);
20448 break;
20449 default:
20450 break;
20451 }
20452 }
20453
20454 for (i = 0; i < tbl_len; i++) {
20455 if (chan_info_tbl_p_1[i].chan == channel)
20456 break;
20457 }
20458
20459 if (i >= tbl_len)
20460 goto fail;
20461
20462 *t1 = &chan_info_tbl_p_1[i];
20463 freq = chan_info_tbl_p_1[i].freq;
20464
20465 } else {
20466 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20467 if (chan_info_nphy_2055[i].chan == channel)
20468 break;
20469
20470 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20471 goto fail;
20472
20473 *t3 = &chan_info_nphy_2055[i];
20474 freq = chan_info_nphy_2055[i].freq;
20475 }
20476
20477 *f = freq;
20478 return true;
20479
20480fail:
20481 *f = WL_CHAN_FREQ_RANGE_2G;
20482 return false;
20483}
20484
20485u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20486{
20487 int freq;
20488 const struct chan_info_nphy_radio2057 *t0 = NULL;
20489 const struct chan_info_nphy_radio205x *t1 = NULL;
20490 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20491 const struct chan_info_nphy_2055 *t3 = NULL;
20492
20493 if (channel == 0)
20494 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20495
20496 wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20497
20498 if (CHSPEC_IS2G(pi->radio_chanspec))
20499 return WL_CHAN_FREQ_RANGE_2G;
20500
20501 if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20502 return WL_CHAN_FREQ_RANGE_5GL;
20503 else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20504 return WL_CHAN_FREQ_RANGE_5GM;
20505 else
20506 return WL_CHAN_FREQ_RANGE_5GH;
20507}
20508
20509static void
20510wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20511 const struct chan_info_nphy_2055 *ci)
20512{
20513
20514 write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20515 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20516 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20517 write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20518
20519 BRCMS_PHY_WAR_PR51571(pi);
20520
20521 write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20522 write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20523 write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20524 write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20525
20526 BRCMS_PHY_WAR_PR51571(pi);
20527
20528 write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20529 write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20530 write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20531 write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20532
20533 BRCMS_PHY_WAR_PR51571(pi);
20534
20535 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20536 ci->RF_core1_lgbuf_a_tune);
20537 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20538 ci->RF_core1_lgbuf_g_tune);
20539 write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20540 write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20541 ci->RF_core1_tx_pga_pad_tn);
20542
20543 BRCMS_PHY_WAR_PR51571(pi);
20544
20545 write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20546 ci->RF_core1_tx_mx_bgtrim);
20547 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20548 ci->RF_core2_lgbuf_a_tune);
20549 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20550 ci->RF_core2_lgbuf_g_tune);
20551 write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20552
20553 BRCMS_PHY_WAR_PR51571(pi);
20554
20555 write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20556 ci->RF_core2_tx_pga_pad_tn);
20557 write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20558 ci->RF_core2_tx_mx_bgtrim);
20559
20560 udelay(50);
20561
20562 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20563 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20564
20565 BRCMS_PHY_WAR_PR51571(pi);
20566
20567 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20568
20569 udelay(300);
20570}
20571
20572static void
20573wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20574 const struct chan_info_nphy_radio205x *ci)
20575{
20576 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20577
20578 write_radio_reg(pi,
20579 RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20580 ci->RF_SYN_pll_vcocal1);
20581 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20582 ci->RF_SYN_pll_vcocal2);
20583 write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20584 ci->RF_SYN_pll_refdiv);
20585 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20586 ci->RF_SYN_pll_mmd2);
20587 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20588 ci->RF_SYN_pll_mmd1);
20589 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20590 ci->RF_SYN_pll_loopfilter1);
20591 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20592 ci->RF_SYN_pll_loopfilter2);
20593 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20594 ci->RF_SYN_pll_loopfilter3);
20595 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20596 ci->RF_SYN_pll_loopfilter4);
20597 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20598 ci->RF_SYN_pll_loopfilter5);
20599 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20600 ci->RF_SYN_reserved_addr27);
20601 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20602 ci->RF_SYN_reserved_addr28);
20603 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20604 ci->RF_SYN_reserved_addr29);
20605 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20606 ci->RF_SYN_logen_VCOBUF1);
20607 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20608 ci->RF_SYN_logen_MIXER2);
20609 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20610 ci->RF_SYN_logen_BUF3);
20611 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20612 ci->RF_SYN_logen_BUF4);
20613
20614 write_radio_reg(pi,
20615 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20616 ci->RF_RX0_lnaa_tune);
20617 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20618 ci->RF_RX0_lnag_tune);
20619 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20620 ci->RF_TX0_intpaa_boost_tune);
20621 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20622 ci->RF_TX0_intpag_boost_tune);
20623 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20624 ci->RF_TX0_pada_boost_tune);
20625 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20626 ci->RF_TX0_padg_boost_tune);
20627 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20628 ci->RF_TX0_pgaa_boost_tune);
20629 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20630 ci->RF_TX0_pgag_boost_tune);
20631 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20632 ci->RF_TX0_mixa_boost_tune);
20633 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20634 ci->RF_TX0_mixg_boost_tune);
20635
20636 write_radio_reg(pi,
20637 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20638 ci->RF_RX1_lnaa_tune);
20639 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20640 ci->RF_RX1_lnag_tune);
20641 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20642 ci->RF_TX1_intpaa_boost_tune);
20643 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20644 ci->RF_TX1_intpag_boost_tune);
20645 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20646 ci->RF_TX1_pada_boost_tune);
20647 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20648 ci->RF_TX1_padg_boost_tune);
20649 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20650 ci->RF_TX1_pgaa_boost_tune);
20651 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20652 ci->RF_TX1_pgag_boost_tune);
20653 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20654 ci->RF_TX1_mixa_boost_tune);
20655 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20656 ci->RF_TX1_mixg_boost_tune);
20657
20658 if (NREV_IS(pi->pubpi.phy_rev, 3))
20659 regs_SYN_2056_ptr = regs_SYN_2056;
20660 else if (NREV_IS(pi->pubpi.phy_rev, 4))
20661 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20662 else {
20663 switch (pi->pubpi.radiorev) {
20664 case 5:
20665 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20666 break;
20667 case 6:
20668 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20669 break;
20670 case 7:
20671 case 9:
20672 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20673 break;
20674 case 8:
20675 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20676 break;
20677 case 11:
20678 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20679 break;
20680 }
20681 }
20682 if (CHSPEC_IS2G(pi->radio_chanspec))
20683 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20684 RADIO_2056_SYN,
20685 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20686 else
20687 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20688 RADIO_2056_SYN,
20689 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20690
20691 if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20692 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20693 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20694 RADIO_2056_SYN, 0x1f);
20695 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20696 RADIO_2056_SYN, 0x1f);
20697
20698 write_radio_reg(pi,
20699 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20700 RADIO_2056_SYN, 0xb);
20701 write_radio_reg(pi,
20702 RADIO_2056_SYN_PLL_CP2 |
20703 RADIO_2056_SYN, 0x14);
20704 }
20705 }
20706
20707 if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20708 (CHSPEC_IS2G(pi->radio_chanspec))) {
20709 write_radio_reg(pi,
20710 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20711 0x1f);
20712 write_radio_reg(pi,
20713 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20714 0x1f);
20715 write_radio_reg(pi,
20716 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20717 0xb);
20718 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20719 0x20);
20720 }
20721
20722 if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20723 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20724 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20725 RADIO_2056_SYN, 0x1f);
20726 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20727 RADIO_2056_SYN, 0x1f);
20728 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20729 RADIO_2056_SYN, 0x5);
20730 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20731 RADIO_2056_SYN, 0xc);
20732 }
20733 }
20734
20735 if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20736 u16 pag_boost_tune;
20737 u16 padg_boost_tune;
20738 u16 pgag_boost_tune;
20739 u16 mixg_boost_tune;
20740 u16 bias, cascbias;
20741 uint core;
20742
20743 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20744
20745 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20746
20747 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20748 PADG_IDAC, 0xcc);
20749
20750 bias = 0x25;
20751 cascbias = 0x20;
20752
20753 if ((pi->sh->chip ==
20754 BCM43224_CHIP_ID)
20755 || (pi->sh->chip ==
20756 BCM43225_CHIP_ID)) {
20757 if (pi->sh->chippkg ==
20758 BCM43224_FAB_SMIC) {
20759 bias = 0x2a;
20760 cascbias = 0x38;
20761 }
20762 }
20763
20764 pag_boost_tune = 0x4;
20765 pgag_boost_tune = 0x03;
20766 padg_boost_tune = 0x77;
20767 mixg_boost_tune = 0x65;
20768
20769 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20770 INTPAG_IMAIN_STAT, bias);
20771 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20772 INTPAG_IAUX_STAT, bias);
20773 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20774 INTPAG_CASCBIAS, cascbias);
20775
20776 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20777 INTPAG_BOOST_TUNE,
20778 pag_boost_tune);
20779 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20780 PGAG_BOOST_TUNE,
20781 pgag_boost_tune);
20782 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20783 PADG_BOOST_TUNE,
20784 padg_boost_tune);
20785 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20786 MIXG_BOOST_TUNE,
20787 mixg_boost_tune);
20788 } else {
20789
20790 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20791 0x40 : 0x20;
20792
20793 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20794 INTPAG_IMAIN_STAT, bias);
20795 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20796 INTPAG_IAUX_STAT, bias);
20797 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20798 INTPAG_CASCBIAS, 0x30);
20799 }
20800 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20801 0xee);
20802 }
20803 }
20804
20805 if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20806 && CHSPEC_IS5G(pi->radio_chanspec)) {
20807 u16 paa_boost_tune;
20808 u16 pada_boost_tune;
20809 u16 pgaa_boost_tune;
20810 u16 mixa_boost_tune;
20811 u16 freq, pabias, cascbias;
20812 uint core;
20813
20814 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20815
20816 if (freq < 5150) {
20817
20818 paa_boost_tune = 0xa;
20819 pada_boost_tune = 0x77;
20820 pgaa_boost_tune = 0xf;
20821 mixa_boost_tune = 0xf;
20822 } else if (freq < 5340) {
20823
20824 paa_boost_tune = 0x8;
20825 pada_boost_tune = 0x77;
20826 pgaa_boost_tune = 0xfb;
20827 mixa_boost_tune = 0xf;
20828 } else if (freq < 5650) {
20829
20830 paa_boost_tune = 0x0;
20831 pada_boost_tune = 0x77;
20832 pgaa_boost_tune = 0xb;
20833 mixa_boost_tune = 0xf;
20834 } else {
20835
20836 paa_boost_tune = 0x0;
20837 pada_boost_tune = 0x77;
20838 if (freq != 5825)
20839 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20840 else
20841 pgaa_boost_tune = 6;
20842
20843 mixa_boost_tune = 0xf;
20844 }
20845
20846 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20847 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20848 INTPAA_BOOST_TUNE, paa_boost_tune);
20849 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20850 PADA_BOOST_TUNE, pada_boost_tune);
20851 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20852 PGAA_BOOST_TUNE, pgaa_boost_tune);
20853 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20854 MIXA_BOOST_TUNE, mixa_boost_tune);
20855
20856 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20857 TXSPARE1, 0x30);
20858 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20859 PA_SPARE2, 0xee);
20860
20861 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20862 PADA_CASCBIAS, 0x3);
20863
20864 cascbias = 0x30;
20865
20866 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
20867 (pi->sh->chip == BCM43225_CHIP_ID)) {
20868 if (pi->sh->chippkg == BCM43224_FAB_SMIC)
20869 cascbias = 0x35;
20870 }
20871
20872 pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20873
20874 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20875 INTPAA_IAUX_STAT, pabias);
20876 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20877 INTPAA_IMAIN_STAT, pabias);
20878 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20879 INTPAA_CASCBIAS, cascbias);
20880 }
20881 }
20882
20883 udelay(50);
20884
20885 wlc_phy_radio205x_vcocal_nphy(pi);
20886}
20887
20888void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20889{
20890 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20891 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20892 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20893 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20894 (1 << 2));
20895 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20896 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20897 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20898 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20899 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20900 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20901 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20902 }
20903
20904 udelay(300);
20905}
20906
20907static void
20908wlc_phy_chanspec_radio2057_setup(
20909 struct brcms_phy *pi,
20910 const struct chan_info_nphy_radio2057 *ci,
20911 const struct chan_info_nphy_radio2057_rev5 *
20912 ci2)
20913{
20914 int coreNum;
20915 u16 txmix2g_tune_boost_pu = 0;
20916 u16 pad2g_tune_pus = 0;
20917
20918 if (pi->pubpi.radiorev == 5) {
20919
20920 write_radio_reg(pi,
20921 RADIO_2057_VCOCAL_COUNTVAL0,
20922 ci2->RF_vcocal_countval0);
20923 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20924 ci2->RF_vcocal_countval1);
20925 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20926 ci2->RF_rfpll_refmaster_sparextalsize);
20927 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20928 ci2->RF_rfpll_loopfilter_r1);
20929 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20930 ci2->RF_rfpll_loopfilter_c2);
20931 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20932 ci2->RF_rfpll_loopfilter_c1);
20933 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20934 ci2->RF_cp_kpd_idac);
20935 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20936 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20937 write_radio_reg(pi,
20938 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20939 write_radio_reg(pi,
20940 RADIO_2057_LOGEN_MX2G_TUNE,
20941 ci2->RF_logen_mx2g_tune);
20942 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20943 ci2->RF_logen_indbuf2g_tune);
20944
20945 write_radio_reg(pi,
20946 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20947 ci2->RF_txmix2g_tune_boost_pu_core0);
20948 write_radio_reg(pi,
20949 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20950 ci2->RF_pad2g_tune_pus_core0);
20951 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20952 ci2->RF_lna2g_tune_core0);
20953
20954 write_radio_reg(pi,
20955 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20956 ci2->RF_txmix2g_tune_boost_pu_core1);
20957 write_radio_reg(pi,
20958 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20959 ci2->RF_pad2g_tune_pus_core1);
20960 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20961 ci2->RF_lna2g_tune_core1);
20962
20963 } else {
20964
20965 write_radio_reg(pi,
20966 RADIO_2057_VCOCAL_COUNTVAL0,
20967 ci->RF_vcocal_countval0);
20968 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20969 ci->RF_vcocal_countval1);
20970 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20971 ci->RF_rfpll_refmaster_sparextalsize);
20972 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20973 ci->RF_rfpll_loopfilter_r1);
20974 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20975 ci->RF_rfpll_loopfilter_c2);
20976 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20977 ci->RF_rfpll_loopfilter_c1);
20978 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20979 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20980 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20981 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20982 write_radio_reg(pi,
20983 RADIO_2057_LOGEN_MX2G_TUNE,
20984 ci->RF_logen_mx2g_tune);
20985 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20986 ci->RF_logen_mx5g_tune);
20987 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20988 ci->RF_logen_indbuf2g_tune);
20989 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20990 ci->RF_logen_indbuf5g_tune);
20991
20992 write_radio_reg(pi,
20993 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20994 ci->RF_txmix2g_tune_boost_pu_core0);
20995 write_radio_reg(pi,
20996 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20997 ci->RF_pad2g_tune_pus_core0);
20998 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20999 ci->RF_pga_boost_tune_core0);
21000 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21001 ci->RF_txmix5g_boost_tune_core0);
21002 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21003 ci->RF_pad5g_tune_misc_pus_core0);
21004 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21005 ci->RF_lna2g_tune_core0);
21006 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21007 ci->RF_lna5g_tune_core0);
21008
21009 write_radio_reg(pi,
21010 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21011 ci->RF_txmix2g_tune_boost_pu_core1);
21012 write_radio_reg(pi,
21013 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21014 ci->RF_pad2g_tune_pus_core1);
21015 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21016 ci->RF_pga_boost_tune_core1);
21017 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21018 ci->RF_txmix5g_boost_tune_core1);
21019 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21020 ci->RF_pad5g_tune_misc_pus_core1);
21021 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21022 ci->RF_lna2g_tune_core1);
21023 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21024 ci->RF_lna5g_tune_core1);
21025 }
21026
21027 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21028
21029 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21030 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21031 0x3f);
21032 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21033 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21034 0x8);
21035 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21036 0x8);
21037 } else {
21038 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21039 0x1f);
21040 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21041 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21042 0x8);
21043 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21044 0x8);
21045 }
21046 } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21047 (pi->pubpi.radiorev == 8)) {
21048
21049 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21050 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21051 0x1b);
21052 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21053 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21054 0xa);
21055 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21056 0xa);
21057 } else {
21058 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21059 0x1f);
21060 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21061 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21062 0x8);
21063 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21064 0x8);
21065 }
21066
21067 }
21068
21069 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21070 if (PHY_IPA(pi)) {
21071 if (pi->pubpi.radiorev == 3)
21072 txmix2g_tune_boost_pu = 0x6b;
21073
21074 if (pi->pubpi.radiorev == 5)
21075 pad2g_tune_pus = 0x73;
21076
21077 } else {
21078 if (pi->pubpi.radiorev != 5) {
21079 pad2g_tune_pus = 0x3;
21080
21081 txmix2g_tune_boost_pu = 0x61;
21082 }
21083 }
21084
21085 for (coreNum = 0; coreNum <= 1; coreNum++) {
21086
21087 if (txmix2g_tune_boost_pu != 0)
21088 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21089 TXMIX2G_TUNE_BOOST_PU,
21090 txmix2g_tune_boost_pu);
21091
21092 if (pad2g_tune_pus != 0)
21093 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21094 PAD2G_TUNE_PUS,
21095 pad2g_tune_pus);
21096 }
21097 }
21098
21099 udelay(50);
21100
21101 wlc_phy_radio205x_vcocal_nphy(pi);
21102}
21103
21104static void
21105wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21106 const struct nphy_sfo_cfg *ci)
21107{
21108 u16 val;
21109
21110 val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21111 if (CHSPEC_IS5G(chanspec) && !val) {
21112
Arend van Spriel4b006b12011-12-08 15:06:54 -080021113 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21114 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
Arend van Spriel5b435de2011-10-05 13:19:03 +020021115 (val | MAC_PHY_FORCE_CLK));
21116
21117 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21118 (BBCFG_RESETCCA | BBCFG_RESETRX));
21119
Arend van Spriel4b006b12011-12-08 15:06:54 -080021120 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021121
21122 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21123 } else if (!CHSPEC_IS5G(chanspec) && val) {
21124
21125 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21126
Arend van Spriel4b006b12011-12-08 15:06:54 -080021127 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21128 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
Arend van Spriel5b435de2011-10-05 13:19:03 +020021129 (val | MAC_PHY_FORCE_CLK));
21130
21131 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21132 (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21133
Arend van Spriel4b006b12011-12-08 15:06:54 -080021134 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021135 }
21136
21137 write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21138 write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21139 write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21140
21141 write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21142 write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21143 write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21144
21145 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21146 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21147
21148 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21149 } else {
21150 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21151 NPHY_ClassifierCtrl_ofdm_en);
21152
21153 if (CHSPEC_IS2G(chanspec))
21154 and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21155 }
21156
21157 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21158 wlc_phy_txpwr_fixpower_nphy(pi);
21159
21160 if (NREV_LT(pi->pubpi.phy_rev, 3))
21161 wlc_phy_adjust_lnagaintbl_nphy(pi);
21162
21163 wlc_phy_txlpfbw_nphy(pi);
21164
21165 if (NREV_GE(pi->pubpi.phy_rev, 3)
21166 && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21167 u8 spuravoid = 0;
21168
21169 val = CHSPEC_CHANNEL(chanspec);
21170 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21171 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21172 if ((val == 13) || (val == 14) || (val == 153))
21173 spuravoid = 1;
21174 } else if (((val >= 5) && (val <= 8)) || (val == 13)
21175 || (val == 14)) {
21176 spuravoid = 1;
21177 }
21178 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21179 if (val == 54)
21180 spuravoid = 1;
21181 } else {
21182 if (pi->nphy_aband_spurwar_en &&
21183 ((val == 38) || (val == 102)
21184 || (val == 118)))
21185 spuravoid = 1;
21186 }
21187
21188 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21189 spuravoid = 1;
21190
21191 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
Arend van Spriele3d5af52011-12-12 15:15:08 -080021192 si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021193 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21194
21195 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21196 (pi->sh->chip == BCM43225_CHIP_ID)) {
Arend van Spriel5b435de2011-10-05 13:19:03 +020021197 if (spuravoid == 1) {
Arend van Spriel4b006b12011-12-08 15:06:54 -080021198 bcma_write16(pi->d11core,
21199 D11REGOFFS(tsf_clk_frac_l),
21200 0x5341);
21201 bcma_write16(pi->d11core,
21202 D11REGOFFS(tsf_clk_frac_h), 0x8);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021203 } else {
Arend van Spriel4b006b12011-12-08 15:06:54 -080021204 bcma_write16(pi->d11core,
21205 D11REGOFFS(tsf_clk_frac_l),
21206 0x8889);
21207 bcma_write16(pi->d11core,
21208 D11REGOFFS(tsf_clk_frac_h), 0x8);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021209 }
21210 }
21211
21212 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21213
21214 mod_phy_reg(pi, 0x01, (0x1 << 15),
21215 ((spuravoid > 0) ? (0x1 << 15) : 0));
21216
21217 wlc_phy_resetcca_nphy(pi);
21218
21219 pi->phy_isspuravoid = (spuravoid > 0);
21220 }
21221
21222 if (NREV_LT(pi->pubpi.phy_rev, 7))
21223 write_phy_reg(pi, 0x17e, 0x3830);
21224
21225 wlc_phy_spurwar_nphy(pi);
21226}
21227
21228void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21229{
21230 int freq;
21231 const struct chan_info_nphy_radio2057 *t0 = NULL;
21232 const struct chan_info_nphy_radio205x *t1 = NULL;
21233 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21234 const struct chan_info_nphy_2055 *t3 = NULL;
21235
21236 if (!wlc_phy_chan2freq_nphy
21237 (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21238 return;
21239
21240 wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21241
21242 if (CHSPEC_BW(chanspec) != pi->bw)
21243 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21244
21245 if (CHSPEC_IS40(chanspec)) {
21246 if (CHSPEC_SB_UPPER(chanspec)) {
21247 or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21248 if (NREV_GE(pi->pubpi.phy_rev, 7))
21249 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21250 } else {
21251 and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21252 if (NREV_GE(pi->pubpi.phy_rev, 7))
21253 and_phy_reg(pi, 0x310,
21254 (~PRIM_SEL_UP20 & 0xffff));
21255 }
21256 }
21257
21258 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21259 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21260
21261 if ((pi->pubpi.radiorev <= 4)
21262 || (pi->pubpi.radiorev == 6)) {
21263 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21264 0x2,
21265 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21266 : 0));
21267 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21268 0x2,
21269 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21270 : 0));
21271 }
21272
21273 wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21274 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21275 (pi->pubpi.radiorev == 5) ?
21276 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21277 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21278
21279 } else {
21280
21281 mod_radio_reg(pi,
21282 RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21283 0x4,
21284 (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21285 wlc_phy_chanspec_radio2056_setup(pi, t1);
21286
21287 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21288 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21289 }
21290
21291 } else {
21292
21293 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21294 (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21295 : (0x05 << 4)));
21296
21297 wlc_phy_chanspec_radio2055_setup(pi, t3);
21298 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21299 (const struct nphy_sfo_cfg *)
21300 &(t3->PHY_BW1a));
21301 }
21302
21303}
21304
21305void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21306{
21307 struct brcms_phy *pi = (struct brcms_phy *) ppi;
21308 u16 mask = 0xfc00;
21309 u32 mc = 0;
21310
21311 if (NREV_GE(pi->pubpi.phy_rev, 7))
21312 return;
21313
21314 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21315 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21316
Joe Perches23677ce2012-02-09 11:17:23 +000021317 if (!lut_init)
Arend van Spriel5b435de2011-10-05 13:19:03 +020021318 return;
21319
21320 if (pi->srom_fem2g.antswctrllut == 0) {
21321 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21322 1, 0x02, 16, &v0);
21323 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21324 1, 0x03, 16, &v1);
21325 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21326 1, 0x08, 16, &v2);
21327 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21328 1, 0x0C, 16, &v3);
21329 }
21330
21331 if (pi->srom_fem5g.antswctrllut == 0) {
21332 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21333 1, 0x12, 16, &v0);
21334 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21335 1, 0x13, 16, &v1);
21336 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21337 1, 0x18, 16, &v2);
21338 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21339 1, 0x1C, 16, &v3);
21340 }
21341 } else {
21342
21343 write_phy_reg(pi, 0xc8, 0x0);
21344 write_phy_reg(pi, 0xc9, 0x0);
21345
Hauke Mehrtensfa0b8232012-04-29 02:50:34 +020021346 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021347
Arend van Spriel4b006b12011-12-08 15:06:54 -080021348 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
Arend van Spriel5b435de2011-10-05 13:19:03 +020021349 mc &= ~MCTL_GPOUT_SEL_MASK;
Arend van Spriel4b006b12011-12-08 15:06:54 -080021350 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021351
Arend van Spriel4b006b12011-12-08 15:06:54 -080021352 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021353
Arend van Spriel4b006b12011-12-08 15:06:54 -080021354 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
Arend van Spriel5b435de2011-10-05 13:19:03 +020021355
21356 if (lut_init) {
21357 write_phy_reg(pi, 0xf8, 0x02d8);
21358 write_phy_reg(pi, 0xf9, 0x0301);
21359 write_phy_reg(pi, 0xfa, 0x02d8);
21360 write_phy_reg(pi, 0xfb, 0x0301);
21361 }
21362 }
21363}
21364
21365u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21366{
21367 u16 curr_ctl, new_ctl;
21368 bool suspended = false;
21369
21370 if (D11REV_IS(pi->sh->corerev, 16)) {
Arend van Spriel4b006b12011-12-08 15:06:54 -080021371 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21372 MCTL_EN_MAC) ? false : true;
Arend van Spriel5b435de2011-10-05 13:19:03 +020021373 if (!suspended)
21374 wlapi_suspend_mac_and_wait(pi->sh->physhim);
21375 }
21376
21377 curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21378
21379 new_ctl = (curr_ctl & (~mask)) | (val & mask);
21380
21381 mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21382
21383 if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21384 wlapi_enable_mac(pi->sh->physhim);
21385
21386 return new_ctl;
21387}
21388
21389void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21390{
21391 u16 trigger_mask, status_mask;
21392 u16 orig_RfseqCoreActv;
21393
21394 switch (cmd) {
21395 case NPHY_RFSEQ_RX2TX:
21396 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21397 status_mask = NPHY_RfseqStatus_rx2tx;
21398 break;
21399 case NPHY_RFSEQ_TX2RX:
21400 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21401 status_mask = NPHY_RfseqStatus_tx2rx;
21402 break;
21403 case NPHY_RFSEQ_RESET2RX:
21404 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21405 status_mask = NPHY_RfseqStatus_reset2rx;
21406 break;
21407 case NPHY_RFSEQ_UPDATEGAINH:
21408 trigger_mask = NPHY_RfseqTrigger_updategainh;
21409 status_mask = NPHY_RfseqStatus_updategainh;
21410 break;
21411 case NPHY_RFSEQ_UPDATEGAINL:
21412 trigger_mask = NPHY_RfseqTrigger_updategainl;
21413 status_mask = NPHY_RfseqStatus_updategainl;
21414 break;
21415 case NPHY_RFSEQ_UPDATEGAINU:
21416 trigger_mask = NPHY_RfseqTrigger_updategainu;
21417 status_mask = NPHY_RfseqStatus_updategainu;
21418 break;
21419 default:
21420 return;
21421 }
21422
21423 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21424 or_phy_reg(pi, 0xa1,
21425 (NPHY_RfseqMode_CoreActv_override |
21426 NPHY_RfseqMode_Trigger_override));
21427 or_phy_reg(pi, 0xa3, trigger_mask);
21428 SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21429 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21430 WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21431}
21432
21433static void
21434wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21435 u8 core_mask, u8 off)
21436{
21437 u16 rfmxgain = 0, lpfgain = 0;
21438 u16 tgain = 0;
21439
21440 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21441
21442 switch (cmd) {
21443 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21444 wlc_phy_rfctrl_override_nphy_rev7(
21445 pi, (0x1 << 5),
21446 value, core_mask, off,
21447 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21448 wlc_phy_rfctrl_override_nphy_rev7(
21449 pi, (0x1 << 4), value,
21450 core_mask, off,
21451 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21452 wlc_phy_rfctrl_override_nphy_rev7(
21453 pi, (0x1 << 3), value,
21454 core_mask, off,
21455 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21456 break;
21457 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21458 wlc_phy_rfctrl_override_nphy_rev7(
21459 pi, (0x1 << 2),
21460 value, core_mask, off,
21461 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21462 wlc_phy_rfctrl_override_nphy_rev7(
21463 pi, (0x1 << 1), value,
21464 core_mask, off,
21465 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21466 wlc_phy_rfctrl_override_nphy_rev7(
21467 pi, (0x1 << 0), value,
21468 core_mask, off,
21469 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21470 wlc_phy_rfctrl_override_nphy_rev7(
21471 pi, (0x1 << 1), value,
21472 core_mask, off,
21473 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21474 wlc_phy_rfctrl_override_nphy_rev7(
21475 pi, (0x1 << 11), 0,
21476 core_mask, off,
21477 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21478 break;
21479 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21480 wlc_phy_rfctrl_override_nphy_rev7(
21481 pi, (0x1 << 2),
21482 value, core_mask, off,
21483 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21484 wlc_phy_rfctrl_override_nphy_rev7(
21485 pi, (0x1 << 1), value,
21486 core_mask, off,
21487 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21488 wlc_phy_rfctrl_override_nphy_rev7(
21489 pi, (0x1 << 0), value,
21490 core_mask, off,
21491 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21492 wlc_phy_rfctrl_override_nphy_rev7(
21493 pi, (0x1 << 2), value,
21494 core_mask, off,
21495 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21496 wlc_phy_rfctrl_override_nphy_rev7(
21497 pi, (0x1 << 11), 1,
21498 core_mask, off,
21499 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21500 break;
21501 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21502 rfmxgain = value & 0x000ff;
21503 lpfgain = value & 0x0ff00;
21504 lpfgain = lpfgain >> 8;
21505
21506 wlc_phy_rfctrl_override_nphy_rev7(
21507 pi, (0x1 << 11),
21508 rfmxgain, core_mask,
21509 off,
21510 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21511 wlc_phy_rfctrl_override_nphy_rev7(
21512 pi, (0x3 << 13),
21513 lpfgain, core_mask,
21514 off,
21515 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21516 break;
21517 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21518 tgain = value & 0x7fff;
21519 lpfgain = value & 0x8000;
21520 lpfgain = lpfgain >> 14;
21521
21522 wlc_phy_rfctrl_override_nphy_rev7(
21523 pi, (0x1 << 12),
21524 tgain, core_mask, off,
21525 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21526 wlc_phy_rfctrl_override_nphy_rev7(
21527 pi, (0x1 << 13),
21528 lpfgain, core_mask,
21529 off,
21530 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21531 break;
21532 }
21533 }
21534}
21535
21536static void
21537wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21538 u8 coresel, u8 rail, u8 rssi_type)
21539{
21540 u16 valuetostuff;
21541
21542 offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21543 NPHY_RSSICAL_MAXREAD : offset;
21544 offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21545 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21546
21547 valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21548
21549 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21550 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21551 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21552 write_phy_reg(pi, 0x1a6, valuetostuff);
21553
21554 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21555 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21556 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21557 write_phy_reg(pi, 0x1ac, valuetostuff);
21558
21559 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21560 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21561 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21562 write_phy_reg(pi, 0x1b2, valuetostuff);
21563
21564 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21565 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21566 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21567 write_phy_reg(pi, 0x1b8, valuetostuff);
21568
21569 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21570 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21571 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21572 write_phy_reg(pi, 0x1a4, valuetostuff);
21573
21574 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21575 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21576 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21577 write_phy_reg(pi, 0x1aa, valuetostuff);
21578
21579 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21580 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21581 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21582 write_phy_reg(pi, 0x1b0, valuetostuff);
21583
21584 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21585 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21586 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21587 write_phy_reg(pi, 0x1b6, valuetostuff);
21588
21589 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21590 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21591 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21592 write_phy_reg(pi, 0x1a5, valuetostuff);
21593 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21594 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21595 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21596 write_phy_reg(pi, 0x1ab, valuetostuff);
21597
21598 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21599 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21600 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21601 write_phy_reg(pi, 0x1b1, valuetostuff);
21602
21603 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21604 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21605 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21606 write_phy_reg(pi, 0x1b7, valuetostuff);
21607
21608 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21609 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21610 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21611 write_phy_reg(pi, 0x1a7, valuetostuff);
21612 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21613 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21614 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21615 write_phy_reg(pi, 0x1ad, valuetostuff);
21616 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21617 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21618 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21619 write_phy_reg(pi, 0x1b3, valuetostuff);
21620 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21621 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21622 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21623 write_phy_reg(pi, 0x1b9, valuetostuff);
21624
21625 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21626 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21627 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21628 write_phy_reg(pi, 0x1a8, valuetostuff);
21629
21630 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21631 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21632 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21633 write_phy_reg(pi, 0x1ae, valuetostuff);
21634
21635 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21636 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21637 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21638 write_phy_reg(pi, 0x1b4, valuetostuff);
21639
21640 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21641 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21642 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21643 write_phy_reg(pi, 0x1ba, valuetostuff);
21644
21645 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21646 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21647 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21648 write_phy_reg(pi, 0x1a9, valuetostuff);
21649 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21650 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21651 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21652 write_phy_reg(pi, 0x1b5, valuetostuff);
21653
21654 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21655 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21656 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21657 write_phy_reg(pi, 0x1af, valuetostuff);
21658
21659 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21660 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21661 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21662 write_phy_reg(pi, 0x1bb, valuetostuff);
21663}
21664
21665static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21666{
21667 if (PHY_IPA(pi)) {
21668 if (NREV_GE(pi->pubpi.phy_rev, 7))
21669 write_radio_reg(pi,
21670 ((core == PHY_CORE_0) ?
21671 RADIO_2057_TX0_TX_SSI_MUX :
21672 RADIO_2057_TX1_TX_SSI_MUX),
21673 (CHSPEC_IS5G(pi->radio_chanspec) ?
21674 0xc : 0xe));
21675 else
21676 write_radio_reg(pi,
21677 RADIO_2056_TX_TX_SSI_MUX |
21678 ((core == PHY_CORE_0) ?
21679 RADIO_2056_TX0 : RADIO_2056_TX1),
21680 (CHSPEC_IS5G(pi->radio_chanspec) ?
21681 0xc : 0xe));
21682 } else {
21683 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21684 write_radio_reg(pi,
21685 ((core == PHY_CORE_0) ?
21686 RADIO_2057_TX0_TX_SSI_MUX :
21687 RADIO_2057_TX1_TX_SSI_MUX),
21688 0x11);
21689
21690 if (pi->pubpi.radioid == BCM2057_ID)
21691 write_radio_reg(pi,
21692 RADIO_2057_IQTEST_SEL_PU, 0x1);
21693
21694 } else {
21695 write_radio_reg(pi,
21696 RADIO_2056_TX_TX_SSI_MUX |
21697 ((core == PHY_CORE_0) ?
21698 RADIO_2056_TX0 : RADIO_2056_TX1),
21699 0x11);
21700 }
21701 }
21702}
21703
21704void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21705{
21706 u16 mask, val;
21707 u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21708 startseq;
21709 u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21710 rfctrlovr_trigger_val;
21711 u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21712 u16 rfctrlcmd_val, rfctrlovr_val;
21713 u8 core;
21714
21715 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21716 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21717 mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21718 mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21719
21720 mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21721 mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21722
21723 mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21724 mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21725
21726 mask = (0x1 << 2) |
21727 (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21728 mod_phy_reg(pi, 0xf9, mask, 0);
21729 mod_phy_reg(pi, 0xfb, mask, 0);
21730
21731 } else {
21732 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21733 if (core_code == RADIO_MIMO_CORESEL_CORE1
21734 && core == PHY_CORE_1)
21735 continue;
21736 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21737 && core == PHY_CORE_0)
21738 continue;
21739
21740 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21741 0x8f : 0xa5, (0x1 << 9), 1 << 9);
21742
21743 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21744 rssi_type == NPHY_RSSI_SEL_W2 ||
21745 rssi_type == NPHY_RSSI_SEL_NB) {
21746 mod_phy_reg(pi,
21747 (core ==
21748 PHY_CORE_0) ? 0xa6 : 0xa7,
21749 (0x3 << 8), 0);
21750
21751 mask = (0x1 << 2) |
21752 (0x1 << 3) |
21753 (0x1 << 4) | (0x1 << 5);
21754 mod_phy_reg(pi,
21755 (core ==
21756 PHY_CORE_0) ? 0xf9 : 0xfb,
21757 mask, 0);
21758
21759 if (rssi_type == NPHY_RSSI_SEL_W1) {
21760 if (CHSPEC_IS5G(
21761 pi->radio_chanspec)) {
21762 mask = (0x1 << 2);
21763 val = 1 << 2;
21764 } else {
21765 mask = (0x1 << 3);
21766 val = 1 << 3;
21767 }
21768 } else if (rssi_type ==
21769 NPHY_RSSI_SEL_W2) {
21770 mask = (0x1 << 4);
21771 val = 1 << 4;
21772 } else {
21773 mask = (0x1 << 5);
21774 val = 1 << 5;
21775 }
21776 mod_phy_reg(pi,
21777 (core ==
21778 PHY_CORE_0) ? 0xf9 : 0xfb,
21779 mask, val);
21780
21781 mask = (0x1 << 5);
21782 val = 1 << 5;
21783 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21784 0xe5 : 0xe6, mask, val);
21785 } else {
21786 if (rssi_type == NPHY_RSSI_SEL_TBD) {
21787 mask = (0x3 << 8);
21788 val = 1 << 8;
21789 mod_phy_reg(pi,
21790 (core ==
21791 PHY_CORE_0) ? 0xa6
21792 : 0xa7, mask, val);
21793 mask = (0x3 << 10);
21794 val = 1 << 10;
21795 mod_phy_reg(pi,
21796 (core ==
21797 PHY_CORE_0) ? 0xa6
21798 : 0xa7, mask, val);
21799 } else if (rssi_type ==
21800 NPHY_RSSI_SEL_IQ) {
21801 mask = (0x3 << 8);
21802 val = 2 << 8;
21803 mod_phy_reg(pi,
21804 (core ==
21805 PHY_CORE_0) ? 0xa6
21806 : 0xa7, mask, val);
21807 mask = (0x3 << 10);
21808 val = 2 << 10;
21809 mod_phy_reg(pi,
21810 (core ==
21811 PHY_CORE_0) ? 0xa6
21812 : 0xa7, mask, val);
21813 } else {
21814 mask = (0x3 << 8);
21815 val = 3 << 8;
21816 mod_phy_reg(pi,
21817 (core ==
21818 PHY_CORE_0) ? 0xa6
21819 : 0xa7, mask, val);
21820 mask = (0x3 << 10);
21821 val = 3 << 10;
21822 mod_phy_reg(pi,
21823 (core ==
21824 PHY_CORE_0) ? 0xa6
21825 : 0xa7, mask, val);
21826 brcms_phy_wr_tx_mux(pi, core);
21827 afectrlovr_rssi_val = 1 << 9;
21828 mod_phy_reg(pi,
21829 (core ==
21830 PHY_CORE_0) ? 0x8f
21831 : 0xa5, (0x1 << 9),
21832 afectrlovr_rssi_val);
21833 }
21834 }
21835 }
21836 }
21837 } else {
21838
21839 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21840 (rssi_type == NPHY_RSSI_SEL_W2) ||
21841 (rssi_type == NPHY_RSSI_SEL_NB))
21842 val = 0x0;
21843 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21844 val = 0x1;
21845 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21846 val = 0x2;
21847 else
21848 val = 0x3;
21849
21850 mask = ((0x3 << 12) | (0x3 << 14));
21851 val = (val << 12) | (val << 14);
21852 mod_phy_reg(pi, 0xa6, mask, val);
21853 mod_phy_reg(pi, 0xa7, mask, val);
21854
21855 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21856 (rssi_type == NPHY_RSSI_SEL_W2) ||
21857 (rssi_type == NPHY_RSSI_SEL_NB)) {
21858 if (rssi_type == NPHY_RSSI_SEL_W1)
21859 val = 0x1;
21860 if (rssi_type == NPHY_RSSI_SEL_W2)
21861 val = 0x2;
21862 if (rssi_type == NPHY_RSSI_SEL_NB)
21863 val = 0x3;
21864
21865 mask = (0x3 << 4);
21866 val = (val << 4);
21867 mod_phy_reg(pi, 0x7a, mask, val);
21868 mod_phy_reg(pi, 0x7d, mask, val);
21869 }
21870
21871 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21872 afectrlovr_rssi_val = 0;
21873 rfctrlcmd_rxen_val = 0;
21874 rfctrlcmd_coresel_val = 0;
21875 rfctrlovr_rssi_val = 0;
21876 rfctrlovr_rxen_val = 0;
21877 rfctrlovr_coresel_val = 0;
21878 rfctrlovr_trigger_val = 0;
21879 startseq = 0;
21880 } else {
21881 afectrlovr_rssi_val = 1;
21882 rfctrlcmd_rxen_val = 1;
21883 rfctrlcmd_coresel_val = core_code;
21884 rfctrlovr_rssi_val = 1;
21885 rfctrlovr_rxen_val = 1;
21886 rfctrlovr_coresel_val = 1;
21887 rfctrlovr_trigger_val = 1;
21888 startseq = 1;
21889 }
21890
21891 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21892 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21893 12) | (afectrlovr_rssi_val << 13);
21894 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21895 afectrlovr_rssi_val);
21896
21897 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21898 (rssi_type == NPHY_RSSI_SEL_W2) ||
21899 (rssi_type == NPHY_RSSI_SEL_NB)) {
21900 rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21901 rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21902 (rfctrlcmd_coresel_val << 3);
21903
21904 rfctrlovr_mask = ((0x1 << 5) |
21905 (0x1 << 12) |
21906 (0x1 << 1) | (0x1 << 0));
21907 rfctrlovr_val = (rfctrlovr_rssi_val <<
21908 5) |
21909 (rfctrlovr_rxen_val << 12) |
21910 (rfctrlovr_coresel_val << 1) |
21911 (rfctrlovr_trigger_val << 0);
21912
21913 mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21914 mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21915
21916 mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21917 udelay(20);
21918
21919 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21920 }
21921 }
21922}
21923
21924int
21925wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21926 u8 nsamps)
21927{
21928 s16 rssi0, rssi1;
21929 u16 afectrlCore1_save = 0;
21930 u16 afectrlCore2_save = 0;
21931 u16 afectrlOverride1_save = 0;
21932 u16 afectrlOverride2_save = 0;
21933 u16 rfctrlOverrideAux0_save = 0;
21934 u16 rfctrlOverrideAux1_save = 0;
21935 u16 rfctrlMiscReg1_save = 0;
21936 u16 rfctrlMiscReg2_save = 0;
21937 u16 rfctrlcmd_save = 0;
21938 u16 rfctrloverride_save = 0;
21939 u16 rfctrlrssiothers1_save = 0;
21940 u16 rfctrlrssiothers2_save = 0;
21941 s8 tmp_buf[4];
21942 u8 ctr = 0, samp = 0;
21943 s32 rssi_out_val;
21944 u16 gpiosel_orig;
21945
21946 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21947 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21948 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21949 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21950 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21951 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21952 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21953 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21954 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21955 } else {
21956 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21957 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21958 rfctrloverride_save = read_phy_reg(pi, 0xec);
21959 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21960 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21961 }
21962
21963 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21964
21965 gpiosel_orig = read_phy_reg(pi, 0xca);
21966 if (NREV_LT(pi->pubpi.phy_rev, 2))
21967 write_phy_reg(pi, 0xca, 5);
21968
21969 for (ctr = 0; ctr < 4; ctr++)
21970 rssi_buf[ctr] = 0;
21971
21972 for (samp = 0; samp < nsamps; samp++) {
21973 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21974 rssi0 = read_phy_reg(pi, 0x1c9);
21975 rssi1 = read_phy_reg(pi, 0x1ca);
21976 } else {
21977 rssi0 = read_phy_reg(pi, 0x219);
21978 rssi1 = read_phy_reg(pi, 0x21a);
21979 }
21980
21981 ctr = 0;
21982 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21983 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21984 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21985 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21986
21987 for (ctr = 0; ctr < 4; ctr++)
21988 rssi_buf[ctr] += tmp_buf[ctr];
21989
21990 }
21991
21992 rssi_out_val = rssi_buf[3] & 0xff;
21993 rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21994 rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21995 rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21996
21997 if (NREV_LT(pi->pubpi.phy_rev, 2))
21998 write_phy_reg(pi, 0xca, gpiosel_orig);
21999
22000 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22001 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22002 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22003 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22004 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22005 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22006 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22007 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22008 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22009 } else {
22010 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22011 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22012 write_phy_reg(pi, 0xec, rfctrloverride_save);
22013 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22014 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22015 }
22016
22017 return rssi_out_val;
22018}
22019
22020s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22021{
22022 u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22023 u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22024 u16 pwrdet_rxtx_core1_save;
22025 u16 pwrdet_rxtx_core2_save;
22026 u16 afectrlCore1_save;
22027 u16 afectrlCore2_save;
22028 u16 afectrlOverride_save;
22029 u16 afectrlOverride2_save;
22030 u16 pd_pll_ts_save;
22031 u16 gpioSel_save;
22032 s32 radio_temp[4];
22033 s32 radio_temp2[4];
22034 u16 syn_tempprocsense_save;
22035 s16 offset = 0;
22036
22037 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22038 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22039 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22040 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22041 s32 auxADC_Vl;
22042 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22043 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22044 u16 RSSIMultCoef0QPowerDet_save;
22045 u16 tempsense_Rcal;
22046
22047 syn_tempprocsense_save =
22048 read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22049
22050 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22051 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22052 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22053 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22054 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22055 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22056 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22057 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22058 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22059
22060 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22061 &auxADC_Vmid_save);
22062 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22063 &auxADC_Av_save);
22064 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22065 &auxADC_rssi_ctrlL_save);
22066 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22067 &auxADC_rssi_ctrlH_save);
22068
22069 write_phy_reg(pi, 0x1ae, 0x0);
22070
22071 auxADC_rssi_ctrlL = 0x0;
22072 auxADC_rssi_ctrlH = 0x20;
22073 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22074 &auxADC_rssi_ctrlL);
22075 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22076 &auxADC_rssi_ctrlH);
22077
22078 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22079
22080 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22081 tempsense_Rcal | 0x01);
22082
22083 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22084 1, 0, 0,
22085 NPHY_REV7_RFCTRLOVERRIDE_ID2);
22086 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22087 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22088 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22089 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22090
22091 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22092 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22093 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22094 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22095 udelay(5);
22096 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22097 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22098 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22099 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22100 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22101 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22102 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22103 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22104 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22105 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22106
22107 auxADC_Vmid = 0xA3;
22108 auxADC_Av = 0x0;
22109 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22110 &auxADC_Vmid);
22111 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22112 &auxADC_Av);
22113
22114 udelay(3);
22115
22116 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22117 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22118 tempsense_Rcal | 0x03);
22119
22120 udelay(5);
22121 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22122
22123 auxADC_Av = 0x7;
22124 if (radio_temp[1] + radio_temp2[1] < -30) {
22125 auxADC_Vmid = 0x45;
22126 auxADC_Vl = 263;
22127 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22128 auxADC_Vmid = 0x200;
22129 auxADC_Vl = 467;
22130 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22131 auxADC_Vmid = 0x266;
22132 auxADC_Vl = 634;
22133 } else {
22134 auxADC_Vmid = 0x2D5;
22135 auxADC_Vl = 816;
22136 }
22137
22138 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22139 &auxADC_Vmid);
22140 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22141 &auxADC_Av);
22142
22143 udelay(3);
22144
22145 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22146 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22147 tempsense_Rcal | 0x01);
22148
22149 udelay(5);
22150 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22151
22152 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22153 syn_tempprocsense_save);
22154
22155 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22156 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22157 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22158 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22159 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22160 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22161 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22162 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22163 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22164
22165 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22166 &auxADC_Vmid_save);
22167 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22168 &auxADC_Av_save);
22169 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22170 &auxADC_rssi_ctrlL_save);
22171 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22172 &auxADC_rssi_ctrlH_save);
22173
22174 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22175 + 82 * (auxADC_Vl) - 28861 +
22176 128) / 256;
22177
22178 offset = (s16) pi->phy_tempsense_offset;
22179
22180 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22181 syn_tempprocsense_save =
22182 read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22183
22184 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22185 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22186 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22187 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22188 gpioSel_save = read_phy_reg(pi, 0xca);
22189
22190 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22191
22192 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22193 if (NREV_LT(pi->pubpi.phy_rev, 7))
22194 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22195
22196 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22197 if (NREV_GE(pi->pubpi.phy_rev, 7))
22198 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22199 else
22200 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22201
22202 radio_temp[0] =
22203 (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22204
22205 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22206 syn_tempprocsense_save);
22207
22208 write_phy_reg(pi, 0xca, gpioSel_save);
22209 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22210 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22211 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22212 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22213
22214 offset = (s16) pi->phy_tempsense_offset;
22215 } else {
22216
22217 pwrdet_rxtx_core1_save =
22218 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22219 pwrdet_rxtx_core2_save =
22220 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22221 core1_txrf_iqcal1_save =
22222 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22223 core1_txrf_iqcal2_save =
22224 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22225 core2_txrf_iqcal1_save =
22226 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22227 core2_txrf_iqcal2_save =
22228 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22229 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22230
22231 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22232 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22233 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22234 gpioSel_save = read_phy_reg(pi, 0xca);
22235
22236 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22237 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22238 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22239 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22240 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22241 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22242 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22243
22244 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22245 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22246
22247 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22248 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22249
22250 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22251 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22252
22253 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22254 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22255 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22256 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22257
22258 radio_temp[0] =
22259 (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22260 radio_temp[3]);
22261
22262 radio_temp[0] =
22263 (radio_temp[0] +
22264 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22265
22266 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22267
22268 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22269 pwrdet_rxtx_core1_save);
22270 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22271 pwrdet_rxtx_core2_save);
22272 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22273 core1_txrf_iqcal1_save);
22274 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22275 core2_txrf_iqcal1_save);
22276 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22277 core1_txrf_iqcal2_save);
22278 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22279 core2_txrf_iqcal2_save);
22280 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22281
22282 write_phy_reg(pi, 0xca, gpioSel_save);
22283 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22284 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22285 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22286 }
22287
22288 return (s16) radio_temp[0] + offset;
22289}
22290
22291static void
22292wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22293{
22294 u8 core;
22295
22296 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22297 if (rssi_type == NPHY_RSSI_SEL_NB) {
22298 if (core == PHY_CORE_0) {
22299 mod_radio_reg(pi,
22300 RADIO_2055_CORE1_B0_NBRSSI_VCM,
22301 RADIO_2055_NBRSSI_VCM_I_MASK,
22302 vcm_buf[2 *
22303 core] <<
22304 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22305 mod_radio_reg(pi,
22306 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22307 RADIO_2055_NBRSSI_VCM_Q_MASK,
22308 vcm_buf[2 * core +
22309 1] <<
22310 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22311 } else {
22312 mod_radio_reg(pi,
22313 RADIO_2055_CORE2_B0_NBRSSI_VCM,
22314 RADIO_2055_NBRSSI_VCM_I_MASK,
22315 vcm_buf[2 *
22316 core] <<
22317 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22318 mod_radio_reg(pi,
22319 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22320 RADIO_2055_NBRSSI_VCM_Q_MASK,
22321 vcm_buf[2 * core +
22322 1] <<
22323 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22324 }
22325 } else {
22326 if (core == PHY_CORE_0)
22327 mod_radio_reg(pi,
22328 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22329 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22330 vcm_buf[2 *
22331 core] <<
22332 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22333 else
22334 mod_radio_reg(pi,
22335 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22336 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22337 vcm_buf[2 *
22338 core] <<
22339 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22340 }
22341 }
22342}
22343
22344static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22345{
22346 u16 classif_state;
22347 u16 clip_state[2];
22348 u16 clip_off[] = { 0xffff, 0xffff };
22349 s32 target_code;
22350 u8 vcm, min_vcm;
22351 u8 vcm_final = 0;
22352 u8 result_idx;
22353 s32 poll_results[8][4] = {
22354 {0, 0, 0, 0},
22355 {0, 0, 0, 0},
22356 {0, 0, 0, 0},
22357 {0, 0, 0, 0},
22358 {0, 0, 0, 0},
22359 {0, 0, 0, 0},
22360 {0, 0, 0, 0},
22361 {0, 0, 0, 0}
22362 };
22363 s32 poll_result_core[4] = { 0, 0, 0, 0 };
22364 s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22365 s32 fine_digital_offset[4];
22366 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22367 s32 min_poll;
22368 u8 vcm_level_max;
22369 u8 core;
22370 u8 wb_cnt;
22371 u8 rssi_type;
22372 u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22373 u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22374 u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22375 u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22376 u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22377 u16 NPHY_RfctrlCmd_save;
22378 u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22379 u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22380 u8 rxcore_state;
22381 u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22382 u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22383 u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22384 u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22385
22386 NPHY_REV7_RfctrlOverride3_save =
22387 NPHY_REV7_RfctrlOverride4_save =
22388 NPHY_REV7_RfctrlOverride5_save =
22389 NPHY_REV7_RfctrlOverride6_save =
22390 NPHY_REV7_RfctrlMiscReg3_save =
22391 NPHY_REV7_RfctrlMiscReg4_save =
22392 NPHY_REV7_RfctrlMiscReg5_save =
22393 NPHY_REV7_RfctrlMiscReg6_save = 0;
22394
22395 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22396 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22397 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22398 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22399
22400 NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22401 NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22402 NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22403 NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22404 NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22405 NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22406 NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22407 NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22408 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22409 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22410 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22411 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22412 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22413 }
22414 NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22415 NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22416 NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22417 NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22418 NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22419 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22420 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22421 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22422 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22423 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22424 }
22425 NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22426 NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22427
22428 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22429 RADIO_MIMO_CORESEL_ALLRXTX);
22430 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22431 RADIO_MIMO_CORESEL_ALLRXTX);
22432
22433 if (NREV_GE(pi->pubpi.phy_rev, 7))
22434 wlc_phy_rfctrl_override_1tomany_nphy(
22435 pi,
22436 NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22437 0, 0, 0);
22438 else
22439 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22440
22441 if (NREV_GE(pi->pubpi.phy_rev, 7))
22442 wlc_phy_rfctrl_override_1tomany_nphy(
22443 pi,
22444 NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22445 1, 0, 0);
22446 else
22447 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22448
22449 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22450 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22451 1, 0, 0,
22452 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22453 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22454 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22455 } else {
22456 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22457 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22458 }
22459
22460 if (CHSPEC_IS5G(pi->radio_chanspec)) {
22461 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22462 wlc_phy_rfctrl_override_nphy_rev7(
22463 pi, (0x1 << 5),
22464 0, 0, 0,
22465 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22466 wlc_phy_rfctrl_override_nphy_rev7(
22467 pi, (0x1 << 4), 1, 0,
22468 0,
22469 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22470 } else {
22471 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22472 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22473 }
22474
22475 } else {
22476 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22477 wlc_phy_rfctrl_override_nphy_rev7(
22478 pi, (0x1 << 4),
22479 0, 0, 0,
22480 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22481 wlc_phy_rfctrl_override_nphy_rev7(
22482 pi, (0x1 << 5), 1, 0,
22483 0,
22484 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22485 } else {
22486 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22487 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22488 }
22489 }
22490
22491 rxcore_state = wlc_phy_rxcore_getstate_nphy(
22492 (struct brcms_phy_pub *) pi);
22493
22494 vcm_level_max = 8;
22495
22496 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22497
22498 if ((rxcore_state & (1 << core)) == 0)
22499 continue;
22500
22501 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22502 core ==
22503 PHY_CORE_0 ?
22504 RADIO_MIMO_CORESEL_CORE1 :
22505 RADIO_MIMO_CORESEL_CORE2,
22506 NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22507 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22508 core ==
22509 PHY_CORE_0 ?
22510 RADIO_MIMO_CORESEL_CORE1 :
22511 RADIO_MIMO_CORESEL_CORE2,
22512 NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22513
22514 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22515 if (NREV_GE(pi->pubpi.phy_rev, 7))
22516 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22517 RADIO_2057_NB_MASTER_CORE0 :
22518 RADIO_2057_NB_MASTER_CORE1,
22519 RADIO_2057_VCM_MASK, vcm);
22520 else
22521 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22522 ((core ==
22523 PHY_CORE_0) ? RADIO_2056_RX0 :
22524 RADIO_2056_RX1),
22525 RADIO_2056_VCM_MASK,
22526 vcm << RADIO_2056_RSSI_VCM_SHIFT);
22527
22528 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22529 &poll_results[vcm][0],
22530 NPHY_RSSICAL_NPOLL);
22531 }
22532
22533 for (result_idx = 0; result_idx < 4; result_idx++) {
22534 if ((core == result_idx / 2) &&
22535 (result_idx % 2 == 0)) {
22536
22537 min_d = NPHY_RSSICAL_MAXD;
22538 min_vcm = 0;
22539 min_poll =
22540 NPHY_RSSICAL_MAXREAD *
22541 NPHY_RSSICAL_NPOLL + 1;
22542 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22543 curr_d =
22544 poll_results[vcm][result_idx] *
22545 poll_results[vcm][result_idx] +
22546 poll_results[vcm][result_idx +
22547 1] *
22548 poll_results[vcm][result_idx +
22549 1];
22550 if (curr_d < min_d) {
22551 min_d = curr_d;
22552 min_vcm = vcm;
22553 }
22554 if (poll_results[vcm][result_idx] <
22555 min_poll)
22556 min_poll =
22557 poll_results[vcm]
22558 [result_idx];
22559 }
22560 vcm_final = min_vcm;
22561 poll_results_min[result_idx] = min_poll;
22562 }
22563 }
22564
22565 if (NREV_GE(pi->pubpi.phy_rev, 7))
22566 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22567 RADIO_2057_NB_MASTER_CORE0 :
22568 RADIO_2057_NB_MASTER_CORE1,
22569 RADIO_2057_VCM_MASK, vcm_final);
22570 else
22571 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22572 ((core ==
22573 PHY_CORE_0) ? RADIO_2056_RX0 :
22574 RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22575 vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22576
22577 for (result_idx = 0; result_idx < 4; result_idx++) {
22578 if (core == result_idx / 2) {
22579 fine_digital_offset[result_idx] =
22580 (NPHY_RSSICAL_NB_TARGET *
22581 NPHY_RSSICAL_NPOLL) -
22582 poll_results[vcm_final][result_idx];
22583 if (fine_digital_offset[result_idx] < 0) {
22584 fine_digital_offset[result_idx] =
22585 abs(fine_digital_offset
22586 [result_idx]);
22587 fine_digital_offset[result_idx] +=
22588 (NPHY_RSSICAL_NPOLL / 2);
22589 fine_digital_offset[result_idx] /=
22590 NPHY_RSSICAL_NPOLL;
22591 fine_digital_offset[result_idx] =
22592 -fine_digital_offset[
22593 result_idx];
22594 } else {
22595 fine_digital_offset[result_idx] +=
22596 (NPHY_RSSICAL_NPOLL / 2);
22597 fine_digital_offset[result_idx] /=
22598 NPHY_RSSICAL_NPOLL;
22599 }
22600
22601 if (poll_results_min[result_idx] ==
22602 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22603 fine_digital_offset[result_idx] =
22604 (NPHY_RSSICAL_NB_TARGET -
22605 NPHY_RSSICAL_MAXREAD - 1);
22606
22607 wlc_phy_scale_offset_rssi_nphy(
22608 pi, 0x0,
22609 (s8)
22610 fine_digital_offset
22611 [result_idx],
22612 (result_idx / 2 == 0) ?
22613 RADIO_MIMO_CORESEL_CORE1 :
22614 RADIO_MIMO_CORESEL_CORE2,
22615 (result_idx % 2 == 0) ?
22616 NPHY_RAIL_I : NPHY_RAIL_Q,
22617 NPHY_RSSI_SEL_NB);
22618 }
22619 }
22620
22621 }
22622
22623 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22624
22625 if ((rxcore_state & (1 << core)) == 0)
22626 continue;
22627
22628 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22629 if (wb_cnt == 0) {
22630 rssi_type = NPHY_RSSI_SEL_W1;
22631 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22632 } else {
22633 rssi_type = NPHY_RSSI_SEL_W2;
22634 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22635 }
22636
22637 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22638 core ==
22639 PHY_CORE_0 ?
22640 RADIO_MIMO_CORESEL_CORE1
22641 :
22642 RADIO_MIMO_CORESEL_CORE2,
22643 NPHY_RAIL_I, rssi_type);
22644 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22645 core ==
22646 PHY_CORE_0 ?
22647 RADIO_MIMO_CORESEL_CORE1
22648 :
22649 RADIO_MIMO_CORESEL_CORE2,
22650 NPHY_RAIL_Q, rssi_type);
22651
22652 wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22653 NPHY_RSSICAL_NPOLL);
22654
22655 for (result_idx = 0; result_idx < 4; result_idx++) {
22656 if (core == result_idx / 2) {
22657 fine_digital_offset[result_idx] =
22658 (target_code *
22659 NPHY_RSSICAL_NPOLL) -
22660 poll_result_core[result_idx];
22661 if (fine_digital_offset[result_idx] <
22662 0) {
22663 fine_digital_offset[result_idx]
22664 = abs(
22665 fine_digital_offset
22666 [result_idx]);
22667 fine_digital_offset[result_idx]
22668 += (NPHY_RSSICAL_NPOLL
22669 / 2);
22670 fine_digital_offset[result_idx]
22671 /= NPHY_RSSICAL_NPOLL;
22672 fine_digital_offset[result_idx]
22673 = -fine_digital_offset
22674 [result_idx];
22675 } else {
22676 fine_digital_offset[result_idx]
22677 += (NPHY_RSSICAL_NPOLL
22678 / 2);
22679 fine_digital_offset[result_idx]
22680 /= NPHY_RSSICAL_NPOLL;
22681 }
22682
22683 wlc_phy_scale_offset_rssi_nphy(
22684 pi, 0x0,
22685 (s8)
22686 fine_digital_offset
22687 [core *
22688 2],
22689 (core == PHY_CORE_0) ?
22690 RADIO_MIMO_CORESEL_CORE1 :
22691 RADIO_MIMO_CORESEL_CORE2,
22692 (result_idx % 2 == 0) ?
22693 NPHY_RAIL_I :
22694 NPHY_RAIL_Q,
22695 rssi_type);
22696 }
22697 }
22698
22699 }
22700 }
22701
22702 write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22703 write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22704
22705 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22706
22707 mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22708 mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22709 mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22710
22711 mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22712 mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22713 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22714
22715 write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22716 write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22717 write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22718 write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22719 write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22720 write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22721 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22722 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22723 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22724 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22725 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22726 }
22727 write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22728 write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22729 write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22730 write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22731 write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22732 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22733 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22734 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22735 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22736 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22737 }
22738 write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22739 write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22740
22741 if (CHSPEC_IS2G(pi->radio_chanspec)) {
22742 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22743 pi->rssical_cache.rssical_radio_regs_2G[0] =
22744 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22745 pi->rssical_cache.rssical_radio_regs_2G[1] =
22746 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22747 } else {
22748 pi->rssical_cache.rssical_radio_regs_2G[0] =
22749 read_radio_reg(pi,
22750 RADIO_2056_RX_RSSI_MISC |
22751 RADIO_2056_RX0);
22752 pi->rssical_cache.rssical_radio_regs_2G[1] =
22753 read_radio_reg(pi,
22754 RADIO_2056_RX_RSSI_MISC |
22755 RADIO_2056_RX1);
22756 }
22757
22758 pi->rssical_cache.rssical_phyregs_2G[0] =
22759 read_phy_reg(pi, 0x1a6);
22760 pi->rssical_cache.rssical_phyregs_2G[1] =
22761 read_phy_reg(pi, 0x1ac);
22762 pi->rssical_cache.rssical_phyregs_2G[2] =
22763 read_phy_reg(pi, 0x1b2);
22764 pi->rssical_cache.rssical_phyregs_2G[3] =
22765 read_phy_reg(pi, 0x1b8);
22766 pi->rssical_cache.rssical_phyregs_2G[4] =
22767 read_phy_reg(pi, 0x1a4);
22768 pi->rssical_cache.rssical_phyregs_2G[5] =
22769 read_phy_reg(pi, 0x1aa);
22770 pi->rssical_cache.rssical_phyregs_2G[6] =
22771 read_phy_reg(pi, 0x1b0);
22772 pi->rssical_cache.rssical_phyregs_2G[7] =
22773 read_phy_reg(pi, 0x1b6);
22774 pi->rssical_cache.rssical_phyregs_2G[8] =
22775 read_phy_reg(pi, 0x1a5);
22776 pi->rssical_cache.rssical_phyregs_2G[9] =
22777 read_phy_reg(pi, 0x1ab);
22778 pi->rssical_cache.rssical_phyregs_2G[10] =
22779 read_phy_reg(pi, 0x1b1);
22780 pi->rssical_cache.rssical_phyregs_2G[11] =
22781 read_phy_reg(pi, 0x1b7);
22782
22783 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22784 } else {
22785 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22786 pi->rssical_cache.rssical_radio_regs_5G[0] =
22787 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22788 pi->rssical_cache.rssical_radio_regs_5G[1] =
22789 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22790 } else {
22791 pi->rssical_cache.rssical_radio_regs_5G[0] =
22792 read_radio_reg(pi,
22793 RADIO_2056_RX_RSSI_MISC |
22794 RADIO_2056_RX0);
22795 pi->rssical_cache.rssical_radio_regs_5G[1] =
22796 read_radio_reg(pi,
22797 RADIO_2056_RX_RSSI_MISC |
22798 RADIO_2056_RX1);
22799 }
22800
22801 pi->rssical_cache.rssical_phyregs_5G[0] =
22802 read_phy_reg(pi, 0x1a6);
22803 pi->rssical_cache.rssical_phyregs_5G[1] =
22804 read_phy_reg(pi, 0x1ac);
22805 pi->rssical_cache.rssical_phyregs_5G[2] =
22806 read_phy_reg(pi, 0x1b2);
22807 pi->rssical_cache.rssical_phyregs_5G[3] =
22808 read_phy_reg(pi, 0x1b8);
22809 pi->rssical_cache.rssical_phyregs_5G[4] =
22810 read_phy_reg(pi, 0x1a4);
22811 pi->rssical_cache.rssical_phyregs_5G[5] =
22812 read_phy_reg(pi, 0x1aa);
22813 pi->rssical_cache.rssical_phyregs_5G[6] =
22814 read_phy_reg(pi, 0x1b0);
22815 pi->rssical_cache.rssical_phyregs_5G[7] =
22816 read_phy_reg(pi, 0x1b6);
22817 pi->rssical_cache.rssical_phyregs_5G[8] =
22818 read_phy_reg(pi, 0x1a5);
22819 pi->rssical_cache.rssical_phyregs_5G[9] =
22820 read_phy_reg(pi, 0x1ab);
22821 pi->rssical_cache.rssical_phyregs_5G[10] =
22822 read_phy_reg(pi, 0x1b1);
22823 pi->rssical_cache.rssical_phyregs_5G[11] =
22824 read_phy_reg(pi, 0x1b7);
22825
22826 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22827 }
22828
22829 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22830 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22831}
22832
22833static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22834{
22835 s32 target_code;
22836 u16 classif_state;
22837 u16 clip_state[2];
22838 u16 rssi_ctrl_state[2], pd_state[2];
22839 u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22840 u16 rfctrlintc_override_val;
22841 u16 clip_off[] = { 0xffff, 0xffff };
22842 u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22843 u8 vcm, min_vcm, vcm_tmp[4];
22844 u8 vcm_final[4] = { 0, 0, 0, 0 };
22845 u8 result_idx, ctr;
22846 s32 poll_results[4][4] = {
22847 {0, 0, 0, 0},
22848 {0, 0, 0, 0},
22849 {0, 0, 0, 0},
22850 {0, 0, 0, 0}
22851 };
22852 s32 poll_miniq[4][2] = {
22853 {0, 0},
22854 {0, 0},
22855 {0, 0},
22856 {0, 0}
22857 };
22858 s32 min_d, curr_d;
22859 s32 fine_digital_offset[4];
22860 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22861 s32 min_poll;
22862
22863 switch (rssi_type) {
22864 case NPHY_RSSI_SEL_NB:
22865 target_code = NPHY_RSSICAL_NB_TARGET;
22866 break;
22867 case NPHY_RSSI_SEL_W1:
22868 target_code = NPHY_RSSICAL_W1_TARGET;
22869 break;
22870 case NPHY_RSSI_SEL_W2:
22871 target_code = NPHY_RSSICAL_W2_TARGET;
22872 break;
22873 default:
22874 return;
22875 break;
22876 }
22877
22878 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22879 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22880 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22881 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22882
22883 rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22884 rfctrlintc_override_val =
22885 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22886
22887 rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22888 rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22889 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22890 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22891
22892 rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22893 rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22894 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22895 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22896
22897 pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22898 RADIO_2055_WBRSSI_G2_PD;
22899 pd_state[0] =
22900 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22901 pd_state[1] =
22902 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22903 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22904 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22905 rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22906 RADIO_2055_WBRSSI_G2_SEL;
22907 rssi_ctrl_state[0] =
22908 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22909 rssi_ctrl_state[1] =
22910 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22911 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22912
22913 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22914 NPHY_RAIL_I, rssi_type);
22915 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22916 NPHY_RAIL_Q, rssi_type);
22917
22918 for (vcm = 0; vcm < 4; vcm++) {
22919
22920 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22921 if (rssi_type != NPHY_RSSI_SEL_W2)
22922 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22923
22924 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22925 NPHY_RSSICAL_NPOLL);
22926
22927 if ((rssi_type == NPHY_RSSI_SEL_W1)
22928 || (rssi_type == NPHY_RSSI_SEL_W2)) {
22929 for (ctr = 0; ctr < 2; ctr++)
22930 poll_miniq[vcm][ctr] =
22931 min(poll_results[vcm][ctr * 2 + 0],
22932 poll_results[vcm][ctr * 2 + 1]);
22933 }
22934 }
22935
22936 for (result_idx = 0; result_idx < 4; result_idx++) {
22937 min_d = NPHY_RSSICAL_MAXD;
22938 min_vcm = 0;
22939 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22940 for (vcm = 0; vcm < 4; vcm++) {
22941 curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22942 poll_results[vcm][result_idx] :
22943 poll_miniq[vcm][result_idx / 2]) -
22944 (target_code * NPHY_RSSICAL_NPOLL));
22945 if (curr_d < min_d) {
22946 min_d = curr_d;
22947 min_vcm = vcm;
22948 }
22949 if (poll_results[vcm][result_idx] < min_poll)
22950 min_poll = poll_results[vcm][result_idx];
22951 }
22952 vcm_final[result_idx] = min_vcm;
22953 poll_results_min[result_idx] = min_poll;
22954 }
22955
22956 if (rssi_type != NPHY_RSSI_SEL_W2)
22957 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22958
22959 for (result_idx = 0; result_idx < 4; result_idx++) {
22960 fine_digital_offset[result_idx] =
22961 (target_code * NPHY_RSSICAL_NPOLL) -
22962 poll_results[vcm_final[result_idx]][result_idx];
22963 if (fine_digital_offset[result_idx] < 0) {
22964 fine_digital_offset[result_idx] =
22965 abs(fine_digital_offset[result_idx]);
22966 fine_digital_offset[result_idx] +=
22967 (NPHY_RSSICAL_NPOLL / 2);
22968 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22969 fine_digital_offset[result_idx] =
22970 -fine_digital_offset[result_idx];
22971 } else {
22972 fine_digital_offset[result_idx] +=
22973 (NPHY_RSSICAL_NPOLL / 2);
22974 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22975 }
22976
22977 if (poll_results_min[result_idx] ==
22978 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22979 fine_digital_offset[result_idx] =
22980 (target_code - NPHY_RSSICAL_MAXREAD - 1);
22981
22982 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22983 (s8)
22984 fine_digital_offset[result_idx],
22985 (result_idx / 2 ==
22986 0) ? RADIO_MIMO_CORESEL_CORE1 :
22987 RADIO_MIMO_CORESEL_CORE2,
22988 (result_idx % 2 ==
22989 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22990 rssi_type);
22991 }
22992
22993 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22994 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22995 if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22996 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22997 NPHY_RSSI_SEL_NB);
22998 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22999 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23000 NPHY_RSSI_SEL_W1);
23001 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23002 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23003 NPHY_RSSI_SEL_W2);
23004 else
23005 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23006 NPHY_RSSI_SEL_W2);
23007 if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23008 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23009 NPHY_RSSI_SEL_NB);
23010 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23011 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23012 NPHY_RSSI_SEL_W1);
23013 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23014 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23015 NPHY_RSSI_SEL_W2);
23016 else
23017 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23018 NPHY_RSSI_SEL_W2);
23019
23020 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23021
23022 write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23023 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23024 write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23025 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23026
23027 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23028 wlc_phy_clip_det_nphy(pi, 1, clip_state);
23029
23030 wlc_phy_resetcca_nphy(pi);
23031}
23032
23033void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23034{
23035 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23036 wlc_phy_rssi_cal_nphy_rev3(pi);
23037 } else {
23038 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23039 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23040 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23041 }
23042}
23043
23044int
23045wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23046{
23047 s16 rxpwr, rxpwr0, rxpwr1;
23048 s16 phyRx0_l, phyRx2_l;
23049
23050 rxpwr = 0;
23051 rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23052 rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23053
23054 if (rxpwr0 > 127)
23055 rxpwr0 -= 256;
23056 if (rxpwr1 > 127)
23057 rxpwr1 -= 256;
23058
23059 phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23060 phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23061 if (phyRx2_l > 127)
23062 phyRx2_l -= 256;
23063
23064 if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23065 rxpwr0 = rxpwr1;
23066 rxpwr1 = phyRx2_l;
23067 }
23068
23069 if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23070 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23071 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23072 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23073 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23074 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23075
23076 return rxpwr;
23077}
23078
23079static void
23080wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23081 u16 num_samps)
23082{
23083 u16 t;
23084 u32 *data_buf = NULL;
23085
23086 data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23087 if (data_buf == NULL)
23088 return;
23089
23090 if (pi->phyhang_avoid)
23091 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23092
23093 for (t = 0; t < num_samps; t++)
23094 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23095 (((unsigned int)tone_buf[t].q) & 0x3ff);
23096 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23097 data_buf);
23098
23099 kfree(data_buf);
23100
23101 if (pi->phyhang_avoid)
23102 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23103}
23104
23105static u16
23106wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23107 u8 dac_test_mode)
23108{
23109 u8 phy_bw, is_phybw40;
23110 u16 num_samps, t, spur;
23111 s32 theta = 0, rot = 0;
23112 u32 tbl_len;
23113 struct cordic_iq *tone_buf = NULL;
23114
23115 is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23116 phy_bw = (is_phybw40 == 1) ? 40 : 20;
23117 tbl_len = (phy_bw << 3);
23118
23119 if (dac_test_mode == 1) {
23120 spur = read_phy_reg(pi, 0x01);
23121 spur = (spur >> 15) & 1;
23122 phy_bw = (spur == 1) ? 82 : 80;
23123 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23124
23125 tbl_len = (phy_bw << 1);
23126 }
23127
23128 tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23129 if (tone_buf == NULL)
23130 return 0;
23131
23132 num_samps = (u16) tbl_len;
23133 rot = ((f_kHz * 36) / phy_bw) / 100;
23134 theta = 0;
23135
23136 for (t = 0; t < num_samps; t++) {
23137
23138 tone_buf[t] = cordic_calc_iq(theta);
23139
23140 theta += rot;
23141
23142 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23143 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23144 }
23145
23146 wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23147
23148 kfree(tone_buf);
23149
23150 return num_samps;
23151}
23152
23153static void
23154wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23155 u16 wait, u8 iqmode, u8 dac_test_mode,
23156 bool modify_bbmult)
23157{
23158 u16 bb_mult;
23159 u8 phy_bw, sample_cmd;
23160 u16 orig_RfseqCoreActv;
23161 u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23162 lpf_bw_ctl_miscreg4;
23163
23164 if (pi->phyhang_avoid)
23165 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23166
23167 phy_bw = 20;
23168 if (CHSPEC_IS40(pi->radio_chanspec))
23169 phy_bw = 40;
23170
23171 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23172
23173 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23174 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23175 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23176 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23177 (0x7 << 8);
23178 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23179 (0x7 << 8);
23180 } else {
23181 wlc_phy_rfctrl_override_nphy_rev7(
23182 pi,
23183 (0x1 << 7),
23184 wlc_phy_read_lpf_bw_ctl_nphy
23185 (pi,
23186 0), 0, 0,
23187 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23188
23189 pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23190
23191 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23192 (0x7 << 8);
23193 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23194 (0x7 << 8);
23195 }
23196 }
23197
23198 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23199
23200 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23201 &bb_mult);
23202 pi->nphy_bb_mult_save =
23203 BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23204 }
23205
23206 if (modify_bbmult) {
23207 bb_mult = (phy_bw == 20) ? 100 : 71;
23208 bb_mult = (bb_mult << 8) + bb_mult;
23209 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23210 &bb_mult);
23211 }
23212
23213 if (pi->phyhang_avoid)
23214 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23215
23216 write_phy_reg(pi, 0xc6, num_samps - 1);
23217
23218 if (loops != 0xffff)
23219 write_phy_reg(pi, 0xc4, loops - 1);
23220 else
23221 write_phy_reg(pi, 0xc4, loops);
23222
23223 write_phy_reg(pi, 0xc5, wait);
23224
23225 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23226 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23227 if (iqmode) {
23228
23229 and_phy_reg(pi, 0xc2, 0x7FFF);
23230
23231 or_phy_reg(pi, 0xc2, 0x8000);
23232 } else {
23233
23234 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23235 write_phy_reg(pi, 0xc3, sample_cmd);
23236 }
23237
23238 SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23239
23240 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23241}
23242
23243int
23244wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23245 u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23246{
23247 u16 num_samps;
23248 u16 loops = 0xffff;
23249 u16 wait = 0;
23250
23251 num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23252 dac_test_mode);
23253 if (num_samps == 0)
23254 return -EBADE;
23255
23256 wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23257 dac_test_mode, modify_bbmult);
23258
23259 return 0;
23260}
23261
23262void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23263{
23264 u16 playback_status;
23265 u16 bb_mult;
23266
23267 if (pi->phyhang_avoid)
23268 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23269
23270 playback_status = read_phy_reg(pi, 0xc7);
23271 if (playback_status & 0x1)
23272 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23273 else if (playback_status & 0x2)
23274 and_phy_reg(pi, 0xc2,
23275 (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23276
23277 and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23278
23279 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23280
23281 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23282 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23283 &bb_mult);
23284
23285 pi->nphy_bb_mult_save = 0;
23286 }
23287
23288 if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23289 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23290 wlc_phy_rfctrl_override_nphy_rev7(
23291 pi,
23292 (0x1 << 7),
23293 0, 0, 1,
23294 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23295 pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23296 }
23297 }
23298
23299 if (pi->phyhang_avoid)
23300 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23301}
23302
23303static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23304{
23305 u32 *tx_pwrctrl_tbl = NULL;
23306 uint phyrev = pi->pubpi.phy_rev;
23307
23308 if (PHY_IPA(pi)) {
23309 tx_pwrctrl_tbl =
23310 wlc_phy_get_ipa_gaintbl_nphy(pi);
23311 } else {
23312 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23313 if (NREV_IS(phyrev, 3))
23314 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23315 else if (NREV_IS(phyrev, 4))
23316 tx_pwrctrl_tbl =
23317 (pi->srom_fem5g.extpagain == 3) ?
23318 nphy_tpc_5GHz_txgain_HiPwrEPA :
23319 nphy_tpc_5GHz_txgain_rev4;
23320 else
23321 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23322 } else {
23323 if (NREV_GE(phyrev, 7)) {
23324 if (pi->pubpi.radiorev == 3)
23325 tx_pwrctrl_tbl =
23326 nphy_tpc_txgain_epa_2057rev3;
23327 else if (pi->pubpi.radiorev == 5)
23328 tx_pwrctrl_tbl =
23329 nphy_tpc_txgain_epa_2057rev5;
23330 } else {
23331 if (NREV_GE(phyrev, 5) &&
23332 (pi->srom_fem2g.extpagain == 3))
23333 tx_pwrctrl_tbl =
23334 nphy_tpc_txgain_HiPwrEPA;
23335 else
23336 tx_pwrctrl_tbl =
23337 nphy_tpc_txgain_rev3;
23338 }
23339 }
23340 }
23341 return tx_pwrctrl_tbl;
23342}
23343
23344struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23345{
23346 u16 base_idx[2], curr_gain[2];
23347 u8 core_no;
23348 struct nphy_txgains target_gain;
23349 u32 *tx_pwrctrl_tbl = NULL;
23350
23351 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23352 if (pi->phyhang_avoid)
23353 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23354
23355 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23356 curr_gain);
23357
23358 if (pi->phyhang_avoid)
23359 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23360
23361 for (core_no = 0; core_no < 2; core_no++) {
23362 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23363 target_gain.ipa[core_no] =
23364 curr_gain[core_no] & 0x0007;
23365 target_gain.pad[core_no] =
23366 ((curr_gain[core_no] & 0x00F8) >> 3);
23367 target_gain.pga[core_no] =
23368 ((curr_gain[core_no] & 0x0F00) >> 8);
23369 target_gain.txgm[core_no] =
23370 ((curr_gain[core_no] & 0x7000) >> 12);
23371 target_gain.txlpf[core_no] =
23372 ((curr_gain[core_no] & 0x8000) >> 15);
23373 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23374 target_gain.ipa[core_no] =
23375 curr_gain[core_no] & 0x000F;
23376 target_gain.pad[core_no] =
23377 ((curr_gain[core_no] & 0x00F0) >> 4);
23378 target_gain.pga[core_no] =
23379 ((curr_gain[core_no] & 0x0F00) >> 8);
23380 target_gain.txgm[core_no] =
23381 ((curr_gain[core_no] & 0x7000) >> 12);
23382 } else {
23383 target_gain.ipa[core_no] =
23384 curr_gain[core_no] & 0x0003;
23385 target_gain.pad[core_no] =
23386 ((curr_gain[core_no] & 0x000C) >> 2);
23387 target_gain.pga[core_no] =
23388 ((curr_gain[core_no] & 0x0070) >> 4);
23389 target_gain.txgm[core_no] =
23390 ((curr_gain[core_no] & 0x0380) >> 7);
23391 }
23392 }
23393 } else {
23394 uint phyrev = pi->pubpi.phy_rev;
23395
23396 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23397 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23398 for (core_no = 0; core_no < 2; core_no++) {
23399 if (NREV_GE(phyrev, 3)) {
23400 tx_pwrctrl_tbl =
23401 brcms_phy_get_tx_pwrctrl_tbl(pi);
23402 if (NREV_GE(phyrev, 7)) {
23403 target_gain.ipa[core_no] =
23404 (tx_pwrctrl_tbl
23405 [base_idx[core_no]]
23406 >> 16) & 0x7;
23407 target_gain.pad[core_no] =
23408 (tx_pwrctrl_tbl
23409 [base_idx[core_no]]
23410 >> 19) & 0x1f;
23411 target_gain.pga[core_no] =
23412 (tx_pwrctrl_tbl
23413 [base_idx[core_no]]
23414 >> 24) & 0xf;
23415 target_gain.txgm[core_no] =
23416 (tx_pwrctrl_tbl
23417 [base_idx[core_no]]
23418 >> 28) & 0x7;
23419 target_gain.txlpf[core_no] =
23420 (tx_pwrctrl_tbl
23421 [base_idx[core_no]]
23422 >> 31) & 0x1;
23423 } else {
23424 target_gain.ipa[core_no] =
23425 (tx_pwrctrl_tbl
23426 [base_idx[core_no]]
23427 >> 16) & 0xf;
23428 target_gain.pad[core_no] =
23429 (tx_pwrctrl_tbl
23430 [base_idx[core_no]]
23431 >> 20) & 0xf;
23432 target_gain.pga[core_no] =
23433 (tx_pwrctrl_tbl
23434 [base_idx[core_no]]
23435 >> 24) & 0xf;
23436 target_gain.txgm[core_no] =
23437 (tx_pwrctrl_tbl
23438 [base_idx[core_no]]
23439 >> 28) & 0x7;
23440 }
23441 } else {
23442 target_gain.ipa[core_no] =
23443 (nphy_tpc_txgain[base_idx[core_no]] >>
23444 16) & 0x3;
23445 target_gain.pad[core_no] =
23446 (nphy_tpc_txgain[base_idx[core_no]] >>
23447 18) & 0x3;
23448 target_gain.pga[core_no] =
23449 (nphy_tpc_txgain[base_idx[core_no]] >>
23450 20) & 0x7;
23451 target_gain.txgm[core_no] =
23452 (nphy_tpc_txgain[base_idx[core_no]] >>
23453 23) & 0x7;
23454 }
23455 }
23456 }
23457
23458 return target_gain;
23459}
23460
23461static void
23462wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23463 struct nphy_txgains target_gain,
23464 struct nphy_iqcal_params *params)
23465{
23466 u8 k;
23467 int idx;
23468 u16 gain_index;
23469 u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23470
23471 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23472 if (NREV_GE(pi->pubpi.phy_rev, 7))
23473 params->txlpf = target_gain.txlpf[core_no];
23474
23475 params->txgm = target_gain.txgm[core_no];
23476 params->pga = target_gain.pga[core_no];
23477 params->pad = target_gain.pad[core_no];
23478 params->ipa = target_gain.ipa[core_no];
23479 if (NREV_GE(pi->pubpi.phy_rev, 7))
23480 params->cal_gain =
23481 ((params->txlpf << 15) | (params->txgm << 12) |
23482 (params->pga << 8) |
23483 (params->pad << 3) | (params->ipa));
23484 else
23485 params->cal_gain =
23486 ((params->txgm << 12) | (params->pga << 8) |
23487 (params->pad << 4) | (params->ipa));
23488
23489 params->ncorr[0] = 0x79;
23490 params->ncorr[1] = 0x79;
23491 params->ncorr[2] = 0x79;
23492 params->ncorr[3] = 0x79;
23493 params->ncorr[4] = 0x79;
23494 } else {
23495
23496 gain_index = ((target_gain.pad[core_no] << 0) |
23497 (target_gain.pga[core_no] << 4) |
23498 (target_gain.txgm[core_no] << 8));
23499
23500 idx = -1;
23501 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23502 if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23503 gain_index) {
23504 idx = k;
23505 break;
23506 }
23507 }
23508
23509 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23510 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23511 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23512 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23513 (params->pad << 2));
23514 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23515 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23516 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23517 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23518 }
23519}
23520
23521static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23522{
23523 u16 jtag_core, core;
23524
23525 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23526
23527 for (core = 0; core <= 1; core++) {
23528
23529 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23530 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23531 TX_SSI_MASTER);
23532
23533 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23534 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23535 IQCAL_VCM_HG);
23536
23537 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23538 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23539 IQCAL_IDAC);
23540
23541 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23542 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23543 TSSI_VCM);
23544
23545 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23546
23547 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23548 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23549 TX_SSI_MUX);
23550
23551 if (pi->pubpi.radiorev != 5)
23552 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23553 READ_RADIO_REG3(pi, RADIO_2057, TX,
23554 core,
23555 TSSIA);
23556
23557 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23558 READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23559
23560 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23561 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23562 TSSI_MISC1);
23563
23564 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23565 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23566 TX_SSI_MASTER, 0x0a);
23567 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23568 IQCAL_VCM_HG, 0x43);
23569 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23570 IQCAL_IDAC, 0x55);
23571 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23572 TSSI_VCM, 0x00);
23573 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23574 TSSIG, 0x00);
23575 if (pi->use_int_tx_iqlo_cal_nphy) {
23576 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23577 core, TX_SSI_MUX, 0x4);
23578 if (!(pi->
23579 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23580 WRITE_RADIO_REG3(pi, RADIO_2057,
23581 TX, core,
23582 TSSIA, 0x31);
23583 else
23584 WRITE_RADIO_REG3(pi, RADIO_2057,
23585 TX, core,
23586 TSSIA, 0x21);
23587 }
23588 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23589 TSSI_MISC1, 0x00);
23590 } else {
23591 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23592 TX_SSI_MASTER, 0x06);
23593 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23594 IQCAL_VCM_HG, 0x43);
23595 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23596 IQCAL_IDAC, 0x55);
23597 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23598 TSSI_VCM, 0x00);
23599
23600 if (pi->pubpi.radiorev != 5)
23601 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23602 core, TSSIA, 0x00);
23603 if (pi->use_int_tx_iqlo_cal_nphy) {
23604 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23605 core, TX_SSI_MUX,
23606 0x06);
23607 if (!(pi->
23608 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23609 WRITE_RADIO_REG3(pi, RADIO_2057,
23610 TX, core,
23611 TSSIG, 0x31);
23612 else
23613 WRITE_RADIO_REG3(pi, RADIO_2057,
23614 TX, core,
23615 TSSIG, 0x21);
23616 }
23617 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23618 TSSI_MISC1, 0x00);
23619 }
23620 }
23621 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23622
23623 for (core = 0; core <= 1; core++) {
23624 jtag_core =
23625 (core ==
23626 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23627
23628 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23629 read_radio_reg(pi,
23630 RADIO_2056_TX_TX_SSI_MASTER |
23631 jtag_core);
23632
23633 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23634 read_radio_reg(pi,
23635 RADIO_2056_TX_IQCAL_VCM_HG |
23636 jtag_core);
23637
23638 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23639 read_radio_reg(pi,
23640 RADIO_2056_TX_IQCAL_IDAC |
23641 jtag_core);
23642
23643 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23644 read_radio_reg(
23645 pi,
23646 RADIO_2056_TX_TSSI_VCM |
23647 jtag_core);
23648
23649 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23650 read_radio_reg(pi,
23651 RADIO_2056_TX_TX_AMP_DET |
23652 jtag_core);
23653
23654 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23655 read_radio_reg(pi,
23656 RADIO_2056_TX_TX_SSI_MUX |
23657 jtag_core);
23658
23659 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23660 read_radio_reg(pi,
23661 RADIO_2056_TX_TSSIA | jtag_core);
23662
23663 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23664 read_radio_reg(pi,
23665 RADIO_2056_TX_TSSIG | jtag_core);
23666
23667 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23668 read_radio_reg(pi,
23669 RADIO_2056_TX_TSSI_MISC1 |
23670 jtag_core);
23671
23672 pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23673 read_radio_reg(pi,
23674 RADIO_2056_TX_TSSI_MISC2 |
23675 jtag_core);
23676
23677 pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23678 read_radio_reg(pi,
23679 RADIO_2056_TX_TSSI_MISC3 |
23680 jtag_core);
23681
23682 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23683 write_radio_reg(pi,
23684 RADIO_2056_TX_TX_SSI_MASTER |
23685 jtag_core, 0x0a);
23686 write_radio_reg(pi,
23687 RADIO_2056_TX_IQCAL_VCM_HG |
23688 jtag_core, 0x40);
23689 write_radio_reg(pi,
23690 RADIO_2056_TX_IQCAL_IDAC |
23691 jtag_core, 0x55);
23692 write_radio_reg(pi,
23693 RADIO_2056_TX_TSSI_VCM |
23694 jtag_core, 0x00);
23695 write_radio_reg(pi,
23696 RADIO_2056_TX_TX_AMP_DET |
23697 jtag_core, 0x00);
23698
23699 if (PHY_IPA(pi)) {
23700 write_radio_reg(
23701 pi,
23702 RADIO_2056_TX_TX_SSI_MUX
23703 | jtag_core, 0x4);
23704 write_radio_reg(pi,
23705 RADIO_2056_TX_TSSIA |
23706 jtag_core, 0x1);
23707 } else {
23708 write_radio_reg(
23709 pi,
23710 RADIO_2056_TX_TX_SSI_MUX
23711 | jtag_core, 0x00);
23712 write_radio_reg(pi,
23713 RADIO_2056_TX_TSSIA |
23714 jtag_core, 0x2f);
23715 }
23716 write_radio_reg(pi,
23717 RADIO_2056_TX_TSSIG | jtag_core,
23718 0x00);
23719 write_radio_reg(pi,
23720 RADIO_2056_TX_TSSI_MISC1 |
23721 jtag_core, 0x00);
23722
23723 write_radio_reg(pi,
23724 RADIO_2056_TX_TSSI_MISC2 |
23725 jtag_core, 0x00);
23726 write_radio_reg(pi,
23727 RADIO_2056_TX_TSSI_MISC3 |
23728 jtag_core, 0x00);
23729 } else {
23730 write_radio_reg(pi,
23731 RADIO_2056_TX_TX_SSI_MASTER |
23732 jtag_core, 0x06);
23733 write_radio_reg(pi,
23734 RADIO_2056_TX_IQCAL_VCM_HG |
23735 jtag_core, 0x40);
23736 write_radio_reg(pi,
23737 RADIO_2056_TX_IQCAL_IDAC |
23738 jtag_core, 0x55);
23739 write_radio_reg(pi,
23740 RADIO_2056_TX_TSSI_VCM |
23741 jtag_core, 0x00);
23742 write_radio_reg(pi,
23743 RADIO_2056_TX_TX_AMP_DET |
23744 jtag_core, 0x00);
23745 write_radio_reg(pi,
23746 RADIO_2056_TX_TSSIA | jtag_core,
23747 0x00);
23748
23749 if (PHY_IPA(pi)) {
23750
23751 write_radio_reg(
23752 pi,
23753 RADIO_2056_TX_TX_SSI_MUX
23754 | jtag_core, 0x06);
23755 if (NREV_LT(pi->pubpi.phy_rev, 5))
23756 write_radio_reg(
23757 pi,
23758 RADIO_2056_TX_TSSIG
23759 | jtag_core,
23760 0x11);
23761 else
23762 write_radio_reg(
23763 pi,
23764 RADIO_2056_TX_TSSIG
23765 | jtag_core,
23766 0x1);
23767 } else {
23768 write_radio_reg(
23769 pi,
23770 RADIO_2056_TX_TX_SSI_MUX
23771 | jtag_core, 0x00);
23772 write_radio_reg(pi,
23773 RADIO_2056_TX_TSSIG |
23774 jtag_core, 0x20);
23775 }
23776
23777 write_radio_reg(pi,
23778 RADIO_2056_TX_TSSI_MISC1 |
23779 jtag_core, 0x00);
23780 write_radio_reg(pi,
23781 RADIO_2056_TX_TSSI_MISC2 |
23782 jtag_core, 0x00);
23783 write_radio_reg(pi,
23784 RADIO_2056_TX_TSSI_MISC3 |
23785 jtag_core, 0x00);
23786 }
23787 }
23788 } else {
23789
23790 pi->tx_rx_cal_radio_saveregs[0] =
23791 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23792 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23793 pi->tx_rx_cal_radio_saveregs[1] =
23794 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23795 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23796
23797 pi->tx_rx_cal_radio_saveregs[2] =
23798 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23799 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23800 pi->tx_rx_cal_radio_saveregs[3] =
23801 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23802 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23803
23804 pi->tx_rx_cal_radio_saveregs[4] =
23805 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23806 pi->tx_rx_cal_radio_saveregs[5] =
23807 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23808
23809 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23810 0) {
23811
23812 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23813 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23814 } else {
23815
23816 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23817 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23818 }
23819
23820 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23821
23822 or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23823 or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23824 } else {
23825
23826 and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23827 and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23828 }
23829 }
23830}
23831
23832static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23833{
23834 u16 jtag_core, core;
23835
23836 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23837 for (core = 0; core <= 1; core++) {
23838
23839 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23840 TX_SSI_MASTER,
23841 pi->
23842 tx_rx_cal_radio_saveregs[(core * 11) +
23843 0]);
23844
23845 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23846 pi->
23847 tx_rx_cal_radio_saveregs[(core * 11) +
23848 1]);
23849
23850 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23851 pi->
23852 tx_rx_cal_radio_saveregs[(core * 11) +
23853 2]);
23854
23855 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23856 pi->
23857 tx_rx_cal_radio_saveregs[(core * 11) +
23858 3]);
23859
23860 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23861 pi->
23862 tx_rx_cal_radio_saveregs[(core * 11) +
23863 5]);
23864
23865 if (pi->pubpi.radiorev != 5)
23866 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23867 TSSIA,
23868 pi->tx_rx_cal_radio_saveregs
23869 [(core * 11) + 6]);
23870
23871 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23872 pi->
23873 tx_rx_cal_radio_saveregs[(core * 11) +
23874 7]);
23875
23876 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23877 pi->
23878 tx_rx_cal_radio_saveregs[(core * 11) +
23879 8]);
23880 }
23881 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23882 for (core = 0; core <= 1; core++) {
23883 jtag_core = (core == PHY_CORE_0) ?
23884 RADIO_2056_TX0 : RADIO_2056_TX1;
23885
23886 write_radio_reg(pi,
23887 RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23888 pi->
23889 tx_rx_cal_radio_saveregs[(core * 11) +
23890 0]);
23891
23892 write_radio_reg(pi,
23893 RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23894 pi->
23895 tx_rx_cal_radio_saveregs[(core * 11) +
23896 1]);
23897
23898 write_radio_reg(pi,
23899 RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23900 pi->
23901 tx_rx_cal_radio_saveregs[(core * 11) +
23902 2]);
23903
23904 write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23905 pi->
23906 tx_rx_cal_radio_saveregs[(core * 11) +
23907 3]);
23908
23909 write_radio_reg(pi,
23910 RADIO_2056_TX_TX_AMP_DET | jtag_core,
23911 pi->
23912 tx_rx_cal_radio_saveregs[(core * 11) +
23913 4]);
23914
23915 write_radio_reg(pi,
23916 RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23917 pi->
23918 tx_rx_cal_radio_saveregs[(core * 11) +
23919 5]);
23920
23921 write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23922 pi->
23923 tx_rx_cal_radio_saveregs[(core * 11) +
23924 6]);
23925
23926 write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23927 pi->
23928 tx_rx_cal_radio_saveregs[(core * 11) +
23929 7]);
23930
23931 write_radio_reg(pi,
23932 RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23933 pi->
23934 tx_rx_cal_radio_saveregs[(core * 11) +
23935 8]);
23936
23937 write_radio_reg(pi,
23938 RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23939 pi->
23940 tx_rx_cal_radio_saveregs[(core * 11) +
23941 9]);
23942
23943 write_radio_reg(pi,
23944 RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23945 pi->
23946 tx_rx_cal_radio_saveregs[(core * 11) +
23947 10]);
23948 }
23949 } else {
23950
23951 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23952 pi->tx_rx_cal_radio_saveregs[0]);
23953 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23954 pi->tx_rx_cal_radio_saveregs[1]);
23955 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23956 pi->tx_rx_cal_radio_saveregs[2]);
23957 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23958 pi->tx_rx_cal_radio_saveregs[3]);
23959 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23960 pi->tx_rx_cal_radio_saveregs[4]);
23961 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23962 pi->tx_rx_cal_radio_saveregs[5]);
23963 }
23964}
23965
23966static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23967{
23968 u16 val, mask;
23969
23970 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23971 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23972 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23973
23974 mask = ((0x3 << 8) | (0x3 << 10));
23975 val = (0x2 << 8);
23976 val |= (0x2 << 10);
23977 mod_phy_reg(pi, 0xa6, mask, val);
23978 mod_phy_reg(pi, 0xa7, mask, val);
23979
23980 val = read_phy_reg(pi, 0x8f);
23981 pi->tx_rx_cal_phy_saveregs[2] = val;
23982 val |= ((0x1 << 9) | (0x1 << 10));
23983 write_phy_reg(pi, 0x8f, val);
23984
23985 val = read_phy_reg(pi, 0xa5);
23986 pi->tx_rx_cal_phy_saveregs[3] = val;
23987 val |= ((0x1 << 9) | (0x1 << 10));
23988 write_phy_reg(pi, 0xa5, val);
23989
23990 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23991 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23992
23993 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23994 &val);
23995 pi->tx_rx_cal_phy_saveregs[5] = val;
23996 val = 0;
23997 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23998 &val);
23999
24000 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24001 &val);
24002 pi->tx_rx_cal_phy_saveregs[6] = val;
24003 val = 0;
24004 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24005 &val);
24006
24007 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24008 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24009
24010 if (!(pi->use_int_tx_iqlo_cal_nphy))
24011 wlc_phy_rfctrlintc_override_nphy(
24012 pi,
24013 NPHY_RfctrlIntc_override_PA,
24014 1,
24015 RADIO_MIMO_CORESEL_CORE1
24016 |
24017 RADIO_MIMO_CORESEL_CORE2);
24018 else
24019 wlc_phy_rfctrlintc_override_nphy(
24020 pi,
24021 NPHY_RfctrlIntc_override_PA,
24022 0,
24023 RADIO_MIMO_CORESEL_CORE1
24024 |
24025 RADIO_MIMO_CORESEL_CORE2);
24026
24027 wlc_phy_rfctrlintc_override_nphy(pi,
24028 NPHY_RfctrlIntc_override_TRSW,
24029 0x2, RADIO_MIMO_CORESEL_CORE1);
24030 wlc_phy_rfctrlintc_override_nphy(pi,
24031 NPHY_RfctrlIntc_override_TRSW,
24032 0x8, RADIO_MIMO_CORESEL_CORE2);
24033
24034 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24035 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24036 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24037 0x29b, (0x1 << 0), (0) << 0);
24038
24039 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24040 0x29b, (0x1 << 0), (0) << 0);
24041
24042 if (NREV_IS(pi->pubpi.phy_rev, 7)
24043 || NREV_GE(pi->pubpi.phy_rev, 8))
24044 wlc_phy_rfctrl_override_nphy_rev7(
24045 pi, (0x1 << 7),
24046 wlc_phy_read_lpf_bw_ctl_nphy
24047 (pi,
24048 0), 0, 0,
24049 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24050
24051 if (pi->use_int_tx_iqlo_cal_nphy
24052 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24053
24054 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24055
24056 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24057 1 << 4);
24058
24059 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24060 mod_radio_reg(
24061 pi,
24062 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24063 1, 0);
24064 mod_radio_reg(
24065 pi,
24066 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24067 1, 0);
24068 } else {
24069 mod_radio_reg(
24070 pi,
24071 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24072 1, 0);
24073 mod_radio_reg(
24074 pi,
24075 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24076 1, 0);
24077 }
24078 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24079 wlc_phy_rfctrl_override_nphy_rev7(
24080 pi,
24081 (0x1 << 3), 0,
24082 0x3, 0,
24083 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24084 }
24085 }
24086 } else {
24087 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24088 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24089
24090 mask = ((0x3 << 12) | (0x3 << 14));
24091 val = (0x2 << 12);
24092 val |= (0x2 << 14);
24093 mod_phy_reg(pi, 0xa6, mask, val);
24094 mod_phy_reg(pi, 0xa7, mask, val);
24095
24096 val = read_phy_reg(pi, 0xa5);
24097 pi->tx_rx_cal_phy_saveregs[2] = val;
24098 val |= ((0x1 << 12) | (0x1 << 13));
24099 write_phy_reg(pi, 0xa5, val);
24100
24101 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24102 &val);
24103 pi->tx_rx_cal_phy_saveregs[3] = val;
24104 val |= 0x2000;
24105 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24106 &val);
24107
24108 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24109 &val);
24110 pi->tx_rx_cal_phy_saveregs[4] = val;
24111 val |= 0x2000;
24112 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24113 &val);
24114
24115 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24116 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24117 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24118 write_phy_reg(pi, 0x91, val);
24119 write_phy_reg(pi, 0x92, val);
24120 }
24121}
24122
24123static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24124{
24125 u16 mask;
24126
24127 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24128 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24129 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24130 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24131 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24132 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24133
24134 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24135 &pi->tx_rx_cal_phy_saveregs[5]);
24136 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24137 &pi->tx_rx_cal_phy_saveregs[6]);
24138
24139 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24140 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24141
24142 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24143 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24144
24145 if (NREV_IS(pi->pubpi.phy_rev, 7)
24146 || NREV_GE(pi->pubpi.phy_rev, 8))
24147 wlc_phy_rfctrl_override_nphy_rev7(
24148 pi, (0x1 << 7), 0, 0,
24149 1,
24150 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24151
24152 wlc_phy_resetcca_nphy(pi);
24153
24154 if (pi->use_int_tx_iqlo_cal_nphy
24155 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24156
24157 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24158 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24159 mod_radio_reg(
24160 pi,
24161 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24162 1, 1);
24163 mod_radio_reg(
24164 pi,
24165 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24166 1, 1);
24167 } else {
24168 mod_radio_reg(
24169 pi,
24170 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24171 1, 1);
24172 mod_radio_reg(
24173 pi,
24174 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24175 1, 1);
24176 }
24177
24178 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24179 0);
24180 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24181 wlc_phy_rfctrl_override_nphy_rev7(
24182 pi,
24183 (0x1 << 3), 0,
24184 0x3, 1,
24185 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24186 }
24187 }
24188 } else {
24189 mask = ((0x3 << 12) | (0x3 << 14));
24190 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24191 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24192 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24193
24194 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24195 &pi->tx_rx_cal_phy_saveregs[3]);
24196
24197 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24198 &pi->tx_rx_cal_phy_saveregs[4]);
24199
24200 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24201 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24202 }
24203}
24204
24205void
24206wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24207{
24208 u16 tssi_reg;
24209 s32 temp, pwrindex[2];
24210 s32 idle_tssi[2];
24211 s32 rssi_buf[4];
24212 s32 tssival[2];
24213 u8 tssi_type;
24214
24215 tssi_reg = read_phy_reg(pi, 0x1e9);
24216
24217 temp = (s32) (tssi_reg & 0x3f);
24218 idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24219
24220 temp = (s32) ((tssi_reg >> 8) & 0x3f);
24221 idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24222
24223 tssi_type =
24224 CHSPEC_IS5G(pi->radio_chanspec) ?
24225 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24226
24227 wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24228
24229 tssival[0] = rssi_buf[0] / ((s32) num_samps);
24230 tssival[1] = rssi_buf[2] / ((s32) num_samps);
24231
24232 pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24233 pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24234
24235 if (pwrindex[0] < 0)
24236 pwrindex[0] = 0;
24237 else if (pwrindex[0] > 63)
24238 pwrindex[0] = 63;
24239
24240 if (pwrindex[1] < 0)
24241 pwrindex[1] = 0;
24242 else if (pwrindex[1] > 63)
24243 pwrindex[1] = 63;
24244
24245 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24246 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24247 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24248 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24249}
24250
24251static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24252{
24253 int index;
24254 u32 bbmult_scale;
24255 u16 bbmult;
24256 u16 tblentry;
24257
24258 struct nphy_txiqcal_ladder ladder_lo[] = {
24259 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24260 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24261 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24262 };
24263
24264 struct nphy_txiqcal_ladder ladder_iq[] = {
24265 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24266 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24267 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24268 };
24269
24270 bbmult = (core == PHY_CORE_0) ?
24271 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24272 (pi->nphy_txcal_bbmult & 0xff);
24273
24274 for (index = 0; index < 18; index++) {
24275 bbmult_scale = ladder_lo[index].percent * bbmult;
24276 bbmult_scale /= 100;
24277
24278 tblentry =
24279 ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24280 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24281 &tblentry);
24282
24283 bbmult_scale = ladder_iq[index].percent * bbmult;
24284 bbmult_scale /= 100;
24285
24286 tblentry =
24287 ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24288 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24289 16, &tblentry);
24290 }
24291}
24292
24293static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24294{
24295 u16 tmp;
24296 tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24297
24298 tmp = (tmp & (0x7f << 8)) >> 8;
24299 return (u8) tmp;
24300}
24301
24302static void
24303wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24304{
24305 mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24306
24307 if (NREV_GT(pi->pubpi.phy_rev, 1))
24308 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24309}
24310
24311static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24312{
24313 u16 m0m1;
24314
24315 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24316
24317 return m0m1;
24318}
24319
24320static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24321{
24322 u16 m0m1 = (u16) ((m0 << 8) | m1);
24323
24324 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24325 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24326}
24327
24328static void
24329wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24330 struct nphy_papd_restore_state *state, u8 core)
24331{
24332 s32 tone_freq;
24333 u8 off_core;
24334 u16 mixgain = 0;
24335
24336 off_core = core ^ 0x1;
24337 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24338
24339 if (NREV_IS(pi->pubpi.phy_rev, 7)
24340 || NREV_GE(pi->pubpi.phy_rev, 8))
24341 wlc_phy_rfctrl_override_nphy_rev7(
24342 pi, (0x1 << 7),
24343 wlc_phy_read_lpf_bw_ctl_nphy
24344 (pi,
24345 0), 0, 0,
24346 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24347
24348 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24349 if (pi->pubpi.radiorev == 5)
24350 mixgain = (core == 0) ? 0x20 : 0x00;
24351 else if ((pi->pubpi.radiorev == 7)
24352 || (pi->pubpi.radiorev == 8))
24353 mixgain = 0x00;
24354 else if ((pi->pubpi.radiorev <= 4)
24355 || (pi->pubpi.radiorev == 6))
24356 mixgain = 0x00;
24357 } else {
24358 if ((pi->pubpi.radiorev == 4) ||
24359 (pi->pubpi.radiorev == 6))
24360 mixgain = 0x50;
24361 else if ((pi->pubpi.radiorev == 3)
24362 || (pi->pubpi.radiorev == 7)
24363 || (pi->pubpi.radiorev == 8))
24364 mixgain = 0x0;
24365 }
24366
24367 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24368 mixgain, (1 << core), 0,
24369 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24370
24371 wlc_phy_rfctrl_override_1tomany_nphy(
24372 pi,
24373 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24374 1, (1 << core), 0);
24375 wlc_phy_rfctrl_override_1tomany_nphy(
24376 pi,
24377 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24378 0, (1 << off_core), 0);
24379
24380 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24381 0, 0x3, 0,
24382 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24383 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24384 (1 << core), 0,
24385 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24386 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24387 (1 << core), 0,
24388 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24389 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24390 (1 << core), 0,
24391 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24392 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24393 (1 << core), 0,
24394 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24395 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24396 (1 << core), 0,
24397 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24398 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24399 (1 << core), 0,
24400 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24401 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24402 (1 << core), 0,
24403 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24404
24405 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24406 0, (1 << core), 0,
24407 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24408 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24409 (1 << core), 0,
24410 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24411
24412 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24413 0xa6 : 0xa7);
24414 state->afeoverride[core] =
24415 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24416 state->afectrl[off_core] =
24417 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24418 state->afeoverride[off_core] =
24419 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24420
24421 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24422 (0x1 << 2), 0);
24423 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24424 0xa5), (0x1 << 2), (0x1 << 2));
24425
24426 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24427 (0x1 << 2), (0x1 << 2));
24428 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24429 0x8f), (0x1 << 2), (0x1 << 2));
24430
24431 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24432 state->pwrup[core] =
24433 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24434 TXRXCOUPLE_2G_PWRUP);
24435 state->atten[core] =
24436 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24437 TXRXCOUPLE_2G_ATTEN);
24438 state->pwrup[off_core] =
24439 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24440 TXRXCOUPLE_2G_PWRUP);
24441 state->atten[off_core] =
24442 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24443 TXRXCOUPLE_2G_ATTEN);
24444
24445 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24446 TXRXCOUPLE_2G_PWRUP, 0xc);
24447
24448 if ((pi->pubpi.radiorev == 3) ||
24449 (pi->pubpi.radiorev == 4) ||
24450 (pi->pubpi.radiorev == 6))
24451 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24452 TXRXCOUPLE_2G_ATTEN, 0xf0);
24453 else if (pi->pubpi.radiorev == 5)
24454 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24455 TXRXCOUPLE_2G_ATTEN,
24456 (core == 0) ? 0xf7 : 0xf2);
24457 else if ((pi->pubpi.radiorev == 7)
24458 || (pi->pubpi.radiorev == 8))
24459 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24460 TXRXCOUPLE_2G_ATTEN, 0xf0);
24461
24462 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24463 TXRXCOUPLE_2G_PWRUP, 0x0);
24464 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24465 TXRXCOUPLE_2G_ATTEN, 0xff);
24466 } else {
24467 state->pwrup[core] =
24468 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24469 TXRXCOUPLE_5G_PWRUP);
24470 state->atten[core] =
24471 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24472 TXRXCOUPLE_5G_ATTEN);
24473 state->pwrup[off_core] =
24474 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24475 TXRXCOUPLE_5G_PWRUP);
24476 state->atten[off_core] =
24477 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24478 TXRXCOUPLE_5G_ATTEN);
24479
24480 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24481 TXRXCOUPLE_5G_PWRUP, 0xc);
24482
24483 if ((pi->pubpi.radiorev == 7)
24484 || (pi->pubpi.radiorev == 8))
24485 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24486 TXRXCOUPLE_5G_ATTEN, 0xf4);
24487
24488 else
24489 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24490 TXRXCOUPLE_5G_ATTEN, 0xf0);
24491
24492 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24493 TXRXCOUPLE_5G_PWRUP, 0x0);
24494 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24495 TXRXCOUPLE_5G_ATTEN, 0xff);
24496 }
24497
24498 tone_freq = 4000;
24499
24500 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24501
24502 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24503 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24504
24505 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24506 0x2a4, (0x1 << 13), (1) << 13);
24507
24508 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24509 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24510
24511 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24512 0x2a4, (0x1 << 13), (0) << 13);
24513
24514 } else {
24515
24516 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24517
24518 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24519
24520 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24521
24522 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24523 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24524
24525 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24526 0xa6 : 0xa7);
24527 state->afeoverride[core] =
24528 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24529
24530 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24531 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24532 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24533 0xa5),
24534 (0x1 << 0) |
24535 (0x1 << 1) |
24536 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24537
24538 state->vga_master[core] =
24539 READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24540 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24541 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24542 state->fbmix[core] =
24543 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24544 TXFBMIX_G);
24545 state->intpa_master[core] =
24546 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24547 INTPAG_MASTER);
24548
24549 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24550 0x03);
24551 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24552 INTPAG_MASTER, 0x04);
24553 } else {
24554 state->fbmix[core] =
24555 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24556 TXFBMIX_A);
24557 state->intpa_master[core] =
24558 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24559 INTPAA_MASTER);
24560
24561 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24562 0x03);
24563 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24564 INTPAA_MASTER, 0x04);
24565
24566 }
24567
24568 tone_freq = 4000;
24569
24570 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24571
24572 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24573 0x29b, (0x1 << 0), (1) << 0);
24574
24575 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24576 0x29b, (0x1 << 0), (0) << 0);
24577
24578 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24579 }
24580}
24581
24582static void
24583wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24584 struct nphy_papd_restore_state *state)
24585{
24586 u8 core;
24587
24588 wlc_phy_stopplayback_nphy(pi);
24589
24590 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24591
24592 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24593
24594 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24595 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24596 TXRXCOUPLE_2G_PWRUP, 0);
24597 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24598 TXRXCOUPLE_2G_ATTEN,
24599 state->atten[core]);
24600 } else {
24601 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24602 TXRXCOUPLE_5G_PWRUP, 0);
24603 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24604 TXRXCOUPLE_5G_ATTEN,
24605 state->atten[core]);
24606 }
24607 }
24608
24609 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24610 wlc_phy_rfctrl_override_nphy_rev7(
24611 pi, (0x1 << 2),
24612 1, 0x3, 0,
24613 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24614 else
24615 wlc_phy_rfctrl_override_nphy_rev7(
24616 pi, (0x1 << 2),
24617 0, 0x3, 1,
24618 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24619
24620 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24621 0, 0x3, 1,
24622 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24623 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24624 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24625 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24626 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24627 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24628 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24629 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24630 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24631 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24632 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24633 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24634 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24635 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24636 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24637 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24638 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24639 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24640 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24641 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24642 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24643 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24644 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24645 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24646 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24647 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24648 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24649 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24650 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24651 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24652 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24653
24654 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24655
24656 write_phy_reg(pi, (core == PHY_CORE_0) ?
24657 0xa6 : 0xa7, state->afectrl[core]);
24658 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24659 0xa5, state->afeoverride[core]);
24660 }
24661
24662 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24663 (state->mm & 0xff));
24664
24665 if (NREV_IS(pi->pubpi.phy_rev, 7)
24666 || NREV_GE(pi->pubpi.phy_rev, 8))
24667 wlc_phy_rfctrl_override_nphy_rev7(
24668 pi, (0x1 << 7), 0, 0,
24669 1,
24670 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24671 } else {
24672 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24673 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24674 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24675
24676 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24677 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24678
24679 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24680
24681 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24682 state->vga_master[core]);
24683 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24684 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24685 TXFBMIX_G, state->fbmix[core]);
24686 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24687 INTPAG_MASTER,
24688 state->intpa_master[core]);
24689 } else {
24690 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24691 TXFBMIX_A, state->fbmix[core]);
24692 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24693 INTPAA_MASTER,
24694 state->intpa_master[core]);
24695 }
24696
24697 write_phy_reg(pi, (core == PHY_CORE_0) ?
24698 0xa6 : 0xa7, state->afectrl[core]);
24699 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24700 0xa5, state->afeoverride[core]);
24701 }
24702
24703 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24704 (state->mm & 0xff));
24705
24706 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24707 }
24708}
24709
24710static void
24711wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24712 u32 end)
24713{
24714 u32 *buf, *src, *dst, sz;
24715
24716 sz = end - start + 1;
24717
24718 buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24719 if (NULL == buf)
24720 return;
24721
24722 src = buf;
24723 dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24724
24725 wlc_phy_table_read_nphy(pi,
24726 (core ==
24727 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24728 NPHY_TBL_ID_EPSILONTBL1),
24729 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24730
24731 do {
24732 u32 phy_a1, phy_a2;
24733 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24734
24735 phy_a1 = end - min(end, (winsz >> 1));
24736 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24737 end + (winsz >> 1));
24738 phy_a3 = phy_a2 - phy_a1 + 1;
24739 phy_a6 = 0;
24740 phy_a7 = 0;
24741
24742 do {
24743 wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24744 &phy_a5);
24745 phy_a6 += phy_a4;
24746 phy_a7 += phy_a5;
24747 } while (phy_a2-- != phy_a1);
24748
24749 phy_a6 /= phy_a3;
24750 phy_a7 /= phy_a3;
24751 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24752 } while (end-- != start);
24753
24754 wlc_phy_table_write_nphy(pi,
24755 (core ==
24756 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24757 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24758
24759 kfree(buf);
24760}
24761
24762static void
24763wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24764 enum phy_cal_mode cal_mode, u8 core)
24765{
24766 u16 phy_a1, phy_a2, phy_a3;
24767 u16 phy_a4, phy_a5;
24768 bool phy_a6;
24769 u8 phy_a7, m[2];
24770 u32 phy_a8 = 0;
24771 struct nphy_txgains phy_a9;
24772
24773 if (NREV_LT(pi->pubpi.phy_rev, 3))
24774 return;
24775
24776 phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24777
24778 phy_a6 = ((cal_mode == CAL_GCTRL)
24779 || (cal_mode == CAL_SOFT)) ? true : false;
24780
24781 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24782
24783 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24784
24785 if (CHSPEC_IS2G(pi->radio_chanspec))
24786 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24787 (phy_a9.txgm[core] << 12) |
24788 (phy_a9.pga[core] << 8) |
24789 (txgains->gains.pad[core] << 3) |
24790 (phy_a9.ipa[core]));
24791 else
24792 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24793 (phy_a9.txgm[core] << 12) |
24794 (txgains->gains.pga[core] << 8) |
24795 (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24796
24797 wlc_phy_rfctrl_override_1tomany_nphy(
24798 pi,
24799 NPHY_REV7_RfctrlOverride_cmd_txgain,
24800 phy_a5, (1 << core), 0);
24801
24802 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24803 if ((pi->pubpi.radiorev <= 4)
24804 || (pi->pubpi.radiorev == 6))
24805 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24806 60 : 79;
24807 else
24808 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24809 45 : 64;
24810 } else {
24811 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24812 }
24813
24814 m[phy_a7] = 0;
24815 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24816
24817 phy_a2 = 63;
24818
24819 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24820 if ((pi->pubpi.radiorev == 4)
24821 || (pi->pubpi.radiorev == 6)) {
24822 phy_a1 = 30;
24823 phy_a3 = 30;
24824 } else {
24825 phy_a1 = 25;
24826 phy_a3 = 25;
24827 }
24828 } else {
24829 if ((pi->pubpi.radiorev == 5)
24830 || (pi->pubpi.radiorev == 7)
24831 || (pi->pubpi.radiorev == 8)) {
24832 phy_a1 = 25;
24833 phy_a3 = 25;
24834 } else {
24835 phy_a1 = 35;
24836 phy_a3 = 35;
24837 }
24838 }
24839
24840 if (cal_mode == CAL_GCTRL) {
24841 if ((pi->pubpi.radiorev == 5)
24842 && (CHSPEC_IS2G(pi->radio_chanspec)))
24843 phy_a1 = 55;
24844 else if (((pi->pubpi.radiorev == 7) &&
24845 (CHSPEC_IS2G(pi->radio_chanspec))) ||
24846 ((pi->pubpi.radiorev == 8) &&
24847 (CHSPEC_IS2G(pi->radio_chanspec))))
24848 phy_a1 = 60;
24849 else
24850 phy_a1 = 63;
24851
24852 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24853
24854 phy_a1 = 35;
24855 phy_a3 = 35;
24856 }
24857
24858 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24859 0x29b, (0x1 << 0), (1) << 0);
24860
24861 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24862 0x29b, (0x1 << 0), (0) << 0);
24863
24864 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24865 0x2a4, (0x1 << 13), (1) << 13);
24866
24867 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24868 0x2a4, (0x1 << 13), (0) << 13);
24869
24870 write_phy_reg(pi, 0x2a1, 0x80);
24871 write_phy_reg(pi, 0x2a2, 0x100);
24872
24873 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24874 0x2a4, (0x7 << 4), (11) << 4);
24875
24876 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24877 0x2a4, (0x7 << 8), (11) << 8);
24878
24879 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24880 0x2a4, (0x7 << 0), (0x3) << 0);
24881
24882 write_phy_reg(pi, 0x2e5, 0x20);
24883
24884 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24885
24886 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24887
24888 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24889
24890 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24891 1, ((core == 0) ? 1 : 2), 0,
24892 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24893 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24894 0, ((core == 0) ? 2 : 1), 0,
24895 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24896
24897 write_phy_reg(pi, 0x2be, 1);
24898 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24899
24900 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24901 0, 0x3, 0,
24902 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24903
24904 wlc_phy_table_write_nphy(pi,
24905 (core ==
24906 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24907 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24908 32, &phy_a8);
24909
24910 if (cal_mode != CAL_GCTRL) {
24911 if (CHSPEC_IS5G(pi->radio_chanspec))
24912 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24913 }
24914
24915 wlc_phy_rfctrl_override_1tomany_nphy(
24916 pi,
24917 NPHY_REV7_RfctrlOverride_cmd_txgain,
24918 phy_a5, (1 << core), 1);
24919
24920 } else {
24921
24922 if (txgains) {
24923 if (txgains->useindex) {
24924 phy_a4 = 15 - ((txgains->index) >> 3);
24925 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24926 if (NREV_GE(pi->pubpi.phy_rev, 6))
24927 phy_a5 = 0x00f7 | (phy_a4 << 8);
24928
24929 else
24930 if (NREV_IS(pi->pubpi.phy_rev, 5))
24931 phy_a5 = 0x10f7 | (phy_a4 << 8);
24932 else
24933 phy_a5 = 0x50f7 | (phy_a4 << 8);
24934 } else {
24935 phy_a5 = 0x70f7 | (phy_a4 << 8);
24936 }
24937 wlc_phy_rfctrl_override_nphy(pi,
24938 (0x1 << 13),
24939 phy_a5,
24940 (1 << core), 0);
24941 } else {
24942 wlc_phy_rfctrl_override_nphy(pi,
24943 (0x1 << 13),
24944 0x5bf7,
24945 (1 << core), 0);
24946 }
24947 }
24948
24949 if (CHSPEC_IS2G(pi->radio_chanspec))
24950 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24951 else
24952 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24953
24954 m[phy_a7] = 0;
24955 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24956
24957 phy_a2 = 63;
24958
24959 if (cal_mode == CAL_FULL) {
24960 phy_a1 = 25;
24961 phy_a3 = 25;
24962 } else if (cal_mode == CAL_SOFT) {
24963 phy_a1 = 25;
24964 phy_a3 = 25;
24965 } else if (cal_mode == CAL_GCTRL) {
24966 phy_a1 = 63;
24967 phy_a3 = 25;
24968 } else {
24969
24970 phy_a1 = 25;
24971 phy_a3 = 25;
24972 }
24973
24974 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24975 0x29b, (0x1 << 0), (1) << 0);
24976
24977 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24978 0x29b, (0x1 << 0), (0) << 0);
24979
24980 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24981 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24982 0x2a4, (0x1 << 13), (1) << 13);
24983
24984 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24985 0x2a4, (0x1 << 13), (0) << 13);
24986
24987 write_phy_reg(pi, 0x2a1, 0x20);
24988 write_phy_reg(pi, 0x2a2, 0x60);
24989
24990 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24991 0x2a4, (0xf << 4), (9) << 4);
24992
24993 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24994 0x2a4, (0xf << 8), (9) << 8);
24995
24996 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24997 0x2a4, (0xf << 0), (0x2) << 0);
24998
24999 write_phy_reg(pi, 0x2e5, 0x20);
25000 } else {
25001 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25002 0x2a4, (0x1 << 11), (1) << 11);
25003
25004 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25005 0x2a4, (0x1 << 11), (0) << 11);
25006
25007 write_phy_reg(pi, 0x2a1, 0x80);
25008 write_phy_reg(pi, 0x2a2, 0x600);
25009
25010 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25011 0x2a4, (0x7 << 4), (0) << 4);
25012
25013 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25014 0x2a4, (0x7 << 8), (0) << 8);
25015
25016 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25017 0x2a4, (0x7 << 0), (0x3) << 0);
25018
25019 mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25020
25021 }
25022
25023 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25024
25025 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25026
25027 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25028
25029 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25030
25031 write_phy_reg(pi, 0x2be, 1);
25032 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25033
25034 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25035
25036 wlc_phy_table_write_nphy(pi,
25037 (core ==
25038 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25039 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25040 32, &phy_a8);
25041
25042 if (cal_mode != CAL_GCTRL)
25043 wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25044 }
25045}
25046
25047static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25048{
25049 int phy_a1;
25050 int phy_a2;
25051 bool phy_a3;
25052 struct nphy_ipa_txcalgains phy_a4;
25053 bool phy_a5 = false;
25054 bool phy_a6 = true;
25055 s32 phy_a7, phy_a8;
25056 u32 phy_a9;
25057 int phy_a10;
25058 bool phy_a11 = false;
25059 int phy_a12;
25060 u8 phy_a13 = 0;
25061 u8 phy_a14;
25062 u8 *phy_a15 = NULL;
25063
25064 phy_a4.useindex = true;
25065 phy_a12 = start_gain;
25066
25067 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25068
25069 phy_a2 = 20;
25070 phy_a1 = 1;
25071
25072 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25073 if (pi->pubpi.radiorev == 5) {
25074
25075 phy_a15 = pad_gain_codes_used_2057rev5;
25076 phy_a13 =
Jim Cromief26b6f32012-04-10 17:02:34 -060025077 ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
Arend van Spriel5b435de2011-10-05 13:19:03 +020025078
25079 } else if ((pi->pubpi.radiorev == 7)
25080 || (pi->pubpi.radiorev == 8)) {
25081
25082 phy_a15 = pad_gain_codes_used_2057rev7;
25083 phy_a13 =
Jim Cromief26b6f32012-04-10 17:02:34 -060025084 ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
Arend van Spriel5b435de2011-10-05 13:19:03 +020025085
25086 } else {
25087
25088 phy_a15 = pad_all_gain_codes_2057;
Jim Cromief26b6f32012-04-10 17:02:34 -060025089 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
Arend van Spriel5b435de2011-10-05 13:19:03 +020025090 1;
25091 }
25092
25093 } else {
25094
25095 phy_a15 = pga_all_gain_codes_2057;
Jim Cromief26b6f32012-04-10 17:02:34 -060025096 phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
Arend van Spriel5b435de2011-10-05 13:19:03 +020025097 }
25098
25099 phy_a14 = 0;
25100
25101 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25102 if (CHSPEC_IS2G(pi->radio_chanspec))
25103 phy_a4.gains.pad[core] =
25104 (u16) phy_a15[phy_a12];
25105 else
25106 phy_a4.gains.pga[core] =
25107 (u16) phy_a15[phy_a12];
25108
25109 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25110
25111 wlc_phy_table_read_nphy(pi,
25112 (core ==
25113 PHY_CORE_0 ?
25114 NPHY_TBL_ID_EPSILONTBL0 :
25115 NPHY_TBL_ID_EPSILONTBL1), 1,
25116 63, 32, &phy_a9);
25117
25118 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25119
25120 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25121 (phy_a8 == 4095) || (phy_a8 == -4096));
25122
25123 if (!phy_a6 && (phy_a3 != phy_a5)) {
25124 if (!phy_a3)
25125 phy_a12 -= (u8) phy_a1;
25126
25127 phy_a11 = true;
25128 break;
25129 }
25130
25131 if (phy_a3)
25132 phy_a12 += (u8) phy_a1;
25133 else
25134 phy_a12 -= (u8) phy_a1;
25135
25136 if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25137 if (phy_a12 < phy_a14)
25138 phy_a12 = phy_a14;
25139 else
25140 phy_a12 = phy_a13;
25141
25142 phy_a11 = true;
25143 break;
25144 }
25145
25146 phy_a6 = false;
25147 phy_a5 = phy_a3;
25148 }
25149
25150 } else {
25151 phy_a2 = 10;
25152 phy_a1 = 8;
25153 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25154 phy_a4.index = (u8) phy_a12;
25155 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25156
25157 wlc_phy_table_read_nphy(pi,
25158 (core ==
25159 PHY_CORE_0 ?
25160 NPHY_TBL_ID_EPSILONTBL0 :
25161 NPHY_TBL_ID_EPSILONTBL1), 1,
25162 63, 32, &phy_a9);
25163
25164 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25165
25166 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25167 (phy_a8 == 4095) || (phy_a8 == -4096));
25168
25169 if (!phy_a6 && (phy_a3 != phy_a5)) {
25170 if (!phy_a3)
25171 phy_a12 -= (u8) phy_a1;
25172
25173 phy_a11 = true;
25174 break;
25175 }
25176
25177 if (phy_a3)
25178 phy_a12 += (u8) phy_a1;
25179 else
25180 phy_a12 -= (u8) phy_a1;
25181
25182 if ((phy_a12 < 0) || (phy_a12 > 127)) {
25183 if (phy_a12 < 0)
25184 phy_a12 = 0;
25185 else
25186 phy_a12 = 127;
25187
25188 phy_a11 = true;
25189 break;
25190 }
25191
25192 phy_a6 = false;
25193 phy_a5 = phy_a3;
25194 }
25195
25196 }
25197
25198 if (NREV_GE(pi->pubpi.phy_rev, 7))
25199 return (u8) phy_a15[phy_a12];
25200 else
25201 return (u8) phy_a12;
25202
25203}
25204
25205static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25206{
25207 struct nphy_ipa_txcalgains phy_b1[2];
25208 struct nphy_papd_restore_state phy_b2;
25209 bool phy_b3;
25210 u8 phy_b4;
25211 u8 phy_b5;
25212 s16 phy_b6, phy_b7, phy_b8;
25213 u16 phy_b9;
25214 s16 phy_b10, phy_b11, phy_b12;
25215
25216 phy_b11 = 0;
25217 phy_b12 = 0;
25218 phy_b7 = 0;
25219 phy_b8 = 0;
25220 phy_b6 = 0;
25221
25222 if (pi->nphy_papd_skip == 1)
25223 return;
25224
Arend van Spriel4b006b12011-12-08 15:06:54 -080025225 phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25226 MCTL_EN_MAC));
Arend van Spriel5b435de2011-10-05 13:19:03 +020025227 if (!phy_b3)
25228 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25229
25230 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25231
25232 pi->nphy_force_papd_cal = false;
25233
25234 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25235 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25236 wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25237
25238 pi->nphy_papd_last_cal = pi->sh->now;
25239 pi->nphy_papd_recal_counter++;
25240
25241 phy_b4 = pi->nphy_txpwrctrl;
25242 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25243
25244 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25245 nphy_papd_scaltbl);
25246 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25247 nphy_papd_scaltbl);
25248
25249 phy_b9 = read_phy_reg(pi, 0x01);
25250 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25251
25252 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25253 s32 i, val = 0;
25254 for (i = 0; i < 64; i++)
25255 wlc_phy_table_write_nphy(pi,
25256 ((phy_b5 ==
25257 PHY_CORE_0) ?
25258 NPHY_TBL_ID_EPSILONTBL0 :
25259 NPHY_TBL_ID_EPSILONTBL1), 1,
25260 i, 32, &val);
25261 }
25262
25263 wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25264
25265 phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25266 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25267 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25268
25269 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25270 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25271 if ((pi->pubpi.radiorev == 3)
25272 || (pi->pubpi.radiorev == 4)
25273 || (pi->pubpi.radiorev == 6)) {
25274 pi->nphy_papd_cal_gain_index[phy_b5] =
25275 23;
25276 } else if (pi->pubpi.radiorev == 5) {
25277 pi->nphy_papd_cal_gain_index[phy_b5] =
25278 0;
25279 pi->nphy_papd_cal_gain_index[phy_b5] =
25280 wlc_phy_a3_nphy(
25281 pi,
25282 pi->
25283 nphy_papd_cal_gain_index
25284 [phy_b5],
25285 phy_b5);
25286
25287 } else if ((pi->pubpi.radiorev == 7)
25288 || (pi->pubpi.radiorev == 8)) {
25289
25290 pi->nphy_papd_cal_gain_index[phy_b5] =
25291 0;
25292 pi->nphy_papd_cal_gain_index[phy_b5] =
25293 wlc_phy_a3_nphy(
25294 pi,
25295 pi->
25296 nphy_papd_cal_gain_index
25297 [phy_b5],
25298 phy_b5);
25299
25300 }
25301
25302 phy_b1[phy_b5].gains.pad[phy_b5] =
25303 pi->nphy_papd_cal_gain_index[phy_b5];
25304
25305 } else {
25306 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25307 pi->nphy_papd_cal_gain_index[phy_b5] =
25308 wlc_phy_a3_nphy(
25309 pi,
25310 pi->
25311 nphy_papd_cal_gain_index
25312 [phy_b5], phy_b5);
25313 phy_b1[phy_b5].gains.pga[phy_b5] =
25314 pi->nphy_papd_cal_gain_index[phy_b5];
25315 }
25316 } else {
25317 phy_b1[phy_b5].useindex = true;
25318 phy_b1[phy_b5].index = 16;
25319 phy_b1[phy_b5].index =
25320 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25321 phy_b5);
25322
25323 pi->nphy_papd_cal_gain_index[phy_b5] =
25324 15 - ((phy_b1[phy_b5].index) >> 3);
25325 }
25326
25327 switch (pi->nphy_papd_cal_type) {
25328 case 0:
25329 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25330 break;
25331 case 1:
25332 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25333 break;
25334 }
25335
25336 if (NREV_GE(pi->pubpi.phy_rev, 7))
25337 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25338 }
25339
25340 if (NREV_LT(pi->pubpi.phy_rev, 7))
25341 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25342
25343 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25344 int eps_offset = 0;
25345
25346 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25347 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25348 if (pi->pubpi.radiorev == 3)
25349 eps_offset = -2;
25350 else if (pi->pubpi.radiorev == 5)
25351 eps_offset = 3;
25352 else
25353 eps_offset = -1;
25354 } else {
25355 eps_offset = 2;
25356 }
25357
25358 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25359 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25360 phy_b10 = 0;
25361 if ((pi->pubpi.radiorev == 3) ||
25362 (pi->pubpi.radiorev == 4) ||
25363 (pi->pubpi.radiorev == 6)) {
25364 phy_b12 = -(
25365 nphy_papd_padgain_dlt_2g_2057rev3n4
25366 [phy_b8] + 1) / 2;
25367 phy_b10 = -1;
25368 } else if (pi->pubpi.radiorev == 5) {
25369 phy_b12 = -(
25370 nphy_papd_padgain_dlt_2g_2057rev5
25371 [phy_b8] + 1) / 2;
25372 } else if ((pi->pubpi.radiorev == 7) ||
25373 (pi->pubpi.radiorev == 8)) {
25374 phy_b12 = -(
25375 nphy_papd_padgain_dlt_2g_2057rev7
25376 [phy_b8] + 1) / 2;
25377 }
25378 } else {
25379 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25380 if ((pi->pubpi.radiorev == 3) ||
25381 (pi->pubpi.radiorev == 4) ||
25382 (pi->pubpi.radiorev == 6))
25383 phy_b11 =
25384 -(nphy_papd_pgagain_dlt_5g_2057
25385 [phy_b7]
25386 + 1) / 2;
25387 else if ((pi->pubpi.radiorev == 7)
25388 || (pi->pubpi.radiorev == 8))
25389 phy_b11 = -(
25390 nphy_papd_pgagain_dlt_5g_2057rev7
25391 [phy_b7] + 1) / 2;
25392
25393 phy_b10 = -9;
25394 }
25395
25396 if (CHSPEC_IS2G(pi->radio_chanspec))
25397 phy_b6 =
25398 -60 + 27 + eps_offset + phy_b12 +
25399 phy_b10;
25400 else
25401 phy_b6 =
25402 -60 + 27 + eps_offset + phy_b11 +
25403 phy_b10;
25404
25405 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25406 0x29c, (0x1ff << 7), (phy_b6) << 7);
25407
25408 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25409 } else {
25410 if (NREV_LT(pi->pubpi.phy_rev, 5))
25411 eps_offset = 4;
25412 else
25413 eps_offset = 2;
25414
25415 phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25416
25417 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25418 phy_b11 =
25419 -(nphy_papd_pga_gain_delta_ipa_2g[
25420 phy_b7] +
25421 1) / 2;
25422 phy_b10 = 0;
25423 } else {
25424 phy_b11 =
25425 -(nphy_papd_pga_gain_delta_ipa_5g[
25426 phy_b7] +
25427 1) / 2;
25428 phy_b10 = -9;
25429 }
25430
25431 phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25432
25433 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25434 0x29c, (0x1ff << 7), (phy_b6) << 7);
25435
25436 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25437 }
25438 }
25439
25440 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25441 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25442
25443 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25444 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25445
25446 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25447 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25448 0x2a4, (0x1 << 13), (0) << 13);
25449
25450 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25451 0x2a4, (0x1 << 13), (0) << 13);
25452
25453 } else {
25454 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25455 0x2a4, (0x1 << 11), (0) << 11);
25456
25457 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25458 0x2a4, (0x1 << 11), (0) << 11);
25459
25460 }
25461 pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25462
25463 write_phy_reg(pi, 0x01, phy_b9);
25464
25465 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25466
25467 wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25468 if (phy_b4 == PHY_TPC_HW_OFF) {
25469 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25470 (s8) (pi->nphy_txpwrindex[0].
25471 index_internal), false);
25472 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25473 (s8) (pi->nphy_txpwrindex[1].
25474 index_internal), false);
25475 }
25476
25477 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25478
25479 if (!phy_b3)
25480 wlapi_enable_mac(pi->sh->physhim);
25481}
25482
25483void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25484{
25485 struct nphy_txgains target_gain;
25486 u8 tx_pwr_ctrl_state;
25487 bool fullcal = true;
25488 bool restore_tx_gain = false;
25489 bool mphase;
25490
25491 if (PHY_MUTED(pi))
25492 return;
25493
25494 if (caltype == PHY_PERICAL_AUTO)
25495 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25496 else if (caltype == PHY_PERICAL_PARTIAL)
25497 fullcal = false;
25498
25499 if (pi->cal_type_override != PHY_PERICAL_AUTO)
25500 fullcal =
25501 (pi->cal_type_override ==
25502 PHY_PERICAL_FULL) ? true : false;
25503
25504 if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25505 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25506 wlc_phy_cal_perical_mphase_restart(pi);
25507 }
25508
25509 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25510 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25511
25512 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25513
25514 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25515
25516 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25517 (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25518 pi->nphy_cal_orig_pwr_idx[0] =
25519 (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25520 pi->nphy_cal_orig_pwr_idx[1] =
25521 (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25522
25523 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25524 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25525 0x110, 16,
25526 pi->nphy_cal_orig_tx_gain);
25527 } else {
25528 pi->nphy_cal_orig_tx_gain[0] = 0;
25529 pi->nphy_cal_orig_tx_gain[1] = 0;
25530 }
25531 }
25532 target_gain = wlc_phy_get_tx_gain_nphy(pi);
25533 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25534 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25535
25536 if (pi->antsel_type == ANTSEL_2x3)
25537 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25538
25539 mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25540 if (!mphase) {
25541
25542 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25543 wlc_phy_precal_txgain_nphy(pi);
25544 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25545 restore_tx_gain = true;
25546
25547 target_gain = pi->nphy_cal_target_gain;
25548 }
25549 if (0 ==
25550 wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25551 mphase)) {
25552 if (PHY_IPA(pi))
25553 wlc_phy_a4(pi, true);
25554
25555 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25556 wlapi_enable_mac(pi->sh->physhim);
25557 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25558 10000);
25559 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25560 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25561
25562 if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25563 (pi->first_cal_after_assoc ||
25564 (pi->cal_type_override ==
25565 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25566 wlc_phy_savecal_nphy(pi);
25567
25568 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25569
25570 pi->nphy_perical_last = pi->sh->now;
25571 }
25572 }
25573 if (caltype != PHY_PERICAL_AUTO)
25574 wlc_phy_rssi_cal_nphy(pi);
25575
25576 if (pi->first_cal_after_assoc
25577 || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25578 pi->first_cal_after_assoc = false;
25579 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25580 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25581 }
25582
25583 if (NREV_GE(pi->pubpi.phy_rev, 3))
25584 wlc_phy_radio205x_vcocal_nphy(pi);
25585 } else {
25586 switch (pi->mphase_cal_phase_id) {
25587 case MPHASE_CAL_STATE_INIT:
25588 pi->nphy_perical_last = pi->sh->now;
25589 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25590
25591 if (NREV_GE(pi->pubpi.phy_rev, 3))
25592 wlc_phy_precal_txgain_nphy(pi);
25593
25594 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25595 pi->mphase_cal_phase_id++;
25596 break;
25597
25598 case MPHASE_CAL_STATE_TXPHASE0:
25599 case MPHASE_CAL_STATE_TXPHASE1:
25600 case MPHASE_CAL_STATE_TXPHASE2:
25601 case MPHASE_CAL_STATE_TXPHASE3:
25602 case MPHASE_CAL_STATE_TXPHASE4:
25603 case MPHASE_CAL_STATE_TXPHASE5:
25604 if ((pi->radar_percal_mask & 0x10) != 0)
25605 pi->nphy_rxcal_active = true;
25606
25607 if (wlc_phy_cal_txiqlo_nphy
25608 (pi, pi->nphy_cal_target_gain, fullcal,
25609 true) != 0) {
25610
25611 wlc_phy_cal_perical_mphase_reset(pi);
25612 break;
25613 }
25614
25615 if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25616 (pi->mphase_cal_phase_id ==
25617 MPHASE_CAL_STATE_TXPHASE4))
25618 pi->mphase_cal_phase_id += 2;
25619 else
25620 pi->mphase_cal_phase_id++;
25621 break;
25622
25623 case MPHASE_CAL_STATE_PAPDCAL:
25624 if ((pi->radar_percal_mask & 0x2) != 0)
25625 pi->nphy_rxcal_active = true;
25626
25627 if (PHY_IPA(pi))
25628 wlc_phy_a4(pi, true);
25629
25630 pi->mphase_cal_phase_id++;
25631 break;
25632
25633 case MPHASE_CAL_STATE_RXCAL:
25634 if ((pi->radar_percal_mask & 0x1) != 0)
25635 pi->nphy_rxcal_active = true;
25636 if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25637 (pi->first_cal_after_assoc ||
25638 (pi->cal_type_override ==
25639 PHY_PERICAL_FULL)) ? 2 : 0,
25640 false) == 0)
25641 wlc_phy_savecal_nphy(pi);
25642
25643 pi->mphase_cal_phase_id++;
25644 break;
25645
25646 case MPHASE_CAL_STATE_RSSICAL:
25647 if ((pi->radar_percal_mask & 0x4) != 0)
25648 pi->nphy_rxcal_active = true;
25649 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25650 wlc_phy_rssi_cal_nphy(pi);
25651
25652 if (NREV_GE(pi->pubpi.phy_rev, 3))
25653 wlc_phy_radio205x_vcocal_nphy(pi);
25654
25655 restore_tx_gain = true;
25656
25657 if (pi->first_cal_after_assoc)
25658 pi->mphase_cal_phase_id++;
25659 else
25660 wlc_phy_cal_perical_mphase_reset(pi);
25661
25662 break;
25663
25664 case MPHASE_CAL_STATE_IDLETSSI:
25665 if ((pi->radar_percal_mask & 0x8) != 0)
25666 pi->nphy_rxcal_active = true;
25667
25668 if (pi->first_cal_after_assoc) {
25669 pi->first_cal_after_assoc = false;
25670 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25671 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25672 }
25673
25674 wlc_phy_cal_perical_mphase_reset(pi);
25675 break;
25676
25677 default:
25678 wlc_phy_cal_perical_mphase_reset(pi);
25679 break;
25680 }
25681 }
25682
25683 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25684 if (restore_tx_gain) {
25685 if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25686
25687 wlc_phy_txpwr_index_nphy(pi, 1,
25688 pi->
25689 nphy_cal_orig_pwr_idx
25690 [0], false);
25691 wlc_phy_txpwr_index_nphy(pi, 2,
25692 pi->
25693 nphy_cal_orig_pwr_idx
25694 [1], false);
25695
25696 pi->nphy_txpwrindex[0].index = -1;
25697 pi->nphy_txpwrindex[1].index = -1;
25698 } else {
25699 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25700 (s8) (pi->
25701 nphy_txpwrindex
25702 [0].
25703 index_internal),
25704 false);
25705 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25706 (s8) (pi->
25707 nphy_txpwrindex
25708 [1].
25709 index_internal),
25710 false);
25711 }
25712 }
25713 }
25714
25715 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25716 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25717 wlapi_enable_mac(pi->sh->physhim);
25718}
25719
25720int
25721wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25722 bool fullcal, bool mphase)
25723{
25724 u16 val;
25725 u16 tbl_buf[11];
25726 u8 cal_cnt;
25727 u16 cal_cmd;
25728 u8 num_cals, max_cal_cmds;
25729 u16 core_no, cal_type;
25730 u16 diq_start = 0;
25731 u8 phy_bw;
25732 u16 max_val;
25733 u16 tone_freq;
25734 u16 gain_save[2];
25735 u16 cal_gain[2];
25736 struct nphy_iqcal_params cal_params[2];
25737 u32 tbl_len;
25738 void *tbl_ptr;
25739 bool ladder_updated[2];
25740 u8 mphase_cal_lastphase = 0;
25741 int bcmerror = 0;
25742 bool phyhang_avoid_state = false;
25743
25744 u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25745 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25746 0x1902,
25747 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25748 0x6407
25749 };
25750
25751 u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25752 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25753 0x3200,
25754 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25755 0x6407
25756 };
25757
25758 u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25759 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25760 0x1202,
25761 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25762 0x4707
25763 };
25764
25765 u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25766 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25767 0x2300,
25768 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25769 0x4707
25770 };
25771
25772 u16 tbl_tx_iqlo_cal_startcoefs[] = {
25773 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25774 0x0000
25775 };
25776
25777 u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25778 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25779 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25780 };
25781
25782 u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25783 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25784 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25785 };
25786
25787 u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25788 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25789 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25790 0x0000
25791 };
25792
25793 u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25794 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25795 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25796 };
25797
25798 u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25799 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25800 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25801 };
25802
25803 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25804
25805 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25806 phyhang_avoid_state = pi->phyhang_avoid;
25807 pi->phyhang_avoid = false;
25808 }
25809
25810 if (CHSPEC_IS40(pi->radio_chanspec))
25811 phy_bw = 40;
25812 else
25813 phy_bw = 20;
25814
25815 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25816
25817 for (core_no = 0; core_no <= 1; core_no++) {
25818 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25819 &cal_params[core_no]);
25820 cal_gain[core_no] = cal_params[core_no].cal_gain;
25821 }
25822
25823 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25824
25825 wlc_phy_txcal_radio_setup_nphy(pi);
25826
25827 wlc_phy_txcal_physetup_nphy(pi);
25828
25829 ladder_updated[0] = ladder_updated[1] = false;
25830 if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25831 (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25832 && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25833
25834 if (phy_bw == 40) {
25835 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25836 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25837 } else {
25838 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25839 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25840 }
25841 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25842 16, tbl_ptr);
25843
25844 if (phy_bw == 40) {
25845 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25846 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25847 } else {
25848 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25849 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25850 }
25851 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25852 16, tbl_ptr);
25853 }
25854
25855 if (NREV_GE(pi->pubpi.phy_rev, 7))
25856 write_phy_reg(pi, 0xc2, 0x8ad9);
25857 else
25858 write_phy_reg(pi, 0xc2, 0x8aa9);
25859
25860 max_val = 250;
25861 tone_freq = (phy_bw == 20) ? 2500 : 5000;
25862
25863 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25864 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25865 bcmerror = 0;
25866 } else {
25867 bcmerror =
25868 wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25869 false);
25870 }
25871
25872 if (bcmerror == 0) {
25873
25874 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25875 tbl_ptr = pi->mphase_txcal_bestcoeffs;
25876 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25877 if (NREV_LT(pi->pubpi.phy_rev, 3))
25878 tbl_len -= 2;
25879 } else {
25880 if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25881
25882 tbl_ptr = pi->nphy_txiqlocal_bestc;
25883 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25884 if (NREV_LT(pi->pubpi.phy_rev, 3))
25885 tbl_len -= 2;
25886 } else {
25887
25888 fullcal = true;
25889
25890 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25891 tbl_ptr =
25892 tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25893 tbl_len = ARRAY_SIZE(
25894 tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25895 } else {
25896 tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25897 tbl_len = ARRAY_SIZE(
25898 tbl_tx_iqlo_cal_startcoefs);
25899 }
25900 }
25901 }
25902 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25903 16, tbl_ptr);
25904
25905 if (fullcal) {
25906 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25907 ARRAY_SIZE(
25908 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25909 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25910 } else {
25911 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25912 ARRAY_SIZE(
25913 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25914 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25915 }
25916
25917 if (mphase) {
25918 cal_cnt = pi->mphase_txcal_cmdidx;
25919 if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25920 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25921 else
25922 num_cals = max_cal_cmds;
25923 } else {
25924 cal_cnt = 0;
25925 num_cals = max_cal_cmds;
25926 }
25927
25928 for (; cal_cnt < num_cals; cal_cnt++) {
25929
25930 if (fullcal) {
25931 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25932 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25933 [cal_cnt] :
25934 tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25935 } else {
25936 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25937 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25938 cal_cnt]
25939 : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25940 }
25941
25942 core_no = ((cal_cmd & 0x3000) >> 12);
25943 cal_type = ((cal_cmd & 0x0F00) >> 8);
25944
25945 if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25946 (NREV_IS(pi->pubpi.phy_rev, 5) &&
25947 PHY_IPA(pi)
25948 && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25949 if (!ladder_updated[core_no]) {
25950 wlc_phy_update_txcal_ladder_nphy(
25951 pi,
25952 core_no);
25953 ladder_updated[core_no] = true;
25954 }
25955 }
25956
25957 val =
25958 (cal_params[core_no].
25959 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25960 write_phy_reg(pi, 0xc1, val);
25961
25962 if ((cal_type == 1) || (cal_type == 3)
25963 || (cal_type == 4)) {
25964
25965 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25966 1, 69 + core_no, 16,
25967 tbl_buf);
25968
25969 diq_start = tbl_buf[0];
25970
25971 tbl_buf[0] = 0;
25972 wlc_phy_table_write_nphy(pi,
25973 NPHY_TBL_ID_IQLOCAL, 1,
25974 69 + core_no, 16,
25975 tbl_buf);
25976 }
25977
25978 write_phy_reg(pi, 0xc0, cal_cmd);
25979
25980 SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25981 20000);
25982 if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25983 "HW error: txiq calib"))
25984 return -EIO;
25985
25986 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25987 tbl_len, 96, 16, tbl_buf);
25988 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25989 tbl_len, 64, 16, tbl_buf);
25990
25991 if ((cal_type == 1) || (cal_type == 3)
25992 || (cal_type == 4)) {
25993
25994 tbl_buf[0] = diq_start;
25995
25996 }
25997
25998 }
25999
26000 if (mphase) {
26001 pi->mphase_txcal_cmdidx = num_cals;
26002 if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26003 pi->mphase_txcal_cmdidx = 0;
26004 }
26005
26006 mphase_cal_lastphase =
26007 (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26008 MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26009
26010 if (!mphase
26011 || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26012
26013 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26014 16, tbl_buf);
26015 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26016 16, tbl_buf);
26017
26018 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26019
26020 tbl_buf[0] = 0;
26021 tbl_buf[1] = 0;
26022 tbl_buf[2] = 0;
26023 tbl_buf[3] = 0;
26024
26025 }
26026 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26027 16, tbl_buf);
26028
26029 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26030 16, tbl_buf);
26031 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26032 16, tbl_buf);
26033
26034 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26035 16, tbl_buf);
26036
26037 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26038 if (NREV_LT(pi->pubpi.phy_rev, 3))
26039 tbl_len -= 2;
26040
26041 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26042 tbl_len, 96, 16,
26043 pi->nphy_txiqlocal_bestc);
26044
26045 pi->nphy_txiqlocal_coeffsvalid = true;
26046 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26047 } else {
26048 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26049 if (NREV_LT(pi->pubpi.phy_rev, 3))
26050 tbl_len -= 2;
26051
26052 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26053 tbl_len, 96, 16,
26054 pi->mphase_txcal_bestcoeffs);
26055 }
26056
26057 wlc_phy_stopplayback_nphy(pi);
26058
26059 write_phy_reg(pi, 0xc2, 0x0000);
26060
26061 }
26062
26063 wlc_phy_txcal_phycleanup_nphy(pi);
26064
26065 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26066 gain_save);
26067
26068 wlc_phy_txcal_radio_cleanup_nphy(pi);
26069
26070 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26071 if (!mphase
26072 || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26073 wlc_phy_tx_iq_war_nphy(pi);
26074 }
26075
26076 if (NREV_GE(pi->pubpi.phy_rev, 4))
26077 pi->phyhang_avoid = phyhang_avoid_state;
26078
26079 wlc_phy_stay_in_carriersearch_nphy(pi, false);
26080
26081 return bcmerror;
26082}
26083
26084static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26085{
26086 u16 tbl_buf[7];
26087
26088 if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26089 (pi->nphy_txiqlocal_coeffsvalid)) {
26090 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26091 ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26092
26093 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26094 (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26095 (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26096 (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26097
26098 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26099 16, pi->nphy_txiqlocal_bestc);
26100
26101 tbl_buf[0] = 0;
26102 tbl_buf[1] = 0;
26103 tbl_buf[2] = 0;
26104 tbl_buf[3] = 0;
26105 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26106 16, tbl_buf);
26107
26108 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26109 16,
26110 &pi->nphy_txiqlocal_bestc[5]);
26111
26112 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26113 16,
26114 &pi->nphy_txiqlocal_bestc[5]);
26115 }
26116 }
26117}
26118
26119void
26120wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26121 struct nphy_iq_comp *pcomp)
26122{
26123 if (write) {
26124 write_phy_reg(pi, 0x9a, pcomp->a0);
26125 write_phy_reg(pi, 0x9b, pcomp->b0);
26126 write_phy_reg(pi, 0x9c, pcomp->a1);
26127 write_phy_reg(pi, 0x9d, pcomp->b1);
26128 } else {
26129 pcomp->a0 = read_phy_reg(pi, 0x9a);
26130 pcomp->b0 = read_phy_reg(pi, 0x9b);
26131 pcomp->a1 = read_phy_reg(pi, 0x9c);
26132 pcomp->b1 = read_phy_reg(pi, 0x9d);
26133 }
26134}
26135
26136void
26137wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26138 u16 num_samps, u8 wait_time, u8 wait_for_crs)
26139{
26140 u8 core;
26141
26142 write_phy_reg(pi, 0x12b, num_samps);
26143 mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26144 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26145 (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26146
26147 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26148
26149 SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26150 10000);
26151 if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26152 "HW error: rxiq est"))
26153 return;
26154
26155 if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26156 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26157 est[core].i_pwr =
26158 (read_phy_reg(pi,
26159 NPHY_IqestipwrAccHi(core)) << 16)
26160 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26161 est[core].q_pwr =
26162 (read_phy_reg(pi,
26163 NPHY_IqestqpwrAccHi(core)) << 16)
26164 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26165 est[core].iq_prod =
26166 (read_phy_reg(pi,
26167 NPHY_IqestIqAccHi(core)) << 16) |
26168 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26169 }
26170 }
26171}
26172
26173#define CAL_RETRY_CNT 2
26174static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26175{
26176 u8 curr_core;
26177 struct phy_iq_est est[PHY_CORE_MAX];
26178 struct nphy_iq_comp old_comp, new_comp;
26179 s32 iq = 0;
26180 u32 ii = 0, qq = 0;
26181 s16 iq_nbits, qq_nbits, brsh, arsh;
26182 s32 a, b, temp;
26183 int bcmerror = 0;
26184 uint cal_retry = 0;
26185
26186 if (core_mask == 0x0)
26187 return;
26188
26189 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26190 new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26191 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26192
26193cal_try:
26194 wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26195
26196 new_comp = old_comp;
26197
26198 for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26199
26200 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26201 iq = est[curr_core].iq_prod;
26202 ii = est[curr_core].i_pwr;
26203 qq = est[curr_core].q_pwr;
26204 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26205 iq = est[curr_core].iq_prod;
26206 ii = est[curr_core].i_pwr;
26207 qq = est[curr_core].q_pwr;
26208 } else {
26209 continue;
26210 }
26211
26212 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26213 bcmerror = -EBADE;
26214 break;
26215 }
26216
26217 iq_nbits = wlc_phy_nbits(iq);
26218 qq_nbits = wlc_phy_nbits(qq);
26219
26220 arsh = 10 - (30 - iq_nbits);
26221 if (arsh >= 0) {
26222 a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26223 temp = (s32) (ii >> arsh);
26224 if (temp == 0) {
26225 bcmerror = -EBADE;
26226 break;
26227 }
26228 } else {
26229 a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26230 temp = (s32) (ii << -arsh);
26231 if (temp == 0) {
26232 bcmerror = -EBADE;
26233 break;
26234 }
26235 }
26236
26237 a /= temp;
26238
26239 brsh = qq_nbits - 31 + 20;
26240 if (brsh >= 0) {
26241 b = (qq << (31 - qq_nbits));
26242 temp = (s32) (ii >> brsh);
26243 if (temp == 0) {
26244 bcmerror = -EBADE;
26245 break;
26246 }
26247 } else {
26248 b = (qq << (31 - qq_nbits));
26249 temp = (s32) (ii << -brsh);
26250 if (temp == 0) {
26251 bcmerror = -EBADE;
26252 break;
26253 }
26254 }
26255 b /= temp;
26256 b -= a * a;
26257 b = (s32) int_sqrt((unsigned long) b);
26258 b -= (1 << 10);
26259
26260 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26261 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26262 new_comp.a0 = (s16) a & 0x3ff;
26263 new_comp.b0 = (s16) b & 0x3ff;
26264 } else {
26265
26266 new_comp.a0 = (s16) b & 0x3ff;
26267 new_comp.b0 = (s16) a & 0x3ff;
26268 }
26269 }
26270 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26271 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26272 new_comp.a1 = (s16) a & 0x3ff;
26273 new_comp.b1 = (s16) b & 0x3ff;
26274 } else {
26275
26276 new_comp.a1 = (s16) b & 0x3ff;
26277 new_comp.b1 = (s16) a & 0x3ff;
26278 }
26279 }
26280 }
26281
26282 if (bcmerror != 0) {
Joe Perches18aad4f2012-01-15 00:38:42 -080026283 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
Arend van Spriel5b435de2011-10-05 13:19:03 +020026284
26285 if (cal_retry < CAL_RETRY_CNT) {
26286 cal_retry++;
26287 goto cal_try;
26288 }
26289
26290 new_comp = old_comp;
26291 }
26292
26293 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26294}
26295
26296static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26297{
26298 u16 offtune_val;
26299 u16 bias_g = 0;
26300 u16 bias_a = 0;
26301
26302 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26303 if (rx_core == PHY_CORE_0) {
26304 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26305 pi->tx_rx_cal_radio_saveregs[0] =
26306 read_radio_reg(pi,
26307 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26308 pi->tx_rx_cal_radio_saveregs[1] =
26309 read_radio_reg(pi,
26310 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26311
26312 write_radio_reg(pi,
26313 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26314 0x3);
26315 write_radio_reg(pi,
26316 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26317 0xaf);
26318
26319 } else {
26320 pi->tx_rx_cal_radio_saveregs[0] =
26321 read_radio_reg(pi,
26322 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26323 pi->tx_rx_cal_radio_saveregs[1] =
26324 read_radio_reg(pi,
26325 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26326
26327 write_radio_reg(
26328 pi,
26329 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26330 0x3);
26331 write_radio_reg(
26332 pi,
26333 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26334 0x7f);
26335 }
26336
26337 } else {
26338 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26339 pi->tx_rx_cal_radio_saveregs[0] =
26340 read_radio_reg(pi,
26341 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26342 pi->tx_rx_cal_radio_saveregs[1] =
26343 read_radio_reg(pi,
26344 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26345
26346 write_radio_reg(
26347 pi,
26348 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26349 0x3);
26350 write_radio_reg(
26351 pi,
26352 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26353 0xaf);
26354
26355 } else {
26356 pi->tx_rx_cal_radio_saveregs[0] =
26357 read_radio_reg(pi,
26358 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26359 pi->tx_rx_cal_radio_saveregs[1] =
26360 read_radio_reg(pi,
26361 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26362
26363 write_radio_reg(pi,
26364 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26365 0x3);
26366 write_radio_reg(pi,
26367 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26368 0x7f);
26369 }
26370 }
26371
26372 } else {
26373 if (rx_core == PHY_CORE_0) {
26374 pi->tx_rx_cal_radio_saveregs[0] =
26375 read_radio_reg(pi,
26376 RADIO_2056_TX_RXIQCAL_TXMUX |
26377 RADIO_2056_TX1);
26378 pi->tx_rx_cal_radio_saveregs[1] =
26379 read_radio_reg(pi,
26380 RADIO_2056_RX_RXIQCAL_RXMUX |
26381 RADIO_2056_RX0);
26382
26383 if (pi->pubpi.radiorev >= 5) {
26384 pi->tx_rx_cal_radio_saveregs[2] =
26385 read_radio_reg(pi,
26386 RADIO_2056_RX_RXSPARE2 |
26387 RADIO_2056_RX0);
26388 pi->tx_rx_cal_radio_saveregs[3] =
26389 read_radio_reg(pi,
26390 RADIO_2056_TX_TXSPARE2 |
26391 RADIO_2056_TX1);
26392 }
26393
26394 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26395
26396 if (pi->pubpi.radiorev >= 5) {
26397 pi->tx_rx_cal_radio_saveregs[4] =
26398 read_radio_reg(pi,
26399 RADIO_2056_RX_LNAA_MASTER
26400 | RADIO_2056_RX0);
26401
26402 write_radio_reg(
26403 pi,
26404 RADIO_2056_RX_LNAA_MASTER
26405 | RADIO_2056_RX0, 0x40);
26406
26407 write_radio_reg(pi,
26408 RADIO_2056_TX_TXSPARE2 |
26409 RADIO_2056_TX1, bias_a);
26410
26411 write_radio_reg(pi,
26412 RADIO_2056_RX_RXSPARE2 |
26413 RADIO_2056_RX0, bias_a);
26414 } else {
26415 pi->tx_rx_cal_radio_saveregs[4] =
26416 read_radio_reg(pi,
26417 RADIO_2056_RX_LNAA_TUNE
26418 | RADIO_2056_RX0);
26419
26420 offtune_val =
26421 (pi->tx_rx_cal_radio_saveregs
26422 [2] & 0xF0) >> 8;
26423 offtune_val =
26424 (offtune_val <= 0x7) ? 0xF : 0;
26425
26426 mod_radio_reg(pi,
26427 RADIO_2056_RX_LNAA_TUNE |
26428 RADIO_2056_RX0, 0xF0,
26429 (offtune_val << 8));
26430 }
26431
26432 write_radio_reg(pi,
26433 RADIO_2056_TX_RXIQCAL_TXMUX |
26434 RADIO_2056_TX1, 0x9);
26435 write_radio_reg(pi,
26436 RADIO_2056_RX_RXIQCAL_RXMUX |
26437 RADIO_2056_RX0, 0x9);
26438 } else {
26439 if (pi->pubpi.radiorev >= 5) {
26440 pi->tx_rx_cal_radio_saveregs[4] =
26441 read_radio_reg(
26442 pi,
26443 RADIO_2056_RX_LNAG_MASTER
26444 | RADIO_2056_RX0);
26445
26446 write_radio_reg(
26447 pi,
26448 RADIO_2056_RX_LNAG_MASTER
26449 | RADIO_2056_RX0, 0x40);
26450
26451 write_radio_reg(
26452 pi,
26453 RADIO_2056_TX_TXSPARE2
26454 |
26455 RADIO_2056_TX1, bias_g);
26456
26457 write_radio_reg(
26458 pi,
26459 RADIO_2056_RX_RXSPARE2
26460 |
26461 RADIO_2056_RX0, bias_g);
26462
26463 } else {
26464 pi->tx_rx_cal_radio_saveregs[4] =
26465 read_radio_reg(
26466 pi,
26467 RADIO_2056_RX_LNAG_TUNE
26468 | RADIO_2056_RX0);
26469
26470 offtune_val =
26471 (pi->
26472 tx_rx_cal_radio_saveregs[2] &
26473 0xF0) >> 8;
26474 offtune_val =
26475 (offtune_val <= 0x7) ? 0xF : 0;
26476
26477 mod_radio_reg(pi,
26478 RADIO_2056_RX_LNAG_TUNE |
26479 RADIO_2056_RX0, 0xF0,
26480 (offtune_val << 8));
26481 }
26482
26483 write_radio_reg(pi,
26484 RADIO_2056_TX_RXIQCAL_TXMUX |
26485 RADIO_2056_TX1, 0x6);
26486 write_radio_reg(pi,
26487 RADIO_2056_RX_RXIQCAL_RXMUX |
26488 RADIO_2056_RX0, 0x6);
26489 }
26490
26491 } else {
26492 pi->tx_rx_cal_radio_saveregs[0] =
26493 read_radio_reg(pi,
26494 RADIO_2056_TX_RXIQCAL_TXMUX |
26495 RADIO_2056_TX0);
26496 pi->tx_rx_cal_radio_saveregs[1] =
26497 read_radio_reg(pi,
26498 RADIO_2056_RX_RXIQCAL_RXMUX |
26499 RADIO_2056_RX1);
26500
26501 if (pi->pubpi.radiorev >= 5) {
26502 pi->tx_rx_cal_radio_saveregs[2] =
26503 read_radio_reg(pi,
26504 RADIO_2056_RX_RXSPARE2 |
26505 RADIO_2056_RX1);
26506 pi->tx_rx_cal_radio_saveregs[3] =
26507 read_radio_reg(pi,
26508 RADIO_2056_TX_TXSPARE2 |
26509 RADIO_2056_TX0);
26510 }
26511
26512 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26513
26514 if (pi->pubpi.radiorev >= 5) {
26515 pi->tx_rx_cal_radio_saveregs[4] =
26516 read_radio_reg(
26517 pi,
26518 RADIO_2056_RX_LNAA_MASTER
26519 | RADIO_2056_RX1);
26520
26521 write_radio_reg(
26522 pi,
26523 RADIO_2056_RX_LNAA_MASTER |
26524 RADIO_2056_RX1, 0x40);
26525
26526 write_radio_reg(
26527 pi,
26528 RADIO_2056_TX_TXSPARE2
26529 |
26530 RADIO_2056_TX0, bias_a);
26531
26532 write_radio_reg(
26533 pi,
26534 RADIO_2056_RX_RXSPARE2
26535 |
26536 RADIO_2056_RX1, bias_a);
26537 } else {
26538 pi->tx_rx_cal_radio_saveregs[4] =
26539 read_radio_reg(
26540 pi,
26541 RADIO_2056_RX_LNAA_TUNE
26542 | RADIO_2056_RX1);
26543
26544 offtune_val =
26545 (pi->
26546 tx_rx_cal_radio_saveregs[2] &
26547 0xF0) >> 8;
26548 offtune_val =
26549 (offtune_val <= 0x7) ? 0xF : 0;
26550
26551 mod_radio_reg(pi,
26552 RADIO_2056_RX_LNAA_TUNE |
26553 RADIO_2056_RX1, 0xF0,
26554 (offtune_val << 8));
26555 }
26556
26557 write_radio_reg(pi,
26558 RADIO_2056_TX_RXIQCAL_TXMUX |
26559 RADIO_2056_TX0, 0x9);
26560 write_radio_reg(pi,
26561 RADIO_2056_RX_RXIQCAL_RXMUX |
26562 RADIO_2056_RX1, 0x9);
26563 } else {
26564 if (pi->pubpi.radiorev >= 5) {
26565 pi->tx_rx_cal_radio_saveregs[4] =
26566 read_radio_reg(
26567 pi,
26568 RADIO_2056_RX_LNAG_MASTER
26569 | RADIO_2056_RX1);
26570
26571 write_radio_reg(
26572 pi,
26573 RADIO_2056_RX_LNAG_MASTER
26574 | RADIO_2056_RX1, 0x40);
26575
26576 write_radio_reg(
26577 pi,
26578 RADIO_2056_TX_TXSPARE2
26579 |
26580 RADIO_2056_TX0, bias_g);
26581
26582 write_radio_reg(
26583 pi,
26584 RADIO_2056_RX_RXSPARE2
26585 |
26586 RADIO_2056_RX1, bias_g);
26587 } else {
26588 pi->tx_rx_cal_radio_saveregs[4] =
26589 read_radio_reg(
26590 pi,
26591 RADIO_2056_RX_LNAG_TUNE
26592 | RADIO_2056_RX1);
26593
26594 offtune_val =
26595 (pi->
26596 tx_rx_cal_radio_saveregs[2] &
26597 0xF0) >> 8;
26598 offtune_val =
26599 (offtune_val <= 0x7) ? 0xF : 0;
26600
26601 mod_radio_reg(pi,
26602 RADIO_2056_RX_LNAG_TUNE |
26603 RADIO_2056_RX1, 0xF0,
26604 (offtune_val << 8));
26605 }
26606
26607 write_radio_reg(pi,
26608 RADIO_2056_TX_RXIQCAL_TXMUX |
26609 RADIO_2056_TX0, 0x6);
26610 write_radio_reg(pi,
26611 RADIO_2056_RX_RXIQCAL_RXMUX |
26612 RADIO_2056_RX1, 0x6);
26613 }
26614 }
26615 }
26616}
26617
26618static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26619{
26620 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26621 if (rx_core == PHY_CORE_0) {
26622 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26623 write_radio_reg(
26624 pi,
26625 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26626 pi->
26627 tx_rx_cal_radio_saveregs[0]);
26628 write_radio_reg(
26629 pi,
26630 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26631 pi->
26632 tx_rx_cal_radio_saveregs[1]);
26633
26634 } else {
26635 write_radio_reg(
26636 pi,
26637 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26638 pi->
26639 tx_rx_cal_radio_saveregs[0]);
26640 write_radio_reg(
26641 pi,
26642 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26643 pi->
26644 tx_rx_cal_radio_saveregs[1]);
26645 }
26646
26647 } else {
26648 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26649 write_radio_reg(
26650 pi,
26651 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26652 pi->
26653 tx_rx_cal_radio_saveregs[0]);
26654 write_radio_reg(
26655 pi,
26656 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26657 pi->
26658 tx_rx_cal_radio_saveregs[1]);
26659
26660 } else {
26661 write_radio_reg(
26662 pi,
26663 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26664 pi->
26665 tx_rx_cal_radio_saveregs[0]);
26666 write_radio_reg(
26667 pi,
26668 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26669 pi->
26670 tx_rx_cal_radio_saveregs[1]);
26671 }
26672 }
26673
26674 } else {
26675 if (rx_core == PHY_CORE_0) {
26676 write_radio_reg(pi,
26677 RADIO_2056_TX_RXIQCAL_TXMUX |
26678 RADIO_2056_TX1,
26679 pi->tx_rx_cal_radio_saveregs[0]);
26680
26681 write_radio_reg(pi,
26682 RADIO_2056_RX_RXIQCAL_RXMUX |
26683 RADIO_2056_RX0,
26684 pi->tx_rx_cal_radio_saveregs[1]);
26685
26686 if (pi->pubpi.radiorev >= 5) {
26687 write_radio_reg(pi,
26688 RADIO_2056_RX_RXSPARE2 |
26689 RADIO_2056_RX0,
26690 pi->
26691 tx_rx_cal_radio_saveregs[2]);
26692
26693 write_radio_reg(pi,
26694 RADIO_2056_TX_TXSPARE2 |
26695 RADIO_2056_TX1,
26696 pi->
26697 tx_rx_cal_radio_saveregs[3]);
26698 }
26699
26700 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26701 if (pi->pubpi.radiorev >= 5)
26702 write_radio_reg(
26703 pi,
26704 RADIO_2056_RX_LNAA_MASTER
26705 | RADIO_2056_RX0,
26706 pi->
26707 tx_rx_cal_radio_saveregs
26708 [4]);
26709 else
26710 write_radio_reg(
26711 pi,
26712 RADIO_2056_RX_LNAA_TUNE
26713 | RADIO_2056_RX0,
26714 pi->
26715 tx_rx_cal_radio_saveregs
26716 [4]);
26717 } else {
26718 if (pi->pubpi.radiorev >= 5)
26719 write_radio_reg(
26720 pi,
26721 RADIO_2056_RX_LNAG_MASTER
26722 | RADIO_2056_RX0,
26723 pi->
26724 tx_rx_cal_radio_saveregs
26725 [4]);
26726 else
26727 write_radio_reg(
26728 pi,
26729 RADIO_2056_RX_LNAG_TUNE
26730 | RADIO_2056_RX0,
26731 pi->
26732 tx_rx_cal_radio_saveregs
26733 [4]);
26734 }
26735
26736 } else {
26737 write_radio_reg(pi,
26738 RADIO_2056_TX_RXIQCAL_TXMUX |
26739 RADIO_2056_TX0,
26740 pi->tx_rx_cal_radio_saveregs[0]);
26741
26742 write_radio_reg(pi,
26743 RADIO_2056_RX_RXIQCAL_RXMUX |
26744 RADIO_2056_RX1,
26745 pi->tx_rx_cal_radio_saveregs[1]);
26746
26747 if (pi->pubpi.radiorev >= 5) {
26748 write_radio_reg(pi,
26749 RADIO_2056_RX_RXSPARE2 |
26750 RADIO_2056_RX1,
26751 pi->
26752 tx_rx_cal_radio_saveregs[2]);
26753
26754 write_radio_reg(pi,
26755 RADIO_2056_TX_TXSPARE2 |
26756 RADIO_2056_TX0,
26757 pi->
26758 tx_rx_cal_radio_saveregs[3]);
26759 }
26760
26761 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26762 if (pi->pubpi.radiorev >= 5)
26763 write_radio_reg(
26764 pi,
26765 RADIO_2056_RX_LNAA_MASTER
26766 | RADIO_2056_RX1,
26767 pi->
26768 tx_rx_cal_radio_saveregs
26769 [4]);
26770 else
26771 write_radio_reg(
26772 pi,
26773 RADIO_2056_RX_LNAA_TUNE
26774 | RADIO_2056_RX1,
26775 pi->
26776 tx_rx_cal_radio_saveregs
26777 [4]);
26778 } else {
26779 if (pi->pubpi.radiorev >= 5)
26780 write_radio_reg(
26781 pi,
26782 RADIO_2056_RX_LNAG_MASTER
26783 | RADIO_2056_RX1,
26784 pi->
26785 tx_rx_cal_radio_saveregs
26786 [4]);
26787 else
26788 write_radio_reg(
26789 pi,
26790 RADIO_2056_RX_LNAG_TUNE
26791 | RADIO_2056_RX1,
26792 pi->
26793 tx_rx_cal_radio_saveregs
26794 [4]);
26795 }
26796 }
26797 }
26798}
26799
26800static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26801{
26802 u8 tx_core;
26803 u16 rx_antval, tx_antval;
26804
26805 if (NREV_GE(pi->pubpi.phy_rev, 7))
26806 tx_core = rx_core;
26807 else
26808 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26809
26810 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26811 pi->tx_rx_cal_phy_saveregs[1] =
26812 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26813 pi->tx_rx_cal_phy_saveregs[2] =
26814 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26815 pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26816 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26817 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26818 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26819 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26820 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26821 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26822 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26823 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26824 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26825 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26826 }
26827
26828 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26829 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26830 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26831 0x29b, (0x1 << 0), (0) << 0);
26832
26833 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26834 0x29b, (0x1 << 0), (0) << 0);
26835
26836 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26837
26838 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26839
26840 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26841
26842 } else {
26843
26844 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26845 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26846 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26847 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26848 }
26849
26850 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26851 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26852 (0x1 << 2), (0x1 << 2));
26853 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26854 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26855 (0x1 << 0) | (0x1 << 1), 0);
26856 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26857 0x8f : 0xa5,
26858 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26859 }
26860
26861 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26862 RADIO_MIMO_CORESEL_CORE1 |
26863 RADIO_MIMO_CORESEL_CORE2);
26864
26865 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26866 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26867 0, 0, 0,
26868 NPHY_REV7_RFCTRLOVERRIDE_ID0);
26869 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26870 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26871 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26872 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26873 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26874 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26875 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26876 NPHY_REV7_RFCTRLOVERRIDE_ID2);
26877 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26878 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26879 if (CHSPEC_IS40(pi->radio_chanspec))
26880 wlc_phy_rfctrl_override_nphy_rev7(
26881 pi,
26882 (0x1 << 7),
26883 2, 0, 0,
26884 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26885 else
26886 wlc_phy_rfctrl_override_nphy_rev7(
26887 pi,
26888 (0x1 << 7),
26889 0, 0, 0,
26890 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26891
26892 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26893 0, 0, 0,
26894 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26895 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26896 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26897 } else {
26898 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26899 }
26900
26901 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26902
26903 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26904
26905 wlc_phy_rfctrlintc_override_nphy(pi,
26906 NPHY_RfctrlIntc_override_TRSW,
26907 0x1, rx_core + 1);
26908 } else {
26909
26910 if (rx_core == PHY_CORE_0) {
26911 rx_antval = 0x1;
26912 tx_antval = 0x8;
26913 } else {
26914 rx_antval = 0x4;
26915 tx_antval = 0x2;
26916 }
26917
26918 wlc_phy_rfctrlintc_override_nphy(pi,
26919 NPHY_RfctrlIntc_override_TRSW,
26920 rx_antval, rx_core + 1);
26921 wlc_phy_rfctrlintc_override_nphy(pi,
26922 NPHY_RfctrlIntc_override_TRSW,
26923 tx_antval, tx_core + 1);
26924 }
26925}
26926
26927static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26928{
26929
26930 write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26931 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26932 pi->tx_rx_cal_phy_saveregs[1]);
26933 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26934 pi->tx_rx_cal_phy_saveregs[2]);
26935 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26936 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26937
26938 write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26939 write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26940 write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26941 write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26942 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26943 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26944 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26945 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26946 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26947 }
26948
26949 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26950 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26951}
26952
26953static void
26954wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26955 u16 *rxgain, u8 cal_type)
26956{
26957
26958 u16 num_samps;
26959 struct phy_iq_est est[PHY_CORE_MAX];
26960 u8 tx_core;
26961 struct nphy_iq_comp save_comp, zero_comp;
26962 u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26963 thresh_pwr = 10000;
26964 s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26965 bool gainctrl_done = false;
26966 u8 mix_tia_gain = 3;
26967 s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26968 s8 curr_gaintbl_index = 3;
26969 u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26970 const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26971 u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26972 int fine_gain_idx;
26973 s8 txpwrindex;
26974 u16 nphy_rxcal_txgain[2];
26975
26976 if (NREV_GE(pi->pubpi.phy_rev, 7))
26977 tx_core = rx_core;
26978 else
26979 tx_core = 1 - rx_core;
26980
26981 num_samps = 1024;
26982 desired_log2_pwr = (cal_type == 0) ? 13 : 13;
26983
26984 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26985 zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26986 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26987
26988 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26989 if (NREV_GE(pi->pubpi.phy_rev, 7))
26990 mix_tia_gain = 3;
26991 else if (NREV_GE(pi->pubpi.phy_rev, 4))
26992 mix_tia_gain = 4;
26993 else
26994 mix_tia_gain = 6;
26995 if (NREV_GE(pi->pubpi.phy_rev, 7))
26996 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26997 else
26998 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26999 } else {
27000 if (NREV_GE(pi->pubpi.phy_rev, 7))
27001 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27002 else
27003 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27004 }
27005
27006 do {
27007
27008 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27009 0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27010 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27011 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27012 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27013 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27014 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27015
27016 if (NREV_GE(pi->pubpi.phy_rev, 7))
27017 wlc_phy_rfctrl_override_1tomany_nphy(
27018 pi,
27019 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27020 ((lpf_biq1 << 12) |
27021 (lpf_biq0 << 8) |
27022 (mix_tia_gain << 4) | (lna2 << 2)
27023 | lna1), 0x3, 0);
27024 else
27025 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27026 ((hpvga << 12) |
27027 (lpf_biq1 << 10) |
27028 (lpf_biq0 << 8) |
27029 (mix_tia_gain << 4) |
27030 (lna2 << 2) | lna1), 0x3,
27031 0);
27032
27033 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27034
27035 if (txpwrindex == -1) {
27036 nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27037 nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27038 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27039 2, 0x110, 16,
27040 nphy_rxcal_txgain);
27041 } else {
27042 wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27043 false);
27044 }
27045
27046 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27047 NPHY_RXCAL_TONEFREQ_40MHz :
27048 NPHY_RXCAL_TONEFREQ_20MHz,
27049 NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27050
27051 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27052 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27053 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27054 curr_pwr = i_pwr + q_pwr;
27055
27056 switch (gainctrl_dirn) {
27057 case NPHY_RXCAL_GAIN_INIT:
27058 if (curr_pwr > thresh_pwr) {
27059 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27060 prev_gaintbl_index = curr_gaintbl_index;
27061 curr_gaintbl_index--;
27062 } else {
27063 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27064 prev_gaintbl_index = curr_gaintbl_index;
27065 curr_gaintbl_index++;
27066 }
27067 break;
27068
27069 case NPHY_RXCAL_GAIN_UP:
27070 if (curr_pwr > thresh_pwr) {
27071 gainctrl_done = true;
27072 optim_pwr = prev_pwr;
27073 optim_gaintbl_index = prev_gaintbl_index;
27074 } else {
27075 prev_gaintbl_index = curr_gaintbl_index;
27076 curr_gaintbl_index++;
27077 }
27078 break;
27079
27080 case NPHY_RXCAL_GAIN_DOWN:
27081 if (curr_pwr > thresh_pwr) {
27082 prev_gaintbl_index = curr_gaintbl_index;
27083 curr_gaintbl_index--;
27084 } else {
27085 gainctrl_done = true;
27086 optim_pwr = curr_pwr;
27087 optim_gaintbl_index = curr_gaintbl_index;
27088 }
27089 break;
27090
27091 default:
27092 break;
27093 }
27094
27095 if ((curr_gaintbl_index < 0) ||
27096 (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27097 gainctrl_done = true;
27098 optim_pwr = curr_pwr;
27099 optim_gaintbl_index = prev_gaintbl_index;
27100 } else {
27101 prev_pwr = curr_pwr;
27102 }
27103
27104 wlc_phy_stopplayback_nphy(pi);
27105 } while (!gainctrl_done);
27106
27107 hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27108 lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27109 lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27110 lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27111 lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27112 txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27113
27114 actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27115 delta_pwr = desired_log2_pwr - actual_log2_pwr;
27116
27117 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27118 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27119
27120 if (fine_gain_idx + (int)lpf_biq0 > 10)
27121 lpf_biq1 = 10 - lpf_biq0;
27122 else
27123 lpf_biq1 = (u16) max(fine_gain_idx, 0);
27124
27125 wlc_phy_rfctrl_override_1tomany_nphy(
27126 pi,
27127 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27128 ((lpf_biq1 << 12) |
27129 (lpf_biq0 << 8) |
27130 (mix_tia_gain << 4) |
27131 (lna2 << 2) | lna1), 0x3,
27132 0);
27133 } else {
27134 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27135 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27136 ((hpvga << 12) |
27137 (lpf_biq1 << 10) |
27138 (lpf_biq0 << 8) |
27139 (mix_tia_gain << 4) |
27140 (lna2 << 2) |
27141 lna1), 0x3, 0);
27142 }
27143
27144 if (rxgain != NULL) {
27145 *rxgain++ = lna1;
27146 *rxgain++ = lna2;
27147 *rxgain++ = mix_tia_gain;
27148 *rxgain++ = lpf_biq0;
27149 *rxgain++ = lpf_biq1;
27150 *rxgain = hpvga;
27151 }
27152
27153 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27154}
27155
27156static void
27157wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27158 u8 cal_type)
27159{
27160 wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27161}
27162
27163static u8
27164wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27165{
27166 u32 target_bws[2] = { 9500, 21000 };
27167 u32 ref_tones[2] = { 3000, 6000 };
27168 u32 target_bw, ref_tone;
27169
27170 u32 target_pwr_ratios[2] = { 28606, 18468 };
27171 u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27172
27173 u16 start_rccal_ovr_val = 128;
27174 u16 txlpf_rccal_lpc_ovr_val = 128;
27175 u16 rxlpf_rccal_hpc_ovr_val = 159;
27176
27177 u16 orig_txlpf_rccal_lpc_ovr_val;
27178 u16 orig_rxlpf_rccal_hpc_ovr_val;
27179 u16 radio_addr_offset_rx;
27180 u16 radio_addr_offset_tx;
27181 u16 orig_dcBypass;
27182 u16 orig_RxStrnFilt40Num[6];
27183 u16 orig_RxStrnFilt40Den[4];
27184 u16 orig_rfctrloverride[2];
27185 u16 orig_rfctrlauxreg[2];
27186 u16 orig_rfctrlrssiothers;
27187 u16 tx_lpf_bw = 4;
27188
27189 u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27190 u16 lpf_hpc = 7, hpvga_hpc = 7;
27191
27192 s8 rccal_stepsize;
27193 u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27194 u32 ref_iq_vals = 0, target_iq_vals = 0;
27195 u16 num_samps, log_num_samps = 10;
27196 struct phy_iq_est est[PHY_CORE_MAX];
27197
27198 if (NREV_GE(pi->pubpi.phy_rev, 7))
27199 return 0;
27200
27201 num_samps = (1 << log_num_samps);
27202
27203 if (CHSPEC_IS40(pi->radio_chanspec)) {
27204 target_bw = target_bws[1];
27205 target_pwr_ratio = target_pwr_ratios[1];
27206 ref_tone = ref_tones[1];
27207 rx_lpf_bw = rx_lpf_bws[1];
27208 } else {
27209 target_bw = target_bws[0];
27210 target_pwr_ratio = target_pwr_ratios[0];
27211 ref_tone = ref_tones[0];
27212 rx_lpf_bw = rx_lpf_bws[0];
27213 }
27214
27215 if (core_idx == 0) {
27216 radio_addr_offset_rx = RADIO_2056_RX0;
27217 radio_addr_offset_tx =
27218 (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27219 } else {
27220 radio_addr_offset_rx = RADIO_2056_RX1;
27221 radio_addr_offset_tx =
27222 (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27223 }
27224
27225 orig_txlpf_rccal_lpc_ovr_val =
27226 read_radio_reg(pi,
27227 (RADIO_2056_TX_TXLPF_RCCAL |
27228 radio_addr_offset_tx));
27229 orig_rxlpf_rccal_hpc_ovr_val =
27230 read_radio_reg(pi,
27231 (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27232 radio_addr_offset_rx));
27233
27234 orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27235
27236 orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27237 orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27238 orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27239 orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27240 orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27241 orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27242 orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27243 orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27244 orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27245 orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27246
27247 orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27248 orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27249 orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27250 orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27251 orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27252
27253 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27254 txlpf_rccal_lpc_ovr_val);
27255
27256 write_radio_reg(pi,
27257 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27258 rxlpf_rccal_hpc_ovr_val);
27259
27260 mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27261
27262 write_phy_reg(pi, 0x267, 0x02d4);
27263 write_phy_reg(pi, 0x268, 0x0000);
27264 write_phy_reg(pi, 0x269, 0x0000);
27265 write_phy_reg(pi, 0x26a, 0x0000);
27266 write_phy_reg(pi, 0x26b, 0x0000);
27267 write_phy_reg(pi, 0x26c, 0x02d4);
27268 write_phy_reg(pi, 0x26d, 0x0000);
27269 write_phy_reg(pi, 0x26e, 0x0000);
27270 write_phy_reg(pi, 0x26f, 0x0000);
27271 write_phy_reg(pi, 0x270, 0x0000);
27272
27273 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27274 or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27275 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27276 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27277
27278 mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27279 (0x7 << 10), (tx_lpf_bw << 10));
27280 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27281 (0x7 << 0), (hpvga_hpc << 0));
27282 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27283 (0x7 << 4), (lpf_hpc << 4));
27284 mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27285 (0x7 << 8), (rx_lpf_bw << 8));
27286
27287 rccal_stepsize = 16;
27288 rccal_val = start_rccal_ovr_val + rccal_stepsize;
27289
27290 while (rccal_stepsize >= 0) {
27291 write_radio_reg(pi,
27292 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27293 radio_addr_offset_rx), rccal_val);
27294
27295 if (rccal_stepsize == 16) {
27296
27297 wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27298 0, 1, false);
27299 udelay(2);
27300
27301 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27302
27303 if (core_idx == 0)
27304 ref_iq_vals =
27305 max_t(u32, (est[0].i_pwr +
27306 est[0].q_pwr) >>
27307 (log_num_samps + 1),
27308 1);
27309 else
27310 ref_iq_vals =
27311 max_t(u32, (est[1].i_pwr +
27312 est[1].q_pwr) >>
27313 (log_num_samps + 1),
27314 1);
27315
27316 wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27317 0, 1, false);
27318 udelay(2);
27319 }
27320
27321 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27322
27323 if (core_idx == 0)
27324 target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27325 (log_num_samps + 1);
27326 else
27327 target_iq_vals =
27328 (est[1].i_pwr +
27329 est[1].q_pwr) >> (log_num_samps + 1);
27330
27331 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27332
27333 if (rccal_stepsize == 0)
27334 rccal_stepsize--;
27335 else if (rccal_stepsize == 1) {
27336 last_rccal_val = rccal_val;
27337 rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27338 last_pwr_ratio = pwr_ratio;
27339 rccal_stepsize--;
27340 } else {
27341 rccal_stepsize = (rccal_stepsize >> 1);
27342 rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27343 rccal_stepsize : (-rccal_stepsize));
27344 }
27345
27346 if (rccal_stepsize == -1) {
27347 best_rccal_val =
27348 (abs((int)last_pwr_ratio -
27349 (int)target_pwr_ratio) <
27350 abs((int)pwr_ratio -
27351 (int)target_pwr_ratio)) ? last_rccal_val :
27352 rccal_val;
27353
27354 if (CHSPEC_IS40(pi->radio_chanspec)) {
27355 if ((best_rccal_val > 140)
27356 || (best_rccal_val < 135))
27357 best_rccal_val = 138;
27358 } else {
27359 if ((best_rccal_val > 142)
27360 || (best_rccal_val < 137))
27361 best_rccal_val = 140;
27362 }
27363
27364 write_radio_reg(pi,
27365 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27366 radio_addr_offset_rx), best_rccal_val);
27367 }
27368 }
27369
27370 wlc_phy_stopplayback_nphy(pi);
27371
27372 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27373 orig_txlpf_rccal_lpc_ovr_val);
27374 write_radio_reg(pi,
27375 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27376 orig_rxlpf_rccal_hpc_ovr_val);
27377
27378 mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27379
27380 write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27381 write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27382 write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27383 write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27384 write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27385 write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27386 write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27387 write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27388 write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27389 write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27390
27391 write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27392 write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27393 write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27394 write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27395 write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27396
27397 pi->nphy_anarxlpf_adjusted = false;
27398
27399 return best_rccal_val - 0x80;
27400}
27401
27402#define WAIT_FOR_SCOPE 4000
27403static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27404 struct nphy_txgains target_gain,
27405 u8 cal_type, bool debug)
27406{
27407 u16 orig_BBConfig;
27408 u8 core_no, rx_core;
27409 u8 best_rccal[2];
27410 u16 gain_save[2];
27411 u16 cal_gain[2];
27412 struct nphy_iqcal_params cal_params[2];
27413 u8 rxcore_state;
27414 s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27415 s8 txlpf_idac;
27416 bool phyhang_avoid_state = false;
27417 bool skip_rxiqcal = false;
27418
27419 orig_BBConfig = read_phy_reg(pi, 0x01);
27420 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27421
27422 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27423
27424 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27425 phyhang_avoid_state = pi->phyhang_avoid;
27426 pi->phyhang_avoid = false;
27427 }
27428
27429 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27430
27431 for (core_no = 0; core_no <= 1; core_no++) {
27432 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27433 &cal_params[core_no]);
27434 cal_gain[core_no] = cal_params[core_no].cal_gain;
27435 }
27436
27437 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27438
27439 rxcore_state = wlc_phy_rxcore_getstate_nphy(
27440 (struct brcms_phy_pub *) pi);
27441
27442 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27443
27444 skip_rxiqcal =
27445 ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27446
27447 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27448
27449 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27450
27451 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27452
27453 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27454
27455 wlc_phy_tx_tone_nphy(pi,
27456 (CHSPEC_IS40(
27457 pi->radio_chanspec)) ?
27458 NPHY_RXCAL_TONEFREQ_40MHz :
27459 NPHY_RXCAL_TONEFREQ_20MHz,
27460 NPHY_RXCAL_TONEAMP, 0, cal_type,
27461 false);
27462
27463 if (debug)
27464 mdelay(WAIT_FOR_SCOPE);
27465
27466 wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27467 wlc_phy_stopplayback_nphy(pi);
27468 }
27469
27470 if (((cal_type == 1) || (cal_type == 2))
27471 && NREV_LT(pi->pubpi.phy_rev, 7)) {
27472
27473 if (rx_core == PHY_CORE_1) {
27474
27475 if (rxcore_state == 1)
27476 wlc_phy_rxcore_setstate_nphy(
27477 (struct brcms_phy_pub *) pi, 3);
27478
27479 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27480 1);
27481
27482 best_rccal[rx_core] =
27483 wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27484 pi->nphy_rccal_value = best_rccal[rx_core];
27485
27486 if (rxcore_state == 1)
27487 wlc_phy_rxcore_setstate_nphy(
27488 (struct brcms_phy_pub *) pi,
27489 rxcore_state);
27490 }
27491 }
27492
27493 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27494
27495 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27496 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27497 }
27498
27499 if ((cal_type == 1) || (cal_type == 2)) {
27500
27501 best_rccal[0] = best_rccal[1];
27502 write_radio_reg(pi,
27503 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27504 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27505
27506 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27507 rxlpf_rccal_hpc =
27508 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27509 txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27510
27511 if (PHY_IPA(pi)) {
27512 txlpf_rccal_lpc +=
27513 (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27514 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27515 0x0e : 0x13;
27516 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27517 TXLPF_IDAC_4, txlpf_idac);
27518 }
27519
27520 rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27521 0);
27522 txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27523 0);
27524
27525 write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27526 ((rx_core ==
27527 PHY_CORE_0) ? RADIO_2056_RX0 :
27528 RADIO_2056_RX1)),
27529 (rxlpf_rccal_hpc | 0x80));
27530
27531 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27532 ((rx_core ==
27533 PHY_CORE_0) ? RADIO_2056_TX0 :
27534 RADIO_2056_TX1)),
27535 (txlpf_rccal_lpc | 0x80));
27536 }
27537 }
27538
27539 write_phy_reg(pi, 0x01, orig_BBConfig);
27540
27541 wlc_phy_resetcca_nphy(pi);
27542
27543 if (NREV_GE(pi->pubpi.phy_rev, 7))
27544 wlc_phy_rfctrl_override_1tomany_nphy(
27545 pi,
27546 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27547 0, 0x3, 1);
27548 else
27549 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27550
27551 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27552
27553 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27554 gain_save);
27555
27556 if (NREV_GE(pi->pubpi.phy_rev, 4))
27557 pi->phyhang_avoid = phyhang_avoid_state;
27558
27559 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27560
27561 return 0;
27562}
27563
27564static int
27565wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27566 struct nphy_txgains target_gain, bool debug)
27567{
27568 struct phy_iq_est est[PHY_CORE_MAX];
27569 u8 core_num, rx_core, tx_core;
27570 u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27571 u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27572 u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27573 s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27574 s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27575 u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27576 u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27577 u16 num_samps;
27578 u32 i_pwr, q_pwr, tot_pwr[3];
27579 u8 gain_pass, use_hpf_num;
27580 u16 mask, val1, val2;
27581 u16 core_no;
27582 u16 gain_save[2];
27583 u16 cal_gain[2];
27584 struct nphy_iqcal_params cal_params[2];
27585 u8 phy_bw;
27586 int bcmerror = 0;
27587 bool first_playtone = true;
27588
27589 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27590
27591 if (NREV_LT(pi->pubpi.phy_rev, 2))
27592 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27593
27594 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27595
27596 for (core_no = 0; core_no <= 1; core_no++) {
27597 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27598 &cal_params[core_no]);
27599 cal_gain[core_no] = cal_params[core_no].cal_gain;
27600 }
27601
27602 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27603
27604 num_samps = 1024;
27605 desired_log2_pwr = 13;
27606
27607 for (core_num = 0; core_num < 2; core_num++) {
27608
27609 rx_core = core_num;
27610 tx_core = 1 - core_num;
27611
27612 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27613 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27614 0xa6 : 0xa7);
27615 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27616 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27617 0x91 : 0x92);
27618 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27619 0x91 : 0x92);
27620
27621 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27622 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27623
27624 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27625 ((0x1 << 1) | (0x1 << 2)));
27626 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27627
27628 if (((pi->nphy_rxcalparams) & 0xff000000))
27629 write_phy_reg(pi,
27630 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27631 (CHSPEC_IS5G(pi->radio_chanspec) ?
27632 0x140 : 0x110));
27633 else
27634 write_phy_reg(pi,
27635 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27636 (CHSPEC_IS5G(pi->radio_chanspec) ?
27637 0x180 : 0x120));
27638
27639 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27640 (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27641 0x114));
27642
27643 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27644 if (rx_core == PHY_CORE_0) {
27645 val1 = RADIO_2055_COUPLE_RX_MASK;
27646 val2 = RADIO_2055_COUPLE_TX_MASK;
27647 } else {
27648 val1 = RADIO_2055_COUPLE_TX_MASK;
27649 val2 = RADIO_2055_COUPLE_RX_MASK;
27650 }
27651
27652 if ((pi->nphy_rxcalparams & 0x10000)) {
27653 mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27654 val1);
27655 mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27656 val2);
27657 }
27658
27659 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27660
27661 if (debug)
27662 mdelay(WAIT_FOR_SCOPE);
27663
27664 if (gain_pass < 3) {
27665 curr_lna = lna_vals[gain_pass];
27666 curr_hpf1 = hpf1_vals[gain_pass];
27667 curr_hpf2 = hpf2_vals[gain_pass];
27668 } else {
27669
27670 if (tot_pwr[1] > 10000) {
27671 curr_lna = lna_vals[2];
27672 curr_hpf1 = hpf1_vals[2];
27673 curr_hpf2 = hpf2_vals[2];
27674 use_hpf_num = 1;
27675 curr_hpf = curr_hpf1;
27676 actual_log2_pwr =
27677 wlc_phy_nbits(tot_pwr[2]);
27678 } else {
27679 if (tot_pwr[0] > 10000) {
27680 curr_lna = lna_vals[1];
27681 curr_hpf1 = hpf1_vals[1];
27682 curr_hpf2 = hpf2_vals[1];
27683 use_hpf_num = 1;
27684 curr_hpf = curr_hpf1;
27685 actual_log2_pwr =
27686 wlc_phy_nbits(
27687 tot_pwr[1]);
27688 } else {
27689 curr_lna = lna_vals[0];
27690 curr_hpf1 = hpf1_vals[0];
27691 curr_hpf2 = hpf2_vals[0];
27692 use_hpf_num = 2;
27693 curr_hpf = curr_hpf2;
27694 actual_log2_pwr =
27695 wlc_phy_nbits(
27696 tot_pwr[0]);
27697 }
27698 }
27699
27700 hpf_change = desired_log2_pwr - actual_log2_pwr;
27701 curr_hpf += hpf_change;
27702 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27703 if (use_hpf_num == 1)
27704 curr_hpf1 = curr_hpf;
27705 else
27706 curr_hpf2 = curr_hpf;
27707 }
27708
27709 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27710 ((curr_hpf2 << 8) |
27711 (curr_hpf1 << 4) |
27712 (curr_lna << 2)), 0x3, 0);
27713 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27714
27715 wlc_phy_stopplayback_nphy(pi);
27716
27717 if (first_playtone) {
27718 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27719 (u16) (pi->nphy_rxcalparams &
27720 0xffff), 0, 0, true);
27721 first_playtone = false;
27722 } else {
27723 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27724 40 : 20;
27725 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27726 0, 0, 0, true);
27727 }
27728
27729 if (bcmerror == 0) {
27730 if (gain_pass < 3) {
27731
27732 wlc_phy_rx_iq_est_nphy(pi, est,
27733 num_samps, 32,
27734 0);
27735 i_pwr = (est[rx_core].i_pwr +
27736 num_samps / 2) / num_samps;
27737 q_pwr = (est[rx_core].q_pwr +
27738 num_samps / 2) / num_samps;
27739 tot_pwr[gain_pass] = i_pwr + q_pwr;
27740 } else {
27741
27742 wlc_phy_calc_rx_iq_comp_nphy(pi,
27743 (1 <<
27744 rx_core));
27745 }
27746
27747 wlc_phy_stopplayback_nphy(pi);
27748 }
27749
27750 if (bcmerror != 0)
27751 break;
27752 }
27753
27754 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27755 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27756
27757 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27758 0x92, orig_RfctrlIntcTx);
27759 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27760 0x92, orig_RfctrlIntcRx);
27761 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27762 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27763 0xa7, orig_AfectrlCore);
27764 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27765
27766 if (bcmerror != 0)
27767 break;
27768 }
27769
27770 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27771 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27772
27773 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27774 gain_save);
27775
27776 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27777
27778 return bcmerror;
27779}
27780
27781int
27782wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27783 u8 cal_type, bool debug)
27784{
27785 if (NREV_GE(pi->pubpi.phy_rev, 7))
27786 cal_type = 0;
27787
27788 if (NREV_GE(pi->pubpi.phy_rev, 3))
27789 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27790 debug);
27791 else
27792 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27793}
27794
27795void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27796{
27797 uint core;
27798 u32 txgain;
27799 u16 rad_gain, dac_gain, bbmult, m1m2;
27800 u8 txpi[2], chan_freq_range;
27801 s32 rfpwr_offset;
27802
27803 if (pi->phyhang_avoid)
27804 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27805
27806 if (pi->sh->sromrev < 4) {
27807 txpi[0] = txpi[1] = 72;
27808 } else {
27809
27810 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27811 switch (chan_freq_range) {
27812 case WL_CHAN_FREQ_RANGE_2G:
Arend van Spriel5b435de2011-10-05 13:19:03 +020027813 case WL_CHAN_FREQ_RANGE_5GL:
Arend van Spriel5b435de2011-10-05 13:19:03 +020027814 case WL_CHAN_FREQ_RANGE_5GM:
Arend van Spriel5b435de2011-10-05 13:19:03 +020027815 case WL_CHAN_FREQ_RANGE_5GH:
Arend van Spriel32cb68b2011-10-18 14:03:05 +020027816 txpi[0] = 0;
27817 txpi[1] = 0;
Arend van Spriel5b435de2011-10-05 13:19:03 +020027818 break;
27819 default:
27820 txpi[0] = txpi[1] = 91;
27821 break;
27822 }
27823 }
27824
27825 if (NREV_GE(pi->pubpi.phy_rev, 7))
27826 txpi[0] = txpi[1] = 30;
27827 else if (NREV_GE(pi->pubpi.phy_rev, 3))
27828 txpi[0] = txpi[1] = 40;
27829
27830 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27831
27832 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27833 (txpi[1] < 40) || (txpi[1] > 100))
27834 txpi[0] = txpi[1] = 91;
27835 }
27836
27837 pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27838 pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27839 pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27840 pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27841
27842 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27843 uint phyrev = pi->pubpi.phy_rev;
27844
27845 if (NREV_GE(phyrev, 3)) {
27846 if (PHY_IPA(pi)) {
27847 u32 *tx_gaintbl =
27848 wlc_phy_get_ipa_gaintbl_nphy(pi);
27849 txgain = tx_gaintbl[txpi[core]];
27850 } else {
27851 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27852 if (NREV_IS(phyrev, 3)) {
27853 txgain =
27854 nphy_tpc_5GHz_txgain_rev3
27855 [txpi[core]];
27856 } else if (NREV_IS(phyrev, 4)) {
27857 txgain = (
27858 pi->srom_fem5g.extpagain ==
27859 3) ?
27860 nphy_tpc_5GHz_txgain_HiPwrEPA
27861 [txpi[core]] :
27862 nphy_tpc_5GHz_txgain_rev4
27863 [txpi[core]];
27864 } else {
27865 txgain =
27866 nphy_tpc_5GHz_txgain_rev5
27867 [txpi[core]];
27868 }
27869 } else {
27870 if (NREV_GE(phyrev, 5) &&
27871 (pi->srom_fem2g.extpagain == 3)) {
27872 txgain =
27873 nphy_tpc_txgain_HiPwrEPA
27874 [txpi[core]];
27875 } else {
27876 txgain = nphy_tpc_txgain_rev3
27877 [txpi[core]];
27878 }
27879 }
27880 }
27881 } else {
27882 txgain = nphy_tpc_txgain[txpi[core]];
27883 }
27884
27885 if (NREV_GE(phyrev, 3))
27886 rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27887 else
27888 rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27889
27890 if (NREV_GE(phyrev, 7))
27891 dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27892 else
27893 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27894
27895 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27896
27897 if (NREV_GE(phyrev, 3))
27898 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27899 0xa5), (0x1 << 8), (0x1 << 8));
27900 else
27901 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27902
27903 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27904
27905 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27906 &rad_gain);
27907
27908 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27909 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27910 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27911 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27912
27913 if (PHY_IPA(pi)) {
27914 wlc_phy_table_read_nphy(pi,
27915 (core ==
27916 PHY_CORE_0 ?
27917 NPHY_TBL_ID_CORE1TXPWRCTL :
27918 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27919 576 + txpi[core], 32,
27920 &rfpwr_offset);
27921
27922 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27923 0x29b, (0x1ff << 4),
27924 ((s16) rfpwr_offset) << 4);
27925
27926 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27927 0x29b, (0x1 << 2), (1) << 2);
27928
27929 }
27930 }
27931
27932 and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27933
27934 if (pi->phyhang_avoid)
27935 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27936}
27937
27938static void
27939wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27940 u8 tmp_max_pwr, u8 rate_start,
27941 u8 rate_end)
27942{
27943 u8 rate;
27944 u8 word_num, nibble_num;
27945 u8 tmp_nibble;
27946
27947 for (rate = rate_start; rate <= rate_end; rate++) {
27948 word_num = (rate - rate_start) >> 2;
27949 nibble_num = (rate - rate_start) & 0x3;
27950 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27951
27952 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27953 }
27954}
27955
27956static void
27957wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27958 u8 rate_start, u8 rate_end)
27959{
27960 u8 rate;
27961
27962 for (rate = rate_start; rate <= rate_end; rate++)
27963 srom_max[rate] -= 2 * pwr_offset;
27964}
27965
27966void
27967wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27968 u8 rate_mcs_end, u8 rate_ofdm_start)
27969{
27970 u8 rate1, rate2;
27971
27972 rate2 = rate_ofdm_start;
27973 for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27974 power[rate1] = power[rate2];
27975 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27976 }
27977 power[rate_mcs_end] = power[rate_mcs_end - 1];
27978}
27979
27980void
27981wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27982 u8 rate_ofdm_end, u8 rate_mcs_start)
27983{
27984 u8 rate1, rate2;
27985
27986 for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27987 rate1 <= rate_ofdm_end; rate1++, rate2++) {
27988 power[rate1] = power[rate2];
27989 if (rate1 == rate_ofdm_start)
27990 power[++rate1] = power[rate2];
27991 }
27992}
27993
27994void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27995{
27996 uint rate1, rate2, band_num;
27997 u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27998 u8 tmp_max_pwr = 0;
27999 u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28000 u8 *tx_srom_max_rate = NULL;
28001
28002 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28003 band_num++) {
28004 switch (band_num) {
28005 case 0:
28006
28007 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28008 pi->nphy_pwrctrl_info[1].max_pwr_2g);
28009
28010 pwr_offsets1[0] = pi->cck2gpo;
28011 wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28012 pwr_offsets1,
28013 tmp_max_pwr,
28014 TXP_FIRST_CCK,
28015 TXP_LAST_CCK);
28016
28017 pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28018 pwr_offsets1[1] =
28019 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28020
28021 pwr_offsets2 = pi->mcs2gpo;
28022
28023 tmp_cddpo = pi->cdd2gpo;
28024 tmp_stbcpo = pi->stbc2gpo;
28025 tmp_bw40po = pi->bw402gpo;
28026
28027 tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28028 break;
28029 case 1:
28030
28031 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28032 pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28033
28034 pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28035 pwr_offsets1[1] =
28036 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28037
28038 pwr_offsets2 = pi->mcs5gpo;
28039
28040 tmp_cddpo = pi->cdd5gpo;
28041 tmp_stbcpo = pi->stbc5gpo;
28042 tmp_bw40po = pi->bw405gpo;
28043
28044 tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28045 break;
28046 case 2:
28047
28048 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28049 pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28050
28051 pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28052 pwr_offsets1[1] =
28053 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28054
28055 pwr_offsets2 = pi->mcs5glpo;
28056
28057 tmp_cddpo = pi->cdd5glpo;
28058 tmp_stbcpo = pi->stbc5glpo;
28059 tmp_bw40po = pi->bw405glpo;
28060
28061 tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28062 break;
28063 case 3:
28064
28065 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28066 pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28067
28068 pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28069 pwr_offsets1[1] =
28070 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28071
28072 pwr_offsets2 = pi->mcs5ghpo;
28073
28074 tmp_cddpo = pi->cdd5ghpo;
28075 tmp_stbcpo = pi->stbc5ghpo;
28076 tmp_bw40po = pi->bw405ghpo;
28077
28078 tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28079 break;
28080 }
28081
28082 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28083 tmp_max_pwr, TXP_FIRST_OFDM,
28084 TXP_LAST_OFDM);
28085
28086 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28087 TXP_FIRST_MCS_20_SISO,
28088 TXP_LAST_MCS_20_SISO,
28089 TXP_FIRST_OFDM);
28090
28091 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28092 tmp_max_pwr,
28093 TXP_FIRST_MCS_20_CDD,
28094 TXP_LAST_MCS_20_CDD);
28095
28096 if (NREV_GE(pi->pubpi.phy_rev, 3))
28097 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28098 TXP_FIRST_MCS_20_CDD,
28099 TXP_LAST_MCS_20_CDD);
28100
28101 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28102 TXP_FIRST_OFDM_20_CDD,
28103 TXP_LAST_OFDM_20_CDD,
28104 TXP_FIRST_MCS_20_CDD);
28105
28106 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28107 tmp_max_pwr,
28108 TXP_FIRST_MCS_20_STBC,
28109 TXP_LAST_MCS_20_STBC);
28110
28111 if (NREV_GE(pi->pubpi.phy_rev, 3))
28112 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28113 tmp_stbcpo,
28114 TXP_FIRST_MCS_20_STBC,
28115 TXP_LAST_MCS_20_STBC);
28116
28117 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28118 &pwr_offsets2[2], tmp_max_pwr,
28119 TXP_FIRST_MCS_20_SDM,
28120 TXP_LAST_MCS_20_SDM);
28121
28122 if (NPHY_IS_SROM_REINTERPRET) {
28123
28124 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28125 &pwr_offsets2[4],
28126 tmp_max_pwr,
28127 TXP_FIRST_MCS_40_SISO,
28128 TXP_LAST_MCS_40_SISO);
28129
28130 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28131 TXP_FIRST_OFDM_40_SISO,
28132 TXP_LAST_OFDM_40_SISO,
28133 TXP_FIRST_MCS_40_SISO);
28134
28135 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28136 &pwr_offsets2[4],
28137 tmp_max_pwr,
28138 TXP_FIRST_MCS_40_CDD,
28139 TXP_LAST_MCS_40_CDD);
28140
28141 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28142 TXP_FIRST_MCS_40_CDD,
28143 TXP_LAST_MCS_40_CDD);
28144
28145 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28146 TXP_FIRST_OFDM_40_CDD,
28147 TXP_LAST_OFDM_40_CDD,
28148 TXP_FIRST_MCS_40_CDD);
28149
28150 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28151 &pwr_offsets2[4],
28152 tmp_max_pwr,
28153 TXP_FIRST_MCS_40_STBC,
28154 TXP_LAST_MCS_40_STBC);
28155
28156 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28157 tmp_stbcpo,
28158 TXP_FIRST_MCS_40_STBC,
28159 TXP_LAST_MCS_40_STBC);
28160
28161 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28162 &pwr_offsets2[6],
28163 tmp_max_pwr,
28164 TXP_FIRST_MCS_40_SDM,
28165 TXP_LAST_MCS_40_SDM);
28166 } else {
28167
28168 for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28169 TXP_FIRST_OFDM;
28170 rate1 <= TXP_LAST_MCS_40_SDM;
28171 rate1++, rate2++)
28172 tx_srom_max_rate[rate1] =
28173 tx_srom_max_rate[rate2];
28174 }
28175
28176 if (NREV_GE(pi->pubpi.phy_rev, 3))
28177 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28178 tmp_bw40po,
28179 TXP_FIRST_OFDM_40_SISO,
28180 TXP_LAST_MCS_40_SDM);
28181
28182 tx_srom_max_rate[TXP_MCS_32] =
28183 tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28184 }
28185
28186 return;
28187}
28188
28189void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28190{
28191 u8 tx_pwr_ctrl_state;
28192 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28193 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28194
28195 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28196
28197 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28198 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
Arend van Spriel4b006b12011-12-08 15:06:54 -080028199 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
Arend van Spriel5b435de2011-10-05 13:19:03 +020028200 udelay(1);
28201 }
28202
28203 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28204
28205 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28206 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28207}
28208
28209static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28210{
28211 return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28212 (0x1 << 14) | (0x1 << 13));
28213}
28214
28215u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28216{
28217 u16 tmp;
28218 u16 pwr_idx[2];
28219
28220 if (wlc_phy_txpwr_ison_nphy(pi)) {
28221 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28222 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28223
28224 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28225 } else {
28226 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28227 << 8) |
28228 (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28229 }
28230
28231 return tmp;
28232}
28233
28234void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28235{
28236 if (PHY_IPA(pi)
28237 && (pi->nphy_force_papd_cal
28238 || (wlc_phy_txpwr_ison_nphy(pi)
28239 &&
28240 (((u32)
28241 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28242 pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28243 || ((u32)
28244 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28245 pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28246 wlc_phy_a4(pi, true);
28247}
28248
28249void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28250{
28251 u16 mask = 0, val = 0, ishw = 0;
28252 u8 ctr;
28253 uint core;
28254 u32 tbl_offset;
28255 u32 tbl_len;
28256 u16 regval[84];
28257
28258 if (pi->phyhang_avoid)
28259 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28260
28261 switch (ctrl_type) {
28262 case PHY_TPC_HW_OFF:
28263 case PHY_TPC_HW_ON:
28264 pi->nphy_txpwrctrl = ctrl_type;
28265 break;
28266 default:
28267 break;
28268 }
28269
28270 if (ctrl_type == PHY_TPC_HW_OFF) {
28271 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28272
28273 if (wlc_phy_txpwr_ison_nphy(pi)) {
28274 for (core = 0; core < pi->pubpi.phy_corenum;
28275 core++)
28276 pi->nphy_txpwr_idx[core] =
28277 wlc_phy_txpwr_idx_cur_get_nphy(
28278 pi,
28279 (u8) core);
28280 }
28281
28282 }
28283
28284 tbl_len = 84;
28285 tbl_offset = 64;
28286 for (ctr = 0; ctr < tbl_len; ctr++)
28287 regval[ctr] = 0;
28288 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28289 regval);
28290 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28291 regval);
28292
28293 if (NREV_GE(pi->pubpi.phy_rev, 3))
28294 and_phy_reg(pi, 0x1e7,
28295 (u16) (~((0x1 << 15) |
28296 (0x1 << 14) | (0x1 << 13))));
28297 else
28298 and_phy_reg(pi, 0x1e7,
28299 (u16) (~((0x1 << 14) | (0x1 << 13))));
28300
28301 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28302 or_phy_reg(pi, 0x8f, (0x1 << 8));
28303 or_phy_reg(pi, 0xa5, (0x1 << 8));
28304 } else {
28305 or_phy_reg(pi, 0xa5, (0x1 << 14));
28306 }
28307
28308 if (NREV_IS(pi->pubpi.phy_rev, 2))
28309 mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28310 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28311 mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28312
28313 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28314 pi->bw == WL_CHANSPEC_BW_40)
28315 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28316 MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28317
28318 } else {
28319
28320 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28321 8, pi->adj_pwr_tbl_nphy);
28322 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28323 8, pi->adj_pwr_tbl_nphy);
28324
28325 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28326 mask = (0x1 << 14) | (0x1 << 13);
28327 val = (ishw << 14) | (ishw << 13);
28328
28329 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28330 mask |= (0x1 << 15);
28331 val |= (ishw << 15);
28332 }
28333
28334 mod_phy_reg(pi, 0x1e7, mask, val);
28335
28336 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28337 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28338 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28339 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28340 } else {
28341 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28342 if (NREV_GT(pi->pubpi.phy_rev, 1))
28343 mod_phy_reg(pi, 0x222,
28344 (0xff << 0), 0x64);
28345 }
28346 }
28347
28348 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28349 if ((pi->nphy_txpwr_idx[0] != 128)
28350 && (pi->nphy_txpwr_idx[1] != 128))
28351 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28352 pi->
28353 nphy_txpwr_idx
28354 [0],
28355 pi->
28356 nphy_txpwr_idx
28357 [1]);
28358 }
28359
28360 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28361 and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28362 and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28363 } else {
28364 and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28365 }
28366
28367 if (NREV_IS(pi->pubpi.phy_rev, 2))
28368 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28369 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28370 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28371
28372 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28373 pi->bw == WL_CHANSPEC_BW_40)
28374 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28375 0x0, BRCM_BAND_ALL);
28376
28377 if (PHY_IPA(pi)) {
28378 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28379 0x29b, (0x1 << 2), (0) << 2);
28380
28381 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28382 0x29b, (0x1 << 2), (0) << 2);
28383
28384 }
28385
28386 }
28387
28388 if (pi->phyhang_avoid)
28389 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28390}
28391
28392void
28393wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28394 bool restore_cals)
28395{
28396 u8 core, txpwrctl_tbl;
28397 u16 tx_ind0, iq_ind0, lo_ind0;
28398 u16 m1m2;
28399 u32 txgain;
28400 u16 rad_gain, dac_gain;
28401 u8 bbmult;
28402 u32 iqcomp;
28403 u16 iqcomp_a, iqcomp_b;
28404 u32 locomp;
28405 u16 tmpval;
28406 u8 tx_pwr_ctrl_state;
28407 s32 rfpwr_offset;
28408 u16 regval[2];
28409
28410 if (pi->phyhang_avoid)
28411 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28412
28413 tx_ind0 = 192;
28414 iq_ind0 = 320;
28415 lo_ind0 = 448;
28416
28417 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28418
28419 if ((core_mask & (1 << core)) == 0)
28420 continue;
28421
28422 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28423
28424 if (txpwrindex < 0) {
28425 if (pi->nphy_txpwrindex[core].index < 0)
28426 continue;
28427
28428 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28429 mod_phy_reg(pi, 0x8f,
28430 (0x1 << 8),
28431 pi->nphy_txpwrindex[core].
28432 AfectrlOverride);
28433 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28434 pi->nphy_txpwrindex[core].
28435 AfectrlOverride);
28436 } else {
28437 mod_phy_reg(pi, 0xa5,
28438 (0x1 << 14),
28439 pi->nphy_txpwrindex[core].
28440 AfectrlOverride);
28441 }
28442
28443 write_phy_reg(pi, (core == PHY_CORE_0) ?
28444 0xaa : 0xab,
28445 pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28446
28447 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28448 &pi->nphy_txpwrindex[core].
28449 rad_gain);
28450
28451 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28452 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28453 m1m2 |= ((core == PHY_CORE_0) ?
28454 (pi->nphy_txpwrindex[core].bbmult << 8) :
28455 (pi->nphy_txpwrindex[core].bbmult << 0));
28456 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28457
28458 if (restore_cals) {
28459 wlc_phy_table_write_nphy(
28460 pi, 15, 2, (80 + 2 * core), 16,
28461 &pi->nphy_txpwrindex[core].iqcomp_a);
28462 wlc_phy_table_write_nphy(
28463 pi, 15, 1, (85 + core), 16,
28464 &pi->nphy_txpwrindex[core].locomp);
28465 wlc_phy_table_write_nphy(
28466 pi, 15, 1, (93 + core), 16,
28467 &pi->nphy_txpwrindex[core].locomp);
28468 }
28469
28470 wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28471
28472 pi->nphy_txpwrindex[core].index_internal =
28473 pi->nphy_txpwrindex[core].index_internal_save;
28474 } else {
28475
28476 if (pi->nphy_txpwrindex[core].index < 0) {
28477
28478 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28479 mod_phy_reg(pi, 0x8f,
28480 (0x1 << 8),
28481 pi->nphy_txpwrindex[core].
28482 AfectrlOverride);
28483 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28484 pi->nphy_txpwrindex[core].
28485 AfectrlOverride);
28486 } else {
28487 pi->nphy_txpwrindex[core].
28488 AfectrlOverride =
28489 read_phy_reg(pi, 0xa5);
28490 }
28491
28492 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28493 read_phy_reg(pi, (core == PHY_CORE_0) ?
28494 0xaa : 0xab);
28495
28496 wlc_phy_table_read_nphy(pi, 7, 1,
28497 (0x110 + core), 16,
28498 &pi->
28499 nphy_txpwrindex[core].
28500 rad_gain);
28501
28502 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28503 &tmpval);
28504 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28505 tmpval &= 0xff;
28506 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28507
28508 wlc_phy_table_read_nphy(pi, 15, 2,
28509 (80 + 2 * core), 16,
28510 &pi->
28511 nphy_txpwrindex[core].
28512 iqcomp_a);
28513
28514 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28515 16,
28516 &pi->
28517 nphy_txpwrindex[core].
28518 locomp);
28519
28520 pi->nphy_txpwrindex[core].index_internal_save =
28521 pi->nphy_txpwrindex[core].
28522 index_internal;
28523 }
28524
28525 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28526 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28527
28528 if (NREV_IS(pi->pubpi.phy_rev, 1))
28529 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28530
28531 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28532 (tx_ind0 + txpwrindex), 32,
28533 &txgain);
28534
28535 if (NREV_GE(pi->pubpi.phy_rev, 3))
28536 rad_gain = (txgain >> 16) &
28537 ((1 << (32 - 16 + 1)) - 1);
28538 else
28539 rad_gain = (txgain >> 16) &
28540 ((1 << (28 - 16 + 1)) - 1);
28541
28542 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28543 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28544
28545 if (NREV_GE(pi->pubpi.phy_rev, 3))
28546 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28547 0xa5), (0x1 << 8), (0x1 << 8));
28548 else
28549 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28550
28551 write_phy_reg(pi, (core == PHY_CORE_0) ?
28552 0xaa : 0xab, dac_gain);
28553
28554 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28555 &rad_gain);
28556
28557 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28558 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28559 m1m2 |= ((core == PHY_CORE_0) ?
28560 (bbmult << 8) : (bbmult << 0));
28561
28562 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28563
28564 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28565 (iq_ind0 + txpwrindex), 32,
28566 &iqcomp);
28567 iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28568 iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28569
28570 if (restore_cals) {
28571 regval[0] = (u16) iqcomp_a;
28572 regval[1] = (u16) iqcomp_b;
28573 wlc_phy_table_write_nphy(pi, 15, 2,
28574 (80 + 2 * core), 16,
28575 regval);
28576 }
28577
28578 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28579 (lo_ind0 + txpwrindex), 32,
28580 &locomp);
28581 if (restore_cals)
28582 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28583 16, &locomp);
28584
28585 if (NREV_IS(pi->pubpi.phy_rev, 1))
28586 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28587
28588 if (PHY_IPA(pi)) {
28589 wlc_phy_table_read_nphy(pi,
28590 (core == PHY_CORE_0 ?
28591 NPHY_TBL_ID_CORE1TXPWRCTL :
28592 NPHY_TBL_ID_CORE2TXPWRCTL),
28593 1, 576 + txpwrindex, 32,
28594 &rfpwr_offset);
28595
28596 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28597 0x29b, (0x1ff << 4),
28598 ((s16) rfpwr_offset) << 4);
28599
28600 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28601 0x29b, (0x1 << 2), (1) << 2);
28602
28603 }
28604
28605 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28606 }
28607
28608 pi->nphy_txpwrindex[core].index = txpwrindex;
28609 }
28610
28611 if (pi->phyhang_avoid)
28612 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28613}
28614
28615void
28616wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28617 u8 txp_rate_idx)
28618{
28619 u8 chan_freq_range;
28620
28621 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28622 switch (chan_freq_range) {
28623 case WL_CHAN_FREQ_RANGE_2G:
28624 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28625 break;
28626 case WL_CHAN_FREQ_RANGE_5GM:
28627 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28628 break;
28629 case WL_CHAN_FREQ_RANGE_5GL:
28630 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28631 break;
28632 case WL_CHAN_FREQ_RANGE_5GH:
28633 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28634 break;
28635 default:
28636 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28637 break;
28638 }
28639
28640 return;
28641}
28642
28643void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28644{
28645 u16 clip_off[] = { 0xffff, 0xffff };
28646
28647 if (enable) {
28648 if (pi->nphy_deaf_count == 0) {
28649 pi->classifier_state =
28650 wlc_phy_classifier_nphy(pi, 0, 0);
28651 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28652 wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28653 wlc_phy_clip_det_nphy(pi, 1, clip_off);
28654 }
28655
28656 pi->nphy_deaf_count++;
28657
28658 wlc_phy_resetcca_nphy(pi);
28659
28660 } else {
28661 pi->nphy_deaf_count--;
28662
28663 if (pi->nphy_deaf_count == 0) {
28664 wlc_phy_classifier_nphy(pi, (0x7 << 0),
28665 pi->classifier_state);
28666 wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28667 }
28668 }
28669}
28670
28671void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28672{
28673 wlapi_suspend_mac_and_wait(pi->sh->physhim);
28674
28675 if (mode) {
28676 if (pi->nphy_deaf_count == 0)
28677 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28678 } else if (pi->nphy_deaf_count > 0) {
28679 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28680 }
28681
28682 wlapi_enable_mac(pi->sh->physhim);
28683}