]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/blame - drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c
treewide: kmalloc() -> kmalloc_array()
[mirror_ubuntu-eoan-kernel.git] / drivers / net / wireless / broadcom / brcm80211 / brcmsmac / phy / phy_n.c
CommitLineData
5b435de0
AS
1/*
2 * Copyright (c) 2010 Broadcom Corporation
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
02f77195
JP
17#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18
5b435de0
AS
19#include <linux/kernel.h>
20#include <linux/delay.h>
21#include <linux/cordic.h>
22
23#include <brcm_hw_ids.h>
24#include <aiutils.h>
25#include <chipcommon.h>
26#include <pmu.h>
27#include <d11.h>
28#include <phy_shim.h>
29#include "phy_int.h"
30#include "phy_hal.h"
31#include "phy_radio.h"
32#include "phyreg_n.h"
33#include "phytbl_n.h"
23038214 34#include "soc.h"
5b435de0
AS
35
36#define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
37 read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
38 ((core == PHY_CORE_0) ? \
39 radio_type##_##jspace##0 : \
40 radio_type##_##jspace##1))
41
42#define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
43 write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
44 ((core == PHY_CORE_0) ? \
45 radio_type##_##jspace##0 : \
46 radio_type##_##jspace##1), value)
47
48#define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
49 write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
50
51#define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
52 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53 radio_type##_##jspace##0##_##reg_name : \
54 radio_type##_##jspace##1##_##reg_name))
55
56#define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
57 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
58 radio_type##_##jspace##0##_##reg_name : \
59 radio_type##_##jspace##1##_##reg_name), \
60 value)
61
62#define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
63 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
64 radio_type##_##reg_name##_##jspace##0 : \
65 radio_type##_##reg_name##_##jspace##1))
66
67#define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
68 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
69 radio_type##_##reg_name##_##jspace##0 : \
70 radio_type##_##reg_name##_##jspace##1), \
71 value)
72
73#define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
74#define NPHY_ACI_CHANNEL_DELTA 5
75#define NPHY_ACI_CHANNEL_SKIP 4
76#define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
77#define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
78#define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
79#define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
80#define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
81#define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
82
83#define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
84
85#define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
86
87#define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
88
89#define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
90
91#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
92
93#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
94
95#define NPHY_NOISE_NOASSOC_ENTER_TH 400
96
97#define NPHY_NOISE_ASSOC_ENTER_TH 400
98
99#define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH 400
100
101#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
102#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
103
104#define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
105
106#define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
107
108#define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
109
110#define NPHY_RSSICAL_MAXREAD 31
111
112#define NPHY_RSSICAL_NPOLL 8
113#define NPHY_RSSICAL_MAXD (1<<20)
114#define NPHY_MIN_RXIQ_PWR 2
115
116#define NPHY_RSSICAL_W1_TARGET 25
117#define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
118#define NPHY_RSSICAL_NB_TARGET 0
119
120#define NPHY_RSSICAL_W1_TARGET_REV3 29
121#define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
122
123#define NPHY_CALSANITY_RSSI_NB_MAX_POS 9
124#define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
125#define NPHY_CALSANITY_RSSI_W1_MAX_POS 12
126#define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
127 NPHY_RSSICAL_MAXREAD)
128#define NPHY_CALSANITY_RSSI_W2_MAX_POS NPHY_CALSANITY_RSSI_W1_MAX_POS
129#define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
130 NPHY_RSSICAL_MAXREAD)
131#define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
132#define NPHY_RSSI_NB_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
133 ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
134#define NPHY_RSSI_W1_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
135 ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
136#define NPHY_RSSI_W2_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
137 ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
138
139#define NPHY_IQCAL_NUMGAINS 9
140#define NPHY_N_GCTL 0x66
141
142#define NPHY_PAPD_EPS_TBL_SIZE 64
143#define NPHY_PAPD_SCL_TBL_SIZE 64
144#define NPHY_NUM_DIG_FILT_COEFFS 15
145
146#define NPHY_PAPD_COMP_OFF 0
147#define NPHY_PAPD_COMP_ON 1
148
149#define NPHY_SROM_TEMPSHIFT 32
150#define NPHY_SROM_MAXTEMPOFFSET 16
151#define NPHY_SROM_MINTEMPOFFSET -16
152
153#define NPHY_CAL_MAXTEMPDELTA 64
154
155#define NPHY_NOISEVAR_TBLLEN40 256
156#define NPHY_NOISEVAR_TBLLEN20 128
157
158#define NPHY_ANARXLPFBW_REDUCTIONFACT 7
159
160#define NPHY_ADJUSTED_MINCRSPOWER 0x1e
161
162/* 5357 Chip specific ChipControl register bits */
163#define CCTRL5357_EXTPA (1<<14) /* extPA in ChipControl 1, bit 14 */
164#define CCTRL5357_ANT_MUX_2o3 (1<<15) /* 2o3 in ChipControl 1, bit 15 */
165
166#define NPHY_CAL_TSSISAMPS 64
167#define NPHY_TEST_TONE_FREQ_40MHz 4000
168#define NPHY_TEST_TONE_FREQ_20MHz 2500
169
170#define MAX_205x_RCAL_WAITLOOPS 10000
171
172#define NPHY_RXCAL_TONEAMP 181
173#define NPHY_RXCAL_TONEFREQ_40MHz 4000
174#define NPHY_RXCAL_TONEFREQ_20MHz 2000
175
176#define TXFILT_SHAPING_OFDM20 0
177#define TXFILT_SHAPING_OFDM40 1
178#define TXFILT_SHAPING_CCK 2
179#define TXFILT_DEFAULT_OFDM20 3
180#define TXFILT_DEFAULT_OFDM40 4
181
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{
d68e9f5d 14124 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
5b435de0
AS
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
9be02923 14361 if (pi->sh && (pi->sh->_rifs_phy != rifs))
5b435de0
AS
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;
898d3c3b 14389 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
5b435de0
AS
14390
14391 if (pi->sh->sromrev >= 9)
14392 return;
14393
898d3c3b 14394 bw40po = sprom->bw40po;
5b435de0
AS
14395 pi->bw402gpo = bw40po & 0xf;
14396 pi->bw405gpo = (bw40po & 0xf0) >> 4;
14397 pi->bw405glpo = (bw40po & 0xf00) >> 8;
14398 pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14399
898d3c3b 14400 cddpo = sprom->cddpo;
5b435de0
AS
14401 pi->cdd2gpo = cddpo & 0xf;
14402 pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14403 pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14404 pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14405
898d3c3b 14406 stbcpo = sprom->stbcpo;
5b435de0
AS
14407 pi->stbc2gpo = stbcpo & 0xf;
14408 pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14409 pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14410 pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14411
898d3c3b 14412 bwduppo = sprom->bwduppo;
5b435de0
AS
14413 pi->bwdup2gpo = bwduppo & 0xf;
14414 pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14415 pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14416 pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14417
14418 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14419 band_num++) {
14420 switch (band_num) {
14421 case 0:
5b435de0 14422 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
898d3c3b 14423 sprom->core_pwr_info[0].maxpwr_2g;
5b435de0 14424 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
898d3c3b 14425 sprom->core_pwr_info[1].maxpwr_2g;
5b435de0 14426 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
898d3c3b 14427 sprom->core_pwr_info[0].pa_2g[0];
5b435de0 14428 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
898d3c3b 14429 sprom->core_pwr_info[1].pa_2g[0];
5b435de0 14430 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
898d3c3b 14431 sprom->core_pwr_info[0].pa_2g[1];
5b435de0 14432 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
898d3c3b 14433 sprom->core_pwr_info[1].pa_2g[1];
5b435de0 14434 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
898d3c3b 14435 sprom->core_pwr_info[0].pa_2g[2];
5b435de0 14436 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
898d3c3b 14437 sprom->core_pwr_info[1].pa_2g[2];
5b435de0 14438 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
898d3c3b 14439 sprom->core_pwr_info[0].itssi_2g;
5b435de0 14440 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
898d3c3b
HM
14441 sprom->core_pwr_info[1].itssi_2g;
14442
14443 pi->cck2gpo = sprom->cck2gpo;
14444
14445 pi->ofdm2gpo = sprom->ofdm2gpo;
14446
14447 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];
5b435de0
AS
14455 break;
14456 case 1:
14457
5b435de0 14458 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
898d3c3b 14459 sprom->core_pwr_info[0].maxpwr_5g;
5b435de0 14460 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
898d3c3b 14461 sprom->core_pwr_info[1].maxpwr_5g;
5b435de0 14462 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
898d3c3b 14463 sprom->core_pwr_info[0].pa_5g[0];
5b435de0 14464 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
898d3c3b 14465 sprom->core_pwr_info[1].pa_5g[0];
5b435de0 14466 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
898d3c3b 14467 sprom->core_pwr_info[0].pa_5g[1];
5b435de0 14468 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
898d3c3b 14469 sprom->core_pwr_info[1].pa_5g[1];
5b435de0 14470 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
898d3c3b 14471 sprom->core_pwr_info[0].pa_5g[2];
5b435de0 14472 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
898d3c3b 14473 sprom->core_pwr_info[1].pa_5g[2];
5b435de0 14474 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
898d3c3b 14475 sprom->core_pwr_info[0].itssi_5g;
5b435de0 14476 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
898d3c3b
HM
14477 sprom->core_pwr_info[1].itssi_5g;
14478
14479 pi->ofdm5gpo = sprom->ofdm5gpo;
14480
14481 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];
5b435de0
AS
14489 break;
14490 case 2:
14491
5b435de0 14492 pi->nphy_pwrctrl_info[0].max_pwr_5gl =
898d3c3b 14493 sprom->core_pwr_info[0].maxpwr_5gl;
5b435de0 14494 pi->nphy_pwrctrl_info[1].max_pwr_5gl =
898d3c3b 14495 sprom->core_pwr_info[1].maxpwr_5gl;
5b435de0 14496 pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
898d3c3b 14497 sprom->core_pwr_info[0].pa_5gl[0];
5b435de0 14498 pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
898d3c3b 14499 sprom->core_pwr_info[1].pa_5gl[0];
5b435de0 14500 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
898d3c3b 14501 sprom->core_pwr_info[0].pa_5gl[1];
5b435de0 14502 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
898d3c3b 14503 sprom->core_pwr_info[1].pa_5gl[1];
5b435de0 14504 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
898d3c3b 14505 sprom->core_pwr_info[0].pa_5gl[2];
5b435de0 14506 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
898d3c3b 14507 sprom->core_pwr_info[1].pa_5gl[2];
5b435de0
AS
14508 pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14509 pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14510
898d3c3b
HM
14511 pi->ofdm5glpo = sprom->ofdm5glpo;
14512
14513 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];
5b435de0
AS
14521 break;
14522 case 3:
14523
5b435de0 14524 pi->nphy_pwrctrl_info[0].max_pwr_5gh =
898d3c3b 14525 sprom->core_pwr_info[0].maxpwr_5gh;
5b435de0 14526 pi->nphy_pwrctrl_info[1].max_pwr_5gh =
898d3c3b 14527 sprom->core_pwr_info[1].maxpwr_5gh;
5b435de0 14528 pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
898d3c3b 14529 sprom->core_pwr_info[0].pa_5gh[0];
5b435de0 14530 pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
898d3c3b 14531 sprom->core_pwr_info[1].pa_5gh[0];
5b435de0 14532 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
898d3c3b 14533 sprom->core_pwr_info[0].pa_5gh[1];
5b435de0 14534 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
898d3c3b 14535 sprom->core_pwr_info[1].pa_5gh[1];
5b435de0 14536 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
898d3c3b 14537 sprom->core_pwr_info[0].pa_5gh[2];
5b435de0 14538 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
898d3c3b 14539 sprom->core_pwr_info[1].pa_5gh[2];
5b435de0
AS
14540 pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14541 pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14542
898d3c3b
HM
14543 pi->ofdm5ghpo = sprom->ofdm5ghpo;
14544
14545 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];
5b435de0
AS
14553 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{
898d3c3b
HM
14562 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14563
14564 pi->antswitch = sprom->antswitch;
14565 pi->aa2g = sprom->ant_available_bg;
14566 pi->aa5g = sprom->ant_available_a;
14567
14568 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;
14573
14574 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;
5b435de0 14580 else
898d3c3b 14581 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
5b435de0
AS
14582
14583 wlc_phy_txpower_ipa_upd(pi);
14584
898d3c3b 14585 pi->phy_txcore_disable_temp = sprom->tempthresh;
5b435de0
AS
14586 if (pi->phy_txcore_disable_temp == 0)
14587 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14588
898d3c3b 14589 pi->phy_tempsense_offset = sprom->tempoffset;
5b435de0
AS
14590 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
898d3c3b 14604 pi->phycal_tempdelta = sprom->phycal_tempdelta;
5b435de0
AS
14605 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
c503dd38
AB
14767wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, const u8 *events,
14768 const u8 *dlys, u8 len)
5b435de0
AS
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;
c503dd38
AB
15243 static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15244 const s8 *lna1_gain_db = NULL;
15245 const s8 *lna1_gain_db_2 = NULL;
15246 const s8 *lna2_gain_db = NULL;
15247 static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15248 const s8 *tia_gain_db;
15249 static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15250 const s8 *tia_gainbits;
15251 static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15252 const u16 *rfseq_init_gain;
5b435de0
AS
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
c503dd38
AB
15313 static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15314 static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
15315 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
5b435de0
AS
15316
15317 crsminu_th = 0x3e;
15318 lna1_gain_db = lna1A_gain_db_rev7;
15319 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15320 lna2_gain_db = lna2A_gain_db_rev7;
15321 } else if ((freq >= 5500) && (freq <= 5700)) {
15322
c503dd38
AB
15323 static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15324 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15325 static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
5b435de0
AS
15326
15327 crsminu_th = 0x45;
15328 clip1md_gaincode_B = 0x14;
15329 nbclip_th = 0xff;
15330 chg_nbclip_th = 1;
15331 lna1_gain_db = lna1A_gain_db_rev7;
15332 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15333 lna2_gain_db = lna2A_gain_db_rev7;
15334 } else {
15335
c503dd38
AB
15336 static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15337 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15338 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
5b435de0
AS
15339
15340 crsminu_th = 0x41;
15341 lna1_gain_db = lna1A_gain_db_rev7;
15342 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15343 lna2_gain_db = lna2A_gain_db_rev7;
15344 }
15345
15346 if (freq <= 4920) {
15347 nvar_baseline_offset0 = 5;
15348 nvar_baseline_offset1 = 5;
15349 } else if ((freq > 4920) && (freq <= 5320)) {
15350 nvar_baseline_offset0 = 3;
15351 nvar_baseline_offset1 = 5;
15352 } else if ((freq > 5320) && (freq <= 5700)) {
15353 nvar_baseline_offset0 = 3;
15354 nvar_baseline_offset1 = 2;
15355 } else {
15356 nvar_baseline_offset0 = 4;
15357 nvar_baseline_offset1 = 0;
15358 }
15359 } else {
15360
15361 crsminu_th = 0x3a;
15362 crsminl_th = 0x3a;
15363 w1clip_th = 20;
15364
15365 if ((freq >= 4920) && (freq <= 5320)) {
15366 nvar_baseline_offset0 = 4;
15367 nvar_baseline_offset1 = 5;
15368 } else if ((freq > 5320) && (freq <= 5550)) {
15369 nvar_baseline_offset0 = 4;
15370 nvar_baseline_offset1 = 2;
15371 } else {
15372 nvar_baseline_offset0 = 5;
15373 nvar_baseline_offset1 = 3;
15374 }
15375 }
15376
15377 write_phy_reg(pi, 0x20, init_gaincode);
15378 write_phy_reg(pi, 0x2a7, init_gaincode);
15379
15380 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15381 pi->pubpi.phy_corenum, 0x106, 16,
15382 rfseq_init_gain);
15383
15384 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15385 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15386
15387 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15388 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15389
15390 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15391 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15392 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15393 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15394
15395 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15396 tia_gain_db);
15397 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15398 tia_gain_db);
15399
15400 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15401 tia_gainbits);
15402 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15403 tia_gainbits);
15404
15405 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15406
15407 if (chg_nbclip_th == 1) {
15408 write_phy_reg(pi, 0x2b, nbclip_th);
15409 write_phy_reg(pi, 0x41, nbclip_th);
15410 }
15411
15412 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15413 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15414
15415 mod_phy_reg(pi, 0x2e4,
15416 (0x3f << 0), (nvar_baseline_offset0 << 0));
15417
15418 mod_phy_reg(pi, 0x2e4,
15419 (0x3f << 6), (nvar_baseline_offset1 << 6));
15420
15421 if (CHSPEC_IS20(pi->radio_chanspec)) {
15422
15423 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15424 lna1_gain_db);
15425 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15426 lna1_gain_db_2);
15427
15428 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15429 8, lna2_gain_db);
15430 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15431 8, lna2_gain_db);
15432
15433 write_phy_reg(pi, 0x24, clip1md_gaincode);
15434 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15435 } else {
15436 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15437 }
15438 }
15439}
15440
15441static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15442{
15443 u16 w1th, hpf_code, currband;
15444 int ctr;
15445 u8 rfseq_updategainu_events[] = {
15446 NPHY_RFSEQ_CMD_RX_GAIN,
15447 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15448 NPHY_RFSEQ_CMD_SET_HPF_BW
15449 };
c503dd38
AB
15450 static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15451 static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15452 static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15453 static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15454 static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15455 static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15456 static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15457 static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15458 static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15459 static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15460 const s8 *lna1_gain_db = NULL;
15461 static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15462 static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15463 static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15464 static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15465 static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15466 static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15467 static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15468 static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15469 const s8 *lna2_gain_db = NULL;
15470 static const s8 tiaG_gain_db[] = {
5b435de0 15471 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
c503dd38 15472 static const s8 tiaA_gain_db[] = {
5b435de0 15473 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
c503dd38 15474 static const s8 tiaA_gain_db_rev4[] = {
5b435de0 15475 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
c503dd38 15476 static const s8 tiaA_gain_db_rev5[] = {
5b435de0 15477 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
c503dd38 15478 static const s8 tiaA_gain_db_rev6[] = {
5b435de0 15479 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
c503dd38
AB
15480 const s8 *tia_gain_db;
15481 static const s8 tiaG_gainbits[] = {
5b435de0 15482 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
c503dd38 15483 static const s8 tiaA_gainbits[] = {
5b435de0 15484 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
c503dd38 15485 static const s8 tiaA_gainbits_rev4[] = {
5b435de0 15486 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
c503dd38 15487 static const s8 tiaA_gainbits_rev5[] = {
5b435de0 15488 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
c503dd38 15489 static const s8 tiaA_gainbits_rev6[] = {
5b435de0 15490 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
c503dd38
AB
15491 const s8 *tia_gainbits;
15492 static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15493 static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15494 static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15495 static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15496 static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15497 static const u16 rfseqG_init_gain_rev5_elna[] = {
5b435de0 15498 0x013f, 0x013f, 0x013f, 0x013f };
c503dd38
AB
15499 static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15500 static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15501 static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15502 static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15503 static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15504 static const u16 rfseqA_init_gain_rev4_elna[] = {
5b435de0 15505 0x314f, 0x314f, 0x314f, 0x314f };
c503dd38
AB
15506 static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15507 static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15508 const u16 *rfseq_init_gain;
5b435de0
AS
15509 u16 initG_gaincode = 0x627e;
15510 u16 initG_gaincode_rev4 = 0x527e;
15511 u16 initG_gaincode_rev5 = 0x427e;
15512 u16 initG_gaincode_rev5_elna = 0x027e;
15513 u16 initG_gaincode_rev6 = 0x527e;
15514 u16 initG_gaincode_rev6_224B0 = 0x427e;
15515 u16 initG_gaincode_rev6_elna = 0x127e;
15516 u16 initA_gaincode = 0x52de;
15517 u16 initA_gaincode_rev4 = 0x629e;
15518 u16 initA_gaincode_rev4_elna = 0x329e;
15519 u16 initA_gaincode_rev5 = 0x729e;
15520 u16 initA_gaincode_rev6 = 0x729e;
15521 u16 init_gaincode;
15522 u16 clip1hiG_gaincode = 0x107e;
15523 u16 clip1hiG_gaincode_rev4 = 0x007e;
15524 u16 clip1hiG_gaincode_rev5 = 0x1076;
15525 u16 clip1hiG_gaincode_rev6 = 0x007e;
15526 u16 clip1hiA_gaincode = 0x00de;
15527 u16 clip1hiA_gaincode_rev4 = 0x029e;
15528 u16 clip1hiA_gaincode_rev5 = 0x029e;
15529 u16 clip1hiA_gaincode_rev6 = 0x029e;
15530 u16 clip1hi_gaincode;
15531 u16 clip1mdG_gaincode = 0x0066;
15532 u16 clip1mdA_gaincode = 0x00ca;
15533 u16 clip1mdA_gaincode_rev4 = 0x1084;
15534 u16 clip1mdA_gaincode_rev5 = 0x2084;
15535 u16 clip1mdA_gaincode_rev6 = 0x2084;
15536 u16 clip1md_gaincode = 0;
15537 u16 clip1loG_gaincode = 0x0074;
c503dd38 15538 static const u16 clip1loG_gaincode_rev5[] = {
5b435de0
AS
15539 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15540 };
c503dd38 15541 static const u16 clip1loG_gaincode_rev6[] = {
5b435de0
AS
15542 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15543 };
15544 u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15545 u16 clip1loA_gaincode = 0x00cc;
15546 u16 clip1loA_gaincode_rev4 = 0x0086;
15547 u16 clip1loA_gaincode_rev5 = 0x2086;
15548 u16 clip1loA_gaincode_rev6 = 0x2086;
15549 u16 clip1lo_gaincode;
15550 u8 crsminG_th = 0x18;
15551 u8 crsminG_th_rev5 = 0x18;
15552 u8 crsminG_th_rev6 = 0x18;
15553 u8 crsminA_th = 0x1e;
15554 u8 crsminA_th_rev4 = 0x24;
15555 u8 crsminA_th_rev5 = 0x24;
15556 u8 crsminA_th_rev6 = 0x24;
15557 u8 crsmin_th;
15558 u8 crsminlG_th = 0x18;
15559 u8 crsminlG_th_rev5 = 0x18;
15560 u8 crsminlG_th_rev6 = 0x18;
15561 u8 crsminlA_th = 0x1e;
15562 u8 crsminlA_th_rev4 = 0x24;
15563 u8 crsminlA_th_rev5 = 0x24;
15564 u8 crsminlA_th_rev6 = 0x24;
15565 u8 crsminl_th = 0;
15566 u8 crsminuG_th = 0x18;
15567 u8 crsminuG_th_rev5 = 0x18;
15568 u8 crsminuG_th_rev6 = 0x18;
15569 u8 crsminuA_th = 0x1e;
15570 u8 crsminuA_th_rev4 = 0x24;
15571 u8 crsminuA_th_rev5 = 0x24;
15572 u8 crsminuA_th_rev6 = 0x24;
15573 u8 crsminuA_th_rev6_224B0 = 0x2d;
15574 u8 crsminu_th;
15575 u16 nbclipG_th = 0x20d;
15576 u16 nbclipG_th_rev4 = 0x1a1;
15577 u16 nbclipG_th_rev5 = 0x1d0;
15578 u16 nbclipG_th_rev6 = 0x1d0;
15579 u16 nbclipA_th = 0x1a1;
15580 u16 nbclipA_th_rev4 = 0x107;
15581 u16 nbclipA_th_rev5 = 0x0a9;
15582 u16 nbclipA_th_rev6 = 0x0f0;
15583 u16 nbclip_th = 0;
15584 u8 w1clipG_th = 5;
15585 u8 w1clipG_th_rev5 = 9;
15586 u8 w1clipG_th_rev6 = 5;
15587 u8 w1clipA_th = 25, w1clip_th;
15588 u8 rssi_gain_default = 0x50;
15589 u8 rssiG_gain_rev6_224B0 = 0x50;
15590 u8 rssiA_gain_rev5 = 0x90;
15591 u8 rssiA_gain_rev6 = 0x90;
15592 u8 rssi_gain;
15593 u16 regval[21];
15594 u8 triso;
15595
15596 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15597 pi->srom_fem2g.triso;
15598
15599 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15600 if (pi->pubpi.radiorev == 5) {
15601 wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15602 } else if (pi->pubpi.radiorev == 7) {
15603 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15604
15605 mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15606 mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15607
15608 } else if ((pi->pubpi.radiorev == 3)
15609 || (pi->pubpi.radiorev == 8)) {
15610 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15611
15612 if (pi->pubpi.radiorev == 8) {
15613 mod_phy_reg(pi, 0x283,
15614 (0xff << 0), (0x44 << 0));
15615 mod_phy_reg(pi, 0x280,
15616 (0xff << 0), (0x44 << 0));
15617 }
15618 } else {
15619 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15620 }
15621 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15622
15623 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15624
15625 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15626 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15627
15628 currband =
15629 read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15630 if (currband == 0) {
15631 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15632 if (pi->pubpi.radiorev == 11) {
15633 lna1_gain_db = lna1G_gain_db_rev6_224B0;
15634 lna2_gain_db = lna2G_gain_db_rev6_224B0;
15635 rfseq_init_gain =
15636 rfseqG_init_gain_rev6_224B0;
15637 init_gaincode =
15638 initG_gaincode_rev6_224B0;
15639 clip1hi_gaincode =
15640 clip1hiG_gaincode_rev6;
15641 clip1lo_gaincode =
15642 clip1loG_gaincode_rev6_224B0;
15643 nbclip_th = nbclipG_th_rev6;
15644 w1clip_th = w1clipG_th_rev6;
15645 crsmin_th = crsminG_th_rev6;
15646 crsminl_th = crsminlG_th_rev6;
15647 crsminu_th = crsminuG_th_rev6;
15648 rssi_gain = rssiG_gain_rev6_224B0;
15649 } else {
15650 lna1_gain_db = lna1G_gain_db_rev6;
15651 lna2_gain_db = lna2G_gain_db_rev6;
15652 if (pi->sh->boardflags & BFL_EXTLNA) {
15653
15654 rfseq_init_gain =
15655 rfseqG_init_gain_rev6_elna;
15656 init_gaincode =
15657 initG_gaincode_rev6_elna;
15658 } else {
15659 rfseq_init_gain =
15660 rfseqG_init_gain_rev6;
15661 init_gaincode =
15662 initG_gaincode_rev6;
15663 }
15664 clip1hi_gaincode =
15665 clip1hiG_gaincode_rev6;
15666 switch (triso) {
15667 case 0:
15668 clip1lo_gaincode =
15669 clip1loG_gaincode_rev6
15670 [0];
15671 break;
15672 case 1:
15673 clip1lo_gaincode =
15674 clip1loG_gaincode_rev6
15675 [1];
15676 break;
15677 case 2:
15678 clip1lo_gaincode =
15679 clip1loG_gaincode_rev6
15680 [2];
15681 break;
15682 case 3:
15683 default:
15684
15685 clip1lo_gaincode =
15686 clip1loG_gaincode_rev6
15687 [3];
15688 break;
15689 case 4:
15690 clip1lo_gaincode =
15691 clip1loG_gaincode_rev6
15692 [4];
15693 break;
15694 case 5:
15695 clip1lo_gaincode =
15696 clip1loG_gaincode_rev6
15697 [5];
15698 break;
15699 case 6:
15700 clip1lo_gaincode =
15701 clip1loG_gaincode_rev6
15702 [6];
15703 break;
15704 case 7:
15705 clip1lo_gaincode =
15706 clip1loG_gaincode_rev6
15707 [7];
15708 break;
15709 }
15710 nbclip_th = nbclipG_th_rev6;
15711 w1clip_th = w1clipG_th_rev6;
15712 crsmin_th = crsminG_th_rev6;
15713 crsminl_th = crsminlG_th_rev6;
15714 crsminu_th = crsminuG_th_rev6;
15715 rssi_gain = rssi_gain_default;
15716 }
15717 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15718 lna1_gain_db = lna1G_gain_db_rev5;
15719 lna2_gain_db = lna2G_gain_db_rev5;
15720 if (pi->sh->boardflags & BFL_EXTLNA) {
15721
15722 rfseq_init_gain =
15723 rfseqG_init_gain_rev5_elna;
15724 init_gaincode =
15725 initG_gaincode_rev5_elna;
15726 } else {
15727 rfseq_init_gain = rfseqG_init_gain_rev5;
15728 init_gaincode = initG_gaincode_rev5;
15729 }
15730 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15731 switch (triso) {
15732 case 0:
15733 clip1lo_gaincode =
15734 clip1loG_gaincode_rev5[0];
15735 break;
15736 case 1:
15737 clip1lo_gaincode =
15738 clip1loG_gaincode_rev5[1];
15739 break;
15740 case 2:
15741 clip1lo_gaincode =
15742 clip1loG_gaincode_rev5[2];
15743 break;
15744 case 3:
15745
15746 clip1lo_gaincode =
15747 clip1loG_gaincode_rev5[3];
15748 break;
15749 case 4:
15750 clip1lo_gaincode =
15751 clip1loG_gaincode_rev5[4];
15752 break;
15753 case 5:
15754 clip1lo_gaincode =
15755 clip1loG_gaincode_rev5[5];
15756 break;
15757 case 6:
15758 clip1lo_gaincode =
15759 clip1loG_gaincode_rev5[6];
15760 break;
15761 case 7:
15762 clip1lo_gaincode =
15763 clip1loG_gaincode_rev5[7];
15764 break;
15765 default:
15766 clip1lo_gaincode =
15767 clip1loG_gaincode_rev5[3];
15768 break;
15769 }
15770 nbclip_th = nbclipG_th_rev5;
15771 w1clip_th = w1clipG_th_rev5;
15772 crsmin_th = crsminG_th_rev5;
15773 crsminl_th = crsminlG_th_rev5;
15774 crsminu_th = crsminuG_th_rev5;
15775 rssi_gain = rssi_gain_default;
15776 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15777 lna1_gain_db = lna1G_gain_db_rev4;
15778 lna2_gain_db = lna2G_gain_db;
15779 rfseq_init_gain = rfseqG_init_gain_rev4;
15780 init_gaincode = initG_gaincode_rev4;
15781 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15782 clip1lo_gaincode = clip1loG_gaincode;
15783 nbclip_th = nbclipG_th_rev4;
15784 w1clip_th = w1clipG_th;
15785 crsmin_th = crsminG_th;
15786 crsminl_th = crsminlG_th;
15787 crsminu_th = crsminuG_th;
15788 rssi_gain = rssi_gain_default;
15789 } else {
15790 lna1_gain_db = lna1G_gain_db;
15791 lna2_gain_db = lna2G_gain_db;
15792 rfseq_init_gain = rfseqG_init_gain;
15793 init_gaincode = initG_gaincode;
15794 clip1hi_gaincode = clip1hiG_gaincode;
15795 clip1lo_gaincode = clip1loG_gaincode;
15796 nbclip_th = nbclipG_th;
15797 w1clip_th = w1clipG_th;
15798 crsmin_th = crsminG_th;
15799 crsminl_th = crsminlG_th;
15800 crsminu_th = crsminuG_th;
15801 rssi_gain = rssi_gain_default;
15802 }
15803 tia_gain_db = tiaG_gain_db;
15804 tia_gainbits = tiaG_gainbits;
15805 clip1md_gaincode = clip1mdG_gaincode;
15806 } else {
15807 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15808 lna1_gain_db = lna1A_gain_db_rev6;
15809 lna2_gain_db = lna2A_gain_db_rev6;
15810 tia_gain_db = tiaA_gain_db_rev6;
15811 tia_gainbits = tiaA_gainbits_rev6;
15812 rfseq_init_gain = rfseqA_init_gain_rev6;
15813 init_gaincode = initA_gaincode_rev6;
15814 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15815 clip1md_gaincode = clip1mdA_gaincode_rev6;
15816 clip1lo_gaincode = clip1loA_gaincode_rev6;
15817 crsmin_th = crsminA_th_rev6;
15818 crsminl_th = crsminlA_th_rev6;
15819 if ((pi->pubpi.radiorev == 11) &&
15820 (CHSPEC_IS40(pi->radio_chanspec) == 0))
15821 crsminu_th = crsminuA_th_rev6_224B0;
15822 else
15823 crsminu_th = crsminuA_th_rev6;
15824
15825 nbclip_th = nbclipA_th_rev6;
15826 rssi_gain = rssiA_gain_rev6;
15827 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15828 lna1_gain_db = lna1A_gain_db_rev5;
15829 lna2_gain_db = lna2A_gain_db_rev5;
15830 tia_gain_db = tiaA_gain_db_rev5;
15831 tia_gainbits = tiaA_gainbits_rev5;
15832 rfseq_init_gain = rfseqA_init_gain_rev5;
15833 init_gaincode = initA_gaincode_rev5;
15834 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15835 clip1md_gaincode = clip1mdA_gaincode_rev5;
15836 clip1lo_gaincode = clip1loA_gaincode_rev5;
15837 crsmin_th = crsminA_th_rev5;
15838 crsminl_th = crsminlA_th_rev5;
15839 crsminu_th = crsminuA_th_rev5;
15840 nbclip_th = nbclipA_th_rev5;
15841 rssi_gain = rssiA_gain_rev5;
15842 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15843 lna1_gain_db = lna1A_gain_db_rev4;
15844 lna2_gain_db = lna2A_gain_db_rev4;
15845 tia_gain_db = tiaA_gain_db_rev4;
15846 tia_gainbits = tiaA_gainbits_rev4;
15847 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15848
15849 rfseq_init_gain =
15850 rfseqA_init_gain_rev4_elna;
15851 init_gaincode =
15852 initA_gaincode_rev4_elna;
15853 } else {
15854 rfseq_init_gain = rfseqA_init_gain_rev4;
15855 init_gaincode = initA_gaincode_rev4;
15856 }
15857 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15858 clip1md_gaincode = clip1mdA_gaincode_rev4;
15859 clip1lo_gaincode = clip1loA_gaincode_rev4;
15860 crsmin_th = crsminA_th_rev4;
15861 crsminl_th = crsminlA_th_rev4;
15862 crsminu_th = crsminuA_th_rev4;
15863 nbclip_th = nbclipA_th_rev4;
15864 rssi_gain = rssi_gain_default;
15865 } else {
15866 lna1_gain_db = lna1A_gain_db;
15867 lna2_gain_db = lna2A_gain_db;
15868 tia_gain_db = tiaA_gain_db;
15869 tia_gainbits = tiaA_gainbits;
15870 rfseq_init_gain = rfseqA_init_gain;
15871 init_gaincode = initA_gaincode;
15872 clip1hi_gaincode = clip1hiA_gaincode;
15873 clip1md_gaincode = clip1mdA_gaincode;
15874 clip1lo_gaincode = clip1loA_gaincode;
15875 crsmin_th = crsminA_th;
15876 crsminl_th = crsminlA_th;
15877 crsminu_th = crsminuA_th;
15878 nbclip_th = nbclipA_th;
15879 rssi_gain = rssi_gain_default;
15880 }
15881 w1clip_th = w1clipA_th;
15882 }
15883
15884 write_radio_reg(pi,
15885 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15886 RADIO_2056_RX0), 0x17);
15887 write_radio_reg(pi,
15888 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15889 RADIO_2056_RX1), 0x17);
15890
15891 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15892 0xf0);
15893 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15894 0xf0);
15895
15896 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15897 0x0);
15898 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15899 0x0);
15900
15901 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15902 rssi_gain);
15903 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15904 rssi_gain);
15905
15906 write_radio_reg(pi,
15907 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15908 RADIO_2056_RX0), 0x17);
15909 write_radio_reg(pi,
15910 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15911 RADIO_2056_RX1), 0x17);
15912
15913 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15914 0xFF);
15915 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15916 0xFF);
15917
15918 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15919 8, lna1_gain_db);
15920 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15921 8, lna1_gain_db);
15922
15923 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15924 8, lna2_gain_db);
15925 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15926 8, lna2_gain_db);
15927
15928 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15929 8, tia_gain_db);
15930 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15931 8, tia_gain_db);
15932
15933 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15934 8, tia_gainbits);
15935 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15936 8, tia_gainbits);
15937
15938 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15939 8, &lpf_gain_db);
15940 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15941 8, &lpf_gain_db);
15942 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15943 8, &lpf_gainbits);
15944 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15945 8, &lpf_gainbits);
15946
15947 write_phy_reg(pi, 0x20, init_gaincode);
15948 write_phy_reg(pi, 0x2a7, init_gaincode);
15949
15950 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15951 pi->pubpi.phy_corenum, 0x106, 16,
15952 rfseq_init_gain);
15953
15954 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15955 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15956
15957 write_phy_reg(pi, 0x24, clip1md_gaincode);
15958 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15959
15960 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15961 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15962
15963 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15964 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15965 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15966
15967 write_phy_reg(pi, 0x2b, nbclip_th);
15968 write_phy_reg(pi, 0x41, nbclip_th);
15969
15970 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15971 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15972
15973 write_phy_reg(pi, 0x150, 0x809c);
15974
15975 } else {
15976
15977 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15978 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15979
15980 write_phy_reg(pi, 0x2b, 0x84);
15981 write_phy_reg(pi, 0x41, 0x84);
15982
15983 if (CHSPEC_IS20(pi->radio_chanspec)) {
15984 write_phy_reg(pi, 0x6b, 0x2b);
15985 write_phy_reg(pi, 0x6c, 0x2b);
15986 write_phy_reg(pi, 0x6d, 0x9);
15987 write_phy_reg(pi, 0x6e, 0x9);
15988 }
15989
15990 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15991 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15992 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15993
15994 if (CHSPEC_IS20(pi->radio_chanspec)) {
15995 mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15996 mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
15997
15998 mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
15999 mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16000 }
16001
16002 write_phy_reg(pi, 0x150, 0x809c);
16003
16004 if (pi->nphy_gain_boost)
16005 if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16006 (CHSPEC_IS40(pi->radio_chanspec)))
16007 hpf_code = 4;
16008 else
16009 hpf_code = 5;
16010 else if (CHSPEC_IS40(pi->radio_chanspec))
16011 hpf_code = 6;
16012 else
16013 hpf_code = 7;
16014
16015 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16016 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16017
16018 for (ctr = 0; ctr < 4; ctr++)
16019 regval[ctr] = (hpf_code << 8) | 0x7c;
16020 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16021
16022 wlc_phy_adjust_lnagaintbl_nphy(pi);
16023
16024 if (pi->nphy_elna_gain_config) {
16025 regval[0] = 0;
16026 regval[1] = 1;
16027 regval[2] = 1;
16028 regval[3] = 1;
16029 wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16030 wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16031
16032 for (ctr = 0; ctr < 4; ctr++)
16033 regval[ctr] = (hpf_code << 8) | 0x74;
16034 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16035 }
16036
16037 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16038 for (ctr = 0; ctr < 21; ctr++)
16039 regval[ctr] = 3 * ctr;
16040 wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16041 wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16042
16043 for (ctr = 0; ctr < 21; ctr++)
16044 regval[ctr] = (u16) ctr;
16045 wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16046 wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16047 }
16048
16049 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16050 rfseq_updategainu_events,
16051 rfseq_updategainu_dlys,
18907f20 16052 ARRAY_SIZE(rfseq_updategainu_events));
5b435de0
AS
16053
16054 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16055
16056 if (CHSPEC_IS2G(pi->radio_chanspec))
16057 mod_phy_reg(pi,
16058 (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16059 0x7f, 0x4);
16060 }
16061}
16062
0425f079 16063static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
5b435de0 16064{
c503dd38 16065 static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
5b435de0
AS
16066 NPHY_REV3_RFSEQ_CMD_NOP,
16067 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16068 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16069 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16070 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16071 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16072 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16073 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16074 NPHY_REV3_RFSEQ_CMD_END
16075 };
ad1987d6
AB
16076 static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16077 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
c503dd38 16078 static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
0425f079 16079 u32 leg_data_weights;
5b435de0 16080 u8 chan_freq_range = 0;
c503dd38 16081 static const u16 dac_control = 0x0002;
5b435de0
AS
16082 u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16083 u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
5b435de0 16084 u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
5b435de0
AS
16085 s32 min_nvar_val = 0x18d;
16086 s32 min_nvar_offset_6mbps = 20;
16087 u8 pdetrange;
5b435de0
AS
16088 u16 afectrl_adc_ctrl1_rev7 = 0x20;
16089 u16 afectrl_adc_ctrl2_rev7 = 0x0;
16090 u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16091 u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16092 u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
c503dd38
AB
16093 static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16094 static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16095 static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
5b435de0
AS
16096 u16 ipalvlshift_3p3_war_en = 0;
16097 u16 rccal_bcap_val, rccal_scap_val;
16098 u16 rccal_tx20_11b_bcap = 0;
16099 u16 rccal_tx20_11b_scap = 0;
16100 u16 rccal_tx20_11n_bcap = 0;
16101 u16 rccal_tx20_11n_scap = 0;
16102 u16 rccal_tx40_11n_bcap = 0;
16103 u16 rccal_tx40_11n_scap = 0;
16104 u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16105 u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16106 u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16107 u16 tx_lpf_bw_ofdm_20mhz = 0;
16108 u16 tx_lpf_bw_ofdm_40mhz = 0;
16109 u16 tx_lpf_bw_11b = 0;
16110 u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16111 u16 txgm_idac_bleed = 0;
16112 bool rccal_ovrd = false;
16113 u16 freq;
16114 int coreNum;
16115
5b435de0 16116
ad1987d6
AB
16117 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16118 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16119
16120 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16121 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16122 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16123 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16124 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16125 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16126 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16127 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16128 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16129 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16130 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16131 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16132 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16133 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16134 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16135 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16136 }
5b435de0 16137
ad1987d6
AB
16138 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16139 write_phy_reg(pi, 0x23f, 0x1b0);
16140 write_phy_reg(pi, 0x240, 0x1b0);
16141 }
5b435de0 16142
ad1987d6
AB
16143 if (NREV_GE(pi->pubpi.phy_rev, 8))
16144 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
5b435de0 16145
ad1987d6
AB
16146 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16147 &dac_control);
16148 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16149 &dac_control);
5b435de0 16150
ad1987d6
AB
16151 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16152 1, 0, 32, &leg_data_weights);
16153 leg_data_weights = leg_data_weights & 0xffffff;
16154 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16155 1, 0, 32, &leg_data_weights);
5b435de0 16156
ad1987d6
AB
16157 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16158 2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);
16159 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16160 rfseq_rx2tx_dacbufpu_rev7);
5b435de0 16161
ad1987d6
AB
16162 if (PHY_IPA(pi))
16163 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16164 rfseq_rx2tx_events_rev3_ipa,
16165 rfseq_rx2tx_dlys_rev3_ipa,
16166 ARRAY_SIZE
16167 (rfseq_rx2tx_events_rev3_ipa));
5b435de0 16168
ad1987d6
AB
16169 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16170 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
5b435de0 16171
ad1987d6
AB
16172 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16173 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16174 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
5b435de0 16175
ad1987d6 16176 if (PHY_IPA(pi)) {
5b435de0 16177
ad1987d6
AB
16178 if (((pi->pubpi.radiorev == 5)
16179 && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16180 || (pi->pubpi.radiorev == 7)
16181 || (pi->pubpi.radiorev == 8)) {
5b435de0 16182
ad1987d6
AB
16183 rccal_bcap_val =
16184 read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16185 rccal_scap_val =
16186 read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
5b435de0 16187
ad1987d6
AB
16188 rccal_tx20_11b_bcap = rccal_bcap_val;
16189 rccal_tx20_11b_scap = rccal_scap_val;
5b435de0 16190
ad1987d6
AB
16191 if ((pi->pubpi.radiorev == 5) &&
16192 (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
5b435de0 16193
ad1987d6
AB
16194 rccal_tx20_11n_bcap = rccal_bcap_val;
16195 rccal_tx20_11n_scap = rccal_scap_val;
16196 rccal_tx40_11n_bcap = 0xc;
16197 rccal_tx40_11n_scap = 0xc;
5b435de0 16198
ad1987d6 16199 rccal_ovrd = true;
5b435de0 16200
ad1987d6
AB
16201 } else if ((pi->pubpi.radiorev == 7)
16202 || (pi->pubpi.radiorev == 8)) {
5b435de0 16203
ad1987d6
AB
16204 tx_lpf_bw_ofdm_20mhz = 4;
16205 tx_lpf_bw_11b = 1;
5b435de0 16206
ad1987d6
AB
16207 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16208 rccal_tx20_11n_bcap = 0xc;
16209 rccal_tx20_11n_scap = 0xc;
16210 rccal_tx40_11n_bcap = 0xa;
16211 rccal_tx40_11n_scap = 0xa;
16212 } else {
16213 rccal_tx20_11n_bcap = 0x14;
16214 rccal_tx20_11n_scap = 0x14;
16215 rccal_tx40_11n_bcap = 0xf;
16216 rccal_tx40_11n_scap = 0xf;
5b435de0 16217 }
ad1987d6
AB
16218
16219 rccal_ovrd = true;
5b435de0 16220 }
ad1987d6 16221 }
5b435de0 16222
ad1987d6 16223 } else {
5b435de0 16224
ad1987d6 16225 if (pi->pubpi.radiorev == 5) {
5b435de0 16226
ad1987d6
AB
16227 tx_lpf_bw_ofdm_20mhz = 1;
16228 tx_lpf_bw_ofdm_40mhz = 3;
5b435de0 16229
ad1987d6
AB
16230 rccal_bcap_val =
16231 read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16232 rccal_scap_val =
16233 read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
5b435de0 16234
ad1987d6
AB
16235 rccal_tx20_11b_bcap = rccal_bcap_val;
16236 rccal_tx20_11b_scap = rccal_scap_val;
5b435de0 16237
ad1987d6
AB
16238 rccal_tx20_11n_bcap = 0x13;
16239 rccal_tx20_11n_scap = 0x11;
16240 rccal_tx40_11n_bcap = 0x13;
16241 rccal_tx40_11n_scap = 0x11;
5b435de0 16242
ad1987d6 16243 rccal_ovrd = true;
5b435de0 16244 }
ad1987d6 16245 }
5b435de0 16246
ad1987d6
AB
16247 if (rccal_ovrd) {
16248
16249 rx2tx_lpf_rc_lut_tx20_11b =
16250 (rccal_tx20_11b_bcap << 8) |
16251 (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
16252 rx2tx_lpf_rc_lut_tx20_11n =
16253 (rccal_tx20_11n_bcap << 8) |
16254 (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
16255 rx2tx_lpf_rc_lut_tx40_11n =
16256 (rccal_tx40_11n_bcap << 8) |
16257 (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
16258
16259 for (coreNum = 0; coreNum <= 1; coreNum++) {
16260 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16261 0x152 + coreNum * 0x10, 16,
16262 &rx2tx_lpf_rc_lut_tx20_11b);
16263 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16264 0x153 + coreNum * 0x10, 16,
16265 &rx2tx_lpf_rc_lut_tx20_11n);
16266 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16267 0x154 + coreNum * 0x10, 16,
16268 &rx2tx_lpf_rc_lut_tx20_11n);
16269 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16270 0x155 + coreNum * 0x10, 16,
16271 &rx2tx_lpf_rc_lut_tx40_11n);
16272 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16273 0x156 + coreNum * 0x10, 16,
16274 &rx2tx_lpf_rc_lut_tx40_11n);
16275 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16276 0x157 + coreNum * 0x10, 16,
16277 &rx2tx_lpf_rc_lut_tx40_11n);
16278 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16279 0x158 + coreNum * 0x10, 16,
16280 &rx2tx_lpf_rc_lut_tx40_11n);
16281 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16282 0x159 + coreNum * 0x10, 16,
16283 &rx2tx_lpf_rc_lut_tx40_11n);
16284 }
5b435de0 16285
ad1987d6
AB
16286 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
16287 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16288 }
5b435de0 16289
ad1987d6 16290 write_phy_reg(pi, 0x32f, 0x3);
5b435de0 16291
ad1987d6
AB
16292 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16293 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,
16294 NPHY_REV7_RFCTRLOVERRIDE_ID0);
5b435de0 16295
ad1987d6
AB
16296 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16297 (pi->pubpi.radiorev == 6)) {
16298 if ((pi->sh->sromrev >= 8)
16299 && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16300 ipalvlshift_3p3_war_en = 1;
5b435de0 16301
ad1987d6
AB
16302 if (ipalvlshift_3p3_war_en) {
16303 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);
16304 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);
16305 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16306 or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);
16307 or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
5b435de0 16308
ad1987d6 16309 ipa2g_mainbias = 0x1f;
5b435de0 16310
ad1987d6
AB
16311 ipa2g_casconv = 0x6f;
16312
16313 ipa2g_biasfilt = 0xaa;
16314 } else {
16315
16316 ipa2g_mainbias = 0x2b;
16317
16318 ipa2g_casconv = 0x7f;
16319
16320 ipa2g_biasfilt = 0xee;
5b435de0
AS
16321 }
16322
ad1987d6
AB
16323 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16324 for (coreNum = 0; coreNum <= 1; coreNum++) {
16325 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16326 coreNum, IPA2G_IMAIN,
16327 ipa2g_mainbias);
16328 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16329 coreNum, IPA2G_CASCONV,
16330 ipa2g_casconv);
16331 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16332 coreNum,
16333 IPA2G_BIAS_FILTER,
16334 ipa2g_biasfilt);
16335 }
16336 }
16337 }
5b435de0 16338
ad1987d6
AB
16339 if (PHY_IPA(pi)) {
16340 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16341 if ((pi->pubpi.radiorev == 3)
16342 || (pi->pubpi.radiorev == 4)
16343 || (pi->pubpi.radiorev == 6))
16344 txgm_idac_bleed = 0x7f;
5b435de0 16345
ad1987d6
AB
16346 for (coreNum = 0; coreNum <= 1; coreNum++) {
16347 if (txgm_idac_bleed != 0)
16348 WRITE_RADIO_REG4(pi, RADIO_2057,
16349 CORE, coreNum,
16350 TXGM_IDAC_BLEED,
16351 txgm_idac_bleed);
16352 }
5b435de0 16353
ad1987d6
AB
16354 if (pi->pubpi.radiorev == 5) {
16355 for (coreNum = 0; coreNum <= 1; coreNum++) {
16356 WRITE_RADIO_REG4(pi, RADIO_2057,
16357 CORE, coreNum,
16358 IPA2G_CASCONV,
16359 0x13);
16360 WRITE_RADIO_REG4(pi, RADIO_2057,
16361 CORE, coreNum,
16362 IPA2G_IMAIN,
16363 0x1f);
16364 WRITE_RADIO_REG4(pi, RADIO_2057,
16365 CORE, coreNum,
16366 IPA2G_BIAS_FILTER,
16367 0xee);
16368 WRITE_RADIO_REG4(pi, RADIO_2057,
16369 CORE, coreNum,
16370 PAD2G_IDACS,
16371 0x8a);
16372 WRITE_RADIO_REG4(pi, RADIO_2057,
16373 CORE, coreNum,
16374 PAD_BIAS_FILTER_BWS,
16375 0x3e);
5b435de0 16376 }
ad1987d6
AB
16377 } else if ((pi->pubpi.radiorev == 7) ||
16378 (pi->pubpi.radiorev == 8)) {
5b435de0 16379
ad1987d6 16380 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
5b435de0 16381 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
ad1987d6 16382 0, IPA2G_IMAIN, 0x14);
5b435de0 16383 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
ad1987d6
AB
16384 1, IPA2G_IMAIN, 0x12);
16385 } else {
5b435de0 16386 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
ad1987d6 16387 0, IPA2G_IMAIN, 0x16);
5b435de0 16388 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
ad1987d6 16389 1, IPA2G_IMAIN, 0x16);
5b435de0
AS
16390 }
16391 }
5b435de0 16392
ad1987d6
AB
16393 } else {
16394 freq =
16395 CHAN5G_FREQ(CHSPEC_CHANNEL
16396 (pi->radio_chanspec));
16397 if (((freq >= 5180) && (freq <= 5230))
16398 || ((freq >= 5745) && (freq <= 5805))) {
16399 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16400 0, IPA5G_BIAS_FILTER, 0xff);
16401 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16402 1, IPA5G_BIAS_FILTER, 0xff);
16403 }
16404 }
16405 } else {
5b435de0 16406
ad1987d6 16407 if (pi->pubpi.radiorev != 5) {
5b435de0
AS
16408 for (coreNum = 0; coreNum <= 1; coreNum++) {
16409 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
ad1987d6 16410 TXMIX2G_TUNE_BOOST_PU, 0x61);
5b435de0 16411 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
ad1987d6 16412 TXGM_IDAC_BLEED, 0x70);
5b435de0 16413 }
5b435de0 16414 }
ad1987d6 16415 }
5b435de0 16416
ad1987d6
AB
16417 if (pi->pubpi.radiorev == 4) {
16418 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16419 &afectrl_adc_ctrl1_rev7);
16420 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16421 &afectrl_adc_ctrl1_rev7);
16422
16423 for (coreNum = 0; coreNum <= 1; coreNum++) {
16424 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16425 AFE_VCM_CAL_MASTER, 0x0);
16426 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16427 AFE_SET_VCM_I, 0x3f);
16428 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16429 AFE_SET_VCM_Q, 0x3f);
16430 }
16431 } else {
16432 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16433 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16434 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16435 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16436
16437 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16438 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16439 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16440 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16441
16442 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16443 &afectrl_adc_ctrl2_rev7);
16444 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16445 &afectrl_adc_ctrl2_rev7);
16446
16447 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16448 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16449 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16450 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16451 }
5b435de0 16452
ad1987d6 16453 write_phy_reg(pi, 0x6a, 0x2);
5b435de0 16454
ad1987d6
AB
16455 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16456 &min_nvar_offset_6mbps);
5b435de0 16457
ad1987d6
AB
16458 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16459 &rfseq_pktgn_lpf_hpc_rev7);
5b435de0 16460
ad1987d6
AB
16461 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16462 &rfseq_pktgn_lpf_h_hpc_rev7);
5b435de0 16463
ad1987d6
AB
16464 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16465 &rfseq_htpktgn_lpf_hpc_rev7);
5b435de0 16466
ad1987d6
AB
16467 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16468 &rfseq_cckpktgn_lpf_hpc_rev7);
5b435de0 16469
ad1987d6
AB
16470 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16471 &rfseq_tx2rx_lpf_h_hpc_rev7);
5b435de0 16472
ad1987d6
AB
16473 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16474 &rfseq_rx2tx_lpf_h_hpc_rev7);
5b435de0 16475
ad1987d6
AB
16476 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16477 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16478 32, &min_nvar_val);
16479 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16480 127, 32, &min_nvar_val);
16481 } else {
16482 min_nvar_val = noise_var_tbl_rev7[3];
16483 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16484 32, &min_nvar_val);
5b435de0 16485
ad1987d6
AB
16486 min_nvar_val = noise_var_tbl_rev7[127];
16487 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16488 127, 32, &min_nvar_val);
16489 }
5b435de0 16490
ad1987d6 16491 wlc_phy_workarounds_nphy_gainctrl(pi);
5b435de0 16492
ad1987d6
AB
16493 pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16494 pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16495
16496 if (pdetrange == 0) {
16497 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16498 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16499 aux_adc_vmid_rev7_core0[3] = 0x70;
16500 aux_adc_vmid_rev7_core1[3] = 0x70;
16501 aux_adc_gain_rev7[3] = 2;
16502 } else {
16503 aux_adc_vmid_rev7_core0[3] = 0x80;
16504 aux_adc_vmid_rev7_core1[3] = 0x80;
16505 aux_adc_gain_rev7[3] = 3;
16506 }
16507 } else if (pdetrange == 1) {
16508 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16509 aux_adc_vmid_rev7_core0[3] = 0x7c;
16510 aux_adc_vmid_rev7_core1[3] = 0x7c;
16511 aux_adc_gain_rev7[3] = 2;
16512 } else {
16513 aux_adc_vmid_rev7_core0[3] = 0x8c;
16514 aux_adc_vmid_rev7_core1[3] = 0x8c;
16515 aux_adc_gain_rev7[3] = 1;
16516 }
16517 } else if (pdetrange == 2) {
16518 if (pi->pubpi.radioid == BCM2057_ID) {
16519 if ((pi->pubpi.radiorev == 5)
16520 || (pi->pubpi.radiorev == 7)
16521 || (pi->pubpi.radiorev == 8)) {
16522 if (chan_freq_range ==
16523 WL_CHAN_FREQ_RANGE_2G) {
16524 aux_adc_vmid_rev7_core0[3] = 0x8c;
16525 aux_adc_vmid_rev7_core1[3] = 0x8c;
16526 aux_adc_gain_rev7[3] = 0;
16527 } else {
16528 aux_adc_vmid_rev7_core0[3] = 0x96;
16529 aux_adc_vmid_rev7_core1[3] = 0x96;
16530 aux_adc_gain_rev7[3] = 0;
5b435de0
AS
16531 }
16532 }
ad1987d6 16533 }
5b435de0 16534
ad1987d6
AB
16535 } else if (pdetrange == 3) {
16536 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16537 aux_adc_vmid_rev7_core0[3] = 0x89;
16538 aux_adc_vmid_rev7_core1[3] = 0x89;
16539 aux_adc_gain_rev7[3] = 0;
16540 }
5b435de0 16541
ad1987d6 16542 } else if (pdetrange == 5) {
5b435de0 16543
ad1987d6
AB
16544 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16545 aux_adc_vmid_rev7_core0[3] = 0x80;
16546 aux_adc_vmid_rev7_core1[3] = 0x80;
16547 aux_adc_gain_rev7[3] = 3;
16548 } else {
16549 aux_adc_vmid_rev7_core0[3] = 0x70;
16550 aux_adc_vmid_rev7_core1[3] = 0x70;
16551 aux_adc_gain_rev7[3] = 2;
5b435de0 16552 }
ad1987d6 16553 }
5b435de0 16554
ad1987d6
AB
16555 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16556 &aux_adc_vmid_rev7_core0);
16557 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16558 &aux_adc_vmid_rev7_core1);
16559 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16560 &aux_adc_gain_rev7);
16561 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16562 &aux_adc_gain_rev7);
0425f079 16563}
5b435de0 16564
0425f079
AB
16565static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi)
16566{
16567 static const u8 rfseq_tx2rx_events_rev3[] = {
16568 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16569 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16570 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16571 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16572 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16573 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16574 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16575 NPHY_REV3_RFSEQ_CMD_END
16576 };
16577 static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16578 u8 rfseq_rx2tx_events_rev3[] = {
16579 NPHY_REV3_RFSEQ_CMD_NOP,
16580 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16581 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16582 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16583 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16584 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16585 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16586 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16587 NPHY_REV3_RFSEQ_CMD_END
16588 };
16589 u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16590 static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16591 NPHY_REV3_RFSEQ_CMD_NOP,
16592 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16593 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16594 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16595 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16596 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16597 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16598 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16599 NPHY_REV3_RFSEQ_CMD_END
16600 };
ad1987d6
AB
16601 static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16602 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
0425f079
AB
16603 s16 alpha0, alpha1, alpha2;
16604 s16 beta0, beta1, beta2;
16605 u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16606 stbc_data_weights;
16607 u8 chan_freq_range = 0;
16608 static const u16 dac_control = 0x0002;
16609 u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16610 u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16611 u16 *aux_adc_vmid;
16612 u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16613 u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16614 u16 *aux_adc_gain;
16615 static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16616 static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16617 s32 min_nvar_val = 0x18d;
16618 u8 pdetrange;
16619 u8 triso;
5b435de0 16620
ad1987d6
AB
16621 write_phy_reg(pi, 0x23f, 0x1f8);
16622 write_phy_reg(pi, 0x240, 0x1f8);
16623
16624 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16625 1, 0, 32, &leg_data_weights);
16626 leg_data_weights = leg_data_weights & 0xffffff;
16627 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16628 1, 0, 32, &leg_data_weights);
16629
16630 alpha0 = 293;
16631 alpha1 = 435;
16632 alpha2 = 261;
16633 beta0 = 366;
16634 beta1 = 205;
16635 beta2 = 32;
16636 write_phy_reg(pi, 0x145, alpha0);
16637 write_phy_reg(pi, 0x146, alpha1);
16638 write_phy_reg(pi, 0x147, alpha2);
16639 write_phy_reg(pi, 0x148, beta0);
16640 write_phy_reg(pi, 0x149, beta1);
16641 write_phy_reg(pi, 0x14a, beta2);
16642
16643 write_phy_reg(pi, 0x38, 0xC);
16644 write_phy_reg(pi, 0x2ae, 0xC);
16645
16646 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16647 rfseq_tx2rx_events_rev3,
16648 rfseq_tx2rx_dlys_rev3,
16649 ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16650
16651 if (PHY_IPA(pi))
16652 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16653 rfseq_rx2tx_events_rev3_ipa,
16654 rfseq_rx2tx_dlys_rev3_ipa,
16655 ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
16656
16657 if ((pi->sh->hw_phyrxchain != 0x3) &&
16658 (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
5b435de0 16659
ad1987d6
AB
16660 if (PHY_IPA(pi)) {
16661 rfseq_rx2tx_dlys_rev3[5] = 59;
16662 rfseq_rx2tx_dlys_rev3[6] = 1;
16663 rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
5b435de0
AS
16664 }
16665
ad1987d6
AB
16666 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16667 rfseq_rx2tx_events_rev3,
16668 rfseq_rx2tx_dlys_rev3,
16669 ARRAY_SIZE (rfseq_rx2tx_events_rev3));
16670 }
5b435de0 16671
ad1987d6
AB
16672 if (CHSPEC_IS2G(pi->radio_chanspec))
16673 write_phy_reg(pi, 0x6a, 0x2);
16674 else
16675 write_phy_reg(pi, 0x6a, 0x9c40);
5b435de0 16676
ad1987d6 16677 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
5b435de0 16678
ad1987d6
AB
16679 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16680 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16681 32, &min_nvar_val);
16682 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16683 127, 32, &min_nvar_val);
16684 } else {
16685 min_nvar_val = noise_var_tbl_rev3[3];
16686 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16687 32, &min_nvar_val);
5b435de0 16688
ad1987d6
AB
16689 min_nvar_val = noise_var_tbl_rev3[127];
16690 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16691 127, 32, &min_nvar_val);
16692 }
5b435de0 16693
ad1987d6 16694 wlc_phy_workarounds_nphy_gainctrl(pi);
5b435de0 16695
ad1987d6
AB
16696 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16697 &dac_control);
16698 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16699 &dac_control);
5b435de0 16700
ad1987d6
AB
16701 pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16702 pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
5b435de0 16703
ad1987d6
AB
16704 if (pdetrange == 0) {
16705 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16706 aux_adc_vmid = aux_adc_vmid_rev4;
16707 aux_adc_gain = aux_adc_gain_rev4;
16708 } else {
16709 aux_adc_vmid = aux_adc_vmid_rev3;
16710 aux_adc_gain = aux_adc_gain_rev3;
16711 }
16712 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16713 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16714 switch (chan_freq_range) {
16715 case WL_CHAN_FREQ_RANGE_5GL:
16716 aux_adc_vmid[3] = 0x89;
16717 aux_adc_gain[3] = 0;
16718 break;
16719 case WL_CHAN_FREQ_RANGE_5GM:
16720 aux_adc_vmid[3] = 0x89;
16721 aux_adc_gain[3] = 0;
16722 break;
16723 case WL_CHAN_FREQ_RANGE_5GH:
16724 aux_adc_vmid[3] = 0x89;
16725 aux_adc_gain[3] = 0;
16726 break;
16727 default:
16728 break;
5b435de0 16729 }
ad1987d6
AB
16730 }
16731 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16732 0x08, 16, aux_adc_vmid);
16733 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16734 0x18, 16, aux_adc_vmid);
16735 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16736 0x0c, 16, aux_adc_gain);
16737 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16738 0x1c, 16, aux_adc_gain);
16739 } else if (pdetrange == 1) {
16740 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16741 0x08, 16, sk_adc_vmid);
16742 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16743 0x18, 16, sk_adc_vmid);
16744 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16745 0x0c, 16, sk_adc_gain);
16746 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16747 0x1c, 16, sk_adc_gain);
16748 } else if (pdetrange == 2) {
16749
16750 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16751 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
5b435de0 16752
ad1987d6 16753 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
5b435de0 16754 chan_freq_range =
ad1987d6 16755 wlc_phy_get_chan_freq_range_nphy(pi, 0);
5b435de0 16756 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
ad1987d6
AB
16757 bcm_adc_vmid[3] = 0x8e;
16758 bcm_adc_gain[3] = 0x03;
5b435de0 16759 } else {
ad1987d6
AB
16760 bcm_adc_vmid[3] = 0x94;
16761 bcm_adc_gain[3] = 0x03;
5b435de0 16762 }
ad1987d6
AB
16763 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16764 bcm_adc_vmid[3] = 0x84;
16765 bcm_adc_gain[3] = 0x02;
16766 }
16767
16768 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16769 0x08, 16, bcm_adc_vmid);
16770 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16771 0x18, 16, bcm_adc_vmid);
16772 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16773 0x0c, 16, bcm_adc_gain);
16774 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16775 0x1c, 16, bcm_adc_gain);
16776 } else if (pdetrange == 3) {
16777 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16778 if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&
16779 (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16780 u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };
16781 u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
5b435de0 16782
5b435de0 16783 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
ad1987d6 16784 0x08, 16, auxadc_vmid);
5b435de0 16785 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
ad1987d6 16786 0x18, 16, auxadc_vmid);
5b435de0 16787 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
ad1987d6 16788 0x0c, 16, auxadc_gain);
5b435de0 16789 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
ad1987d6
AB
16790 0x1c, 16, auxadc_gain);
16791 }
16792 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16793 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16794 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16795 u16 Vmid[2], Av[2];
16796
16797 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16798 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16799 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16800 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16801 Av[0] = (pdetrange == 4) ? 2 : 0;
16802 Av[1] = (pdetrange == 4) ? 2 : 0;
16803 } else {
16804 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16805 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16806 Av[0] = (pdetrange == 4) ? 2 : 0;
16807 Av[1] = (pdetrange == 4) ? 2 : 0;
5b435de0
AS
16808 }
16809
ad1987d6
AB
16810 bcm_adc_vmid[3] = Vmid[0];
16811 bcm_adc_gain[3] = Av[0];
16812 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16813 0x08, 16, bcm_adc_vmid);
16814 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16815 0x0c, 16, bcm_adc_gain);
16816
16817 bcm_adc_vmid[3] = Vmid[1];
16818 bcm_adc_gain[3] = Av[1];
16819 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16820 0x18, 16, bcm_adc_vmid);
16821 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16822 0x1c, 16, bcm_adc_gain);
16823 }
5b435de0 16824
ad1987d6
AB
16825 write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
16826 write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
5b435de0 16827
ad1987d6
AB
16828 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
16829 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
5b435de0 16830
ad1987d6
AB
16831 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
16832 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
5b435de0 16833
ad1987d6
AB
16834 write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
16835 write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
5b435de0 16836
ad1987d6
AB
16837 write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16838 write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
5b435de0 16839
ad1987d6
AB
16840 write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16841 write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16842
16843 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16844 pi->srom_fem5g.triso : pi->srom_fem2g.triso;
16845 if (triso == 7) {
16846 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16847 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16848 }
5b435de0 16849
ad1987d6 16850 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
5b435de0 16851
ad1987d6
AB
16852 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16853 (CHSPEC_IS5G(pi->radio_chanspec))) ||
16854 (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16855 (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16856 (CHSPEC_IS2G(pi->radio_chanspec)))) {
16857 nss1_data_weights = 0x00088888;
16858 ht_data_weights = 0x00088888;
16859 stbc_data_weights = 0x00088888;
16860 } else {
16861 nss1_data_weights = 0x88888888;
16862 ht_data_weights = 0x88888888;
16863 stbc_data_weights = 0x88888888;
16864 }
16865 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16866 1, 1, 32, &nss1_data_weights);
16867 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16868 1, 2, 32, &ht_data_weights);
16869 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16870 1, 3, 32, &stbc_data_weights);
16871
16872 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16873 if (CHSPEC_IS5G(pi->radio_chanspec)) {
16874 write_radio_reg(pi,
16875 RADIO_2056_TX_GMBB_IDAC |
16876 RADIO_2056_TX0, 0x70);
16877 write_radio_reg(pi,
16878 RADIO_2056_TX_GMBB_IDAC |
16879 RADIO_2056_TX1, 0x70);
5b435de0 16880 }
ad1987d6 16881 }
5b435de0 16882
ad1987d6
AB
16883 if (!pi->edcrs_threshold_lock) {
16884 write_phy_reg(pi, 0x224, 0x3eb);
16885 write_phy_reg(pi, 0x225, 0x3eb);
16886 write_phy_reg(pi, 0x226, 0x341);
16887 write_phy_reg(pi, 0x227, 0x341);
16888 write_phy_reg(pi, 0x228, 0x42b);
16889 write_phy_reg(pi, 0x229, 0x42b);
16890 write_phy_reg(pi, 0x22a, 0x381);
16891 write_phy_reg(pi, 0x22b, 0x381);
16892 write_phy_reg(pi, 0x22c, 0x42b);
16893 write_phy_reg(pi, 0x22d, 0x42b);
16894 write_phy_reg(pi, 0x22e, 0x381);
16895 write_phy_reg(pi, 0x22f, 0x381);
16896 }
5b435de0 16897
ad1987d6 16898 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
5b435de0 16899
ad1987d6
AB
16900 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
16901 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16902 MHF4_BPHY_TXCORE0,
16903 MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
16904 }
0425f079
AB
16905}
16906
16907void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi)
16908{
16909 static const u8 rfseq_rx2tx_events[] = {
16910 NPHY_RFSEQ_CMD_NOP,
16911 NPHY_RFSEQ_CMD_RXG_FBW,
16912 NPHY_RFSEQ_CMD_TR_SWITCH,
16913 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16914 NPHY_RFSEQ_CMD_RXPD_TXPD,
16915 NPHY_RFSEQ_CMD_TX_GAIN,
16916 NPHY_RFSEQ_CMD_EXT_PA
16917 };
16918 u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16919 static const u8 rfseq_tx2rx_events[] = {
16920 NPHY_RFSEQ_CMD_NOP,
16921 NPHY_RFSEQ_CMD_EXT_PA,
16922 NPHY_RFSEQ_CMD_TX_GAIN,
16923 NPHY_RFSEQ_CMD_RXPD_TXPD,
16924 NPHY_RFSEQ_CMD_TR_SWITCH,
16925 NPHY_RFSEQ_CMD_RXG_FBW,
16926 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16927 };
16928 static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16929 s16 alpha0, alpha1, alpha2;
16930 s16 beta0, beta1, beta2;
16931 u16 regval;
5b435de0 16932
ad1987d6
AB
16933 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16934 (pi->sh->boardtype == 0x8b)) {
16935 uint i;
16936 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16937 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16938 rfseq_rx2tx_dlys[i] = war_dlys[i];
16939 }
5b435de0 16940
ad1987d6
AB
16941 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16942 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16943 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16944 } else {
16945 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16946 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16947 }
5b435de0 16948
ad1987d6
AB
16949 regval = 0x000a;
16950 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16951 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
5b435de0 16952
ad1987d6
AB
16953 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16954 regval = 0xcdaa;
16955 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16956 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16957 }
5b435de0 16958
ad1987d6
AB
16959 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16960 regval = 0x0000;
16961 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16962 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
5b435de0 16963
ad1987d6
AB
16964 regval = 0x7aab;
16965 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16966 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
5b435de0 16967
ad1987d6
AB
16968 regval = 0x0800;
16969 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16970 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16971 }
5b435de0 16972
ad1987d6
AB
16973 write_phy_reg(pi, 0xf8, 0x02d8);
16974 write_phy_reg(pi, 0xf9, 0x0301);
16975 write_phy_reg(pi, 0xfa, 0x02d8);
16976 write_phy_reg(pi, 0xfb, 0x0301);
5b435de0 16977
ad1987d6
AB
16978 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16979 rfseq_rx2tx_dlys,
16980 ARRAY_SIZE(rfseq_rx2tx_events));
5b435de0 16981
ad1987d6
AB
16982 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16983 rfseq_tx2rx_dlys,
16984 ARRAY_SIZE(rfseq_tx2rx_events));
5b435de0 16985
ad1987d6 16986 wlc_phy_workarounds_nphy_gainctrl(pi);
5b435de0 16987
ad1987d6 16988 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
5b435de0 16989
ad1987d6
AB
16990 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16991 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16992 MHF3_NPHY_MLADV_WAR,
16993 MHF3_NPHY_MLADV_WAR, BRCM_BAND_ALL);
5b435de0 16994
ad1987d6
AB
16995 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16996 write_phy_reg(pi, 0x1e3, 0x0);
16997 write_phy_reg(pi, 0x1e4, 0x0);
16998 }
5b435de0 16999
ad1987d6
AB
17000 if (NREV_LT(pi->pubpi.phy_rev, 2))
17001 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17002
17003 alpha0 = 293;
17004 alpha1 = 435;
17005 alpha2 = 261;
17006 beta0 = 366;
17007 beta1 = 205;
17008 beta2 = 32;
17009 write_phy_reg(pi, 0x145, alpha0);
17010 write_phy_reg(pi, 0x146, alpha1);
17011 write_phy_reg(pi, 0x147, alpha2);
17012 write_phy_reg(pi, 0x148, beta0);
17013 write_phy_reg(pi, 0x149, beta1);
17014 write_phy_reg(pi, 0x14a, beta2);
17015
17016 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17017 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17018
17019 write_phy_reg(pi, 0x192, 0xb5);
17020 write_phy_reg(pi, 0x193, 0xa4);
17021 write_phy_reg(pi, 0x194, 0x0);
17022 }
5b435de0 17023
ad1987d6
AB
17024 if (NREV_IS(pi->pubpi.phy_rev, 2))
17025 mod_phy_reg(pi, 0x221,
17026 NPHY_FORCESIG_DECODEGATEDCLKS,
17027 NPHY_FORCESIG_DECODEGATEDCLKS);
0425f079
AB
17028}
17029
17030static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
17031{
17032 if (CHSPEC_IS5G(pi->radio_chanspec))
17033 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
17034 else
17035 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
17036
17037 if (pi->phyhang_avoid)
17038 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17039
17040 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
17041
17042 if (NREV_GE(pi->pubpi.phy_rev, 7))
17043 wlc_phy_workarounds_nphy_rev7(pi);
17044 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17045 wlc_phy_workarounds_nphy_rev3(pi);
17046 else
17047 wlc_phy_workarounds_nphy_rev1(pi);
5b435de0
AS
17048
17049 if (pi->phyhang_avoid)
17050 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17051}
17052
17053static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17054{
17055 int j, type = 2;
17056 u16 addr_offset = 0x2c5;
17057
17058 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17059 write_phy_reg(pi, addr_offset + j,
17060 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17061}
17062
17063static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17064{
17065
17066 if (write == 0) {
17067 vals[0] = read_phy_reg(pi, 0x2c);
17068 vals[1] = read_phy_reg(pi, 0x42);
17069 } else {
17070 write_phy_reg(pi, 0x2c, vals[0]);
17071 write_phy_reg(pi, 0x42, vals[1]);
17072 }
17073}
17074
17075static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17076{
17077 u8 core;
17078
17079 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17080 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17081 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17082 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17083 TX_SSI_MASTER, 0x5);
17084 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17085 TX_SSI_MUX, 0xe);
17086
17087 if (pi->pubpi.radiorev != 5)
17088 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17089 core, TSSIA, 0);
17090
17091 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17092 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17093 core, TSSIG, 0x1);
17094 else
17095 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17096 core, TSSIG, 0x31);
17097 } else {
17098 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17099 TX_SSI_MASTER, 0x9);
17100 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17101 TX_SSI_MUX, 0xc);
17102 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17103 TSSIG, 0);
17104
17105 if (pi->pubpi.radiorev != 5) {
17106 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17107 WRITE_RADIO_REG3(pi, RADIO_2057,
17108 TX, core,
17109 TSSIA, 0x1);
17110 else
17111 WRITE_RADIO_REG3(pi, RADIO_2057,
17112 TX, core,
17113 TSSIA, 0x31);
17114 }
17115 }
17116 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17117 0);
17118 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17119 0);
17120 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17121 0x3);
17122 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17123 0x0);
17124 }
17125 } else {
17126 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17127 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17128 0x80);
17129 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17130 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17131
17132 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17133 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17134 0x0);
17135 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17136 0x0);
17137 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17138 0x3);
17139 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17140 0x0);
17141 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17142 0x8);
17143 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17144 0x0);
17145 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17146 0x0);
17147
17148 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17149 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17150 TX_SSI_MASTER, 0x5);
17151
17152 if (pi->pubpi.radiorev != 5)
17153 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17154 core, TSSIA, 0x0);
17155 if (NREV_GE(pi->pubpi.phy_rev, 5))
17156 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17157 core, TSSIG, 0x31);
17158 else
17159 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17160 core, TSSIG, 0x11);
17161 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17162 TX_SSI_MUX, 0xe);
17163 } else {
17164 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17165 TX_SSI_MASTER, 0x9);
17166 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17167 TSSIA, 0x31);
17168 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17169 TSSIG, 0x0);
17170 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17171 TX_SSI_MUX, 0xc);
17172 }
17173 }
17174 }
17175}
17176
17177static void
17178wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17179 u8 core_mask, u8 off)
17180{
17181 u8 core_num;
17182 u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17183 0, val_mask = 0;
17184 u8 shift = 0, val_shift = 0;
17185
17186 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17187
17188 en_mask = field;
17189 for (core_num = 0; core_num < 2; core_num++) {
17190
17191 switch (field) {
17192 case (0x1 << 1):
17193 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17194 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17195 val_mask = (0x1 << 0);
17196 val_shift = 0;
17197 break;
17198 case (0x1 << 2):
17199 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17200 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17201 val_mask = (0x1 << 1);
17202 val_shift = 1;
17203 break;
17204 case (0x1 << 3):
17205 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17206 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17207 val_mask = (0x1 << 2);
17208 val_shift = 2;
17209 break;
17210 case (0x1 << 4):
17211 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17212 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17213 val_mask = (0x1 << 4);
17214 val_shift = 4;
17215 break;
17216 case (0x1 << 5):
17217 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17218 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17219 val_mask = (0x1 << 5);
17220 val_shift = 5;
17221 break;
17222 case (0x1 << 6):
17223 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17224 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17225 val_mask = (0x1 << 6);
17226 val_shift = 6;
17227 break;
17228 case (0x1 << 7):
17229 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17230 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17231 val_mask = (0x1 << 7);
17232 val_shift = 7;
17233 break;
17234 case (0x1 << 8):
17235 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17236 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17237 val_mask = (0x7 << 8);
17238 val_shift = 8;
17239 break;
17240 case (0x1 << 11):
17241 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17242 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17243 val_mask = (0x7 << 13);
17244 val_shift = 13;
17245 break;
17246
17247 case (0x1 << 9):
17248 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17249 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17250 val_mask = (0x7 << 0);
17251 val_shift = 0;
17252 break;
17253
17254 case (0x1 << 10):
17255 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17256 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17257 val_mask = (0x7 << 4);
17258 val_shift = 4;
17259 break;
17260
17261 case (0x1 << 12):
17262 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17263 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17264 val_mask = (0xffff << 0);
17265 val_shift = 0;
17266 break;
17267 case (0x1 << 13):
17268 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17269 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17270 val_mask = (0xffff << 0);
17271 val_shift = 0;
17272 break;
17273 case (0x1 << 14):
17274 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17275 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17276 val_mask = (0x3 << 6);
17277 val_shift = 6;
17278 break;
17279 case (0x1 << 0):
17280 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17281 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17282 val_mask = (0x1 << 15);
17283 val_shift = 15;
17284 break;
17285 default:
17286 addr = 0xffff;
17287 break;
17288 }
17289
17290 if (off) {
17291 and_phy_reg(pi, en_addr, ~en_mask);
17292 and_phy_reg(pi, val_addr, ~val_mask);
17293 } else {
17294
17295 if ((core_mask == 0)
17296 || (core_mask & (1 << core_num))) {
17297 or_phy_reg(pi, en_addr, en_mask);
17298
17299 if (addr != 0xffff)
17300 mod_phy_reg(pi, val_addr,
17301 val_mask,
17302 (value <<
17303 val_shift));
17304 }
17305 }
17306 }
17307 } else {
17308
17309 if (off) {
17310 and_phy_reg(pi, 0xec, ~field);
17311 value = 0x0;
17312 } else {
17313 or_phy_reg(pi, 0xec, field);
17314 }
17315
17316 for (core_num = 0; core_num < 2; core_num++) {
17317
17318 switch (field) {
17319 case (0x1 << 1):
17320 case (0x1 << 9):
17321 case (0x1 << 12):
17322 case (0x1 << 13):
17323 case (0x1 << 14):
17324 addr = 0x78;
17325
17326 core_mask = 0x1;
17327 break;
17328 case (0x1 << 2):
17329 case (0x1 << 3):
17330 case (0x1 << 4):
17331 case (0x1 << 5):
17332 case (0x1 << 6):
17333 case (0x1 << 7):
17334 case (0x1 << 8):
17335 addr = (core_num == 0) ? 0x7a : 0x7d;
17336 break;
17337 case (0x1 << 10):
17338 addr = (core_num == 0) ? 0x7b : 0x7e;
17339 break;
17340 case (0x1 << 11):
17341 addr = (core_num == 0) ? 0x7c : 0x7f;
17342 break;
17343 default:
17344 addr = 0xffff;
17345 }
17346
17347 switch (field) {
17348 case (0x1 << 1):
17349 mask = (0x7 << 3);
17350 shift = 3;
17351 break;
17352 case (0x1 << 9):
17353 mask = (0x1 << 2);
17354 shift = 2;
17355 break;
17356 case (0x1 << 12):
17357 mask = (0x1 << 8);
17358 shift = 8;
17359 break;
17360 case (0x1 << 13):
17361 mask = (0x1 << 9);
17362 shift = 9;
17363 break;
17364 case (0x1 << 14):
17365 mask = (0xf << 12);
17366 shift = 12;
17367 break;
17368 case (0x1 << 2):
17369 mask = (0x1 << 0);
17370 shift = 0;
17371 break;
17372 case (0x1 << 3):
17373 mask = (0x1 << 1);
17374 shift = 1;
17375 break;
17376 case (0x1 << 4):
17377 mask = (0x1 << 2);
17378 shift = 2;
17379 break;
17380 case (0x1 << 5):
17381 mask = (0x3 << 4);
17382 shift = 4;
17383 break;
17384 case (0x1 << 6):
17385 mask = (0x3 << 6);
17386 shift = 6;
17387 break;
17388 case (0x1 << 7):
17389 mask = (0x1 << 8);
17390 shift = 8;
17391 break;
17392 case (0x1 << 8):
17393 mask = (0x1 << 9);
17394 shift = 9;
17395 break;
17396 case (0x1 << 10):
17397 mask = 0x1fff;
17398 shift = 0x0;
17399 break;
17400 case (0x1 << 11):
17401 mask = 0x1fff;
17402 shift = 0x0;
17403 break;
17404 default:
17405 mask = 0x0;
17406 shift = 0x0;
17407 break;
17408 }
17409
17410 if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17411 mod_phy_reg(pi, addr, mask, (value << shift));
17412 }
17413
17414 or_phy_reg(pi, 0xec, (0x1 << 0));
17415 or_phy_reg(pi, 0x78, (0x1 << 0));
17416 udelay(1);
17417 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17418 }
17419}
17420
17421static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17422{
17423 s32 rssi_buf[4];
17424 s32 int_val;
17425
17426 if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17427
17428 return;
17429
17430 if (PHY_IPA(pi))
17431 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17432
17433 if (NREV_GE(pi->pubpi.phy_rev, 7))
17434 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17435 0, 0x3, 0,
17436 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17437 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17438 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17439
17440 wlc_phy_stopplayback_nphy(pi);
17441
17442 wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17443
17444 udelay(20);
17445 int_val =
17446 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17447 1);
17448 wlc_phy_stopplayback_nphy(pi);
17449 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17450
17451 if (NREV_GE(pi->pubpi.phy_rev, 7))
17452 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17453 0, 0x3, 1,
17454 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17455 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17456 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17457
17458 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17459
17460 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17461 (u8) ((int_val >> 24) & 0xff);
17462 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17463 (u8) ((int_val >> 24) & 0xff);
17464
17465 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17466 (u8) ((int_val >> 8) & 0xff);
17467 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17468 (u8) ((int_val >> 8) & 0xff);
17469 } else {
17470 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17471 (u8) ((int_val >> 24) & 0xff);
17472
17473 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17474 (u8) ((int_val >> 8) & 0xff);
17475
17476 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17477 (u8) ((int_val >> 16) & 0xff);
17478 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17479 (u8) ((int_val) & 0xff);
17480 }
17481
17482}
17483
17484static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17485{
17486 u8 idx, idx2, i, delta_ind;
17487
17488 for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17489 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17490
17491 for (i = 0; i < 4; i++) {
17492 idx2 = 0;
17493
17494 delta_ind = 0;
17495
17496 switch (i) {
17497 case 0:
17498
17499 if (CHSPEC_IS40(pi->radio_chanspec)
17500 && NPHY_IS_SROM_REINTERPRET) {
17501 idx = TXP_FIRST_MCS_40_SISO;
17502 } else {
17503 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17504 TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17505 delta_ind = 1;
17506 }
17507 break;
17508
17509 case 1:
17510
17511 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17512 TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17513 break;
17514
17515 case 2:
17516
17517 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17518 TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17519 break;
17520
17521 case 3:
17522
17523 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17524 TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17525 break;
17526 }
17527
17528 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17529 pi->tx_power_offset[idx];
17530 idx = idx + delta_ind;
17531 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17532 pi->tx_power_offset[idx];
17533 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17534 pi->tx_power_offset[idx];
17535 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17536 pi->tx_power_offset[idx++];
17537
17538 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17539 pi->tx_power_offset[idx++];
17540 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17541 pi->tx_power_offset[idx];
17542 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17543 pi->tx_power_offset[idx];
17544 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17545 pi->tx_power_offset[idx++];
17546
17547 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17548 pi->tx_power_offset[idx++];
17549 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17550 pi->tx_power_offset[idx];
17551 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17552 pi->tx_power_offset[idx];
17553 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17554 pi->tx_power_offset[idx++];
17555
17556 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17557 pi->tx_power_offset[idx];
17558 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17559 pi->tx_power_offset[idx++];
17560 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17561 pi->tx_power_offset[idx];
17562 idx = idx + 1 - delta_ind;
17563 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17564 pi->tx_power_offset[idx];
17565
17566 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17567 pi->tx_power_offset[idx];
17568 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17569 pi->tx_power_offset[idx];
17570 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17571 pi->tx_power_offset[idx];
17572 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17573 pi->tx_power_offset[idx];
17574 }
17575}
17576
17577static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17578{
17579 u32 idx;
17580 s16 a1[2], b0[2], b1[2];
17581 s8 target_pwr_qtrdbm[2];
17582 s32 num, den, pwr_est;
17583 u8 chan_freq_range;
17584 u8 idle_tssi[2];
17585 u32 tbl_id, tbl_len, tbl_offset;
17586 u32 regval[64];
17587 u8 core;
17588
17589 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17590 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
4b006b11 17591 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
5b435de0
AS
17592 udelay(1);
17593 }
17594
17595 if (pi->phyhang_avoid)
17596 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17597
17598 or_phy_reg(pi, 0x122, (0x1 << 0));
17599
17600 if (NREV_GE(pi->pubpi.phy_rev, 3))
17601 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17602 else
17603 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17604
17605 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17606 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17607
17608 if (pi->sh->sromrev < 4) {
17609 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17610 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
5b435de0
AS
17611 a1[0] = -424;
17612 a1[1] = -424;
17613 b0[0] = 5612;
17614 b0[1] = 5612;
17615 b1[1] = -1393;
17616 b1[0] = -1393;
17617 } else {
17618
17619 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17620 switch (chan_freq_range) {
17621 case WL_CHAN_FREQ_RANGE_2G:
17622 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17623 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
5b435de0
AS
17624 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17625 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17626 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17627 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17628 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17629 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17630 break;
17631 case WL_CHAN_FREQ_RANGE_5GL:
17632 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17633 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
5b435de0
AS
17634 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17635 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17636 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17637 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17638 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17639 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17640 break;
17641 case WL_CHAN_FREQ_RANGE_5GM:
17642 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17643 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
5b435de0
AS
17644 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17645 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17646 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17647 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17648 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17649 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17650 break;
17651 case WL_CHAN_FREQ_RANGE_5GH:
17652 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17653 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
5b435de0
AS
17654 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17655 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17656 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17657 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17658 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17659 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17660 break;
17661 default:
17662 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17663 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
5b435de0
AS
17664 a1[0] = -424;
17665 a1[1] = -424;
17666 b0[0] = 5612;
17667 b0[1] = 5612;
17668 b1[1] = -1393;
17669 b1[0] = -1393;
17670 break;
17671 }
17672 }
17673
01343537 17674 /* use the provided transmit power */
5b435de0
AS
17675 target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17676 target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17677
17678 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17679 if (pi->srom_fem2g.tssipos)
17680 or_phy_reg(pi, 0x1e9, (0x1 << 14));
17681
17682 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17683 for (core = 0; core <= 1; core++) {
17684 if (PHY_IPA(pi)) {
17685 if (CHSPEC_IS2G(pi->radio_chanspec))
17686 WRITE_RADIO_REG3(pi, RADIO_2057,
17687 TX, core,
17688 TX_SSI_MUX,
17689 0xe);
17690 else
17691 WRITE_RADIO_REG3(pi, RADIO_2057,
17692 TX, core,
17693 TX_SSI_MUX,
17694 0xc);
17695 }
17696 }
17697 } else {
17698 if (PHY_IPA(pi)) {
17699
17700 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17701 RADIO_2056_TX0,
17702 (CHSPEC_IS5G
17703 (pi->radio_chanspec)) ?
17704 0xc : 0xe);
17705 write_radio_reg(pi,
17706 RADIO_2056_TX_TX_SSI_MUX |
17707 RADIO_2056_TX1,
17708 (CHSPEC_IS5G
17709 (pi->radio_chanspec)) ?
17710 0xc : 0xe);
17711 } else {
17712
17713 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17714 RADIO_2056_TX0, 0x11);
17715 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17716 RADIO_2056_TX1, 0x11);
17717 }
17718 }
17719 }
17720
17721 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17722 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
4b006b11 17723 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
5b435de0
AS
17724 udelay(1);
17725 }
17726
17727 if (NREV_GE(pi->pubpi.phy_rev, 7))
17728 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17729 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17730 else
17731 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17732 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17733
17734 if (NREV_GE(pi->pubpi.phy_rev, 7))
17735 mod_phy_reg(pi, 0x222, (0xff << 0),
17736 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17737 else if (NREV_GT(pi->pubpi.phy_rev, 1))
17738 mod_phy_reg(pi, 0x222, (0xff << 0),
17739 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17740
17741 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17742 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17743
17744 write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17745
17746 write_phy_reg(pi, 0x1e9,
17747 (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17748
17749 write_phy_reg(pi, 0x1ea,
17750 (target_pwr_qtrdbm[0] << 0) |
17751 (target_pwr_qtrdbm[1] << 8));
17752
17753 tbl_len = 64;
17754 tbl_offset = 0;
17755 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17756 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17757
17758 for (idx = 0; idx < tbl_len; idx++) {
17759 num = 8 *
17760 (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17761 den = 32768 + a1[tbl_id - 26] * idx;
17762 pwr_est = max(((4 * num + den / 2) / den), -8);
17763 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17764 if (idx <=
17765 (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17766 pwr_est =
17767 max(pwr_est,
17768 target_pwr_qtrdbm
17769 [tbl_id - 26] + 1);
17770 }
17771 regval[idx] = (u32) pwr_est;
17772 }
17773 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17774 regval);
17775 }
17776
17777 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17778 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17779 pi->adj_pwr_tbl_nphy);
17780 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17781 pi->adj_pwr_tbl_nphy);
17782
17783 if (pi->phyhang_avoid)
17784 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17785}
17786
17787static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17788{
17789 u32 *tx_pwrctrl_tbl = NULL;
17790
17791 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17792 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17793 if ((pi->pubpi.radiorev == 4)
17794 || (pi->pubpi.radiorev == 6))
17795 tx_pwrctrl_tbl =
17796 nphy_tpc_txgain_ipa_2g_2057rev4n6;
17797 else if (pi->pubpi.radiorev == 3)
17798 tx_pwrctrl_tbl =
17799 nphy_tpc_txgain_ipa_2g_2057rev3;
17800 else if (pi->pubpi.radiorev == 5)
17801 tx_pwrctrl_tbl =
17802 nphy_tpc_txgain_ipa_2g_2057rev5;
17803 else if ((pi->pubpi.radiorev == 7)
17804 || (pi->pubpi.radiorev == 8))
17805 tx_pwrctrl_tbl =
17806 nphy_tpc_txgain_ipa_2g_2057rev7;
17807 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17808 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
c9d6afc9
HM
17809 if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17810 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
5b435de0
AS
17811 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17812 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17813 } else {
17814 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17815 }
17816 } else {
17817
17818 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17819 if ((pi->pubpi.radiorev == 3) ||
17820 (pi->pubpi.radiorev == 4) ||
17821 (pi->pubpi.radiorev == 6))
17822 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17823 else if ((pi->pubpi.radiorev == 7)
17824 || (pi->pubpi.radiorev == 8))
17825 tx_pwrctrl_tbl =
17826 nphy_tpc_txgain_ipa_5g_2057rev7;
17827 } else {
17828 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17829 }
17830 }
17831
17832 return tx_pwrctrl_tbl;
17833}
17834
17835static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17836{
17837 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17838 if (pi->nphy_rssical_chanspec_2G == 0)
17839 return;
17840
17841 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17842 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17843 RADIO_2057_VCM_MASK,
17844 pi->rssical_cache.
17845 rssical_radio_regs_2G[0]);
17846 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17847 RADIO_2057_VCM_MASK,
17848 pi->rssical_cache.
17849 rssical_radio_regs_2G[1]);
17850 } else {
17851 mod_radio_reg(pi,
17852 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17853 RADIO_2056_VCM_MASK,
17854 pi->rssical_cache.
17855 rssical_radio_regs_2G[0]);
17856 mod_radio_reg(pi,
17857 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17858 RADIO_2056_VCM_MASK,
17859 pi->rssical_cache.
17860 rssical_radio_regs_2G[1]);
17861 }
17862
17863 write_phy_reg(pi, 0x1a6,
17864 pi->rssical_cache.rssical_phyregs_2G[0]);
17865 write_phy_reg(pi, 0x1ac,
17866 pi->rssical_cache.rssical_phyregs_2G[1]);
17867 write_phy_reg(pi, 0x1b2,
17868 pi->rssical_cache.rssical_phyregs_2G[2]);
17869 write_phy_reg(pi, 0x1b8,
17870 pi->rssical_cache.rssical_phyregs_2G[3]);
17871 write_phy_reg(pi, 0x1a4,
17872 pi->rssical_cache.rssical_phyregs_2G[4]);
17873 write_phy_reg(pi, 0x1aa,
17874 pi->rssical_cache.rssical_phyregs_2G[5]);
17875 write_phy_reg(pi, 0x1b0,
17876 pi->rssical_cache.rssical_phyregs_2G[6]);
17877 write_phy_reg(pi, 0x1b6,
17878 pi->rssical_cache.rssical_phyregs_2G[7]);
17879 write_phy_reg(pi, 0x1a5,
17880 pi->rssical_cache.rssical_phyregs_2G[8]);
17881 write_phy_reg(pi, 0x1ab,
17882 pi->rssical_cache.rssical_phyregs_2G[9]);
17883 write_phy_reg(pi, 0x1b1,
17884 pi->rssical_cache.rssical_phyregs_2G[10]);
17885 write_phy_reg(pi, 0x1b7,
17886 pi->rssical_cache.rssical_phyregs_2G[11]);
17887
17888 } else {
17889 if (pi->nphy_rssical_chanspec_5G == 0)
17890 return;
17891
17892 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17893 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17894 RADIO_2057_VCM_MASK,
17895 pi->rssical_cache.
17896 rssical_radio_regs_5G[0]);
17897 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17898 RADIO_2057_VCM_MASK,
17899 pi->rssical_cache.
17900 rssical_radio_regs_5G[1]);
17901 } else {
17902 mod_radio_reg(pi,
17903 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17904 RADIO_2056_VCM_MASK,
17905 pi->rssical_cache.
17906 rssical_radio_regs_5G[0]);
17907 mod_radio_reg(pi,
17908 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17909 RADIO_2056_VCM_MASK,
17910 pi->rssical_cache.
17911 rssical_radio_regs_5G[1]);
17912 }
17913
17914 write_phy_reg(pi, 0x1a6,
17915 pi->rssical_cache.rssical_phyregs_5G[0]);
17916 write_phy_reg(pi, 0x1ac,
17917 pi->rssical_cache.rssical_phyregs_5G[1]);
17918 write_phy_reg(pi, 0x1b2,
17919 pi->rssical_cache.rssical_phyregs_5G[2]);
17920 write_phy_reg(pi, 0x1b8,
17921 pi->rssical_cache.rssical_phyregs_5G[3]);
17922 write_phy_reg(pi, 0x1a4,
17923 pi->rssical_cache.rssical_phyregs_5G[4]);
17924 write_phy_reg(pi, 0x1aa,
17925 pi->rssical_cache.rssical_phyregs_5G[5]);
17926 write_phy_reg(pi, 0x1b0,
17927 pi->rssical_cache.rssical_phyregs_5G[6]);
17928 write_phy_reg(pi, 0x1b6,
17929 pi->rssical_cache.rssical_phyregs_5G[7]);
17930 write_phy_reg(pi, 0x1a5,
17931 pi->rssical_cache.rssical_phyregs_5G[8]);
17932 write_phy_reg(pi, 0x1ab,
17933 pi->rssical_cache.rssical_phyregs_5G[9]);
17934 write_phy_reg(pi, 0x1b1,
17935 pi->rssical_cache.rssical_phyregs_5G[10]);
17936 write_phy_reg(pi, 0x1b7,
17937 pi->rssical_cache.rssical_phyregs_5G[11]);
17938 }
17939}
17940
17941static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
17942{
17943 u16 txcal_gain[2];
17944
17945 pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
17946 pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
17947 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
17948 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
17949
17950 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17951 txcal_gain);
17952
17953 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17954 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
17955 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
17956 } else {
17957 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
17958 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
17959 }
17960
17961 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17962 txcal_gain);
17963}
17964
17965static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
17966{
17967 bool save_bbmult = false;
17968 u8 txcal_index_2057_rev5n7 = 0;
17969 u8 txcal_index_2057_rev3n4n6 = 10;
17970
17971 if (pi->use_int_tx_iqlo_cal_nphy) {
17972 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17973 if ((pi->pubpi.radiorev == 3) ||
17974 (pi->pubpi.radiorev == 4) ||
17975 (pi->pubpi.radiorev == 6)) {
17976
17977 pi->nphy_txcal_pwr_idx[0] =
17978 txcal_index_2057_rev3n4n6;
17979 pi->nphy_txcal_pwr_idx[1] =
17980 txcal_index_2057_rev3n4n6;
17981 wlc_phy_txpwr_index_nphy(
17982 pi, 3,
17983 txcal_index_2057_rev3n4n6,
17984 false);
17985 } else {
17986
17987 pi->nphy_txcal_pwr_idx[0] =
17988 txcal_index_2057_rev5n7;
17989 pi->nphy_txcal_pwr_idx[1] =
17990 txcal_index_2057_rev5n7;
17991 wlc_phy_txpwr_index_nphy(
17992 pi, 3,
17993 txcal_index_2057_rev5n7,
17994 false);
17995 }
17996 save_bbmult = true;
17997
17998 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
17999 wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18000 if (pi->sh->hw_phytxchain != 3) {
18001 pi->nphy_txcal_pwr_idx[1] =
18002 pi->nphy_txcal_pwr_idx[0];
18003 wlc_phy_txpwr_index_nphy(pi, 3,
18004 pi->
18005 nphy_txcal_pwr_idx[0],
18006 true);
18007 save_bbmult = true;
18008 }
18009
18010 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18011 if (PHY_IPA(pi)) {
18012 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18013 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18014 false);
18015 } else {
18016 pi->nphy_txcal_pwr_idx[0] = 80;
18017 pi->nphy_txcal_pwr_idx[1] = 80;
18018 wlc_phy_txpwr_index_nphy(pi, 3, 80,
18019 false);
18020 save_bbmult = true;
18021 }
18022 } else {
18023 wlc_phy_internal_cal_txgain_nphy(pi);
18024 save_bbmult = true;
18025 }
18026
18027 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18028 if (PHY_IPA(pi)) {
18029 if (CHSPEC_IS2G(pi->radio_chanspec))
18030 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18031 false);
18032 else
18033 wlc_phy_cal_txgainctrl_nphy(pi, 14,
18034 false);
18035 } else {
18036 wlc_phy_internal_cal_txgain_nphy(pi);
18037 save_bbmult = true;
18038 }
18039 }
18040
18041 } else {
18042 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18043 }
18044
18045 if (save_bbmult)
18046 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18047 &pi->nphy_txcal_bbmult);
18048}
18049
18050static void
18051wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18052 u8 core_code)
18053{
18054 u16 mask;
18055 u16 val;
18056 u8 core;
18057
18058 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18059 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18060 if (core_code == RADIO_MIMO_CORESEL_CORE1
18061 && core == PHY_CORE_1)
18062 continue;
18063 else if (core_code == RADIO_MIMO_CORESEL_CORE2
18064 && core == PHY_CORE_0)
18065 continue;
18066
18067 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18068
18069 mask = (0x1 << 10);
18070 val = 1 << 10;
18071 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18072 0x92, mask, val);
18073 }
18074
18075 if (field == NPHY_RfctrlIntc_override_OFF) {
18076
18077 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18078 0x92, 0);
18079
18080 wlc_phy_force_rfseq_nphy(pi,
18081 NPHY_RFSEQ_RESET2RX);
18082 } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18083
18084 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18085
18086 mask = (0x1 << 6) | (0x1 << 7);
18087
18088 val = value << 6;
18089 mod_phy_reg(pi,
18090 (core ==
18091 PHY_CORE_0) ? 0x91 : 0x92,
18092 mask, val);
18093
18094 or_phy_reg(pi,
18095 (core ==
18096 PHY_CORE_0) ? 0x91 : 0x92,
18097 (0x1 << 10));
18098
18099 and_phy_reg(pi, 0x2ff, (u16)
18100 ~(0x3 << 14));
18101 or_phy_reg(pi, 0x2ff, (0x1 << 13));
18102 or_phy_reg(pi, 0x2ff, (0x1 << 0));
18103 } else {
18104
18105 mask = (0x1 << 6) |
18106 (0x1 << 7) |
18107 (0x1 << 8) | (0x1 << 9);
18108 val = value << 6;
18109 mod_phy_reg(pi,
18110 (core ==
18111 PHY_CORE_0) ? 0x91 : 0x92,
18112 mask, val);
18113
18114 mask = (0x1 << 0);
18115 val = 1 << 0;
18116 mod_phy_reg(pi,
18117 (core ==
18118 PHY_CORE_0) ? 0xe7 : 0xec,
18119 mask, val);
18120
18121 mask = (core == PHY_CORE_0) ?
18122 (0x1 << 0) : (0x1 << 1);
18123 val = 1 << ((core == PHY_CORE_0) ?
18124 0 : 1);
18125 mod_phy_reg(pi, 0x78, mask, val);
18126
18127 SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18128 != 0), 10000);
18129 if (WARN(read_phy_reg(pi, 0x78) & val,
18130 "HW error: override failed"))
18131 return;
18132
18133 mask = (0x1 << 0);
18134 val = 0 << 0;
18135 mod_phy_reg(pi,
18136 (core ==
18137 PHY_CORE_0) ? 0xe7 : 0xec,
18138 mask, val);
18139 }
18140 } else if (field == NPHY_RfctrlIntc_override_PA) {
18141 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18142
18143 mask = (0x1 << 4) | (0x1 << 5);
18144
18145 if (CHSPEC_IS5G(pi->radio_chanspec))
18146 val = value << 5;
18147 else
18148 val = value << 4;
18149
18150 mod_phy_reg(pi,
18151 (core ==
18152 PHY_CORE_0) ? 0x91 : 0x92,
18153 mask, val);
18154
18155 or_phy_reg(pi,
18156 (core ==
18157 PHY_CORE_0) ? 0x91 : 0x92,
18158 (0x1 << 12));
18159 } else {
18160
18161 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18162 mask = (0x1 << 5);
18163 val = value << 5;
18164 } else {
18165 mask = (0x1 << 4);
18166 val = value << 4;
18167 }
18168 mod_phy_reg(pi,
18169 (core ==
18170 PHY_CORE_0) ? 0x91 : 0x92,
18171 mask, val);
18172 }
18173 } else if (field ==
18174 NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18175 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18176 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18177
18178 mask = (0x1 << 0);
18179 val = value << 0;
18180 mod_phy_reg(pi,
18181 (core ==
18182 PHY_CORE_0) ? 0x91
18183 : 0x92, mask, val);
18184
18185 mask = (0x1 << 2);
18186 mod_phy_reg(pi,
18187 (core ==
18188 PHY_CORE_0) ? 0x91
18189 : 0x92, mask, 0);
18190 } else {
18191
18192 mask = (0x1 << 2);
18193 val = value << 2;
18194 mod_phy_reg(pi,
18195 (core ==
18196 PHY_CORE_0) ? 0x91
18197 : 0x92, mask, val);
18198
18199 mask = (0x1 << 0);
18200 mod_phy_reg(pi,
18201 (core ==
18202 PHY_CORE_0) ? 0x91
18203 : 0x92, mask, 0);
18204 }
18205
18206 mask = (0x1 << 11);
18207 val = 1 << 11;
18208 mod_phy_reg(pi,
18209 (core ==
18210 PHY_CORE_0) ? 0x91 : 0x92,
18211 mask, val);
18212 } else {
18213
18214 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18215 mask = (0x1 << 0);
18216 val = value << 0;
18217 } else {
18218 mask = (0x1 << 2);
18219 val = value << 2;
18220 }
18221 mod_phy_reg(pi,
18222 (core ==
18223 PHY_CORE_0) ? 0x91 : 0x92,
18224 mask, val);
18225 }
18226 } else if (field ==
18227 NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18228 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18229 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18230
18231 mask = (0x1 << 1);
18232 val = value << 1;
18233 mod_phy_reg(pi,
18234 (core ==
18235 PHY_CORE_0) ? 0x91
18236 : 0x92, mask, val);
18237
18238 mask = (0x1 << 3);
18239 mod_phy_reg(pi,
18240 (core ==
18241 PHY_CORE_0) ? 0x91
18242 : 0x92, mask, 0);
18243 } else {
18244
18245 mask = (0x1 << 3);
18246 val = value << 3;
18247 mod_phy_reg(pi,
18248 (core ==
18249 PHY_CORE_0) ? 0x91
18250 : 0x92, mask, val);
18251
18252 mask = (0x1 << 1);
18253 mod_phy_reg(pi,
18254 (core ==
18255 PHY_CORE_0) ? 0x91
18256 : 0x92, mask, 0);
18257 }
18258
18259 mask = (0x1 << 11);
18260 val = 1 << 11;
18261 mod_phy_reg(pi,
18262 (core ==
18263 PHY_CORE_0) ? 0x91 : 0x92,
18264 mask, val);
18265 } else {
18266
18267 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18268 mask = (0x1 << 1);
18269 val = value << 1;
18270 } else {
18271 mask = (0x1 << 3);
18272 val = value << 3;
18273 }
18274 mod_phy_reg(pi,
18275 (core ==
18276 PHY_CORE_0) ? 0x91 : 0x92,
18277 mask, val);
18278 }
18279 }
18280 }
18281 }
18282}
18283
18284void
18285wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18286 bool debug)
18287{
18288 int gainctrl_loopidx;
18289 uint core;
18290 u16 m0m1, curr_m0m1;
18291 s32 delta_power;
18292 s32 txpwrindex;
18293 s32 qdBm_power[2];
18294 u16 orig_BBConfig;
18295 u16 phy_saveregs[4];
18296 u32 freq_test;
18297 u16 ampl_test = 250;
18298 uint stepsize;
18299 bool phyhang_avoid_state = false;
18300
18301 if (NREV_GE(pi->pubpi.phy_rev, 7))
18302 stepsize = 2;
18303 else
18304 stepsize = 1;
18305
18306 if (CHSPEC_IS40(pi->radio_chanspec))
18307 freq_test = 5000;
18308 else
18309 freq_test = 2500;
18310
18311 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18312 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18313
18314 if (pi->phyhang_avoid)
18315 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18316
18317 phyhang_avoid_state = pi->phyhang_avoid;
18318 pi->phyhang_avoid = false;
18319
18320 phy_saveregs[0] = read_phy_reg(pi, 0x91);
18321 phy_saveregs[1] = read_phy_reg(pi, 0x92);
18322 phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18323 phy_saveregs[3] = read_phy_reg(pi, 0xec);
18324 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18325 RADIO_MIMO_CORESEL_CORE1 |
18326 RADIO_MIMO_CORESEL_CORE2);
18327
18328 if (!debug) {
18329 wlc_phy_rfctrlintc_override_nphy(pi,
18330 NPHY_RfctrlIntc_override_TRSW,
18331 0x2, RADIO_MIMO_CORESEL_CORE1);
18332 wlc_phy_rfctrlintc_override_nphy(pi,
18333 NPHY_RfctrlIntc_override_TRSW,
18334 0x8, RADIO_MIMO_CORESEL_CORE2);
18335 } else {
18336 wlc_phy_rfctrlintc_override_nphy(pi,
18337 NPHY_RfctrlIntc_override_TRSW,
18338 0x1, RADIO_MIMO_CORESEL_CORE1);
18339 wlc_phy_rfctrlintc_override_nphy(pi,
18340 NPHY_RfctrlIntc_override_TRSW,
18341 0x7, RADIO_MIMO_CORESEL_CORE2);
18342 }
18343
18344 orig_BBConfig = read_phy_reg(pi, 0x01);
18345 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18346
18347 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18348
18349 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18350 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18351
18352 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18353 gainctrl_loopidx++) {
18354 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18355 false);
18356
18357 if (core == PHY_CORE_0)
18358 curr_m0m1 = m0m1 & 0xff00;
18359 else
18360 curr_m0m1 = m0m1 & 0x00ff;
18361
18362 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18363 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18364
18365 udelay(50);
18366
18367 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18368 NPHY_CAL_TSSISAMPS);
18369
18370 pi->nphy_bb_mult_save = 0;
18371 wlc_phy_stopplayback_nphy(pi);
18372
18373 delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18374
18375 txpwrindex -= stepsize * delta_power;
18376 if (txpwrindex < 0)
18377 txpwrindex = 0;
18378 else if (txpwrindex > 127)
18379 txpwrindex = 127;
18380
18381 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18382 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18383 (pi->srom_fem5g.extpagain == 3)) {
18384 if (txpwrindex < 30)
18385 txpwrindex = 30;
18386 }
18387 } else {
18388 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18389 (pi->srom_fem2g.extpagain == 3)) {
18390 if (txpwrindex < 50)
18391 txpwrindex = 50;
18392 }
18393 }
18394
18395 wlc_phy_txpwr_index_nphy(pi, (1 << core),
18396 (u8) txpwrindex, true);
18397 }
18398
18399 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18400
18401 if (debug) {
18402 u16 radio_gain;
18403 u16 dbg_m0m1;
18404
18405 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18406
18407 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18408 false);
18409
18410 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18411 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18412
18413 udelay(100);
18414
18415 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18416 NPHY_CAL_TSSISAMPS);
18417
18418 wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18419 &radio_gain);
18420
18421 mdelay(4000);
18422 pi->nphy_bb_mult_save = 0;
18423 wlc_phy_stopplayback_nphy(pi);
18424 }
18425 }
18426
18427 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18428 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18429
18430 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18431
18432 write_phy_reg(pi, 0x01, orig_BBConfig);
18433
18434 write_phy_reg(pi, 0x91, phy_saveregs[0]);
18435 write_phy_reg(pi, 0x92, phy_saveregs[1]);
18436 write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18437 write_phy_reg(pi, 0xec, phy_saveregs[3]);
18438
18439 pi->phyhang_avoid = phyhang_avoid_state;
18440
18441 if (pi->phyhang_avoid)
18442 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18443}
18444
18445static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18446{
18447 void *tbl_ptr;
18448 int coreNum;
18449 u16 *txcal_radio_regs = NULL;
18450
18451 if (pi->phyhang_avoid)
18452 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18453
18454 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18455
18456 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18457 &pi->calibration_cache.
18458 rxcal_coeffs_2G);
18459
18460 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18461 txcal_radio_regs =
18462 pi->calibration_cache.txcal_radio_regs_2G;
18463 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18464
18465 pi->calibration_cache.txcal_radio_regs_2G[0] =
18466 read_radio_reg(pi,
18467 RADIO_2056_TX_LOFT_FINE_I |
18468 RADIO_2056_TX0);
18469 pi->calibration_cache.txcal_radio_regs_2G[1] =
18470 read_radio_reg(pi,
18471 RADIO_2056_TX_LOFT_FINE_Q |
18472 RADIO_2056_TX0);
18473 pi->calibration_cache.txcal_radio_regs_2G[2] =
18474 read_radio_reg(pi,
18475 RADIO_2056_TX_LOFT_FINE_I |
18476 RADIO_2056_TX1);
18477 pi->calibration_cache.txcal_radio_regs_2G[3] =
18478 read_radio_reg(pi,
18479 RADIO_2056_TX_LOFT_FINE_Q |
18480 RADIO_2056_TX1);
18481
18482 pi->calibration_cache.txcal_radio_regs_2G[4] =
18483 read_radio_reg(pi,
18484 RADIO_2056_TX_LOFT_COARSE_I |
18485 RADIO_2056_TX0);
18486 pi->calibration_cache.txcal_radio_regs_2G[5] =
18487 read_radio_reg(pi,
18488 RADIO_2056_TX_LOFT_COARSE_Q |
18489 RADIO_2056_TX0);
18490 pi->calibration_cache.txcal_radio_regs_2G[6] =
18491 read_radio_reg(pi,
18492 RADIO_2056_TX_LOFT_COARSE_I |
18493 RADIO_2056_TX1);
18494 pi->calibration_cache.txcal_radio_regs_2G[7] =
18495 read_radio_reg(pi,
18496 RADIO_2056_TX_LOFT_COARSE_Q |
18497 RADIO_2056_TX1);
18498 } else {
18499 pi->calibration_cache.txcal_radio_regs_2G[0] =
18500 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18501 pi->calibration_cache.txcal_radio_regs_2G[1] =
18502 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18503 pi->calibration_cache.txcal_radio_regs_2G[2] =
18504 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18505 pi->calibration_cache.txcal_radio_regs_2G[3] =
18506 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18507 }
18508
18509 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18510 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18511 } else {
18512
18513 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18514 &pi->calibration_cache.
18515 rxcal_coeffs_5G);
18516
18517 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18518 txcal_radio_regs =
18519 pi->calibration_cache.txcal_radio_regs_5G;
18520 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18521
18522 pi->calibration_cache.txcal_radio_regs_5G[0] =
18523 read_radio_reg(pi,
18524 RADIO_2056_TX_LOFT_FINE_I |
18525 RADIO_2056_TX0);
18526 pi->calibration_cache.txcal_radio_regs_5G[1] =
18527 read_radio_reg(pi,
18528 RADIO_2056_TX_LOFT_FINE_Q |
18529 RADIO_2056_TX0);
18530 pi->calibration_cache.txcal_radio_regs_5G[2] =
18531 read_radio_reg(pi,
18532 RADIO_2056_TX_LOFT_FINE_I |
18533 RADIO_2056_TX1);
18534 pi->calibration_cache.txcal_radio_regs_5G[3] =
18535 read_radio_reg(pi,
18536 RADIO_2056_TX_LOFT_FINE_Q |
18537 RADIO_2056_TX1);
18538
18539 pi->calibration_cache.txcal_radio_regs_5G[4] =
18540 read_radio_reg(pi,
18541 RADIO_2056_TX_LOFT_COARSE_I |
18542 RADIO_2056_TX0);
18543 pi->calibration_cache.txcal_radio_regs_5G[5] =
18544 read_radio_reg(pi,
18545 RADIO_2056_TX_LOFT_COARSE_Q |
18546 RADIO_2056_TX0);
18547 pi->calibration_cache.txcal_radio_regs_5G[6] =
18548 read_radio_reg(pi,
18549 RADIO_2056_TX_LOFT_COARSE_I |
18550 RADIO_2056_TX1);
18551 pi->calibration_cache.txcal_radio_regs_5G[7] =
18552 read_radio_reg(pi,
18553 RADIO_2056_TX_LOFT_COARSE_Q |
18554 RADIO_2056_TX1);
18555 } else {
18556 pi->calibration_cache.txcal_radio_regs_5G[0] =
18557 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18558 pi->calibration_cache.txcal_radio_regs_5G[1] =
18559 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18560 pi->calibration_cache.txcal_radio_regs_5G[2] =
18561 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18562 pi->calibration_cache.txcal_radio_regs_5G[3] =
18563 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18564 }
18565
18566 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18567 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18568 }
18569 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18570 for (coreNum = 0; coreNum <= 1; coreNum++) {
18571
18572 txcal_radio_regs[2 * coreNum] =
18573 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18574 LOFT_FINE_I);
18575 txcal_radio_regs[2 * coreNum + 1] =
18576 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18577 LOFT_FINE_Q);
18578
18579 txcal_radio_regs[2 * coreNum + 4] =
18580 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18581 LOFT_COARSE_I);
18582 txcal_radio_regs[2 * coreNum + 5] =
18583 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18584 LOFT_COARSE_Q);
18585 }
18586 }
18587
18588 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18589
18590 if (pi->phyhang_avoid)
18591 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18592}
18593
18594static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18595{
18596 struct nphy_iq_comp tx_comp;
18597
18598 wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18599
18600 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18601 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18602 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18603 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18604}
18605
18606static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18607{
18608 u16 *loft_comp;
18609 u16 txcal_coeffs_bphy[4];
18610 u16 *tbl_ptr;
18611 int coreNum;
18612 u16 *txcal_radio_regs = NULL;
18613
18614 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18615 if (pi->nphy_iqcal_chanspec_2G == 0)
18616 return;
18617
18618 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18619 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18620 } else {
18621 if (pi->nphy_iqcal_chanspec_5G == 0)
18622 return;
18623
18624 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18625 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18626 }
18627
18628 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18629
18630 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18631 txcal_coeffs_bphy[0] = tbl_ptr[0];
18632 txcal_coeffs_bphy[1] = tbl_ptr[1];
18633 txcal_coeffs_bphy[2] = tbl_ptr[2];
18634 txcal_coeffs_bphy[3] = tbl_ptr[3];
18635 } else {
18636 txcal_coeffs_bphy[0] = 0;
18637 txcal_coeffs_bphy[1] = 0;
18638 txcal_coeffs_bphy[2] = 0;
18639 txcal_coeffs_bphy[3] = 0;
18640 }
18641
18642 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18643 txcal_coeffs_bphy);
18644
18645 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18646
18647 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18648
18649 if (NREV_LT(pi->pubpi.phy_rev, 2))
18650 wlc_phy_tx_iq_war_nphy(pi);
18651
18652 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18653 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18654 txcal_radio_regs =
18655 pi->calibration_cache.txcal_radio_regs_2G;
18656 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18657
18658 write_radio_reg(pi,
18659 RADIO_2056_TX_LOFT_FINE_I |
18660 RADIO_2056_TX0,
18661 pi->calibration_cache.
18662 txcal_radio_regs_2G[0]);
18663 write_radio_reg(pi,
18664 RADIO_2056_TX_LOFT_FINE_Q |
18665 RADIO_2056_TX0,
18666 pi->calibration_cache.
18667 txcal_radio_regs_2G[1]);
18668 write_radio_reg(pi,
18669 RADIO_2056_TX_LOFT_FINE_I |
18670 RADIO_2056_TX1,
18671 pi->calibration_cache.
18672 txcal_radio_regs_2G[2]);
18673 write_radio_reg(pi,
18674 RADIO_2056_TX_LOFT_FINE_Q |
18675 RADIO_2056_TX1,
18676 pi->calibration_cache.
18677 txcal_radio_regs_2G[3]);
18678
18679 write_radio_reg(pi,
18680 RADIO_2056_TX_LOFT_COARSE_I |
18681 RADIO_2056_TX0,
18682 pi->calibration_cache.
18683 txcal_radio_regs_2G[4]);
18684 write_radio_reg(pi,
18685 RADIO_2056_TX_LOFT_COARSE_Q |
18686 RADIO_2056_TX0,
18687 pi->calibration_cache.
18688 txcal_radio_regs_2G[5]);
18689 write_radio_reg(pi,
18690 RADIO_2056_TX_LOFT_COARSE_I |
18691 RADIO_2056_TX1,
18692 pi->calibration_cache.
18693 txcal_radio_regs_2G[6]);
18694 write_radio_reg(pi,
18695 RADIO_2056_TX_LOFT_COARSE_Q |
18696 RADIO_2056_TX1,
18697 pi->calibration_cache.
18698 txcal_radio_regs_2G[7]);
18699 } else {
18700 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18701 pi->calibration_cache.
18702 txcal_radio_regs_2G[0]);
18703 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18704 pi->calibration_cache.
18705 txcal_radio_regs_2G[1]);
18706 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18707 pi->calibration_cache.
18708 txcal_radio_regs_2G[2]);
18709 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18710 pi->calibration_cache.
18711 txcal_radio_regs_2G[3]);
18712 }
18713
18714 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18715 &pi->calibration_cache.
18716 rxcal_coeffs_2G);
18717 } else {
18718 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18719 txcal_radio_regs =
18720 pi->calibration_cache.txcal_radio_regs_5G;
18721 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18722
18723 write_radio_reg(pi,
18724 RADIO_2056_TX_LOFT_FINE_I |
18725 RADIO_2056_TX0,
18726 pi->calibration_cache.
18727 txcal_radio_regs_5G[0]);
18728 write_radio_reg(pi,
18729 RADIO_2056_TX_LOFT_FINE_Q |
18730 RADIO_2056_TX0,
18731 pi->calibration_cache.
18732 txcal_radio_regs_5G[1]);
18733 write_radio_reg(pi,
18734 RADIO_2056_TX_LOFT_FINE_I |
18735 RADIO_2056_TX1,
18736 pi->calibration_cache.
18737 txcal_radio_regs_5G[2]);
18738 write_radio_reg(pi,
18739 RADIO_2056_TX_LOFT_FINE_Q |
18740 RADIO_2056_TX1,
18741 pi->calibration_cache.
18742 txcal_radio_regs_5G[3]);
18743
18744 write_radio_reg(pi,
18745 RADIO_2056_TX_LOFT_COARSE_I |
18746 RADIO_2056_TX0,
18747 pi->calibration_cache.
18748 txcal_radio_regs_5G[4]);
18749 write_radio_reg(pi,
18750 RADIO_2056_TX_LOFT_COARSE_Q |
18751 RADIO_2056_TX0,
18752 pi->calibration_cache.
18753 txcal_radio_regs_5G[5]);
18754 write_radio_reg(pi,
18755 RADIO_2056_TX_LOFT_COARSE_I |
18756 RADIO_2056_TX1,
18757 pi->calibration_cache.
18758 txcal_radio_regs_5G[6]);
18759 write_radio_reg(pi,
18760 RADIO_2056_TX_LOFT_COARSE_Q |
18761 RADIO_2056_TX1,
18762 pi->calibration_cache.
18763 txcal_radio_regs_5G[7]);
18764 } else {
18765 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18766 pi->calibration_cache.
18767 txcal_radio_regs_5G[0]);
18768 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18769 pi->calibration_cache.
18770 txcal_radio_regs_5G[1]);
18771 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18772 pi->calibration_cache.
18773 txcal_radio_regs_5G[2]);
18774 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18775 pi->calibration_cache.
18776 txcal_radio_regs_5G[3]);
18777 }
18778
18779 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18780 &pi->calibration_cache.
18781 rxcal_coeffs_5G);
18782 }
18783
18784 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18785 for (coreNum = 0; coreNum <= 1; coreNum++) {
18786
18787 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18788 LOFT_FINE_I,
18789 txcal_radio_regs[2 * coreNum]);
18790 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18791 LOFT_FINE_Q,
18792 txcal_radio_regs[2 * coreNum + 1]);
18793
18794 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18795 LOFT_COARSE_I,
18796 txcal_radio_regs[2 * coreNum + 4]);
18797 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18798 LOFT_COARSE_Q,
18799 txcal_radio_regs[2 * coreNum + 5]);
18800 }
18801 }
18802}
18803
18804static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18805{
18806 u32 idx;
18807 u16 iqloCalbuf[7];
18808 u32 iqcomp, locomp, curr_locomp;
18809 s8 locomp_i, locomp_q;
18810 s8 curr_locomp_i, curr_locomp_q;
18811 u32 tbl_id, tbl_len, tbl_offset;
18812 u32 regval[128];
18813
18814 if (pi->phyhang_avoid)
18815 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18816
18817 wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18818
18819 tbl_len = 128;
18820 tbl_offset = 320;
18821 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18822 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18823 iqcomp =
18824 (tbl_id ==
18825 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18826 (iqloCalbuf[1] & 0x3ff)
18827 : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18828 (iqloCalbuf[3] & 0x3ff);
18829
18830 for (idx = 0; idx < tbl_len; idx++)
18831 regval[idx] = iqcomp;
18832 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18833 regval);
18834 }
18835
18836 tbl_offset = 448;
18837 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18838 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18839
18840 locomp =
18841 (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18842 locomp_i = (s8) ((locomp >> 8) & 0xff);
18843 locomp_q = (s8) ((locomp) & 0xff);
18844 for (idx = 0; idx < tbl_len; idx++) {
18845 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18846 curr_locomp_i = locomp_i;
18847 curr_locomp_q = locomp_q;
18848 } else {
18849 curr_locomp_i = (s8) ((locomp_i *
18850 nphy_tpc_loscale[idx] +
18851 128) >> 8);
18852 curr_locomp_q =
18853 (s8) ((locomp_q *
18854 nphy_tpc_loscale[idx] +
18855 128) >> 8);
18856 }
18857 curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18858 curr_locomp |= (u32) (curr_locomp_q & 0xff);
18859 regval[idx] = curr_locomp;
18860 }
18861 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18862 regval);
18863 }
18864
18865 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18866
18867 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18868 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18869 }
18870
18871 if (pi->phyhang_avoid)
18872 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18873}
18874
18875static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18876{
18877 u8 tx_lpf_bw = 0;
18878
18879 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18880 if (CHSPEC_IS40(pi->radio_chanspec))
18881 tx_lpf_bw = 3;
18882 else
18883 tx_lpf_bw = 1;
18884
18885 if (PHY_IPA(pi)) {
18886 if (CHSPEC_IS40(pi->radio_chanspec))
18887 tx_lpf_bw = 5;
18888 else
18889 tx_lpf_bw = 4;
18890 }
18891
18892 write_phy_reg(pi, 0xe8,
18893 (tx_lpf_bw << 0) |
18894 (tx_lpf_bw << 3) |
18895 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18896
18897 if (PHY_IPA(pi)) {
18898
18899 if (CHSPEC_IS40(pi->radio_chanspec))
18900 tx_lpf_bw = 4;
18901 else
18902 tx_lpf_bw = 1;
18903
18904 write_phy_reg(pi, 0xe9,
18905 (tx_lpf_bw << 0) |
18906 (tx_lpf_bw << 3) |
18907 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18908 }
18909 }
18910}
18911
18912static void
18913wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
18914{
18915 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18916 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18917 CHSPEC_IS40(pi->radio_chanspec)) {
18918 if (!pi->nphy_anarxlpf_adjusted) {
18919 write_radio_reg(pi,
18920 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18921 RADIO_2056_RX0),
18922 ((pi->nphy_rccal_value +
18923 reduction_factr) | 0x80));
18924
18925 pi->nphy_anarxlpf_adjusted = true;
18926 }
18927 } else {
18928 if (pi->nphy_anarxlpf_adjusted) {
18929 write_radio_reg(pi,
18930 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18931 RADIO_2056_RX0),
18932 (pi->nphy_rccal_value | 0x80));
18933
18934 pi->nphy_anarxlpf_adjusted = false;
18935 }
18936 }
18937 }
18938}
18939
18940static void
18941wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
18942 int *tone_id_buf, u32 *noise_var_buf)
18943{
18944 int i;
18945 u32 offset;
18946 int tone_id;
18947 int tbllen =
18948 CHSPEC_IS40(pi->radio_chanspec) ?
18949 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
18950
18951 if (pi->nphy_noisevars_adjusted) {
18952 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18953 tone_id = pi->nphy_saved_noisevars.tone_id[i];
18954 offset = (tone_id >= 0) ?
18955 ((tone_id *
18956 2) + 1) : (tbllen + (tone_id * 2) + 1);
18957 wlc_phy_table_write_nphy(
18958 pi, NPHY_TBL_ID_NOISEVAR, 1,
18959 offset, 32,
18960 &pi->nphy_saved_noisevars.min_noise_vars[i]);
18961 }
18962
18963 pi->nphy_saved_noisevars.bufcount = 0;
18964 pi->nphy_noisevars_adjusted = false;
18965 }
18966
18967 if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18968 pi->nphy_saved_noisevars.bufcount = 0;
18969
18970 for (i = 0; i < ntones; i++) {
18971 tone_id = tone_id_buf[i];
18972 offset = (tone_id >= 0) ?
18973 ((tone_id * 2) + 1) :
18974 (tbllen + (tone_id * 2) + 1);
18975 pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18976 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18977 offset, 32,
18978 &pi->nphy_saved_noisevars.
18979 min_noise_vars[i]);
18980 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18981 offset, 32, &noise_var_buf[i]);
18982 pi->nphy_saved_noisevars.bufcount++;
18983 }
18984
18985 pi->nphy_noisevars_adjusted = true;
18986 }
18987}
18988
18989static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
18990{
18991 u16 regval;
18992
18993 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18994 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18995 CHSPEC_IS40(pi->radio_chanspec)) {
18996 if (!pi->nphy_crsminpwr_adjusted) {
18997 regval = read_phy_reg(pi, 0x27d);
18998 pi->nphy_crsminpwr[0] = regval & 0xff;
18999 regval &= 0xff00;
19000 regval |= (u16) minpwr;
19001 write_phy_reg(pi, 0x27d, regval);
19002
19003 regval = read_phy_reg(pi, 0x280);
19004 pi->nphy_crsminpwr[1] = regval & 0xff;
19005 regval &= 0xff00;
19006 regval |= (u16) minpwr;
19007 write_phy_reg(pi, 0x280, regval);
19008
19009 regval = read_phy_reg(pi, 0x283);
19010 pi->nphy_crsminpwr[2] = regval & 0xff;
19011 regval &= 0xff00;
19012 regval |= (u16) minpwr;
19013 write_phy_reg(pi, 0x283, regval);
19014
19015 pi->nphy_crsminpwr_adjusted = true;
19016 }
19017 } else {
19018 if (pi->nphy_crsminpwr_adjusted) {
19019 regval = read_phy_reg(pi, 0x27d);
19020 regval &= 0xff00;
19021 regval |= pi->nphy_crsminpwr[0];
19022 write_phy_reg(pi, 0x27d, regval);
19023
19024 regval = read_phy_reg(pi, 0x280);
19025 regval &= 0xff00;
19026 regval |= pi->nphy_crsminpwr[1];
19027 write_phy_reg(pi, 0x280, regval);
19028
19029 regval = read_phy_reg(pi, 0x283);
19030 regval &= 0xff00;
19031 regval |= pi->nphy_crsminpwr[2];
19032 write_phy_reg(pi, 0x283, regval);
19033
19034 pi->nphy_crsminpwr_adjusted = false;
19035 }
19036 }
19037 }
19038}
19039
19040static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19041{
19042 u16 cur_channel = 0;
19043 int nphy_adj_tone_id_buf[] = { 57, 58 };
19044 u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19045 bool isAdjustNoiseVar = false;
19046 uint numTonesAdjust = 0;
19047 u32 tempval = 0;
19048
19049 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19050 if (pi->phyhang_avoid)
19051 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19052
19053 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19054
19055 if (pi->nphy_gband_spurwar_en) {
19056
19057 wlc_phy_adjust_rx_analpfbw_nphy(
19058 pi,
19059 NPHY_ANARXLPFBW_REDUCTIONFACT);
19060
19061 if (CHSPEC_IS2G(pi->radio_chanspec)) {
19062 if ((cur_channel == 11)
19063 && CHSPEC_IS40(pi->radio_chanspec))
19064 wlc_phy_adjust_min_noisevar_nphy(
19065 pi, 2,
19066 nphy_adj_tone_id_buf,
19067 nphy_adj_noise_var_buf);
19068 else
19069 wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19070 NULL,
19071 NULL);
19072 }
19073
19074 wlc_phy_adjust_crsminpwr_nphy(pi,
19075 NPHY_ADJUSTED_MINCRSPOWER);
19076 }
19077
19078 if ((pi->nphy_gband_spurwar2_en)
19079 && CHSPEC_IS2G(pi->radio_chanspec)) {
19080
19081 if (CHSPEC_IS40(pi->radio_chanspec)) {
19082 switch (cur_channel) {
19083 case 3:
19084 nphy_adj_tone_id_buf[0] = 57;
19085 nphy_adj_tone_id_buf[1] = 58;
19086 nphy_adj_noise_var_buf[0] = 0x22f;
19087 nphy_adj_noise_var_buf[1] = 0x25f;
19088 isAdjustNoiseVar = true;
19089 break;
19090 case 4:
19091 nphy_adj_tone_id_buf[0] = 41;
19092 nphy_adj_tone_id_buf[1] = 42;
19093 nphy_adj_noise_var_buf[0] = 0x22f;
19094 nphy_adj_noise_var_buf[1] = 0x25f;
19095 isAdjustNoiseVar = true;
19096 break;
19097 case 5:
19098 nphy_adj_tone_id_buf[0] = 25;
19099 nphy_adj_tone_id_buf[1] = 26;
19100 nphy_adj_noise_var_buf[0] = 0x24f;
19101 nphy_adj_noise_var_buf[1] = 0x25f;
19102 isAdjustNoiseVar = true;
19103 break;
19104 case 6:
19105 nphy_adj_tone_id_buf[0] = 9;
19106 nphy_adj_tone_id_buf[1] = 10;
19107 nphy_adj_noise_var_buf[0] = 0x22f;
19108 nphy_adj_noise_var_buf[1] = 0x24f;
19109 isAdjustNoiseVar = true;
19110 break;
19111 case 7:
19112 nphy_adj_tone_id_buf[0] = 121;
19113 nphy_adj_tone_id_buf[1] = 122;
19114 nphy_adj_noise_var_buf[0] = 0x18f;
19115 nphy_adj_noise_var_buf[1] = 0x24f;
19116 isAdjustNoiseVar = true;
19117 break;
19118 case 8:
19119 nphy_adj_tone_id_buf[0] = 105;
19120 nphy_adj_tone_id_buf[1] = 106;
19121 nphy_adj_noise_var_buf[0] = 0x22f;
19122 nphy_adj_noise_var_buf[1] = 0x25f;
19123 isAdjustNoiseVar = true;
19124 break;
19125 case 9:
19126 nphy_adj_tone_id_buf[0] = 89;
19127 nphy_adj_tone_id_buf[1] = 90;
19128 nphy_adj_noise_var_buf[0] = 0x22f;
19129 nphy_adj_noise_var_buf[1] = 0x24f;
19130 isAdjustNoiseVar = true;
19131 break;
19132 case 10:
19133 nphy_adj_tone_id_buf[0] = 73;
19134 nphy_adj_tone_id_buf[1] = 74;
19135 nphy_adj_noise_var_buf[0] = 0x22f;
19136 nphy_adj_noise_var_buf[1] = 0x24f;
19137 isAdjustNoiseVar = true;
19138 break;
19139 default:
19140 isAdjustNoiseVar = false;
19141 break;
19142 }
19143 }
19144
19145 if (isAdjustNoiseVar) {
f26b6f3d 19146 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
5b435de0
AS
19147
19148 wlc_phy_adjust_min_noisevar_nphy(
19149 pi,
19150 numTonesAdjust,
19151 nphy_adj_tone_id_buf,
19152 nphy_adj_noise_var_buf);
19153
19154 tempval = 0;
19155
19156 } else {
19157 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19158 NULL);
19159 }
19160 }
19161
19162 if ((pi->nphy_aband_spurwar_en) &&
19163 (CHSPEC_IS5G(pi->radio_chanspec))) {
19164 switch (cur_channel) {
19165 case 54:
19166 nphy_adj_tone_id_buf[0] = 32;
19167 nphy_adj_noise_var_buf[0] = 0x25f;
19168 break;
19169 case 38:
19170 case 102:
19171 case 118:
c9d6afc9
HM
19172 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19173 (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19174 nphy_adj_tone_id_buf[0] = 32;
19175 nphy_adj_noise_var_buf[0] = 0x21f;
19176 } else {
19177 nphy_adj_tone_id_buf[0] = 0;
19178 nphy_adj_noise_var_buf[0] = 0x0;
19179 }
5b435de0
AS
19180 break;
19181 case 134:
19182 nphy_adj_tone_id_buf[0] = 32;
19183 nphy_adj_noise_var_buf[0] = 0x21f;
19184 break;
19185 case 151:
19186 nphy_adj_tone_id_buf[0] = 16;
19187 nphy_adj_noise_var_buf[0] = 0x23f;
19188 break;
19189 case 153:
19190 case 161:
19191 nphy_adj_tone_id_buf[0] = 48;
19192 nphy_adj_noise_var_buf[0] = 0x23f;
19193 break;
19194 default:
19195 nphy_adj_tone_id_buf[0] = 0;
19196 nphy_adj_noise_var_buf[0] = 0x0;
19197 break;
19198 }
19199
19200 if (nphy_adj_tone_id_buf[0]
19201 && nphy_adj_noise_var_buf[0])
19202 wlc_phy_adjust_min_noisevar_nphy(
19203 pi, 1,
19204 nphy_adj_tone_id_buf,
19205 nphy_adj_noise_var_buf);
19206 else
19207 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19208 NULL);
19209 }
19210
19211 if (pi->phyhang_avoid)
19212 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19213 }
19214}
19215
19216void wlc_phy_init_nphy(struct brcms_phy *pi)
19217{
19218 u16 val;
19219 u16 clip1_ths[2];
19220 struct nphy_txgains target_gain;
19221 u8 tx_pwr_ctrl_state;
19222 bool do_nphy_cal = false;
19223 uint core;
5b435de0
AS
19224 u32 d11_clk_ctl_st;
19225 bool do_rssi_cal = false;
19226
19227 core = 0;
19228
19229 if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19230 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19231
19232 if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
1ef1a57d
HM
19233 ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19234 (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
5b435de0
AS
19235 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19236 (CHSPEC_IS2G(pi->radio_chanspec)))
689b66cb
HM
19237 bcma_cc_set32(&pi->d11core->bus->drv_cc,
19238 BCMA_CC_CHIPCTL, 0x40);
5b435de0
AS
19239 }
19240
c9d6afc9 19241 if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
689b66cb
HM
19242 bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19243 ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
c9d6afc9 19244
5b435de0
AS
19245 if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19246 CHSPEC_IS40(pi->radio_chanspec)) {
19247
4b006b11
AS
19248 d11_clk_ctl_st = bcma_read32(pi->d11core,
19249 D11REGOFFS(clk_ctl_st));
19250 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19251 ~(CCS_FORCEHT | CCS_HTAREQ));
19252
19253 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19254 d11_clk_ctl_st);
5b435de0
AS
19255 }
19256
19257 pi->use_int_tx_iqlo_cal_nphy =
19258 (PHY_IPA(pi) ||
19259 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19260 (NREV_GE(pi->pubpi.phy_rev, 5)
19261 && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19262
19263 pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19264
19265 pi->nphy_deaf_count = 0;
19266
19267 wlc_phy_tbl_init_nphy(pi);
19268
19269 pi->nphy_crsminpwr_adjusted = false;
19270 pi->nphy_noisevars_adjusted = false;
19271
19272 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19273 write_phy_reg(pi, 0xe7, 0);
19274 write_phy_reg(pi, 0xec, 0);
19275 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19276 write_phy_reg(pi, 0x342, 0);
19277 write_phy_reg(pi, 0x343, 0);
19278 write_phy_reg(pi, 0x346, 0);
19279 write_phy_reg(pi, 0x347, 0);
19280 }
19281 write_phy_reg(pi, 0xe5, 0);
19282 write_phy_reg(pi, 0xe6, 0);
19283 } else {
19284 write_phy_reg(pi, 0xec, 0);
19285 }
19286
19287 write_phy_reg(pi, 0x91, 0);
19288 write_phy_reg(pi, 0x92, 0);
19289 if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19290 write_phy_reg(pi, 0x93, 0);
19291 write_phy_reg(pi, 0x94, 0);
19292 }
19293
19294 and_phy_reg(pi, 0xa1, ~3);
19295
19296 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19297 write_phy_reg(pi, 0x8f, 0);
19298 write_phy_reg(pi, 0xa5, 0);
19299 } else {
19300 write_phy_reg(pi, 0xa5, 0);
19301 }
19302
19303 if (NREV_IS(pi->pubpi.phy_rev, 2))
19304 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19305 else if (NREV_LT(pi->pubpi.phy_rev, 2))
19306 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19307
19308 write_phy_reg(pi, 0x203, 32);
19309 write_phy_reg(pi, 0x201, 32);
19310
19311 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19312 write_phy_reg(pi, 0x20d, 160);
19313 else
19314 write_phy_reg(pi, 0x20d, 184);
19315
19316 write_phy_reg(pi, 0x13a, 200);
19317
19318 write_phy_reg(pi, 0x70, 80);
19319
19320 write_phy_reg(pi, 0x1ff, 48);
19321
19322 if (NREV_LT(pi->pubpi.phy_rev, 8))
19323 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19324
19325 wlc_phy_stf_chain_upd_nphy(pi);
19326
19327 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19328 write_phy_reg(pi, 0x180, 0xaa8);
19329 write_phy_reg(pi, 0x181, 0x9a4);
19330 }
19331
19332 if (PHY_IPA(pi)) {
19333 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19334
19335 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19336 0x29b, (0x1 << 0), (1) << 0);
19337
19338 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19339 0x29c, (0x1ff << 7),
19340 (pi->nphy_papd_epsilon_offset[core]) << 7);
19341
19342 }
19343
19344 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19345 } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19346 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19347 }
19348
19349 wlc_phy_workarounds_nphy(pi);
19350
19351 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19352
19353 val = read_phy_reg(pi, 0x01);
19354 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19355 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19356 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19357
19358 wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19359
19360 wlc_phy_pa_override_nphy(pi, OFF);
19361 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19362 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19363 wlc_phy_pa_override_nphy(pi, ON);
19364
19365 wlc_phy_classifier_nphy(pi, 0, 0);
19366 wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19367
19368 if (CHSPEC_IS2G(pi->radio_chanspec))
19369 wlc_phy_bphy_init_nphy(pi);
19370
19371 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19372 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19373
19374 wlc_phy_txpwr_fixpower_nphy(pi);
19375
19376 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19377
19378 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19379
19380 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19381 u32 *tx_pwrctrl_tbl = NULL;
19382 u16 idx;
19383 s16 pga_gn = 0;
19384 s16 pad_gn = 0;
19385 s32 rfpwr_offset;
19386
19387 if (PHY_IPA(pi)) {
19388 tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19389 } else {
19390 if (CHSPEC_IS5G(pi->radio_chanspec)) {
19391 if (NREV_IS(pi->pubpi.phy_rev, 3))
19392 tx_pwrctrl_tbl =
19393 nphy_tpc_5GHz_txgain_rev3;
19394 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19395 tx_pwrctrl_tbl =
19396 (pi->srom_fem5g.extpagain ==
19397 3) ?
19398 nphy_tpc_5GHz_txgain_HiPwrEPA :
19399 nphy_tpc_5GHz_txgain_rev4;
19400 else
19401 tx_pwrctrl_tbl =
19402 nphy_tpc_5GHz_txgain_rev5;
19403 } else {
19404 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19405 if (pi->pubpi.radiorev == 5)
19406 tx_pwrctrl_tbl =
19407 nphy_tpc_txgain_epa_2057rev5;
19408 else if (pi->pubpi.radiorev == 3)
19409 tx_pwrctrl_tbl =
19410 nphy_tpc_txgain_epa_2057rev3;
19411 } else {
19412 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19413 (pi->srom_fem2g.extpagain == 3))
19414 tx_pwrctrl_tbl =
19415 nphy_tpc_txgain_HiPwrEPA;
19416 else
19417 tx_pwrctrl_tbl =
19418 nphy_tpc_txgain_rev3;
19419 }
19420 }
19421 }
19422
19423 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19424 192, 32, tx_pwrctrl_tbl);
19425 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19426 192, 32, tx_pwrctrl_tbl);
19427
19428 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19429
19430 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19431
19432 for (idx = 0; idx < 128; idx++) {
19433 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19434 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19435 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19436 pad_gn);
19437 wlc_phy_table_write_nphy(
19438 pi,
19439 NPHY_TBL_ID_CORE1TXPWRCTL,
19440 1, 576 + idx, 32,
19441 &rfpwr_offset);
19442 wlc_phy_table_write_nphy(
19443 pi,
19444 NPHY_TBL_ID_CORE2TXPWRCTL,
19445 1, 576 + idx, 32,
19446 &rfpwr_offset);
19447 }
19448 } else {
19449
19450 for (idx = 0; idx < 128; idx++) {
19451 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19452 if (CHSPEC_IS2G(pi->radio_chanspec))
19453 rfpwr_offset = (s16)
19454 nphy_papd_pga_gain_delta_ipa_2g
19455 [pga_gn];
19456 else
19457 rfpwr_offset = (s16)
19458 nphy_papd_pga_gain_delta_ipa_5g
19459 [pga_gn];
19460
19461 wlc_phy_table_write_nphy(
19462 pi,
19463 NPHY_TBL_ID_CORE1TXPWRCTL,
19464 1, 576 + idx, 32,
19465 &rfpwr_offset);
19466 wlc_phy_table_write_nphy(
19467 pi,
19468 NPHY_TBL_ID_CORE2TXPWRCTL,
19469 1, 576 + idx, 32,
19470 &rfpwr_offset);
19471 }
19472
19473 }
19474 } else {
19475
19476 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19477 192, 32, nphy_tpc_txgain);
19478 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19479 192, 32, nphy_tpc_txgain);
19480 }
19481
19482 if (pi->sh->phyrxchain != 0x3)
19483 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19484 pi->sh->phyrxchain);
19485
19486 if (PHY_PERICAL_MPHASE_PENDING(pi))
19487 wlc_phy_cal_perical_mphase_restart(pi);
19488
19489 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19490 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19491 (pi->nphy_rssical_chanspec_2G == 0) :
19492 (pi->nphy_rssical_chanspec_5G == 0);
19493
19494 if (do_rssi_cal)
19495 wlc_phy_rssi_cal_nphy(pi);
19496 else
19497 wlc_phy_restore_rssical_nphy(pi);
19498 } else {
19499 wlc_phy_rssi_cal_nphy(pi);
19500 }
19501
19502 if (!SCAN_RM_IN_PROGRESS(pi))
19503 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19504 (pi->nphy_iqcal_chanspec_2G == 0) :
19505 (pi->nphy_iqcal_chanspec_5G == 0);
19506
19507 if (!pi->do_initcal)
19508 do_nphy_cal = false;
19509
19510 if (do_nphy_cal) {
19511
19512 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19513
19514 if (pi->antsel_type == ANTSEL_2x3)
19515 wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19516 true);
19517
19518 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19519 wlc_phy_rssi_cal_nphy(pi);
19520
19521 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19522 pi->nphy_cal_orig_pwr_idx[0] =
19523 pi->nphy_txpwrindex[PHY_CORE_0]
19524 .
19525 index_internal;
19526 pi->nphy_cal_orig_pwr_idx[1] =
19527 pi->nphy_txpwrindex[PHY_CORE_1]
19528 .
19529 index_internal;
19530
19531 wlc_phy_precal_txgain_nphy(pi);
19532 target_gain =
19533 wlc_phy_get_tx_gain_nphy(pi);
19534 }
19535
19536 if (wlc_phy_cal_txiqlo_nphy
19537 (pi, target_gain, true,
19538 false) == 0) {
19539 if (wlc_phy_cal_rxiq_nphy
19540 (pi, target_gain, 2,
19541 false) == 0)
19542 wlc_phy_savecal_nphy(pi);
19543
19544 }
19545 } else if (pi->mphase_cal_phase_id ==
19546 MPHASE_CAL_STATE_IDLE) {
19547 wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19548 PHY_PERICAL_PHYINIT);
19549 }
19550 } else {
19551 wlc_phy_restorecal_nphy(pi);
19552 }
19553
19554 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19555
19556 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19557
19558 wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19559
19560 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19561
19562 write_phy_reg(pi, 0x70, 50);
19563
19564 wlc_phy_txlpfbw_nphy(pi);
19565
19566 wlc_phy_spurwar_nphy(pi);
19567
19568}
19569
19570static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19571{
19572 u16 val;
19573
19574 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19575
19576 val = read_phy_reg(pi, 0x01);
19577 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19578 udelay(1);
19579 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19580
19581 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19582
19583 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19584}
19585
19586void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19587{
19588 u16 rfctrlintc_override_val;
19589
19590 if (!en) {
19591
19592 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19593 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19594
19595 if (NREV_GE(pi->pubpi.phy_rev, 7))
19596 rfctrlintc_override_val = 0x1480;
19597 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19598 rfctrlintc_override_val =
19599 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19600 else
19601 rfctrlintc_override_val =
19602 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19603
19604 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19605 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19606 } else {
19607 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19608 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19609 }
19610
19611}
19612
19613void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19614{
19615
19616 u16 txrx_chain =
19617 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19618 bool CoreActv_override = false;
19619
19620 if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19621 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19622 CoreActv_override = true;
19623
19624 if (NREV_LE(pi->pubpi.phy_rev, 2))
19625 and_phy_reg(pi, 0xa0, ~0x20);
19626 } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19627 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19628 CoreActv_override = true;
19629
19630 if (NREV_LE(pi->pubpi.phy_rev, 2))
19631 or_phy_reg(pi, 0xa0, 0x20);
19632 }
19633
19634 mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19635
19636 if (CoreActv_override) {
19637 pi->nphy_perical = PHY_PERICAL_DISABLE;
19638 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19639 } else {
19640 pi->nphy_perical = PHY_PERICAL_MPHASE;
19641 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19642 }
19643}
19644
19645void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19646{
19647 u16 regval;
19648 u16 tbl_buf[16];
19649 uint i;
d68e9f5d 19650 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
5b435de0
AS
19651 u16 tbl_opcode;
19652 bool suspend;
19653
19654 pi->sh->phyrxchain = rxcore_bitmask;
19655
19656 if (!pi->sh->clk)
19657 return;
19658
4b006b11
AS
19659 suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19660 MCTL_EN_MAC));
5b435de0
AS
19661 if (!suspend)
19662 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19663
19664 if (pi->phyhang_avoid)
19665 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19666
19667 regval = read_phy_reg(pi, 0xa2);
19668 regval &= ~(0xf << 4);
19669 regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19670 write_phy_reg(pi, 0xa2, regval);
19671
19672 if ((rxcore_bitmask & 0x3) != 0x3) {
19673
19674 write_phy_reg(pi, 0x20e, 1);
19675
19676 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19677 if (pi->rx2tx_biasentry == -1) {
19678 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19679 ARRAY_SIZE(tbl_buf), 80,
19680 16, tbl_buf);
19681
19682 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19683 if (tbl_buf[i] ==
19684 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19685 pi->rx2tx_biasentry = (u8) i;
19686 tbl_opcode =
19687 NPHY_REV3_RFSEQ_CMD_NOP;
19688 wlc_phy_table_write_nphy(
19689 pi,
19690 NPHY_TBL_ID_RFSEQ,
19691 1, i,
19692 16,
19693 &tbl_opcode);
19694 break;
19695 } else if (tbl_buf[i] ==
19696 NPHY_REV3_RFSEQ_CMD_END)
19697 break;
19698 }
19699 }
19700 }
19701 } else {
19702
19703 write_phy_reg(pi, 0x20e, 30);
19704
19705 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19706 if (pi->rx2tx_biasentry != -1) {
19707 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19708 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19709 1, pi->rx2tx_biasentry,
19710 16, &tbl_opcode);
19711 pi->rx2tx_biasentry = -1;
19712 }
19713 }
19714 }
19715
19716 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19717
19718 if (pi->phyhang_avoid)
19719 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19720
19721 if (!suspend)
19722 wlapi_enable_mac(pi->sh->physhim);
19723}
19724
19725u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19726{
19727 u16 regval, rxen_bits;
d68e9f5d 19728 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
5b435de0
AS
19729
19730 regval = read_phy_reg(pi, 0xa2);
19731 rxen_bits = (regval >> 4) & 0xf;
19732
19733 return (u8) rxen_bits;
19734}
19735
19736bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19737{
19738 return PHY_IPA(pi);
19739}
19740
19741void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19742{
19743}
19744
19745static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19746{
19747
19748 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19749 and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19750
19751 or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19752 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19753
19754}
19755
19756static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19757{
19758 struct radio_20xx_regs *regs_2057_ptr = NULL;
19759
19760 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19761 regs_2057_ptr = regs_2057_rev4;
19762 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19763 || NREV_IS(pi->pubpi.phy_rev, 9)) {
19764 switch (pi->pubpi.radiorev) {
19765 case 5:
19766
1570e53c 19767 if (NREV_IS(pi->pubpi.phy_rev, 8))
5b435de0 19768 regs_2057_ptr = regs_2057_rev5;
1570e53c 19769 else if (NREV_IS(pi->pubpi.phy_rev, 9))
5b435de0 19770 regs_2057_ptr = regs_2057_rev5v1;
1570e53c 19771 break;
5b435de0
AS
19772
19773 case 7:
19774
19775 regs_2057_ptr = regs_2057_rev7;
19776 break;
19777
19778 case 8:
19779
19780 regs_2057_ptr = regs_2057_rev8;
19781 break;
19782
19783 default:
19784 break;
19785 }
19786 }
19787
19788 wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19789}
19790
19791static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19792{
19793 u16 rcal_reg = 0;
19794 int i;
19795
19796 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19797
19798 if (pi->pubpi.radiorev == 5) {
19799
19800 and_phy_reg(pi, 0x342, ~(0x1 << 1));
19801
19802 udelay(10);
19803
19804 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19805 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19806 0x1);
19807 }
19808 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19809
19810 udelay(10);
19811
19812 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19813
19814 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19815 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19816 if (rcal_reg & 0x1)
19817 break;
19818
19819 udelay(100);
19820 }
19821
19822 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19823 "HW error: radio calib2"))
19824 return 0;
19825
19826 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19827
19828 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19829
19830 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19831 if (pi->pubpi.radiorev == 5) {
19832
19833 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19834 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19835 0x0);
19836 }
19837
19838 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19839
19840 mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19841 rcal_reg);
19842 mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19843 rcal_reg << 2);
19844 }
19845
19846 } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19847 u16 savereg;
19848
19849 savereg =
19850 read_radio_reg(
19851 pi,
19852 RADIO_2056_SYN_PLL_MAST2 |
19853 RADIO_2056_SYN);
19854 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19855 savereg | 0x7);
19856 udelay(10);
19857
19858 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19859 0x1);
19860 udelay(10);
19861
19862 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19863 0x9);
19864
19865 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19866 rcal_reg = read_radio_reg(
19867 pi,
19868 RADIO_2056_SYN_RCAL_CODE_OUT |
19869 RADIO_2056_SYN);
19870 if (rcal_reg & 0x80)
19871 break;
19872
19873 udelay(100);
19874 }
19875
19876 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19877 "HW error: radio calib3"))
19878 return 0;
19879
19880 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19881 0x1);
19882
19883 rcal_reg =
19884 read_radio_reg(pi,
19885 RADIO_2056_SYN_RCAL_CODE_OUT |
19886 RADIO_2056_SYN);
19887
19888 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19889 0x0);
19890
19891 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19892 savereg);
19893
19894 return rcal_reg & 0x1f;
19895 }
19896 return rcal_reg & 0x3e;
19897}
19898
19899static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19900{
19901 u16 rccal_valid;
19902 int i;
19903 bool chip43226_6362A0;
19904
19905 chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19906 || (pi->pubpi.radiorev == 4)
19907 || (pi->pubpi.radiorev == 6));
19908
19909 rccal_valid = 0;
19910 if (chip43226_6362A0) {
19911 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19912 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19913 } else {
19914 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19915
19916 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19917 }
19918 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19919 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19920
19921 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19922 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19923 if (rccal_valid & 0x2)
19924 break;
19925
19926 udelay(500);
19927 }
19928
19929 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19930
19931 rccal_valid = 0;
19932 if (chip43226_6362A0) {
19933 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19934 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19935 } else {
19936 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19937
19938 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19939 }
19940 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19941 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19942
19943 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19944 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19945 if (rccal_valid & 0x2)
19946 break;
19947
19948 udelay(500);
19949 }
19950
19951 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19952
19953 rccal_valid = 0;
19954 if (chip43226_6362A0) {
19955 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19956
19957 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19958 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19959 } else {
19960 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19961 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19962 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19963 }
19964 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19965
19966 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19967 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19968 if (rccal_valid & 0x2)
19969 break;
19970
19971 udelay(500);
19972 }
19973
19974 if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19975 return 0;
19976
19977 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19978
19979 return rccal_valid;
19980}
19981
19982static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19983{
19984
19985 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19986
19987 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19988 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19989 mdelay(2);
19990 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19991 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19992
19993 if (pi->phy_init_por) {
19994 wlc_phy_radio205x_rcal(pi);
19995 wlc_phy_radio2057_rccal(pi);
19996 }
19997
19998 mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19999}
20000
20001static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20002{
20003 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20004 const struct radio_regs *regs_TX_2056_ptr = NULL;
20005 const struct radio_regs *regs_RX_2056_ptr = NULL;
20006
20007 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20008 regs_SYN_2056_ptr = regs_SYN_2056;
20009 regs_TX_2056_ptr = regs_TX_2056;
20010 regs_RX_2056_ptr = regs_RX_2056;
20011 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20012 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20013 regs_TX_2056_ptr = regs_TX_2056_A1;
20014 regs_RX_2056_ptr = regs_RX_2056_A1;
20015 } else {
20016 switch (pi->pubpi.radiorev) {
20017 case 5:
20018 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20019 regs_TX_2056_ptr = regs_TX_2056_rev5;
20020 regs_RX_2056_ptr = regs_RX_2056_rev5;
20021 break;
20022
20023 case 6:
20024 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20025 regs_TX_2056_ptr = regs_TX_2056_rev6;
20026 regs_RX_2056_ptr = regs_RX_2056_rev6;
20027 break;
20028
20029 case 7:
20030 case 9:
20031 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20032 regs_TX_2056_ptr = regs_TX_2056_rev7;
20033 regs_RX_2056_ptr = regs_RX_2056_rev7;
20034 break;
20035
20036 case 8:
20037 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20038 regs_TX_2056_ptr = regs_TX_2056_rev8;
20039 regs_RX_2056_ptr = regs_RX_2056_rev8;
20040 break;
20041
20042 case 11:
20043 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20044 regs_TX_2056_ptr = regs_TX_2056_rev11;
20045 regs_RX_2056_ptr = regs_RX_2056_rev11;
20046 break;
20047
20048 default:
20049 break;
20050 }
20051 }
20052
20053 wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20054
20055 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20056
20057 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20058
20059 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20060
20061 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20062}
20063
20064static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20065{
20066 mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20067
20068 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20069 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20070 udelay(1000);
20071 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20072
20073 if ((pi->sh->boardflags2 & BFL2_LEGACY)
20074 || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20075 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20076 else
20077 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20078
20079 mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20080
20081 if (pi->phy_init_por)
20082 wlc_phy_radio205x_rcal(pi);
20083}
20084
20085static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20086{
20087
20088 and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20089 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20090
20091 or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20092}
20093
20094static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20095{
20096 wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20097}
20098
20099static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20100{
20101
20102 and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20103 ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20104
20105 if (((pi->sh->sromrev >= 4)
20106 && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20107 || ((pi->sh->sromrev < 4))) {
20108 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20109 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20110 }
20111
20112 mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20113 write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20114
20115 and_radio_reg(pi, RADIO_2055_CAL_MISC,
20116 ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20117
20118 or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20119
20120 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20121
20122 udelay(1000);
20123
20124 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20125
20126 SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20127 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20128
20129 if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20130 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20131 "HW error: radio calibration1\n"))
20132 return;
20133
20134 and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20135 ~(RADIO_2055_CAL_LPO_ENABLE));
20136
20137 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20138
20139 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20140 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20141
20142 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20143 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20144
20145 mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20146 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20147 mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20148 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20149 if (pi->nphy_gain_boost) {
20150 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20151 ~(RADIO_2055_GAINBST_DISABLE));
20152 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20153 ~(RADIO_2055_GAINBST_DISABLE));
20154 } else {
20155 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20156 RADIO_2055_GAINBST_DISABLE);
20157 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20158 RADIO_2055_GAINBST_DISABLE);
20159 }
20160
20161 udelay(2);
20162}
20163
20164void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20165{
20166 if (on) {
20167 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20168 if (!pi->radio_is_on) {
20169 wlc_phy_radio_preinit_205x(pi);
20170 wlc_phy_radio_init_2057(pi);
20171 wlc_phy_radio_postinit_2057(pi);
20172 }
20173
20174 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20175 pi->radio_chanspec);
20176 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20177 wlc_phy_radio_preinit_205x(pi);
20178 wlc_phy_radio_init_2056(pi);
20179 wlc_phy_radio_postinit_2056(pi);
20180
20181 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20182 pi->radio_chanspec);
20183 } else {
20184 wlc_phy_radio_preinit_2055(pi);
20185 wlc_phy_radio_init_2055(pi);
20186 wlc_phy_radio_postinit_2055(pi);
20187 }
20188
20189 pi->radio_is_on = true;
20190
20191 } else {
20192
20193 if (NREV_GE(pi->pubpi.phy_rev, 3)
20194 && NREV_LT(pi->pubpi.phy_rev, 7)) {
20195 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20196 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20197
20198 write_radio_reg(pi,
20199 RADIO_2056_TX_PADA_BOOST_TUNE |
20200 RADIO_2056_TX0, 0);
20201 write_radio_reg(pi,
20202 RADIO_2056_TX_PADG_BOOST_TUNE |
20203 RADIO_2056_TX0, 0);
20204 write_radio_reg(pi,
20205 RADIO_2056_TX_PGAA_BOOST_TUNE |
20206 RADIO_2056_TX0, 0);
20207 write_radio_reg(pi,
20208 RADIO_2056_TX_PGAG_BOOST_TUNE |
20209 RADIO_2056_TX0, 0);
20210 mod_radio_reg(pi,
20211 RADIO_2056_TX_MIXA_BOOST_TUNE |
20212 RADIO_2056_TX0, 0xf0, 0);
20213 write_radio_reg(pi,
20214 RADIO_2056_TX_MIXG_BOOST_TUNE |
20215 RADIO_2056_TX0, 0);
20216
20217 write_radio_reg(pi,
20218 RADIO_2056_TX_PADA_BOOST_TUNE |
20219 RADIO_2056_TX1, 0);
20220 write_radio_reg(pi,
20221 RADIO_2056_TX_PADG_BOOST_TUNE |
20222 RADIO_2056_TX1, 0);
20223 write_radio_reg(pi,
20224 RADIO_2056_TX_PGAA_BOOST_TUNE |
20225 RADIO_2056_TX1, 0);
20226 write_radio_reg(pi,
20227 RADIO_2056_TX_PGAG_BOOST_TUNE |
20228 RADIO_2056_TX1, 0);
20229 mod_radio_reg(pi,
20230 RADIO_2056_TX_MIXA_BOOST_TUNE |
20231 RADIO_2056_TX1, 0xf0, 0);
20232 write_radio_reg(pi,
20233 RADIO_2056_TX_MIXG_BOOST_TUNE |
20234 RADIO_2056_TX1, 0);
20235
20236 pi->radio_is_on = false;
20237 }
20238
20239 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20240 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20241 pi->radio_is_on = false;
20242 }
20243
20244 }
20245}
20246
20247static bool
20248wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20249 const struct chan_info_nphy_radio2057 **t0,
20250 const struct chan_info_nphy_radio205x **t1,
20251 const struct chan_info_nphy_radio2057_rev5 **t2,
20252 const struct chan_info_nphy_2055 **t3)
20253{
20254 uint i;
20255 const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20256 const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20257 const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20258 u32 tbl_len = 0;
20259
20260 int freq = 0;
20261
20262 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20263
20264 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20265
20266 chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20267 tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20268
20269 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20270 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20271 switch (pi->pubpi.radiorev) {
20272
20273 case 5:
20274
20275 if (pi->pubpi.radiover == 0x0) {
20276
20277 chan_info_tbl_p_2 =
20278 chan_info_nphyrev8_2057_rev5;
20279 tbl_len = ARRAY_SIZE(
20280 chan_info_nphyrev8_2057_rev5);
20281
20282 } else if (pi->pubpi.radiover == 0x1) {
20283
20284 chan_info_tbl_p_2 =
20285 chan_info_nphyrev9_2057_rev5v1;
20286 tbl_len = ARRAY_SIZE(
20287 chan_info_nphyrev9_2057_rev5v1);
20288
20289 }
20290 break;
20291
20292 case 7:
20293 chan_info_tbl_p_0 =
20294 chan_info_nphyrev8_2057_rev7;
20295 tbl_len = ARRAY_SIZE(
20296 chan_info_nphyrev8_2057_rev7);
20297 break;
20298
20299 case 8:
20300 chan_info_tbl_p_0 =
20301 chan_info_nphyrev8_2057_rev8;
20302 tbl_len = ARRAY_SIZE(
20303 chan_info_nphyrev8_2057_rev8);
20304 break;
20305
20306 default:
20307 break;
20308 }
20309 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20310
20311 chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20312 tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20313 } else {
20314 goto fail;
20315 }
20316
20317 for (i = 0; i < tbl_len; i++) {
20318 if (pi->pubpi.radiorev == 5) {
20319
20320 if (chan_info_tbl_p_2[i].chan == channel)
20321 break;
20322 } else {
20323
20324 if (chan_info_tbl_p_0[i].chan == channel)
20325 break;
20326 }
20327 }
20328
20329 if (i >= tbl_len)
20330 goto fail;
20331
20332 if (pi->pubpi.radiorev == 5) {
20333 *t2 = &chan_info_tbl_p_2[i];
20334 freq = chan_info_tbl_p_2[i].freq;
20335 } else {
20336 *t0 = &chan_info_tbl_p_0[i];
20337 freq = chan_info_tbl_p_0[i].freq;
20338 }
20339
20340 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20341 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20342 chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20343 tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20344 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20345 chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20346 tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20347 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20348 || NREV_IS(pi->pubpi.phy_rev, 6)) {
20349 switch (pi->pubpi.radiorev) {
20350 case 5:
20351 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20352 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20353 break;
20354 case 6:
20355 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20356 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20357 break;
20358 case 7:
20359 case 9:
20360 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20361 tbl_len =
20362 ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20363 break;
20364 case 8:
20365 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20366 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20367 break;
20368 case 11:
20369 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20370 tbl_len = ARRAY_SIZE(
20371 chan_info_nphyrev6_2056v11);
20372 break;
20373 default:
20374 break;
20375 }
20376 }
20377
20378 for (i = 0; i < tbl_len; i++) {
20379 if (chan_info_tbl_p_1[i].chan == channel)
20380 break;
20381 }
20382
20383 if (i >= tbl_len)
20384 goto fail;
20385
20386 *t1 = &chan_info_tbl_p_1[i];
20387 freq = chan_info_tbl_p_1[i].freq;
20388
20389 } else {
20390 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20391 if (chan_info_nphy_2055[i].chan == channel)
20392 break;
20393
20394 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20395 goto fail;
20396
20397 *t3 = &chan_info_nphy_2055[i];
20398 freq = chan_info_nphy_2055[i].freq;
20399 }
20400
20401 *f = freq;
20402 return true;
20403
20404fail:
20405 *f = WL_CHAN_FREQ_RANGE_2G;
20406 return false;
20407}
20408
20409u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20410{
20411 int freq;
20412 const struct chan_info_nphy_radio2057 *t0 = NULL;
20413 const struct chan_info_nphy_radio205x *t1 = NULL;
20414 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20415 const struct chan_info_nphy_2055 *t3 = NULL;
20416
20417 if (channel == 0)
20418 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20419
20420 wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20421
20422 if (CHSPEC_IS2G(pi->radio_chanspec))
20423 return WL_CHAN_FREQ_RANGE_2G;
20424
20425 if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20426 return WL_CHAN_FREQ_RANGE_5GL;
20427 else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20428 return WL_CHAN_FREQ_RANGE_5GM;
20429 else
20430 return WL_CHAN_FREQ_RANGE_5GH;
20431}
20432
20433static void
20434wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20435 const struct chan_info_nphy_2055 *ci)
20436{
20437
20438 write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20439 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20440 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20441 write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20442
20443 BRCMS_PHY_WAR_PR51571(pi);
20444
20445 write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20446 write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20447 write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20448 write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20449
20450 BRCMS_PHY_WAR_PR51571(pi);
20451
20452 write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20453 write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20454 write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20455 write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20456
20457 BRCMS_PHY_WAR_PR51571(pi);
20458
20459 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20460 ci->RF_core1_lgbuf_a_tune);
20461 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20462 ci->RF_core1_lgbuf_g_tune);
20463 write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20464 write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20465 ci->RF_core1_tx_pga_pad_tn);
20466
20467 BRCMS_PHY_WAR_PR51571(pi);
20468
20469 write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20470 ci->RF_core1_tx_mx_bgtrim);
20471 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20472 ci->RF_core2_lgbuf_a_tune);
20473 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20474 ci->RF_core2_lgbuf_g_tune);
20475 write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20476
20477 BRCMS_PHY_WAR_PR51571(pi);
20478
20479 write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20480 ci->RF_core2_tx_pga_pad_tn);
20481 write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20482 ci->RF_core2_tx_mx_bgtrim);
20483
20484 udelay(50);
20485
20486 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20487 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20488
20489 BRCMS_PHY_WAR_PR51571(pi);
20490
20491 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20492
20493 udelay(300);
20494}
20495
20496static void
20497wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20498 const struct chan_info_nphy_radio205x *ci)
20499{
20500 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20501
20502 write_radio_reg(pi,
20503 RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20504 ci->RF_SYN_pll_vcocal1);
20505 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20506 ci->RF_SYN_pll_vcocal2);
20507 write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20508 ci->RF_SYN_pll_refdiv);
20509 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20510 ci->RF_SYN_pll_mmd2);
20511 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20512 ci->RF_SYN_pll_mmd1);
20513 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20514 ci->RF_SYN_pll_loopfilter1);
20515 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20516 ci->RF_SYN_pll_loopfilter2);
20517 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20518 ci->RF_SYN_pll_loopfilter3);
20519 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20520 ci->RF_SYN_pll_loopfilter4);
20521 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20522 ci->RF_SYN_pll_loopfilter5);
20523 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20524 ci->RF_SYN_reserved_addr27);
20525 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20526 ci->RF_SYN_reserved_addr28);
20527 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20528 ci->RF_SYN_reserved_addr29);
20529 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20530 ci->RF_SYN_logen_VCOBUF1);
20531 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20532 ci->RF_SYN_logen_MIXER2);
20533 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20534 ci->RF_SYN_logen_BUF3);
20535 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20536 ci->RF_SYN_logen_BUF4);
20537
20538 write_radio_reg(pi,
20539 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20540 ci->RF_RX0_lnaa_tune);
20541 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20542 ci->RF_RX0_lnag_tune);
20543 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20544 ci->RF_TX0_intpaa_boost_tune);
20545 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20546 ci->RF_TX0_intpag_boost_tune);
20547 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20548 ci->RF_TX0_pada_boost_tune);
20549 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20550 ci->RF_TX0_padg_boost_tune);
20551 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20552 ci->RF_TX0_pgaa_boost_tune);
20553 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20554 ci->RF_TX0_pgag_boost_tune);
20555 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20556 ci->RF_TX0_mixa_boost_tune);
20557 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20558 ci->RF_TX0_mixg_boost_tune);
20559
20560 write_radio_reg(pi,
20561 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20562 ci->RF_RX1_lnaa_tune);
20563 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20564 ci->RF_RX1_lnag_tune);
20565 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20566 ci->RF_TX1_intpaa_boost_tune);
20567 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20568 ci->RF_TX1_intpag_boost_tune);
20569 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20570 ci->RF_TX1_pada_boost_tune);
20571 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20572 ci->RF_TX1_padg_boost_tune);
20573 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20574 ci->RF_TX1_pgaa_boost_tune);
20575 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20576 ci->RF_TX1_pgag_boost_tune);
20577 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20578 ci->RF_TX1_mixa_boost_tune);
20579 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20580 ci->RF_TX1_mixg_boost_tune);
20581
20582 if (NREV_IS(pi->pubpi.phy_rev, 3))
20583 regs_SYN_2056_ptr = regs_SYN_2056;
20584 else if (NREV_IS(pi->pubpi.phy_rev, 4))
20585 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20586 else {
20587 switch (pi->pubpi.radiorev) {
20588 case 5:
20589 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20590 break;
20591 case 6:
20592 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20593 break;
20594 case 7:
20595 case 9:
20596 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20597 break;
20598 case 8:
20599 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20600 break;
20601 case 11:
20602 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20603 break;
20604 }
20605 }
20606 if (CHSPEC_IS2G(pi->radio_chanspec))
20607 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20608 RADIO_2056_SYN,
20609 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20610 else
20611 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20612 RADIO_2056_SYN,
20613 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20614
20615 if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20616 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20617 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20618 RADIO_2056_SYN, 0x1f);
20619 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20620 RADIO_2056_SYN, 0x1f);
20621
c9d6afc9
HM
20622 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20623 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20624 write_radio_reg(pi,
20625 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20626 RADIO_2056_SYN, 0x14);
20627 write_radio_reg(pi,
20628 RADIO_2056_SYN_PLL_CP2 |
20629 RADIO_2056_SYN, 0x00);
20630 } else {
20631 write_radio_reg(pi,
20632 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20633 RADIO_2056_SYN, 0xb);
20634 write_radio_reg(pi,
20635 RADIO_2056_SYN_PLL_CP2 |
20636 RADIO_2056_SYN, 0x14);
20637 }
5b435de0
AS
20638 }
20639 }
20640
20641 if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20642 (CHSPEC_IS2G(pi->radio_chanspec))) {
20643 write_radio_reg(pi,
20644 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20645 0x1f);
20646 write_radio_reg(pi,
20647 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20648 0x1f);
20649 write_radio_reg(pi,
20650 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20651 0xb);
20652 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20653 0x20);
20654 }
20655
20656 if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20657 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20658 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20659 RADIO_2056_SYN, 0x1f);
20660 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20661 RADIO_2056_SYN, 0x1f);
20662 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20663 RADIO_2056_SYN, 0x5);
20664 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20665 RADIO_2056_SYN, 0xc);
20666 }
20667 }
20668
20669 if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20670 u16 pag_boost_tune;
20671 u16 padg_boost_tune;
20672 u16 pgag_boost_tune;
20673 u16 mixg_boost_tune;
20674 u16 bias, cascbias;
20675 uint core;
20676
20677 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20678
20679 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20680
20681 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20682 PADG_IDAC, 0xcc);
20683
c9d6afc9
HM
20684 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20685 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20686 bias = 0x40;
20687 cascbias = 0x45;
20688 pag_boost_tune = 0x5;
20689 pgag_boost_tune = 0x33;
20690 padg_boost_tune = 0x77;
20691 mixg_boost_tune = 0x55;
20692 } else {
20693 bias = 0x25;
20694 cascbias = 0x20;
5b435de0 20695
c9d6afc9
HM
20696 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20697 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20698 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
5b435de0
AS
20699 bias = 0x2a;
20700 cascbias = 0x38;
20701 }
5b435de0 20702
c9d6afc9
HM
20703 pag_boost_tune = 0x4;
20704 pgag_boost_tune = 0x03;
20705 padg_boost_tune = 0x77;
20706 mixg_boost_tune = 0x65;
20707 }
5b435de0
AS
20708
20709 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20710 INTPAG_IMAIN_STAT, bias);
20711 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20712 INTPAG_IAUX_STAT, bias);
20713 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20714 INTPAG_CASCBIAS, cascbias);
20715
20716 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20717 INTPAG_BOOST_TUNE,
20718 pag_boost_tune);
20719 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20720 PGAG_BOOST_TUNE,
20721 pgag_boost_tune);
20722 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20723 PADG_BOOST_TUNE,
20724 padg_boost_tune);
20725 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20726 MIXG_BOOST_TUNE,
20727 mixg_boost_tune);
20728 } else {
20729
20730 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20731 0x40 : 0x20;
20732
20733 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20734 INTPAG_IMAIN_STAT, bias);
20735 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20736 INTPAG_IAUX_STAT, bias);
20737 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20738 INTPAG_CASCBIAS, 0x30);
20739 }
20740 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20741 0xee);
20742 }
20743 }
20744
20745 if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20746 && CHSPEC_IS5G(pi->radio_chanspec)) {
20747 u16 paa_boost_tune;
20748 u16 pada_boost_tune;
20749 u16 pgaa_boost_tune;
20750 u16 mixa_boost_tune;
20751 u16 freq, pabias, cascbias;
20752 uint core;
20753
20754 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20755
20756 if (freq < 5150) {
20757
20758 paa_boost_tune = 0xa;
20759 pada_boost_tune = 0x77;
20760 pgaa_boost_tune = 0xf;
20761 mixa_boost_tune = 0xf;
20762 } else if (freq < 5340) {
20763
20764 paa_boost_tune = 0x8;
20765 pada_boost_tune = 0x77;
20766 pgaa_boost_tune = 0xfb;
20767 mixa_boost_tune = 0xf;
20768 } else if (freq < 5650) {
20769
20770 paa_boost_tune = 0x0;
20771 pada_boost_tune = 0x77;
20772 pgaa_boost_tune = 0xb;
20773 mixa_boost_tune = 0xf;
20774 } else {
20775
20776 paa_boost_tune = 0x0;
20777 pada_boost_tune = 0x77;
20778 if (freq != 5825)
20779 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20780 else
20781 pgaa_boost_tune = 6;
20782
20783 mixa_boost_tune = 0xf;
20784 }
20785
20786 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20787 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20788 INTPAA_BOOST_TUNE, paa_boost_tune);
20789 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20790 PADA_BOOST_TUNE, pada_boost_tune);
20791 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20792 PGAA_BOOST_TUNE, pgaa_boost_tune);
20793 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20794 MIXA_BOOST_TUNE, mixa_boost_tune);
20795
20796 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20797 TXSPARE1, 0x30);
20798 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20799 PA_SPARE2, 0xee);
20800
20801 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20802 PADA_CASCBIAS, 0x3);
20803
20804 cascbias = 0x30;
20805
c9d6afc9
HM
20806 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20807 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20808 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20809 cascbias = 0x35;
5b435de0
AS
20810
20811 pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20812
20813 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20814 INTPAA_IAUX_STAT, pabias);
20815 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20816 INTPAA_IMAIN_STAT, pabias);
20817 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20818 INTPAA_CASCBIAS, cascbias);
20819 }
20820 }
20821
20822 udelay(50);
20823
20824 wlc_phy_radio205x_vcocal_nphy(pi);
20825}
20826
20827void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20828{
20829 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20830 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20831 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20832 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20833 (1 << 2));
20834 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20835 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20836 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20837 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20838 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20839 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20840 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20841 }
20842
20843 udelay(300);
20844}
20845
20846static void
20847wlc_phy_chanspec_radio2057_setup(
20848 struct brcms_phy *pi,
20849 const struct chan_info_nphy_radio2057 *ci,
20850 const struct chan_info_nphy_radio2057_rev5 *
20851 ci2)
20852{
20853 int coreNum;
20854 u16 txmix2g_tune_boost_pu = 0;
20855 u16 pad2g_tune_pus = 0;
20856
20857 if (pi->pubpi.radiorev == 5) {
20858
20859 write_radio_reg(pi,
20860 RADIO_2057_VCOCAL_COUNTVAL0,
20861 ci2->RF_vcocal_countval0);
20862 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20863 ci2->RF_vcocal_countval1);
20864 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20865 ci2->RF_rfpll_refmaster_sparextalsize);
20866 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20867 ci2->RF_rfpll_loopfilter_r1);
20868 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20869 ci2->RF_rfpll_loopfilter_c2);
20870 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20871 ci2->RF_rfpll_loopfilter_c1);
20872 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20873 ci2->RF_cp_kpd_idac);
20874 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20875 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20876 write_radio_reg(pi,
20877 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20878 write_radio_reg(pi,
20879 RADIO_2057_LOGEN_MX2G_TUNE,
20880 ci2->RF_logen_mx2g_tune);
20881 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20882 ci2->RF_logen_indbuf2g_tune);
20883
20884 write_radio_reg(pi,
20885 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20886 ci2->RF_txmix2g_tune_boost_pu_core0);
20887 write_radio_reg(pi,
20888 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20889 ci2->RF_pad2g_tune_pus_core0);
20890 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20891 ci2->RF_lna2g_tune_core0);
20892
20893 write_radio_reg(pi,
20894 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20895 ci2->RF_txmix2g_tune_boost_pu_core1);
20896 write_radio_reg(pi,
20897 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20898 ci2->RF_pad2g_tune_pus_core1);
20899 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20900 ci2->RF_lna2g_tune_core1);
20901
20902 } else {
20903
20904 write_radio_reg(pi,
20905 RADIO_2057_VCOCAL_COUNTVAL0,
20906 ci->RF_vcocal_countval0);
20907 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20908 ci->RF_vcocal_countval1);
20909 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20910 ci->RF_rfpll_refmaster_sparextalsize);
20911 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20912 ci->RF_rfpll_loopfilter_r1);
20913 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20914 ci->RF_rfpll_loopfilter_c2);
20915 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20916 ci->RF_rfpll_loopfilter_c1);
20917 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20918 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20919 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20920 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20921 write_radio_reg(pi,
20922 RADIO_2057_LOGEN_MX2G_TUNE,
20923 ci->RF_logen_mx2g_tune);
20924 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20925 ci->RF_logen_mx5g_tune);
20926 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20927 ci->RF_logen_indbuf2g_tune);
20928 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20929 ci->RF_logen_indbuf5g_tune);
20930
20931 write_radio_reg(pi,
20932 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20933 ci->RF_txmix2g_tune_boost_pu_core0);
20934 write_radio_reg(pi,
20935 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20936 ci->RF_pad2g_tune_pus_core0);
20937 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20938 ci->RF_pga_boost_tune_core0);
20939 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20940 ci->RF_txmix5g_boost_tune_core0);
20941 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20942 ci->RF_pad5g_tune_misc_pus_core0);
20943 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20944 ci->RF_lna2g_tune_core0);
20945 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20946 ci->RF_lna5g_tune_core0);
20947
20948 write_radio_reg(pi,
20949 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20950 ci->RF_txmix2g_tune_boost_pu_core1);
20951 write_radio_reg(pi,
20952 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20953 ci->RF_pad2g_tune_pus_core1);
20954 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20955 ci->RF_pga_boost_tune_core1);
20956 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20957 ci->RF_txmix5g_boost_tune_core1);
20958 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20959 ci->RF_pad5g_tune_misc_pus_core1);
20960 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20961 ci->RF_lna2g_tune_core1);
20962 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20963 ci->RF_lna5g_tune_core1);
20964 }
20965
20966 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20967
20968 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20969 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20970 0x3f);
20971 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20972 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20973 0x8);
20974 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20975 0x8);
20976 } else {
20977 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20978 0x1f);
20979 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20980 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20981 0x8);
20982 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20983 0x8);
20984 }
20985 } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20986 (pi->pubpi.radiorev == 8)) {
20987
20988 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20989 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20990 0x1b);
20991 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20992 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20993 0xa);
20994 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20995 0xa);
20996 } else {
20997 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20998 0x1f);
20999 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21000 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21001 0x8);
21002 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21003 0x8);
21004 }
21005
21006 }
21007
21008 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21009 if (PHY_IPA(pi)) {
21010 if (pi->pubpi.radiorev == 3)
21011 txmix2g_tune_boost_pu = 0x6b;
21012
21013 if (pi->pubpi.radiorev == 5)
21014 pad2g_tune_pus = 0x73;
21015
21016 } else {
21017 if (pi->pubpi.radiorev != 5) {
21018 pad2g_tune_pus = 0x3;
21019
21020 txmix2g_tune_boost_pu = 0x61;
21021 }
21022 }
21023
21024 for (coreNum = 0; coreNum <= 1; coreNum++) {
21025
21026 if (txmix2g_tune_boost_pu != 0)
21027 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21028 TXMIX2G_TUNE_BOOST_PU,
21029 txmix2g_tune_boost_pu);
21030
21031 if (pad2g_tune_pus != 0)
21032 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21033 PAD2G_TUNE_PUS,
21034 pad2g_tune_pus);
21035 }
21036 }
21037
21038 udelay(50);
21039
21040 wlc_phy_radio205x_vcocal_nphy(pi);
21041}
21042
21043static void
21044wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21045 const struct nphy_sfo_cfg *ci)
21046{
21047 u16 val;
21048
21049 val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21050 if (CHSPEC_IS5G(chanspec) && !val) {
21051
4b006b11
AS
21052 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21053 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
5b435de0
AS
21054 (val | MAC_PHY_FORCE_CLK));
21055
21056 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21057 (BBCFG_RESETCCA | BBCFG_RESETRX));
21058
4b006b11 21059 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
5b435de0
AS
21060
21061 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21062 } else if (!CHSPEC_IS5G(chanspec) && val) {
21063
21064 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21065
4b006b11
AS
21066 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21067 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
5b435de0
AS
21068 (val | MAC_PHY_FORCE_CLK));
21069
21070 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21071 (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21072
4b006b11 21073 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
5b435de0
AS
21074 }
21075
21076 write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21077 write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21078 write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21079
21080 write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21081 write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21082 write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21083
21084 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21085 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21086
21087 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21088 } else {
21089 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21090 NPHY_ClassifierCtrl_ofdm_en);
21091
21092 if (CHSPEC_IS2G(chanspec))
21093 and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21094 }
21095
21096 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21097 wlc_phy_txpwr_fixpower_nphy(pi);
21098
21099 if (NREV_LT(pi->pubpi.phy_rev, 3))
21100 wlc_phy_adjust_lnagaintbl_nphy(pi);
21101
21102 wlc_phy_txlpfbw_nphy(pi);
21103
21104 if (NREV_GE(pi->pubpi.phy_rev, 3)
21105 && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21106 u8 spuravoid = 0;
21107
21108 val = CHSPEC_CHANNEL(chanspec);
21109 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21110 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21111 if ((val == 13) || (val == 14) || (val == 153))
21112 spuravoid = 1;
21113 } else if (((val >= 5) && (val <= 8)) || (val == 13)
21114 || (val == 14)) {
21115 spuravoid = 1;
21116 }
21117 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21118 if (val == 54)
21119 spuravoid = 1;
c9d6afc9
HM
21120 } else if (pi->nphy_aband_spurwar_en &&
21121 ((val == 38) || (val == 102) || (val == 118))) {
21122 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21123 && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21124 spuravoid = 0;
21125 } else {
5b435de0 21126 spuravoid = 1;
c9d6afc9 21127 }
5b435de0
AS
21128 }
21129
21130 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21131 spuravoid = 1;
21132
c9d6afc9
HM
21133 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21134 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
689b66cb 21135 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
c9d6afc9
HM
21136 spuravoid);
21137 } else {
21138 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
689b66cb 21139 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
c9d6afc9
HM
21140 spuravoid);
21141 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21142 }
5b435de0 21143
1ef1a57d
HM
21144 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21145 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
5b435de0 21146 if (spuravoid == 1) {
4b006b11
AS
21147 bcma_write16(pi->d11core,
21148 D11REGOFFS(tsf_clk_frac_l),
21149 0x5341);
21150 bcma_write16(pi->d11core,
21151 D11REGOFFS(tsf_clk_frac_h), 0x8);
5b435de0 21152 } else {
4b006b11
AS
21153 bcma_write16(pi->d11core,
21154 D11REGOFFS(tsf_clk_frac_l),
21155 0x8889);
21156 bcma_write16(pi->d11core,
21157 D11REGOFFS(tsf_clk_frac_h), 0x8);
5b435de0
AS
21158 }
21159 }
21160
c9d6afc9
HM
21161 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21162 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21163 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
5b435de0
AS
21164
21165 mod_phy_reg(pi, 0x01, (0x1 << 15),
21166 ((spuravoid > 0) ? (0x1 << 15) : 0));
21167
21168 wlc_phy_resetcca_nphy(pi);
21169
21170 pi->phy_isspuravoid = (spuravoid > 0);
21171 }
21172
21173 if (NREV_LT(pi->pubpi.phy_rev, 7))
21174 write_phy_reg(pi, 0x17e, 0x3830);
21175
21176 wlc_phy_spurwar_nphy(pi);
21177}
21178
21179void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21180{
21181 int freq;
21182 const struct chan_info_nphy_radio2057 *t0 = NULL;
21183 const struct chan_info_nphy_radio205x *t1 = NULL;
21184 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21185 const struct chan_info_nphy_2055 *t3 = NULL;
21186
21187 if (!wlc_phy_chan2freq_nphy
21188 (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21189 return;
21190
21191 wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21192
21193 if (CHSPEC_BW(chanspec) != pi->bw)
21194 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21195
21196 if (CHSPEC_IS40(chanspec)) {
21197 if (CHSPEC_SB_UPPER(chanspec)) {
21198 or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21199 if (NREV_GE(pi->pubpi.phy_rev, 7))
21200 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21201 } else {
21202 and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21203 if (NREV_GE(pi->pubpi.phy_rev, 7))
21204 and_phy_reg(pi, 0x310,
21205 (~PRIM_SEL_UP20 & 0xffff));
21206 }
21207 }
21208
21209 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21210 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21211
21212 if ((pi->pubpi.radiorev <= 4)
21213 || (pi->pubpi.radiorev == 6)) {
21214 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21215 0x2,
21216 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21217 : 0));
21218 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21219 0x2,
21220 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21221 : 0));
21222 }
21223
21224 wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21225 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21226 (pi->pubpi.radiorev == 5) ?
21227 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21228 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21229
21230 } else {
21231
21232 mod_radio_reg(pi,
21233 RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21234 0x4,
21235 (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21236 wlc_phy_chanspec_radio2056_setup(pi, t1);
21237
21238 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21239 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21240 }
21241
21242 } else {
21243
21244 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21245 (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21246 : (0x05 << 4)));
21247
21248 wlc_phy_chanspec_radio2055_setup(pi, t3);
21249 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21250 (const struct nphy_sfo_cfg *)
21251 &(t3->PHY_BW1a));
21252 }
21253
21254}
21255
21256void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21257{
d68e9f5d 21258 struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
5b435de0
AS
21259 u16 mask = 0xfc00;
21260 u32 mc = 0;
21261
21262 if (NREV_GE(pi->pubpi.phy_rev, 7))
21263 return;
21264
21265 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21266 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21267
23677ce3 21268 if (!lut_init)
5b435de0
AS
21269 return;
21270
21271 if (pi->srom_fem2g.antswctrllut == 0) {
21272 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21273 1, 0x02, 16, &v0);
21274 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21275 1, 0x03, 16, &v1);
21276 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21277 1, 0x08, 16, &v2);
21278 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21279 1, 0x0C, 16, &v3);
21280 }
21281
21282 if (pi->srom_fem5g.antswctrllut == 0) {
21283 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21284 1, 0x12, 16, &v0);
21285 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21286 1, 0x13, 16, &v1);
21287 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21288 1, 0x18, 16, &v2);
21289 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21290 1, 0x1C, 16, &v3);
21291 }
21292 } else {
21293
21294 write_phy_reg(pi, 0xc8, 0x0);
21295 write_phy_reg(pi, 0xc9, 0x0);
21296
fa0b823b 21297 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
5b435de0 21298
4b006b11 21299 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
5b435de0 21300 mc &= ~MCTL_GPOUT_SEL_MASK;
4b006b11 21301 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
5b435de0 21302
4b006b11 21303 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
5b435de0 21304
4b006b11 21305 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
5b435de0
AS
21306
21307 if (lut_init) {
21308 write_phy_reg(pi, 0xf8, 0x02d8);
21309 write_phy_reg(pi, 0xf9, 0x0301);
21310 write_phy_reg(pi, 0xfa, 0x02d8);
21311 write_phy_reg(pi, 0xfb, 0x0301);
21312 }
21313 }
21314}
21315
21316u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21317{
21318 u16 curr_ctl, new_ctl;
21319 bool suspended = false;
21320
21321 if (D11REV_IS(pi->sh->corerev, 16)) {
4b006b11
AS
21322 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21323 MCTL_EN_MAC) ? false : true;
5b435de0
AS
21324 if (!suspended)
21325 wlapi_suspend_mac_and_wait(pi->sh->physhim);
21326 }
21327
21328 curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21329
21330 new_ctl = (curr_ctl & (~mask)) | (val & mask);
21331
21332 mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21333
21334 if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21335 wlapi_enable_mac(pi->sh->physhim);
21336
21337 return new_ctl;
21338}
21339
21340void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21341{
21342 u16 trigger_mask, status_mask;
21343 u16 orig_RfseqCoreActv;
21344
21345 switch (cmd) {
21346 case NPHY_RFSEQ_RX2TX:
21347 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21348 status_mask = NPHY_RfseqStatus_rx2tx;
21349 break;
21350 case NPHY_RFSEQ_TX2RX:
21351 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21352 status_mask = NPHY_RfseqStatus_tx2rx;
21353 break;
21354 case NPHY_RFSEQ_RESET2RX:
21355 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21356 status_mask = NPHY_RfseqStatus_reset2rx;
21357 break;
21358 case NPHY_RFSEQ_UPDATEGAINH:
21359 trigger_mask = NPHY_RfseqTrigger_updategainh;
21360 status_mask = NPHY_RfseqStatus_updategainh;
21361 break;
21362 case NPHY_RFSEQ_UPDATEGAINL:
21363 trigger_mask = NPHY_RfseqTrigger_updategainl;
21364 status_mask = NPHY_RfseqStatus_updategainl;
21365 break;
21366 case NPHY_RFSEQ_UPDATEGAINU:
21367 trigger_mask = NPHY_RfseqTrigger_updategainu;
21368 status_mask = NPHY_RfseqStatus_updategainu;
21369 break;
21370 default:
21371 return;
21372 }
21373
21374 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21375 or_phy_reg(pi, 0xa1,
21376 (NPHY_RfseqMode_CoreActv_override |
21377 NPHY_RfseqMode_Trigger_override));
21378 or_phy_reg(pi, 0xa3, trigger_mask);
21379 SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21380 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21381 WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21382}
21383
21384static void
21385wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21386 u8 core_mask, u8 off)
21387{
21388 u16 rfmxgain = 0, lpfgain = 0;
21389 u16 tgain = 0;
21390
21391 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21392
21393 switch (cmd) {
21394 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21395 wlc_phy_rfctrl_override_nphy_rev7(
21396 pi, (0x1 << 5),
21397 value, core_mask, off,
21398 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21399 wlc_phy_rfctrl_override_nphy_rev7(
21400 pi, (0x1 << 4), value,
21401 core_mask, off,
21402 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21403 wlc_phy_rfctrl_override_nphy_rev7(
21404 pi, (0x1 << 3), value,
21405 core_mask, off,
21406 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21407 break;
21408 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21409 wlc_phy_rfctrl_override_nphy_rev7(
21410 pi, (0x1 << 2),
21411 value, core_mask, off,
21412 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21413 wlc_phy_rfctrl_override_nphy_rev7(
21414 pi, (0x1 << 1), value,
21415 core_mask, off,
21416 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21417 wlc_phy_rfctrl_override_nphy_rev7(
21418 pi, (0x1 << 0), value,
21419 core_mask, off,
21420 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21421 wlc_phy_rfctrl_override_nphy_rev7(
21422 pi, (0x1 << 1), value,
21423 core_mask, off,
21424 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21425 wlc_phy_rfctrl_override_nphy_rev7(
21426 pi, (0x1 << 11), 0,
21427 core_mask, off,
21428 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21429 break;
21430 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21431 wlc_phy_rfctrl_override_nphy_rev7(
21432 pi, (0x1 << 2),
21433 value, core_mask, off,
21434 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21435 wlc_phy_rfctrl_override_nphy_rev7(
21436 pi, (0x1 << 1), value,
21437 core_mask, off,
21438 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21439 wlc_phy_rfctrl_override_nphy_rev7(
21440 pi, (0x1 << 0), value,
21441 core_mask, off,
21442 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21443 wlc_phy_rfctrl_override_nphy_rev7(
21444 pi, (0x1 << 2), value,
21445 core_mask, off,
21446 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21447 wlc_phy_rfctrl_override_nphy_rev7(
21448 pi, (0x1 << 11), 1,
21449 core_mask, off,
21450 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21451 break;
21452 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21453 rfmxgain = value & 0x000ff;
21454 lpfgain = value & 0x0ff00;
21455 lpfgain = lpfgain >> 8;
21456
21457 wlc_phy_rfctrl_override_nphy_rev7(
21458 pi, (0x1 << 11),
21459 rfmxgain, core_mask,
21460 off,
21461 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21462 wlc_phy_rfctrl_override_nphy_rev7(
21463 pi, (0x3 << 13),
21464 lpfgain, core_mask,
21465 off,
21466 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21467 break;
21468 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21469 tgain = value & 0x7fff;
21470 lpfgain = value & 0x8000;
21471 lpfgain = lpfgain >> 14;
21472
21473 wlc_phy_rfctrl_override_nphy_rev7(
21474 pi, (0x1 << 12),
21475 tgain, core_mask, off,
21476 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21477 wlc_phy_rfctrl_override_nphy_rev7(
21478 pi, (0x1 << 13),
21479 lpfgain, core_mask,
21480 off,
21481 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21482 break;
21483 }
21484 }
21485}
21486
21487static void
21488wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21489 u8 coresel, u8 rail, u8 rssi_type)
21490{
21491 u16 valuetostuff;
21492
21493 offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21494 NPHY_RSSICAL_MAXREAD : offset;
21495 offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21496 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21497
21498 valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21499
21500 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21501 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21502 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21503 write_phy_reg(pi, 0x1a6, valuetostuff);
21504
21505 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21506 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21507 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21508 write_phy_reg(pi, 0x1ac, valuetostuff);
21509
21510 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21511 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21512 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21513 write_phy_reg(pi, 0x1b2, valuetostuff);
21514
21515 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21516 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21517 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21518 write_phy_reg(pi, 0x1b8, valuetostuff);
21519
21520 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21521 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21522 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21523 write_phy_reg(pi, 0x1a4, valuetostuff);
21524
21525 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21526 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21527 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21528 write_phy_reg(pi, 0x1aa, valuetostuff);
21529
21530 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21531 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21532 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21533 write_phy_reg(pi, 0x1b0, valuetostuff);
21534
21535 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21536 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21537 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21538 write_phy_reg(pi, 0x1b6, valuetostuff);
21539
21540 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21541 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21542 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21543 write_phy_reg(pi, 0x1a5, valuetostuff);
21544 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21545 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21546 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21547 write_phy_reg(pi, 0x1ab, valuetostuff);
21548
21549 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21550 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21551 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21552 write_phy_reg(pi, 0x1b1, valuetostuff);
21553
21554 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21555 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21556 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21557 write_phy_reg(pi, 0x1b7, valuetostuff);
21558
21559 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21560 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21561 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21562 write_phy_reg(pi, 0x1a7, valuetostuff);
21563 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21564 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21565 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21566 write_phy_reg(pi, 0x1ad, valuetostuff);
21567 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21568 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21569 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21570 write_phy_reg(pi, 0x1b3, valuetostuff);
21571 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21572 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21573 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21574 write_phy_reg(pi, 0x1b9, valuetostuff);
21575
21576 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21577 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21578 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21579 write_phy_reg(pi, 0x1a8, valuetostuff);
21580
21581 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21582 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21583 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21584 write_phy_reg(pi, 0x1ae, valuetostuff);
21585
21586 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21587 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21588 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21589 write_phy_reg(pi, 0x1b4, valuetostuff);
21590
21591 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21592 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21593 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21594 write_phy_reg(pi, 0x1ba, valuetostuff);
21595
21596 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21597 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21598 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21599 write_phy_reg(pi, 0x1a9, valuetostuff);
21600 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21601 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21602 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21603 write_phy_reg(pi, 0x1b5, valuetostuff);
21604
21605 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21606 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21607 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21608 write_phy_reg(pi, 0x1af, valuetostuff);
21609
21610 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21611 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21612 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21613 write_phy_reg(pi, 0x1bb, valuetostuff);
21614}
21615
21616static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21617{
21618 if (PHY_IPA(pi)) {
21619 if (NREV_GE(pi->pubpi.phy_rev, 7))
21620 write_radio_reg(pi,
21621 ((core == PHY_CORE_0) ?
21622 RADIO_2057_TX0_TX_SSI_MUX :
21623 RADIO_2057_TX1_TX_SSI_MUX),
21624 (CHSPEC_IS5G(pi->radio_chanspec) ?
21625 0xc : 0xe));
21626 else
21627 write_radio_reg(pi,
21628 RADIO_2056_TX_TX_SSI_MUX |
21629 ((core == PHY_CORE_0) ?
21630 RADIO_2056_TX0 : RADIO_2056_TX1),
21631 (CHSPEC_IS5G(pi->radio_chanspec) ?
21632 0xc : 0xe));
21633 } else {
21634 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21635 write_radio_reg(pi,
21636 ((core == PHY_CORE_0) ?
21637 RADIO_2057_TX0_TX_SSI_MUX :
21638 RADIO_2057_TX1_TX_SSI_MUX),
21639 0x11);
21640
21641 if (pi->pubpi.radioid == BCM2057_ID)
21642 write_radio_reg(pi,
21643 RADIO_2057_IQTEST_SEL_PU, 0x1);
21644
21645 } else {
21646 write_radio_reg(pi,
21647 RADIO_2056_TX_TX_SSI_MUX |
21648 ((core == PHY_CORE_0) ?
21649 RADIO_2056_TX0 : RADIO_2056_TX1),
21650 0x11);
21651 }
21652 }
21653}
21654
21655void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21656{
21657 u16 mask, val;
21658 u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21659 startseq;
21660 u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21661 rfctrlovr_trigger_val;
21662 u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21663 u16 rfctrlcmd_val, rfctrlovr_val;
21664 u8 core;
21665
21666 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21667 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21668 mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21669 mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21670
21671 mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21672 mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21673
21674 mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21675 mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21676
21677 mask = (0x1 << 2) |
21678 (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21679 mod_phy_reg(pi, 0xf9, mask, 0);
21680 mod_phy_reg(pi, 0xfb, mask, 0);
21681
21682 } else {
21683 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21684 if (core_code == RADIO_MIMO_CORESEL_CORE1
21685 && core == PHY_CORE_1)
21686 continue;
21687 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21688 && core == PHY_CORE_0)
21689 continue;
21690
21691 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21692 0x8f : 0xa5, (0x1 << 9), 1 << 9);
21693
21694 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21695 rssi_type == NPHY_RSSI_SEL_W2 ||
21696 rssi_type == NPHY_RSSI_SEL_NB) {
21697 mod_phy_reg(pi,
21698 (core ==
21699 PHY_CORE_0) ? 0xa6 : 0xa7,
21700 (0x3 << 8), 0);
21701
21702 mask = (0x1 << 2) |
21703 (0x1 << 3) |
21704 (0x1 << 4) | (0x1 << 5);
21705 mod_phy_reg(pi,
21706 (core ==
21707 PHY_CORE_0) ? 0xf9 : 0xfb,
21708 mask, 0);
21709
21710 if (rssi_type == NPHY_RSSI_SEL_W1) {
21711 if (CHSPEC_IS5G(
21712 pi->radio_chanspec)) {
21713 mask = (0x1 << 2);
21714 val = 1 << 2;
21715 } else {
21716 mask = (0x1 << 3);
21717 val = 1 << 3;
21718 }
21719 } else if (rssi_type ==
21720 NPHY_RSSI_SEL_W2) {
21721 mask = (0x1 << 4);
21722 val = 1 << 4;
21723 } else {
21724 mask = (0x1 << 5);
21725 val = 1 << 5;
21726 }
21727 mod_phy_reg(pi,
21728 (core ==
21729 PHY_CORE_0) ? 0xf9 : 0xfb,
21730 mask, val);
21731
21732 mask = (0x1 << 5);
21733 val = 1 << 5;
21734 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21735 0xe5 : 0xe6, mask, val);
21736 } else {
21737 if (rssi_type == NPHY_RSSI_SEL_TBD) {
21738 mask = (0x3 << 8);
21739 val = 1 << 8;
21740 mod_phy_reg(pi,
21741 (core ==
21742 PHY_CORE_0) ? 0xa6
21743 : 0xa7, mask, val);
21744 mask = (0x3 << 10);
21745 val = 1 << 10;
21746 mod_phy_reg(pi,
21747 (core ==
21748 PHY_CORE_0) ? 0xa6
21749 : 0xa7, mask, val);
21750 } else if (rssi_type ==
21751 NPHY_RSSI_SEL_IQ) {
21752 mask = (0x3 << 8);
21753 val = 2 << 8;
21754 mod_phy_reg(pi,
21755 (core ==
21756 PHY_CORE_0) ? 0xa6
21757 : 0xa7, mask, val);
21758 mask = (0x3 << 10);
21759 val = 2 << 10;
21760 mod_phy_reg(pi,
21761 (core ==
21762 PHY_CORE_0) ? 0xa6
21763 : 0xa7, mask, val);
21764 } else {
21765 mask = (0x3 << 8);
21766 val = 3 << 8;
21767 mod_phy_reg(pi,
21768 (core ==
21769 PHY_CORE_0) ? 0xa6
21770 : 0xa7, mask, val);
21771 mask = (0x3 << 10);
21772 val = 3 << 10;
21773 mod_phy_reg(pi,
21774 (core ==
21775 PHY_CORE_0) ? 0xa6
21776 : 0xa7, mask, val);
21777 brcms_phy_wr_tx_mux(pi, core);
21778 afectrlovr_rssi_val = 1 << 9;
21779 mod_phy_reg(pi,
21780 (core ==
21781 PHY_CORE_0) ? 0x8f
21782 : 0xa5, (0x1 << 9),
21783 afectrlovr_rssi_val);
21784 }
21785 }
21786 }
21787 }
21788 } else {
21789
21790 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21791 (rssi_type == NPHY_RSSI_SEL_W2) ||
21792 (rssi_type == NPHY_RSSI_SEL_NB))
21793 val = 0x0;
21794 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21795 val = 0x1;
21796 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21797 val = 0x2;
21798 else
21799 val = 0x3;
21800
21801 mask = ((0x3 << 12) | (0x3 << 14));
21802 val = (val << 12) | (val << 14);
21803 mod_phy_reg(pi, 0xa6, mask, val);
21804 mod_phy_reg(pi, 0xa7, mask, val);
21805
21806 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21807 (rssi_type == NPHY_RSSI_SEL_W2) ||
21808 (rssi_type == NPHY_RSSI_SEL_NB)) {
21809 if (rssi_type == NPHY_RSSI_SEL_W1)
21810 val = 0x1;
21811 if (rssi_type == NPHY_RSSI_SEL_W2)
21812 val = 0x2;
21813 if (rssi_type == NPHY_RSSI_SEL_NB)
21814 val = 0x3;
21815
21816 mask = (0x3 << 4);
21817 val = (val << 4);
21818 mod_phy_reg(pi, 0x7a, mask, val);
21819 mod_phy_reg(pi, 0x7d, mask, val);
21820 }
21821
21822 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21823 afectrlovr_rssi_val = 0;
21824 rfctrlcmd_rxen_val = 0;
21825 rfctrlcmd_coresel_val = 0;
21826 rfctrlovr_rssi_val = 0;
21827 rfctrlovr_rxen_val = 0;
21828 rfctrlovr_coresel_val = 0;
21829 rfctrlovr_trigger_val = 0;
21830 startseq = 0;
21831 } else {
21832 afectrlovr_rssi_val = 1;
21833 rfctrlcmd_rxen_val = 1;
21834 rfctrlcmd_coresel_val = core_code;
21835 rfctrlovr_rssi_val = 1;
21836 rfctrlovr_rxen_val = 1;
21837 rfctrlovr_coresel_val = 1;
21838 rfctrlovr_trigger_val = 1;
21839 startseq = 1;
21840 }
21841
21842 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21843 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21844 12) | (afectrlovr_rssi_val << 13);
21845 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21846 afectrlovr_rssi_val);
21847
21848 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21849 (rssi_type == NPHY_RSSI_SEL_W2) ||
21850 (rssi_type == NPHY_RSSI_SEL_NB)) {
21851 rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21852 rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21853 (rfctrlcmd_coresel_val << 3);
21854
21855 rfctrlovr_mask = ((0x1 << 5) |
21856 (0x1 << 12) |
21857 (0x1 << 1) | (0x1 << 0));
21858 rfctrlovr_val = (rfctrlovr_rssi_val <<
21859 5) |
21860 (rfctrlovr_rxen_val << 12) |
21861 (rfctrlovr_coresel_val << 1) |
21862 (rfctrlovr_trigger_val << 0);
21863
21864 mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21865 mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21866
21867 mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21868 udelay(20);
21869
21870 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21871 }
21872 }
21873}
21874
21875int
21876wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21877 u8 nsamps)
21878{
21879 s16 rssi0, rssi1;
21880 u16 afectrlCore1_save = 0;
21881 u16 afectrlCore2_save = 0;
21882 u16 afectrlOverride1_save = 0;
21883 u16 afectrlOverride2_save = 0;
21884 u16 rfctrlOverrideAux0_save = 0;
21885 u16 rfctrlOverrideAux1_save = 0;
21886 u16 rfctrlMiscReg1_save = 0;
21887 u16 rfctrlMiscReg2_save = 0;
21888 u16 rfctrlcmd_save = 0;
21889 u16 rfctrloverride_save = 0;
21890 u16 rfctrlrssiothers1_save = 0;
21891 u16 rfctrlrssiothers2_save = 0;
21892 s8 tmp_buf[4];
21893 u8 ctr = 0, samp = 0;
21894 s32 rssi_out_val;
21895 u16 gpiosel_orig;
21896
21897 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21898 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21899 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21900 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21901 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21902 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21903 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21904 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21905 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21906 } else {
21907 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21908 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21909 rfctrloverride_save = read_phy_reg(pi, 0xec);
21910 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21911 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21912 }
21913
21914 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21915
21916 gpiosel_orig = read_phy_reg(pi, 0xca);
21917 if (NREV_LT(pi->pubpi.phy_rev, 2))
21918 write_phy_reg(pi, 0xca, 5);
21919
21920 for (ctr = 0; ctr < 4; ctr++)
21921 rssi_buf[ctr] = 0;
21922
21923 for (samp = 0; samp < nsamps; samp++) {
21924 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21925 rssi0 = read_phy_reg(pi, 0x1c9);
21926 rssi1 = read_phy_reg(pi, 0x1ca);
21927 } else {
21928 rssi0 = read_phy_reg(pi, 0x219);
21929 rssi1 = read_phy_reg(pi, 0x21a);
21930 }
21931
21932 ctr = 0;
21933 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21934 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21935 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21936 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21937
21938 for (ctr = 0; ctr < 4; ctr++)
21939 rssi_buf[ctr] += tmp_buf[ctr];
21940
21941 }
21942
21943 rssi_out_val = rssi_buf[3] & 0xff;
21944 rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21945 rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21946 rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21947
21948 if (NREV_LT(pi->pubpi.phy_rev, 2))
21949 write_phy_reg(pi, 0xca, gpiosel_orig);
21950
21951 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21952 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21953 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21954 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21955 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21956 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21957 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21958 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21959 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21960 } else {
21961 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21962 write_phy_reg(pi, 0x78, rfctrlcmd_save);
21963 write_phy_reg(pi, 0xec, rfctrloverride_save);
21964 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21965 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21966 }
21967
21968 return rssi_out_val;
21969}
21970
21971s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21972{
21973 u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21974 u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21975 u16 pwrdet_rxtx_core1_save;
21976 u16 pwrdet_rxtx_core2_save;
21977 u16 afectrlCore1_save;
21978 u16 afectrlCore2_save;
21979 u16 afectrlOverride_save;
21980 u16 afectrlOverride2_save;
21981 u16 pd_pll_ts_save;
21982 u16 gpioSel_save;
21983 s32 radio_temp[4];
21984 s32 radio_temp2[4];
21985 u16 syn_tempprocsense_save;
21986 s16 offset = 0;
21987
21988 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21989 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21990 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21991 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21992 s32 auxADC_Vl;
21993 u16 RfctrlOverride5_save, RfctrlOverride6_save;
21994 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
21995 u16 RSSIMultCoef0QPowerDet_save;
21996 u16 tempsense_Rcal;
21997
21998 syn_tempprocsense_save =
21999 read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22000
22001 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22002 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22003 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22004 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22005 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22006 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22007 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22008 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22009 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22010
22011 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22012 &auxADC_Vmid_save);
22013 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22014 &auxADC_Av_save);
22015 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22016 &auxADC_rssi_ctrlL_save);
22017 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22018 &auxADC_rssi_ctrlH_save);
22019
22020 write_phy_reg(pi, 0x1ae, 0x0);
22021
22022 auxADC_rssi_ctrlL = 0x0;
22023 auxADC_rssi_ctrlH = 0x20;
22024 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22025 &auxADC_rssi_ctrlL);
22026 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22027 &auxADC_rssi_ctrlH);
22028
22029 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22030
22031 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22032 tempsense_Rcal | 0x01);
22033
22034 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22035 1, 0, 0,
22036 NPHY_REV7_RFCTRLOVERRIDE_ID2);
22037 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22038 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22039 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22040 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22041
22042 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22043 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22044 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22045 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22046 udelay(5);
22047 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22048 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22049 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22050 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22051 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22052 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22053 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22054 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22055 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22056 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22057
22058 auxADC_Vmid = 0xA3;
22059 auxADC_Av = 0x0;
22060 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22061 &auxADC_Vmid);
22062 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22063 &auxADC_Av);
22064
22065 udelay(3);
22066
22067 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22068 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22069 tempsense_Rcal | 0x03);
22070
22071 udelay(5);
22072 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22073
22074 auxADC_Av = 0x7;
22075 if (radio_temp[1] + radio_temp2[1] < -30) {
22076 auxADC_Vmid = 0x45;
22077 auxADC_Vl = 263;
22078 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22079 auxADC_Vmid = 0x200;
22080 auxADC_Vl = 467;
22081 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22082 auxADC_Vmid = 0x266;
22083 auxADC_Vl = 634;
22084 } else {
22085 auxADC_Vmid = 0x2D5;
22086 auxADC_Vl = 816;
22087 }
22088
22089 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22090 &auxADC_Vmid);
22091 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22092 &auxADC_Av);
22093
22094 udelay(3);
22095
22096 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22097 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22098 tempsense_Rcal | 0x01);
22099
22100 udelay(5);
22101 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22102
22103 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22104 syn_tempprocsense_save);
22105
22106 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22107 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22108 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22109 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22110 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22111 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22112 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22113 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22114 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22115
22116 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22117 &auxADC_Vmid_save);
22118 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22119 &auxADC_Av_save);
22120 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22121 &auxADC_rssi_ctrlL_save);
22122 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22123 &auxADC_rssi_ctrlH_save);
22124
c9d6afc9
HM
22125 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22126 radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22127 + 88 * (auxADC_Vl) - 27111 +
22128 128) / 256;
22129 } else {
22130 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22131 + 82 * (auxADC_Vl) - 28861 +
22132 128) / 256;
22133 }
5b435de0
AS
22134
22135 offset = (s16) pi->phy_tempsense_offset;
22136
22137 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22138 syn_tempprocsense_save =
22139 read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22140
22141 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22142 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22143 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22144 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22145 gpioSel_save = read_phy_reg(pi, 0xca);
22146
22147 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22148
22149 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22150 if (NREV_LT(pi->pubpi.phy_rev, 7))
22151 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22152
22153 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22154 if (NREV_GE(pi->pubpi.phy_rev, 7))
22155 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22156 else
22157 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22158
22159 radio_temp[0] =
22160 (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22161
22162 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22163 syn_tempprocsense_save);
22164
22165 write_phy_reg(pi, 0xca, gpioSel_save);
22166 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22167 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22168 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22169 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22170
22171 offset = (s16) pi->phy_tempsense_offset;
22172 } else {
22173
22174 pwrdet_rxtx_core1_save =
22175 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22176 pwrdet_rxtx_core2_save =
22177 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22178 core1_txrf_iqcal1_save =
22179 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22180 core1_txrf_iqcal2_save =
22181 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22182 core2_txrf_iqcal1_save =
22183 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22184 core2_txrf_iqcal2_save =
22185 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22186 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22187
22188 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22189 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22190 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22191 gpioSel_save = read_phy_reg(pi, 0xca);
22192
22193 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22194 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22195 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22196 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22197 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22198 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22199 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22200
22201 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22202 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22203
22204 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22205 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22206
22207 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22208 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22209
22210 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22211 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22212 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22213 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22214
22215 radio_temp[0] =
22216 (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22217 radio_temp[3]);
22218
22219 radio_temp[0] =
22220 (radio_temp[0] +
22221 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22222
22223 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22224
22225 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22226 pwrdet_rxtx_core1_save);
22227 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22228 pwrdet_rxtx_core2_save);
22229 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22230 core1_txrf_iqcal1_save);
22231 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22232 core2_txrf_iqcal1_save);
22233 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22234 core1_txrf_iqcal2_save);
22235 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22236 core2_txrf_iqcal2_save);
22237 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22238
22239 write_phy_reg(pi, 0xca, gpioSel_save);
22240 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22241 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22242 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22243 }
22244
22245 return (s16) radio_temp[0] + offset;
22246}
22247
22248static void
22249wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22250{
22251 u8 core;
22252
22253 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22254 if (rssi_type == NPHY_RSSI_SEL_NB) {
22255 if (core == PHY_CORE_0) {
22256 mod_radio_reg(pi,
22257 RADIO_2055_CORE1_B0_NBRSSI_VCM,
22258 RADIO_2055_NBRSSI_VCM_I_MASK,
22259 vcm_buf[2 *
22260 core] <<
22261 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22262 mod_radio_reg(pi,
22263 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22264 RADIO_2055_NBRSSI_VCM_Q_MASK,
22265 vcm_buf[2 * core +
22266 1] <<
22267 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22268 } else {
22269 mod_radio_reg(pi,
22270 RADIO_2055_CORE2_B0_NBRSSI_VCM,
22271 RADIO_2055_NBRSSI_VCM_I_MASK,
22272 vcm_buf[2 *
22273 core] <<
22274 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22275 mod_radio_reg(pi,
22276 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22277 RADIO_2055_NBRSSI_VCM_Q_MASK,
22278 vcm_buf[2 * core +
22279 1] <<
22280 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22281 }
22282 } else {
22283 if (core == PHY_CORE_0)
22284 mod_radio_reg(pi,
22285 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22286 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22287 vcm_buf[2 *
22288 core] <<
22289 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22290 else
22291 mod_radio_reg(pi,
22292 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22293 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22294 vcm_buf[2 *
22295 core] <<
22296 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22297 }
22298 }
22299}
22300
22301static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22302{
22303 u16 classif_state;
22304 u16 clip_state[2];
22305 u16 clip_off[] = { 0xffff, 0xffff };
22306 s32 target_code;
22307 u8 vcm, min_vcm;
22308 u8 vcm_final = 0;
22309 u8 result_idx;
22310 s32 poll_results[8][4] = {
22311 {0, 0, 0, 0},
22312 {0, 0, 0, 0},
22313 {0, 0, 0, 0},
22314 {0, 0, 0, 0},
22315 {0, 0, 0, 0},
22316 {0, 0, 0, 0},
22317 {0, 0, 0, 0},
22318 {0, 0, 0, 0}
22319 };
22320 s32 poll_result_core[4] = { 0, 0, 0, 0 };
22321 s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22322 s32 fine_digital_offset[4];
22323 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22324 s32 min_poll;
22325 u8 vcm_level_max;
22326 u8 core;
22327 u8 wb_cnt;
22328 u8 rssi_type;
22329 u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22330 u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22331 u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22332 u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22333 u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22334 u16 NPHY_RfctrlCmd_save;
22335 u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22336 u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22337 u8 rxcore_state;
22338 u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22339 u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22340 u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22341 u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22342
22343 NPHY_REV7_RfctrlOverride3_save =
22344 NPHY_REV7_RfctrlOverride4_save =
22345 NPHY_REV7_RfctrlOverride5_save =
22346 NPHY_REV7_RfctrlOverride6_save =
22347 NPHY_REV7_RfctrlMiscReg3_save =
22348 NPHY_REV7_RfctrlMiscReg4_save =
22349 NPHY_REV7_RfctrlMiscReg5_save =
22350 NPHY_REV7_RfctrlMiscReg6_save = 0;
22351
22352 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22353 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22354 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22355 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22356
22357 NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22358 NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22359 NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22360 NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22361 NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22362 NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22363 NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22364 NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22365 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22366 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22367 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22368 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22369 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22370 }
22371 NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22372 NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22373 NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22374 NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22375 NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22376 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22377 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22378 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22379 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22380 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22381 }
22382 NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22383 NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22384
22385 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22386 RADIO_MIMO_CORESEL_ALLRXTX);
22387 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22388 RADIO_MIMO_CORESEL_ALLRXTX);
22389
22390 if (NREV_GE(pi->pubpi.phy_rev, 7))
22391 wlc_phy_rfctrl_override_1tomany_nphy(
22392 pi,
22393 NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22394 0, 0, 0);
22395 else
22396 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22397
22398 if (NREV_GE(pi->pubpi.phy_rev, 7))
22399 wlc_phy_rfctrl_override_1tomany_nphy(
22400 pi,
22401 NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22402 1, 0, 0);
22403 else
22404 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22405
22406 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22407 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22408 1, 0, 0,
22409 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22410 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22411 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22412 } else {
22413 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22414 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22415 }
22416
22417 if (CHSPEC_IS5G(pi->radio_chanspec)) {
22418 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22419 wlc_phy_rfctrl_override_nphy_rev7(
22420 pi, (0x1 << 5),
22421 0, 0, 0,
22422 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22423 wlc_phy_rfctrl_override_nphy_rev7(
22424 pi, (0x1 << 4), 1, 0,
22425 0,
22426 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22427 } else {
22428 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22429 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22430 }
22431
22432 } else {
22433 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22434 wlc_phy_rfctrl_override_nphy_rev7(
22435 pi, (0x1 << 4),
22436 0, 0, 0,
22437 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22438 wlc_phy_rfctrl_override_nphy_rev7(
22439 pi, (0x1 << 5), 1, 0,
22440 0,
22441 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22442 } else {
22443 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22444 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22445 }
22446 }
22447
22448 rxcore_state = wlc_phy_rxcore_getstate_nphy(
22449 (struct brcms_phy_pub *) pi);
22450
22451 vcm_level_max = 8;
22452
22453 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22454
22455 if ((rxcore_state & (1 << core)) == 0)
22456 continue;
22457
22458 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22459 core ==
22460 PHY_CORE_0 ?
22461 RADIO_MIMO_CORESEL_CORE1 :
22462 RADIO_MIMO_CORESEL_CORE2,
22463 NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22464 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22465 core ==
22466 PHY_CORE_0 ?
22467 RADIO_MIMO_CORESEL_CORE1 :
22468 RADIO_MIMO_CORESEL_CORE2,
22469 NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22470
22471 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22472 if (NREV_GE(pi->pubpi.phy_rev, 7))
22473 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22474 RADIO_2057_NB_MASTER_CORE0 :
22475 RADIO_2057_NB_MASTER_CORE1,
22476 RADIO_2057_VCM_MASK, vcm);
22477 else
22478 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22479 ((core ==
22480 PHY_CORE_0) ? RADIO_2056_RX0 :
22481 RADIO_2056_RX1),
22482 RADIO_2056_VCM_MASK,
22483 vcm << RADIO_2056_RSSI_VCM_SHIFT);
22484
22485 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22486 &poll_results[vcm][0],
22487 NPHY_RSSICAL_NPOLL);
22488 }
22489
22490 for (result_idx = 0; result_idx < 4; result_idx++) {
22491 if ((core == result_idx / 2) &&
22492 (result_idx % 2 == 0)) {
22493
22494 min_d = NPHY_RSSICAL_MAXD;
22495 min_vcm = 0;
22496 min_poll =
22497 NPHY_RSSICAL_MAXREAD *
22498 NPHY_RSSICAL_NPOLL + 1;
22499 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22500 curr_d =
22501 poll_results[vcm][result_idx] *
22502 poll_results[vcm][result_idx] +
22503 poll_results[vcm][result_idx +
22504 1] *
22505 poll_results[vcm][result_idx +
22506 1];
22507 if (curr_d < min_d) {
22508 min_d = curr_d;
22509 min_vcm = vcm;
22510 }
22511 if (poll_results[vcm][result_idx] <
22512 min_poll)
22513 min_poll =
22514 poll_results[vcm]
22515 [result_idx];
22516 }
22517 vcm_final = min_vcm;
22518 poll_results_min[result_idx] = min_poll;
22519 }
22520 }
22521
22522 if (NREV_GE(pi->pubpi.phy_rev, 7))
22523 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22524 RADIO_2057_NB_MASTER_CORE0 :
22525 RADIO_2057_NB_MASTER_CORE1,
22526 RADIO_2057_VCM_MASK, vcm_final);
22527 else
22528 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22529 ((core ==
22530 PHY_CORE_0) ? RADIO_2056_RX0 :
22531 RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22532 vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22533
22534 for (result_idx = 0; result_idx < 4; result_idx++) {
22535 if (core == result_idx / 2) {
22536 fine_digital_offset[result_idx] =
22537 (NPHY_RSSICAL_NB_TARGET *
22538 NPHY_RSSICAL_NPOLL) -
22539 poll_results[vcm_final][result_idx];
22540 if (fine_digital_offset[result_idx] < 0) {
22541 fine_digital_offset[result_idx] =
22542 abs(fine_digital_offset
22543 [result_idx]);
22544 fine_digital_offset[result_idx] +=
22545 (NPHY_RSSICAL_NPOLL / 2);
22546 fine_digital_offset[result_idx] /=
22547 NPHY_RSSICAL_NPOLL;
22548 fine_digital_offset[result_idx] =
22549 -fine_digital_offset[
22550 result_idx];
22551 } else {
22552 fine_digital_offset[result_idx] +=
22553 (NPHY_RSSICAL_NPOLL / 2);
22554 fine_digital_offset[result_idx] /=
22555 NPHY_RSSICAL_NPOLL;
22556 }
22557
22558 if (poll_results_min[result_idx] ==
22559 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22560 fine_digital_offset[result_idx] =
22561 (NPHY_RSSICAL_NB_TARGET -
22562 NPHY_RSSICAL_MAXREAD - 1);
22563
22564 wlc_phy_scale_offset_rssi_nphy(
22565 pi, 0x0,
22566 (s8)
22567 fine_digital_offset
22568 [result_idx],
22569 (result_idx / 2 == 0) ?
22570 RADIO_MIMO_CORESEL_CORE1 :
22571 RADIO_MIMO_CORESEL_CORE2,
22572 (result_idx % 2 == 0) ?
22573 NPHY_RAIL_I : NPHY_RAIL_Q,
22574 NPHY_RSSI_SEL_NB);
22575 }
22576 }
22577
22578 }
22579
22580 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22581
22582 if ((rxcore_state & (1 << core)) == 0)
22583 continue;
22584
22585 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22586 if (wb_cnt == 0) {
22587 rssi_type = NPHY_RSSI_SEL_W1;
22588 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22589 } else {
22590 rssi_type = NPHY_RSSI_SEL_W2;
22591 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22592 }
22593
22594 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22595 core ==
22596 PHY_CORE_0 ?
22597 RADIO_MIMO_CORESEL_CORE1
22598 :
22599 RADIO_MIMO_CORESEL_CORE2,
22600 NPHY_RAIL_I, rssi_type);
22601 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22602 core ==
22603 PHY_CORE_0 ?
22604 RADIO_MIMO_CORESEL_CORE1
22605 :
22606 RADIO_MIMO_CORESEL_CORE2,
22607 NPHY_RAIL_Q, rssi_type);
22608
22609 wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22610 NPHY_RSSICAL_NPOLL);
22611
22612 for (result_idx = 0; result_idx < 4; result_idx++) {
22613 if (core == result_idx / 2) {
22614 fine_digital_offset[result_idx] =
22615 (target_code *
22616 NPHY_RSSICAL_NPOLL) -
22617 poll_result_core[result_idx];
22618 if (fine_digital_offset[result_idx] <
22619 0) {
22620 fine_digital_offset[result_idx]
22621 = abs(
22622 fine_digital_offset
22623 [result_idx]);
22624 fine_digital_offset[result_idx]
22625 += (NPHY_RSSICAL_NPOLL
22626 / 2);
22627 fine_digital_offset[result_idx]
22628 /= NPHY_RSSICAL_NPOLL;
22629 fine_digital_offset[result_idx]
22630 = -fine_digital_offset
22631 [result_idx];
22632 } else {
22633 fine_digital_offset[result_idx]
22634 += (NPHY_RSSICAL_NPOLL
22635 / 2);
22636 fine_digital_offset[result_idx]
22637 /= NPHY_RSSICAL_NPOLL;
22638 }
22639
22640 wlc_phy_scale_offset_rssi_nphy(
22641 pi, 0x0,
22642 (s8)
22643 fine_digital_offset
22644 [core *
22645 2],
22646 (core == PHY_CORE_0) ?
22647 RADIO_MIMO_CORESEL_CORE1 :
22648 RADIO_MIMO_CORESEL_CORE2,
22649 (result_idx % 2 == 0) ?
22650 NPHY_RAIL_I :
22651 NPHY_RAIL_Q,
22652 rssi_type);
22653 }
22654 }
22655
22656 }
22657 }
22658
22659 write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22660 write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22661
22662 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22663
22664 mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22665 mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22666 mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22667
22668 mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22669 mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22670 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22671
22672 write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22673 write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22674 write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22675 write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22676 write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22677 write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22678 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22679 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22680 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22681 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22682 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22683 }
22684 write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22685 write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22686 write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22687 write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22688 write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22689 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22690 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22691 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22692 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22693 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22694 }
22695 write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22696 write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22697
22698 if (CHSPEC_IS2G(pi->radio_chanspec)) {
22699 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22700 pi->rssical_cache.rssical_radio_regs_2G[0] =
22701 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22702 pi->rssical_cache.rssical_radio_regs_2G[1] =
22703 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22704 } else {
22705 pi->rssical_cache.rssical_radio_regs_2G[0] =
22706 read_radio_reg(pi,
22707 RADIO_2056_RX_RSSI_MISC |
22708 RADIO_2056_RX0);
22709 pi->rssical_cache.rssical_radio_regs_2G[1] =
22710 read_radio_reg(pi,
22711 RADIO_2056_RX_RSSI_MISC |
22712 RADIO_2056_RX1);
22713 }
22714
22715 pi->rssical_cache.rssical_phyregs_2G[0] =
22716 read_phy_reg(pi, 0x1a6);
22717 pi->rssical_cache.rssical_phyregs_2G[1] =
22718 read_phy_reg(pi, 0x1ac);
22719 pi->rssical_cache.rssical_phyregs_2G[2] =
22720 read_phy_reg(pi, 0x1b2);
22721 pi->rssical_cache.rssical_phyregs_2G[3] =
22722 read_phy_reg(pi, 0x1b8);
22723 pi->rssical_cache.rssical_phyregs_2G[4] =
22724 read_phy_reg(pi, 0x1a4);
22725 pi->rssical_cache.rssical_phyregs_2G[5] =
22726 read_phy_reg(pi, 0x1aa);
22727 pi->rssical_cache.rssical_phyregs_2G[6] =
22728 read_phy_reg(pi, 0x1b0);
22729 pi->rssical_cache.rssical_phyregs_2G[7] =
22730 read_phy_reg(pi, 0x1b6);
22731 pi->rssical_cache.rssical_phyregs_2G[8] =
22732 read_phy_reg(pi, 0x1a5);
22733 pi->rssical_cache.rssical_phyregs_2G[9] =
22734 read_phy_reg(pi, 0x1ab);
22735 pi->rssical_cache.rssical_phyregs_2G[10] =
22736 read_phy_reg(pi, 0x1b1);
22737 pi->rssical_cache.rssical_phyregs_2G[11] =
22738 read_phy_reg(pi, 0x1b7);
22739
22740 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22741 } else {
22742 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22743 pi->rssical_cache.rssical_radio_regs_5G[0] =
22744 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22745 pi->rssical_cache.rssical_radio_regs_5G[1] =
22746 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22747 } else {
22748 pi->rssical_cache.rssical_radio_regs_5G[0] =
22749 read_radio_reg(pi,
22750 RADIO_2056_RX_RSSI_MISC |
22751 RADIO_2056_RX0);
22752 pi->rssical_cache.rssical_radio_regs_5G[1] =
22753 read_radio_reg(pi,
22754 RADIO_2056_RX_RSSI_MISC |
22755 RADIO_2056_RX1);
22756 }
22757
22758 pi->rssical_cache.rssical_phyregs_5G[0] =
22759 read_phy_reg(pi, 0x1a6);
22760 pi->rssical_cache.rssical_phyregs_5G[1] =
22761 read_phy_reg(pi, 0x1ac);
22762 pi->rssical_cache.rssical_phyregs_5G[2] =
22763 read_phy_reg(pi, 0x1b2);
22764 pi->rssical_cache.rssical_phyregs_5G[3] =
22765 read_phy_reg(pi, 0x1b8);
22766 pi->rssical_cache.rssical_phyregs_5G[4] =
22767 read_phy_reg(pi, 0x1a4);
22768 pi->rssical_cache.rssical_phyregs_5G[5] =
22769 read_phy_reg(pi, 0x1aa);
22770 pi->rssical_cache.rssical_phyregs_5G[6] =
22771 read_phy_reg(pi, 0x1b0);
22772 pi->rssical_cache.rssical_phyregs_5G[7] =
22773 read_phy_reg(pi, 0x1b6);
22774 pi->rssical_cache.rssical_phyregs_5G[8] =
22775 read_phy_reg(pi, 0x1a5);
22776 pi->rssical_cache.rssical_phyregs_5G[9] =
22777 read_phy_reg(pi, 0x1ab);
22778 pi->rssical_cache.rssical_phyregs_5G[10] =
22779 read_phy_reg(pi, 0x1b1);
22780 pi->rssical_cache.rssical_phyregs_5G[11] =
22781 read_phy_reg(pi, 0x1b7);
22782
22783 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22784 }
22785
22786 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22787 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22788}
22789
22790static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22791{
22792 s32 target_code;
22793 u16 classif_state;
22794 u16 clip_state[2];
22795 u16 rssi_ctrl_state[2], pd_state[2];
22796 u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22797 u16 rfctrlintc_override_val;
22798 u16 clip_off[] = { 0xffff, 0xffff };
22799 u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22800 u8 vcm, min_vcm, vcm_tmp[4];
22801 u8 vcm_final[4] = { 0, 0, 0, 0 };
22802 u8 result_idx, ctr;
22803 s32 poll_results[4][4] = {
22804 {0, 0, 0, 0},
22805 {0, 0, 0, 0},
22806 {0, 0, 0, 0},
22807 {0, 0, 0, 0}
22808 };
22809 s32 poll_miniq[4][2] = {
22810 {0, 0},
22811 {0, 0},
22812 {0, 0},
22813 {0, 0}
22814 };
22815 s32 min_d, curr_d;
22816 s32 fine_digital_offset[4];
22817 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22818 s32 min_poll;
22819
22820 switch (rssi_type) {
22821 case NPHY_RSSI_SEL_NB:
22822 target_code = NPHY_RSSICAL_NB_TARGET;
22823 break;
22824 case NPHY_RSSI_SEL_W1:
22825 target_code = NPHY_RSSICAL_W1_TARGET;
22826 break;
22827 case NPHY_RSSI_SEL_W2:
22828 target_code = NPHY_RSSICAL_W2_TARGET;
22829 break;
22830 default:
22831 return;
5b435de0
AS
22832 }
22833
22834 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22835 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22836 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22837 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22838
22839 rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22840 rfctrlintc_override_val =
22841 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22842
22843 rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22844 rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22845 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22846 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22847
22848 rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22849 rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22850 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22851 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22852
22853 pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22854 RADIO_2055_WBRSSI_G2_PD;
22855 pd_state[0] =
22856 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22857 pd_state[1] =
22858 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22859 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22860 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22861 rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22862 RADIO_2055_WBRSSI_G2_SEL;
22863 rssi_ctrl_state[0] =
22864 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22865 rssi_ctrl_state[1] =
22866 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22867 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22868
22869 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22870 NPHY_RAIL_I, rssi_type);
22871 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22872 NPHY_RAIL_Q, rssi_type);
22873
22874 for (vcm = 0; vcm < 4; vcm++) {
22875
22876 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22877 if (rssi_type != NPHY_RSSI_SEL_W2)
22878 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22879
22880 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22881 NPHY_RSSICAL_NPOLL);
22882
22883 if ((rssi_type == NPHY_RSSI_SEL_W1)
22884 || (rssi_type == NPHY_RSSI_SEL_W2)) {
22885 for (ctr = 0; ctr < 2; ctr++)
22886 poll_miniq[vcm][ctr] =
22887 min(poll_results[vcm][ctr * 2 + 0],
22888 poll_results[vcm][ctr * 2 + 1]);
22889 }
22890 }
22891
22892 for (result_idx = 0; result_idx < 4; result_idx++) {
22893 min_d = NPHY_RSSICAL_MAXD;
22894 min_vcm = 0;
22895 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22896 for (vcm = 0; vcm < 4; vcm++) {
22897 curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22898 poll_results[vcm][result_idx] :
22899 poll_miniq[vcm][result_idx / 2]) -
22900 (target_code * NPHY_RSSICAL_NPOLL));
22901 if (curr_d < min_d) {
22902 min_d = curr_d;
22903 min_vcm = vcm;
22904 }
22905 if (poll_results[vcm][result_idx] < min_poll)
22906 min_poll = poll_results[vcm][result_idx];
22907 }
22908 vcm_final[result_idx] = min_vcm;
22909 poll_results_min[result_idx] = min_poll;
22910 }
22911
22912 if (rssi_type != NPHY_RSSI_SEL_W2)
22913 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22914
22915 for (result_idx = 0; result_idx < 4; result_idx++) {
22916 fine_digital_offset[result_idx] =
22917 (target_code * NPHY_RSSICAL_NPOLL) -
22918 poll_results[vcm_final[result_idx]][result_idx];
22919 if (fine_digital_offset[result_idx] < 0) {
22920 fine_digital_offset[result_idx] =
22921 abs(fine_digital_offset[result_idx]);
22922 fine_digital_offset[result_idx] +=
22923 (NPHY_RSSICAL_NPOLL / 2);
22924 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22925 fine_digital_offset[result_idx] =
22926 -fine_digital_offset[result_idx];
22927 } else {
22928 fine_digital_offset[result_idx] +=
22929 (NPHY_RSSICAL_NPOLL / 2);
22930 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22931 }
22932
22933 if (poll_results_min[result_idx] ==
22934 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22935 fine_digital_offset[result_idx] =
22936 (target_code - NPHY_RSSICAL_MAXREAD - 1);
22937
22938 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22939 (s8)
22940 fine_digital_offset[result_idx],
22941 (result_idx / 2 ==
22942 0) ? RADIO_MIMO_CORESEL_CORE1 :
22943 RADIO_MIMO_CORESEL_CORE2,
22944 (result_idx % 2 ==
22945 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22946 rssi_type);
22947 }
22948
22949 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22950 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22951 if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22952 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22953 NPHY_RSSI_SEL_NB);
22954 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22955 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22956 NPHY_RSSI_SEL_W1);
01317c26 22957 else /* RADIO_2055_WBRSSI_G2_SEL */
5b435de0
AS
22958 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22959 NPHY_RSSI_SEL_W2);
22960 if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22961 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22962 NPHY_RSSI_SEL_NB);
22963 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22964 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22965 NPHY_RSSI_SEL_W1);
01317c26 22966 else /* RADIO_2055_WBRSSI_G1_SEL */
5b435de0
AS
22967 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22968 NPHY_RSSI_SEL_W2);
5b435de0
AS
22969 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22970
22971 write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22972 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22973 write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22974 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22975
22976 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22977 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22978
22979 wlc_phy_resetcca_nphy(pi);
22980}
22981
22982void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22983{
22984 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22985 wlc_phy_rssi_cal_nphy_rev3(pi);
22986 } else {
22987 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22988 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22989 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22990 }
22991}
22992
22993int
22994wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22995{
22996 s16 rxpwr, rxpwr0, rxpwr1;
22997 s16 phyRx0_l, phyRx2_l;
22998
22999 rxpwr = 0;
23000 rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23001 rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23002
23003 if (rxpwr0 > 127)
23004 rxpwr0 -= 256;
23005 if (rxpwr1 > 127)
23006 rxpwr1 -= 256;
23007
23008 phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23009 phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23010 if (phyRx2_l > 127)
23011 phyRx2_l -= 256;
23012
23013 if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23014 rxpwr0 = rxpwr1;
23015 rxpwr1 = phyRx2_l;
23016 }
23017
23018 if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23019 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23020 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23021 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23022 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23023 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23024
23025 return rxpwr;
23026}
23027
23028static void
23029wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23030 u16 num_samps)
23031{
23032 u16 t;
23033 u32 *data_buf = NULL;
23034
6da2ec56 23035 data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
5b435de0
AS
23036 if (data_buf == NULL)
23037 return;
23038
23039 if (pi->phyhang_avoid)
23040 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23041
23042 for (t = 0; t < num_samps; t++)
23043 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23044 (((unsigned int)tone_buf[t].q) & 0x3ff);
23045 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23046 data_buf);
23047
23048 kfree(data_buf);
23049
23050 if (pi->phyhang_avoid)
23051 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23052}
23053
23054static u16
23055wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23056 u8 dac_test_mode)
23057{
23058 u8 phy_bw, is_phybw40;
23059 u16 num_samps, t, spur;
23060 s32 theta = 0, rot = 0;
23061 u32 tbl_len;
23062 struct cordic_iq *tone_buf = NULL;
23063
23064 is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23065 phy_bw = (is_phybw40 == 1) ? 40 : 20;
23066 tbl_len = (phy_bw << 3);
23067
23068 if (dac_test_mode == 1) {
23069 spur = read_phy_reg(pi, 0x01);
23070 spur = (spur >> 15) & 1;
23071 phy_bw = (spur == 1) ? 82 : 80;
23072 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23073
23074 tbl_len = (phy_bw << 1);
23075 }
23076
6da2ec56
KC
23077 tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23078 GFP_ATOMIC);
5b435de0
AS
23079 if (tone_buf == NULL)
23080 return 0;
23081
23082 num_samps = (u16) tbl_len;
23083 rot = ((f_kHz * 36) / phy_bw) / 100;
23084 theta = 0;
23085
23086 for (t = 0; t < num_samps; t++) {
23087
23088 tone_buf[t] = cordic_calc_iq(theta);
23089
23090 theta += rot;
23091
23092 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23093 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23094 }
23095
23096 wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23097
23098 kfree(tone_buf);
23099
23100 return num_samps;
23101}
23102
23103static void
23104wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23105 u16 wait, u8 iqmode, u8 dac_test_mode,
23106 bool modify_bbmult)
23107{
23108 u16 bb_mult;
23109 u8 phy_bw, sample_cmd;
23110 u16 orig_RfseqCoreActv;
23111 u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23112 lpf_bw_ctl_miscreg4;
23113
23114 if (pi->phyhang_avoid)
23115 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23116
23117 phy_bw = 20;
23118 if (CHSPEC_IS40(pi->radio_chanspec))
23119 phy_bw = 40;
23120
23121 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23122
23123 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23124 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23125 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23126 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23127 (0x7 << 8);
23128 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23129 (0x7 << 8);
23130 } else {
23131 wlc_phy_rfctrl_override_nphy_rev7(
23132 pi,
23133 (0x1 << 7),
23134 wlc_phy_read_lpf_bw_ctl_nphy
23135 (pi,
23136 0), 0, 0,
23137 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23138
23139 pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23140
23141 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23142 (0x7 << 8);
23143 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23144 (0x7 << 8);
23145 }
23146 }
23147
23148 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23149
23150 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23151 &bb_mult);
23152 pi->nphy_bb_mult_save =
23153 BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23154 }
23155
23156 if (modify_bbmult) {
23157 bb_mult = (phy_bw == 20) ? 100 : 71;
23158 bb_mult = (bb_mult << 8) + bb_mult;
23159 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23160 &bb_mult);
23161 }
23162
23163 if (pi->phyhang_avoid)
23164 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23165
23166 write_phy_reg(pi, 0xc6, num_samps - 1);
23167
23168 if (loops != 0xffff)
23169 write_phy_reg(pi, 0xc4, loops - 1);
23170 else
23171 write_phy_reg(pi, 0xc4, loops);
23172
23173 write_phy_reg(pi, 0xc5, wait);
23174
23175 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23176 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23177 if (iqmode) {
23178
23179 and_phy_reg(pi, 0xc2, 0x7FFF);
23180
23181 or_phy_reg(pi, 0xc2, 0x8000);
23182 } else {
23183
23184 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23185 write_phy_reg(pi, 0xc3, sample_cmd);
23186 }
23187
23188 SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23189
23190 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23191}
23192
23193int
23194wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23195 u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23196{
23197 u16 num_samps;
23198 u16 loops = 0xffff;
23199 u16 wait = 0;
23200
23201 num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23202 dac_test_mode);
23203 if (num_samps == 0)
23204 return -EBADE;
23205
23206 wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23207 dac_test_mode, modify_bbmult);
23208
23209 return 0;
23210}
23211
23212void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23213{
23214 u16 playback_status;
23215 u16 bb_mult;
23216
23217 if (pi->phyhang_avoid)
23218 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23219
23220 playback_status = read_phy_reg(pi, 0xc7);
23221 if (playback_status & 0x1)
23222 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23223 else if (playback_status & 0x2)
23224 and_phy_reg(pi, 0xc2,
23225 (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23226
23227 and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23228
23229 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23230
23231 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23232 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23233 &bb_mult);
23234
23235 pi->nphy_bb_mult_save = 0;
23236 }
23237
23238 if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23239 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23240 wlc_phy_rfctrl_override_nphy_rev7(
23241 pi,
23242 (0x1 << 7),
23243 0, 0, 1,
23244 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23245 pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23246 }
23247 }
23248
23249 if (pi->phyhang_avoid)
23250 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23251}
23252
23253static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23254{
23255 u32 *tx_pwrctrl_tbl = NULL;
23256 uint phyrev = pi->pubpi.phy_rev;
23257
23258 if (PHY_IPA(pi)) {
23259 tx_pwrctrl_tbl =
23260 wlc_phy_get_ipa_gaintbl_nphy(pi);
23261 } else {
23262 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23263 if (NREV_IS(phyrev, 3))
23264 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23265 else if (NREV_IS(phyrev, 4))
23266 tx_pwrctrl_tbl =
23267 (pi->srom_fem5g.extpagain == 3) ?
23268 nphy_tpc_5GHz_txgain_HiPwrEPA :
23269 nphy_tpc_5GHz_txgain_rev4;
23270 else
23271 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23272 } else {
23273 if (NREV_GE(phyrev, 7)) {
23274 if (pi->pubpi.radiorev == 3)
23275 tx_pwrctrl_tbl =
23276 nphy_tpc_txgain_epa_2057rev3;
23277 else if (pi->pubpi.radiorev == 5)
23278 tx_pwrctrl_tbl =
23279 nphy_tpc_txgain_epa_2057rev5;
23280 } else {
23281 if (NREV_GE(phyrev, 5) &&
23282 (pi->srom_fem2g.extpagain == 3))
23283 tx_pwrctrl_tbl =
23284 nphy_tpc_txgain_HiPwrEPA;
23285 else
23286 tx_pwrctrl_tbl =
23287 nphy_tpc_txgain_rev3;
23288 }
23289 }
23290 }
23291 return tx_pwrctrl_tbl;
23292}
23293
23294struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23295{
23296 u16 base_idx[2], curr_gain[2];
23297 u8 core_no;
23298 struct nphy_txgains target_gain;
23299 u32 *tx_pwrctrl_tbl = NULL;
23300
23301 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23302 if (pi->phyhang_avoid)
23303 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23304
23305 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23306 curr_gain);
23307
23308 if (pi->phyhang_avoid)
23309 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23310
23311 for (core_no = 0; core_no < 2; core_no++) {
23312 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23313 target_gain.ipa[core_no] =
23314 curr_gain[core_no] & 0x0007;
23315 target_gain.pad[core_no] =
23316 ((curr_gain[core_no] & 0x00F8) >> 3);
23317 target_gain.pga[core_no] =
23318 ((curr_gain[core_no] & 0x0F00) >> 8);
23319 target_gain.txgm[core_no] =
23320 ((curr_gain[core_no] & 0x7000) >> 12);
23321 target_gain.txlpf[core_no] =
23322 ((curr_gain[core_no] & 0x8000) >> 15);
23323 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23324 target_gain.ipa[core_no] =
23325 curr_gain[core_no] & 0x000F;
23326 target_gain.pad[core_no] =
23327 ((curr_gain[core_no] & 0x00F0) >> 4);
23328 target_gain.pga[core_no] =
23329 ((curr_gain[core_no] & 0x0F00) >> 8);
23330 target_gain.txgm[core_no] =
23331 ((curr_gain[core_no] & 0x7000) >> 12);
23332 } else {
23333 target_gain.ipa[core_no] =
23334 curr_gain[core_no] & 0x0003;
23335 target_gain.pad[core_no] =
23336 ((curr_gain[core_no] & 0x000C) >> 2);
23337 target_gain.pga[core_no] =
23338 ((curr_gain[core_no] & 0x0070) >> 4);
23339 target_gain.txgm[core_no] =
23340 ((curr_gain[core_no] & 0x0380) >> 7);
23341 }
23342 }
23343 } else {
23344 uint phyrev = pi->pubpi.phy_rev;
23345
23346 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23347 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23348 for (core_no = 0; core_no < 2; core_no++) {
23349 if (NREV_GE(phyrev, 3)) {
23350 tx_pwrctrl_tbl =
23351 brcms_phy_get_tx_pwrctrl_tbl(pi);
23352 if (NREV_GE(phyrev, 7)) {
23353 target_gain.ipa[core_no] =
23354 (tx_pwrctrl_tbl
23355 [base_idx[core_no]]
23356 >> 16) & 0x7;
23357 target_gain.pad[core_no] =
23358 (tx_pwrctrl_tbl
23359 [base_idx[core_no]]
23360 >> 19) & 0x1f;
23361 target_gain.pga[core_no] =
23362 (tx_pwrctrl_tbl
23363 [base_idx[core_no]]
23364 >> 24) & 0xf;
23365 target_gain.txgm[core_no] =
23366 (tx_pwrctrl_tbl
23367 [base_idx[core_no]]
23368 >> 28) & 0x7;
23369 target_gain.txlpf[core_no] =
23370 (tx_pwrctrl_tbl
23371 [base_idx[core_no]]
23372 >> 31) & 0x1;
23373 } else {
23374 target_gain.ipa[core_no] =
23375 (tx_pwrctrl_tbl
23376 [base_idx[core_no]]
23377 >> 16) & 0xf;
23378 target_gain.pad[core_no] =
23379 (tx_pwrctrl_tbl
23380 [base_idx[core_no]]
23381 >> 20) & 0xf;
23382 target_gain.pga[core_no] =
23383 (tx_pwrctrl_tbl
23384 [base_idx[core_no]]
23385 >> 24) & 0xf;
23386 target_gain.txgm[core_no] =
23387 (tx_pwrctrl_tbl
23388 [base_idx[core_no]]
23389 >> 28) & 0x7;
23390 }
23391 } else {
23392 target_gain.ipa[core_no] =
23393 (nphy_tpc_txgain[base_idx[core_no]] >>
23394 16) & 0x3;
23395 target_gain.pad[core_no] =
23396 (nphy_tpc_txgain[base_idx[core_no]] >>
23397 18) & 0x3;
23398 target_gain.pga[core_no] =
23399 (nphy_tpc_txgain[base_idx[core_no]] >>
23400 20) & 0x7;
23401 target_gain.txgm[core_no] =
23402 (nphy_tpc_txgain[base_idx[core_no]] >>
23403 23) & 0x7;
23404 }
23405 }
23406 }
23407
23408 return target_gain;
23409}
23410
23411static void
23412wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23413 struct nphy_txgains target_gain,
23414 struct nphy_iqcal_params *params)
23415{
23416 u8 k;
23417 int idx;
23418 u16 gain_index;
23419 u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23420
23421 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23422 if (NREV_GE(pi->pubpi.phy_rev, 7))
23423 params->txlpf = target_gain.txlpf[core_no];
23424
23425 params->txgm = target_gain.txgm[core_no];
23426 params->pga = target_gain.pga[core_no];
23427 params->pad = target_gain.pad[core_no];
23428 params->ipa = target_gain.ipa[core_no];
23429 if (NREV_GE(pi->pubpi.phy_rev, 7))
23430 params->cal_gain =
23431 ((params->txlpf << 15) | (params->txgm << 12) |
23432 (params->pga << 8) |
23433 (params->pad << 3) | (params->ipa));
23434 else
23435 params->cal_gain =
23436 ((params->txgm << 12) | (params->pga << 8) |
23437 (params->pad << 4) | (params->ipa));
23438
23439 params->ncorr[0] = 0x79;
23440 params->ncorr[1] = 0x79;
23441 params->ncorr[2] = 0x79;
23442 params->ncorr[3] = 0x79;
23443 params->ncorr[4] = 0x79;
23444 } else {
23445
23446 gain_index = ((target_gain.pad[core_no] << 0) |
23447 (target_gain.pga[core_no] << 4) |
23448 (target_gain.txgm[core_no] << 8));
23449
23450 idx = -1;
23451 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23452 if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23453 gain_index) {
23454 idx = k;
23455 break;
23456 }
23457 }
23458
23459 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23460 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23461 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23462 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23463 (params->pad << 2));
23464 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23465 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23466 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23467 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23468 }
23469}
23470
23471static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23472{
23473 u16 jtag_core, core;
23474
23475 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23476
23477 for (core = 0; core <= 1; core++) {
23478
23479 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23480 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23481 TX_SSI_MASTER);
23482
23483 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23484 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23485 IQCAL_VCM_HG);
23486
23487 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23488 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23489 IQCAL_IDAC);
23490
23491 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23492 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23493 TSSI_VCM);
23494
23495 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23496
23497 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23498 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23499 TX_SSI_MUX);
23500
23501 if (pi->pubpi.radiorev != 5)
23502 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23503 READ_RADIO_REG3(pi, RADIO_2057, TX,
23504 core,
23505 TSSIA);
23506
23507 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23508 READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23509
23510 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23511 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23512 TSSI_MISC1);
23513
23514 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23515 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23516 TX_SSI_MASTER, 0x0a);
23517 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23518 IQCAL_VCM_HG, 0x43);
23519 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23520 IQCAL_IDAC, 0x55);
23521 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23522 TSSI_VCM, 0x00);
23523 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23524 TSSIG, 0x00);
23525 if (pi->use_int_tx_iqlo_cal_nphy) {
23526 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23527 core, TX_SSI_MUX, 0x4);
23528 if (!(pi->
23529 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23530 WRITE_RADIO_REG3(pi, RADIO_2057,
23531 TX, core,
23532 TSSIA, 0x31);
23533 else
23534 WRITE_RADIO_REG3(pi, RADIO_2057,
23535 TX, core,
23536 TSSIA, 0x21);
23537 }
23538 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23539 TSSI_MISC1, 0x00);
23540 } else {
23541 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23542 TX_SSI_MASTER, 0x06);
23543 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23544 IQCAL_VCM_HG, 0x43);
23545 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23546 IQCAL_IDAC, 0x55);
23547 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23548 TSSI_VCM, 0x00);
23549
23550 if (pi->pubpi.radiorev != 5)
23551 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23552 core, TSSIA, 0x00);
23553 if (pi->use_int_tx_iqlo_cal_nphy) {
23554 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23555 core, TX_SSI_MUX,
23556 0x06);
23557 if (!(pi->
23558 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23559 WRITE_RADIO_REG3(pi, RADIO_2057,
23560 TX, core,
23561 TSSIG, 0x31);
23562 else
23563 WRITE_RADIO_REG3(pi, RADIO_2057,
23564 TX, core,
23565 TSSIG, 0x21);
23566 }
23567 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23568 TSSI_MISC1, 0x00);
23569 }
23570 }
23571 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23572
23573 for (core = 0; core <= 1; core++) {
23574 jtag_core =
23575 (core ==
23576 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23577
23578 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23579 read_radio_reg(pi,
23580 RADIO_2056_TX_TX_SSI_MASTER |
23581 jtag_core);
23582
23583 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23584 read_radio_reg(pi,
23585 RADIO_2056_TX_IQCAL_VCM_HG |
23586 jtag_core);
23587
23588 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23589 read_radio_reg(pi,
23590 RADIO_2056_TX_IQCAL_IDAC |
23591 jtag_core);
23592
23593 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23594 read_radio_reg(
23595 pi,
23596 RADIO_2056_TX_TSSI_VCM |
23597 jtag_core);
23598
23599 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23600 read_radio_reg(pi,
23601 RADIO_2056_TX_TX_AMP_DET |
23602 jtag_core);
23603
23604 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23605 read_radio_reg(pi,
23606 RADIO_2056_TX_TX_SSI_MUX |
23607 jtag_core);
23608
23609 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23610 read_radio_reg(pi,
23611 RADIO_2056_TX_TSSIA | jtag_core);
23612
23613 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23614 read_radio_reg(pi,
23615 RADIO_2056_TX_TSSIG | jtag_core);
23616
23617 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23618 read_radio_reg(pi,
23619 RADIO_2056_TX_TSSI_MISC1 |
23620 jtag_core);
23621
23622 pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23623 read_radio_reg(pi,
23624 RADIO_2056_TX_TSSI_MISC2 |
23625 jtag_core);
23626
23627 pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23628 read_radio_reg(pi,
23629 RADIO_2056_TX_TSSI_MISC3 |
23630 jtag_core);
23631
23632 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23633 write_radio_reg(pi,
23634 RADIO_2056_TX_TX_SSI_MASTER |
23635 jtag_core, 0x0a);
23636 write_radio_reg(pi,
23637 RADIO_2056_TX_IQCAL_VCM_HG |
23638 jtag_core, 0x40);
23639 write_radio_reg(pi,
23640 RADIO_2056_TX_IQCAL_IDAC |
23641 jtag_core, 0x55);
23642 write_radio_reg(pi,
23643 RADIO_2056_TX_TSSI_VCM |
23644 jtag_core, 0x00);
23645 write_radio_reg(pi,
23646 RADIO_2056_TX_TX_AMP_DET |
23647 jtag_core, 0x00);
23648
23649 if (PHY_IPA(pi)) {
23650 write_radio_reg(
23651 pi,
23652 RADIO_2056_TX_TX_SSI_MUX
23653 | jtag_core, 0x4);
23654 write_radio_reg(pi,
23655 RADIO_2056_TX_TSSIA |
23656 jtag_core, 0x1);
23657 } else {
23658 write_radio_reg(
23659 pi,
23660 RADIO_2056_TX_TX_SSI_MUX
23661 | jtag_core, 0x00);
23662 write_radio_reg(pi,
23663 RADIO_2056_TX_TSSIA |
23664 jtag_core, 0x2f);
23665 }
23666 write_radio_reg(pi,
23667 RADIO_2056_TX_TSSIG | jtag_core,
23668 0x00);
23669 write_radio_reg(pi,
23670 RADIO_2056_TX_TSSI_MISC1 |
23671 jtag_core, 0x00);
23672
23673 write_radio_reg(pi,
23674 RADIO_2056_TX_TSSI_MISC2 |
23675 jtag_core, 0x00);
23676 write_radio_reg(pi,
23677 RADIO_2056_TX_TSSI_MISC3 |
23678 jtag_core, 0x00);
23679 } else {
23680 write_radio_reg(pi,
23681 RADIO_2056_TX_TX_SSI_MASTER |
23682 jtag_core, 0x06);
23683 write_radio_reg(pi,
23684 RADIO_2056_TX_IQCAL_VCM_HG |
23685 jtag_core, 0x40);
23686 write_radio_reg(pi,
23687 RADIO_2056_TX_IQCAL_IDAC |
23688 jtag_core, 0x55);
23689 write_radio_reg(pi,
23690 RADIO_2056_TX_TSSI_VCM |
23691 jtag_core, 0x00);
23692 write_radio_reg(pi,
23693 RADIO_2056_TX_TX_AMP_DET |
23694 jtag_core, 0x00);
23695 write_radio_reg(pi,
23696 RADIO_2056_TX_TSSIA | jtag_core,
23697 0x00);
23698
23699 if (PHY_IPA(pi)) {
23700
23701 write_radio_reg(
23702 pi,
23703 RADIO_2056_TX_TX_SSI_MUX
23704 | jtag_core, 0x06);
23705 if (NREV_LT(pi->pubpi.phy_rev, 5))
23706 write_radio_reg(
23707 pi,
23708 RADIO_2056_TX_TSSIG
23709 | jtag_core,
23710 0x11);
23711 else
23712 write_radio_reg(
23713 pi,
23714 RADIO_2056_TX_TSSIG
23715 | jtag_core,
23716 0x1);
23717 } else {
23718 write_radio_reg(
23719 pi,
23720 RADIO_2056_TX_TX_SSI_MUX
23721 | jtag_core, 0x00);
23722 write_radio_reg(pi,
23723 RADIO_2056_TX_TSSIG |
23724 jtag_core, 0x20);
23725 }
23726
23727 write_radio_reg(pi,
23728 RADIO_2056_TX_TSSI_MISC1 |
23729 jtag_core, 0x00);
23730 write_radio_reg(pi,
23731 RADIO_2056_TX_TSSI_MISC2 |
23732 jtag_core, 0x00);
23733 write_radio_reg(pi,
23734 RADIO_2056_TX_TSSI_MISC3 |
23735 jtag_core, 0x00);
23736 }
23737 }
23738 } else {
23739
23740 pi->tx_rx_cal_radio_saveregs[0] =
23741 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23742 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23743 pi->tx_rx_cal_radio_saveregs[1] =
23744 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23745 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23746
23747 pi->tx_rx_cal_radio_saveregs[2] =
23748 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23749 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23750 pi->tx_rx_cal_radio_saveregs[3] =
23751 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23752 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23753
23754 pi->tx_rx_cal_radio_saveregs[4] =
23755 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23756 pi->tx_rx_cal_radio_saveregs[5] =
23757 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23758
23759 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23760 0) {
23761
23762 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23763 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23764 } else {
23765
23766 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23767 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23768 }
23769
23770 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23771
23772 or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23773 or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23774 } else {
23775
23776 and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23777 and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23778 }
23779 }
23780}
23781
23782static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23783{
23784 u16 jtag_core, core;
23785
23786 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23787 for (core = 0; core <= 1; core++) {
23788
23789 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23790 TX_SSI_MASTER,
23791 pi->
23792 tx_rx_cal_radio_saveregs[(core * 11) +
23793 0]);
23794
23795 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23796 pi->
23797 tx_rx_cal_radio_saveregs[(core * 11) +
23798 1]);
23799
23800 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23801 pi->
23802 tx_rx_cal_radio_saveregs[(core * 11) +
23803 2]);
23804
23805 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23806 pi->
23807 tx_rx_cal_radio_saveregs[(core * 11) +
23808 3]);
23809
23810 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23811 pi->
23812 tx_rx_cal_radio_saveregs[(core * 11) +
23813 5]);
23814
23815 if (pi->pubpi.radiorev != 5)
23816 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23817 TSSIA,
23818 pi->tx_rx_cal_radio_saveregs
23819 [(core * 11) + 6]);
23820
23821 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23822 pi->
23823 tx_rx_cal_radio_saveregs[(core * 11) +
23824 7]);
23825
23826 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23827 pi->
23828 tx_rx_cal_radio_saveregs[(core * 11) +
23829 8]);
23830 }
23831 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23832 for (core = 0; core <= 1; core++) {
23833 jtag_core = (core == PHY_CORE_0) ?
23834 RADIO_2056_TX0 : RADIO_2056_TX1;
23835
23836 write_radio_reg(pi,
23837 RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23838 pi->
23839 tx_rx_cal_radio_saveregs[(core * 11) +
23840 0]);
23841
23842 write_radio_reg(pi,
23843 RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23844 pi->
23845 tx_rx_cal_radio_saveregs[(core * 11) +
23846 1]);
23847
23848 write_radio_reg(pi,
23849 RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23850 pi->
23851 tx_rx_cal_radio_saveregs[(core * 11) +
23852 2]);
23853
23854 write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23855 pi->
23856 tx_rx_cal_radio_saveregs[(core * 11) +
23857 3]);
23858
23859 write_radio_reg(pi,
23860 RADIO_2056_TX_TX_AMP_DET | jtag_core,
23861 pi->
23862 tx_rx_cal_radio_saveregs[(core * 11) +
23863 4]);
23864
23865 write_radio_reg(pi,
23866 RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23867 pi->
23868 tx_rx_cal_radio_saveregs[(core * 11) +
23869 5]);
23870
23871 write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23872 pi->
23873 tx_rx_cal_radio_saveregs[(core * 11) +
23874 6]);
23875
23876 write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23877 pi->
23878 tx_rx_cal_radio_saveregs[(core * 11) +
23879 7]);
23880
23881 write_radio_reg(pi,
23882 RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23883 pi->
23884 tx_rx_cal_radio_saveregs[(core * 11) +
23885 8]);
23886
23887 write_radio_reg(pi,
23888 RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23889 pi->
23890 tx_rx_cal_radio_saveregs[(core * 11) +
23891 9]);
23892
23893 write_radio_reg(pi,
23894 RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23895 pi->
23896 tx_rx_cal_radio_saveregs[(core * 11) +
23897 10]);
23898 }
23899 } else {
23900
23901 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23902 pi->tx_rx_cal_radio_saveregs[0]);
23903 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23904 pi->tx_rx_cal_radio_saveregs[1]);
23905 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23906 pi->tx_rx_cal_radio_saveregs[2]);
23907 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23908 pi->tx_rx_cal_radio_saveregs[3]);
23909 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23910 pi->tx_rx_cal_radio_saveregs[4]);
23911 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23912 pi->tx_rx_cal_radio_saveregs[5]);
23913 }
23914}
23915
23916static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23917{
23918 u16 val, mask;
23919
23920 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23921 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23922 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23923
23924 mask = ((0x3 << 8) | (0x3 << 10));
23925 val = (0x2 << 8);
23926 val |= (0x2 << 10);
23927 mod_phy_reg(pi, 0xa6, mask, val);
23928 mod_phy_reg(pi, 0xa7, mask, val);
23929
23930 val = read_phy_reg(pi, 0x8f);
23931 pi->tx_rx_cal_phy_saveregs[2] = val;
23932 val |= ((0x1 << 9) | (0x1 << 10));
23933 write_phy_reg(pi, 0x8f, val);
23934
23935 val = read_phy_reg(pi, 0xa5);
23936 pi->tx_rx_cal_phy_saveregs[3] = val;
23937 val |= ((0x1 << 9) | (0x1 << 10));
23938 write_phy_reg(pi, 0xa5, val);
23939
23940 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23941 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23942
23943 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23944 &val);
23945 pi->tx_rx_cal_phy_saveregs[5] = val;
23946 val = 0;
23947 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23948 &val);
23949
23950 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23951 &val);
23952 pi->tx_rx_cal_phy_saveregs[6] = val;
23953 val = 0;
23954 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23955 &val);
23956
23957 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23958 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23959
23960 if (!(pi->use_int_tx_iqlo_cal_nphy))
23961 wlc_phy_rfctrlintc_override_nphy(
23962 pi,
23963 NPHY_RfctrlIntc_override_PA,
23964 1,
23965 RADIO_MIMO_CORESEL_CORE1
23966 |
23967 RADIO_MIMO_CORESEL_CORE2);
23968 else
23969 wlc_phy_rfctrlintc_override_nphy(
23970 pi,
23971 NPHY_RfctrlIntc_override_PA,
23972 0,
23973 RADIO_MIMO_CORESEL_CORE1
23974 |
23975 RADIO_MIMO_CORESEL_CORE2);
23976
23977 wlc_phy_rfctrlintc_override_nphy(pi,
23978 NPHY_RfctrlIntc_override_TRSW,
23979 0x2, RADIO_MIMO_CORESEL_CORE1);
23980 wlc_phy_rfctrlintc_override_nphy(pi,
23981 NPHY_RfctrlIntc_override_TRSW,
23982 0x8, RADIO_MIMO_CORESEL_CORE2);
23983
23984 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23985 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23986 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23987 0x29b, (0x1 << 0), (0) << 0);
23988
23989 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23990 0x29b, (0x1 << 0), (0) << 0);
23991
23992 if (NREV_IS(pi->pubpi.phy_rev, 7)
23993 || NREV_GE(pi->pubpi.phy_rev, 8))
23994 wlc_phy_rfctrl_override_nphy_rev7(
23995 pi, (0x1 << 7),
23996 wlc_phy_read_lpf_bw_ctl_nphy
23997 (pi,
23998 0), 0, 0,
23999 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24000
24001 if (pi->use_int_tx_iqlo_cal_nphy
24002 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24003
24004 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24005
24006 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24007 1 << 4);
24008
24009 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24010 mod_radio_reg(
24011 pi,
24012 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24013 1, 0);
24014 mod_radio_reg(
24015 pi,
24016 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24017 1, 0);
24018 } else {
24019 mod_radio_reg(
24020 pi,
24021 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24022 1, 0);
24023 mod_radio_reg(
24024 pi,
24025 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24026 1, 0);
24027 }
24028 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24029 wlc_phy_rfctrl_override_nphy_rev7(
24030 pi,
24031 (0x1 << 3), 0,
24032 0x3, 0,
24033 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24034 }
24035 }
24036 } else {
24037 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24038 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24039
24040 mask = ((0x3 << 12) | (0x3 << 14));
24041 val = (0x2 << 12);
24042 val |= (0x2 << 14);
24043 mod_phy_reg(pi, 0xa6, mask, val);
24044 mod_phy_reg(pi, 0xa7, mask, val);
24045
24046 val = read_phy_reg(pi, 0xa5);
24047 pi->tx_rx_cal_phy_saveregs[2] = val;
24048 val |= ((0x1 << 12) | (0x1 << 13));
24049 write_phy_reg(pi, 0xa5, val);
24050
24051 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24052 &val);
24053 pi->tx_rx_cal_phy_saveregs[3] = val;
24054 val |= 0x2000;
24055 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24056 &val);
24057
24058 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24059 &val);
24060 pi->tx_rx_cal_phy_saveregs[4] = val;
24061 val |= 0x2000;
24062 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24063 &val);
24064
24065 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24066 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24067 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24068 write_phy_reg(pi, 0x91, val);
24069 write_phy_reg(pi, 0x92, val);
24070 }
24071}
24072
24073static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24074{
24075 u16 mask;
24076
24077 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24078 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24079 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24080 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24081 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24082 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24083
24084 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24085 &pi->tx_rx_cal_phy_saveregs[5]);
24086 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24087 &pi->tx_rx_cal_phy_saveregs[6]);
24088
24089 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24090 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24091
24092 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24093 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24094
24095 if (NREV_IS(pi->pubpi.phy_rev, 7)
24096 || NREV_GE(pi->pubpi.phy_rev, 8))
24097 wlc_phy_rfctrl_override_nphy_rev7(
24098 pi, (0x1 << 7), 0, 0,
24099 1,
24100 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24101
24102 wlc_phy_resetcca_nphy(pi);
24103
24104 if (pi->use_int_tx_iqlo_cal_nphy
24105 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24106
24107 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24108 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24109 mod_radio_reg(
24110 pi,
24111 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24112 1, 1);
24113 mod_radio_reg(
24114 pi,
24115 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24116 1, 1);
24117 } else {
24118 mod_radio_reg(
24119 pi,
24120 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24121 1, 1);
24122 mod_radio_reg(
24123 pi,
24124 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24125 1, 1);
24126 }
24127
24128 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24129 0);
24130 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24131 wlc_phy_rfctrl_override_nphy_rev7(
24132 pi,
24133 (0x1 << 3), 0,
24134 0x3, 1,
24135 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24136 }
24137 }
24138 } else {
24139 mask = ((0x3 << 12) | (0x3 << 14));
24140 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24141 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24142 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24143
24144 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24145 &pi->tx_rx_cal_phy_saveregs[3]);
24146
24147 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24148 &pi->tx_rx_cal_phy_saveregs[4]);
24149
24150 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24151 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24152 }
24153}
24154
24155void
24156wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24157{
24158 u16 tssi_reg;
24159 s32 temp, pwrindex[2];
24160 s32 idle_tssi[2];
24161 s32 rssi_buf[4];
24162 s32 tssival[2];
24163 u8 tssi_type;
24164
24165 tssi_reg = read_phy_reg(pi, 0x1e9);
24166
24167 temp = (s32) (tssi_reg & 0x3f);
24168 idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24169
24170 temp = (s32) ((tssi_reg >> 8) & 0x3f);
24171 idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24172
24173 tssi_type =
24174 CHSPEC_IS5G(pi->radio_chanspec) ?
24175 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24176
24177 wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24178
24179 tssival[0] = rssi_buf[0] / ((s32) num_samps);
24180 tssival[1] = rssi_buf[2] / ((s32) num_samps);
24181
24182 pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24183 pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24184
24185 if (pwrindex[0] < 0)
24186 pwrindex[0] = 0;
24187 else if (pwrindex[0] > 63)
24188 pwrindex[0] = 63;
24189
24190 if (pwrindex[1] < 0)
24191 pwrindex[1] = 0;
24192 else if (pwrindex[1] > 63)
24193 pwrindex[1] = 63;
24194
24195 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24196 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24197 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24198 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24199}
24200
24201static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24202{
24203 int index;
24204 u32 bbmult_scale;
24205 u16 bbmult;
24206 u16 tblentry;
24207
c503dd38 24208 static const struct nphy_txiqcal_ladder ladder_lo[] = {
5b435de0
AS
24209 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24210 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24211 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24212 };
24213
c503dd38 24214 static const struct nphy_txiqcal_ladder ladder_iq[] = {
5b435de0
AS
24215 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24216 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24217 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24218 };
24219
24220 bbmult = (core == PHY_CORE_0) ?
24221 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24222 (pi->nphy_txcal_bbmult & 0xff);
24223
24224 for (index = 0; index < 18; index++) {
24225 bbmult_scale = ladder_lo[index].percent * bbmult;
24226 bbmult_scale /= 100;
24227
24228 tblentry =
24229 ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24230 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24231 &tblentry);
24232
24233 bbmult_scale = ladder_iq[index].percent * bbmult;
24234 bbmult_scale /= 100;
24235
24236 tblentry =
24237 ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24238 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24239 16, &tblentry);
24240 }
24241}
24242
24243static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24244{
24245 u16 tmp;
24246 tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24247
24248 tmp = (tmp & (0x7f << 8)) >> 8;
24249 return (u8) tmp;
24250}
24251
24252static void
24253wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24254{
24255 mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24256
24257 if (NREV_GT(pi->pubpi.phy_rev, 1))
24258 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24259}
24260
24261static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24262{
24263 u16 m0m1;
24264
24265 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24266
24267 return m0m1;
24268}
24269
24270static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24271{
24272 u16 m0m1 = (u16) ((m0 << 8) | m1);
24273
24274 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24275 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24276}
24277
24278static void
24279wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24280 struct nphy_papd_restore_state *state, u8 core)
24281{
24282 s32 tone_freq;
24283 u8 off_core;
24284 u16 mixgain = 0;
24285
24286 off_core = core ^ 0x1;
24287 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24288
24289 if (NREV_IS(pi->pubpi.phy_rev, 7)
24290 || NREV_GE(pi->pubpi.phy_rev, 8))
24291 wlc_phy_rfctrl_override_nphy_rev7(
24292 pi, (0x1 << 7),
24293 wlc_phy_read_lpf_bw_ctl_nphy
24294 (pi,
24295 0), 0, 0,
24296 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24297
24298 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24299 if (pi->pubpi.radiorev == 5)
24300 mixgain = (core == 0) ? 0x20 : 0x00;
24301 else if ((pi->pubpi.radiorev == 7)
24302 || (pi->pubpi.radiorev == 8))
24303 mixgain = 0x00;
24304 else if ((pi->pubpi.radiorev <= 4)
24305 || (pi->pubpi.radiorev == 6))
24306 mixgain = 0x00;
24307 } else {
24308 if ((pi->pubpi.radiorev == 4) ||
24309 (pi->pubpi.radiorev == 6))
24310 mixgain = 0x50;
24311 else if ((pi->pubpi.radiorev == 3)
24312 || (pi->pubpi.radiorev == 7)
24313 || (pi->pubpi.radiorev == 8))
24314 mixgain = 0x0;
24315 }
24316
24317 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24318 mixgain, (1 << core), 0,
24319 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24320
24321 wlc_phy_rfctrl_override_1tomany_nphy(
24322 pi,
24323 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24324 1, (1 << core), 0);
24325 wlc_phy_rfctrl_override_1tomany_nphy(
24326 pi,
24327 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24328 0, (1 << off_core), 0);
24329
24330 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24331 0, 0x3, 0,
24332 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24333 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24334 (1 << core), 0,
24335 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24336 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24337 (1 << core), 0,
24338 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24339 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24340 (1 << core), 0,
24341 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24342 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24343 (1 << core), 0,
24344 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24345 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24346 (1 << core), 0,
24347 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24348 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24349 (1 << core), 0,
24350 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24351 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24352 (1 << core), 0,
24353 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24354
24355 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24356 0, (1 << core), 0,
24357 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24358 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24359 (1 << core), 0,
24360 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24361
24362 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24363 0xa6 : 0xa7);
24364 state->afeoverride[core] =
24365 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24366 state->afectrl[off_core] =
24367 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24368 state->afeoverride[off_core] =
24369 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24370
24371 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24372 (0x1 << 2), 0);
24373 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24374 0xa5), (0x1 << 2), (0x1 << 2));
24375
24376 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24377 (0x1 << 2), (0x1 << 2));
24378 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24379 0x8f), (0x1 << 2), (0x1 << 2));
24380
24381 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24382 state->pwrup[core] =
24383 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24384 TXRXCOUPLE_2G_PWRUP);
24385 state->atten[core] =
24386 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24387 TXRXCOUPLE_2G_ATTEN);
24388 state->pwrup[off_core] =
24389 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24390 TXRXCOUPLE_2G_PWRUP);
24391 state->atten[off_core] =
24392 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24393 TXRXCOUPLE_2G_ATTEN);
24394
24395 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24396 TXRXCOUPLE_2G_PWRUP, 0xc);
24397
24398 if ((pi->pubpi.radiorev == 3) ||
24399 (pi->pubpi.radiorev == 4) ||
24400 (pi->pubpi.radiorev == 6))
24401 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24402 TXRXCOUPLE_2G_ATTEN, 0xf0);
24403 else if (pi->pubpi.radiorev == 5)
24404 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24405 TXRXCOUPLE_2G_ATTEN,
24406 (core == 0) ? 0xf7 : 0xf2);
24407 else if ((pi->pubpi.radiorev == 7)
24408 || (pi->pubpi.radiorev == 8))
24409 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24410 TXRXCOUPLE_2G_ATTEN, 0xf0);
24411
24412 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24413 TXRXCOUPLE_2G_PWRUP, 0x0);
24414 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24415 TXRXCOUPLE_2G_ATTEN, 0xff);
24416 } else {
24417 state->pwrup[core] =
24418 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24419 TXRXCOUPLE_5G_PWRUP);
24420 state->atten[core] =
24421 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24422 TXRXCOUPLE_5G_ATTEN);
24423 state->pwrup[off_core] =
24424 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24425 TXRXCOUPLE_5G_PWRUP);
24426 state->atten[off_core] =
24427 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24428 TXRXCOUPLE_5G_ATTEN);
24429
24430 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24431 TXRXCOUPLE_5G_PWRUP, 0xc);
24432
24433 if ((pi->pubpi.radiorev == 7)
24434 || (pi->pubpi.radiorev == 8))
24435 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24436 TXRXCOUPLE_5G_ATTEN, 0xf4);
24437
24438 else
24439 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24440 TXRXCOUPLE_5G_ATTEN, 0xf0);
24441
24442 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24443 TXRXCOUPLE_5G_PWRUP, 0x0);
24444 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24445 TXRXCOUPLE_5G_ATTEN, 0xff);
24446 }
24447
24448 tone_freq = 4000;
24449
24450 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24451
24452 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24453 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24454
24455 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24456 0x2a4, (0x1 << 13), (1) << 13);
24457
24458 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24459 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24460
24461 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24462 0x2a4, (0x1 << 13), (0) << 13);
24463
24464 } else {
24465
24466 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24467
24468 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24469
24470 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24471
24472 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24473 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24474
24475 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24476 0xa6 : 0xa7);
24477 state->afeoverride[core] =
24478 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24479
24480 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24481 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24482 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24483 0xa5),
24484 (0x1 << 0) |
24485 (0x1 << 1) |
24486 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24487
24488 state->vga_master[core] =
24489 READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24490 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24491 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24492 state->fbmix[core] =
24493 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24494 TXFBMIX_G);
24495 state->intpa_master[core] =
24496 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24497 INTPAG_MASTER);
24498
24499 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24500 0x03);
24501 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24502 INTPAG_MASTER, 0x04);
24503 } else {
24504 state->fbmix[core] =
24505 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24506 TXFBMIX_A);
24507 state->intpa_master[core] =
24508 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24509 INTPAA_MASTER);
24510
24511 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24512 0x03);
24513 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24514 INTPAA_MASTER, 0x04);
24515
24516 }
24517
24518 tone_freq = 4000;
24519
24520 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24521
24522 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24523 0x29b, (0x1 << 0), (1) << 0);
24524
24525 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24526 0x29b, (0x1 << 0), (0) << 0);
24527
24528 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24529 }
24530}
24531
24532static void
24533wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24534 struct nphy_papd_restore_state *state)
24535{
24536 u8 core;
24537
24538 wlc_phy_stopplayback_nphy(pi);
24539
24540 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24541
24542 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24543
24544 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24545 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24546 TXRXCOUPLE_2G_PWRUP, 0);
24547 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24548 TXRXCOUPLE_2G_ATTEN,
24549 state->atten[core]);
24550 } else {
24551 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24552 TXRXCOUPLE_5G_PWRUP, 0);
24553 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24554 TXRXCOUPLE_5G_ATTEN,
24555 state->atten[core]);
24556 }
24557 }
24558
24559 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24560 wlc_phy_rfctrl_override_nphy_rev7(
24561 pi, (0x1 << 2),
24562 1, 0x3, 0,
24563 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24564 else
24565 wlc_phy_rfctrl_override_nphy_rev7(
24566 pi, (0x1 << 2),
24567 0, 0x3, 1,
24568 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24569
24570 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24571 0, 0x3, 1,
24572 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24573 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24574 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24575 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24576 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24577 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24578 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24579 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24580 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24581 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24582 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24583 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24584 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24585 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24586 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24587 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24588 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24589 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24590 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24591 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24592 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24593 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24594 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24595 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24596 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24597 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24598 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24599 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24600 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24601 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24602 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24603
24604 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24605
24606 write_phy_reg(pi, (core == PHY_CORE_0) ?
24607 0xa6 : 0xa7, state->afectrl[core]);
24608 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24609 0xa5, state->afeoverride[core]);
24610 }
24611
24612 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24613 (state->mm & 0xff));
24614
24615 if (NREV_IS(pi->pubpi.phy_rev, 7)
24616 || NREV_GE(pi->pubpi.phy_rev, 8))
24617 wlc_phy_rfctrl_override_nphy_rev7(
24618 pi, (0x1 << 7), 0, 0,
24619 1,
24620 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24621 } else {
24622 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24623 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24624 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24625
24626 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24627 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24628
24629 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24630
24631 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24632 state->vga_master[core]);
24633 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24634 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24635 TXFBMIX_G, state->fbmix[core]);
24636 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24637 INTPAG_MASTER,
24638 state->intpa_master[core]);
24639 } else {
24640 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24641 TXFBMIX_A, state->fbmix[core]);
24642 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24643 INTPAA_MASTER,
24644 state->intpa_master[core]);
24645 }
24646
24647 write_phy_reg(pi, (core == PHY_CORE_0) ?
24648 0xa6 : 0xa7, state->afectrl[core]);
24649 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24650 0xa5, state->afeoverride[core]);
24651 }
24652
24653 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24654 (state->mm & 0xff));
24655
24656 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24657 }
24658}
24659
24660static void
24661wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24662 u32 end)
24663{
24664 u32 *buf, *src, *dst, sz;
24665
24666 sz = end - start + 1;
24667
24668 buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24669 if (NULL == buf)
24670 return;
24671
24672 src = buf;
24673 dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24674
24675 wlc_phy_table_read_nphy(pi,
24676 (core ==
24677 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24678 NPHY_TBL_ID_EPSILONTBL1),
24679 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24680
24681 do {
24682 u32 phy_a1, phy_a2;
24683 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24684
24685 phy_a1 = end - min(end, (winsz >> 1));
24686 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24687 end + (winsz >> 1));
24688 phy_a3 = phy_a2 - phy_a1 + 1;
24689 phy_a6 = 0;
24690 phy_a7 = 0;
24691
24692 do {
24693 wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24694 &phy_a5);
24695 phy_a6 += phy_a4;
24696 phy_a7 += phy_a5;
24697 } while (phy_a2-- != phy_a1);
24698
24699 phy_a6 /= phy_a3;
24700 phy_a7 /= phy_a3;
24701 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24702 } while (end-- != start);
24703
24704 wlc_phy_table_write_nphy(pi,
24705 (core ==
24706 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24707 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24708
24709 kfree(buf);
24710}
24711
24712static void
24713wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24714 enum phy_cal_mode cal_mode, u8 core)
24715{
24716 u16 phy_a1, phy_a2, phy_a3;
24717 u16 phy_a4, phy_a5;
24718 bool phy_a6;
24719 u8 phy_a7, m[2];
24720 u32 phy_a8 = 0;
24721 struct nphy_txgains phy_a9;
24722
24723 if (NREV_LT(pi->pubpi.phy_rev, 3))
24724 return;
24725
24726 phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24727
24728 phy_a6 = ((cal_mode == CAL_GCTRL)
24729 || (cal_mode == CAL_SOFT)) ? true : false;
24730
24731 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24732
24733 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24734
24735 if (CHSPEC_IS2G(pi->radio_chanspec))
24736 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24737 (phy_a9.txgm[core] << 12) |
24738 (phy_a9.pga[core] << 8) |
24739 (txgains->gains.pad[core] << 3) |
24740 (phy_a9.ipa[core]));
24741 else
24742 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24743 (phy_a9.txgm[core] << 12) |
24744 (txgains->gains.pga[core] << 8) |
24745 (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24746
24747 wlc_phy_rfctrl_override_1tomany_nphy(
24748 pi,
24749 NPHY_REV7_RfctrlOverride_cmd_txgain,
24750 phy_a5, (1 << core), 0);
24751
24752 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24753 if ((pi->pubpi.radiorev <= 4)
24754 || (pi->pubpi.radiorev == 6))
24755 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24756 60 : 79;
24757 else
24758 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24759 45 : 64;
24760 } else {
24761 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24762 }
24763
24764 m[phy_a7] = 0;
24765 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24766
24767 phy_a2 = 63;
24768
24769 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24770 if ((pi->pubpi.radiorev == 4)
24771 || (pi->pubpi.radiorev == 6)) {
24772 phy_a1 = 30;
24773 phy_a3 = 30;
24774 } else {
24775 phy_a1 = 25;
24776 phy_a3 = 25;
24777 }
24778 } else {
24779 if ((pi->pubpi.radiorev == 5)
24780 || (pi->pubpi.radiorev == 7)
24781 || (pi->pubpi.radiorev == 8)) {
24782 phy_a1 = 25;
24783 phy_a3 = 25;
24784 } else {
24785 phy_a1 = 35;
24786 phy_a3 = 35;
24787 }
24788 }
24789
24790 if (cal_mode == CAL_GCTRL) {
24791 if ((pi->pubpi.radiorev == 5)
24792 && (CHSPEC_IS2G(pi->radio_chanspec)))
24793 phy_a1 = 55;
24794 else if (((pi->pubpi.radiorev == 7) &&
24795 (CHSPEC_IS2G(pi->radio_chanspec))) ||
24796 ((pi->pubpi.radiorev == 8) &&
24797 (CHSPEC_IS2G(pi->radio_chanspec))))
24798 phy_a1 = 60;
24799 else
24800 phy_a1 = 63;
24801
24802 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24803
24804 phy_a1 = 35;
24805 phy_a3 = 35;
24806 }
24807
24808 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24809 0x29b, (0x1 << 0), (1) << 0);
24810
24811 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24812 0x29b, (0x1 << 0), (0) << 0);
24813
24814 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24815 0x2a4, (0x1 << 13), (1) << 13);
24816
24817 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24818 0x2a4, (0x1 << 13), (0) << 13);
24819
24820 write_phy_reg(pi, 0x2a1, 0x80);
24821 write_phy_reg(pi, 0x2a2, 0x100);
24822
24823 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24824 0x2a4, (0x7 << 4), (11) << 4);
24825
24826 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24827 0x2a4, (0x7 << 8), (11) << 8);
24828
24829 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24830 0x2a4, (0x7 << 0), (0x3) << 0);
24831
24832 write_phy_reg(pi, 0x2e5, 0x20);
24833
24834 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24835
24836 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24837
24838 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24839
24840 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24841 1, ((core == 0) ? 1 : 2), 0,
24842 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24843 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24844 0, ((core == 0) ? 2 : 1), 0,
24845 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24846
24847 write_phy_reg(pi, 0x2be, 1);
24848 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24849
24850 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24851 0, 0x3, 0,
24852 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24853
24854 wlc_phy_table_write_nphy(pi,
24855 (core ==
24856 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24857 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24858 32, &phy_a8);
24859
24860 if (cal_mode != CAL_GCTRL) {
24861 if (CHSPEC_IS5G(pi->radio_chanspec))
24862 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24863 }
24864
24865 wlc_phy_rfctrl_override_1tomany_nphy(
24866 pi,
24867 NPHY_REV7_RfctrlOverride_cmd_txgain,
24868 phy_a5, (1 << core), 1);
24869
24870 } else {
24871
24872 if (txgains) {
24873 if (txgains->useindex) {
24874 phy_a4 = 15 - ((txgains->index) >> 3);
24875 if (CHSPEC_IS2G(pi->radio_chanspec)) {
c9d6afc9
HM
24876 if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24877 pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24878 phy_a5 = 0x10f7 | (phy_a4 << 8);
24879 } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
5b435de0 24880 phy_a5 = 0x00f7 | (phy_a4 << 8);
c9d6afc9 24881 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
5b435de0 24882 phy_a5 = 0x10f7 | (phy_a4 << 8);
c9d6afc9 24883 } else {
5b435de0 24884 phy_a5 = 0x50f7 | (phy_a4 << 8);
c9d6afc9 24885 }
5b435de0
AS
24886 } else {
24887 phy_a5 = 0x70f7 | (phy_a4 << 8);
24888 }
24889 wlc_phy_rfctrl_override_nphy(pi,
24890 (0x1 << 13),
24891 phy_a5,
24892 (1 << core), 0);
24893 } else {
24894 wlc_phy_rfctrl_override_nphy(pi,
24895 (0x1 << 13),
24896 0x5bf7,
24897 (1 << core), 0);
24898 }
24899 }
24900
24901 if (CHSPEC_IS2G(pi->radio_chanspec))
24902 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24903 else
24904 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24905
24906 m[phy_a7] = 0;
24907 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24908
24909 phy_a2 = 63;
24910
24911 if (cal_mode == CAL_FULL) {
24912 phy_a1 = 25;
24913 phy_a3 = 25;
24914 } else if (cal_mode == CAL_SOFT) {
24915 phy_a1 = 25;
24916 phy_a3 = 25;
24917 } else if (cal_mode == CAL_GCTRL) {
24918 phy_a1 = 63;
24919 phy_a3 = 25;
24920 } else {
24921
24922 phy_a1 = 25;
24923 phy_a3 = 25;
24924 }
24925
24926 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24927 0x29b, (0x1 << 0), (1) << 0);
24928
24929 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24930 0x29b, (0x1 << 0), (0) << 0);
24931
24932 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24933 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24934 0x2a4, (0x1 << 13), (1) << 13);
24935
24936 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24937 0x2a4, (0x1 << 13), (0) << 13);
24938
24939 write_phy_reg(pi, 0x2a1, 0x20);
24940 write_phy_reg(pi, 0x2a2, 0x60);
24941
24942 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24943 0x2a4, (0xf << 4), (9) << 4);
24944
24945 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24946 0x2a4, (0xf << 8), (9) << 8);
24947
24948 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24949 0x2a4, (0xf << 0), (0x2) << 0);
24950
24951 write_phy_reg(pi, 0x2e5, 0x20);
24952 } else {
24953 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24954 0x2a4, (0x1 << 11), (1) << 11);
24955
24956 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24957 0x2a4, (0x1 << 11), (0) << 11);
24958
24959 write_phy_reg(pi, 0x2a1, 0x80);
24960 write_phy_reg(pi, 0x2a2, 0x600);
24961
24962 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24963 0x2a4, (0x7 << 4), (0) << 4);
24964
24965 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24966 0x2a4, (0x7 << 8), (0) << 8);
24967
24968 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24969 0x2a4, (0x7 << 0), (0x3) << 0);
24970
24971 mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24972
24973 }
24974
24975 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24976
24977 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24978
24979 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24980
24981 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24982
24983 write_phy_reg(pi, 0x2be, 1);
24984 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24985
24986 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24987
24988 wlc_phy_table_write_nphy(pi,
24989 (core ==
24990 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24991 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24992 32, &phy_a8);
24993
24994 if (cal_mode != CAL_GCTRL)
24995 wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24996 }
24997}
24998
24999static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25000{
25001 int phy_a1;
25002 int phy_a2;
25003 bool phy_a3;
25004 struct nphy_ipa_txcalgains phy_a4;
25005 bool phy_a5 = false;
25006 bool phy_a6 = true;
25007 s32 phy_a7, phy_a8;
25008 u32 phy_a9;
25009 int phy_a10;
25010 bool phy_a11 = false;
25011 int phy_a12;
25012 u8 phy_a13 = 0;
25013 u8 phy_a14;
25014 u8 *phy_a15 = NULL;
25015
25016 phy_a4.useindex = true;
25017 phy_a12 = start_gain;
25018
25019 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25020
25021 phy_a2 = 20;
25022 phy_a1 = 1;
25023
25024 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25025 if (pi->pubpi.radiorev == 5) {
25026
25027 phy_a15 = pad_gain_codes_used_2057rev5;
25028 phy_a13 =
f26b6f3d 25029 ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
5b435de0
AS
25030
25031 } else if ((pi->pubpi.radiorev == 7)
25032 || (pi->pubpi.radiorev == 8)) {
25033
25034 phy_a15 = pad_gain_codes_used_2057rev7;
25035 phy_a13 =
f26b6f3d 25036 ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
5b435de0
AS
25037
25038 } else {
25039
25040 phy_a15 = pad_all_gain_codes_2057;
f26b6f3d 25041 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
5b435de0
AS
25042 1;
25043 }
25044
25045 } else {
25046
25047 phy_a15 = pga_all_gain_codes_2057;
f26b6f3d 25048 phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
5b435de0
AS
25049 }
25050
25051 phy_a14 = 0;
25052
25053 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25054 if (CHSPEC_IS2G(pi->radio_chanspec))
25055 phy_a4.gains.pad[core] =
25056 (u16) phy_a15[phy_a12];
25057 else
25058 phy_a4.gains.pga[core] =
25059 (u16) phy_a15[phy_a12];
25060
25061 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25062
25063 wlc_phy_table_read_nphy(pi,
25064 (core ==
25065 PHY_CORE_0 ?
25066 NPHY_TBL_ID_EPSILONTBL0 :
25067 NPHY_TBL_ID_EPSILONTBL1), 1,
25068 63, 32, &phy_a9);
25069
25070 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25071
25072 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25073 (phy_a8 == 4095) || (phy_a8 == -4096));
25074
25075 if (!phy_a6 && (phy_a3 != phy_a5)) {
25076 if (!phy_a3)
25077 phy_a12 -= (u8) phy_a1;
25078
25079 phy_a11 = true;
25080 break;
25081 }
25082
25083 if (phy_a3)
25084 phy_a12 += (u8) phy_a1;
25085 else
25086 phy_a12 -= (u8) phy_a1;
25087
25088 if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25089 if (phy_a12 < phy_a14)
25090 phy_a12 = phy_a14;
25091 else
25092 phy_a12 = phy_a13;
25093
25094 phy_a11 = true;
25095 break;
25096 }
25097
25098 phy_a6 = false;
25099 phy_a5 = phy_a3;
25100 }
25101
25102 } else {
25103 phy_a2 = 10;
25104 phy_a1 = 8;
25105 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25106 phy_a4.index = (u8) phy_a12;
25107 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25108
25109 wlc_phy_table_read_nphy(pi,
25110 (core ==
25111 PHY_CORE_0 ?
25112 NPHY_TBL_ID_EPSILONTBL0 :
25113 NPHY_TBL_ID_EPSILONTBL1), 1,
25114 63, 32, &phy_a9);
25115
25116 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25117
25118 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25119 (phy_a8 == 4095) || (phy_a8 == -4096));
25120
25121 if (!phy_a6 && (phy_a3 != phy_a5)) {
25122 if (!phy_a3)
25123 phy_a12 -= (u8) phy_a1;
25124
25125 phy_a11 = true;
25126 break;
25127 }
25128
25129 if (phy_a3)
25130 phy_a12 += (u8) phy_a1;
25131 else
25132 phy_a12 -= (u8) phy_a1;
25133
25134 if ((phy_a12 < 0) || (phy_a12 > 127)) {
25135 if (phy_a12 < 0)
25136 phy_a12 = 0;
25137 else
25138 phy_a12 = 127;
25139
25140 phy_a11 = true;
25141 break;
25142 }
25143
25144 phy_a6 = false;
25145 phy_a5 = phy_a3;
25146 }
25147
25148 }
25149
25150 if (NREV_GE(pi->pubpi.phy_rev, 7))
25151 return (u8) phy_a15[phy_a12];
25152 else
25153 return (u8) phy_a12;
25154
25155}
25156
25157static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25158{
25159 struct nphy_ipa_txcalgains phy_b1[2];
25160 struct nphy_papd_restore_state phy_b2;
25161 bool phy_b3;
25162 u8 phy_b4;
25163 u8 phy_b5;
25164 s16 phy_b6, phy_b7, phy_b8;
25165 u16 phy_b9;
25166 s16 phy_b10, phy_b11, phy_b12;
25167
25168 phy_b11 = 0;
25169 phy_b12 = 0;
25170 phy_b7 = 0;
25171 phy_b8 = 0;
25172 phy_b6 = 0;
25173
25174 if (pi->nphy_papd_skip == 1)
25175 return;
25176
4b006b11
AS
25177 phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25178 MCTL_EN_MAC));
5b435de0
AS
25179 if (!phy_b3)
25180 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25181
25182 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25183
25184 pi->nphy_force_papd_cal = false;
25185
25186 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25187 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25188 wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25189
25190 pi->nphy_papd_last_cal = pi->sh->now;
25191 pi->nphy_papd_recal_counter++;
25192
25193 phy_b4 = pi->nphy_txpwrctrl;
25194 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25195
25196 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25197 nphy_papd_scaltbl);
25198 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25199 nphy_papd_scaltbl);
25200
25201 phy_b9 = read_phy_reg(pi, 0x01);
25202 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25203
25204 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25205 s32 i, val = 0;
25206 for (i = 0; i < 64; i++)
25207 wlc_phy_table_write_nphy(pi,
25208 ((phy_b5 ==
25209 PHY_CORE_0) ?
25210 NPHY_TBL_ID_EPSILONTBL0 :
25211 NPHY_TBL_ID_EPSILONTBL1), 1,
25212 i, 32, &val);
25213 }
25214
25215 wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25216
25217 phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25218 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25219 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25220
25221 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25222 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25223 if ((pi->pubpi.radiorev == 3)
25224 || (pi->pubpi.radiorev == 4)
25225 || (pi->pubpi.radiorev == 6)) {
25226 pi->nphy_papd_cal_gain_index[phy_b5] =
25227 23;
25228 } else if (pi->pubpi.radiorev == 5) {
25229 pi->nphy_papd_cal_gain_index[phy_b5] =
25230 0;
25231 pi->nphy_papd_cal_gain_index[phy_b5] =
25232 wlc_phy_a3_nphy(
25233 pi,
25234 pi->
25235 nphy_papd_cal_gain_index
25236 [phy_b5],
25237 phy_b5);
25238
25239 } else if ((pi->pubpi.radiorev == 7)
25240 || (pi->pubpi.radiorev == 8)) {
25241
25242 pi->nphy_papd_cal_gain_index[phy_b5] =
25243 0;
25244 pi->nphy_papd_cal_gain_index[phy_b5] =
25245 wlc_phy_a3_nphy(
25246 pi,
25247 pi->
25248 nphy_papd_cal_gain_index
25249 [phy_b5],
25250 phy_b5);
25251
25252 }
25253
25254 phy_b1[phy_b5].gains.pad[phy_b5] =
25255 pi->nphy_papd_cal_gain_index[phy_b5];
25256
25257 } else {
25258 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25259 pi->nphy_papd_cal_gain_index[phy_b5] =
25260 wlc_phy_a3_nphy(
25261 pi,
25262 pi->
25263 nphy_papd_cal_gain_index
25264 [phy_b5], phy_b5);
25265 phy_b1[phy_b5].gains.pga[phy_b5] =
25266 pi->nphy_papd_cal_gain_index[phy_b5];
25267 }
25268 } else {
25269 phy_b1[phy_b5].useindex = true;
25270 phy_b1[phy_b5].index = 16;
25271 phy_b1[phy_b5].index =
25272 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25273 phy_b5);
25274
25275 pi->nphy_papd_cal_gain_index[phy_b5] =
25276 15 - ((phy_b1[phy_b5].index) >> 3);
25277 }
25278
25279 switch (pi->nphy_papd_cal_type) {
25280 case 0:
25281 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25282 break;
25283 case 1:
25284 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25285 break;
25286 }
25287
25288 if (NREV_GE(pi->pubpi.phy_rev, 7))
25289 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25290 }
25291
25292 if (NREV_LT(pi->pubpi.phy_rev, 7))
25293 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25294
25295 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25296 int eps_offset = 0;
25297
25298 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25299 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25300 if (pi->pubpi.radiorev == 3)
25301 eps_offset = -2;
25302 else if (pi->pubpi.radiorev == 5)
25303 eps_offset = 3;
25304 else
25305 eps_offset = -1;
25306 } else {
25307 eps_offset = 2;
25308 }
25309
25310 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25311 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25312 phy_b10 = 0;
25313 if ((pi->pubpi.radiorev == 3) ||
25314 (pi->pubpi.radiorev == 4) ||
25315 (pi->pubpi.radiorev == 6)) {
25316 phy_b12 = -(
25317 nphy_papd_padgain_dlt_2g_2057rev3n4
25318 [phy_b8] + 1) / 2;
25319 phy_b10 = -1;
25320 } else if (pi->pubpi.radiorev == 5) {
25321 phy_b12 = -(
25322 nphy_papd_padgain_dlt_2g_2057rev5
25323 [phy_b8] + 1) / 2;
25324 } else if ((pi->pubpi.radiorev == 7) ||
25325 (pi->pubpi.radiorev == 8)) {
25326 phy_b12 = -(
25327 nphy_papd_padgain_dlt_2g_2057rev7
25328 [phy_b8] + 1) / 2;
25329 }
25330 } else {
25331 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25332 if ((pi->pubpi.radiorev == 3) ||
25333 (pi->pubpi.radiorev == 4) ||
25334 (pi->pubpi.radiorev == 6))
25335 phy_b11 =
25336 -(nphy_papd_pgagain_dlt_5g_2057
25337 [phy_b7]
25338 + 1) / 2;
25339 else if ((pi->pubpi.radiorev == 7)
25340 || (pi->pubpi.radiorev == 8))
25341 phy_b11 = -(
25342 nphy_papd_pgagain_dlt_5g_2057rev7
25343 [phy_b7] + 1) / 2;
25344
25345 phy_b10 = -9;
25346 }
25347
25348 if (CHSPEC_IS2G(pi->radio_chanspec))
25349 phy_b6 =
25350 -60 + 27 + eps_offset + phy_b12 +
25351 phy_b10;
25352 else
25353 phy_b6 =
25354 -60 + 27 + eps_offset + phy_b11 +
25355 phy_b10;
25356
25357 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25358 0x29c, (0x1ff << 7), (phy_b6) << 7);
25359
25360 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25361 } else {
25362 if (NREV_LT(pi->pubpi.phy_rev, 5))
25363 eps_offset = 4;
25364 else
25365 eps_offset = 2;
25366
25367 phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25368
25369 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25370 phy_b11 =
25371 -(nphy_papd_pga_gain_delta_ipa_2g[
25372 phy_b7] +
25373 1) / 2;
25374 phy_b10 = 0;
25375 } else {
25376 phy_b11 =
25377 -(nphy_papd_pga_gain_delta_ipa_5g[
25378 phy_b7] +
25379 1) / 2;
25380 phy_b10 = -9;
25381 }
25382
25383 phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25384
25385 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25386 0x29c, (0x1ff << 7), (phy_b6) << 7);
25387
25388 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25389 }
25390 }
25391
25392 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25393 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25394
25395 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25396 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25397
25398 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25399 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25400 0x2a4, (0x1 << 13), (0) << 13);
25401
25402 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25403 0x2a4, (0x1 << 13), (0) << 13);
25404
25405 } else {
25406 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25407 0x2a4, (0x1 << 11), (0) << 11);
25408
25409 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25410 0x2a4, (0x1 << 11), (0) << 11);
25411
25412 }
25413 pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25414
25415 write_phy_reg(pi, 0x01, phy_b9);
25416
25417 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25418
25419 wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25420 if (phy_b4 == PHY_TPC_HW_OFF) {
25421 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25422 (s8) (pi->nphy_txpwrindex[0].
25423 index_internal), false);
25424 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25425 (s8) (pi->nphy_txpwrindex[1].
25426 index_internal), false);
25427 }
25428
25429 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25430
25431 if (!phy_b3)
25432 wlapi_enable_mac(pi->sh->physhim);
25433}
25434
25435void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25436{
25437 struct nphy_txgains target_gain;
25438 u8 tx_pwr_ctrl_state;
25439 bool fullcal = true;
25440 bool restore_tx_gain = false;
25441 bool mphase;
25442
25443 if (PHY_MUTED(pi))
25444 return;
25445
25446 if (caltype == PHY_PERICAL_AUTO)
25447 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25448 else if (caltype == PHY_PERICAL_PARTIAL)
25449 fullcal = false;
25450
25451 if (pi->cal_type_override != PHY_PERICAL_AUTO)
25452 fullcal =
25453 (pi->cal_type_override ==
25454 PHY_PERICAL_FULL) ? true : false;
25455
25456 if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25457 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25458 wlc_phy_cal_perical_mphase_restart(pi);
25459 }
25460
25461 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25462 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25463
25464 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25465
25466 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25467
25468 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25469 (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25470 pi->nphy_cal_orig_pwr_idx[0] =
25471 (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25472 pi->nphy_cal_orig_pwr_idx[1] =
25473 (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25474
25475 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25476 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25477 0x110, 16,
25478 pi->nphy_cal_orig_tx_gain);
25479 } else {
25480 pi->nphy_cal_orig_tx_gain[0] = 0;
25481 pi->nphy_cal_orig_tx_gain[1] = 0;
25482 }
25483 }
25484 target_gain = wlc_phy_get_tx_gain_nphy(pi);
25485 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25486 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25487
25488 if (pi->antsel_type == ANTSEL_2x3)
25489 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25490
25491 mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25492 if (!mphase) {
25493
25494 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25495 wlc_phy_precal_txgain_nphy(pi);
25496 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25497 restore_tx_gain = true;
25498
25499 target_gain = pi->nphy_cal_target_gain;
25500 }
25501 if (0 ==
25502 wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25503 mphase)) {
25504 if (PHY_IPA(pi))
25505 wlc_phy_a4(pi, true);
25506
25507 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25508 wlapi_enable_mac(pi->sh->physhim);
25509 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25510 10000);
25511 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25512 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25513
25514 if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25515 (pi->first_cal_after_assoc ||
25516 (pi->cal_type_override ==
25517 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25518 wlc_phy_savecal_nphy(pi);
25519
25520 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25521
25522 pi->nphy_perical_last = pi->sh->now;
25523 }
25524 }
25525 if (caltype != PHY_PERICAL_AUTO)
25526 wlc_phy_rssi_cal_nphy(pi);
25527
25528 if (pi->first_cal_after_assoc
25529 || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25530 pi->first_cal_after_assoc = false;
25531 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25532 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25533 }
25534
25535 if (NREV_GE(pi->pubpi.phy_rev, 3))
25536 wlc_phy_radio205x_vcocal_nphy(pi);
25537 } else {
25538 switch (pi->mphase_cal_phase_id) {
25539 case MPHASE_CAL_STATE_INIT:
25540 pi->nphy_perical_last = pi->sh->now;
25541 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25542
25543 if (NREV_GE(pi->pubpi.phy_rev, 3))
25544 wlc_phy_precal_txgain_nphy(pi);
25545
25546 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25547 pi->mphase_cal_phase_id++;
25548 break;
25549
25550 case MPHASE_CAL_STATE_TXPHASE0:
25551 case MPHASE_CAL_STATE_TXPHASE1:
25552 case MPHASE_CAL_STATE_TXPHASE2:
25553 case MPHASE_CAL_STATE_TXPHASE3:
25554 case MPHASE_CAL_STATE_TXPHASE4:
25555 case MPHASE_CAL_STATE_TXPHASE5:
25556 if ((pi->radar_percal_mask & 0x10) != 0)
25557 pi->nphy_rxcal_active = true;
25558
25559 if (wlc_phy_cal_txiqlo_nphy
25560 (pi, pi->nphy_cal_target_gain, fullcal,
25561 true) != 0) {
25562
25563 wlc_phy_cal_perical_mphase_reset(pi);
25564 break;
25565 }
25566
25567 if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25568 (pi->mphase_cal_phase_id ==
25569 MPHASE_CAL_STATE_TXPHASE4))
25570 pi->mphase_cal_phase_id += 2;
25571 else
25572 pi->mphase_cal_phase_id++;
25573 break;
25574
25575 case MPHASE_CAL_STATE_PAPDCAL:
25576 if ((pi->radar_percal_mask & 0x2) != 0)
25577 pi->nphy_rxcal_active = true;
25578
25579 if (PHY_IPA(pi))
25580 wlc_phy_a4(pi, true);
25581
25582 pi->mphase_cal_phase_id++;
25583 break;
25584
25585 case MPHASE_CAL_STATE_RXCAL:
25586 if ((pi->radar_percal_mask & 0x1) != 0)
25587 pi->nphy_rxcal_active = true;
25588 if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25589 (pi->first_cal_after_assoc ||
25590 (pi->cal_type_override ==
25591 PHY_PERICAL_FULL)) ? 2 : 0,
25592 false) == 0)
25593 wlc_phy_savecal_nphy(pi);
25594
25595 pi->mphase_cal_phase_id++;
25596 break;
25597
25598 case MPHASE_CAL_STATE_RSSICAL:
25599 if ((pi->radar_percal_mask & 0x4) != 0)
25600 pi->nphy_rxcal_active = true;
25601 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25602 wlc_phy_rssi_cal_nphy(pi);
25603
25604 if (NREV_GE(pi->pubpi.phy_rev, 3))
25605 wlc_phy_radio205x_vcocal_nphy(pi);
25606
25607 restore_tx_gain = true;
25608
25609 if (pi->first_cal_after_assoc)
25610 pi->mphase_cal_phase_id++;
25611 else
25612 wlc_phy_cal_perical_mphase_reset(pi);
25613
25614 break;
25615
25616 case MPHASE_CAL_STATE_IDLETSSI:
25617 if ((pi->radar_percal_mask & 0x8) != 0)
25618 pi->nphy_rxcal_active = true;
25619
25620 if (pi->first_cal_after_assoc) {
25621 pi->first_cal_after_assoc = false;
25622 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25623 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25624 }
25625
25626 wlc_phy_cal_perical_mphase_reset(pi);
25627 break;
25628
25629 default:
25630 wlc_phy_cal_perical_mphase_reset(pi);
25631 break;
25632 }
25633 }
25634
25635 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25636 if (restore_tx_gain) {
25637 if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25638
25639 wlc_phy_txpwr_index_nphy(pi, 1,
25640 pi->
25641 nphy_cal_orig_pwr_idx
25642 [0], false);
25643 wlc_phy_txpwr_index_nphy(pi, 2,
25644 pi->
25645 nphy_cal_orig_pwr_idx
25646 [1], false);
25647
25648 pi->nphy_txpwrindex[0].index = -1;
25649 pi->nphy_txpwrindex[1].index = -1;
25650 } else {
25651 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25652 (s8) (pi->
25653 nphy_txpwrindex
25654 [0].
25655 index_internal),
25656 false);
25657 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25658 (s8) (pi->
25659 nphy_txpwrindex
25660 [1].
25661 index_internal),
25662 false);
25663 }
25664 }
25665 }
25666
25667 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25668 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25669 wlapi_enable_mac(pi->sh->physhim);
25670}
25671
25672int
25673wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25674 bool fullcal, bool mphase)
25675{
25676 u16 val;
25677 u16 tbl_buf[11];
25678 u8 cal_cnt;
25679 u16 cal_cmd;
25680 u8 num_cals, max_cal_cmds;
25681 u16 core_no, cal_type;
25682 u16 diq_start = 0;
25683 u8 phy_bw;
25684 u16 max_val;
25685 u16 tone_freq;
25686 u16 gain_save[2];
25687 u16 cal_gain[2];
25688 struct nphy_iqcal_params cal_params[2];
25689 u32 tbl_len;
c503dd38 25690 const void *tbl_ptr;
5b435de0
AS
25691 bool ladder_updated[2];
25692 u8 mphase_cal_lastphase = 0;
25693 int bcmerror = 0;
25694 bool phyhang_avoid_state = false;
25695
c503dd38 25696 static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
5b435de0
AS
25697 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25698 0x1902,
25699 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25700 0x6407
25701 };
25702
c503dd38 25703 static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
5b435de0
AS
25704 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25705 0x3200,
25706 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25707 0x6407
25708 };
25709
c503dd38 25710 static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
5b435de0
AS
25711 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25712 0x1202,
25713 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25714 0x4707
25715 };
25716
c503dd38 25717 static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
5b435de0
AS
25718 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25719 0x2300,
25720 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25721 0x4707
25722 };
25723
c503dd38 25724 static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
5b435de0
AS
25725 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25726 0x0000
25727 };
25728
c503dd38 25729 static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
5b435de0
AS
25730 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25731 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25732 };
25733
c503dd38 25734 static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
5b435de0
AS
25735 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25736 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25737 };
25738
c503dd38 25739 static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
5b435de0
AS
25740 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25741 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25742 0x0000
25743 };
25744
c503dd38 25745 static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
5b435de0
AS
25746 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25747 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25748 };
25749
c503dd38 25750 static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
5b435de0
AS
25751 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25752 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25753 };
25754
25755 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25756
25757 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25758 phyhang_avoid_state = pi->phyhang_avoid;
25759 pi->phyhang_avoid = false;
25760 }
25761
25762 if (CHSPEC_IS40(pi->radio_chanspec))
25763 phy_bw = 40;
25764 else
25765 phy_bw = 20;
25766
25767 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25768
25769 for (core_no = 0; core_no <= 1; core_no++) {
25770 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25771 &cal_params[core_no]);
25772 cal_gain[core_no] = cal_params[core_no].cal_gain;
25773 }
25774
25775 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25776
25777 wlc_phy_txcal_radio_setup_nphy(pi);
25778
25779 wlc_phy_txcal_physetup_nphy(pi);
25780
25781 ladder_updated[0] = ladder_updated[1] = false;
25782 if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25783 (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25784 && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25785
25786 if (phy_bw == 40) {
25787 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25788 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25789 } else {
25790 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25791 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25792 }
25793 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25794 16, tbl_ptr);
25795
25796 if (phy_bw == 40) {
25797 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25798 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25799 } else {
25800 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25801 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25802 }
25803 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25804 16, tbl_ptr);
25805 }
25806
25807 if (NREV_GE(pi->pubpi.phy_rev, 7))
25808 write_phy_reg(pi, 0xc2, 0x8ad9);
25809 else
25810 write_phy_reg(pi, 0xc2, 0x8aa9);
25811
25812 max_val = 250;
25813 tone_freq = (phy_bw == 20) ? 2500 : 5000;
25814
25815 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25816 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25817 bcmerror = 0;
25818 } else {
25819 bcmerror =
25820 wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25821 false);
25822 }
25823
25824 if (bcmerror == 0) {
25825
25826 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25827 tbl_ptr = pi->mphase_txcal_bestcoeffs;
25828 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25829 if (NREV_LT(pi->pubpi.phy_rev, 3))
25830 tbl_len -= 2;
25831 } else {
25832 if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25833
25834 tbl_ptr = pi->nphy_txiqlocal_bestc;
25835 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25836 if (NREV_LT(pi->pubpi.phy_rev, 3))
25837 tbl_len -= 2;
25838 } else {
25839
25840 fullcal = true;
25841
25842 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25843 tbl_ptr =
25844 tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25845 tbl_len = ARRAY_SIZE(
25846 tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25847 } else {
25848 tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25849 tbl_len = ARRAY_SIZE(
25850 tbl_tx_iqlo_cal_startcoefs);
25851 }
25852 }
25853 }
25854 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25855 16, tbl_ptr);
25856
25857 if (fullcal) {
25858 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25859 ARRAY_SIZE(
25860 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25861 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25862 } else {
25863 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25864 ARRAY_SIZE(
25865 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25866 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25867 }
25868
25869 if (mphase) {
25870 cal_cnt = pi->mphase_txcal_cmdidx;
25871 if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25872 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25873 else
25874 num_cals = max_cal_cmds;
25875 } else {
25876 cal_cnt = 0;
25877 num_cals = max_cal_cmds;
25878 }
25879
25880 for (; cal_cnt < num_cals; cal_cnt++) {
25881
25882 if (fullcal) {
25883 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25884 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25885 [cal_cnt] :
25886 tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25887 } else {
25888 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25889 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25890 cal_cnt]
25891 : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25892 }
25893
25894 core_no = ((cal_cmd & 0x3000) >> 12);
25895 cal_type = ((cal_cmd & 0x0F00) >> 8);
25896
25897 if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25898 (NREV_IS(pi->pubpi.phy_rev, 5) &&
25899 PHY_IPA(pi)
25900 && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25901 if (!ladder_updated[core_no]) {
25902 wlc_phy_update_txcal_ladder_nphy(
25903 pi,
25904 core_no);
25905 ladder_updated[core_no] = true;
25906 }
25907 }
25908
25909 val =
25910 (cal_params[core_no].
25911 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25912 write_phy_reg(pi, 0xc1, val);
25913
25914 if ((cal_type == 1) || (cal_type == 3)
25915 || (cal_type == 4)) {
25916
25917 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25918 1, 69 + core_no, 16,
25919 tbl_buf);
25920
25921 diq_start = tbl_buf[0];
25922
25923 tbl_buf[0] = 0;
25924 wlc_phy_table_write_nphy(pi,
25925 NPHY_TBL_ID_IQLOCAL, 1,
25926 69 + core_no, 16,
25927 tbl_buf);
25928 }
25929
25930 write_phy_reg(pi, 0xc0, cal_cmd);
25931
25932 SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25933 20000);
25934 if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25935 "HW error: txiq calib"))
25936 return -EIO;
25937
25938 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25939 tbl_len, 96, 16, tbl_buf);
25940 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25941 tbl_len, 64, 16, tbl_buf);
25942
25943 if ((cal_type == 1) || (cal_type == 3)
25944 || (cal_type == 4)) {
25945
25946 tbl_buf[0] = diq_start;
25947
25948 }
25949
25950 }
25951
25952 if (mphase) {
25953 pi->mphase_txcal_cmdidx = num_cals;
25954 if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25955 pi->mphase_txcal_cmdidx = 0;
25956 }
25957
25958 mphase_cal_lastphase =
25959 (NREV_LE(pi->pubpi.phy_rev, 2)) ?
25960 MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25961
25962 if (!mphase
25963 || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25964
25965 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25966 16, tbl_buf);
25967 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25968 16, tbl_buf);
25969
25970 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25971
25972 tbl_buf[0] = 0;
25973 tbl_buf[1] = 0;
25974 tbl_buf[2] = 0;
25975 tbl_buf[3] = 0;
25976
25977 }
25978 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25979 16, tbl_buf);
25980
25981 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25982 16, tbl_buf);
25983 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25984 16, tbl_buf);
25985
25986 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25987 16, tbl_buf);
25988
25989 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25990 if (NREV_LT(pi->pubpi.phy_rev, 3))
25991 tbl_len -= 2;
25992
25993 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25994 tbl_len, 96, 16,
25995 pi->nphy_txiqlocal_bestc);
25996
25997 pi->nphy_txiqlocal_coeffsvalid = true;
25998 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25999 } else {
26000 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26001 if (NREV_LT(pi->pubpi.phy_rev, 3))
26002 tbl_len -= 2;
26003
26004 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26005 tbl_len, 96, 16,
26006 pi->mphase_txcal_bestcoeffs);
26007 }
26008
26009 wlc_phy_stopplayback_nphy(pi);
26010
26011 write_phy_reg(pi, 0xc2, 0x0000);
26012
26013 }
26014
26015 wlc_phy_txcal_phycleanup_nphy(pi);
26016
26017 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26018 gain_save);
26019
26020 wlc_phy_txcal_radio_cleanup_nphy(pi);
26021
26022 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26023 if (!mphase
26024 || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26025 wlc_phy_tx_iq_war_nphy(pi);
26026 }
26027
26028 if (NREV_GE(pi->pubpi.phy_rev, 4))
26029 pi->phyhang_avoid = phyhang_avoid_state;
26030
26031 wlc_phy_stay_in_carriersearch_nphy(pi, false);
26032
26033 return bcmerror;
26034}
26035
26036static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26037{
26038 u16 tbl_buf[7];
26039
26040 if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26041 (pi->nphy_txiqlocal_coeffsvalid)) {
26042 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26043 ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26044
26045 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26046 (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26047 (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26048 (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26049
26050 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26051 16, pi->nphy_txiqlocal_bestc);
26052
26053 tbl_buf[0] = 0;
26054 tbl_buf[1] = 0;
26055 tbl_buf[2] = 0;
26056 tbl_buf[3] = 0;
26057 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26058 16, tbl_buf);
26059
26060 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26061 16,
26062 &pi->nphy_txiqlocal_bestc[5]);
26063
26064 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26065 16,
26066 &pi->nphy_txiqlocal_bestc[5]);
26067 }
26068 }
26069}
26070
26071void
26072wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26073 struct nphy_iq_comp *pcomp)
26074{
26075 if (write) {
26076 write_phy_reg(pi, 0x9a, pcomp->a0);
26077 write_phy_reg(pi, 0x9b, pcomp->b0);
26078 write_phy_reg(pi, 0x9c, pcomp->a1);
26079 write_phy_reg(pi, 0x9d, pcomp->b1);
26080 } else {
26081 pcomp->a0 = read_phy_reg(pi, 0x9a);
26082 pcomp->b0 = read_phy_reg(pi, 0x9b);
26083 pcomp->a1 = read_phy_reg(pi, 0x9c);
26084 pcomp->b1 = read_phy_reg(pi, 0x9d);
26085 }
26086}
26087
26088void
26089wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26090 u16 num_samps, u8 wait_time, u8 wait_for_crs)
26091{
26092 u8 core;
26093
26094 write_phy_reg(pi, 0x12b, num_samps);
26095 mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26096 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26097 (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26098
26099 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26100
26101 SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26102 10000);
26103 if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26104 "HW error: rxiq est"))
26105 return;
26106
26107 if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26108 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26109 est[core].i_pwr =
26110 (read_phy_reg(pi,
26111 NPHY_IqestipwrAccHi(core)) << 16)
26112 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26113 est[core].q_pwr =
26114 (read_phy_reg(pi,
26115 NPHY_IqestqpwrAccHi(core)) << 16)
26116 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26117 est[core].iq_prod =
26118 (read_phy_reg(pi,
26119 NPHY_IqestIqAccHi(core)) << 16) |
26120 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26121 }
26122 }
26123}
26124
26125#define CAL_RETRY_CNT 2
26126static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26127{
26128 u8 curr_core;
26129 struct phy_iq_est est[PHY_CORE_MAX];
26130 struct nphy_iq_comp old_comp, new_comp;
26131 s32 iq = 0;
26132 u32 ii = 0, qq = 0;
26133 s16 iq_nbits, qq_nbits, brsh, arsh;
26134 s32 a, b, temp;
26135 int bcmerror = 0;
26136 uint cal_retry = 0;
26137
26138 if (core_mask == 0x0)
26139 return;
26140
26141 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26142 new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26143 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26144
26145cal_try:
26146 wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26147
26148 new_comp = old_comp;
26149
26150 for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26151
26152 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26153 iq = est[curr_core].iq_prod;
26154 ii = est[curr_core].i_pwr;
26155 qq = est[curr_core].q_pwr;
26156 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26157 iq = est[curr_core].iq_prod;
26158 ii = est[curr_core].i_pwr;
26159 qq = est[curr_core].q_pwr;
26160 } else {
26161 continue;
26162 }
26163
26164 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26165 bcmerror = -EBADE;
26166 break;
26167 }
26168
26169 iq_nbits = wlc_phy_nbits(iq);
26170 qq_nbits = wlc_phy_nbits(qq);
26171
26172 arsh = 10 - (30 - iq_nbits);
26173 if (arsh >= 0) {
26174 a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26175 temp = (s32) (ii >> arsh);
26176 if (temp == 0) {
26177 bcmerror = -EBADE;
26178 break;
26179 }
26180 } else {
26181 a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26182 temp = (s32) (ii << -arsh);
26183 if (temp == 0) {
26184 bcmerror = -EBADE;
26185 break;
26186 }
26187 }
26188
26189 a /= temp;
26190
26191 brsh = qq_nbits - 31 + 20;
26192 if (brsh >= 0) {
26193 b = (qq << (31 - qq_nbits));
26194 temp = (s32) (ii >> brsh);
26195 if (temp == 0) {
26196 bcmerror = -EBADE;
26197 break;
26198 }
26199 } else {
26200 b = (qq << (31 - qq_nbits));
26201 temp = (s32) (ii << -brsh);
26202 if (temp == 0) {
26203 bcmerror = -EBADE;
26204 break;
26205 }
26206 }
26207 b /= temp;
26208 b -= a * a;
26209 b = (s32) int_sqrt((unsigned long) b);
26210 b -= (1 << 10);
26211
26212 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26213 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26214 new_comp.a0 = (s16) a & 0x3ff;
26215 new_comp.b0 = (s16) b & 0x3ff;
26216 } else {
26217
26218 new_comp.a0 = (s16) b & 0x3ff;
26219 new_comp.b0 = (s16) a & 0x3ff;
26220 }
26221 }
26222 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26223 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26224 new_comp.a1 = (s16) a & 0x3ff;
26225 new_comp.b1 = (s16) b & 0x3ff;
26226 } else {
26227
26228 new_comp.a1 = (s16) b & 0x3ff;
26229 new_comp.b1 = (s16) a & 0x3ff;
26230 }
26231 }
26232 }
26233
26234 if (bcmerror != 0) {
18aad4f8 26235 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
5b435de0
AS
26236
26237 if (cal_retry < CAL_RETRY_CNT) {
26238 cal_retry++;
26239 goto cal_try;
26240 }
26241
26242 new_comp = old_comp;
26243 }
26244
26245 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26246}
26247
26248static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26249{
26250 u16 offtune_val;
26251 u16 bias_g = 0;
26252 u16 bias_a = 0;
26253
26254 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26255 if (rx_core == PHY_CORE_0) {
26256 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26257 pi->tx_rx_cal_radio_saveregs[0] =
26258 read_radio_reg(pi,
26259 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26260 pi->tx_rx_cal_radio_saveregs[1] =
26261 read_radio_reg(pi,
26262 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26263
26264 write_radio_reg(pi,
26265 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26266 0x3);
26267 write_radio_reg(pi,
26268 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26269 0xaf);
26270
26271 } else {
26272 pi->tx_rx_cal_radio_saveregs[0] =
26273 read_radio_reg(pi,
26274 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26275 pi->tx_rx_cal_radio_saveregs[1] =
26276 read_radio_reg(pi,
26277 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26278
26279 write_radio_reg(
26280 pi,
26281 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26282 0x3);
26283 write_radio_reg(
26284 pi,
26285 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26286 0x7f);
26287 }
26288
26289 } else {
26290 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26291 pi->tx_rx_cal_radio_saveregs[0] =
26292 read_radio_reg(pi,
26293 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26294 pi->tx_rx_cal_radio_saveregs[1] =
26295 read_radio_reg(pi,
26296 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26297
26298 write_radio_reg(
26299 pi,
26300 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26301 0x3);
26302 write_radio_reg(
26303 pi,
26304 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26305 0xaf);
26306
26307 } else {
26308 pi->tx_rx_cal_radio_saveregs[0] =
26309 read_radio_reg(pi,
26310 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26311 pi->tx_rx_cal_radio_saveregs[1] =
26312 read_radio_reg(pi,
26313 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26314
26315 write_radio_reg(pi,
26316 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26317 0x3);
26318 write_radio_reg(pi,
26319 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26320 0x7f);
26321 }
26322 }
26323
26324 } else {
26325 if (rx_core == PHY_CORE_0) {
26326 pi->tx_rx_cal_radio_saveregs[0] =
26327 read_radio_reg(pi,
26328 RADIO_2056_TX_RXIQCAL_TXMUX |
26329 RADIO_2056_TX1);
26330 pi->tx_rx_cal_radio_saveregs[1] =
26331 read_radio_reg(pi,
26332 RADIO_2056_RX_RXIQCAL_RXMUX |
26333 RADIO_2056_RX0);
26334
26335 if (pi->pubpi.radiorev >= 5) {
26336 pi->tx_rx_cal_radio_saveregs[2] =
26337 read_radio_reg(pi,
26338 RADIO_2056_RX_RXSPARE2 |
26339 RADIO_2056_RX0);
26340 pi->tx_rx_cal_radio_saveregs[3] =
26341 read_radio_reg(pi,
26342 RADIO_2056_TX_TXSPARE2 |
26343 RADIO_2056_TX1);
26344 }
26345
26346 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26347
26348 if (pi->pubpi.radiorev >= 5) {
26349 pi->tx_rx_cal_radio_saveregs[4] =
26350 read_radio_reg(pi,
26351 RADIO_2056_RX_LNAA_MASTER
26352 | RADIO_2056_RX0);
26353
26354 write_radio_reg(
26355 pi,
26356 RADIO_2056_RX_LNAA_MASTER
26357 | RADIO_2056_RX0, 0x40);
26358
26359 write_radio_reg(pi,
26360 RADIO_2056_TX_TXSPARE2 |
26361 RADIO_2056_TX1, bias_a);
26362
26363 write_radio_reg(pi,
26364 RADIO_2056_RX_RXSPARE2 |
26365 RADIO_2056_RX0, bias_a);
26366 } else {
26367 pi->tx_rx_cal_radio_saveregs[4] =
26368 read_radio_reg(pi,
26369 RADIO_2056_RX_LNAA_TUNE
26370 | RADIO_2056_RX0);
26371
26372 offtune_val =
26373 (pi->tx_rx_cal_radio_saveregs
26374 [2] & 0xF0) >> 8;
26375 offtune_val =
26376 (offtune_val <= 0x7) ? 0xF : 0;
26377
26378 mod_radio_reg(pi,
26379 RADIO_2056_RX_LNAA_TUNE |
26380 RADIO_2056_RX0, 0xF0,
26381 (offtune_val << 8));
26382 }
26383
26384 write_radio_reg(pi,
26385 RADIO_2056_TX_RXIQCAL_TXMUX |
26386 RADIO_2056_TX1, 0x9);
26387 write_radio_reg(pi,
26388 RADIO_2056_RX_RXIQCAL_RXMUX |
26389 RADIO_2056_RX0, 0x9);
26390 } else {
26391 if (pi->pubpi.radiorev >= 5) {
26392 pi->tx_rx_cal_radio_saveregs[4] =
26393 read_radio_reg(
26394 pi,
26395 RADIO_2056_RX_LNAG_MASTER
26396 | RADIO_2056_RX0);
26397
26398 write_radio_reg(
26399 pi,
26400 RADIO_2056_RX_LNAG_MASTER
26401 | RADIO_2056_RX0, 0x40);
26402
26403 write_radio_reg(
26404 pi,
26405 RADIO_2056_TX_TXSPARE2
26406 |
26407 RADIO_2056_TX1, bias_g);
26408
26409 write_radio_reg(
26410 pi,
26411 RADIO_2056_RX_RXSPARE2
26412 |
26413 RADIO_2056_RX0, bias_g);
26414
26415 } else {
26416 pi->tx_rx_cal_radio_saveregs[4] =
26417 read_radio_reg(
26418 pi,
26419 RADIO_2056_RX_LNAG_TUNE
26420 | RADIO_2056_RX0);
26421
26422 offtune_val =
26423 (pi->
26424 tx_rx_cal_radio_saveregs[2] &
26425 0xF0) >> 8;
26426 offtune_val =
26427 (offtune_val <= 0x7) ? 0xF : 0;
26428
26429 mod_radio_reg(pi,
26430 RADIO_2056_RX_LNAG_TUNE |
26431 RADIO_2056_RX0, 0xF0,
26432 (offtune_val << 8));
26433 }
26434
26435 write_radio_reg(pi,
26436 RADIO_2056_TX_RXIQCAL_TXMUX |
26437 RADIO_2056_TX1, 0x6);
26438 write_radio_reg(pi,
26439 RADIO_2056_RX_RXIQCAL_RXMUX |
26440 RADIO_2056_RX0, 0x6);
26441 }
26442
26443 } else {
26444 pi->tx_rx_cal_radio_saveregs[0] =
26445 read_radio_reg(pi,
26446 RADIO_2056_TX_RXIQCAL_TXMUX |
26447 RADIO_2056_TX0);
26448 pi->tx_rx_cal_radio_saveregs[1] =
26449 read_radio_reg(pi,
26450 RADIO_2056_RX_RXIQCAL_RXMUX |
26451 RADIO_2056_RX1);
26452
26453 if (pi->pubpi.radiorev >= 5) {
26454 pi->tx_rx_cal_radio_saveregs[2] =
26455 read_radio_reg(pi,
26456 RADIO_2056_RX_RXSPARE2 |
26457 RADIO_2056_RX1);
26458 pi->tx_rx_cal_radio_saveregs[3] =
26459 read_radio_reg(pi,
26460 RADIO_2056_TX_TXSPARE2 |
26461 RADIO_2056_TX0);
26462 }
26463
26464 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26465
26466 if (pi->pubpi.radiorev >= 5) {
26467 pi->tx_rx_cal_radio_saveregs[4] =
26468 read_radio_reg(
26469 pi,
26470 RADIO_2056_RX_LNAA_MASTER
26471 | RADIO_2056_RX1);
26472
26473 write_radio_reg(
26474 pi,
26475 RADIO_2056_RX_LNAA_MASTER |
26476 RADIO_2056_RX1, 0x40);
26477
26478 write_radio_reg(
26479 pi,
26480 RADIO_2056_TX_TXSPARE2
26481 |
26482 RADIO_2056_TX0, bias_a);
26483
26484 write_radio_reg(
26485 pi,
26486 RADIO_2056_RX_RXSPARE2
26487 |
26488 RADIO_2056_RX1, bias_a);
26489 } else {
26490 pi->tx_rx_cal_radio_saveregs[4] =
26491 read_radio_reg(
26492 pi,
26493 RADIO_2056_RX_LNAA_TUNE
26494 | RADIO_2056_RX1);
26495
26496 offtune_val =
26497 (pi->
26498 tx_rx_cal_radio_saveregs[2] &
26499 0xF0) >> 8;
26500 offtune_val =
26501 (offtune_val <= 0x7) ? 0xF : 0;
26502
26503 mod_radio_reg(pi,
26504 RADIO_2056_RX_LNAA_TUNE |
26505 RADIO_2056_RX1, 0xF0,
26506 (offtune_val << 8));
26507 }
26508
26509 write_radio_reg(pi,
26510 RADIO_2056_TX_RXIQCAL_TXMUX |
26511 RADIO_2056_TX0, 0x9);
26512 write_radio_reg(pi,
26513 RADIO_2056_RX_RXIQCAL_RXMUX |
26514 RADIO_2056_RX1, 0x9);
26515 } else {
26516 if (pi->pubpi.radiorev >= 5) {
26517 pi->tx_rx_cal_radio_saveregs[4] =
26518 read_radio_reg(
26519 pi,
26520 RADIO_2056_RX_LNAG_MASTER
26521 | RADIO_2056_RX1);
26522
26523 write_radio_reg(
26524 pi,
26525 RADIO_2056_RX_LNAG_MASTER
26526 | RADIO_2056_RX1, 0x40);
26527
26528 write_radio_reg(
26529 pi,
26530 RADIO_2056_TX_TXSPARE2
26531 |
26532 RADIO_2056_TX0, bias_g);
26533
26534 write_radio_reg(
26535 pi,
26536 RADIO_2056_RX_RXSPARE2
26537 |
26538 RADIO_2056_RX1, bias_g);
26539 } else {
26540 pi->tx_rx_cal_radio_saveregs[4] =
26541 read_radio_reg(
26542 pi,
26543 RADIO_2056_RX_LNAG_TUNE
26544 | RADIO_2056_RX1);
26545
26546 offtune_val =
26547 (pi->
26548 tx_rx_cal_radio_saveregs[2] &
26549 0xF0) >> 8;
26550 offtune_val =
26551 (offtune_val <= 0x7) ? 0xF : 0;
26552
26553 mod_radio_reg(pi,
26554 RADIO_2056_RX_LNAG_TUNE |
26555 RADIO_2056_RX1, 0xF0,
26556 (offtune_val << 8));
26557 }
26558
26559 write_radio_reg(pi,
26560 RADIO_2056_TX_RXIQCAL_TXMUX |
26561 RADIO_2056_TX0, 0x6);
26562 write_radio_reg(pi,
26563 RADIO_2056_RX_RXIQCAL_RXMUX |
26564 RADIO_2056_RX1, 0x6);
26565 }
26566 }
26567 }
26568}
26569
26570static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26571{
26572 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26573 if (rx_core == PHY_CORE_0) {
26574 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26575 write_radio_reg(
26576 pi,
26577 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26578 pi->
26579 tx_rx_cal_radio_saveregs[0]);
26580 write_radio_reg(
26581 pi,
26582 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26583 pi->
26584 tx_rx_cal_radio_saveregs[1]);
26585
26586 } else {
26587 write_radio_reg(
26588 pi,
26589 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26590 pi->
26591 tx_rx_cal_radio_saveregs[0]);
26592 write_radio_reg(
26593 pi,
26594 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26595 pi->
26596 tx_rx_cal_radio_saveregs[1]);
26597 }
26598
26599 } else {
26600 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26601 write_radio_reg(
26602 pi,
26603 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26604 pi->
26605 tx_rx_cal_radio_saveregs[0]);
26606 write_radio_reg(
26607 pi,
26608 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26609 pi->
26610 tx_rx_cal_radio_saveregs[1]);
26611
26612 } else {
26613 write_radio_reg(
26614 pi,
26615 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26616 pi->
26617 tx_rx_cal_radio_saveregs[0]);
26618 write_radio_reg(
26619 pi,
26620 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26621 pi->
26622 tx_rx_cal_radio_saveregs[1]);
26623 }
26624 }
26625
26626 } else {
26627 if (rx_core == PHY_CORE_0) {
26628 write_radio_reg(pi,
26629 RADIO_2056_TX_RXIQCAL_TXMUX |
26630 RADIO_2056_TX1,
26631 pi->tx_rx_cal_radio_saveregs[0]);
26632
26633 write_radio_reg(pi,
26634 RADIO_2056_RX_RXIQCAL_RXMUX |
26635 RADIO_2056_RX0,
26636 pi->tx_rx_cal_radio_saveregs[1]);
26637
26638 if (pi->pubpi.radiorev >= 5) {
26639 write_radio_reg(pi,
26640 RADIO_2056_RX_RXSPARE2 |
26641 RADIO_2056_RX0,
26642 pi->
26643 tx_rx_cal_radio_saveregs[2]);
26644
26645 write_radio_reg(pi,
26646 RADIO_2056_TX_TXSPARE2 |
26647 RADIO_2056_TX1,
26648 pi->
26649 tx_rx_cal_radio_saveregs[3]);
26650 }
26651
26652 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26653 if (pi->pubpi.radiorev >= 5)
26654 write_radio_reg(
26655 pi,
26656 RADIO_2056_RX_LNAA_MASTER
26657 | RADIO_2056_RX0,
26658 pi->
26659 tx_rx_cal_radio_saveregs
26660 [4]);
26661 else
26662 write_radio_reg(
26663 pi,
26664 RADIO_2056_RX_LNAA_TUNE
26665 | RADIO_2056_RX0,
26666 pi->
26667 tx_rx_cal_radio_saveregs
26668 [4]);
26669 } else {
26670 if (pi->pubpi.radiorev >= 5)
26671 write_radio_reg(
26672 pi,
26673 RADIO_2056_RX_LNAG_MASTER
26674 | RADIO_2056_RX0,
26675 pi->
26676 tx_rx_cal_radio_saveregs
26677 [4]);
26678 else
26679 write_radio_reg(
26680 pi,
26681 RADIO_2056_RX_LNAG_TUNE
26682 | RADIO_2056_RX0,
26683 pi->
26684 tx_rx_cal_radio_saveregs
26685 [4]);
26686 }
26687
26688 } else {
26689 write_radio_reg(pi,
26690 RADIO_2056_TX_RXIQCAL_TXMUX |
26691 RADIO_2056_TX0,
26692 pi->tx_rx_cal_radio_saveregs[0]);
26693
26694 write_radio_reg(pi,
26695 RADIO_2056_RX_RXIQCAL_RXMUX |
26696 RADIO_2056_RX1,
26697 pi->tx_rx_cal_radio_saveregs[1]);
26698
26699 if (pi->pubpi.radiorev >= 5) {
26700 write_radio_reg(pi,
26701 RADIO_2056_RX_RXSPARE2 |
26702 RADIO_2056_RX1,
26703 pi->
26704 tx_rx_cal_radio_saveregs[2]);
26705
26706 write_radio_reg(pi,
26707 RADIO_2056_TX_TXSPARE2 |
26708 RADIO_2056_TX0,
26709 pi->
26710 tx_rx_cal_radio_saveregs[3]);
26711 }
26712
26713 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26714 if (pi->pubpi.radiorev >= 5)
26715 write_radio_reg(
26716 pi,
26717 RADIO_2056_RX_LNAA_MASTER
26718 | RADIO_2056_RX1,
26719 pi->
26720 tx_rx_cal_radio_saveregs
26721 [4]);
26722 else
26723 write_radio_reg(
26724 pi,
26725 RADIO_2056_RX_LNAA_TUNE
26726 | RADIO_2056_RX1,
26727 pi->
26728 tx_rx_cal_radio_saveregs
26729 [4]);
26730 } else {
26731 if (pi->pubpi.radiorev >= 5)
26732 write_radio_reg(
26733 pi,
26734 RADIO_2056_RX_LNAG_MASTER
26735 | RADIO_2056_RX1,
26736 pi->
26737 tx_rx_cal_radio_saveregs
26738 [4]);
26739 else
26740 write_radio_reg(
26741 pi,
26742 RADIO_2056_RX_LNAG_TUNE
26743 | RADIO_2056_RX1,
26744 pi->
26745 tx_rx_cal_radio_saveregs
26746 [4]);
26747 }
26748 }
26749 }
26750}
26751
26752static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26753{
26754 u8 tx_core;
26755 u16 rx_antval, tx_antval;
26756
26757 if (NREV_GE(pi->pubpi.phy_rev, 7))
26758 tx_core = rx_core;
26759 else
26760 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26761
26762 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26763 pi->tx_rx_cal_phy_saveregs[1] =
26764 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26765 pi->tx_rx_cal_phy_saveregs[2] =
26766 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26767 pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26768 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26769 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26770 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26771 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26772 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26773 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26774 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26775 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26776 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26777 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26778 }
26779
26780 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26781 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26782 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26783 0x29b, (0x1 << 0), (0) << 0);
26784
26785 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26786 0x29b, (0x1 << 0), (0) << 0);
26787
26788 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26789
26790 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26791
26792 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26793
26794 } else {
26795
26796 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26797 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26798 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26799 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26800 }
26801
26802 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26803 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26804 (0x1 << 2), (0x1 << 2));
26805 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26806 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26807 (0x1 << 0) | (0x1 << 1), 0);
26808 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26809 0x8f : 0xa5,
26810 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26811 }
26812
26813 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26814 RADIO_MIMO_CORESEL_CORE1 |
26815 RADIO_MIMO_CORESEL_CORE2);
26816
26817 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26818 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26819 0, 0, 0,
26820 NPHY_REV7_RFCTRLOVERRIDE_ID0);
26821 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26822 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26823 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26824 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26825 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26826 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26827 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26828 NPHY_REV7_RFCTRLOVERRIDE_ID2);
26829 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26830 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26831 if (CHSPEC_IS40(pi->radio_chanspec))
26832 wlc_phy_rfctrl_override_nphy_rev7(
26833 pi,
26834 (0x1 << 7),
26835 2, 0, 0,
26836 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26837 else
26838 wlc_phy_rfctrl_override_nphy_rev7(
26839 pi,
26840 (0x1 << 7),
26841 0, 0, 0,
26842 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26843
26844 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26845 0, 0, 0,
26846 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26847 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26848 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26849 } else {
26850 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26851 }
26852
26853 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26854
26855 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26856
26857 wlc_phy_rfctrlintc_override_nphy(pi,
26858 NPHY_RfctrlIntc_override_TRSW,
26859 0x1, rx_core + 1);
26860 } else {
26861
26862 if (rx_core == PHY_CORE_0) {
26863 rx_antval = 0x1;
26864 tx_antval = 0x8;
26865 } else {
26866 rx_antval = 0x4;
26867 tx_antval = 0x2;
26868 }
26869
26870 wlc_phy_rfctrlintc_override_nphy(pi,
26871 NPHY_RfctrlIntc_override_TRSW,
26872 rx_antval, rx_core + 1);
26873 wlc_phy_rfctrlintc_override_nphy(pi,
26874 NPHY_RfctrlIntc_override_TRSW,
26875 tx_antval, tx_core + 1);
26876 }
26877}
26878
26879static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26880{
26881
26882 write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26883 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26884 pi->tx_rx_cal_phy_saveregs[1]);
26885 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26886 pi->tx_rx_cal_phy_saveregs[2]);
26887 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26888 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26889
26890 write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26891 write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26892 write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26893 write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26894 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26895 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26896 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26897 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26898 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26899 }
26900
26901 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26902 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26903}
26904
26905static void
26906wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26907 u16 *rxgain, u8 cal_type)
26908{
26909
26910 u16 num_samps;
26911 struct phy_iq_est est[PHY_CORE_MAX];
26912 u8 tx_core;
26913 struct nphy_iq_comp save_comp, zero_comp;
26914 u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26915 thresh_pwr = 10000;
26916 s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26917 bool gainctrl_done = false;
26918 u8 mix_tia_gain = 3;
26919 s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26920 s8 curr_gaintbl_index = 3;
26921 u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26922 const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26923 u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26924 int fine_gain_idx;
26925 s8 txpwrindex;
26926 u16 nphy_rxcal_txgain[2];
26927
26928 if (NREV_GE(pi->pubpi.phy_rev, 7))
26929 tx_core = rx_core;
26930 else
26931 tx_core = 1 - rx_core;
26932
26933 num_samps = 1024;
6b128a01 26934 desired_log2_pwr = 13;
5b435de0
AS
26935
26936 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26937 zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26938 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26939
26940 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26941 if (NREV_GE(pi->pubpi.phy_rev, 7))
26942 mix_tia_gain = 3;
26943 else if (NREV_GE(pi->pubpi.phy_rev, 4))
26944 mix_tia_gain = 4;
26945 else
26946 mix_tia_gain = 6;
26947 if (NREV_GE(pi->pubpi.phy_rev, 7))
26948 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26949 else
26950 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26951 } else {
26952 if (NREV_GE(pi->pubpi.phy_rev, 7))
26953 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26954 else
26955 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26956 }
26957
26958 do {
26959
26960 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26961 0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26962 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26963 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26964 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26965 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26966 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26967
26968 if (NREV_GE(pi->pubpi.phy_rev, 7))
26969 wlc_phy_rfctrl_override_1tomany_nphy(
26970 pi,
26971 NPHY_REV7_RfctrlOverride_cmd_rxgain,
26972 ((lpf_biq1 << 12) |
26973 (lpf_biq0 << 8) |
26974 (mix_tia_gain << 4) | (lna2 << 2)
26975 | lna1), 0x3, 0);
26976 else
26977 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26978 ((hpvga << 12) |
26979 (lpf_biq1 << 10) |
26980 (lpf_biq0 << 8) |
26981 (mix_tia_gain << 4) |
26982 (lna2 << 2) | lna1), 0x3,
26983 0);
26984
26985 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26986
26987 if (txpwrindex == -1) {
26988 nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26989 nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26990 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26991 2, 0x110, 16,
26992 nphy_rxcal_txgain);
26993 } else {
26994 wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26995 false);
26996 }
26997
26998 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26999 NPHY_RXCAL_TONEFREQ_40MHz :
27000 NPHY_RXCAL_TONEFREQ_20MHz,
27001 NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27002
27003 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27004 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27005 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27006 curr_pwr = i_pwr + q_pwr;
27007
27008 switch (gainctrl_dirn) {
27009 case NPHY_RXCAL_GAIN_INIT:
27010 if (curr_pwr > thresh_pwr) {
27011 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27012 prev_gaintbl_index = curr_gaintbl_index;
27013 curr_gaintbl_index--;
27014 } else {
27015 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27016 prev_gaintbl_index = curr_gaintbl_index;
27017 curr_gaintbl_index++;
27018 }
27019 break;
27020
27021 case NPHY_RXCAL_GAIN_UP:
27022 if (curr_pwr > thresh_pwr) {
27023 gainctrl_done = true;
27024 optim_pwr = prev_pwr;
27025 optim_gaintbl_index = prev_gaintbl_index;
27026 } else {
27027 prev_gaintbl_index = curr_gaintbl_index;
27028 curr_gaintbl_index++;
27029 }
27030 break;
27031
27032 case NPHY_RXCAL_GAIN_DOWN:
27033 if (curr_pwr > thresh_pwr) {
27034 prev_gaintbl_index = curr_gaintbl_index;
27035 curr_gaintbl_index--;
27036 } else {
27037 gainctrl_done = true;
27038 optim_pwr = curr_pwr;
27039 optim_gaintbl_index = curr_gaintbl_index;
27040 }
27041 break;
27042
27043 default:
27044 break;
27045 }
27046
27047 if ((curr_gaintbl_index < 0) ||
27048 (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27049 gainctrl_done = true;
27050 optim_pwr = curr_pwr;
27051 optim_gaintbl_index = prev_gaintbl_index;
27052 } else {
27053 prev_pwr = curr_pwr;
27054 }
27055
27056 wlc_phy_stopplayback_nphy(pi);
27057 } while (!gainctrl_done);
27058
27059 hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27060 lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27061 lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27062 lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27063 lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27064 txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27065
27066 actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27067 delta_pwr = desired_log2_pwr - actual_log2_pwr;
27068
27069 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27070 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27071
27072 if (fine_gain_idx + (int)lpf_biq0 > 10)
27073 lpf_biq1 = 10 - lpf_biq0;
27074 else
27075 lpf_biq1 = (u16) max(fine_gain_idx, 0);
27076
27077 wlc_phy_rfctrl_override_1tomany_nphy(
27078 pi,
27079 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27080 ((lpf_biq1 << 12) |
27081 (lpf_biq0 << 8) |
27082 (mix_tia_gain << 4) |
27083 (lna2 << 2) | lna1), 0x3,
27084 0);
27085 } else {
27086 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27087 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27088 ((hpvga << 12) |
27089 (lpf_biq1 << 10) |
27090 (lpf_biq0 << 8) |
27091 (mix_tia_gain << 4) |
27092 (lna2 << 2) |
27093 lna1), 0x3, 0);
27094 }
27095
27096 if (rxgain != NULL) {
27097 *rxgain++ = lna1;
27098 *rxgain++ = lna2;
27099 *rxgain++ = mix_tia_gain;
27100 *rxgain++ = lpf_biq0;
27101 *rxgain++ = lpf_biq1;
27102 *rxgain = hpvga;
27103 }
27104
27105 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27106}
27107
27108static void
27109wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27110 u8 cal_type)
27111{
27112 wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27113}
27114
27115static u8
27116wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27117{
27118 u32 target_bws[2] = { 9500, 21000 };
27119 u32 ref_tones[2] = { 3000, 6000 };
27120 u32 target_bw, ref_tone;
27121
27122 u32 target_pwr_ratios[2] = { 28606, 18468 };
27123 u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27124
27125 u16 start_rccal_ovr_val = 128;
27126 u16 txlpf_rccal_lpc_ovr_val = 128;
27127 u16 rxlpf_rccal_hpc_ovr_val = 159;
27128
27129 u16 orig_txlpf_rccal_lpc_ovr_val;
27130 u16 orig_rxlpf_rccal_hpc_ovr_val;
27131 u16 radio_addr_offset_rx;
27132 u16 radio_addr_offset_tx;
27133 u16 orig_dcBypass;
27134 u16 orig_RxStrnFilt40Num[6];
27135 u16 orig_RxStrnFilt40Den[4];
27136 u16 orig_rfctrloverride[2];
27137 u16 orig_rfctrlauxreg[2];
27138 u16 orig_rfctrlrssiothers;
27139 u16 tx_lpf_bw = 4;
27140
27141 u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27142 u16 lpf_hpc = 7, hpvga_hpc = 7;
27143
27144 s8 rccal_stepsize;
27145 u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27146 u32 ref_iq_vals = 0, target_iq_vals = 0;
27147 u16 num_samps, log_num_samps = 10;
27148 struct phy_iq_est est[PHY_CORE_MAX];
27149
27150 if (NREV_GE(pi->pubpi.phy_rev, 7))
27151 return 0;
27152
27153 num_samps = (1 << log_num_samps);
27154
27155 if (CHSPEC_IS40(pi->radio_chanspec)) {
27156 target_bw = target_bws[1];
27157 target_pwr_ratio = target_pwr_ratios[1];
27158 ref_tone = ref_tones[1];
27159 rx_lpf_bw = rx_lpf_bws[1];
27160 } else {
27161 target_bw = target_bws[0];
27162 target_pwr_ratio = target_pwr_ratios[0];
27163 ref_tone = ref_tones[0];
27164 rx_lpf_bw = rx_lpf_bws[0];
27165 }
27166
27167 if (core_idx == 0) {
27168 radio_addr_offset_rx = RADIO_2056_RX0;
27169 radio_addr_offset_tx =
27170 (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27171 } else {
27172 radio_addr_offset_rx = RADIO_2056_RX1;
27173 radio_addr_offset_tx =
27174 (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27175 }
27176
27177 orig_txlpf_rccal_lpc_ovr_val =
27178 read_radio_reg(pi,
27179 (RADIO_2056_TX_TXLPF_RCCAL |
27180 radio_addr_offset_tx));
27181 orig_rxlpf_rccal_hpc_ovr_val =
27182 read_radio_reg(pi,
27183 (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27184 radio_addr_offset_rx));
27185
27186 orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27187
27188 orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27189 orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27190 orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27191 orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27192 orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27193 orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27194 orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27195 orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27196 orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27197 orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27198
27199 orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27200 orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27201 orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27202 orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27203 orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27204
27205 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27206 txlpf_rccal_lpc_ovr_val);
27207
27208 write_radio_reg(pi,
27209 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27210 rxlpf_rccal_hpc_ovr_val);
27211
27212 mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27213
27214 write_phy_reg(pi, 0x267, 0x02d4);
27215 write_phy_reg(pi, 0x268, 0x0000);
27216 write_phy_reg(pi, 0x269, 0x0000);
27217 write_phy_reg(pi, 0x26a, 0x0000);
27218 write_phy_reg(pi, 0x26b, 0x0000);
27219 write_phy_reg(pi, 0x26c, 0x02d4);
27220 write_phy_reg(pi, 0x26d, 0x0000);
27221 write_phy_reg(pi, 0x26e, 0x0000);
27222 write_phy_reg(pi, 0x26f, 0x0000);
27223 write_phy_reg(pi, 0x270, 0x0000);
27224
27225 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27226 or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27227 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27228 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27229
27230 mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27231 (0x7 << 10), (tx_lpf_bw << 10));
27232 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27233 (0x7 << 0), (hpvga_hpc << 0));
27234 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27235 (0x7 << 4), (lpf_hpc << 4));
27236 mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27237 (0x7 << 8), (rx_lpf_bw << 8));
27238
27239 rccal_stepsize = 16;
27240 rccal_val = start_rccal_ovr_val + rccal_stepsize;
27241
27242 while (rccal_stepsize >= 0) {
27243 write_radio_reg(pi,
27244 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27245 radio_addr_offset_rx), rccal_val);
27246
27247 if (rccal_stepsize == 16) {
27248
27249 wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27250 0, 1, false);
27251 udelay(2);
27252
27253 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27254
27255 if (core_idx == 0)
27256 ref_iq_vals =
27257 max_t(u32, (est[0].i_pwr +
27258 est[0].q_pwr) >>
27259 (log_num_samps + 1),
27260 1);
27261 else
27262 ref_iq_vals =
27263 max_t(u32, (est[1].i_pwr +
27264 est[1].q_pwr) >>
27265 (log_num_samps + 1),
27266 1);
27267
27268 wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27269 0, 1, false);
27270 udelay(2);
27271 }
27272
27273 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27274
27275 if (core_idx == 0)
27276 target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27277 (log_num_samps + 1);
27278 else
27279 target_iq_vals =
27280 (est[1].i_pwr +
27281 est[1].q_pwr) >> (log_num_samps + 1);
27282
27283 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27284
27285 if (rccal_stepsize == 0)
27286 rccal_stepsize--;
27287 else if (rccal_stepsize == 1) {
27288 last_rccal_val = rccal_val;
27289 rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27290 last_pwr_ratio = pwr_ratio;
27291 rccal_stepsize--;
27292 } else {
27293 rccal_stepsize = (rccal_stepsize >> 1);
27294 rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27295 rccal_stepsize : (-rccal_stepsize));
27296 }
27297
27298 if (rccal_stepsize == -1) {
27299 best_rccal_val =
27300 (abs((int)last_pwr_ratio -
27301 (int)target_pwr_ratio) <
27302 abs((int)pwr_ratio -
27303 (int)target_pwr_ratio)) ? last_rccal_val :
27304 rccal_val;
27305
27306 if (CHSPEC_IS40(pi->radio_chanspec)) {
27307 if ((best_rccal_val > 140)
27308 || (best_rccal_val < 135))
27309 best_rccal_val = 138;
27310 } else {
27311 if ((best_rccal_val > 142)
27312 || (best_rccal_val < 137))
27313 best_rccal_val = 140;
27314 }
27315
27316 write_radio_reg(pi,
27317 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27318 radio_addr_offset_rx), best_rccal_val);
27319 }
27320 }
27321
27322 wlc_phy_stopplayback_nphy(pi);
27323
27324 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27325 orig_txlpf_rccal_lpc_ovr_val);
27326 write_radio_reg(pi,
27327 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27328 orig_rxlpf_rccal_hpc_ovr_val);
27329
27330 mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27331
27332 write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27333 write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27334 write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27335 write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27336 write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27337 write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27338 write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27339 write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27340 write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27341 write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27342
27343 write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27344 write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27345 write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27346 write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27347 write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27348
27349 pi->nphy_anarxlpf_adjusted = false;
27350
27351 return best_rccal_val - 0x80;
27352}
27353
27354#define WAIT_FOR_SCOPE 4000
27355static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27356 struct nphy_txgains target_gain,
27357 u8 cal_type, bool debug)
27358{
27359 u16 orig_BBConfig;
27360 u8 core_no, rx_core;
27361 u8 best_rccal[2];
27362 u16 gain_save[2];
27363 u16 cal_gain[2];
27364 struct nphy_iqcal_params cal_params[2];
27365 u8 rxcore_state;
27366 s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27367 s8 txlpf_idac;
27368 bool phyhang_avoid_state = false;
27369 bool skip_rxiqcal = false;
27370
27371 orig_BBConfig = read_phy_reg(pi, 0x01);
27372 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27373
27374 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27375
27376 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27377 phyhang_avoid_state = pi->phyhang_avoid;
27378 pi->phyhang_avoid = false;
27379 }
27380
27381 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27382
27383 for (core_no = 0; core_no <= 1; core_no++) {
27384 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27385 &cal_params[core_no]);
27386 cal_gain[core_no] = cal_params[core_no].cal_gain;
27387 }
27388
27389 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27390
27391 rxcore_state = wlc_phy_rxcore_getstate_nphy(
27392 (struct brcms_phy_pub *) pi);
27393
27394 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27395
27396 skip_rxiqcal =
27397 ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27398
27399 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27400
27401 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27402
27403 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27404
27405 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27406
27407 wlc_phy_tx_tone_nphy(pi,
27408 (CHSPEC_IS40(
27409 pi->radio_chanspec)) ?
27410 NPHY_RXCAL_TONEFREQ_40MHz :
27411 NPHY_RXCAL_TONEFREQ_20MHz,
27412 NPHY_RXCAL_TONEAMP, 0, cal_type,
27413 false);
27414
27415 if (debug)
27416 mdelay(WAIT_FOR_SCOPE);
27417
27418 wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27419 wlc_phy_stopplayback_nphy(pi);
27420 }
27421
27422 if (((cal_type == 1) || (cal_type == 2))
27423 && NREV_LT(pi->pubpi.phy_rev, 7)) {
27424
27425 if (rx_core == PHY_CORE_1) {
27426
27427 if (rxcore_state == 1)
27428 wlc_phy_rxcore_setstate_nphy(
27429 (struct brcms_phy_pub *) pi, 3);
27430
27431 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27432 1);
27433
27434 best_rccal[rx_core] =
27435 wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27436 pi->nphy_rccal_value = best_rccal[rx_core];
27437
27438 if (rxcore_state == 1)
27439 wlc_phy_rxcore_setstate_nphy(
27440 (struct brcms_phy_pub *) pi,
27441 rxcore_state);
27442 }
27443 }
27444
27445 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27446
27447 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27448 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27449 }
27450
27451 if ((cal_type == 1) || (cal_type == 2)) {
27452
27453 best_rccal[0] = best_rccal[1];
27454 write_radio_reg(pi,
27455 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27456 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27457
27458 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27459 rxlpf_rccal_hpc =
27460 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27461 txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27462
27463 if (PHY_IPA(pi)) {
27464 txlpf_rccal_lpc +=
27465 (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27466 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27467 0x0e : 0x13;
27468 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27469 TXLPF_IDAC_4, txlpf_idac);
27470 }
27471
27472 rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27473 0);
27474 txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27475 0);
27476
27477 write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27478 ((rx_core ==
27479 PHY_CORE_0) ? RADIO_2056_RX0 :
27480 RADIO_2056_RX1)),
27481 (rxlpf_rccal_hpc | 0x80));
27482
27483 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27484 ((rx_core ==
27485 PHY_CORE_0) ? RADIO_2056_TX0 :
27486 RADIO_2056_TX1)),
27487 (txlpf_rccal_lpc | 0x80));
27488 }
27489 }
27490
27491 write_phy_reg(pi, 0x01, orig_BBConfig);
27492
27493 wlc_phy_resetcca_nphy(pi);
27494
27495 if (NREV_GE(pi->pubpi.phy_rev, 7))
27496 wlc_phy_rfctrl_override_1tomany_nphy(
27497 pi,
27498 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27499 0, 0x3, 1);
27500 else
27501 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27502
27503 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27504
27505 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27506 gain_save);
27507
27508 if (NREV_GE(pi->pubpi.phy_rev, 4))
27509 pi->phyhang_avoid = phyhang_avoid_state;
27510
27511 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27512
27513 return 0;
27514}
27515
27516static int
27517wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27518 struct nphy_txgains target_gain, bool debug)
27519{
27520 struct phy_iq_est est[PHY_CORE_MAX];
27521 u8 core_num, rx_core, tx_core;
27522 u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27523 u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27524 u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27525 s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27526 s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27527 u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27528 u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27529 u16 num_samps;
27530 u32 i_pwr, q_pwr, tot_pwr[3];
27531 u8 gain_pass, use_hpf_num;
27532 u16 mask, val1, val2;
27533 u16 core_no;
27534 u16 gain_save[2];
27535 u16 cal_gain[2];
27536 struct nphy_iqcal_params cal_params[2];
27537 u8 phy_bw;
27538 int bcmerror = 0;
27539 bool first_playtone = true;
27540
27541 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27542
27543 if (NREV_LT(pi->pubpi.phy_rev, 2))
27544 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27545
27546 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27547
27548 for (core_no = 0; core_no <= 1; core_no++) {
27549 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27550 &cal_params[core_no]);
27551 cal_gain[core_no] = cal_params[core_no].cal_gain;
27552 }
27553
27554 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27555
27556 num_samps = 1024;
27557 desired_log2_pwr = 13;
27558
27559 for (core_num = 0; core_num < 2; core_num++) {
27560
27561 rx_core = core_num;
27562 tx_core = 1 - core_num;
27563
27564 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27565 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27566 0xa6 : 0xa7);
27567 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27568 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27569 0x91 : 0x92);
27570 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27571 0x91 : 0x92);
27572
27573 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27574 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27575
27576 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27577 ((0x1 << 1) | (0x1 << 2)));
27578 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27579
27580 if (((pi->nphy_rxcalparams) & 0xff000000))
27581 write_phy_reg(pi,
27582 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27583 (CHSPEC_IS5G(pi->radio_chanspec) ?
27584 0x140 : 0x110));
27585 else
27586 write_phy_reg(pi,
27587 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27588 (CHSPEC_IS5G(pi->radio_chanspec) ?
27589 0x180 : 0x120));
27590
27591 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27592 (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27593 0x114));
27594
27595 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27596 if (rx_core == PHY_CORE_0) {
27597 val1 = RADIO_2055_COUPLE_RX_MASK;
27598 val2 = RADIO_2055_COUPLE_TX_MASK;
27599 } else {
27600 val1 = RADIO_2055_COUPLE_TX_MASK;
27601 val2 = RADIO_2055_COUPLE_RX_MASK;
27602 }
27603
27604 if ((pi->nphy_rxcalparams & 0x10000)) {
27605 mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27606 val1);
27607 mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27608 val2);
27609 }
27610
27611 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27612
27613 if (debug)
27614 mdelay(WAIT_FOR_SCOPE);
27615
27616 if (gain_pass < 3) {
27617 curr_lna = lna_vals[gain_pass];
27618 curr_hpf1 = hpf1_vals[gain_pass];
27619 curr_hpf2 = hpf2_vals[gain_pass];
27620 } else {
27621
27622 if (tot_pwr[1] > 10000) {
27623 curr_lna = lna_vals[2];
27624 curr_hpf1 = hpf1_vals[2];
27625 curr_hpf2 = hpf2_vals[2];
27626 use_hpf_num = 1;
27627 curr_hpf = curr_hpf1;
27628 actual_log2_pwr =
27629 wlc_phy_nbits(tot_pwr[2]);
27630 } else {
27631 if (tot_pwr[0] > 10000) {
27632 curr_lna = lna_vals[1];
27633 curr_hpf1 = hpf1_vals[1];
27634 curr_hpf2 = hpf2_vals[1];
27635 use_hpf_num = 1;
27636 curr_hpf = curr_hpf1;
27637 actual_log2_pwr =
27638 wlc_phy_nbits(
27639 tot_pwr[1]);
27640 } else {
27641 curr_lna = lna_vals[0];
27642 curr_hpf1 = hpf1_vals[0];
27643 curr_hpf2 = hpf2_vals[0];
27644 use_hpf_num = 2;
27645 curr_hpf = curr_hpf2;
27646 actual_log2_pwr =
27647 wlc_phy_nbits(
27648 tot_pwr[0]);
27649 }
27650 }
27651
27652 hpf_change = desired_log2_pwr - actual_log2_pwr;
27653 curr_hpf += hpf_change;
27654 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27655 if (use_hpf_num == 1)
27656 curr_hpf1 = curr_hpf;
27657 else
27658 curr_hpf2 = curr_hpf;
27659 }
27660
27661 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27662 ((curr_hpf2 << 8) |
27663 (curr_hpf1 << 4) |
27664 (curr_lna << 2)), 0x3, 0);
27665 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27666
27667 wlc_phy_stopplayback_nphy(pi);
27668
27669 if (first_playtone) {
27670 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27671 (u16) (pi->nphy_rxcalparams &
27672 0xffff), 0, 0, true);
27673 first_playtone = false;
27674 } else {
27675 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27676 40 : 20;
27677 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27678 0, 0, 0, true);
27679 }
27680
27681 if (bcmerror == 0) {
27682 if (gain_pass < 3) {
27683
27684 wlc_phy_rx_iq_est_nphy(pi, est,
27685 num_samps, 32,
27686 0);
27687 i_pwr = (est[rx_core].i_pwr +
27688 num_samps / 2) / num_samps;
27689 q_pwr = (est[rx_core].q_pwr +
27690 num_samps / 2) / num_samps;
27691 tot_pwr[gain_pass] = i_pwr + q_pwr;
27692 } else {
27693
27694 wlc_phy_calc_rx_iq_comp_nphy(pi,
27695 (1 <<
27696 rx_core));
27697 }
27698
27699 wlc_phy_stopplayback_nphy(pi);
27700 }
27701
27702 if (bcmerror != 0)
27703 break;
27704 }
27705
27706 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27707 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27708
27709 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27710 0x92, orig_RfctrlIntcTx);
27711 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27712 0x92, orig_RfctrlIntcRx);
27713 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27714 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27715 0xa7, orig_AfectrlCore);
27716 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27717
27718 if (bcmerror != 0)
27719 break;
27720 }
27721
27722 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27723 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27724
27725 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27726 gain_save);
27727
27728 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27729
27730 return bcmerror;
27731}
27732
27733int
27734wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27735 u8 cal_type, bool debug)
27736{
27737 if (NREV_GE(pi->pubpi.phy_rev, 7))
27738 cal_type = 0;
27739
27740 if (NREV_GE(pi->pubpi.phy_rev, 3))
27741 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27742 debug);
27743 else
27744 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27745}
27746
27747void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27748{
27749 uint core;
27750 u32 txgain;
27751 u16 rad_gain, dac_gain, bbmult, m1m2;
27752 u8 txpi[2], chan_freq_range;
27753 s32 rfpwr_offset;
27754
27755 if (pi->phyhang_avoid)
27756 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27757
27758 if (pi->sh->sromrev < 4) {
27759 txpi[0] = txpi[1] = 72;
27760 } else {
27761
27762 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27763 switch (chan_freq_range) {
27764 case WL_CHAN_FREQ_RANGE_2G:
5b435de0 27765 case WL_CHAN_FREQ_RANGE_5GL:
5b435de0 27766 case WL_CHAN_FREQ_RANGE_5GM:
5b435de0 27767 case WL_CHAN_FREQ_RANGE_5GH:
32cb68bf
AS
27768 txpi[0] = 0;
27769 txpi[1] = 0;
5b435de0
AS
27770 break;
27771 default:
27772 txpi[0] = txpi[1] = 91;
27773 break;
27774 }
27775 }
27776
27777 if (NREV_GE(pi->pubpi.phy_rev, 7))
27778 txpi[0] = txpi[1] = 30;
27779 else if (NREV_GE(pi->pubpi.phy_rev, 3))
27780 txpi[0] = txpi[1] = 40;
27781
27782 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27783
27784 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27785 (txpi[1] < 40) || (txpi[1] > 100))
27786 txpi[0] = txpi[1] = 91;
27787 }
27788
27789 pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27790 pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27791 pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27792 pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27793
27794 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27795 uint phyrev = pi->pubpi.phy_rev;
27796
27797 if (NREV_GE(phyrev, 3)) {
27798 if (PHY_IPA(pi)) {
27799 u32 *tx_gaintbl =
27800 wlc_phy_get_ipa_gaintbl_nphy(pi);
27801 txgain = tx_gaintbl[txpi[core]];
27802 } else {
27803 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27804 if (NREV_IS(phyrev, 3)) {
27805 txgain =
27806 nphy_tpc_5GHz_txgain_rev3
27807 [txpi[core]];
27808 } else if (NREV_IS(phyrev, 4)) {
27809 txgain = (
27810 pi->srom_fem5g.extpagain ==
27811 3) ?
27812 nphy_tpc_5GHz_txgain_HiPwrEPA
27813 [txpi[core]] :
27814 nphy_tpc_5GHz_txgain_rev4
27815 [txpi[core]];
27816 } else {
27817 txgain =
27818 nphy_tpc_5GHz_txgain_rev5
27819 [txpi[core]];
27820 }
27821 } else {
27822 if (NREV_GE(phyrev, 5) &&
27823 (pi->srom_fem2g.extpagain == 3)) {
27824 txgain =
27825 nphy_tpc_txgain_HiPwrEPA
27826 [txpi[core]];
27827 } else {
27828 txgain = nphy_tpc_txgain_rev3
27829 [txpi[core]];
27830 }
27831 }
27832 }
27833 } else {
27834 txgain = nphy_tpc_txgain[txpi[core]];
27835 }
27836
27837 if (NREV_GE(phyrev, 3))
27838 rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27839 else
27840 rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27841
27842 if (NREV_GE(phyrev, 7))
27843 dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27844 else
27845 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27846
27847 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27848
27849 if (NREV_GE(phyrev, 3))
27850 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27851 0xa5), (0x1 << 8), (0x1 << 8));
27852 else
27853 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27854
27855 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27856
27857 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27858 &rad_gain);
27859
27860 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27861 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27862 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27863 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27864
27865 if (PHY_IPA(pi)) {
27866 wlc_phy_table_read_nphy(pi,
27867 (core ==
27868 PHY_CORE_0 ?
27869 NPHY_TBL_ID_CORE1TXPWRCTL :
27870 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27871 576 + txpi[core], 32,
27872 &rfpwr_offset);
27873
27874 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27875 0x29b, (0x1ff << 4),
27876 ((s16) rfpwr_offset) << 4);
27877
27878 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27879 0x29b, (0x1 << 2), (1) << 2);
27880
27881 }
27882 }
27883
27884 and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27885
27886 if (pi->phyhang_avoid)
27887 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27888}
27889
27890static void
27891wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27892 u8 tmp_max_pwr, u8 rate_start,
27893 u8 rate_end)
27894{
27895 u8 rate;
27896 u8 word_num, nibble_num;
27897 u8 tmp_nibble;
27898
27899 for (rate = rate_start; rate <= rate_end; rate++) {
27900 word_num = (rate - rate_start) >> 2;
27901 nibble_num = (rate - rate_start) & 0x3;
27902 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27903
27904 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27905 }
27906}
27907
27908static void
27909wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27910 u8 rate_start, u8 rate_end)
27911{
27912 u8 rate;
27913
27914 for (rate = rate_start; rate <= rate_end; rate++)
27915 srom_max[rate] -= 2 * pwr_offset;
27916}
27917
27918void
27919wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27920 u8 rate_mcs_end, u8 rate_ofdm_start)
27921{
27922 u8 rate1, rate2;
27923
27924 rate2 = rate_ofdm_start;
27925 for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27926 power[rate1] = power[rate2];
27927 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27928 }
27929 power[rate_mcs_end] = power[rate_mcs_end - 1];
27930}
27931
27932void
27933wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27934 u8 rate_ofdm_end, u8 rate_mcs_start)
27935{
27936 u8 rate1, rate2;
27937
27938 for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27939 rate1 <= rate_ofdm_end; rate1++, rate2++) {
27940 power[rate1] = power[rate2];
27941 if (rate1 == rate_ofdm_start)
27942 power[++rate1] = power[rate2];
27943 }
27944}
27945
27946void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27947{
27948 uint rate1, rate2, band_num;
27949 u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27950 u8 tmp_max_pwr = 0;
27951 u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27952 u8 *tx_srom_max_rate = NULL;
27953
27954 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27955 band_num++) {
27956 switch (band_num) {
27957 case 0:
27958
27959 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27960 pi->nphy_pwrctrl_info[1].max_pwr_2g);
27961
27962 pwr_offsets1[0] = pi->cck2gpo;
27963 wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27964 pwr_offsets1,
27965 tmp_max_pwr,
27966 TXP_FIRST_CCK,
27967 TXP_LAST_CCK);
27968
27969 pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27970 pwr_offsets1[1] =
27971 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27972
27973 pwr_offsets2 = pi->mcs2gpo;
27974
27975 tmp_cddpo = pi->cdd2gpo;
27976 tmp_stbcpo = pi->stbc2gpo;
27977 tmp_bw40po = pi->bw402gpo;
27978
27979 tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27980 break;
27981 case 1:
27982
27983 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27984 pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27985
27986 pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27987 pwr_offsets1[1] =
27988 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27989
27990 pwr_offsets2 = pi->mcs5gpo;
27991
27992 tmp_cddpo = pi->cdd5gpo;
27993 tmp_stbcpo = pi->stbc5gpo;
27994 tmp_bw40po = pi->bw405gpo;
27995
27996 tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27997 break;
27998 case 2:
27999
28000 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28001 pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28002
28003 pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28004 pwr_offsets1[1] =
28005 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28006
28007 pwr_offsets2 = pi->mcs5glpo;
28008
28009 tmp_cddpo = pi->cdd5glpo;
28010 tmp_stbcpo = pi->stbc5glpo;
28011 tmp_bw40po = pi->bw405glpo;
28012
28013 tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28014 break;
28015 case 3:
28016
28017 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28018 pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28019
28020 pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28021 pwr_offsets1[1] =
28022 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28023
28024 pwr_offsets2 = pi->mcs5ghpo;
28025
28026 tmp_cddpo = pi->cdd5ghpo;
28027 tmp_stbcpo = pi->stbc5ghpo;
28028 tmp_bw40po = pi->bw405ghpo;
28029
28030 tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28031 break;
28032 }
28033
28034 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28035 tmp_max_pwr, TXP_FIRST_OFDM,
28036 TXP_LAST_OFDM);
28037
28038 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28039 TXP_FIRST_MCS_20_SISO,
28040 TXP_LAST_MCS_20_SISO,
28041 TXP_FIRST_OFDM);
28042
28043 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28044 tmp_max_pwr,
28045 TXP_FIRST_MCS_20_CDD,
28046 TXP_LAST_MCS_20_CDD);
28047
28048 if (NREV_GE(pi->pubpi.phy_rev, 3))
28049 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28050 TXP_FIRST_MCS_20_CDD,
28051 TXP_LAST_MCS_20_CDD);
28052
28053 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28054 TXP_FIRST_OFDM_20_CDD,
28055 TXP_LAST_OFDM_20_CDD,
28056 TXP_FIRST_MCS_20_CDD);
28057
28058 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28059 tmp_max_pwr,
28060 TXP_FIRST_MCS_20_STBC,
28061 TXP_LAST_MCS_20_STBC);
28062
28063 if (NREV_GE(pi->pubpi.phy_rev, 3))
28064 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28065 tmp_stbcpo,
28066 TXP_FIRST_MCS_20_STBC,
28067 TXP_LAST_MCS_20_STBC);
28068
28069 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28070 &pwr_offsets2[2], tmp_max_pwr,
28071 TXP_FIRST_MCS_20_SDM,
28072 TXP_LAST_MCS_20_SDM);
28073
28074 if (NPHY_IS_SROM_REINTERPRET) {
28075
28076 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28077 &pwr_offsets2[4],
28078 tmp_max_pwr,
28079 TXP_FIRST_MCS_40_SISO,
28080 TXP_LAST_MCS_40_SISO);
28081
28082 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28083 TXP_FIRST_OFDM_40_SISO,
28084 TXP_LAST_OFDM_40_SISO,
28085 TXP_FIRST_MCS_40_SISO);
28086
28087 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28088 &pwr_offsets2[4],
28089 tmp_max_pwr,
28090 TXP_FIRST_MCS_40_CDD,
28091 TXP_LAST_MCS_40_CDD);
28092
28093 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28094 TXP_FIRST_MCS_40_CDD,
28095 TXP_LAST_MCS_40_CDD);
28096
28097 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28098 TXP_FIRST_OFDM_40_CDD,
28099 TXP_LAST_OFDM_40_CDD,
28100 TXP_FIRST_MCS_40_CDD);
28101
28102 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28103 &pwr_offsets2[4],
28104 tmp_max_pwr,
28105 TXP_FIRST_MCS_40_STBC,
28106 TXP_LAST_MCS_40_STBC);
28107
28108 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28109 tmp_stbcpo,
28110 TXP_FIRST_MCS_40_STBC,
28111 TXP_LAST_MCS_40_STBC);
28112
28113 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28114 &pwr_offsets2[6],
28115 tmp_max_pwr,
28116 TXP_FIRST_MCS_40_SDM,
28117 TXP_LAST_MCS_40_SDM);
28118 } else {
28119
28120 for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28121 TXP_FIRST_OFDM;
28122 rate1 <= TXP_LAST_MCS_40_SDM;
28123 rate1++, rate2++)
28124 tx_srom_max_rate[rate1] =
28125 tx_srom_max_rate[rate2];
28126 }
28127
28128 if (NREV_GE(pi->pubpi.phy_rev, 3))
28129 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28130 tmp_bw40po,
28131 TXP_FIRST_OFDM_40_SISO,
28132 TXP_LAST_MCS_40_SDM);
28133
28134 tx_srom_max_rate[TXP_MCS_32] =
28135 tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28136 }
28137
28138 return;
28139}
28140
28141void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28142{
28143 u8 tx_pwr_ctrl_state;
28144 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28145 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28146
28147 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28148
28149 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28150 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
4b006b11 28151 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
5b435de0
AS
28152 udelay(1);
28153 }
28154
28155 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28156
28157 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28158 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28159}
28160
28161static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28162{
28163 return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28164 (0x1 << 14) | (0x1 << 13));
28165}
28166
28167u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28168{
28169 u16 tmp;
28170 u16 pwr_idx[2];
28171
28172 if (wlc_phy_txpwr_ison_nphy(pi)) {
28173 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28174 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28175
28176 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28177 } else {
28178 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28179 << 8) |
28180 (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28181 }
28182
28183 return tmp;
28184}
28185
28186void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28187{
28188 if (PHY_IPA(pi)
28189 && (pi->nphy_force_papd_cal
28190 || (wlc_phy_txpwr_ison_nphy(pi)
28191 &&
28192 (((u32)
28193 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28194 pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28195 || ((u32)
28196 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28197 pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28198 wlc_phy_a4(pi, true);
28199}
28200
28201void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28202{
28203 u16 mask = 0, val = 0, ishw = 0;
28204 u8 ctr;
28205 uint core;
28206 u32 tbl_offset;
28207 u32 tbl_len;
28208 u16 regval[84];
28209
28210 if (pi->phyhang_avoid)
28211 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28212
28213 switch (ctrl_type) {
28214 case PHY_TPC_HW_OFF:
28215 case PHY_TPC_HW_ON:
28216 pi->nphy_txpwrctrl = ctrl_type;
28217 break;
28218 default:
28219 break;
28220 }
28221
28222 if (ctrl_type == PHY_TPC_HW_OFF) {
28223 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28224
28225 if (wlc_phy_txpwr_ison_nphy(pi)) {
28226 for (core = 0; core < pi->pubpi.phy_corenum;
28227 core++)
28228 pi->nphy_txpwr_idx[core] =
28229 wlc_phy_txpwr_idx_cur_get_nphy(
28230 pi,
28231 (u8) core);
28232 }
28233
28234 }
28235
28236 tbl_len = 84;
28237 tbl_offset = 64;
28238 for (ctr = 0; ctr < tbl_len; ctr++)
28239 regval[ctr] = 0;
28240 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28241 regval);
28242 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28243 regval);
28244
28245 if (NREV_GE(pi->pubpi.phy_rev, 3))
28246 and_phy_reg(pi, 0x1e7,
28247 (u16) (~((0x1 << 15) |
28248 (0x1 << 14) | (0x1 << 13))));
28249 else
28250 and_phy_reg(pi, 0x1e7,
28251 (u16) (~((0x1 << 14) | (0x1 << 13))));
28252
28253 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28254 or_phy_reg(pi, 0x8f, (0x1 << 8));
28255 or_phy_reg(pi, 0xa5, (0x1 << 8));
28256 } else {
28257 or_phy_reg(pi, 0xa5, (0x1 << 14));
28258 }
28259
28260 if (NREV_IS(pi->pubpi.phy_rev, 2))
28261 mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28262 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28263 mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28264
28265 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28266 pi->bw == WL_CHANSPEC_BW_40)
28267 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28268 MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28269
28270 } else {
28271
28272 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28273 8, pi->adj_pwr_tbl_nphy);
28274 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28275 8, pi->adj_pwr_tbl_nphy);
28276
28277 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28278 mask = (0x1 << 14) | (0x1 << 13);
28279 val = (ishw << 14) | (ishw << 13);
28280
28281 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28282 mask |= (0x1 << 15);
28283 val |= (ishw << 15);
28284 }
28285
28286 mod_phy_reg(pi, 0x1e7, mask, val);
28287
28288 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28289 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28290 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28291 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28292 } else {
28293 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28294 if (NREV_GT(pi->pubpi.phy_rev, 1))
28295 mod_phy_reg(pi, 0x222,
28296 (0xff << 0), 0x64);
28297 }
28298 }
28299
28300 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28301 if ((pi->nphy_txpwr_idx[0] != 128)
28302 && (pi->nphy_txpwr_idx[1] != 128))
28303 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28304 pi->
28305 nphy_txpwr_idx
28306 [0],
28307 pi->
28308 nphy_txpwr_idx
28309 [1]);
28310 }
28311
28312 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28313 and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28314 and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28315 } else {
28316 and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28317 }
28318
28319 if (NREV_IS(pi->pubpi.phy_rev, 2))
28320 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28321 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28322 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28323
28324 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28325 pi->bw == WL_CHANSPEC_BW_40)
28326 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28327 0x0, BRCM_BAND_ALL);
28328
28329 if (PHY_IPA(pi)) {
28330 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28331 0x29b, (0x1 << 2), (0) << 2);
28332
28333 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28334 0x29b, (0x1 << 2), (0) << 2);
28335
28336 }
28337
28338 }
28339
28340 if (pi->phyhang_avoid)
28341 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28342}
28343
28344void
28345wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28346 bool restore_cals)
28347{
28348 u8 core, txpwrctl_tbl;
28349 u16 tx_ind0, iq_ind0, lo_ind0;
28350 u16 m1m2;
28351 u32 txgain;
28352 u16 rad_gain, dac_gain;
28353 u8 bbmult;
28354 u32 iqcomp;
28355 u16 iqcomp_a, iqcomp_b;
28356 u32 locomp;
28357 u16 tmpval;
28358 u8 tx_pwr_ctrl_state;
28359 s32 rfpwr_offset;
28360 u16 regval[2];
28361
28362 if (pi->phyhang_avoid)
28363 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28364
28365 tx_ind0 = 192;
28366 iq_ind0 = 320;
28367 lo_ind0 = 448;
28368
28369 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28370
28371 if ((core_mask & (1 << core)) == 0)
28372 continue;
28373
28374 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28375
28376 if (txpwrindex < 0) {
28377 if (pi->nphy_txpwrindex[core].index < 0)
28378 continue;
28379
28380 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28381 mod_phy_reg(pi, 0x8f,
28382 (0x1 << 8),
28383 pi->nphy_txpwrindex[core].
28384 AfectrlOverride);
28385 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28386 pi->nphy_txpwrindex[core].
28387 AfectrlOverride);
28388 } else {
28389 mod_phy_reg(pi, 0xa5,
28390 (0x1 << 14),
28391 pi->nphy_txpwrindex[core].
28392 AfectrlOverride);
28393 }
28394
28395 write_phy_reg(pi, (core == PHY_CORE_0) ?
28396 0xaa : 0xab,
28397 pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28398
28399 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28400 &pi->nphy_txpwrindex[core].
28401 rad_gain);
28402
28403 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28404 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28405 m1m2 |= ((core == PHY_CORE_0) ?
28406 (pi->nphy_txpwrindex[core].bbmult << 8) :
28407 (pi->nphy_txpwrindex[core].bbmult << 0));
28408 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28409
28410 if (restore_cals) {
28411 wlc_phy_table_write_nphy(
28412 pi, 15, 2, (80 + 2 * core), 16,
28413 &pi->nphy_txpwrindex[core].iqcomp_a);
28414 wlc_phy_table_write_nphy(
28415 pi, 15, 1, (85 + core), 16,
28416 &pi->nphy_txpwrindex[core].locomp);
28417 wlc_phy_table_write_nphy(
28418 pi, 15, 1, (93 + core), 16,
28419 &pi->nphy_txpwrindex[core].locomp);
28420 }
28421
28422 wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28423
28424 pi->nphy_txpwrindex[core].index_internal =
28425 pi->nphy_txpwrindex[core].index_internal_save;
28426 } else {
28427
28428 if (pi->nphy_txpwrindex[core].index < 0) {
28429
28430 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28431 mod_phy_reg(pi, 0x8f,
28432 (0x1 << 8),
28433 pi->nphy_txpwrindex[core].
28434 AfectrlOverride);
28435 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28436 pi->nphy_txpwrindex[core].
28437 AfectrlOverride);
28438 } else {
28439 pi->nphy_txpwrindex[core].
28440 AfectrlOverride =
28441 read_phy_reg(pi, 0xa5);
28442 }
28443
28444 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28445 read_phy_reg(pi, (core == PHY_CORE_0) ?
28446 0xaa : 0xab);
28447
28448 wlc_phy_table_read_nphy(pi, 7, 1,
28449 (0x110 + core), 16,
28450 &pi->
28451 nphy_txpwrindex[core].
28452 rad_gain);
28453
28454 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28455 &tmpval);
28456 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28457 tmpval &= 0xff;
28458 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28459
28460 wlc_phy_table_read_nphy(pi, 15, 2,
28461 (80 + 2 * core), 16,
28462 &pi->
28463 nphy_txpwrindex[core].
28464 iqcomp_a);
28465
28466 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28467 16,
28468 &pi->
28469 nphy_txpwrindex[core].
28470 locomp);
28471
28472 pi->nphy_txpwrindex[core].index_internal_save =
28473 pi->nphy_txpwrindex[core].
28474 index_internal;
28475 }
28476
28477 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28478 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28479
28480 if (NREV_IS(pi->pubpi.phy_rev, 1))
28481 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28482
28483 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28484 (tx_ind0 + txpwrindex), 32,
28485 &txgain);
28486
28487 if (NREV_GE(pi->pubpi.phy_rev, 3))
28488 rad_gain = (txgain >> 16) &
28489 ((1 << (32 - 16 + 1)) - 1);
28490 else
28491 rad_gain = (txgain >> 16) &
28492 ((1 << (28 - 16 + 1)) - 1);
28493
28494 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28495 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28496
28497 if (NREV_GE(pi->pubpi.phy_rev, 3))
28498 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28499 0xa5), (0x1 << 8), (0x1 << 8));
28500 else
28501 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28502
28503 write_phy_reg(pi, (core == PHY_CORE_0) ?
28504 0xaa : 0xab, dac_gain);
28505
28506 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28507 &rad_gain);
28508
28509 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28510 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28511 m1m2 |= ((core == PHY_CORE_0) ?
28512 (bbmult << 8) : (bbmult << 0));
28513
28514 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28515
28516 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28517 (iq_ind0 + txpwrindex), 32,
28518 &iqcomp);
28519 iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28520 iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28521
28522 if (restore_cals) {
28523 regval[0] = (u16) iqcomp_a;
28524 regval[1] = (u16) iqcomp_b;
28525 wlc_phy_table_write_nphy(pi, 15, 2,
28526 (80 + 2 * core), 16,
28527 regval);
28528 }
28529
28530 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28531 (lo_ind0 + txpwrindex), 32,
28532 &locomp);
28533 if (restore_cals)
28534 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28535 16, &locomp);
28536
28537 if (NREV_IS(pi->pubpi.phy_rev, 1))
28538 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28539
28540 if (PHY_IPA(pi)) {
28541 wlc_phy_table_read_nphy(pi,
28542 (core == PHY_CORE_0 ?
28543 NPHY_TBL_ID_CORE1TXPWRCTL :
28544 NPHY_TBL_ID_CORE2TXPWRCTL),
28545 1, 576 + txpwrindex, 32,
28546 &rfpwr_offset);
28547
28548 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28549 0x29b, (0x1ff << 4),
28550 ((s16) rfpwr_offset) << 4);
28551
28552 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28553 0x29b, (0x1 << 2), (1) << 2);
28554
28555 }
28556
28557 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28558 }
28559
28560 pi->nphy_txpwrindex[core].index = txpwrindex;
28561 }
28562
28563 if (pi->phyhang_avoid)
28564 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28565}
28566
28567void
28568wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28569 u8 txp_rate_idx)
28570{
28571 u8 chan_freq_range;
28572
28573 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28574 switch (chan_freq_range) {
28575 case WL_CHAN_FREQ_RANGE_2G:
28576 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28577 break;
28578 case WL_CHAN_FREQ_RANGE_5GM:
28579 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28580 break;
28581 case WL_CHAN_FREQ_RANGE_5GL:
28582 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28583 break;
28584 case WL_CHAN_FREQ_RANGE_5GH:
28585 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28586 break;
28587 default:
28588 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28589 break;
28590 }
28591
28592 return;
28593}
28594
28595void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28596{
28597 u16 clip_off[] = { 0xffff, 0xffff };
28598
28599 if (enable) {
28600 if (pi->nphy_deaf_count == 0) {
28601 pi->classifier_state =
28602 wlc_phy_classifier_nphy(pi, 0, 0);
28603 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28604 wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28605 wlc_phy_clip_det_nphy(pi, 1, clip_off);
28606 }
28607
28608 pi->nphy_deaf_count++;
28609
28610 wlc_phy_resetcca_nphy(pi);
28611
28612 } else {
28613 pi->nphy_deaf_count--;
28614
28615 if (pi->nphy_deaf_count == 0) {
28616 wlc_phy_classifier_nphy(pi, (0x7 << 0),
28617 pi->classifier_state);
28618 wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28619 }
28620 }
28621}
28622
28623void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28624{
28625 wlapi_suspend_mac_and_wait(pi->sh->physhim);
28626
28627 if (mode) {
28628 if (pi->nphy_deaf_count == 0)
28629 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28630 } else if (pi->nphy_deaf_count > 0) {
28631 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28632 }
28633
28634 wlapi_enable_mac(pi->sh->physhim);
28635}