aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c')
-rw-r--r--drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c28876
1 files changed, 28876 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
new file mode 100644
index 000000000000..cd19c2f7a347
--- /dev/null
+++ b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_n.c
@@ -0,0 +1,28876 @@
1/*
2 * Copyright (c) 2010 Broadcom Corporation
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#include <linux/kernel.h>
18#include <linux/delay.h>
19#include <linux/cordic.h>
20
21#include <brcm_hw_ids.h>
22#include <aiutils.h>
23#include <chipcommon.h>
24#include <pmu.h>
25#include <d11.h>
26#include <phy_shim.h>
27#include "phy_int.h"
28#include "phy_hal.h"
29#include "phy_radio.h"
30#include "phyreg_n.h"
31#include "phytbl_n.h"
32
33#define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
34 read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
35 ((core == PHY_CORE_0) ? \
36 radio_type##_##jspace##0 : \
37 radio_type##_##jspace##1))
38
39#define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
40 write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
41 ((core == PHY_CORE_0) ? \
42 radio_type##_##jspace##0 : \
43 radio_type##_##jspace##1), value)
44
45#define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
46 write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
47
48#define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
49 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
50 radio_type##_##jspace##0##_##reg_name : \
51 radio_type##_##jspace##1##_##reg_name))
52
53#define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
54 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
55 radio_type##_##jspace##0##_##reg_name : \
56 radio_type##_##jspace##1##_##reg_name), \
57 value)
58
59#define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
60 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
61 radio_type##_##reg_name##_##jspace##0 : \
62 radio_type##_##reg_name##_##jspace##1))
63
64#define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
65 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
66 radio_type##_##reg_name##_##jspace##0 : \
67 radio_type##_##reg_name##_##jspace##1), \
68 value)
69
70#define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
71#define NPHY_ACI_CHANNEL_DELTA 5
72#define NPHY_ACI_CHANNEL_SKIP 4
73#define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
74#define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
75#define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
76#define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
77#define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
78#define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
79
80#define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
81
82#define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
83
84#define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
85
86#define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
87
88#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
89
90#define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
91
92#define NPHY_NOISE_NOASSOC_ENTER_TH 400
93
94#define NPHY_NOISE_ASSOC_ENTER_TH 400
95
96#define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH 400
97
98#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
99#define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
100
101#define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
102
103#define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
104
105#define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
106
107#define NPHY_RSSICAL_MAXREAD 31
108
109#define NPHY_RSSICAL_NPOLL 8
110#define NPHY_RSSICAL_MAXD (1<<20)
111#define NPHY_MIN_RXIQ_PWR 2
112
113#define NPHY_RSSICAL_W1_TARGET 25
114#define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
115#define NPHY_RSSICAL_NB_TARGET 0
116
117#define NPHY_RSSICAL_W1_TARGET_REV3 29
118#define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
119
120#define NPHY_CALSANITY_RSSI_NB_MAX_POS 9
121#define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
122#define NPHY_CALSANITY_RSSI_W1_MAX_POS 12
123#define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
124 NPHY_RSSICAL_MAXREAD)
125#define NPHY_CALSANITY_RSSI_W2_MAX_POS NPHY_CALSANITY_RSSI_W1_MAX_POS
126#define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
127 NPHY_RSSICAL_MAXREAD)
128#define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
129#define NPHY_RSSI_NB_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
130 ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
131#define NPHY_RSSI_W1_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
132 ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
133#define NPHY_RSSI_W2_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
134 ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
135
136#define NPHY_IQCAL_NUMGAINS 9
137#define NPHY_N_GCTL 0x66
138
139#define NPHY_PAPD_EPS_TBL_SIZE 64
140#define NPHY_PAPD_SCL_TBL_SIZE 64
141#define NPHY_NUM_DIG_FILT_COEFFS 15
142
143#define NPHY_PAPD_COMP_OFF 0
144#define NPHY_PAPD_COMP_ON 1
145
146#define NPHY_SROM_TEMPSHIFT 32
147#define NPHY_SROM_MAXTEMPOFFSET 16
148#define NPHY_SROM_MINTEMPOFFSET -16
149
150#define NPHY_CAL_MAXTEMPDELTA 64
151
152#define NPHY_NOISEVAR_TBLLEN40 256
153#define NPHY_NOISEVAR_TBLLEN20 128
154
155#define NPHY_ANARXLPFBW_REDUCTIONFACT 7
156
157#define NPHY_ADJUSTED_MINCRSPOWER 0x1e
158
159/* 5357 Chip specific ChipControl register bits */
160#define CCTRL5357_EXTPA (1<<14) /* extPA in ChipControl 1, bit 14 */
161#define CCTRL5357_ANT_MUX_2o3 (1<<15) /* 2o3 in ChipControl 1, bit 15 */
162
163#define NPHY_CAL_TSSISAMPS 64
164#define NPHY_TEST_TONE_FREQ_40MHz 4000
165#define NPHY_TEST_TONE_FREQ_20MHz 2500
166
167#define MAX_205x_RCAL_WAITLOOPS 10000
168
169#define NPHY_RXCAL_TONEAMP 181
170#define NPHY_RXCAL_TONEFREQ_40MHz 4000
171#define NPHY_RXCAL_TONEFREQ_20MHz 2000
172
173#define TXFILT_SHAPING_OFDM20 0
174#define TXFILT_SHAPING_OFDM40 1
175#define TXFILT_SHAPING_CCK 2
176#define TXFILT_DEFAULT_OFDM20 3
177#define TXFILT_DEFAULT_OFDM40 4
178
179struct nphy_iqcal_params {
180 u16 txlpf;
181 u16 txgm;
182 u16 pga;
183 u16 pad;
184 u16 ipa;
185 u16 cal_gain;
186 u16 ncorr[5];
187};
188
189struct nphy_txiqcal_ladder {
190 u8 percent;
191 u8 g_env;
192};
193
194struct nphy_ipa_txcalgains {
195 struct nphy_txgains gains;
196 bool useindex;
197 u8 index;
198};
199
200struct nphy_papd_restore_state {
201 u16 fbmix[2];
202 u16 vga_master[2];
203 u16 intpa_master[2];
204 u16 afectrl[2];
205 u16 afeoverride[2];
206 u16 pwrup[2];
207 u16 atten[2];
208 u16 mm;
209};
210
211struct nphy_ipa_txrxgain {
212 u16 hpvga;
213 u16 lpf_biq1;
214 u16 lpf_biq0;
215 u16 lna2;
216 u16 lna1;
217 s8 txpwrindex;
218};
219
220#define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
221
222static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
223 {0, 0, 0, 0, 0, 100},
224 {0, 0, 0, 0, 0, 50},
225 {0, 0, 0, 0, 0, -1},
226 {0, 0, 0, 3, 0, -1},
227 {0, 0, 3, 3, 0, -1},
228 {0, 2, 3, 3, 0, -1}
229};
230
231static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
232 {0, 0, 0, 0, 0, 128},
233 {0, 0, 0, 0, 0, 70},
234 {0, 0, 0, 0, 0, 20},
235 {0, 0, 0, 3, 0, 20},
236 {0, 0, 3, 3, 0, 20},
237 {0, 2, 3, 3, 0, 20}
238};
239
240static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
241 {0, 0, 0, 0, 0, 100},
242 {0, 0, 0, 0, 0, 50},
243 {0, 0, 0, 0, 0, -1},
244 {0, 0, 0, 3, 0, -1},
245 {0, 0, 3, 3, 0, -1},
246 {0, 0, 5, 3, 0, -1}
247};
248
249static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
250 {0, 0, 0, 0, 0, 10},
251 {0, 0, 0, 1, 0, 10},
252 {0, 0, 1, 2, 0, 10},
253 {0, 0, 1, 3, 0, 10},
254 {0, 0, 4, 3, 0, 10},
255 {0, 0, 6, 3, 0, 10}
256};
257
258enum {
259 NPHY_RXCAL_GAIN_INIT = 0,
260 NPHY_RXCAL_GAIN_UP,
261 NPHY_RXCAL_GAIN_DOWN
262};
263
264#define wlc_phy_get_papd_nphy(pi) \
265 (read_phy_reg((pi), 0x1e7) & \
266 ((0x1 << 15) | \
267 (0x1 << 14) | \
268 (0x1 << 13)))
269
270static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
271 {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
272 230, -44, 230, 201, -191, 201},
273 {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
274 26, 34, -32, 34},
275 {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
276 121, -73, 121, 91, 124, 91},
277 {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
278 151, 301, 151, 602, -752, 602},
279 {-92, 58, -96, 49, -104, 44, 17, 35, 17,
280 12, 25, 12, 13, 27, 13},
281 {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
282 230, -44, 230, 201, -191, 201},
283 {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
284 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
285};
286
287struct chan_info_nphy_2055 {
288 u16 chan;
289 u16 freq;
290 uint unknown;
291 u8 RF_pll_ref;
292 u8 RF_rf_pll_mod1;
293 u8 RF_rf_pll_mod0;
294 u8 RF_vco_cap_tail;
295 u8 RF_vco_cal1;
296 u8 RF_vco_cal2;
297 u8 RF_pll_lf_c1;
298 u8 RF_pll_lf_r1;
299 u8 RF_pll_lf_c2;
300 u8 RF_lgbuf_cen_buf;
301 u8 RF_lgen_tune1;
302 u8 RF_lgen_tune2;
303 u8 RF_core1_lgbuf_a_tune;
304 u8 RF_core1_lgbuf_g_tune;
305 u8 RF_core1_rxrf_reg1;
306 u8 RF_core1_tx_pga_pad_tn;
307 u8 RF_core1_tx_mx_bgtrim;
308 u8 RF_core2_lgbuf_a_tune;
309 u8 RF_core2_lgbuf_g_tune;
310 u8 RF_core2_rxrf_reg1;
311 u8 RF_core2_tx_pga_pad_tn;
312 u8 RF_core2_tx_mx_bgtrim;
313 u16 PHY_BW1a;
314 u16 PHY_BW2;
315 u16 PHY_BW3;
316 u16 PHY_BW4;
317 u16 PHY_BW5;
318 u16 PHY_BW6;
319};
320
321struct chan_info_nphy_radio205x {
322 u16 chan;
323 u16 freq;
324 u8 RF_SYN_pll_vcocal1;
325 u8 RF_SYN_pll_vcocal2;
326 u8 RF_SYN_pll_refdiv;
327 u8 RF_SYN_pll_mmd2;
328 u8 RF_SYN_pll_mmd1;
329 u8 RF_SYN_pll_loopfilter1;
330 u8 RF_SYN_pll_loopfilter2;
331 u8 RF_SYN_pll_loopfilter3;
332 u8 RF_SYN_pll_loopfilter4;
333 u8 RF_SYN_pll_loopfilter5;
334 u8 RF_SYN_reserved_addr27;
335 u8 RF_SYN_reserved_addr28;
336 u8 RF_SYN_reserved_addr29;
337 u8 RF_SYN_logen_VCOBUF1;
338 u8 RF_SYN_logen_MIXER2;
339 u8 RF_SYN_logen_BUF3;
340 u8 RF_SYN_logen_BUF4;
341 u8 RF_RX0_lnaa_tune;
342 u8 RF_RX0_lnag_tune;
343 u8 RF_TX0_intpaa_boost_tune;
344 u8 RF_TX0_intpag_boost_tune;
345 u8 RF_TX0_pada_boost_tune;
346 u8 RF_TX0_padg_boost_tune;
347 u8 RF_TX0_pgaa_boost_tune;
348 u8 RF_TX0_pgag_boost_tune;
349 u8 RF_TX0_mixa_boost_tune;
350 u8 RF_TX0_mixg_boost_tune;
351 u8 RF_RX1_lnaa_tune;
352 u8 RF_RX1_lnag_tune;
353 u8 RF_TX1_intpaa_boost_tune;
354 u8 RF_TX1_intpag_boost_tune;
355 u8 RF_TX1_pada_boost_tune;
356 u8 RF_TX1_padg_boost_tune;
357 u8 RF_TX1_pgaa_boost_tune;
358 u8 RF_TX1_pgag_boost_tune;
359 u8 RF_TX1_mixa_boost_tune;
360 u8 RF_TX1_mixg_boost_tune;
361 u16 PHY_BW1a;
362 u16 PHY_BW2;
363 u16 PHY_BW3;
364 u16 PHY_BW4;
365 u16 PHY_BW5;
366 u16 PHY_BW6;
367};
368
369struct chan_info_nphy_radio2057 {
370 u16 chan;
371 u16 freq;
372 u8 RF_vcocal_countval0;
373 u8 RF_vcocal_countval1;
374 u8 RF_rfpll_refmaster_sparextalsize;
375 u8 RF_rfpll_loopfilter_r1;
376 u8 RF_rfpll_loopfilter_c2;
377 u8 RF_rfpll_loopfilter_c1;
378 u8 RF_cp_kpd_idac;
379 u8 RF_rfpll_mmd0;
380 u8 RF_rfpll_mmd1;
381 u8 RF_vcobuf_tune;
382 u8 RF_logen_mx2g_tune;
383 u8 RF_logen_mx5g_tune;
384 u8 RF_logen_indbuf2g_tune;
385 u8 RF_logen_indbuf5g_tune;
386 u8 RF_txmix2g_tune_boost_pu_core0;
387 u8 RF_pad2g_tune_pus_core0;
388 u8 RF_pga_boost_tune_core0;
389 u8 RF_txmix5g_boost_tune_core0;
390 u8 RF_pad5g_tune_misc_pus_core0;
391 u8 RF_lna2g_tune_core0;
392 u8 RF_lna5g_tune_core0;
393 u8 RF_txmix2g_tune_boost_pu_core1;
394 u8 RF_pad2g_tune_pus_core1;
395 u8 RF_pga_boost_tune_core1;
396 u8 RF_txmix5g_boost_tune_core1;
397 u8 RF_pad5g_tune_misc_pus_core1;
398 u8 RF_lna2g_tune_core1;
399 u8 RF_lna5g_tune_core1;
400 u16 PHY_BW1a;
401 u16 PHY_BW2;
402 u16 PHY_BW3;
403 u16 PHY_BW4;
404 u16 PHY_BW5;
405 u16 PHY_BW6;
406};
407
408struct chan_info_nphy_radio2057_rev5 {
409 u16 chan;
410 u16 freq;
411 u8 RF_vcocal_countval0;
412 u8 RF_vcocal_countval1;
413 u8 RF_rfpll_refmaster_sparextalsize;
414 u8 RF_rfpll_loopfilter_r1;
415 u8 RF_rfpll_loopfilter_c2;
416 u8 RF_rfpll_loopfilter_c1;
417 u8 RF_cp_kpd_idac;
418 u8 RF_rfpll_mmd0;
419 u8 RF_rfpll_mmd1;
420 u8 RF_vcobuf_tune;
421 u8 RF_logen_mx2g_tune;
422 u8 RF_logen_indbuf2g_tune;
423 u8 RF_txmix2g_tune_boost_pu_core0;
424 u8 RF_pad2g_tune_pus_core0;
425 u8 RF_lna2g_tune_core0;
426 u8 RF_txmix2g_tune_boost_pu_core1;
427 u8 RF_pad2g_tune_pus_core1;
428 u8 RF_lna2g_tune_core1;
429 u16 PHY_BW1a;
430 u16 PHY_BW2;
431 u16 PHY_BW3;
432 u16 PHY_BW4;
433 u16 PHY_BW5;
434 u16 PHY_BW6;
435};
436
437struct nphy_sfo_cfg {
438 u16 PHY_BW1a;
439 u16 PHY_BW2;
440 u16 PHY_BW3;
441 u16 PHY_BW4;
442 u16 PHY_BW5;
443 u16 PHY_BW6;
444};
445
446static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
447 {
448 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
449 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
450 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
451 {
452 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
453 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
454 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
455 {
456 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
457 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
458 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
459 {
460 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
461 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
462 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
463 {
464 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
465 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
466 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
467 {
468 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
469 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
470 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
471 {
472 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
473 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
474 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
475 {
476 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
477 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
478 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
479 {
480 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
481 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
482 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
483 {
484 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
485 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
486 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
487 {
488 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
489 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
490 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
491 {
492 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
493 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
494 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
495 {
496 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
497 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
498 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
499 {
500 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
501 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
502 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
503 {
504 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
505 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
506 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
507 {
508 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
509 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
510 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
511 {
512 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
513 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
514 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
515 {
516 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
517 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
518 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
519 {
520 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
521 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
522 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
523 {
524 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
525 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
526 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
527 {
528 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
529 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
530 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
531 {
532 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
533 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
534 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
535 {
536 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
537 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
538 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
539 {
540 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
541 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
542 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
543 {
544 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
545 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
546 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
547 {
548 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
549 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
550 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
551 {
552 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
553 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
554 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
555 {
556 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
557 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
558 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
559 {
560 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
561 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
562 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
563 {
564 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
565 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
566 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
567 {
568 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
569 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
570 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
571 {
572 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
573 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
574 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
575 {
576 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
577 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
578 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
579 {
580 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
581 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
582 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
583 {
584 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
585 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
586 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
587 {
588 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
589 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
590 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
591 {
592 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
593 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
594 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
595 {
596 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
597 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
598 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
599 {
600 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
601 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
602 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
603 {
604 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
605 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
606 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
607 {
608 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
609 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
610 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
611 {
612 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
613 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
614 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
615 {
616 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
617 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
618 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
619 {
620 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
621 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
622 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
623 {
624 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
625 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
626 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
627 {
628 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
629 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
630 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
631 {
632 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
633 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
634 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
635 {
636 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
637 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
638 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
639 {
640 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
641 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
642 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
643 {
644 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
645 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
646 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
647 {
648 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
649 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
650 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
651 {
652 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
653 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
654 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
655 {
656 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
657 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
658 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
659 {
660 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
661 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
662 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
663 {
664 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
665 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
666 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
667 {
668 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
669 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
670 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
671 {
672 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
673 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
674 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
675 {
676 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
677 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
678 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
679 {
680 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
681 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
682 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
683 {
684 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
685 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
686 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
687 {
688 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
689 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
690 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
691 {
692 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
693 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
694 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
695 {
696 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
697 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
698 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
699 {
700 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
701 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
702 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
703 {
704 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
705 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
706 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
707 {
708 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
709 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
710 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
711 {
712 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
713 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
714 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
715 {
716 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
717 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
718 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
719 {
720 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
721 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
722 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
723 {
724 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
725 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
726 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
727 {
728 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
729 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
730 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
731 {
732 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
733 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
734 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
735 {
736 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
737 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
738 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
739 {
740 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
741 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
742 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
743 {
744 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
745 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
746 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
747 {
748 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
749 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
750 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
751 {
752 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
753 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
754 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
755 {
756 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
757 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
758 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
759 {
760 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
761 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
762 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
763 {
764 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
765 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
766 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
767 {
768 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
769 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
770 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
771 {
772 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
773 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
774 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
775 {
776 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
777 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
778 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
779 {
780 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
781 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
782 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
783 {
784 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
785 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
786 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
787 {
788 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
789 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
790 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
791 {
792 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
793 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
794 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
795 {
796 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
797 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
798 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
799 {
800 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
801 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
802 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
803 {
804 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
805 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
806 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
807 {
808 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
809 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
810 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
811 {
812 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
813 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
814 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
815 {
816 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
817 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
818 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
819 {
820 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
821 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
822 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
823 {
824 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
825 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
826 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
827 {
828 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
829 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
830 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
831 {
832 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
833 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
834 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
835 {
836 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
837 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
838 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
839 {
840 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
841 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
842 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
843 {
844 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
845 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
846 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
847 {
848 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
849 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
850 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
851 {
852 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
853 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
854 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
855 {
856 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
857 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
858 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
859 {
860 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
861 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
862 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
863 {
864 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
865 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
866 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
867 {
868 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
869 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
870 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
871 {
872 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
873 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
874 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
875 {
876 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
877 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
878 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
879 {
880 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
881 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
882 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
883 {
884 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
885 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
886 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
887 {
888 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
889 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
890 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
891 {
892 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
893 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
894 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
895 {
896 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
897 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
898 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
899 {
900 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
901 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
902 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
903 {
904 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
905 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
906 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
907 {
908 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
909 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
910 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
911 {
912 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
913 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
914 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
915 {
916 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
917 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
918 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
919 {
920 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
921 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
922 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
923 {
924 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
925 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
926 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
927 {
928 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
929 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
930 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
931 {
932 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
933 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
934 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
935 {
936 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
937 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
938 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
939 {
940 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
941 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
942 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
943};
944
945static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
946 {
947 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
948 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
949 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
950 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
951 {
952 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
953 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
954 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
955 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
956 {
957 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
958 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
959 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
960 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
961 {
962 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
963 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
964 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
965 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
966 {
967 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
968 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
969 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
970 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
971 {
972 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
973 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
974 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
975 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
976 {
977 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
978 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
979 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
980 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
981 {
982 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
983 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
984 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
985 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
986 {
987 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
988 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
989 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
990 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
991 {
992 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
993 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
994 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
995 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
996 {
997 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
998 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
999 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1000 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1001 {
1002 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1003 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1004 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1005 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1006 {
1007 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1008 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1009 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1010 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1011 {
1012 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1013 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1014 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1015 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1016 {
1017 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1018 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1019 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1020 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1021 {
1022 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1023 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1024 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1025 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1026 {
1027 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1028 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1029 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1030 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1031 {
1032 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1033 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1034 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1035 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1036 {
1037 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1038 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1039 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1040 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1041 {
1042 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1043 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1044 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1045 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1046 {
1047 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1048 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1049 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1050 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1051 {
1052 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1053 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1054 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1055 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1056 {
1057 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1058 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1059 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1060 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1061 {
1062 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1063 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1064 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1065 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1066 {
1067 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1068 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1069 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1070 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1071 {
1072 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1073 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1074 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1075 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1076 {
1077 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1078 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1079 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1080 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1081 {
1082 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1083 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1084 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1085 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1086 {
1087 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1088 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1089 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1090 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1091 {
1092 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1093 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1094 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1095 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1096 {
1097 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1098 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1099 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1100 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1101 {
1102 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1103 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1104 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1105 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1106 {
1107 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1108 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1109 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1110 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1111 {
1112 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1113 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1114 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1115 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1116 {
1117 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1118 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1119 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1120 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1121 {
1122 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1123 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1124 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1125 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1126 {
1127 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1128 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1129 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1130 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1131 {
1132 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1133 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1134 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1135 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1136 {
1137 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1138 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1139 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1140 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1141 {
1142 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1143 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1144 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1145 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1146 {
1147 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1148 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1149 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1150 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1151 {
1152 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1153 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1154 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1155 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1156 {
1157 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1158 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1159 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1160 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1161 {
1162 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1163 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1164 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1165 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1166 {
1167 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1168 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1169 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1170 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1171 {
1172 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1173 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1174 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1175 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1176 {
1177 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1178 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1179 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1180 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1181 {
1182 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1183 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1184 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1185 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1186 {
1187 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1188 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1189 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1190 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1191 {
1192 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1193 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1194 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1195 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1196 {
1197 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1198 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1199 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1200 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1201 {
1202 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1203 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1204 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1205 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1206 {
1207 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1208 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1209 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1210 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1211 {
1212 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1213 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1214 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1215 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1216 {
1217 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1218 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1219 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1220 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1221 {
1222 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1223 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1224 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1225 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1226 {
1227 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1228 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1229 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1230 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1231 {
1232 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1233 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1234 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1235 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1236 {
1237 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1238 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1239 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1240 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1241 {
1242 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1243 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1244 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1245 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1246 {
1247 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1248 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1249 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1250 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1251 {
1252 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1253 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1254 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1255 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1256 {
1257 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1258 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1259 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1260 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1261 {
1262 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1263 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1264 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1265 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1266 {
1267 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1268 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1269 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1270 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1271 {
1272 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1273 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1274 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1275 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1276 {
1277 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1278 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1279 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1280 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1281 {
1282 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1283 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1284 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1285 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1286 {
1287 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1288 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1289 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1290 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1291 {
1292 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1293 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1294 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1295 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1296 {
1297 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1298 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1299 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1300 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1301 {
1302 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1303 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1304 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1305 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1306 {
1307 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1308 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1309 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1310 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1311 {
1312 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1313 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1314 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1315 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1316 {
1317 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1318 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1319 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1320 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1321 {
1322 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1323 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1324 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1325 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1326 {
1327 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1328 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1329 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1330 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1331 {
1332 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1333 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1334 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1335 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1336 {
1337 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1338 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1339 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1340 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1341 {
1342 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1343 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1344 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1345 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1346 {
1347 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1348 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1349 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1350 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1351 {
1352 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1353 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1354 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1355 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1356 {
1357 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1358 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1359 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1360 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1361 {
1362 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1363 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1364 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1365 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1366 {
1367 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1368 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1369 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1370 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1371 {
1372 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1373 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1374 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1375 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1376 {
1377 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1378 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1379 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1380 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1381 {
1382 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1383 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1384 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1385 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1386 {
1387 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1388 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1389 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1390 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1391 {
1392 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1393 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1394 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1395 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1396 {
1397 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1398 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1399 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1400 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1401 {
1402 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1403 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1404 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1405 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1406 {
1407 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1408 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1409 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1410 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1411 {
1412 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1413 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1414 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1415 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1416 {
1417 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1418 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1419 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1420 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1421 {
1422 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1423 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1424 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1425 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1426 {
1427 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1428 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1429 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1430 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1431 {
1432 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1433 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1434 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1435 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1436 {
1437 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1438 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1439 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1440 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1441 {
1442 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1443 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1444 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1445 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1446 {
1447 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1448 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1449 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1450 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1451 {
1452 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1453 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1454 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1455 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1456 {
1457 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1458 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1459 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1460 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1461 {
1462 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1463 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1464 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1465 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1466 {
1467 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1468 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1469 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1470 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1471 {
1472 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1473 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1474 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1475 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1476 {
1477 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1478 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1479 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1480 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1481 {
1482 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1483 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1484 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1485 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1486 {
1487 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1488 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1489 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1490 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1491 {
1492 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1493 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1494 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1495 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1496 {
1497 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1498 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1499 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1500 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1501 {
1502 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1503 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1504 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1505 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1506 {
1507 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1508 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1509 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1510 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1511 {
1512 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1513 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1514 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1515 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1516 {
1517 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1518 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1519 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1520 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1521 {
1522 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1523 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1524 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1525 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1526 {
1527 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1528 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1529 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1530 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1531 {
1532 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1533 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1534 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1535 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1536 {
1537 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1538 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1539 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1540 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1541 {
1542 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1543 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1544 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1545 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1546 {
1547 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1548 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1549 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1550 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1551 {
1552 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1553 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1554 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1555 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1556 {
1557 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1558 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1559 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1560 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1561 {
1562 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1563 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1564 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1565 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1566};
1567
1568static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1569 {
1570 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1571 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1572 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1573 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1574 {
1575 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1576 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1577 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1578 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1579 {
1580 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1581 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1582 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1583 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1584 {
1585 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1586 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1587 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1588 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1589 {
1590 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1591 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1592 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1593 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1594 {
1595 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1596 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1597 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1598 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1599 {
1600 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1601 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1602 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1603 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1604 {
1605 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1606 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1607 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1608 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1609 {
1610 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1611 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1612 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1613 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1614 {
1615 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1616 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1617 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1618 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1619 {
1620 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1621 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1622 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1623 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1624 {
1625 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1626 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1627 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1628 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1629 {
1630 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1631 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1632 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1633 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1634 {
1635 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1636 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1637 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1638 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1639 {
1640 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1641 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1642 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1643 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1644 {
1645 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1646 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1647 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1648 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1649 {
1650 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1651 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1652 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1653 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1654 {
1655 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1656 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1657 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1658 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1659 {
1660 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1661 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1662 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1663 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1664 {
1665 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1666 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1667 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1668 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1669 {
1670 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1671 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1672 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1673 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1674 {
1675 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1676 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1677 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1678 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1679 {
1680 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1681 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1682 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1683 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1684 {
1685 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1686 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1687 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1688 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1689 {
1690 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1691 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1692 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1693 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1694 {
1695 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1696 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1697 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1698 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1699 {
1700 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1701 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1702 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1703 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1704 {
1705 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1706 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1707 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1708 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1709 {
1710 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1711 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1712 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1713 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1714 {
1715 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1716 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1717 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1718 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1719 {
1720 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1721 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1722 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1723 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1724 {
1725 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1726 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1727 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1728 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1729 {
1730 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1731 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1732 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1733 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1734 {
1735 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1736 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1737 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1738 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1739 {
1740 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1741 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1742 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1743 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1744 {
1745 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1746 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1747 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1748 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1749 {
1750 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1751 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1752 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1753 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1754 {
1755 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1756 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1757 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1758 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1759 {
1760 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1761 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1762 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1763 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1764 {
1765 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1766 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1767 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1768 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1769 {
1770 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1771 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1772 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1773 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1774 {
1775 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1776 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1777 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1778 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1779 {
1780 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1781 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1782 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1783 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1784 {
1785 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1786 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1787 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1788 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1789 {
1790 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1791 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1792 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1793 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1794 {
1795 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1796 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1797 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1798 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1799 {
1800 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1801 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1802 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1803 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1804 {
1805 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1806 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1807 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1808 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1809 {
1810 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1811 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1812 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1813 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1814 {
1815 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1816 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1817 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1818 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1819 {
1820 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1821 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1822 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1823 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1824 {
1825 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1826 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1827 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1828 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1829 {
1830 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1831 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1832 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1833 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1834 {
1835 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1836 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1837 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1838 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1839 {
1840 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1841 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1842 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1843 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1844 {
1845 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1846 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1847 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1848 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1849 {
1850 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1851 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1852 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1853 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1854 {
1855 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1856 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1857 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1858 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1859 {
1860 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1861 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1862 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1863 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1864 {
1865 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1866 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1867 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1868 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1869 {
1870 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1871 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1872 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1873 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1874 {
1875 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1876 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1877 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1878 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1879 {
1880 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1881 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1882 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1883 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1884 {
1885 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1886 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1887 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1888 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1889 {
1890 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1891 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1892 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1893 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1894 {
1895 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1896 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1897 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1898 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1899 {
1900 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1901 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1902 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1903 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1904 {
1905 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1906 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1907 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1908 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1909 {
1910 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1911 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1912 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1913 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1914 {
1915 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1916 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1917 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1918 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1919 {
1920 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1921 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1922 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1923 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1924 {
1925 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1926 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1927 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1928 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1929 {
1930 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1931 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1932 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1933 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1934 {
1935 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1936 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1937 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1938 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1939 {
1940 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1941 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1942 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1943 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1944 {
1945 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1946 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1947 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1948 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1949 {
1950 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1951 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1952 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1953 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1954 {
1955 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1956 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1957 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1958 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1959 {
1960 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1961 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1962 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1963 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1964 {
1965 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1966 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1967 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1968 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1969 {
1970 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1971 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1972 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1973 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1974 {
1975 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1976 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1977 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1978 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1979 {
1980 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1981 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1982 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1983 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1984 {
1985 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1986 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1987 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1988 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1989 {
1990 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1991 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1992 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1993 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1994 {
1995 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1996 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1997 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1998 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1999 {
2000 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2001 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2002 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2003 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2004 {
2005 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2006 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2007 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2008 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2009 {
2010 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2011 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2012 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2013 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2014 {
2015 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2016 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2017 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2018 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2019 {
2020 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2021 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2022 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2023 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2024 {
2025 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2026 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2027 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2028 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2029 {
2030 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2031 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2032 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2033 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2034 {
2035 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2036 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2037 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2038 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2039 {
2040 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2041 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2042 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2043 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2044 {
2045 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2046 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2047 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2048 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2049 {
2050 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2051 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2052 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2053 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2054 {
2055 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2056 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2057 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2058 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2059 {
2060 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2061 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2062 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2063 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2064 {
2065 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2066 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2067 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2068 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2069 {
2070 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2071 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2072 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2073 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2074 {
2075 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2076 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2077 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2078 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2079 {
2080 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2081 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2082 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2083 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2084 {
2085 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2086 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2087 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2088 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2089 {
2090 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2091 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2092 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2093 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2094 {
2095 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2096 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2097 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2098 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2099 {
2100 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2101 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2102 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2103 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2104 {
2105 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2106 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2107 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2108 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2109 {
2110 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2111 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2112 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2113 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2114 {
2115 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2116 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2117 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2118 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2119 {
2120 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2121 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2122 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2123 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2124 {
2125 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2126 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2127 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2128 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2129 {
2130 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2131 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2132 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2133 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2134 {
2135 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2136 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2137 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2138 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2139 {
2140 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2141 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2142 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2143 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2144 {
2145 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2146 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2147 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2148 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2149 {
2150 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2151 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2152 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2153 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2154 {
2155 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2156 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2157 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2158 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2159 {
2160 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2161 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2162 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2163 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2164 {
2165 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2166 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2167 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2168 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2169 {
2170 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2171 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2172 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2173 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2174 {
2175 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2176 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2177 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2178 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2179 {
2180 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2181 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2182 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2183 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2184 {
2185 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2186 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2187 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2188 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2189};
2190
2191static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2192 {
2193 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2194 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2195 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2196 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2197 {
2198 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2199 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2200 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2201 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2202 {
2203 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2204 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2205 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2206 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2207 {
2208 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2209 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2210 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2211 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2212 {
2213 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2214 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2215 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2216 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2217 {
2218 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2219 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2220 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2221 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2222 {
2223 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2224 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2225 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2226 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2227 {
2228 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2229 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2230 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2231 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2232 {
2233 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2234 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2235 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2236 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2237 {
2238 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2239 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2240 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2241 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2242 {
2243 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2244 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2245 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2246 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2247 {
2248 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2249 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2250 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2251 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2252 {
2253 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2254 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2255 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2256 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2257 {
2258 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2259 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2260 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2261 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2262 {
2263 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2264 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2265 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2266 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2267 {
2268 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2269 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2270 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2271 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2272 {
2273 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2274 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2275 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2276 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2277 {
2278 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2279 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2280 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2281 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2282 {
2283 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2284 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2285 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2286 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2287 {
2288 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2289 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2290 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2291 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2292 {
2293 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2294 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2295 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2296 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2297 {
2298 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2299 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2300 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2301 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2302 {
2303 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2304 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2305 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2306 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2307 {
2308 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2309 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2310 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2311 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2312 {
2313 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2314 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2315 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2316 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2317 {
2318 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2319 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2320 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2321 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2322 {
2323 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2324 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2325 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2326 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2327 {
2328 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2329 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2330 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2331 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2332 {
2333 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2334 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2335 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2336 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2337 {
2338 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2339 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2340 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2341 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2342 {
2343 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2344 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2345 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2346 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2347 {
2348 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2349 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2350 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2351 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2352 {
2353 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2354 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2355 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2356 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2357 {
2358 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2359 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2360 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2361 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2362 {
2363 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2364 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2365 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2366 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2367 {
2368 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2369 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2370 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2371 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2372 {
2373 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2374 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2375 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2376 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2377 {
2378 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2379 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2380 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2381 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2382 {
2383 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2384 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2385 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2386 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2387 {
2388 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2389 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2390 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2391 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2392 {
2393 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2394 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2395 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2396 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2397 {
2398 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2399 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2400 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2401 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2402 {
2403 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2404 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2405 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2406 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2407 {
2408 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2409 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2410 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2411 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2412 {
2413 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2414 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2415 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2416 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2417 {
2418 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2419 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2420 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2421 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2422 {
2423 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2424 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2425 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2426 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2427 {
2428 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2429 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2430 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2431 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2432 {
2433 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2434 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2435 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2436 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2437 {
2438 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2439 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2440 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2441 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2442 {
2443 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2444 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2445 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2446 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2447 {
2448 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2449 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2450 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2451 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2452 {
2453 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2454 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2455 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2456 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2457 {
2458 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2459 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2460 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2461 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2462 {
2463 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2464 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2465 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2466 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2467 {
2468 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2469 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2470 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2471 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2472 {
2473 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2474 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2475 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2476 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2477 {
2478 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2479 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2480 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2481 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2482 {
2483 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2484 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2485 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2486 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2487 {
2488 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2489 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2490 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2491 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2492 {
2493 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2494 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2495 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2496 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2497 {
2498 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2499 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2500 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2501 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2502 {
2503 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2504 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2505 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2506 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2507 {
2508 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2509 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2510 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2511 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2512 {
2513 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2514 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2515 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2516 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2517 {
2518 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2519 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2520 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2521 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2522 {
2523 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2524 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2525 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2526 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2527 {
2528 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2529 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2530 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2531 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2532 {
2533 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2534 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2535 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2536 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2537 {
2538 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2539 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2540 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2541 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2542 {
2543 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2544 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2545 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2546 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2547 {
2548 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2549 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2550 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2551 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2552 {
2553 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2554 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2555 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2556 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2557 {
2558 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2559 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2560 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2561 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2562 {
2563 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2564 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2565 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2566 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2567 {
2568 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2569 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2570 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2571 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2572 {
2573 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2574 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2575 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2576 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2577 {
2578 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2579 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2580 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2581 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2582 {
2583 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2584 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2585 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2586 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2587 {
2588 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2589 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2590 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2591 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2592 {
2593 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2594 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2595 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2596 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2597 {
2598 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2599 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2600 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2601 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2602 {
2603 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2604 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2605 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2606 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2607 {
2608 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2609 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2610 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2611 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2612 {
2613 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2614 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2615 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2616 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2617 {
2618 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2619 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2620 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2621 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2622 {
2623 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2624 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2625 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2626 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2627 {
2628 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2629 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2630 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2631 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2632 {
2633 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2634 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2635 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2636 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2637 {
2638 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2639 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2640 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2641 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2642 {
2643 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2644 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2645 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2646 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2647 {
2648 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2649 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2650 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2651 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2652 {
2653 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2654 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2655 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2656 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2657 {
2658 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2659 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2660 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2661 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2662 {
2663 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2664 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2665 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2666 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2667 {
2668 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2669 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2670 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2671 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2672 {
2673 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2674 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2675 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2676 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2677 {
2678 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2679 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2680 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2681 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2682 {
2683 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2684 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2685 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2686 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2687 {
2688 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2689 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2690 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2691 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2692 {
2693 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2694 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2695 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2696 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2697 {
2698 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2699 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2700 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2701 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2702 {
2703 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2704 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2705 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2706 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2707 {
2708 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2709 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2710 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2711 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2712 {
2713 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2714 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2715 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2716 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2717 {
2718 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2719 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2720 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2721 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2722 {
2723 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2724 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2725 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2726 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2727 {
2728 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2729 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2730 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2731 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2732 {
2733 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2734 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2735 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2736 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2737 {
2738 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2739 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2740 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2741 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2742 {
2743 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2744 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2745 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2746 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2747 {
2748 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2749 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2750 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2751 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2752 {
2753 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2754 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2755 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2756 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2757 {
2758 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2759 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2760 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2761 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2762 {
2763 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2764 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2765 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2766 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2767 {
2768 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2769 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2770 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2771 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2772 {
2773 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2774 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2775 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2776 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2777 {
2778 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2779 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2780 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2781 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2782 {
2783 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2784 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2785 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2786 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2787 {
2788 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2789 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2790 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2791 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2792 {
2793 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2794 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2795 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2796 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2797 {
2798 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2799 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2800 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2801 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2802 {
2803 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2804 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2805 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2806 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2807 {
2808 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2809 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2810 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2811 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2812};
2813
2814static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2815 {
2816 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2817 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2818 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2819 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2820 {
2821 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2822 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2823 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2824 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2825 {
2826 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2827 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2828 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2829 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2830 {
2831 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2832 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2833 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2834 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2835 {
2836 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2837 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2838 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2839 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2840 {
2841 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2842 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2843 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2844 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2845 {
2846 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2847 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2848 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2849 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2850 {
2851 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2852 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2853 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2854 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2855 {
2856 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2857 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2858 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2859 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2860 {
2861 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2862 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2863 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2864 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2865 {
2866 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2867 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2868 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2869 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2870 {
2871 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2872 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2873 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2874 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2875 {
2876 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2877 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2878 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2879 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2880 {
2881 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2882 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2883 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2884 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2885 {
2886 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2887 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2888 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2889 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2890 {
2891 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2892 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2893 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2894 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2895 {
2896 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2897 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2898 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2899 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2900 {
2901 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2902 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2903 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2904 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2905 {
2906 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2907 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2908 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2909 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2910 {
2911 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2912 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2913 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2914 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2915 {
2916 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2917 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2918 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2919 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2920 {
2921 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2922 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2923 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2924 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2925 {
2926 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2927 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2928 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2929 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2930 {
2931 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2932 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2933 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2934 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2935 {
2936 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2937 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2938 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2939 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2940 {
2941 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2942 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2943 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2944 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2945 {
2946 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2947 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2948 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2949 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2950 {
2951 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2952 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2953 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2954 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2955 {
2956 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2957 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2958 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2959 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2960 {
2961 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2962 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2963 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2964 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2965 {
2966 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2967 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2968 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2969 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2970 {
2971 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2972 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2973 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2974 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2975 {
2976 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2977 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2978 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2979 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2980 {
2981 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2982 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2983 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2984 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2985 {
2986 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2987 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2988 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2989 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2990 {
2991 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2992 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2993 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2994 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2995 {
2996 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2997 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2998 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2999 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3000 {
3001 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3002 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3003 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3004 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3005 {
3006 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3007 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3008 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3009 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3010 {
3011 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3012 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3013 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3014 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3015 {
3016 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3017 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3018 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3019 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3020 {
3021 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3022 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3023 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3024 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3025 {
3026 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3027 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3028 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3029 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3030 {
3031 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3032 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3033 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3034 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3035 {
3036 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3037 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3038 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3039 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3040 {
3041 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3042 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3043 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3044 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3045 {
3046 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3047 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3048 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3049 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3050 {
3051 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3052 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3053 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3054 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3055 {
3056 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3057 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3058 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3059 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3060 {
3061 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3062 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3063 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3064 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3065 {
3066 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3067 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3068 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3069 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3070 {
3071 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3072 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3073 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3074 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3075 {
3076 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3077 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3078 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3079 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3080 {
3081 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3082 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3083 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3084 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3085 {
3086 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3087 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3088 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3089 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3090 {
3091 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3092 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3093 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3094 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3095 {
3096 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3097 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3098 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3099 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3100 {
3101 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3102 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3103 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3104 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3105 {
3106 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3107 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3108 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3109 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3110 {
3111 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3112 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3113 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3114 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3115 {
3116 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3117 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3118 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3119 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3120 {
3121 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3122 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3123 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3124 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3125 {
3126 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3127 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3128 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3129 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3130 {
3131 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3132 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3133 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3134 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3135 {
3136 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3137 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3138 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3139 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3140 {
3141 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3142 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3143 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3144 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3145 {
3146 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3147 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3148 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3149 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3150 {
3151 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3152 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3153 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3154 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3155 {
3156 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3157 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3158 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3159 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3160 {
3161 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3162 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3163 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3164 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3165 {
3166 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3167 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3168 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3169 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3170 {
3171 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3172 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3173 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3174 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3175 {
3176 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3177 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3178 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3179 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3180 {
3181 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3182 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3183 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3184 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3185 {
3186 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3187 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3188 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3189 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3190 {
3191 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3192 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3193 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3194 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3195 {
3196 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3197 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3198 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3199 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3200 {
3201 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3202 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3203 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3204 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3205 {
3206 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3207 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3208 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3209 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3210 {
3211 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3212 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3213 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3214 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3215 {
3216 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3217 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3218 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3219 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3220 {
3221 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3222 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3223 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3224 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3225 {
3226 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3227 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3228 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3229 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3230 {
3231 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3232 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3233 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3234 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3235 {
3236 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3237 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3238 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3239 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3240 {
3241 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3242 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3243 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3244 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3245 {
3246 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3247 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3248 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3249 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3250 {
3251 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3252 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3253 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3254 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3255 {
3256 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3257 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3258 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3259 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3260 {
3261 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3262 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3263 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3264 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3265 {
3266 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3267 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3268 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3269 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3270 {
3271 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3272 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3273 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3274 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3275 {
3276 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3277 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3278 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3279 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3280 {
3281 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3282 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3283 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3284 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3285 {
3286 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3287 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3288 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3289 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3290 {
3291 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3292 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3293 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3294 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3295 {
3296 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3297 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3298 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3299 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3300 {
3301 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3302 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3303 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3304 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3305 {
3306 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3307 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3308 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3309 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3310 {
3311 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3312 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3313 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3314 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3315 {
3316 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3317 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3318 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3319 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3320 {
3321 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3322 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3323 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3324 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3325 {
3326 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3327 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3328 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3329 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3330 {
3331 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3332 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3333 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3334 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3335 {
3336 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3337 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3338 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3339 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3340 {
3341 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3342 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3343 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3344 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3345 {
3346 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3347 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3348 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3349 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3350 {
3351 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3352 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3353 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3354 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3355 {
3356 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3357 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3358 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3359 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3360 {
3361 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3362 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3363 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3364 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3365 {
3366 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3367 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3368 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3369 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3370 {
3371 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3372 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3373 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3374 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3375 {
3376 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3377 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3378 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3379 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3380 {
3381 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3382 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3383 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3384 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3385 {
3386 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3387 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3388 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3389 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3390 {
3391 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3392 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3393 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3394 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3395 {
3396 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3397 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3398 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3399 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3400 {
3401 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3402 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3403 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3404 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3405 {
3406 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3407 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3408 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3409 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3410 {
3411 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3412 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3413 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3414 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3415 {
3416 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3417 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3418 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3419 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3420 {
3421 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3422 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3423 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3424 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3425 {
3426 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3427 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3428 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3429 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3430 {
3431 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3432 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3433 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3434 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3435};
3436
3437static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3438 {
3439 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3440 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3441 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3442 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3443 {
3444 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3445 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3446 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3447 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3448 {
3449 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3450 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3451 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3452 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3453 {
3454 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3455 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3456 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3457 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3458 {
3459 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3460 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3461 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3462 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3463 {
3464 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3465 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3466 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3467 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3468 {
3469 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3470 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3471 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3472 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3473 {
3474 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3475 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3476 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3477 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3478 {
3479 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3480 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3481 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3482 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3483 {
3484 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3485 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3486 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3487 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3488 {
3489 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3490 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3491 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3492 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3493 {
3494 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3495 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3496 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3497 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3498 {
3499 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3500 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3501 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3502 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3503 {
3504 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3505 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3506 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3507 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3508 {
3509 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3510 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3511 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3512 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3513 {
3514 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3515 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3516 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3517 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3518 {
3519 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3520 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3521 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3522 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3523 {
3524 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3525 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3526 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3527 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3528 {
3529 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3530 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3531 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3532 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3533 {
3534 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3535 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3536 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3537 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3538 {
3539 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3540 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3541 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3542 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3543 {
3544 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3545 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3546 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3547 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3548 {
3549 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3550 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3551 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3552 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3553 {
3554 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3555 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3556 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3557 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3558 {
3559 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3560 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3561 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3562 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3563 {
3564 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3565 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3566 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3567 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3568 {
3569 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3570 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3571 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3572 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3573 {
3574 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3575 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3576 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3577 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3578 {
3579 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3580 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3581 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3582 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3583 {
3584 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3585 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3586 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3587 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3588 {
3589 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3590 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3591 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3592 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3593 {
3594 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3595 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3596 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3597 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3598 {
3599 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3600 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3601 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3602 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3603 {
3604 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3605 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3606 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3607 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3608 {
3609 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3610 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3611 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3612 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3613 {
3614 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3615 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3616 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3617 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3618 {
3619 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3620 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3621 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3622 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3623 {
3624 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3625 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3626 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3627 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3628 {
3629 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3630 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3631 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3632 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3633 {
3634 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3635 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3636 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3637 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3638 {
3639 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3640 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3641 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3642 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3643 {
3644 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3645 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3646 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3647 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3648 {
3649 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3650 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3651 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3652 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3653 {
3654 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3655 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3656 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3657 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3658 {
3659 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3660 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3661 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3662 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3663 {
3664 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3665 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3666 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3667 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3668 {
3669 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3670 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3671 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3672 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3673 {
3674 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3675 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3676 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3677 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3678 {
3679 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3680 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3681 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3682 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3683 {
3684 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3685 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3686 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3687 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3688 {
3689 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3690 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3691 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3692 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3693 {
3694 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3695 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3696 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3697 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3698 {
3699 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3700 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3701 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3702 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3703 {
3704 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3705 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3706 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3707 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3708 {
3709 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3710 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3711 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3712 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3713 {
3714 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3715 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3716 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3717 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3718 {
3719 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3720 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3721 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3722 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3723 {
3724 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3725 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3726 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3727 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3728 {
3729 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3730 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3731 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3732 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3733 {
3734 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3735 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3736 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3737 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3738 {
3739 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3740 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3741 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3742 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3743 {
3744 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3745 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3746 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3747 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3748 {
3749 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3750 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3751 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3752 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3753 {
3754 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3755 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3756 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3757 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3758 {
3759 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3760 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3761 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3762 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3763 {
3764 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3765 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3766 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3767 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3768 {
3769 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3770 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3771 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3772 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3773 {
3774 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3775 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3776 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3777 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3778 {
3779 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3780 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3781 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3782 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3783 {
3784 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3785 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3786 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3787 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3788 {
3789 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3790 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3791 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3792 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3793 {
3794 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3795 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3796 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3797 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3798 {
3799 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3800 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3801 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3802 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3803 {
3804 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3805 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3806 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3807 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3808 {
3809 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3810 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3811 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3812 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3813 {
3814 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3815 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3816 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3817 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3818 {
3819 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3820 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3821 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3822 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3823 {
3824 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3825 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3826 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3827 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3828 {
3829 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3830 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3831 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3832 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3833 {
3834 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3835 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3836 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3837 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3838 {
3839 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3840 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3841 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3842 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3843 {
3844 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3845 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3846 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3847 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3848 {
3849 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3850 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3851 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3852 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3853 {
3854 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3855 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3856 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3857 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3858 {
3859 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3860 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3861 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3862 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3863 {
3864 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3865 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3866 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3867 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3868 {
3869 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3870 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3871 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3872 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3873 {
3874 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3875 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3876 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3877 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3878 {
3879 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3880 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3881 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3882 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3883 {
3884 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3885 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3886 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3887 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3888 {
3889 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3890 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3891 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3892 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3893 {
3894 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3895 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3896 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3897 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3898 {
3899 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3900 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3901 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3902 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3903 {
3904 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3905 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3906 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3907 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3908 {
3909 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3910 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3911 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3912 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3913 {
3914 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3915 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3916 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3917 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3918 {
3919 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3920 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3921 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3922 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3923 {
3924 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3925 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3926 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3927 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3928 {
3929 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3930 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3931 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3932 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3933 {
3934 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3935 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3936 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3937 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3938 {
3939 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3940 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3941 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3942 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3943 {
3944 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3945 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3946 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3947 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3948 {
3949 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3950 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3951 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3952 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3953 {
3954 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3955 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3956 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3957 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3958 {
3959 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3960 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3961 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3962 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3963 {
3964 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3965 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3966 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3967 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3968 {
3969 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3970 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3971 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3972 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3973 {
3974 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3975 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3976 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3977 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3978 {
3979 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3980 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3981 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3982 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3983 {
3984 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3985 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3986 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3987 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3988 {
3989 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3990 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3991 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3992 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3993 {
3994 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3995 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3996 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3997 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3998 {
3999 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4000 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4001 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4002 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4003 {
4004 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4005 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4006 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4007 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4008 {
4009 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4010 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4011 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4012 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4013 {
4014 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4015 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4016 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4017 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4018 {
4019 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4020 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4021 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4022 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4023 {
4024 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4025 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4026 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4027 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4028 {
4029 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4030 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4031 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4032 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4033 {
4034 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4035 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4036 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4037 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4038 {
4039 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4040 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4041 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4042 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4043 {
4044 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4045 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4046 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4047 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4048 {
4049 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4050 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4051 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4052 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4053 {
4054 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4055 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4056 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4057 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4058};
4059
4060static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4061 {
4062 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4063 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4064 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4065 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4066 {
4067 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4068 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4069 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4070 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4071 {
4072 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4073 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4074 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4075 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4076 {
4077 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4078 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4079 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4080 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4081 {
4082 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4083 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4084 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4085 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4086 {
4087 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4088 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4089 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4090 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4091 {
4092 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4093 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4094 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4095 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4096 {
4097 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4098 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4099 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4100 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4101 {
4102 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4103 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4104 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4105 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4106 {
4107 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4108 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4109 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4110 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4111 {
4112 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4113 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4114 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4115 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4116 {
4117 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4118 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4119 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4120 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4121 {
4122 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4123 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4124 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4125 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4126 {
4127 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4128 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4129 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4130 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4131 {
4132 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4133 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4134 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4135 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4136 {
4137 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4138 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4139 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4140 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4141 {
4142 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4143 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4144 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4145 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4146 {
4147 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4148 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4149 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4150 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4151 {
4152 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4153 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4154 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4155 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4156 {
4157 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4158 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4159 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4160 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4161 {
4162 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4163 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4164 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4165 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4166 {
4167 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4168 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4169 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4170 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4171 {
4172 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4173 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4174 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4175 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4176 {
4177 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4178 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4179 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4180 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4181 {
4182 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4183 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4184 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4185 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4186 {
4187 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4188 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4189 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4190 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4191 {
4192 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4193 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4194 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4195 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4196 {
4197 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4198 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4199 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4200 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4201 {
4202 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4203 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4204 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4205 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4206 {
4207 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4208 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4209 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4210 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4211 {
4212 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4213 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4214 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4215 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4216 {
4217 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4218 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4219 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4220 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4221 {
4222 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4223 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4224 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4225 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4226 {
4227 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4228 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4229 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4230 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4231 {
4232 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4233 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4234 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4235 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4236 {
4237 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4238 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4239 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4240 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4241 {
4242 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4243 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4244 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4245 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4246 {
4247 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4248 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4249 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4250 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4251 {
4252 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4253 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4254 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4255 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4256 {
4257 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4258 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4259 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4260 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4261 {
4262 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4263 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4264 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4265 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4266 {
4267 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4268 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4269 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4270 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4271 {
4272 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4273 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4274 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4275 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4276 {
4277 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4278 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4279 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4280 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4281 {
4282 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4283 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4284 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4285 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4286 {
4287 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4288 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4289 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4290 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4291 {
4292 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4293 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4294 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4295 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4296 {
4297 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4298 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4299 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4300 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4301 {
4302 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4303 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4304 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4305 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4306 {
4307 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4308 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4309 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4310 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4311 {
4312 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4313 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4314 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4315 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4316 {
4317 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4318 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4319 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4320 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4321 {
4322 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4323 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4324 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4325 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4326 {
4327 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4328 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4329 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4330 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4331 {
4332 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4333 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4334 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4335 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4336 {
4337 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4338 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4339 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4340 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4341 {
4342 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4343 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4344 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4345 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4346 {
4347 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4348 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4349 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4350 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4351 {
4352 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4353 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4354 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4355 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4356 {
4357 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4358 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4359 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4360 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4361 {
4362 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4363 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4364 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4365 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4366 {
4367 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4368 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4369 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4370 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4371 {
4372 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4373 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4374 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4375 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4376 {
4377 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4378 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4379 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4380 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4381 {
4382 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4383 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4384 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4385 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4386 {
4387 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4388 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4389 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4390 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4391 {
4392 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4393 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4394 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4395 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4396 {
4397 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4398 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4399 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4400 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4401 {
4402 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4403 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4404 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4405 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4406 {
4407 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4408 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4409 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4410 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4411 {
4412 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4413 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4414 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4415 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4416 {
4417 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4418 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4419 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4420 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4421 {
4422 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4423 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4424 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4425 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4426 {
4427 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4428 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4429 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4430 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4431 {
4432 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4433 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4434 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4435 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4436 {
4437 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4438 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4439 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4440 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4441 {
4442 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4443 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4444 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4445 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4446 {
4447 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4448 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4449 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4450 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4451 {
4452 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4453 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4454 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4455 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4456 {
4457 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4458 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4459 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4460 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4461 {
4462 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4463 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4464 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4465 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4466 {
4467 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4468 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4469 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4470 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4471 {
4472 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4473 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4474 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4475 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4476 {
4477 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4478 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4479 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4480 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4481 {
4482 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4483 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4484 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4485 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4486 {
4487 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4488 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4489 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4490 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4491 {
4492 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4493 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4494 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4495 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4496 {
4497 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4498 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4499 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4500 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4501 {
4502 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4503 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4504 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4505 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4506 {
4507 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4508 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4509 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4510 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4511 {
4512 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4513 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4514 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4515 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4516 {
4517 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4518 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4519 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4520 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4521 {
4522 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4523 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4524 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4525 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4526 {
4527 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4528 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4529 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4530 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4531 {
4532 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4533 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4534 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4535 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4536 {
4537 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4538 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4539 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4540 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4541 {
4542 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4543 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4544 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4545 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4546 {
4547 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4548 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4549 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4550 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4551 {
4552 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4553 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4554 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4555 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4556 {
4557 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4558 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4559 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4560 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4561 {
4562 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4563 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4564 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4565 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4566 {
4567 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4568 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4569 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4570 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4571 {
4572 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4573 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4574 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4575 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4576 {
4577 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4578 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4579 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4580 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4581 {
4582 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4583 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4584 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4585 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4586 {
4587 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4588 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4589 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4590 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4591 {
4592 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4593 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4594 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4595 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4596 {
4597 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4598 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4599 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4600 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4601 {
4602 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4603 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4604 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4605 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4606 {
4607 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4608 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4609 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4610 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4611 {
4612 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4613 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4614 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4615 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4616 {
4617 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4618 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4619 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4620 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4621 {
4622 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4623 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4624 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4625 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4626 {
4627 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4628 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4629 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4630 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4631 {
4632 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4633 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4634 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4635 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4636 {
4637 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4638 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4639 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4640 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4641 {
4642 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4643 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4644 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4645 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4646 {
4647 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4648 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4649 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4650 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4651 {
4652 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4653 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4654 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4655 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4656 {
4657 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4658 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4659 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4660 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4661 {
4662 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4663 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4664 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4665 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4666 {
4667 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4668 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4669 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4670 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4671 {
4672 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4673 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4674 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4675 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4676 {
4677 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4678 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4679 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4680 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4681};
4682
4683static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4684 {
4685 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4686 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4687 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4688 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4689 {
4690 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4691 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4692 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4693 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4694 {
4695 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4696 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4697 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4698 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4699 {
4700 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4701 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4702 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4703 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4704 {
4705 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4706 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4707 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4708 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4709 {
4710 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4711 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4712 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4713 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4714 {
4715 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4716 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4717 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4718 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4719 {
4720 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4721 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4722 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4723 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4724 {
4725 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4726 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4727 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4728 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4729 {
4730 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4731 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4732 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4733 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4734 {
4735 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4736 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4737 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4738 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4739 {
4740 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4741 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4742 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4743 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4744 {
4745 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4746 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4747 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4748 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4749 {
4750 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4751 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4752 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4753 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4754 {
4755 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4756 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4757 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4758 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4759 {
4760 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4761 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4762 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4763 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4764 {
4765 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4766 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4767 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4768 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4769 {
4770 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4771 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4772 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4773 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4774 {
4775 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4776 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4777 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4778 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4779 {
4780 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4781 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4782 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4783 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4784 {
4785 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4786 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4787 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4788 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4789 {
4790 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4791 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4792 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4793 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4794 {
4795 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4796 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4797 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4798 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4799 {
4800 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4801 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4802 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4803 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4804 {
4805 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4806 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4807 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4808 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4809 {
4810 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4811 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4812 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4813 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4814 {
4815 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4816 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4817 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4818 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4819 {
4820 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4821 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4822 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4823 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4824 {
4825 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4826 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4827 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4828 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4829 {
4830 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4831 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4832 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4833 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4834 {
4835 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4836 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4837 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4838 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4839 {
4840 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4841 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4842 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4843 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4844 {
4845 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4846 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4847 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4848 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4849 {
4850 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4851 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4852 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4853 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4854 {
4855 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4856 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4857 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4858 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4859 {
4860 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4861 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4862 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4863 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4864 {
4865 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4866 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4867 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4868 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4869 {
4870 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4871 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4872 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4873 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4874 {
4875 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4876 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4877 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4878 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4879 {
4880 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4881 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4882 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4883 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4884 {
4885 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4886 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4887 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4888 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4889 {
4890 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4891 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4892 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4893 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4894 {
4895 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4896 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4897 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4898 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4899 {
4900 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4901 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4902 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4903 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4904 {
4905 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4906 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4907 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4908 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4909 {
4910 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4911 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4912 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4913 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4914 {
4915 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4916 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4917 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4918 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4919 {
4920 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4921 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4922 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4923 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4924 {
4925 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4926 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4927 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4928 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4929 {
4930 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4931 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4932 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4933 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4934 {
4935 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4936 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4937 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4938 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4939 {
4940 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4941 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4942 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4943 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4944 {
4945 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4946 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4947 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4948 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4949 {
4950 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4951 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4952 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4953 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4954 {
4955 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4956 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4957 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4958 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4959 {
4960 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4961 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4962 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4963 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4964 {
4965 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4966 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4967 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4968 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4969 {
4970 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4971 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4972 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4973 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4974 {
4975 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4976 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4977 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4978 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4979 {
4980 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4981 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4982 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4983 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4984 {
4985 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4986 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4987 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4988 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4989 {
4990 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4991 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4992 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4993 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4994 {
4995 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4996 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4997 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4998 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4999 {
5000 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5001 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5002 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5003 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5004 {
5005 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5006 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5007 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5008 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5009 {
5010 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5011 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5012 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5013 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5014 {
5015 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5016 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5017 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5018 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5019 {
5020 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5021 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5022 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5023 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5024 {
5025 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5026 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5027 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5028 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5029 {
5030 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5031 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5032 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5033 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5034 {
5035 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5036 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5037 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5038 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5039 {
5040 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5041 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5042 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5043 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5044 {
5045 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5046 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5047 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5048 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5049 {
5050 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5051 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5052 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5053 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5054 {
5055 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5056 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5057 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5058 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5059 {
5060 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5061 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5062 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5063 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5064 {
5065 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5066 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5067 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5068 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5069 {
5070 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5071 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5072 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5073 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5074 {
5075 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5076 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5077 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5078 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5079 {
5080 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5081 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5082 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5083 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5084 {
5085 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5086 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5087 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5088 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5089 {
5090 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5091 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5092 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5093 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5094 {
5095 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5096 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5097 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5098 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5099 {
5100 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5101 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5102 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5103 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5104 {
5105 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5106 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5107 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5108 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5109 {
5110 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5111 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5112 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5113 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5114 {
5115 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5116 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5117 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5118 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5119 {
5120 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5121 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5122 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5123 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5124 {
5125 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5126 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5127 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5128 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5129 {
5130 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5131 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5132 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5133 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5134 {
5135 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5136 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5137 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5138 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5139 {
5140 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5141 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5142 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5143 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5144 {
5145 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5146 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5147 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5148 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5149 {
5150 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5151 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5152 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5153 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5154 {
5155 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5156 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5157 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5158 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5159 {
5160 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5161 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5162 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5163 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5164 {
5165 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5166 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5167 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5168 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5169 {
5170 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5171 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5172 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5173 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5174 {
5175 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5176 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5177 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5178 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5179 {
5180 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5181 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5182 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5183 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5184 {
5185 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5186 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5187 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5188 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5189 {
5190 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5191 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5192 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5193 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5194 {
5195 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5196 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5197 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5198 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5199 {
5200 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5201 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5202 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5203 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5204 {
5205 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5206 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5207 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5208 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5209 {
5210 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5211 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5212 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5213 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5214 {
5215 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5216 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5217 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5218 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5219 {
5220 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5221 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5222 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5223 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5224 {
5225 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5226 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5227 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5228 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5229 {
5230 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5231 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5232 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5233 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5234 {
5235 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5236 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5237 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5238 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5239 {
5240 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5241 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5242 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5243 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5244 {
5245 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5246 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5247 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5248 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5249 {
5250 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5251 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5252 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5253 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5254 {
5255 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5256 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5257 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5258 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5259 {
5260 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5261 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5262 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5263 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5264 {
5265 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5266 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5267 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5268 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5269 {
5270 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5271 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5272 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5273 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5274 {
5275 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5276 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5277 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5278 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5279 {
5280 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5281 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5282 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5283 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5284 {
5285 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5286 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5287 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5288 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5289 {
5290 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5291 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5292 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5293 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5294 {
5295 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5296 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5297 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5298 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5299 {
5300 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5301 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5302 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5303 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5304};
5305
5306static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5307 {
5308 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5309 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5310 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5311 0x0215,
5312 0x0216,
5313 },
5314 {
5315 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5316 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5317 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5318 0x0214,
5319 0x0215,
5320 },
5321 {
5322 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5323 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5324 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5325 0x0213,
5326 0x0214,
5327 },
5328 {
5329 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5330 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5331 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5332 0x0212,
5333 0x0213,
5334 },
5335 {
5336 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5337 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5338 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5339 0x0211,
5340 0x0212,
5341 },
5342 {
5343 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5344 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5345 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5346 0x020f,
5347 0x0211,
5348 },
5349 {
5350 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5351 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5352 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5353 0x020e,
5354 0x020f,
5355 },
5356 {
5357 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5358 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5359 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5360 0x020d,
5361 0x020e,
5362 },
5363 {
5364 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5365 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5366 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5367 0x020c,
5368 0x020d,
5369 },
5370 {
5371 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5372 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5373 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5374 0x020b,
5375 0x020c,
5376 },
5377 {
5378 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5379 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5380 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5381 0x020a,
5382 0x020b,
5383 },
5384 {
5385 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5386 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5387 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5388 0x0209,
5389 0x020a,
5390 },
5391 {
5392 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5393 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5394 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5395 0x0208,
5396 0x0209,
5397 },
5398 {
5399 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5400 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5401 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5402 0x0207,
5403 0x0208,
5404 },
5405 {
5406 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5407 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5408 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5409 0x0206,
5410 0x0207,
5411 },
5412 {
5413 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5414 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5415 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5416 0x0205,
5417 0x0206,
5418 },
5419 {
5420 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5421 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5422 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5423 0x0204,
5424 0x0205,
5425 },
5426 {
5427 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5428 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5429 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5430 0x0203,
5431 0x0204,
5432 },
5433 {
5434 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5435 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5436 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5437 0x0202,
5438 0x0203,
5439 },
5440 {
5441 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5442 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5443 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5444 0x0201,
5445 0x0202,
5446 },
5447 {
5448 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5449 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5450 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5451 0x0200,
5452 0x0201,
5453 },
5454 {
5455 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5456 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5457 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5458 0x01ff,
5459 0x0200,
5460 },
5461 {
5462 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5463 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5464 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5465 0x01fe,
5466 0x01ff,
5467 },
5468 {
5469 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5470 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5471 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5472 0x01fc,
5473 0x01fd,
5474 },
5475 {
5476 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5477 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5478 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5479 0x01fb,
5480 0x01fc,
5481 },
5482 {
5483 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5484 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5485 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5486 0x01fa,
5487 0x01fb,
5488 },
5489 {
5490 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5491 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5492 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5493 0x01f9,
5494 0x01fa,
5495 },
5496 {
5497 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5498 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5499 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5500 0x01f8,
5501 0x01f9,
5502 },
5503 {
5504 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5505 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5506 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5507 0x01f7,
5508 0x01f8,
5509 },
5510 {
5511 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5512 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5513 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5514 0x01f6,
5515 0x01f7,
5516 },
5517 {
5518 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5519 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5520 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5521 0x01f5,
5522 0x01f6,
5523 },
5524 {
5525 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5526 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5527 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5528 0x01f4,
5529 0x01f5,
5530 },
5531 {
5532 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5533 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5534 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5535 0x01f3,
5536 0x01f4,
5537 },
5538 {
5539 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5540 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5541 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5542 0x01f2,
5543 0x01f3,
5544 },
5545 {
5546 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5547 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5548 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5549 0x01f1,
5550 0x01f2,
5551 },
5552 {
5553 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5554 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5555 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5556 0x01f0,
5557 0x01f1,
5558 },
5559 {
5560 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5561 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5562 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5563 0x01f0,
5564 0x01f0,
5565 },
5566 {
5567 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5568 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5569 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5570 0x01ef,
5571 0x01f0,
5572 },
5573 {
5574 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5575 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5576 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5577 0x01ee,
5578 0x01ef,
5579 },
5580 {
5581 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5582 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5583 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5584 0x01ed,
5585 0x01ee,
5586 },
5587 {
5588 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5589 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5590 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5591 0x01ec,
5592 0x01ed,
5593 },
5594 {
5595 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5596 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5597 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5598 0x01eb,
5599 0x01ec,
5600 },
5601 {
5602 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5603 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5604 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5605 0x01ea,
5606 0x01eb,
5607 },
5608 {
5609 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5610 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5611 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5612 0x01e9,
5613 0x01ea,
5614 },
5615 {
5616 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5617 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5618 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5619 0x01e8,
5620 0x01e9,
5621 },
5622 {
5623 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5624 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5625 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5626 0x01e7,
5627 0x01e8,
5628 },
5629 {
5630 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5631 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5632 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5633 0x01e6,
5634 0x01e7,
5635 },
5636 {
5637 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5638 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5639 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5640 0x01e5,
5641 0x01e6,
5642 },
5643 {
5644 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5645 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5646 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5647 0x01e5,
5648 0x01e5,
5649 },
5650 {
5651 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5652 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5653 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5654 0x01e4,
5655 0x01e5,
5656 },
5657 {
5658 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5659 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5660 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5661 0x01e3,
5662 0x01e4,
5663 },
5664 {
5665 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5666 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5667 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5668 0x01e2,
5669 0x01e3,
5670 },
5671 {
5672 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5673 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5674 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5675 0x01e1,
5676 0x01e2,
5677 },
5678 {
5679 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5680 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5681 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5682 0x01e0,
5683 0x01e1,
5684 },
5685 {
5686 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5687 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5688 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5689 0x01df,
5690 0x01e0,
5691 },
5692 {
5693 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5694 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5695 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5696 0x01de,
5697 0x01df,
5698 },
5699 {
5700 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5701 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5702 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5703 0x01dd,
5704 0x01de,
5705 },
5706 {
5707 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5708 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5709 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5710 0x01dd,
5711 0x01dd,
5712 },
5713 {
5714 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5715 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5716 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5717 0x01dc,
5718 0x01dd,
5719 },
5720 {
5721 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5722 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5723 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5724 0x01db,
5725 0x01dc,
5726 },
5727 {
5728 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5729 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5730 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5731 0x01da,
5732 0x01db,
5733 },
5734 {
5735 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5736 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5737 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5738 0x01d9,
5739 0x01da,
5740 },
5741 {
5742 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5743 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5744 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5745 0x01d8,
5746 0x01d9,
5747 },
5748 {
5749 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5750 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5751 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5752 0x01d7,
5753 0x01d8,
5754 },
5755 {
5756 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5757 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5758 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5759 0x01d7,
5760 0x01d7,
5761 },
5762 {
5763 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5764 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5765 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5766 0x01d6,
5767 0x01d7,
5768 },
5769 {
5770 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5771 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5772 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5773 0x01d5,
5774 0x01d6,
5775 },
5776 {
5777 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5778 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5779 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5780 0x01d4,
5781 0x01d5,
5782 },
5783 {
5784 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5785 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5786 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5787 0x01d3,
5788 0x01d4,
5789 },
5790 {
5791 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5792 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5793 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5794 0x01d2,
5795 0x01d3,
5796 },
5797 {
5798 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5799 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5800 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5801 0x01d2,
5802 0x01d2,
5803 },
5804 {
5805 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5806 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5807 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5808 0x01d1,
5809 0x01d2,
5810 },
5811 {
5812 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5813 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5814 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5815 0x01d0,
5816 0x01d1,
5817 },
5818 {
5819 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5820 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5821 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5822 0x01cf,
5823 0x01d0,
5824 },
5825 {
5826 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5827 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5828 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5829 0x01ce,
5830 0x01cf,
5831 },
5832 {
5833 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5834 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5835 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5836 0x01ce,
5837 0x01ce,
5838 },
5839 {
5840 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5841 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5842 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5843 0x01cd,
5844 0x01ce,
5845 },
5846 {
5847 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5848 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5849 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5850 0x01cc,
5851 0x01cd,
5852 },
5853 {
5854 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5855 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5856 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5857 0x01cb,
5858 0x01cc,
5859 },
5860 {
5861 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5862 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5863 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5864 0x01ca,
5865 0x01cb,
5866 },
5867 {
5868 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5869 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5870 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5871 0x01ca,
5872 0x01cb,
5873 },
5874 {
5875 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5876 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5877 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5878 0x01c9,
5879 0x01ca,
5880 },
5881 {
5882 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5883 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5884 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5885 0x01c9,
5886 0x01ca,
5887 },
5888 {
5889 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5890 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5891 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5892 0x01c9,
5893 0x01c9,
5894 },
5895 {
5896 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5897 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5898 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5899 0x01c8,
5900 0x01c9,
5901 },
5902 {
5903 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5904 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5905 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5906 0x01c8,
5907 0x01c9,
5908 },
5909 {
5910 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5911 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5912 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5913 0x01c8,
5914 0x01c8,
5915 },
5916 {
5917 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5918 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5919 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5920 0x01c7,
5921 0x01c8,
5922 },
5923 {
5924 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5925 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5926 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5927 0x01c7,
5928 0x01c8,
5929 },
5930 {
5931 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5932 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5933 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5934 0x01c6,
5935 0x01c7,
5936 },
5937 {
5938 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5939 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5940 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5941 0x01c6,
5942 0x01c7,
5943 },
5944 {
5945 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5946 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5947 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5948 0x01c6,
5949 0x01c6,
5950 },
5951 {
5952 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5953 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5954 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5955 0x01c5,
5956 0x01c6,
5957 },
5958 {
5959 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5960 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5961 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5962 0x01c5,
5963 0x01c6,
5964 },
5965 {
5966 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5967 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5968 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5969 0x01c4,
5970 0x01c5,
5971 },
5972 {
5973 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5974 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5975 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5976 0x01c4,
5977 0x01c5,
5978 },
5979 {
5980 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5981 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5982 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5983 0x01c4,
5984 0x01c4,
5985 },
5986 {
5987 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5988 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5989 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5990 0x01c3,
5991 0x01c4,
5992 },
5993 {
5994 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5995 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5996 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5997 0x01c3,
5998 0x01c4,
5999 },
6000 {
6001 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6002 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6003 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6004 0x01c2,
6005 0x01c3,
6006 },
6007 {
6008 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6009 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6010 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6011 0x01c2,
6012 0x01c3,
6013 },
6014 {
6015 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6016 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6017 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6018 0x01c2,
6019 0x01c2,
6020 },
6021 {
6022 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6023 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6024 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6025 0x01c1,
6026 0x01c2,
6027 },
6028 {
6029 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6030 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6031 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6032 0x01c0,
6033 0x01c1,
6034 },
6035 {
6036 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6037 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6038 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6039 0x01bf,
6040 0x01c0,
6041 },
6042 {
6043 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6044 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6045 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6046 0x01bf,
6047 0x01bf,
6048 },
6049 {
6050 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6051 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6052 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6053 0x01be,
6054 0x01bf,
6055 },
6056 {
6057 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6058 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6059 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6060 0x01bd,
6061 0x01be,
6062 },
6063 {
6064 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6065 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6066 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6067 0x01bc,
6068 0x01bd,
6069 },
6070 {
6071 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6072 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6073 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6074 0x043f,
6075 0x0443,
6076 },
6077 {
6078 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6079 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6080 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6081 0x043d,
6082 0x0441,
6083 },
6084 {
6085 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6086 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6087 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6088 0x043a,
6089 0x043f,
6090 },
6091 {
6092 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6093 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6094 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6095 0x0438,
6096 0x043d,
6097 },
6098 {
6099 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6100 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6101 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6102 0x0436,
6103 0x043a,
6104 },
6105 {
6106 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6107 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6108 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6109 0x0434,
6110 0x0438,
6111 },
6112 {
6113 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6114 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6115 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6116 0x0431,
6117 0x0436,
6118 },
6119 {
6120 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6121 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6122 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6123 0x042f,
6124 0x0434,
6125 },
6126 {
6127 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6128 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6129 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6130 0x042d,
6131 0x0431,
6132 },
6133 {
6134 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6135 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6136 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6137 0x042b,
6138 0x042f,
6139 },
6140 {
6141 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6142 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6143 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6144 0x0429,
6145 0x042d,
6146 },
6147 {
6148 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6149 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6150 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6151 0x0427,
6152 0x042b,
6153 },
6154 {
6155 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6156 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6157 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6158 0x0424,
6159 0x0429,
6160 },
6161 {
6162 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6163 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6164 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6165 0x041f,
6166 0x0424}
6167};
6168
6169static const struct chan_info_nphy_radio2057_rev5
6170chan_info_nphyrev8_2057_rev5[] = {
6171 {
6172 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6173 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6174 0x043a, 0x043f, 0x0443},
6175 {
6176 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6177 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6178 0x0438, 0x043d, 0x0441},
6179 {
6180 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6181 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6182 0x0436, 0x043a, 0x043f},
6183 {
6184 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6185 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6186 0x0434, 0x0438, 0x043d},
6187 {
6188 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6189 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6190 0x0431, 0x0436, 0x043a},
6191 {
6192 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6193 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6194 0x042f, 0x0434, 0x0438},
6195 {
6196 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6197 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6198 0x042d, 0x0431, 0x0436},
6199 {
6200 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6201 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6202 0x042b, 0x042f, 0x0434},
6203 {
6204 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6205 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6206 0x0429, 0x042d, 0x0431},
6207 {
6208 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6209 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6210 0x0427, 0x042b, 0x042f},
6211 {
6212 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6213 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6214 0x0424, 0x0429, 0x042d},
6215 {
6216 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6217 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6218 0x0422, 0x0427, 0x042b},
6219 {
6220 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6221 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6222 0x0420, 0x0424, 0x0429},
6223 {
6224 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6225 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6226 0x041b, 0x041f, 0x0424}
6227};
6228
6229static const struct chan_info_nphy_radio2057_rev5
6230chan_info_nphyrev9_2057_rev5v1[] = {
6231 {
6232 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6233 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6234 0x043a, 0x043f, 0x0443},
6235 {
6236 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6237 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6238 0x0438, 0x043d, 0x0441},
6239 {
6240 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6241 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6242 0x0436, 0x043a, 0x043f},
6243 {
6244 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6245 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6246 0x0434, 0x0438, 0x043d},
6247 {
6248 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6249 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6250 0x0431, 0x0436, 0x043a},
6251 {
6252 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6253 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6254 0x042f, 0x0434, 0x0438},
6255 {
6256 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6257 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6258 0x042d, 0x0431, 0x0436},
6259 {
6260 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6261 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6262 0x042b, 0x042f, 0x0434},
6263 {
6264 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6265 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6266 0x0429, 0x042d, 0x0431},
6267 {
6268 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6269 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6270 0x0427, 0x042b, 0x042f},
6271 {
6272 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6273 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6274 0x0424, 0x0429, 0x042d},
6275 {
6276 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6277 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6278 0x0422, 0x0427, 0x042b},
6279 {
6280 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6281 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6282 0x0420, 0x0424, 0x0429},
6283 {
6284 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6285 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6286 0x041b, 0x041f, 0x0424}
6287};
6288
6289static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6290 {
6291 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6292 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6293 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6294 0x0215,
6295 0x0216},
6296 {
6297 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6298 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6299 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6300 0x0214,
6301 0x0215},
6302 {
6303 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6304 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6305 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6306 0x0213,
6307 0x0214},
6308 {
6309 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6310 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6311 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6312 0x0212,
6313 0x0213},
6314 {
6315 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6316 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6317 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6318 0x0211,
6319 0x0212},
6320 {
6321 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6322 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6323 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6324 0x020f,
6325 0x0211},
6326 {
6327 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6328 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6329 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6330 0x020e,
6331 0x020f},
6332 {
6333 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6334 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6335 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6336 0x020d,
6337 0x020e},
6338 {
6339 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6340 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6341 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6342 0x020c,
6343 0x020d},
6344 {
6345 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6346 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6347 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6348 0x020b,
6349 0x020c},
6350 {
6351 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6352 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6353 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6354 0x020a,
6355 0x020b},
6356 {
6357 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6358 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6359 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6360 0x0209,
6361 0x020a},
6362 {
6363 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6364 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6365 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6366 0x0208,
6367 0x0209},
6368 {
6369 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6370 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6371 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6372 0x0207,
6373 0x0208},
6374 {
6375 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6376 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6377 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6378 0x0206,
6379 0x0207},
6380 {
6381 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6382 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6383 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6384 0x0205,
6385 0x0206},
6386 {
6387 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6388 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6389 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6390 0x0204,
6391 0x0205},
6392 {
6393 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6394 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6395 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6396 0x0203,
6397 0x0204},
6398 {
6399 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6400 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6401 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6402 0x0202,
6403 0x0203},
6404 {
6405 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6406 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6407 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6408 0x0201,
6409 0x0202},
6410 {
6411 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6412 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6413 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6414 0x0200,
6415 0x0201},
6416 {
6417 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6418 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6419 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6420 0x01ff,
6421 0x0200},
6422 {
6423 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6424 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6425 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6426 0x01fe,
6427 0x01ff},
6428 {
6429 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6430 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6431 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6432 0x01fc,
6433 0x01fd},
6434 {
6435 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6436 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6437 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6438 0x01fb,
6439 0x01fc},
6440 {
6441 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6442 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6443 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6444 0x01fa,
6445 0x01fb},
6446 {
6447 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6448 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6449 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6450 0x01f9,
6451 0x01fa},
6452 {
6453 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6454 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6455 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6456 0x01f8,
6457 0x01f9},
6458 {
6459 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6460 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6461 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6462 0x01f7,
6463 0x01f8},
6464 {
6465 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6466 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6467 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6468 0x01f6,
6469 0x01f7},
6470 {
6471 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6472 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6473 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6474 0x01f5,
6475 0x01f6},
6476 {
6477 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6478 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6479 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6480 0x01f4,
6481 0x01f5},
6482 {
6483 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6484 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6485 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6486 0x01f3,
6487 0x01f4},
6488 {
6489 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6490 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6491 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6492 0x01f2,
6493 0x01f3},
6494 {
6495 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6496 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6497 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6498 0x01f1,
6499 0x01f2},
6500 {
6501 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6502 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6503 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6504 0x01f0,
6505 0x01f1},
6506 {
6507 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6508 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6509 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6510 0x01f0,
6511 0x01f0},
6512 {
6513 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6514 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6515 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6516 0x01ef,
6517 0x01f0},
6518 {
6519 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6520 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6521 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6522 0x01ee,
6523 0x01ef},
6524 {
6525 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6526 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6527 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6528 0x01ed,
6529 0x01ee},
6530 {
6531 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6532 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6533 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6534 0x01ec,
6535 0x01ed},
6536 {
6537 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6538 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6539 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6540 0x01eb,
6541 0x01ec},
6542 {
6543 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6544 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6545 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6546 0x01ea,
6547 0x01eb},
6548 {
6549 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6550 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6551 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6552 0x01e9,
6553 0x01ea},
6554 {
6555 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6556 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6557 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6558 0x01e8,
6559 0x01e9},
6560 {
6561 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6562 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6563 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6564 0x01e7,
6565 0x01e8},
6566 {
6567 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6568 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6569 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6570 0x01e6,
6571 0x01e7},
6572 {
6573 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6574 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6575 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6576 0x01e5,
6577 0x01e6},
6578 {
6579 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6580 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6581 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6582 0x01e5,
6583 0x01e5},
6584 {
6585 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6586 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6587 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6588 0x01e4,
6589 0x01e5},
6590 {
6591 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6592 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6593 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6594 0x01e3,
6595 0x01e4},
6596 {
6597 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6598 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6599 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6600 0x01e2,
6601 0x01e3},
6602 {
6603 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6604 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6605 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6606 0x01e1,
6607 0x01e2},
6608 {
6609 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6610 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6611 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6612 0x01e0,
6613 0x01e1},
6614 {
6615 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6616 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6617 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6618 0x01df,
6619 0x01e0},
6620 {
6621 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6622 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6623 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6624 0x01de,
6625 0x01df},
6626 {
6627 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6628 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6629 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6630 0x01dd,
6631 0x01de},
6632 {
6633 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6634 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6635 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6636 0x01dd,
6637 0x01dd},
6638 {
6639 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6640 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6641 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6642 0x01dc,
6643 0x01dd},
6644 {
6645 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6646 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6647 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6648 0x01db,
6649 0x01dc},
6650 {
6651 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6652 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6653 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6654 0x01da,
6655 0x01db},
6656 {
6657 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6658 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6659 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6660 0x01d9,
6661 0x01da},
6662 {
6663 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6664 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6665 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6666 0x01d8,
6667 0x01d9},
6668 {
6669 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6670 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6671 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6672 0x01d7,
6673 0x01d8},
6674 {
6675 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6676 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6677 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6678 0x01d7,
6679 0x01d7},
6680 {
6681 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6682 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6683 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6684 0x01d6,
6685 0x01d7},
6686 {
6687 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6688 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6689 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6690 0x01d5,
6691 0x01d6},
6692 {
6693 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6694 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6695 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6696 0x01d4,
6697 0x01d5},
6698 {
6699 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6700 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6701 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6702 0x01d3,
6703 0x01d4},
6704 {
6705 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6706 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6707 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6708 0x01d2,
6709 0x01d3},
6710 {
6711 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6712 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6713 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6714 0x01d2,
6715 0x01d2},
6716 {
6717 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6718 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6719 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6720 0x01d1,
6721 0x01d2},
6722 {
6723 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6724 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6725 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6726 0x01d0,
6727 0x01d1},
6728 {
6729 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6730 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6731 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6732 0x01cf,
6733 0x01d0},
6734 {
6735 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6736 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6737 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6738 0x01ce,
6739 0x01cf},
6740 {
6741 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6742 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6743 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6744 0x01ce,
6745 0x01ce},
6746 {
6747 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6748 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6749 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6750 0x01cd,
6751 0x01ce},
6752 {
6753 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6754 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6755 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6756 0x01cc,
6757 0x01cd},
6758 {
6759 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6760 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6761 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6762 0x01cb,
6763 0x01cc},
6764 {
6765 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6766 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6767 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6768 0x01ca,
6769 0x01cb},
6770 {
6771 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6772 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6773 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6774 0x01ca,
6775 0x01cb},
6776 {
6777 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6778 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6779 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6780 0x01c9,
6781 0x01ca},
6782 {
6783 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6784 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6785 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6786 0x01c9,
6787 0x01ca},
6788 {
6789 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6790 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6791 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6792 0x01c9,
6793 0x01c9},
6794 {
6795 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6796 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6797 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6798 0x01c8,
6799 0x01c9},
6800 {
6801 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6802 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6803 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6804 0x01c8,
6805 0x01c9},
6806 {
6807 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6808 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6809 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6810 0x01c8,
6811 0x01c8},
6812 {
6813 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6814 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6815 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6816 0x01c7,
6817 0x01c8},
6818 {
6819 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6820 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6821 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6822 0x01c7,
6823 0x01c8},
6824 {
6825 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6826 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6827 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6828 0x01c6,
6829 0x01c7},
6830 {
6831 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6832 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6833 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6834 0x01c6,
6835 0x01c7},
6836 {
6837 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6838 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6839 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6840 0x01c6,
6841 0x01c6},
6842 {
6843 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6844 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6845 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6846 0x01c5,
6847 0x01c6},
6848 {
6849 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6850 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6851 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6852 0x01c5,
6853 0x01c6},
6854 {
6855 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6856 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6857 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6858 0x01c4,
6859 0x01c5},
6860 {
6861 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6862 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6863 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6864 0x01c4,
6865 0x01c5},
6866 {
6867 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6868 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6869 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6870 0x01c4,
6871 0x01c4},
6872 {
6873 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6874 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6875 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6876 0x01c3,
6877 0x01c4},
6878 {
6879 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6880 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6881 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6882 0x01c3,
6883 0x01c4},
6884 {
6885 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6886 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6887 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6888 0x01c2,
6889 0x01c3},
6890 {
6891 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6892 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6893 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6894 0x01c2,
6895 0x01c3},
6896 {
6897 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6898 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6899 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6900 0x01c2,
6901 0x01c2},
6902 {
6903 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6904 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6905 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6906 0x01c1,
6907 0x01c2},
6908 {
6909 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6910 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6911 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6912 0x01c0,
6913 0x01c1},
6914 {
6915 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6916 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6917 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6918 0x01bf,
6919 0x01c0},
6920 {
6921 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6922 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6923 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6924 0x01bf,
6925 0x01bf},
6926 {
6927 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6928 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6929 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6930 0x01be,
6931 0x01bf},
6932 {
6933 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6934 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6935 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6936 0x01bd,
6937 0x01be},
6938 {
6939 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6940 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6941 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6942 0x01bc,
6943 0x01bd},
6944 {
6945 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6946 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6947 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6948 0x043f,
6949 0x0443},
6950 {
6951 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6952 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6953 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6954 0x043d,
6955 0x0441},
6956 {
6957 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6958 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6959 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6960 0x043a,
6961 0x043f},
6962 {
6963 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6964 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6965 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6966 0x0438,
6967 0x043d},
6968 {
6969 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6970 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6971 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6972 0x0436,
6973 0x043a},
6974 {
6975 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6976 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6977 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6978 0x0434,
6979 0x0438},
6980 {
6981 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6982 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6983 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6984 0x0431,
6985 0x0436},
6986 {
6987 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6988 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6989 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6990 0x042f,
6991 0x0434},
6992 {
6993 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6994 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6995 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6996 0x042d,
6997 0x0431},
6998 {
6999 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7000 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7001 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7002 0x042b,
7003 0x042f},
7004 {
7005 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7006 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7007 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7008 0x0429,
7009 0x042d},
7010 {
7011 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7012 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7013 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7014 0x0427,
7015 0x042b},
7016 {
7017 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7018 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7019 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7020 0x0424,
7021 0x0429},
7022 {
7023 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7024 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7025 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7026 0x041f,
7027 0x0424}
7028};
7029
7030static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7031 {
7032 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7033 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7034 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7035 0x0214,
7036 0x0215},
7037 {
7038 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7039 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7040 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7041 0x0213,
7042 0x0214},
7043 {
7044 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7045 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7046 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7047 0x0212,
7048 0x0213},
7049 {
7050 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7051 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7052 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7053 0x0211,
7054 0x0212},
7055 {
7056 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7057 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7058 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7059 0x020f,
7060 0x0211},
7061 {
7062 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7063 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7064 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7065 0x020e,
7066 0x020f},
7067 {
7068 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7069 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7070 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7071 0x020d,
7072 0x020e},
7073 {
7074 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7075 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7076 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7077 0x020c,
7078 0x020d},
7079 {
7080 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7081 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7082 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7083 0x020b,
7084 0x020c},
7085 {
7086 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7087 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7088 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7089 0x020a,
7090 0x020b},
7091 {
7092 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7093 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7094 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7095 0x0209,
7096 0x020a},
7097 {
7098 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7099 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7100 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7101 0x0208,
7102 0x0209},
7103 {
7104 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7105 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7106 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7107 0x0207,
7108 0x0208},
7109 {
7110 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7111 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7112 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7113 0x0206,
7114 0x0207},
7115 {
7116 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7117 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7118 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7119 0x0205,
7120 0x0206},
7121 {
7122 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7123 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7124 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7125 0x0204,
7126 0x0205},
7127 {
7128 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7129 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7130 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7131 0x0203,
7132 0x0204},
7133 {
7134 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7135 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7136 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7137 0x0202,
7138 0x0203},
7139 {
7140 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7141 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7142 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7143 0x0201,
7144 0x0202},
7145 {
7146 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7147 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7148 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7149 0x0200,
7150 0x0201},
7151 {
7152 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7153 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7154 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7155 0x01ff,
7156 0x0200},
7157 {
7158 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7159 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7160 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7161 0x01fe,
7162 0x01ff},
7163 {
7164 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7165 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7166 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7167 0x01fc,
7168 0x01fd},
7169 {
7170 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7171 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7172 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7173 0x01fb,
7174 0x01fc},
7175 {
7176 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7177 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7178 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7179 0x01fa,
7180 0x01fb},
7181 {
7182 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7183 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7184 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7185 0x01f9,
7186 0x01fa},
7187 {
7188 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7189 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7190 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7191 0x01f8,
7192 0x01f9},
7193 {
7194 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7195 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7196 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7197 0x01f7,
7198 0x01f8},
7199 {
7200 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7201 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7202 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7203 0x01f6,
7204 0x01f7},
7205 {
7206 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7207 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7208 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7209 0x01f5,
7210 0x01f6},
7211 {
7212 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7213 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7214 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7215 0x01f4,
7216 0x01f5},
7217 {
7218 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7219 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7220 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7221 0x01f3,
7222 0x01f4},
7223 {
7224 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7225 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7226 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7227 0x01f2,
7228 0x01f3},
7229 {
7230 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7231 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7232 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7233 0x01f1,
7234 0x01f2},
7235 {
7236 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7237 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7238 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7239 0x01f0,
7240 0x01f1},
7241 {
7242 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7243 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7244 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7245 0x01f0,
7246 0x01f0},
7247 {
7248 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7249 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7250 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7251 0x01ef,
7252 0x01f0},
7253 {
7254 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7255 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7256 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7257 0x01ee,
7258 0x01ef},
7259 {
7260 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7261 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7262 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7263 0x01ed,
7264 0x01ee},
7265 {
7266 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7267 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7268 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7269 0x01ec,
7270 0x01ed},
7271 {
7272 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7273 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7274 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7275 0x01eb,
7276 0x01ec},
7277 {
7278 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7279 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7280 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7281 0x01ea,
7282 0x01eb},
7283 {
7284 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7285 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7286 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7287 0x01e9,
7288 0x01ea},
7289 {
7290 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7291 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7292 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7293 0x01e8,
7294 0x01e9},
7295 {
7296 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7297 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7298 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7299 0x01e7,
7300 0x01e8},
7301 {
7302 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7303 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7304 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7305 0x01e6,
7306 0x01e7},
7307 {
7308 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7309 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7310 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7311 0x01e5,
7312 0x01e6},
7313 {
7314 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7315 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7316 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7317 0x01e5,
7318 0x01e5},
7319 {
7320 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7321 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7322 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7323 0x01e4,
7324 0x01e5},
7325 {
7326 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7327 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7328 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7329 0x01e3,
7330 0x01e4},
7331 {
7332 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7333 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7334 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7335 0x01e2,
7336 0x01e3},
7337 {
7338 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7339 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7340 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7341 0x01e1,
7342 0x01e2},
7343 {
7344 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7345 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7346 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7347 0x01e0,
7348 0x01e1},
7349 {
7350 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7351 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7352 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7353 0x01df,
7354 0x01e0},
7355 {
7356 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7357 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7358 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7359 0x01de,
7360 0x01df},
7361 {
7362 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7363 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7364 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7365 0x01dd,
7366 0x01de},
7367 {
7368 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7369 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7370 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7371 0x01dd,
7372 0x01dd},
7373 {
7374 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7375 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7376 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7377 0x01dc,
7378 0x01dd},
7379 {
7380 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7381 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7382 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7383 0x01db,
7384 0x01dc},
7385 {
7386 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7387 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7388 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7389 0x01da,
7390 0x01db},
7391 {
7392 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7393 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7394 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7395 0x01d9,
7396 0x01da},
7397 {
7398 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7399 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7400 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7401 0x01d8,
7402 0x01d9},
7403 {
7404 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7405 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7406 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7407 0x01d7,
7408 0x01d8},
7409 {
7410 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7411 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7412 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7413 0x01d7,
7414 0x01d7},
7415 {
7416 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7417 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7418 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7419 0x01d6,
7420 0x01d7},
7421 {
7422 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7423 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7424 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7425 0x01d5,
7426 0x01d6},
7427 {
7428 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7429 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7430 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7431 0x01d4,
7432 0x01d5},
7433 {
7434 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7435 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7436 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7437 0x01d3,
7438 0x01d4},
7439 {
7440 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7441 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7442 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7443 0x01d2,
7444 0x01d3},
7445 {
7446 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7447 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7448 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7449 0x01d2,
7450 0x01d2},
7451 {
7452 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7453 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7454 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7455 0x01d1,
7456 0x01d2},
7457 {
7458 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7459 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7460 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7461 0x01d0,
7462 0x01d1},
7463 {
7464 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7465 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7466 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7467 0x01cf,
7468 0x01d0},
7469 {
7470 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7471 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7472 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7473 0x01ce,
7474 0x01cf},
7475 {
7476 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7477 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7478 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7479 0x01ce,
7480 0x01ce},
7481 {
7482 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7483 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7484 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7485 0x01cd,
7486 0x01ce},
7487 {
7488 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7489 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7490 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7491 0x01cc,
7492 0x01cd},
7493 {
7494 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7495 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7496 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7497 0x01cb,
7498 0x01cc},
7499 {
7500 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7501 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7502 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7503 0x01ca,
7504 0x01cb},
7505 {
7506 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7507 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7508 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7509 0x01ca,
7510 0x01cb},
7511 {
7512 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7513 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7514 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7515 0x01c9,
7516 0x01ca},
7517 {
7518 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7519 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7520 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7521 0x01c9,
7522 0x01ca},
7523 {
7524 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7525 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7526 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7527 0x01c9,
7528 0x01c9},
7529 {
7530 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7531 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7532 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7533 0x01c8,
7534 0x01c9},
7535 {
7536 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7537 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7538 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7539 0x01c8,
7540 0x01c9},
7541 {
7542 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7543 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7544 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7545 0x01c8,
7546 0x01c8},
7547 {
7548 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7549 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7550 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7551 0x01c7,
7552 0x01c8},
7553 {
7554 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7555 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7556 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7557 0x01c7,
7558 0x01c8},
7559 {
7560 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7561 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7562 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7563 0x01c6,
7564 0x01c7},
7565 {
7566 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7567 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7568 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7569 0x01c6,
7570 0x01c7},
7571 {
7572 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7573 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7574 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7575 0x01c6,
7576 0x01c6},
7577 {
7578 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7579 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7580 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7581 0x01c5,
7582 0x01c6},
7583 {
7584 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7585 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7586 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7587 0x01c5,
7588 0x01c6},
7589 {
7590 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7591 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7592 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7593 0x01c4,
7594 0x01c5},
7595 {
7596 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7597 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7598 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7599 0x01c4,
7600 0x01c5},
7601 {
7602 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7603 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7604 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7605 0x01c4,
7606 0x01c4},
7607 {
7608 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7609 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7610 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7611 0x01c3,
7612 0x01c4},
7613 {
7614 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7615 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7616 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7617 0x01c3,
7618 0x01c4},
7619 {
7620 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7621 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7622 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7623 0x01c2,
7624 0x01c3},
7625 {
7626 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7627 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7628 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7629 0x01c2,
7630 0x01c3},
7631 {
7632 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7633 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7634 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7635 0x01c2,
7636 0x01c2},
7637 {
7638 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7639 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7640 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7641 0x01c1,
7642 0x01c2},
7643 {
7644 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7645 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7646 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7647 0x01c0,
7648 0x01c1},
7649 {
7650 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7651 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7652 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7653 0x01bf,
7654 0x01c0},
7655 {
7656 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7657 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7658 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7659 0x01bf,
7660 0x01bf},
7661 {
7662 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7663 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7664 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7665 0x01be,
7666 0x01bf},
7667 {
7668 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7669 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7670 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7671 0x01bd,
7672 0x01be},
7673 {
7674 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7675 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7676 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7677 0x01bc,
7678 0x01bd},
7679 {
7680 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7681 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7682 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7683 0x043f,
7684 0x0443},
7685 {
7686 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7687 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7688 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7689 0x043d,
7690 0x0441},
7691 {
7692 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7693 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7694 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7695 0x043a,
7696 0x043f},
7697 {
7698 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7699 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7700 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7701 0x0438,
7702 0x043d},
7703 {
7704 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7705 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7706 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7707 0x0436,
7708 0x043a},
7709 {
7710 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7711 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7712 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7713 0x0434,
7714 0x0438},
7715 {
7716 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7717 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7718 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7719 0x0431,
7720 0x0436},
7721 {
7722 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7723 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7724 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7725 0x042f,
7726 0x0434},
7727 {
7728 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7729 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7730 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7731 0x042d,
7732 0x0431},
7733 {
7734 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7735 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7736 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7737 0x042b,
7738 0x042f},
7739 {
7740 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7741 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7742 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7743 0x0429,
7744 0x042d},
7745 {
7746 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7747 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7748 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7749 0x0427,
7750 0x042b},
7751 {
7752 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7753 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7754 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7755 0x0424,
7756 0x0429},
7757 {
7758 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7759 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7760 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7761 0x041f,
7762 0x0424}
7763};
7764
7765static struct radio_regs regs_2055[] = {
7766 {0x02, 0x80, 0x80, 0, 0},
7767 {0x03, 0, 0, 0, 0},
7768 {0x04, 0x27, 0x27, 0, 0},
7769 {0x05, 0, 0, 0, 0},
7770 {0x06, 0x27, 0x27, 0, 0},
7771 {0x07, 0x7f, 0x7f, 1, 1},
7772 {0x08, 0x7, 0x7, 1, 1},
7773 {0x09, 0x7f, 0x7f, 1, 1},
7774 {0x0A, 0x7, 0x7, 1, 1},
7775 {0x0B, 0x15, 0x15, 0, 0},
7776 {0x0C, 0x15, 0x15, 0, 0},
7777 {0x0D, 0x4f, 0x4f, 1, 1},
7778 {0x0E, 0x5, 0x5, 1, 1},
7779 {0x0F, 0x4f, 0x4f, 1, 1},
7780 {0x10, 0x5, 0x5, 1, 1},
7781 {0x11, 0xd0, 0xd0, 0, 0},
7782 {0x12, 0x2, 0x2, 0, 0},
7783 {0x13, 0, 0, 0, 0},
7784 {0x14, 0x40, 0x40, 0, 0},
7785 {0x15, 0, 0, 0, 0},
7786 {0x16, 0, 0, 0, 0},
7787 {0x17, 0, 0, 0, 0},
7788 {0x18, 0, 0, 0, 0},
7789 {0x19, 0, 0, 0, 0},
7790 {0x1A, 0, 0, 0, 0},
7791 {0x1B, 0, 0, 0, 0},
7792 {0x1C, 0, 0, 0, 0},
7793 {0x1D, 0xc0, 0xc0, 0, 0},
7794 {0x1E, 0xff, 0xff, 0, 0},
7795 {0x1F, 0xc0, 0xc0, 0, 0},
7796 {0x20, 0xff, 0xff, 0, 0},
7797 {0x21, 0xc0, 0xc0, 0, 0},
7798 {0x22, 0, 0, 0, 0},
7799 {0x23, 0x2c, 0x2c, 0, 0},
7800 {0x24, 0, 0, 0, 0},
7801 {0x25, 0, 0, 0, 0},
7802 {0x26, 0, 0, 0, 0},
7803 {0x27, 0, 0, 0, 0},
7804 {0x28, 0, 0, 0, 0},
7805 {0x29, 0, 0, 0, 0},
7806 {0x2A, 0, 0, 0, 0},
7807 {0x2B, 0, 0, 0, 0},
7808 {0x2C, 0, 0, 0, 0},
7809 {0x2D, 0xa4, 0xa4, 0, 0},
7810 {0x2E, 0x38, 0x38, 0, 0},
7811 {0x2F, 0, 0, 0, 0},
7812 {0x30, 0x4, 0x4, 1, 1},
7813 {0x31, 0, 0, 0, 0},
7814 {0x32, 0xa, 0xa, 0, 0},
7815 {0x33, 0x87, 0x87, 0, 0},
7816 {0x34, 0x9, 0x9, 0, 0},
7817 {0x35, 0x70, 0x70, 0, 0},
7818 {0x36, 0x11, 0x11, 0, 0},
7819 {0x37, 0x18, 0x18, 1, 1},
7820 {0x38, 0x6, 0x6, 0, 0},
7821 {0x39, 0x4, 0x4, 1, 1},
7822 {0x3A, 0x6, 0x6, 0, 0},
7823 {0x3B, 0x9e, 0x9e, 0, 0},
7824 {0x3C, 0x9, 0x9, 0, 0},
7825 {0x3D, 0xc8, 0xc8, 1, 1},
7826 {0x3E, 0x88, 0x88, 0, 0},
7827 {0x3F, 0, 0, 0, 0},
7828 {0x40, 0, 0, 0, 0},
7829 {0x41, 0, 0, 0, 0},
7830 {0x42, 0x1, 0x1, 0, 0},
7831 {0x43, 0x2, 0x2, 0, 0},
7832 {0x44, 0x96, 0x96, 0, 0},
7833 {0x45, 0x3e, 0x3e, 0, 0},
7834 {0x46, 0x3e, 0x3e, 0, 0},
7835 {0x47, 0x13, 0x13, 0, 0},
7836 {0x48, 0x2, 0x2, 0, 0},
7837 {0x49, 0x15, 0x15, 0, 0},
7838 {0x4A, 0x7, 0x7, 0, 0},
7839 {0x4B, 0, 0, 0, 0},
7840 {0x4C, 0, 0, 0, 0},
7841 {0x4D, 0, 0, 0, 0},
7842 {0x4E, 0, 0, 0, 0},
7843 {0x4F, 0, 0, 0, 0},
7844 {0x50, 0x8, 0x8, 0, 0},
7845 {0x51, 0x8, 0x8, 0, 0},
7846 {0x52, 0x6, 0x6, 0, 0},
7847 {0x53, 0x84, 0x84, 1, 1},
7848 {0x54, 0xc3, 0xc3, 0, 0},
7849 {0x55, 0x8f, 0x8f, 0, 0},
7850 {0x56, 0xff, 0xff, 0, 0},
7851 {0x57, 0xff, 0xff, 0, 0},
7852 {0x58, 0x88, 0x88, 0, 0},
7853 {0x59, 0x88, 0x88, 0, 0},
7854 {0x5A, 0, 0, 0, 0},
7855 {0x5B, 0xcc, 0xcc, 0, 0},
7856 {0x5C, 0x6, 0x6, 0, 0},
7857 {0x5D, 0x80, 0x80, 0, 0},
7858 {0x5E, 0x80, 0x80, 0, 0},
7859 {0x5F, 0xf8, 0xf8, 0, 0},
7860 {0x60, 0x88, 0x88, 0, 0},
7861 {0x61, 0x88, 0x88, 0, 0},
7862 {0x62, 0x88, 0x8, 1, 1},
7863 {0x63, 0x88, 0x88, 0, 0},
7864 {0x64, 0, 0, 0, 0},
7865 {0x65, 0x1, 0x1, 1, 1},
7866 {0x66, 0x8a, 0x8a, 0, 0},
7867 {0x67, 0x8, 0x8, 0, 0},
7868 {0x68, 0x83, 0x83, 0, 0},
7869 {0x69, 0x6, 0x6, 0, 0},
7870 {0x6A, 0xa0, 0xa0, 0, 0},
7871 {0x6B, 0xa, 0xa, 0, 0},
7872 {0x6C, 0x87, 0x87, 1, 1},
7873 {0x6D, 0x2a, 0x2a, 0, 0},
7874 {0x6E, 0x2a, 0x2a, 0, 0},
7875 {0x6F, 0x2a, 0x2a, 0, 0},
7876 {0x70, 0x2a, 0x2a, 0, 0},
7877 {0x71, 0x18, 0x18, 0, 0},
7878 {0x72, 0x6a, 0x6a, 1, 1},
7879 {0x73, 0xab, 0xab, 1, 1},
7880 {0x74, 0x13, 0x13, 1, 1},
7881 {0x75, 0xc1, 0xc1, 1, 1},
7882 {0x76, 0xaa, 0xaa, 1, 1},
7883 {0x77, 0x87, 0x87, 1, 1},
7884 {0x78, 0, 0, 0, 0},
7885 {0x79, 0x6, 0x6, 0, 0},
7886 {0x7A, 0x7, 0x7, 0, 0},
7887 {0x7B, 0x7, 0x7, 0, 0},
7888 {0x7C, 0x15, 0x15, 0, 0},
7889 {0x7D, 0x55, 0x55, 0, 0},
7890 {0x7E, 0x97, 0x97, 1, 1},
7891 {0x7F, 0x8, 0x8, 0, 0},
7892 {0x80, 0x14, 0x14, 1, 1},
7893 {0x81, 0x33, 0x33, 0, 0},
7894 {0x82, 0x88, 0x88, 0, 0},
7895 {0x83, 0x6, 0x6, 0, 0},
7896 {0x84, 0x3, 0x3, 1, 1},
7897 {0x85, 0xa, 0xa, 0, 0},
7898 {0x86, 0x3, 0x3, 1, 1},
7899 {0x87, 0x2a, 0x2a, 0, 0},
7900 {0x88, 0xa4, 0xa4, 0, 0},
7901 {0x89, 0x18, 0x18, 0, 0},
7902 {0x8A, 0x28, 0x28, 0, 0},
7903 {0x8B, 0, 0, 0, 0},
7904 {0x8C, 0x4a, 0x4a, 0, 0},
7905 {0x8D, 0, 0, 0, 0},
7906 {0x8E, 0xf8, 0xf8, 0, 0},
7907 {0x8F, 0x88, 0x88, 0, 0},
7908 {0x90, 0x88, 0x88, 0, 0},
7909 {0x91, 0x88, 0x8, 1, 1},
7910 {0x92, 0x88, 0x88, 0, 0},
7911 {0x93, 0, 0, 0, 0},
7912 {0x94, 0x1, 0x1, 1, 1},
7913 {0x95, 0x8a, 0x8a, 0, 0},
7914 {0x96, 0x8, 0x8, 0, 0},
7915 {0x97, 0x83, 0x83, 0, 0},
7916 {0x98, 0x6, 0x6, 0, 0},
7917 {0x99, 0xa0, 0xa0, 0, 0},
7918 {0x9A, 0xa, 0xa, 0, 0},
7919 {0x9B, 0x87, 0x87, 1, 1},
7920 {0x9C, 0x2a, 0x2a, 0, 0},
7921 {0x9D, 0x2a, 0x2a, 0, 0},
7922 {0x9E, 0x2a, 0x2a, 0, 0},
7923 {0x9F, 0x2a, 0x2a, 0, 0},
7924 {0xA0, 0x18, 0x18, 0, 0},
7925 {0xA1, 0x6a, 0x6a, 1, 1},
7926 {0xA2, 0xab, 0xab, 1, 1},
7927 {0xA3, 0x13, 0x13, 1, 1},
7928 {0xA4, 0xc1, 0xc1, 1, 1},
7929 {0xA5, 0xaa, 0xaa, 1, 1},
7930 {0xA6, 0x87, 0x87, 1, 1},
7931 {0xA7, 0, 0, 0, 0},
7932 {0xA8, 0x6, 0x6, 0, 0},
7933 {0xA9, 0x7, 0x7, 0, 0},
7934 {0xAA, 0x7, 0x7, 0, 0},
7935 {0xAB, 0x15, 0x15, 0, 0},
7936 {0xAC, 0x55, 0x55, 0, 0},
7937 {0xAD, 0x97, 0x97, 1, 1},
7938 {0xAE, 0x8, 0x8, 0, 0},
7939 {0xAF, 0x14, 0x14, 1, 1},
7940 {0xB0, 0x33, 0x33, 0, 0},
7941 {0xB1, 0x88, 0x88, 0, 0},
7942 {0xB2, 0x6, 0x6, 0, 0},
7943 {0xB3, 0x3, 0x3, 1, 1},
7944 {0xB4, 0xa, 0xa, 0, 0},
7945 {0xB5, 0x3, 0x3, 1, 1},
7946 {0xB6, 0x2a, 0x2a, 0, 0},
7947 {0xB7, 0xa4, 0xa4, 0, 0},
7948 {0xB8, 0x18, 0x18, 0, 0},
7949 {0xB9, 0x28, 0x28, 0, 0},
7950 {0xBA, 0, 0, 0, 0},
7951 {0xBB, 0x4a, 0x4a, 0, 0},
7952 {0xBC, 0, 0, 0, 0},
7953 {0xBD, 0x71, 0x71, 0, 0},
7954 {0xBE, 0x72, 0x72, 0, 0},
7955 {0xBF, 0x73, 0x73, 0, 0},
7956 {0xC0, 0x74, 0x74, 0, 0},
7957 {0xC1, 0x75, 0x75, 0, 0},
7958 {0xC2, 0x76, 0x76, 0, 0},
7959 {0xC3, 0x77, 0x77, 0, 0},
7960 {0xC4, 0x78, 0x78, 0, 0},
7961 {0xC5, 0x79, 0x79, 0, 0},
7962 {0xC6, 0x7a, 0x7a, 0, 0},
7963 {0xC7, 0, 0, 0, 0},
7964 {0xC8, 0, 0, 0, 0},
7965 {0xC9, 0, 0, 0, 0},
7966 {0xCA, 0, 0, 0, 0},
7967 {0xCB, 0, 0, 0, 0},
7968 {0xCC, 0, 0, 0, 0},
7969 {0xCD, 0, 0, 0, 0},
7970 {0xCE, 0x6, 0x6, 0, 0},
7971 {0xCF, 0, 0, 0, 0},
7972 {0xD0, 0, 0, 0, 0},
7973 {0xD1, 0x18, 0x18, 0, 0},
7974 {0xD2, 0x88, 0x88, 0, 0},
7975 {0xD3, 0, 0, 0, 0},
7976 {0xD4, 0, 0, 0, 0},
7977 {0xD5, 0, 0, 0, 0},
7978 {0xD6, 0, 0, 0, 0},
7979 {0xD7, 0, 0, 0, 0},
7980 {0xD8, 0, 0, 0, 0},
7981 {0xD9, 0, 0, 0, 0},
7982 {0xDA, 0x6, 0x6, 0, 0},
7983 {0xDB, 0, 0, 0, 0},
7984 {0xDC, 0, 0, 0, 0},
7985 {0xDD, 0x18, 0x18, 0, 0},
7986 {0xDE, 0x88, 0x88, 0, 0},
7987 {0xDF, 0, 0, 0, 0},
7988 {0xE0, 0, 0, 0, 0},
7989 {0xE1, 0, 0, 0, 0},
7990 {0xE2, 0, 0, 0, 0},
7991 {0xFFFF, 0, 0, 0, 0},
7992};
7993
7994static struct radio_regs regs_SYN_2056[] = {
7995 {0x02, 0, 0, 0, 0},
7996 {0x03, 0, 0, 0, 0},
7997 {0x04, 0, 0, 0, 0},
7998 {0x05, 0, 0, 0, 0},
7999 {0x06, 0, 0, 0, 0},
8000 {0x07, 0, 0, 0, 0},
8001 {0x08, 0, 0, 0, 0},
8002 {0x09, 0x1, 0x1, 0, 0},
8003 {0x0A, 0, 0, 0, 0},
8004 {0x0B, 0, 0, 0, 0},
8005 {0x0C, 0, 0, 0, 0},
8006 {0x0D, 0, 0, 0, 0},
8007 {0x0E, 0, 0, 0, 0},
8008 {0x0F, 0, 0, 0, 0},
8009 {0x10, 0, 0, 0, 0},
8010 {0x11, 0, 0, 0, 0},
8011 {0x12, 0, 0, 0, 0},
8012 {0x13, 0, 0, 0, 0},
8013 {0x14, 0, 0, 0, 0},
8014 {0x15, 0, 0, 0, 0},
8015 {0x16, 0, 0, 0, 0},
8016 {0x17, 0, 0, 0, 0},
8017 {0x18, 0, 0, 0, 0},
8018 {0x19, 0, 0, 0, 0},
8019 {0x1A, 0, 0, 0, 0},
8020 {0x1B, 0, 0, 0, 0},
8021 {0x1C, 0, 0, 0, 0},
8022 {0x1D, 0, 0, 0, 0},
8023 {0x1E, 0, 0, 0, 0},
8024 {0x1F, 0, 0, 0, 0},
8025 {0x20, 0, 0, 0, 0},
8026 {0x21, 0, 0, 0, 0},
8027 {0x22, 0x60, 0x60, 0, 0},
8028 {0x23, 0x6, 0x6, 0, 0},
8029 {0x24, 0xc, 0xc, 0, 0},
8030 {0x25, 0, 0, 0, 0},
8031 {0x26, 0, 0, 0, 0},
8032 {0x27, 0, 0, 0, 0},
8033 {0x28, 0x1, 0x1, 0, 0},
8034 {0x29, 0, 0, 0, 0},
8035 {0x2A, 0, 0, 0, 0},
8036 {0x2B, 0, 0, 0, 0},
8037 {0x2C, 0, 0, 0, 0},
8038 {0x2D, 0, 0, 0, 0},
8039 {0x2E, 0xd, 0xd, 0, 0},
8040 {0x2F, 0x1f, 0x1f, 0, 0},
8041 {0x30, 0x15, 0x15, 0, 0},
8042 {0x31, 0xf, 0xf, 0, 0},
8043 {0x32, 0, 0, 0, 0},
8044 {0x33, 0, 0, 0, 0},
8045 {0x34, 0, 0, 0, 0},
8046 {0x35, 0, 0, 0, 0},
8047 {0x36, 0, 0, 0, 0},
8048 {0x37, 0, 0, 0, 0},
8049 {0x38, 0, 0, 0, 0},
8050 {0x39, 0, 0, 0, 0},
8051 {0x3A, 0, 0, 0, 0},
8052 {0x3B, 0, 0, 0, 0},
8053 {0x3C, 0x13, 0x13, 0, 0},
8054 {0x3D, 0xf, 0xf, 0, 0},
8055 {0x3E, 0x18, 0x18, 0, 0},
8056 {0x3F, 0, 0, 0, 0},
8057 {0x40, 0, 0, 0, 0},
8058 {0x41, 0x20, 0x20, 0, 0},
8059 {0x42, 0x20, 0x20, 0, 0},
8060 {0x43, 0, 0, 0, 0},
8061 {0x44, 0x77, 0x77, 0, 0},
8062 {0x45, 0x7, 0x7, 0, 0},
8063 {0x46, 0x1, 0x1, 0, 0},
8064 {0x47, 0x4, 0x4, 0, 0},
8065 {0x48, 0xf, 0xf, 0, 0},
8066 {0x49, 0x30, 0x30, 0, 0},
8067 {0x4A, 0x32, 0x32, 0, 0},
8068 {0x4B, 0xd, 0xd, 0, 0},
8069 {0x4C, 0xd, 0xd, 0, 0},
8070 {0x4D, 0x4, 0x4, 0, 0},
8071 {0x4E, 0x6, 0x6, 0, 0},
8072 {0x4F, 0x1, 0x1, 0, 0},
8073 {0x50, 0x1c, 0x1c, 0, 0},
8074 {0x51, 0x2, 0x2, 0, 0},
8075 {0x52, 0x2, 0x2, 0, 0},
8076 {0x53, 0xf7, 0xf7, 1, 1},
8077 {0x54, 0xb4, 0xb4, 0, 0},
8078 {0x55, 0xd2, 0xd2, 0, 0},
8079 {0x56, 0, 0, 0, 0},
8080 {0x57, 0, 0, 0, 0},
8081 {0x58, 0x4, 0x4, 0, 0},
8082 {0x59, 0x96, 0x96, 0, 0},
8083 {0x5A, 0x3e, 0x3e, 0, 0},
8084 {0x5B, 0x3e, 0x3e, 0, 0},
8085 {0x5C, 0x13, 0x13, 0, 0},
8086 {0x5D, 0x2, 0x2, 0, 0},
8087 {0x5E, 0, 0, 0, 0},
8088 {0x5F, 0x7, 0x7, 0, 0},
8089 {0x60, 0x7, 0x7, 1, 1},
8090 {0x61, 0x8, 0x8, 0, 0},
8091 {0x62, 0x3, 0x3, 0, 0},
8092 {0x63, 0, 0, 0, 0},
8093 {0x64, 0, 0, 0, 0},
8094 {0x65, 0, 0, 0, 0},
8095 {0x66, 0, 0, 0, 0},
8096 {0x67, 0, 0, 0, 0},
8097 {0x68, 0x40, 0x40, 0, 0},
8098 {0x69, 0, 0, 0, 0},
8099 {0x6A, 0, 0, 0, 0},
8100 {0x6B, 0, 0, 0, 0},
8101 {0x6C, 0, 0, 0, 0},
8102 {0x6D, 0x1, 0x1, 0, 0},
8103 {0x6E, 0, 0, 0, 0},
8104 {0x6F, 0, 0, 0, 0},
8105 {0x70, 0x60, 0x60, 0, 0},
8106 {0x71, 0x66, 0x66, 0, 0},
8107 {0x72, 0xc, 0xc, 0, 0},
8108 {0x73, 0x66, 0x66, 0, 0},
8109 {0x74, 0x8f, 0x8f, 1, 1},
8110 {0x75, 0, 0, 0, 0},
8111 {0x76, 0xcc, 0xcc, 0, 0},
8112 {0x77, 0x1, 0x1, 0, 0},
8113 {0x78, 0x66, 0x66, 0, 0},
8114 {0x79, 0x66, 0x66, 0, 0},
8115 {0x7A, 0, 0, 0, 0},
8116 {0x7B, 0, 0, 0, 0},
8117 {0x7C, 0, 0, 0, 0},
8118 {0x7D, 0, 0, 0, 0},
8119 {0x7E, 0, 0, 0, 0},
8120 {0x7F, 0, 0, 0, 0},
8121 {0x80, 0, 0, 0, 0},
8122 {0x81, 0, 0, 0, 0},
8123 {0x82, 0, 0, 0, 0},
8124 {0x83, 0, 0, 0, 0},
8125 {0x84, 0, 0, 0, 0},
8126 {0x85, 0xff, 0xff, 0, 0},
8127 {0x86, 0, 0, 0, 0},
8128 {0x87, 0, 0, 0, 0},
8129 {0x88, 0, 0, 0, 0},
8130 {0x89, 0, 0, 0, 0},
8131 {0x8A, 0, 0, 0, 0},
8132 {0x8B, 0, 0, 0, 0},
8133 {0x8C, 0, 0, 0, 0},
8134 {0x8D, 0, 0, 0, 0},
8135 {0x8E, 0, 0, 0, 0},
8136 {0x8F, 0, 0, 0, 0},
8137 {0x90, 0, 0, 0, 0},
8138 {0x91, 0, 0, 0, 0},
8139 {0x92, 0, 0, 0, 0},
8140 {0x93, 0, 0, 0, 0},
8141 {0x94, 0, 0, 0, 0},
8142 {0x95, 0, 0, 0, 0},
8143 {0x96, 0, 0, 0, 0},
8144 {0x97, 0, 0, 0, 0},
8145 {0x98, 0, 0, 0, 0},
8146 {0x99, 0, 0, 0, 0},
8147 {0x9A, 0, 0, 0, 0},
8148 {0x9B, 0, 0, 0, 0},
8149 {0x9C, 0, 0, 0, 0},
8150 {0x9D, 0, 0, 0, 0},
8151 {0x9E, 0, 0, 0, 0},
8152 {0x9F, 0x6, 0x6, 0, 0},
8153 {0xA0, 0x66, 0x66, 0, 0},
8154 {0xA1, 0x66, 0x66, 0, 0},
8155 {0xA2, 0x66, 0x66, 0, 0},
8156 {0xA3, 0x66, 0x66, 0, 0},
8157 {0xA4, 0x66, 0x66, 0, 0},
8158 {0xA5, 0x66, 0x66, 0, 0},
8159 {0xA6, 0x66, 0x66, 0, 0},
8160 {0xA7, 0x66, 0x66, 0, 0},
8161 {0xA8, 0x66, 0x66, 0, 0},
8162 {0xA9, 0x66, 0x66, 0, 0},
8163 {0xAA, 0x66, 0x66, 0, 0},
8164 {0xAB, 0x66, 0x66, 0, 0},
8165 {0xAC, 0x66, 0x66, 0, 0},
8166 {0xAD, 0x66, 0x66, 0, 0},
8167 {0xAE, 0x66, 0x66, 0, 0},
8168 {0xAF, 0x66, 0x66, 0, 0},
8169 {0xB0, 0x66, 0x66, 0, 0},
8170 {0xB1, 0x66, 0x66, 0, 0},
8171 {0xB2, 0x66, 0x66, 0, 0},
8172 {0xB3, 0xa, 0xa, 0, 0},
8173 {0xB4, 0, 0, 0, 0},
8174 {0xB5, 0, 0, 0, 0},
8175 {0xB6, 0, 0, 0, 0},
8176 {0xFFFF, 0, 0, 0, 0}
8177};
8178
8179static struct radio_regs regs_TX_2056[] = {
8180 {0x02, 0, 0, 0, 0},
8181 {0x03, 0, 0, 0, 0},
8182 {0x04, 0, 0, 0, 0},
8183 {0x05, 0, 0, 0, 0},
8184 {0x06, 0, 0, 0, 0},
8185 {0x07, 0, 0, 0, 0},
8186 {0x08, 0, 0, 0, 0},
8187 {0x09, 0, 0, 0, 0},
8188 {0x0A, 0, 0, 0, 0},
8189 {0x0B, 0, 0, 0, 0},
8190 {0x0C, 0, 0, 0, 0},
8191 {0x0D, 0, 0, 0, 0},
8192 {0x0E, 0, 0, 0, 0},
8193 {0x0F, 0, 0, 0, 0},
8194 {0x10, 0, 0, 0, 0},
8195 {0x11, 0, 0, 0, 0},
8196 {0x12, 0, 0, 0, 0},
8197 {0x13, 0, 0, 0, 0},
8198 {0x14, 0, 0, 0, 0},
8199 {0x15, 0, 0, 0, 0},
8200 {0x16, 0, 0, 0, 0},
8201 {0x17, 0, 0, 0, 0},
8202 {0x18, 0, 0, 0, 0},
8203 {0x19, 0, 0, 0, 0},
8204 {0x1A, 0, 0, 0, 0},
8205 {0x1B, 0, 0, 0, 0},
8206 {0x1C, 0, 0, 0, 0},
8207 {0x1D, 0, 0, 0, 0},
8208 {0x1E, 0, 0, 0, 0},
8209 {0x1F, 0, 0, 0, 0},
8210 {0x20, 0, 0, 0, 0},
8211 {0x21, 0x88, 0x88, 0, 0},
8212 {0x22, 0x88, 0x88, 0, 0},
8213 {0x23, 0x88, 0x88, 0, 0},
8214 {0x24, 0x88, 0x88, 0, 0},
8215 {0x25, 0xc, 0xc, 0, 0},
8216 {0x26, 0, 0, 0, 0},
8217 {0x27, 0x3, 0x3, 0, 0},
8218 {0x28, 0, 0, 0, 0},
8219 {0x29, 0x3, 0x3, 0, 0},
8220 {0x2A, 0x37, 0x37, 0, 0},
8221 {0x2B, 0x3, 0x3, 0, 0},
8222 {0x2C, 0, 0, 0, 0},
8223 {0x2D, 0, 0, 0, 0},
8224 {0x2E, 0x1, 0x1, 0, 0},
8225 {0x2F, 0x1, 0x1, 0, 0},
8226 {0x30, 0, 0, 0, 0},
8227 {0x31, 0, 0, 0, 0},
8228 {0x32, 0, 0, 0, 0},
8229 {0x33, 0x11, 0x11, 0, 0},
8230 {0x34, 0x11, 0x11, 0, 0},
8231 {0x35, 0, 0, 0, 0},
8232 {0x36, 0, 0, 0, 0},
8233 {0x37, 0x3, 0x3, 0, 0},
8234 {0x38, 0xf, 0xf, 0, 0},
8235 {0x39, 0, 0, 0, 0},
8236 {0x3A, 0x2d, 0x2d, 0, 0},
8237 {0x3B, 0, 0, 0, 0},
8238 {0x3C, 0x6e, 0x6e, 0, 0},
8239 {0x3D, 0xf0, 0xf0, 1, 1},
8240 {0x3E, 0, 0, 0, 0},
8241 {0x3F, 0, 0, 0, 0},
8242 {0x40, 0, 0, 0, 0},
8243 {0x41, 0x3, 0x3, 0, 0},
8244 {0x42, 0x3, 0x3, 0, 0},
8245 {0x43, 0, 0, 0, 0},
8246 {0x44, 0x1e, 0x1e, 0, 0},
8247 {0x45, 0, 0, 0, 0},
8248 {0x46, 0x6e, 0x6e, 0, 0},
8249 {0x47, 0xf0, 0xf0, 1, 1},
8250 {0x48, 0, 0, 0, 0},
8251 {0x49, 0x2, 0x2, 0, 0},
8252 {0x4A, 0xff, 0xff, 1, 1},
8253 {0x4B, 0xc, 0xc, 0, 0},
8254 {0x4C, 0, 0, 0, 0},
8255 {0x4D, 0x38, 0x38, 0, 0},
8256 {0x4E, 0x70, 0x70, 1, 1},
8257 {0x4F, 0x2, 0x2, 0, 0},
8258 {0x50, 0x88, 0x88, 0, 0},
8259 {0x51, 0xc, 0xc, 0, 0},
8260 {0x52, 0, 0, 0, 0},
8261 {0x53, 0x8, 0x8, 0, 0},
8262 {0x54, 0x70, 0x70, 1, 1},
8263 {0x55, 0x2, 0x2, 0, 0},
8264 {0x56, 0xff, 0xff, 1, 1},
8265 {0x57, 0, 0, 0, 0},
8266 {0x58, 0x83, 0x83, 0, 0},
8267 {0x59, 0x77, 0x77, 1, 1},
8268 {0x5A, 0, 0, 0, 0},
8269 {0x5B, 0x2, 0x2, 0, 0},
8270 {0x5C, 0x88, 0x88, 0, 0},
8271 {0x5D, 0, 0, 0, 0},
8272 {0x5E, 0x8, 0x8, 0, 0},
8273 {0x5F, 0x77, 0x77, 1, 1},
8274 {0x60, 0x1, 0x1, 0, 0},
8275 {0x61, 0, 0, 0, 0},
8276 {0x62, 0x7, 0x7, 0, 0},
8277 {0x63, 0, 0, 0, 0},
8278 {0x64, 0x7, 0x7, 0, 0},
8279 {0x65, 0, 0, 0, 0},
8280 {0x66, 0, 0, 0, 0},
8281 {0x67, 0x74, 0x74, 1, 1},
8282 {0x68, 0, 0, 0, 0},
8283 {0x69, 0xa, 0xa, 0, 0},
8284 {0x6A, 0, 0, 0, 0},
8285 {0x6B, 0, 0, 0, 0},
8286 {0x6C, 0, 0, 0, 0},
8287 {0x6D, 0, 0, 0, 0},
8288 {0x6E, 0, 0, 0, 0},
8289 {0x6F, 0, 0, 0, 0},
8290 {0x70, 0, 0, 0, 0},
8291 {0x71, 0x2, 0x2, 0, 0},
8292 {0x72, 0, 0, 0, 0},
8293 {0x73, 0, 0, 0, 0},
8294 {0x74, 0xe, 0xe, 0, 0},
8295 {0x75, 0xe, 0xe, 0, 0},
8296 {0x76, 0xe, 0xe, 0, 0},
8297 {0x77, 0x13, 0x13, 0, 0},
8298 {0x78, 0x13, 0x13, 0, 0},
8299 {0x79, 0x1b, 0x1b, 0, 0},
8300 {0x7A, 0x1b, 0x1b, 0, 0},
8301 {0x7B, 0x55, 0x55, 0, 0},
8302 {0x7C, 0x5b, 0x5b, 0, 0},
8303 {0x7D, 0, 0, 0, 0},
8304 {0x7E, 0, 0, 0, 0},
8305 {0x7F, 0, 0, 0, 0},
8306 {0x80, 0, 0, 0, 0},
8307 {0x81, 0, 0, 0, 0},
8308 {0x82, 0, 0, 0, 0},
8309 {0x83, 0, 0, 0, 0},
8310 {0x84, 0, 0, 0, 0},
8311 {0x85, 0, 0, 0, 0},
8312 {0x86, 0, 0, 0, 0},
8313 {0x87, 0, 0, 0, 0},
8314 {0x88, 0, 0, 0, 0},
8315 {0x89, 0, 0, 0, 0},
8316 {0x8A, 0, 0, 0, 0},
8317 {0x8B, 0, 0, 0, 0},
8318 {0x8C, 0, 0, 0, 0},
8319 {0x8D, 0, 0, 0, 0},
8320 {0x8E, 0, 0, 0, 0},
8321 {0x8F, 0, 0, 0, 0},
8322 {0x90, 0, 0, 0, 0},
8323 {0x91, 0, 0, 0, 0},
8324 {0x92, 0, 0, 0, 0},
8325 {0xFFFF, 0, 0, 0, 0}
8326};
8327
8328static struct radio_regs regs_RX_2056[] = {
8329 {0x02, 0, 0, 0, 0},
8330 {0x03, 0, 0, 0, 0},
8331 {0x04, 0, 0, 0, 0},
8332 {0x05, 0, 0, 0, 0},
8333 {0x06, 0, 0, 0, 0},
8334 {0x07, 0, 0, 0, 0},
8335 {0x08, 0, 0, 0, 0},
8336 {0x09, 0, 0, 0, 0},
8337 {0x0A, 0, 0, 0, 0},
8338 {0x0B, 0, 0, 0, 0},
8339 {0x0C, 0, 0, 0, 0},
8340 {0x0D, 0, 0, 0, 0},
8341 {0x0E, 0, 0, 0, 0},
8342 {0x0F, 0, 0, 0, 0},
8343 {0x10, 0, 0, 0, 0},
8344 {0x11, 0, 0, 0, 0},
8345 {0x12, 0, 0, 0, 0},
8346 {0x13, 0, 0, 0, 0},
8347 {0x14, 0, 0, 0, 0},
8348 {0x15, 0, 0, 0, 0},
8349 {0x16, 0, 0, 0, 0},
8350 {0x17, 0, 0, 0, 0},
8351 {0x18, 0, 0, 0, 0},
8352 {0x19, 0, 0, 0, 0},
8353 {0x1A, 0, 0, 0, 0},
8354 {0x1B, 0, 0, 0, 0},
8355 {0x1C, 0, 0, 0, 0},
8356 {0x1D, 0, 0, 0, 0},
8357 {0x1E, 0, 0, 0, 0},
8358 {0x1F, 0, 0, 0, 0},
8359 {0x20, 0x3, 0x3, 0, 0},
8360 {0x21, 0, 0, 0, 0},
8361 {0x22, 0, 0, 0, 0},
8362 {0x23, 0x90, 0x90, 0, 0},
8363 {0x24, 0x55, 0x55, 0, 0},
8364 {0x25, 0x15, 0x15, 0, 0},
8365 {0x26, 0x5, 0x5, 0, 0},
8366 {0x27, 0x15, 0x15, 0, 0},
8367 {0x28, 0x5, 0x5, 0, 0},
8368 {0x29, 0x20, 0x20, 0, 0},
8369 {0x2A, 0x11, 0x11, 0, 0},
8370 {0x2B, 0x90, 0x90, 0, 0},
8371 {0x2C, 0, 0, 0, 0},
8372 {0x2D, 0x88, 0x88, 0, 0},
8373 {0x2E, 0x32, 0x32, 0, 0},
8374 {0x2F, 0x77, 0x77, 0, 0},
8375 {0x30, 0x17, 0x17, 1, 1},
8376 {0x31, 0xff, 0xff, 1, 1},
8377 {0x32, 0x20, 0x20, 0, 0},
8378 {0x33, 0, 0, 0, 0},
8379 {0x34, 0x88, 0x88, 0, 0},
8380 {0x35, 0x32, 0x32, 0, 0},
8381 {0x36, 0x77, 0x77, 0, 0},
8382 {0x37, 0x17, 0x17, 1, 1},
8383 {0x38, 0xf0, 0xf0, 1, 1},
8384 {0x39, 0x20, 0x20, 0, 0},
8385 {0x3A, 0x8, 0x8, 0, 0},
8386 {0x3B, 0x99, 0x99, 0, 0},
8387 {0x3C, 0, 0, 0, 0},
8388 {0x3D, 0x44, 0x44, 1, 1},
8389 {0x3E, 0, 0, 0, 0},
8390 {0x3F, 0x44, 0x44, 0, 0},
8391 {0x40, 0xf, 0xf, 1, 1},
8392 {0x41, 0x6, 0x6, 0, 0},
8393 {0x42, 0x4, 0x4, 0, 0},
8394 {0x43, 0x50, 0x50, 1, 1},
8395 {0x44, 0x8, 0x8, 0, 0},
8396 {0x45, 0x99, 0x99, 0, 0},
8397 {0x46, 0, 0, 0, 0},
8398 {0x47, 0x11, 0x11, 0, 0},
8399 {0x48, 0, 0, 0, 0},
8400 {0x49, 0x44, 0x44, 0, 0},
8401 {0x4A, 0x7, 0x7, 0, 0},
8402 {0x4B, 0x6, 0x6, 0, 0},
8403 {0x4C, 0x4, 0x4, 0, 0},
8404 {0x4D, 0, 0, 0, 0},
8405 {0x4E, 0, 0, 0, 0},
8406 {0x4F, 0x66, 0x66, 0, 0},
8407 {0x50, 0x66, 0x66, 0, 0},
8408 {0x51, 0x57, 0x57, 0, 0},
8409 {0x52, 0x57, 0x57, 0, 0},
8410 {0x53, 0x44, 0x44, 0, 0},
8411 {0x54, 0, 0, 0, 0},
8412 {0x55, 0, 0, 0, 0},
8413 {0x56, 0x8, 0x8, 0, 0},
8414 {0x57, 0x8, 0x8, 0, 0},
8415 {0x58, 0x7, 0x7, 0, 0},
8416 {0x59, 0x22, 0x22, 0, 0},
8417 {0x5A, 0x22, 0x22, 0, 0},
8418 {0x5B, 0x2, 0x2, 0, 0},
8419 {0x5C, 0x23, 0x23, 0, 0},
8420 {0x5D, 0x7, 0x7, 0, 0},
8421 {0x5E, 0x55, 0x55, 0, 0},
8422 {0x5F, 0x23, 0x23, 0, 0},
8423 {0x60, 0x41, 0x41, 0, 0},
8424 {0x61, 0x1, 0x1, 0, 0},
8425 {0x62, 0xa, 0xa, 0, 0},
8426 {0x63, 0, 0, 0, 0},
8427 {0x64, 0, 0, 0, 0},
8428 {0x65, 0, 0, 0, 0},
8429 {0x66, 0, 0, 0, 0},
8430 {0x67, 0, 0, 0, 0},
8431 {0x68, 0, 0, 0, 0},
8432 {0x69, 0, 0, 0, 0},
8433 {0x6A, 0, 0, 0, 0},
8434 {0x6B, 0xc, 0xc, 0, 0},
8435 {0x6C, 0, 0, 0, 0},
8436 {0x6D, 0, 0, 0, 0},
8437 {0x6E, 0, 0, 0, 0},
8438 {0x6F, 0, 0, 0, 0},
8439 {0x70, 0, 0, 0, 0},
8440 {0x71, 0, 0, 0, 0},
8441 {0x72, 0x22, 0x22, 0, 0},
8442 {0x73, 0x22, 0x22, 0, 0},
8443 {0x74, 0x2, 0x2, 0, 0},
8444 {0x75, 0xa, 0xa, 0, 0},
8445 {0x76, 0x1, 0x1, 0, 0},
8446 {0x77, 0x22, 0x22, 0, 0},
8447 {0x78, 0x30, 0x30, 0, 0},
8448 {0x79, 0, 0, 0, 0},
8449 {0x7A, 0, 0, 0, 0},
8450 {0x7B, 0, 0, 0, 0},
8451 {0x7C, 0, 0, 0, 0},
8452 {0x7D, 0, 0, 0, 0},
8453 {0x7E, 0, 0, 0, 0},
8454 {0x7F, 0, 0, 0, 0},
8455 {0x80, 0, 0, 0, 0},
8456 {0x81, 0, 0, 0, 0},
8457 {0x82, 0, 0, 0, 0},
8458 {0x83, 0, 0, 0, 0},
8459 {0x84, 0, 0, 0, 0},
8460 {0x85, 0, 0, 0, 0},
8461 {0x86, 0, 0, 0, 0},
8462 {0x87, 0, 0, 0, 0},
8463 {0x88, 0, 0, 0, 0},
8464 {0x89, 0, 0, 0, 0},
8465 {0x8A, 0, 0, 0, 0},
8466 {0x8B, 0, 0, 0, 0},
8467 {0x8C, 0, 0, 0, 0},
8468 {0x8D, 0, 0, 0, 0},
8469 {0x8E, 0, 0, 0, 0},
8470 {0x8F, 0, 0, 0, 0},
8471 {0x90, 0, 0, 0, 0},
8472 {0x91, 0, 0, 0, 0},
8473 {0x92, 0, 0, 0, 0},
8474 {0x93, 0, 0, 0, 0},
8475 {0x94, 0, 0, 0, 0},
8476 {0xFFFF, 0, 0, 0, 0}
8477};
8478
8479static struct radio_regs regs_SYN_2056_A1[] = {
8480 {0x02, 0, 0, 0, 0},
8481 {0x03, 0, 0, 0, 0},
8482 {0x04, 0, 0, 0, 0},
8483 {0x05, 0, 0, 0, 0},
8484 {0x06, 0, 0, 0, 0},
8485 {0x07, 0, 0, 0, 0},
8486 {0x08, 0, 0, 0, 0},
8487 {0x09, 0x1, 0x1, 0, 0},
8488 {0x0A, 0, 0, 0, 0},
8489 {0x0B, 0, 0, 0, 0},
8490 {0x0C, 0, 0, 0, 0},
8491 {0x0D, 0, 0, 0, 0},
8492 {0x0E, 0, 0, 0, 0},
8493 {0x0F, 0, 0, 0, 0},
8494 {0x10, 0, 0, 0, 0},
8495 {0x11, 0, 0, 0, 0},
8496 {0x12, 0, 0, 0, 0},
8497 {0x13, 0, 0, 0, 0},
8498 {0x14, 0, 0, 0, 0},
8499 {0x15, 0, 0, 0, 0},
8500 {0x16, 0, 0, 0, 0},
8501 {0x17, 0, 0, 0, 0},
8502 {0x18, 0, 0, 0, 0},
8503 {0x19, 0, 0, 0, 0},
8504 {0x1A, 0, 0, 0, 0},
8505 {0x1B, 0, 0, 0, 0},
8506 {0x1C, 0, 0, 0, 0},
8507 {0x1D, 0, 0, 0, 0},
8508 {0x1E, 0, 0, 0, 0},
8509 {0x1F, 0, 0, 0, 0},
8510 {0x20, 0, 0, 0, 0},
8511 {0x21, 0, 0, 0, 0},
8512 {0x22, 0x60, 0x60, 0, 0},
8513 {0x23, 0x6, 0x6, 0, 0},
8514 {0x24, 0xc, 0xc, 0, 0},
8515 {0x25, 0, 0, 0, 0},
8516 {0x26, 0, 0, 0, 0},
8517 {0x27, 0, 0, 0, 0},
8518 {0x28, 0x1, 0x1, 0, 0},
8519 {0x29, 0, 0, 0, 0},
8520 {0x2A, 0, 0, 0, 0},
8521 {0x2B, 0, 0, 0, 0},
8522 {0x2C, 0, 0, 0, 0},
8523 {0x2D, 0, 0, 0, 0},
8524 {0x2E, 0xd, 0xd, 0, 0},
8525 {0x2F, 0x1f, 0x1f, 0, 0},
8526 {0x30, 0x15, 0x15, 0, 0},
8527 {0x31, 0xf, 0xf, 0, 0},
8528 {0x32, 0, 0, 0, 0},
8529 {0x33, 0, 0, 0, 0},
8530 {0x34, 0, 0, 0, 0},
8531 {0x35, 0, 0, 0, 0},
8532 {0x36, 0, 0, 0, 0},
8533 {0x37, 0, 0, 0, 0},
8534 {0x38, 0, 0, 0, 0},
8535 {0x39, 0, 0, 0, 0},
8536 {0x3A, 0, 0, 0, 0},
8537 {0x3B, 0, 0, 0, 0},
8538 {0x3C, 0x13, 0x13, 0, 0},
8539 {0x3D, 0xf, 0xf, 0, 0},
8540 {0x3E, 0x18, 0x18, 0, 0},
8541 {0x3F, 0, 0, 0, 0},
8542 {0x40, 0, 0, 0, 0},
8543 {0x41, 0x20, 0x20, 0, 0},
8544 {0x42, 0x20, 0x20, 0, 0},
8545 {0x43, 0, 0, 0, 0},
8546 {0x44, 0x77, 0x77, 0, 0},
8547 {0x45, 0x7, 0x7, 0, 0},
8548 {0x46, 0x1, 0x1, 0, 0},
8549 {0x47, 0x4, 0x4, 0, 0},
8550 {0x48, 0xf, 0xf, 0, 0},
8551 {0x49, 0x30, 0x30, 0, 0},
8552 {0x4A, 0x32, 0x32, 0, 0},
8553 {0x4B, 0xd, 0xd, 0, 0},
8554 {0x4C, 0xd, 0xd, 0, 0},
8555 {0x4D, 0x4, 0x4, 0, 0},
8556 {0x4E, 0x6, 0x6, 0, 0},
8557 {0x4F, 0x1, 0x1, 0, 0},
8558 {0x50, 0x1c, 0x1c, 0, 0},
8559 {0x51, 0x2, 0x2, 0, 0},
8560 {0x52, 0x2, 0x2, 0, 0},
8561 {0x53, 0xf7, 0xf7, 1, 1},
8562 {0x54, 0xb4, 0xb4, 0, 0},
8563 {0x55, 0xd2, 0xd2, 0, 0},
8564 {0x56, 0, 0, 0, 0},
8565 {0x57, 0, 0, 0, 0},
8566 {0x58, 0x4, 0x4, 0, 0},
8567 {0x59, 0x96, 0x96, 0, 0},
8568 {0x5A, 0x3e, 0x3e, 0, 0},
8569 {0x5B, 0x3e, 0x3e, 0, 0},
8570 {0x5C, 0x13, 0x13, 0, 0},
8571 {0x5D, 0x2, 0x2, 0, 0},
8572 {0x5E, 0, 0, 0, 0},
8573 {0x5F, 0x7, 0x7, 0, 0},
8574 {0x60, 0x7, 0x7, 1, 1},
8575 {0x61, 0x8, 0x8, 0, 0},
8576 {0x62, 0x3, 0x3, 0, 0},
8577 {0x63, 0, 0, 0, 0},
8578 {0x64, 0, 0, 0, 0},
8579 {0x65, 0, 0, 0, 0},
8580 {0x66, 0, 0, 0, 0},
8581 {0x67, 0, 0, 0, 0},
8582 {0x68, 0x40, 0x40, 0, 0},
8583 {0x69, 0, 0, 0, 0},
8584 {0x6A, 0, 0, 0, 0},
8585 {0x6B, 0, 0, 0, 0},
8586 {0x6C, 0, 0, 0, 0},
8587 {0x6D, 0x1, 0x1, 0, 0},
8588 {0x6E, 0, 0, 0, 0},
8589 {0x6F, 0, 0, 0, 0},
8590 {0x70, 0x60, 0x60, 0, 0},
8591 {0x71, 0x66, 0x66, 0, 0},
8592 {0x72, 0xc, 0xc, 0, 0},
8593 {0x73, 0x66, 0x66, 0, 0},
8594 {0x74, 0x8f, 0x8f, 1, 1},
8595 {0x75, 0, 0, 0, 0},
8596 {0x76, 0xcc, 0xcc, 0, 0},
8597 {0x77, 0x1, 0x1, 0, 0},
8598 {0x78, 0x66, 0x66, 0, 0},
8599 {0x79, 0x66, 0x66, 0, 0},
8600 {0x7A, 0, 0, 0, 0},
8601 {0x7B, 0, 0, 0, 0},
8602 {0x7C, 0, 0, 0, 0},
8603 {0x7D, 0, 0, 0, 0},
8604 {0x7E, 0, 0, 0, 0},
8605 {0x7F, 0, 0, 0, 0},
8606 {0x80, 0, 0, 0, 0},
8607 {0x81, 0, 0, 0, 0},
8608 {0x82, 0, 0, 0, 0},
8609 {0x83, 0, 0, 0, 0},
8610 {0x84, 0, 0, 0, 0},
8611 {0x85, 0xff, 0xff, 0, 0},
8612 {0x86, 0, 0, 0, 0},
8613 {0x87, 0, 0, 0, 0},
8614 {0x88, 0, 0, 0, 0},
8615 {0x89, 0, 0, 0, 0},
8616 {0x8A, 0, 0, 0, 0},
8617 {0x8B, 0, 0, 0, 0},
8618 {0x8C, 0, 0, 0, 0},
8619 {0x8D, 0, 0, 0, 0},
8620 {0x8E, 0, 0, 0, 0},
8621 {0x8F, 0, 0, 0, 0},
8622 {0x90, 0, 0, 0, 0},
8623 {0x91, 0, 0, 0, 0},
8624 {0x92, 0, 0, 0, 0},
8625 {0x93, 0, 0, 0, 0},
8626 {0x94, 0, 0, 0, 0},
8627 {0x95, 0, 0, 0, 0},
8628 {0x96, 0, 0, 0, 0},
8629 {0x97, 0, 0, 0, 0},
8630 {0x98, 0, 0, 0, 0},
8631 {0x99, 0, 0, 0, 0},
8632 {0x9A, 0, 0, 0, 0},
8633 {0x9B, 0, 0, 0, 0},
8634 {0x9C, 0, 0, 0, 0},
8635 {0x9D, 0, 0, 0, 0},
8636 {0x9E, 0, 0, 0, 0},
8637 {0x9F, 0x6, 0x6, 0, 0},
8638 {0xA0, 0x66, 0x66, 0, 0},
8639 {0xA1, 0x66, 0x66, 0, 0},
8640 {0xA2, 0x66, 0x66, 0, 0},
8641 {0xA3, 0x66, 0x66, 0, 0},
8642 {0xA4, 0x66, 0x66, 0, 0},
8643 {0xA5, 0x66, 0x66, 0, 0},
8644 {0xA6, 0x66, 0x66, 0, 0},
8645 {0xA7, 0x66, 0x66, 0, 0},
8646 {0xA8, 0x66, 0x66, 0, 0},
8647 {0xA9, 0x66, 0x66, 0, 0},
8648 {0xAA, 0x66, 0x66, 0, 0},
8649 {0xAB, 0x66, 0x66, 0, 0},
8650 {0xAC, 0x66, 0x66, 0, 0},
8651 {0xAD, 0x66, 0x66, 0, 0},
8652 {0xAE, 0x66, 0x66, 0, 0},
8653 {0xAF, 0x66, 0x66, 0, 0},
8654 {0xB0, 0x66, 0x66, 0, 0},
8655 {0xB1, 0x66, 0x66, 0, 0},
8656 {0xB2, 0x66, 0x66, 0, 0},
8657 {0xB3, 0xa, 0xa, 0, 0},
8658 {0xB4, 0, 0, 0, 0},
8659 {0xB5, 0, 0, 0, 0},
8660 {0xB6, 0, 0, 0, 0},
8661 {0xFFFF, 0, 0, 0, 0}
8662};
8663
8664static struct radio_regs regs_TX_2056_A1[] = {
8665 {0x02, 0, 0, 0, 0},
8666 {0x03, 0, 0, 0, 0},
8667 {0x04, 0, 0, 0, 0},
8668 {0x05, 0, 0, 0, 0},
8669 {0x06, 0, 0, 0, 0},
8670 {0x07, 0, 0, 0, 0},
8671 {0x08, 0, 0, 0, 0},
8672 {0x09, 0, 0, 0, 0},
8673 {0x0A, 0, 0, 0, 0},
8674 {0x0B, 0, 0, 0, 0},
8675 {0x0C, 0, 0, 0, 0},
8676 {0x0D, 0, 0, 0, 0},
8677 {0x0E, 0, 0, 0, 0},
8678 {0x0F, 0, 0, 0, 0},
8679 {0x10, 0, 0, 0, 0},
8680 {0x11, 0, 0, 0, 0},
8681 {0x12, 0, 0, 0, 0},
8682 {0x13, 0, 0, 0, 0},
8683 {0x14, 0, 0, 0, 0},
8684 {0x15, 0, 0, 0, 0},
8685 {0x16, 0, 0, 0, 0},
8686 {0x17, 0, 0, 0, 0},
8687 {0x18, 0, 0, 0, 0},
8688 {0x19, 0, 0, 0, 0},
8689 {0x1A, 0, 0, 0, 0},
8690 {0x1B, 0, 0, 0, 0},
8691 {0x1C, 0, 0, 0, 0},
8692 {0x1D, 0, 0, 0, 0},
8693 {0x1E, 0, 0, 0, 0},
8694 {0x1F, 0, 0, 0, 0},
8695 {0x20, 0, 0, 0, 0},
8696 {0x21, 0x88, 0x88, 0, 0},
8697 {0x22, 0x88, 0x88, 0, 0},
8698 {0x23, 0x88, 0x88, 0, 0},
8699 {0x24, 0x88, 0x88, 0, 0},
8700 {0x25, 0xc, 0xc, 0, 0},
8701 {0x26, 0, 0, 0, 0},
8702 {0x27, 0x3, 0x3, 0, 0},
8703 {0x28, 0, 0, 0, 0},
8704 {0x29, 0x3, 0x3, 0, 0},
8705 {0x2A, 0x37, 0x37, 0, 0},
8706 {0x2B, 0x3, 0x3, 0, 0},
8707 {0x2C, 0, 0, 0, 0},
8708 {0x2D, 0, 0, 0, 0},
8709 {0x2E, 0x1, 0x1, 0, 0},
8710 {0x2F, 0x1, 0x1, 0, 0},
8711 {0x30, 0, 0, 0, 0},
8712 {0x31, 0, 0, 0, 0},
8713 {0x32, 0, 0, 0, 0},
8714 {0x33, 0x11, 0x11, 0, 0},
8715 {0x34, 0x11, 0x11, 0, 0},
8716 {0x35, 0, 0, 0, 0},
8717 {0x36, 0, 0, 0, 0},
8718 {0x37, 0x3, 0x3, 0, 0},
8719 {0x38, 0xf, 0xf, 0, 0},
8720 {0x39, 0, 0, 0, 0},
8721 {0x3A, 0x2d, 0x2d, 0, 0},
8722 {0x3B, 0, 0, 0, 0},
8723 {0x3C, 0x6e, 0x6e, 0, 0},
8724 {0x3D, 0xf0, 0xf0, 1, 1},
8725 {0x3E, 0, 0, 0, 0},
8726 {0x3F, 0, 0, 0, 0},
8727 {0x40, 0, 0, 0, 0},
8728 {0x41, 0x3, 0x3, 0, 0},
8729 {0x42, 0x3, 0x3, 0, 0},
8730 {0x43, 0, 0, 0, 0},
8731 {0x44, 0x1e, 0x1e, 0, 0},
8732 {0x45, 0, 0, 0, 0},
8733 {0x46, 0x6e, 0x6e, 0, 0},
8734 {0x47, 0xf0, 0xf0, 1, 1},
8735 {0x48, 0, 0, 0, 0},
8736 {0x49, 0x2, 0x2, 0, 0},
8737 {0x4A, 0xff, 0xff, 1, 1},
8738 {0x4B, 0xc, 0xc, 0, 0},
8739 {0x4C, 0, 0, 0, 0},
8740 {0x4D, 0x38, 0x38, 0, 0},
8741 {0x4E, 0x70, 0x70, 1, 1},
8742 {0x4F, 0x2, 0x2, 0, 0},
8743 {0x50, 0x88, 0x88, 0, 0},
8744 {0x51, 0xc, 0xc, 0, 0},
8745 {0x52, 0, 0, 0, 0},
8746 {0x53, 0x8, 0x8, 0, 0},
8747 {0x54, 0x70, 0x70, 1, 1},
8748 {0x55, 0x2, 0x2, 0, 0},
8749 {0x56, 0xff, 0xff, 1, 1},
8750 {0x57, 0, 0, 0, 0},
8751 {0x58, 0x83, 0x83, 0, 0},
8752 {0x59, 0x77, 0x77, 1, 1},
8753 {0x5A, 0, 0, 0, 0},
8754 {0x5B, 0x2, 0x2, 0, 0},
8755 {0x5C, 0x88, 0x88, 0, 0},
8756 {0x5D, 0, 0, 0, 0},
8757 {0x5E, 0x8, 0x8, 0, 0},
8758 {0x5F, 0x77, 0x77, 1, 1},
8759 {0x60, 0x1, 0x1, 0, 0},
8760 {0x61, 0, 0, 0, 0},
8761 {0x62, 0x7, 0x7, 0, 0},
8762 {0x63, 0, 0, 0, 0},
8763 {0x64, 0x7, 0x7, 0, 0},
8764 {0x65, 0, 0, 0, 0},
8765 {0x66, 0, 0, 0, 0},
8766 {0x67, 0x72, 0x72, 1, 1},
8767 {0x68, 0, 0, 0, 0},
8768 {0x69, 0xa, 0xa, 0, 0},
8769 {0x6A, 0, 0, 0, 0},
8770 {0x6B, 0, 0, 0, 0},
8771 {0x6C, 0, 0, 0, 0},
8772 {0x6D, 0, 0, 0, 0},
8773 {0x6E, 0, 0, 0, 0},
8774 {0x6F, 0, 0, 0, 0},
8775 {0x70, 0, 0, 0, 0},
8776 {0x71, 0x2, 0x2, 0, 0},
8777 {0x72, 0, 0, 0, 0},
8778 {0x73, 0, 0, 0, 0},
8779 {0x74, 0xe, 0xe, 0, 0},
8780 {0x75, 0xe, 0xe, 0, 0},
8781 {0x76, 0xe, 0xe, 0, 0},
8782 {0x77, 0x13, 0x13, 0, 0},
8783 {0x78, 0x13, 0x13, 0, 0},
8784 {0x79, 0x1b, 0x1b, 0, 0},
8785 {0x7A, 0x1b, 0x1b, 0, 0},
8786 {0x7B, 0x55, 0x55, 0, 0},
8787 {0x7C, 0x5b, 0x5b, 0, 0},
8788 {0x7D, 0, 0, 0, 0},
8789 {0x7E, 0, 0, 0, 0},
8790 {0x7F, 0, 0, 0, 0},
8791 {0x80, 0, 0, 0, 0},
8792 {0x81, 0, 0, 0, 0},
8793 {0x82, 0, 0, 0, 0},
8794 {0x83, 0, 0, 0, 0},
8795 {0x84, 0, 0, 0, 0},
8796 {0x85, 0, 0, 0, 0},
8797 {0x86, 0, 0, 0, 0},
8798 {0x87, 0, 0, 0, 0},
8799 {0x88, 0, 0, 0, 0},
8800 {0x89, 0, 0, 0, 0},
8801 {0x8A, 0, 0, 0, 0},
8802 {0x8B, 0, 0, 0, 0},
8803 {0x8C, 0, 0, 0, 0},
8804 {0x8D, 0, 0, 0, 0},
8805 {0x8E, 0, 0, 0, 0},
8806 {0x8F, 0, 0, 0, 0},
8807 {0x90, 0, 0, 0, 0},
8808 {0x91, 0, 0, 0, 0},
8809 {0x92, 0, 0, 0, 0},
8810 {0xFFFF, 0, 0, 0, 0}
8811};
8812
8813static struct radio_regs regs_RX_2056_A1[] = {
8814 {0x02, 0, 0, 0, 0},
8815 {0x03, 0, 0, 0, 0},
8816 {0x04, 0, 0, 0, 0},
8817 {0x05, 0, 0, 0, 0},
8818 {0x06, 0, 0, 0, 0},
8819 {0x07, 0, 0, 0, 0},
8820 {0x08, 0, 0, 0, 0},
8821 {0x09, 0, 0, 0, 0},
8822 {0x0A, 0, 0, 0, 0},
8823 {0x0B, 0, 0, 0, 0},
8824 {0x0C, 0, 0, 0, 0},
8825 {0x0D, 0, 0, 0, 0},
8826 {0x0E, 0, 0, 0, 0},
8827 {0x0F, 0, 0, 0, 0},
8828 {0x10, 0, 0, 0, 0},
8829 {0x11, 0, 0, 0, 0},
8830 {0x12, 0, 0, 0, 0},
8831 {0x13, 0, 0, 0, 0},
8832 {0x14, 0, 0, 0, 0},
8833 {0x15, 0, 0, 0, 0},
8834 {0x16, 0, 0, 0, 0},
8835 {0x17, 0, 0, 0, 0},
8836 {0x18, 0, 0, 0, 0},
8837 {0x19, 0, 0, 0, 0},
8838 {0x1A, 0, 0, 0, 0},
8839 {0x1B, 0, 0, 0, 0},
8840 {0x1C, 0, 0, 0, 0},
8841 {0x1D, 0, 0, 0, 0},
8842 {0x1E, 0, 0, 0, 0},
8843 {0x1F, 0, 0, 0, 0},
8844 {0x20, 0x3, 0x3, 0, 0},
8845 {0x21, 0, 0, 0, 0},
8846 {0x22, 0, 0, 0, 0},
8847 {0x23, 0x90, 0x90, 0, 0},
8848 {0x24, 0x55, 0x55, 0, 0},
8849 {0x25, 0x15, 0x15, 0, 0},
8850 {0x26, 0x5, 0x5, 0, 0},
8851 {0x27, 0x15, 0x15, 0, 0},
8852 {0x28, 0x5, 0x5, 0, 0},
8853 {0x29, 0x20, 0x20, 0, 0},
8854 {0x2A, 0x11, 0x11, 0, 0},
8855 {0x2B, 0x90, 0x90, 0, 0},
8856 {0x2C, 0, 0, 0, 0},
8857 {0x2D, 0x88, 0x88, 0, 0},
8858 {0x2E, 0x32, 0x32, 0, 0},
8859 {0x2F, 0x77, 0x77, 0, 0},
8860 {0x30, 0x17, 0x17, 1, 1},
8861 {0x31, 0xff, 0xff, 1, 1},
8862 {0x32, 0x20, 0x20, 0, 0},
8863 {0x33, 0, 0, 0, 0},
8864 {0x34, 0x88, 0x88, 0, 0},
8865 {0x35, 0x32, 0x32, 0, 0},
8866 {0x36, 0x77, 0x77, 0, 0},
8867 {0x37, 0x17, 0x17, 1, 1},
8868 {0x38, 0xf0, 0xf0, 1, 1},
8869 {0x39, 0x20, 0x20, 0, 0},
8870 {0x3A, 0x8, 0x8, 0, 0},
8871 {0x3B, 0x55, 0x55, 1, 1},
8872 {0x3C, 0, 0, 0, 0},
8873 {0x3D, 0x44, 0x44, 1, 1},
8874 {0x3E, 0, 0, 0, 0},
8875 {0x3F, 0x44, 0x44, 0, 0},
8876 {0x40, 0xf, 0xf, 1, 1},
8877 {0x41, 0x6, 0x6, 0, 0},
8878 {0x42, 0x4, 0x4, 0, 0},
8879 {0x43, 0x50, 0x50, 1, 1},
8880 {0x44, 0x8, 0x8, 0, 0},
8881 {0x45, 0x55, 0x55, 1, 1},
8882 {0x46, 0, 0, 0, 0},
8883 {0x47, 0x11, 0x11, 0, 0},
8884 {0x48, 0, 0, 0, 0},
8885 {0x49, 0x44, 0x44, 0, 0},
8886 {0x4A, 0x7, 0x7, 0, 0},
8887 {0x4B, 0x6, 0x6, 0, 0},
8888 {0x4C, 0x4, 0x4, 0, 0},
8889 {0x4D, 0, 0, 0, 0},
8890 {0x4E, 0, 0, 0, 0},
8891 {0x4F, 0x26, 0x26, 1, 1},
8892 {0x50, 0x26, 0x26, 1, 1},
8893 {0x51, 0xf, 0xf, 1, 1},
8894 {0x52, 0xf, 0xf, 1, 1},
8895 {0x53, 0x44, 0x44, 0, 0},
8896 {0x54, 0, 0, 0, 0},
8897 {0x55, 0, 0, 0, 0},
8898 {0x56, 0x8, 0x8, 0, 0},
8899 {0x57, 0x8, 0x8, 0, 0},
8900 {0x58, 0x7, 0x7, 0, 0},
8901 {0x59, 0x22, 0x22, 0, 0},
8902 {0x5A, 0x22, 0x22, 0, 0},
8903 {0x5B, 0x2, 0x2, 0, 0},
8904 {0x5C, 0x2f, 0x2f, 1, 1},
8905 {0x5D, 0x7, 0x7, 0, 0},
8906 {0x5E, 0x55, 0x55, 0, 0},
8907 {0x5F, 0x23, 0x23, 0, 0},
8908 {0x60, 0x41, 0x41, 0, 0},
8909 {0x61, 0x1, 0x1, 0, 0},
8910 {0x62, 0xa, 0xa, 0, 0},
8911 {0x63, 0, 0, 0, 0},
8912 {0x64, 0, 0, 0, 0},
8913 {0x65, 0, 0, 0, 0},
8914 {0x66, 0, 0, 0, 0},
8915 {0x67, 0, 0, 0, 0},
8916 {0x68, 0, 0, 0, 0},
8917 {0x69, 0, 0, 0, 0},
8918 {0x6A, 0, 0, 0, 0},
8919 {0x6B, 0xc, 0xc, 0, 0},
8920 {0x6C, 0, 0, 0, 0},
8921 {0x6D, 0, 0, 0, 0},
8922 {0x6E, 0, 0, 0, 0},
8923 {0x6F, 0, 0, 0, 0},
8924 {0x70, 0, 0, 0, 0},
8925 {0x71, 0, 0, 0, 0},
8926 {0x72, 0x22, 0x22, 0, 0},
8927 {0x73, 0x22, 0x22, 0, 0},
8928 {0x74, 0, 0, 1, 1},
8929 {0x75, 0xa, 0xa, 0, 0},
8930 {0x76, 0x1, 0x1, 0, 0},
8931 {0x77, 0x22, 0x22, 0, 0},
8932 {0x78, 0x30, 0x30, 0, 0},
8933 {0x79, 0, 0, 0, 0},
8934 {0x7A, 0, 0, 0, 0},
8935 {0x7B, 0, 0, 0, 0},
8936 {0x7C, 0, 0, 0, 0},
8937 {0x7D, 0, 0, 0, 0},
8938 {0x7E, 0, 0, 0, 0},
8939 {0x7F, 0, 0, 0, 0},
8940 {0x80, 0, 0, 0, 0},
8941 {0x81, 0, 0, 0, 0},
8942 {0x82, 0, 0, 0, 0},
8943 {0x83, 0, 0, 0, 0},
8944 {0x84, 0, 0, 0, 0},
8945 {0x85, 0, 0, 0, 0},
8946 {0x86, 0, 0, 0, 0},
8947 {0x87, 0, 0, 0, 0},
8948 {0x88, 0, 0, 0, 0},
8949 {0x89, 0, 0, 0, 0},
8950 {0x8A, 0, 0, 0, 0},
8951 {0x8B, 0, 0, 0, 0},
8952 {0x8C, 0, 0, 0, 0},
8953 {0x8D, 0, 0, 0, 0},
8954 {0x8E, 0, 0, 0, 0},
8955 {0x8F, 0, 0, 0, 0},
8956 {0x90, 0, 0, 0, 0},
8957 {0x91, 0, 0, 0, 0},
8958 {0x92, 0, 0, 0, 0},
8959 {0x93, 0, 0, 0, 0},
8960 {0x94, 0, 0, 0, 0},
8961 {0xFFFF, 0, 0, 0, 0}
8962};
8963
8964static struct radio_regs regs_SYN_2056_rev5[] = {
8965 {0x02, 0, 0, 0, 0},
8966 {0x03, 0, 0, 0, 0},
8967 {0x04, 0, 0, 0, 0},
8968 {0x05, 0, 0, 0, 0},
8969 {0x06, 0, 0, 0, 0},
8970 {0x07, 0, 0, 0, 0},
8971 {0x08, 0, 0, 0, 0},
8972 {0x09, 0x1, 0x1, 0, 0},
8973 {0x0A, 0, 0, 0, 0},
8974 {0x0B, 0, 0, 0, 0},
8975 {0x0C, 0, 0, 0, 0},
8976 {0x0D, 0, 0, 0, 0},
8977 {0x0E, 0, 0, 0, 0},
8978 {0x0F, 0, 0, 0, 0},
8979 {0x10, 0, 0, 0, 0},
8980 {0x11, 0, 0, 0, 0},
8981 {0x12, 0, 0, 0, 0},
8982 {0x13, 0, 0, 0, 0},
8983 {0x14, 0, 0, 0, 0},
8984 {0x15, 0, 0, 0, 0},
8985 {0x16, 0, 0, 0, 0},
8986 {0x17, 0, 0, 0, 0},
8987 {0x18, 0, 0, 0, 0},
8988 {0x19, 0, 0, 0, 0},
8989 {0x1A, 0, 0, 0, 0},
8990 {0x1B, 0, 0, 0, 0},
8991 {0x1C, 0, 0, 0, 0},
8992 {0x1D, 0, 0, 0, 0},
8993 {0x1E, 0, 0, 0, 0},
8994 {0x1F, 0, 0, 0, 0},
8995 {0x20, 0, 0, 0, 0},
8996 {0x21, 0, 0, 0, 0},
8997 {0x22, 0x60, 0x60, 0, 0},
8998 {0x23, 0x6, 0x6, 0, 0},
8999 {0x24, 0xc, 0xc, 0, 0},
9000 {0x25, 0, 0, 0, 0},
9001 {0x26, 0, 0, 0, 0},
9002 {0x27, 0, 0, 0, 0},
9003 {0x28, 0x1, 0x1, 0, 0},
9004 {0x29, 0, 0, 0, 0},
9005 {0x2A, 0, 0, 0, 0},
9006 {0x2B, 0, 0, 0, 0},
9007 {0x2C, 0, 0, 0, 0},
9008 {0x2D, 0, 0, 0, 0},
9009 {0x2E, 0, 0, 0, 0},
9010 {0x2F, 0x1f, 0x1f, 0, 0},
9011 {0x30, 0x15, 0x15, 0, 0},
9012 {0x31, 0xf, 0xf, 0, 0},
9013 {0x32, 0, 0, 0, 0},
9014 {0x33, 0, 0, 0, 0},
9015 {0x34, 0, 0, 0, 0},
9016 {0x35, 0, 0, 0, 0},
9017 {0x36, 0, 0, 0, 0},
9018 {0x37, 0, 0, 0, 0},
9019 {0x38, 0, 0, 0, 0},
9020 {0x39, 0, 0, 0, 0},
9021 {0x3A, 0, 0, 0, 0},
9022 {0x3B, 0, 0, 0, 0},
9023 {0x3C, 0x13, 0x13, 0, 0},
9024 {0x3D, 0xf, 0xf, 0, 0},
9025 {0x3E, 0x18, 0x18, 0, 0},
9026 {0x3F, 0, 0, 0, 0},
9027 {0x40, 0, 0, 0, 0},
9028 {0x41, 0x20, 0x20, 0, 0},
9029 {0x42, 0x20, 0x20, 0, 0},
9030 {0x43, 0, 0, 0, 0},
9031 {0x44, 0x77, 0x77, 0, 0},
9032 {0x45, 0x7, 0x7, 0, 0},
9033 {0x46, 0x1, 0x1, 0, 0},
9034 {0x47, 0x4, 0x4, 0, 0},
9035 {0x48, 0xf, 0xf, 0, 0},
9036 {0x49, 0x30, 0x30, 0, 0},
9037 {0x4A, 0x32, 0x32, 0, 0},
9038 {0x4B, 0xd, 0xd, 0, 0},
9039 {0x4C, 0xd, 0xd, 0, 0},
9040 {0x4D, 0x4, 0x4, 0, 0},
9041 {0x4E, 0x6, 0x6, 0, 0},
9042 {0x4F, 0x1, 0x1, 0, 0},
9043 {0x50, 0x1c, 0x1c, 0, 0},
9044 {0x51, 0x2, 0x2, 0, 0},
9045 {0x52, 0x2, 0x2, 0, 0},
9046 {0x53, 0xf7, 0xf7, 1, 1},
9047 {0x54, 0xb4, 0xb4, 0, 0},
9048 {0x55, 0xd2, 0xd2, 0, 0},
9049 {0x56, 0, 0, 0, 0},
9050 {0x57, 0, 0, 0, 0},
9051 {0x58, 0x4, 0x4, 0, 0},
9052 {0x59, 0x96, 0x96, 0, 0},
9053 {0x5A, 0x3e, 0x3e, 0, 0},
9054 {0x5B, 0x3e, 0x3e, 0, 0},
9055 {0x5C, 0x13, 0x13, 0, 0},
9056 {0x5D, 0x2, 0x2, 0, 0},
9057 {0x5E, 0, 0, 0, 0},
9058 {0x5F, 0x7, 0x7, 0, 0},
9059 {0x60, 0x7, 0x7, 1, 1},
9060 {0x61, 0x8, 0x8, 0, 0},
9061 {0x62, 0x3, 0x3, 0, 0},
9062 {0x63, 0, 0, 0, 0},
9063 {0x64, 0, 0, 0, 0},
9064 {0x65, 0, 0, 0, 0},
9065 {0x66, 0, 0, 0, 0},
9066 {0x67, 0, 0, 0, 0},
9067 {0x68, 0x40, 0x40, 0, 0},
9068 {0x69, 0, 0, 0, 0},
9069 {0x6A, 0, 0, 0, 0},
9070 {0x6B, 0, 0, 0, 0},
9071 {0x6C, 0, 0, 0, 0},
9072 {0x6D, 0x1, 0x1, 0, 0},
9073 {0x6E, 0, 0, 0, 0},
9074 {0x6F, 0, 0, 0, 0},
9075 {0x70, 0x60, 0x60, 0, 0},
9076 {0x71, 0x66, 0x66, 0, 0},
9077 {0x72, 0xc, 0xc, 0, 0},
9078 {0x73, 0x66, 0x66, 0, 0},
9079 {0x74, 0x8f, 0x8f, 1, 1},
9080 {0x75, 0, 0, 0, 0},
9081 {0x76, 0xcc, 0xcc, 0, 0},
9082 {0x77, 0x1, 0x1, 0, 0},
9083 {0x78, 0x66, 0x66, 0, 0},
9084 {0x79, 0x66, 0x66, 0, 0},
9085 {0x7A, 0, 0, 0, 0},
9086 {0x7B, 0, 0, 0, 0},
9087 {0x7C, 0, 0, 0, 0},
9088 {0x7D, 0, 0, 0, 0},
9089 {0x7E, 0, 0, 0, 0},
9090 {0x7F, 0, 0, 0, 0},
9091 {0x80, 0, 0, 0, 0},
9092 {0x81, 0, 0, 0, 0},
9093 {0x82, 0, 0, 0, 0},
9094 {0x83, 0, 0, 0, 0},
9095 {0x84, 0, 0, 0, 0},
9096 {0x85, 0xff, 0xff, 0, 0},
9097 {0x86, 0, 0, 0, 0},
9098 {0x87, 0, 0, 0, 0},
9099 {0x88, 0, 0, 0, 0},
9100 {0x89, 0, 0, 0, 0},
9101 {0x8A, 0, 0, 0, 0},
9102 {0x8B, 0, 0, 0, 0},
9103 {0x8C, 0, 0, 0, 0},
9104 {0x8D, 0, 0, 0, 0},
9105 {0x8E, 0, 0, 0, 0},
9106 {0x8F, 0, 0, 0, 0},
9107 {0x90, 0, 0, 0, 0},
9108 {0x91, 0, 0, 0, 0},
9109 {0x92, 0, 0, 0, 0},
9110 {0x93, 0, 0, 0, 0},
9111 {0x94, 0, 0, 0, 0},
9112 {0x95, 0, 0, 0, 0},
9113 {0x96, 0, 0, 0, 0},
9114 {0x97, 0, 0, 0, 0},
9115 {0x98, 0, 0, 0, 0},
9116 {0x99, 0, 0, 0, 0},
9117 {0x9A, 0, 0, 0, 0},
9118 {0x9B, 0, 0, 0, 0},
9119 {0x9C, 0, 0, 0, 0},
9120 {0x9D, 0, 0, 0, 0},
9121 {0x9E, 0, 0, 0, 0},
9122 {0x9F, 0x6, 0x6, 0, 0},
9123 {0xA0, 0x66, 0x66, 0, 0},
9124 {0xA1, 0x66, 0x66, 0, 0},
9125 {0xA2, 0x66, 0x66, 0, 0},
9126 {0xA3, 0x66, 0x66, 0, 0},
9127 {0xA4, 0x66, 0x66, 0, 0},
9128 {0xA5, 0x66, 0x66, 0, 0},
9129 {0xA6, 0x66, 0x66, 0, 0},
9130 {0xA7, 0x66, 0x66, 0, 0},
9131 {0xA8, 0x66, 0x66, 0, 0},
9132 {0xA9, 0x66, 0x66, 0, 0},
9133 {0xAA, 0x66, 0x66, 0, 0},
9134 {0xAB, 0x66, 0x66, 0, 0},
9135 {0xAC, 0x66, 0x66, 0, 0},
9136 {0xAD, 0x66, 0x66, 0, 0},
9137 {0xAE, 0x66, 0x66, 0, 0},
9138 {0xAF, 0x66, 0x66, 0, 0},
9139 {0xB0, 0x66, 0x66, 0, 0},
9140 {0xB1, 0x66, 0x66, 0, 0},
9141 {0xB2, 0x66, 0x66, 0, 0},
9142 {0xB3, 0xa, 0xa, 0, 0},
9143 {0xB4, 0, 0, 0, 0},
9144 {0xB5, 0, 0, 0, 0},
9145 {0xB6, 0, 0, 0, 0},
9146 {0xFFFF, 0, 0, 0, 0}
9147};
9148
9149static struct radio_regs regs_TX_2056_rev5[] = {
9150 {0x02, 0, 0, 0, 0},
9151 {0x03, 0, 0, 0, 0},
9152 {0x04, 0, 0, 0, 0},
9153 {0x05, 0, 0, 0, 0},
9154 {0x06, 0, 0, 0, 0},
9155 {0x07, 0, 0, 0, 0},
9156 {0x08, 0, 0, 0, 0},
9157 {0x09, 0, 0, 0, 0},
9158 {0x0A, 0, 0, 0, 0},
9159 {0x0B, 0, 0, 0, 0},
9160 {0x0C, 0, 0, 0, 0},
9161 {0x0D, 0, 0, 0, 0},
9162 {0x0E, 0, 0, 0, 0},
9163 {0x0F, 0, 0, 0, 0},
9164 {0x10, 0, 0, 0, 0},
9165 {0x11, 0, 0, 0, 0},
9166 {0x12, 0, 0, 0, 0},
9167 {0x13, 0, 0, 0, 0},
9168 {0x14, 0, 0, 0, 0},
9169 {0x15, 0, 0, 0, 0},
9170 {0x16, 0, 0, 0, 0},
9171 {0x17, 0, 0, 0, 0},
9172 {0x18, 0, 0, 0, 0},
9173 {0x19, 0, 0, 0, 0},
9174 {0x1A, 0, 0, 0, 0},
9175 {0x1B, 0, 0, 0, 0},
9176 {0x1C, 0, 0, 0, 0},
9177 {0x1D, 0, 0, 0, 0},
9178 {0x1E, 0, 0, 0, 0},
9179 {0x1F, 0, 0, 0, 0},
9180 {0x20, 0, 0, 0, 0},
9181 {0x21, 0x88, 0x88, 0, 0},
9182 {0x22, 0x88, 0x88, 0, 0},
9183 {0x23, 0x88, 0x88, 0, 0},
9184 {0x24, 0x88, 0x88, 0, 0},
9185 {0x25, 0xc, 0xc, 0, 0},
9186 {0x26, 0, 0, 0, 0},
9187 {0x27, 0x3, 0x3, 0, 0},
9188 {0x28, 0, 0, 0, 0},
9189 {0x29, 0x3, 0x3, 0, 0},
9190 {0x2A, 0x37, 0x37, 0, 0},
9191 {0x2B, 0x3, 0x3, 0, 0},
9192 {0x2C, 0, 0, 0, 0},
9193 {0x2D, 0, 0, 0, 0},
9194 {0x2E, 0x1, 0x1, 0, 0},
9195 {0x2F, 0x1, 0x1, 0, 0},
9196 {0x30, 0, 0, 0, 0},
9197 {0x31, 0, 0, 0, 0},
9198 {0x32, 0, 0, 0, 0},
9199 {0x33, 0x11, 0x11, 0, 0},
9200 {0x34, 0x11, 0x11, 0, 0},
9201 {0x35, 0, 0, 0, 0},
9202 {0x36, 0, 0, 0, 0},
9203 {0x37, 0x3, 0x3, 0, 0},
9204 {0x38, 0xf, 0xf, 0, 0},
9205 {0x39, 0, 0, 0, 0},
9206 {0x3A, 0x2d, 0x2d, 0, 0},
9207 {0x3B, 0, 0, 0, 0},
9208 {0x3C, 0x6e, 0x6e, 0, 0},
9209 {0x3D, 0xf0, 0xf0, 1, 1},
9210 {0x3E, 0, 0, 0, 0},
9211 {0x3F, 0, 0, 0, 0},
9212 {0x40, 0, 0, 0, 0},
9213 {0x41, 0x3, 0x3, 0, 0},
9214 {0x42, 0x3, 0x3, 0, 0},
9215 {0x43, 0, 0, 0, 0},
9216 {0x44, 0x1e, 0x1e, 0, 0},
9217 {0x45, 0, 0, 0, 0},
9218 {0x46, 0x6e, 0x6e, 0, 0},
9219 {0x47, 0xf0, 0xf0, 1, 1},
9220 {0x48, 0, 0, 0, 0},
9221 {0x49, 0x2, 0x2, 0, 0},
9222 {0x4A, 0xff, 0xff, 1, 1},
9223 {0x4B, 0xc, 0xc, 0, 0},
9224 {0x4C, 0, 0, 0, 0},
9225 {0x4D, 0x38, 0x38, 0, 0},
9226 {0x4E, 0x70, 0x70, 1, 1},
9227 {0x4F, 0x2, 0x2, 0, 0},
9228 {0x50, 0x88, 0x88, 0, 0},
9229 {0x51, 0xc, 0xc, 0, 0},
9230 {0x52, 0, 0, 0, 0},
9231 {0x53, 0x8, 0x8, 0, 0},
9232 {0x54, 0x70, 0x70, 1, 1},
9233 {0x55, 0x2, 0x2, 0, 0},
9234 {0x56, 0xff, 0xff, 1, 1},
9235 {0x57, 0, 0, 0, 0},
9236 {0x58, 0x83, 0x83, 0, 0},
9237 {0x59, 0x77, 0x77, 1, 1},
9238 {0x5A, 0, 0, 0, 0},
9239 {0x5B, 0x2, 0x2, 0, 0},
9240 {0x5C, 0x88, 0x88, 0, 0},
9241 {0x5D, 0, 0, 0, 0},
9242 {0x5E, 0x8, 0x8, 0, 0},
9243 {0x5F, 0x77, 0x77, 1, 1},
9244 {0x60, 0x1, 0x1, 0, 0},
9245 {0x61, 0, 0, 0, 0},
9246 {0x62, 0x7, 0x7, 0, 0},
9247 {0x63, 0, 0, 0, 0},
9248 {0x64, 0x7, 0x7, 0, 0},
9249 {0x65, 0, 0, 0, 0},
9250 {0x66, 0, 0, 0, 0},
9251 {0x67, 0, 0, 1, 1},
9252 {0x68, 0, 0, 0, 0},
9253 {0x69, 0xa, 0xa, 0, 0},
9254 {0x6A, 0, 0, 0, 0},
9255 {0x6B, 0, 0, 0, 0},
9256 {0x6C, 0, 0, 0, 0},
9257 {0x6D, 0, 0, 0, 0},
9258 {0x6E, 0, 0, 0, 0},
9259 {0x6F, 0, 0, 0, 0},
9260 {0x70, 0, 0, 0, 0},
9261 {0x71, 0x2, 0x2, 0, 0},
9262 {0x72, 0, 0, 0, 0},
9263 {0x73, 0, 0, 0, 0},
9264 {0x74, 0xe, 0xe, 0, 0},
9265 {0x75, 0xe, 0xe, 0, 0},
9266 {0x76, 0xe, 0xe, 0, 0},
9267 {0x77, 0x13, 0x13, 0, 0},
9268 {0x78, 0x13, 0x13, 0, 0},
9269 {0x79, 0x1b, 0x1b, 0, 0},
9270 {0x7A, 0x1b, 0x1b, 0, 0},
9271 {0x7B, 0x55, 0x55, 0, 0},
9272 {0x7C, 0x5b, 0x5b, 0, 0},
9273 {0x7D, 0, 0, 0, 0},
9274 {0x7E, 0, 0, 0, 0},
9275 {0x7F, 0, 0, 0, 0},
9276 {0x80, 0, 0, 0, 0},
9277 {0x81, 0, 0, 0, 0},
9278 {0x82, 0, 0, 0, 0},
9279 {0x83, 0, 0, 0, 0},
9280 {0x84, 0, 0, 0, 0},
9281 {0x85, 0, 0, 0, 0},
9282 {0x86, 0, 0, 0, 0},
9283 {0x87, 0, 0, 0, 0},
9284 {0x88, 0, 0, 0, 0},
9285 {0x89, 0, 0, 0, 0},
9286 {0x8A, 0, 0, 0, 0},
9287 {0x8B, 0, 0, 0, 0},
9288 {0x8C, 0, 0, 0, 0},
9289 {0x8D, 0, 0, 0, 0},
9290 {0x8E, 0, 0, 0, 0},
9291 {0x8F, 0, 0, 0, 0},
9292 {0x90, 0, 0, 0, 0},
9293 {0x91, 0, 0, 0, 0},
9294 {0x92, 0, 0, 0, 0},
9295 {0x93, 0x70, 0x70, 0, 0},
9296 {0x94, 0x70, 0x70, 0, 0},
9297 {0x95, 0x71, 0x71, 1, 1},
9298 {0x96, 0x71, 0x71, 1, 1},
9299 {0x97, 0x72, 0x72, 1, 1},
9300 {0x98, 0x73, 0x73, 1, 1},
9301 {0x99, 0x74, 0x74, 1, 1},
9302 {0x9A, 0x75, 0x75, 1, 1},
9303 {0xFFFF, 0, 0, 0, 0}
9304};
9305
9306static struct radio_regs regs_RX_2056_rev5[] = {
9307 {0x02, 0, 0, 0, 0},
9308 {0x03, 0, 0, 0, 0},
9309 {0x04, 0, 0, 0, 0},
9310 {0x05, 0, 0, 0, 0},
9311 {0x06, 0, 0, 0, 0},
9312 {0x07, 0, 0, 0, 0},
9313 {0x08, 0, 0, 0, 0},
9314 {0x09, 0, 0, 0, 0},
9315 {0x0A, 0, 0, 0, 0},
9316 {0x0B, 0, 0, 0, 0},
9317 {0x0C, 0, 0, 0, 0},
9318 {0x0D, 0, 0, 0, 0},
9319 {0x0E, 0, 0, 0, 0},
9320 {0x0F, 0, 0, 0, 0},
9321 {0x10, 0, 0, 0, 0},
9322 {0x11, 0, 0, 0, 0},
9323 {0x12, 0, 0, 0, 0},
9324 {0x13, 0, 0, 0, 0},
9325 {0x14, 0, 0, 0, 0},
9326 {0x15, 0, 0, 0, 0},
9327 {0x16, 0, 0, 0, 0},
9328 {0x17, 0, 0, 0, 0},
9329 {0x18, 0, 0, 0, 0},
9330 {0x19, 0, 0, 0, 0},
9331 {0x1A, 0, 0, 0, 0},
9332 {0x1B, 0, 0, 0, 0},
9333 {0x1C, 0, 0, 0, 0},
9334 {0x1D, 0, 0, 0, 0},
9335 {0x1E, 0, 0, 0, 0},
9336 {0x1F, 0, 0, 0, 0},
9337 {0x20, 0x3, 0x3, 0, 0},
9338 {0x21, 0, 0, 0, 0},
9339 {0x22, 0, 0, 0, 0},
9340 {0x23, 0x90, 0x90, 0, 0},
9341 {0x24, 0x55, 0x55, 0, 0},
9342 {0x25, 0x15, 0x15, 0, 0},
9343 {0x26, 0x5, 0x5, 0, 0},
9344 {0x27, 0x15, 0x15, 0, 0},
9345 {0x28, 0x5, 0x5, 0, 0},
9346 {0x29, 0x20, 0x20, 0, 0},
9347 {0x2A, 0x11, 0x11, 0, 0},
9348 {0x2B, 0x90, 0x90, 0, 0},
9349 {0x2C, 0, 0, 0, 0},
9350 {0x2D, 0x88, 0x88, 0, 0},
9351 {0x2E, 0x32, 0x32, 0, 0},
9352 {0x2F, 0x77, 0x77, 0, 0},
9353 {0x30, 0x17, 0x17, 1, 1},
9354 {0x31, 0xff, 0xff, 1, 1},
9355 {0x32, 0x20, 0x20, 0, 0},
9356 {0x33, 0, 0, 0, 0},
9357 {0x34, 0x88, 0x88, 0, 0},
9358 {0x35, 0x32, 0x32, 0, 0},
9359 {0x36, 0x77, 0x77, 0, 0},
9360 {0x37, 0x17, 0x17, 1, 1},
9361 {0x38, 0xf0, 0xf0, 1, 1},
9362 {0x39, 0x20, 0x20, 0, 0},
9363 {0x3A, 0x8, 0x8, 0, 0},
9364 {0x3B, 0x55, 0x55, 1, 1},
9365 {0x3C, 0, 0, 0, 0},
9366 {0x3D, 0x88, 0x88, 1, 1},
9367 {0x3E, 0, 0, 0, 0},
9368 {0x3F, 0, 0, 1, 1},
9369 {0x40, 0x7, 0x7, 1, 1},
9370 {0x41, 0x6, 0x6, 0, 0},
9371 {0x42, 0x4, 0x4, 0, 0},
9372 {0x43, 0, 0, 0, 0},
9373 {0x44, 0x8, 0x8, 0, 0},
9374 {0x45, 0x55, 0x55, 1, 1},
9375 {0x46, 0, 0, 0, 0},
9376 {0x47, 0x11, 0x11, 0, 0},
9377 {0x48, 0, 0, 0, 0},
9378 {0x49, 0, 0, 1, 1},
9379 {0x4A, 0x7, 0x7, 0, 0},
9380 {0x4B, 0x6, 0x6, 0, 0},
9381 {0x4C, 0x4, 0x4, 0, 0},
9382 {0x4D, 0, 0, 0, 0},
9383 {0x4E, 0, 0, 0, 0},
9384 {0x4F, 0x26, 0x26, 1, 1},
9385 {0x50, 0x26, 0x26, 1, 1},
9386 {0x51, 0xf, 0xf, 1, 1},
9387 {0x52, 0xf, 0xf, 1, 1},
9388 {0x53, 0x44, 0x44, 0, 0},
9389 {0x54, 0, 0, 0, 0},
9390 {0x55, 0, 0, 0, 0},
9391 {0x56, 0x8, 0x8, 0, 0},
9392 {0x57, 0x8, 0x8, 0, 0},
9393 {0x58, 0x7, 0x7, 0, 0},
9394 {0x59, 0x22, 0x22, 0, 0},
9395 {0x5A, 0x22, 0x22, 0, 0},
9396 {0x5B, 0x2, 0x2, 0, 0},
9397 {0x5C, 0x4, 0x4, 1, 1},
9398 {0x5D, 0x7, 0x7, 0, 0},
9399 {0x5E, 0x55, 0x55, 0, 0},
9400 {0x5F, 0x23, 0x23, 0, 0},
9401 {0x60, 0x41, 0x41, 0, 0},
9402 {0x61, 0x1, 0x1, 0, 0},
9403 {0x62, 0xa, 0xa, 0, 0},
9404 {0x63, 0, 0, 0, 0},
9405 {0x64, 0, 0, 0, 0},
9406 {0x65, 0, 0, 0, 0},
9407 {0x66, 0, 0, 0, 0},
9408 {0x67, 0, 0, 0, 0},
9409 {0x68, 0, 0, 0, 0},
9410 {0x69, 0, 0, 0, 0},
9411 {0x6A, 0, 0, 0, 0},
9412 {0x6B, 0xc, 0xc, 0, 0},
9413 {0x6C, 0, 0, 0, 0},
9414 {0x6D, 0, 0, 0, 0},
9415 {0x6E, 0, 0, 0, 0},
9416 {0x6F, 0, 0, 0, 0},
9417 {0x70, 0, 0, 0, 0},
9418 {0x71, 0, 0, 0, 0},
9419 {0x72, 0x22, 0x22, 0, 0},
9420 {0x73, 0x22, 0x22, 0, 0},
9421 {0x74, 0, 0, 1, 1},
9422 {0x75, 0xa, 0xa, 0, 0},
9423 {0x76, 0x1, 0x1, 0, 0},
9424 {0x77, 0x22, 0x22, 0, 0},
9425 {0x78, 0x30, 0x30, 0, 0},
9426 {0x79, 0, 0, 0, 0},
9427 {0x7A, 0, 0, 0, 0},
9428 {0x7B, 0, 0, 0, 0},
9429 {0x7C, 0, 0, 0, 0},
9430 {0x7D, 0, 0, 0, 0},
9431 {0x7E, 0, 0, 0, 0},
9432 {0x7F, 0, 0, 0, 0},
9433 {0x80, 0, 0, 0, 0},
9434 {0x81, 0, 0, 0, 0},
9435 {0x82, 0, 0, 0, 0},
9436 {0x83, 0, 0, 0, 0},
9437 {0x84, 0, 0, 0, 0},
9438 {0x85, 0, 0, 0, 0},
9439 {0x86, 0, 0, 0, 0},
9440 {0x87, 0, 0, 0, 0},
9441 {0x88, 0, 0, 0, 0},
9442 {0x89, 0, 0, 0, 0},
9443 {0x8A, 0, 0, 0, 0},
9444 {0x8B, 0, 0, 0, 0},
9445 {0x8C, 0, 0, 0, 0},
9446 {0x8D, 0, 0, 0, 0},
9447 {0x8E, 0, 0, 0, 0},
9448 {0x8F, 0, 0, 0, 0},
9449 {0x90, 0, 0, 0, 0},
9450 {0x91, 0, 0, 0, 0},
9451 {0x92, 0, 0, 0, 0},
9452 {0x93, 0, 0, 0, 0},
9453 {0x94, 0, 0, 0, 0},
9454 {0xFFFF, 0, 0, 0, 0}
9455};
9456
9457static struct radio_regs regs_SYN_2056_rev6[] = {
9458 {0x02, 0, 0, 0, 0},
9459 {0x03, 0, 0, 0, 0},
9460 {0x04, 0, 0, 0, 0},
9461 {0x05, 0, 0, 0, 0},
9462 {0x06, 0, 0, 0, 0},
9463 {0x07, 0, 0, 0, 0},
9464 {0x08, 0, 0, 0, 0},
9465 {0x09, 0x1, 0x1, 0, 0},
9466 {0x0A, 0, 0, 0, 0},
9467 {0x0B, 0, 0, 0, 0},
9468 {0x0C, 0, 0, 0, 0},
9469 {0x0D, 0, 0, 0, 0},
9470 {0x0E, 0, 0, 0, 0},
9471 {0x0F, 0, 0, 0, 0},
9472 {0x10, 0, 0, 0, 0},
9473 {0x11, 0, 0, 0, 0},
9474 {0x12, 0, 0, 0, 0},
9475 {0x13, 0, 0, 0, 0},
9476 {0x14, 0, 0, 0, 0},
9477 {0x15, 0, 0, 0, 0},
9478 {0x16, 0, 0, 0, 0},
9479 {0x17, 0, 0, 0, 0},
9480 {0x18, 0, 0, 0, 0},
9481 {0x19, 0, 0, 0, 0},
9482 {0x1A, 0, 0, 0, 0},
9483 {0x1B, 0, 0, 0, 0},
9484 {0x1C, 0, 0, 0, 0},
9485 {0x1D, 0, 0, 0, 0},
9486 {0x1E, 0, 0, 0, 0},
9487 {0x1F, 0, 0, 0, 0},
9488 {0x20, 0, 0, 0, 0},
9489 {0x21, 0, 0, 0, 0},
9490 {0x22, 0x60, 0x60, 0, 0},
9491 {0x23, 0x6, 0x6, 0, 0},
9492 {0x24, 0xc, 0xc, 0, 0},
9493 {0x25, 0, 0, 0, 0},
9494 {0x26, 0, 0, 0, 0},
9495 {0x27, 0, 0, 0, 0},
9496 {0x28, 0x1, 0x1, 0, 0},
9497 {0x29, 0, 0, 0, 0},
9498 {0x2A, 0, 0, 0, 0},
9499 {0x2B, 0, 0, 0, 0},
9500 {0x2C, 0, 0, 0, 0},
9501 {0x2D, 0, 0, 0, 0},
9502 {0x2E, 0, 0, 0, 0},
9503 {0x2F, 0x1f, 0x1f, 0, 0},
9504 {0x30, 0x15, 0x15, 0, 0},
9505 {0x31, 0xf, 0xf, 0, 0},
9506 {0x32, 0, 0, 0, 0},
9507 {0x33, 0, 0, 0, 0},
9508 {0x34, 0, 0, 0, 0},
9509 {0x35, 0, 0, 0, 0},
9510 {0x36, 0, 0, 0, 0},
9511 {0x37, 0, 0, 0, 0},
9512 {0x38, 0, 0, 0, 0},
9513 {0x39, 0, 0, 0, 0},
9514 {0x3A, 0, 0, 0, 0},
9515 {0x3B, 0, 0, 0, 0},
9516 {0x3C, 0x13, 0x13, 0, 0},
9517 {0x3D, 0xf, 0xf, 0, 0},
9518 {0x3E, 0x18, 0x18, 0, 0},
9519 {0x3F, 0, 0, 0, 0},
9520 {0x40, 0, 0, 0, 0},
9521 {0x41, 0x20, 0x20, 0, 0},
9522 {0x42, 0x20, 0x20, 0, 0},
9523 {0x43, 0, 0, 0, 0},
9524 {0x44, 0x77, 0x77, 0, 0},
9525 {0x45, 0x7, 0x7, 0, 0},
9526 {0x46, 0x1, 0x1, 0, 0},
9527 {0x47, 0x4, 0x4, 0, 0},
9528 {0x48, 0xf, 0xf, 0, 0},
9529 {0x49, 0x30, 0x30, 0, 0},
9530 {0x4A, 0x32, 0x32, 0, 0},
9531 {0x4B, 0xd, 0xd, 0, 0},
9532 {0x4C, 0xd, 0xd, 0, 0},
9533 {0x4D, 0x4, 0x4, 0, 0},
9534 {0x4E, 0x6, 0x6, 0, 0},
9535 {0x4F, 0x1, 0x1, 0, 0},
9536 {0x50, 0x1c, 0x1c, 0, 0},
9537 {0x51, 0x2, 0x2, 0, 0},
9538 {0x52, 0x2, 0x2, 0, 0},
9539 {0x53, 0xf7, 0xf7, 1, 1},
9540 {0x54, 0xb4, 0xb4, 0, 0},
9541 {0x55, 0xd2, 0xd2, 0, 0},
9542 {0x56, 0, 0, 0, 0},
9543 {0x57, 0, 0, 0, 0},
9544 {0x58, 0x4, 0x4, 0, 0},
9545 {0x59, 0x96, 0x96, 0, 0},
9546 {0x5A, 0x3e, 0x3e, 0, 0},
9547 {0x5B, 0x3e, 0x3e, 0, 0},
9548 {0x5C, 0x13, 0x13, 0, 0},
9549 {0x5D, 0x2, 0x2, 0, 0},
9550 {0x5E, 0, 0, 0, 0},
9551 {0x5F, 0x7, 0x7, 0, 0},
9552 {0x60, 0x7, 0x7, 1, 1},
9553 {0x61, 0x8, 0x8, 0, 0},
9554 {0x62, 0x3, 0x3, 0, 0},
9555 {0x63, 0, 0, 0, 0},
9556 {0x64, 0, 0, 0, 0},
9557 {0x65, 0, 0, 0, 0},
9558 {0x66, 0, 0, 0, 0},
9559 {0x67, 0, 0, 0, 0},
9560 {0x68, 0x40, 0x40, 0, 0},
9561 {0x69, 0, 0, 0, 0},
9562 {0x6A, 0, 0, 0, 0},
9563 {0x6B, 0, 0, 0, 0},
9564 {0x6C, 0, 0, 0, 0},
9565 {0x6D, 0x1, 0x1, 0, 0},
9566 {0x6E, 0, 0, 0, 0},
9567 {0x6F, 0, 0, 0, 0},
9568 {0x70, 0x60, 0x60, 0, 0},
9569 {0x71, 0x66, 0x66, 0, 0},
9570 {0x72, 0xc, 0xc, 0, 0},
9571 {0x73, 0x66, 0x66, 0, 0},
9572 {0x74, 0x8f, 0x8f, 1, 1},
9573 {0x75, 0, 0, 0, 0},
9574 {0x76, 0xcc, 0xcc, 0, 0},
9575 {0x77, 0x1, 0x1, 0, 0},
9576 {0x78, 0x66, 0x66, 0, 0},
9577 {0x79, 0x66, 0x66, 0, 0},
9578 {0x7A, 0, 0, 0, 0},
9579 {0x7B, 0, 0, 0, 0},
9580 {0x7C, 0, 0, 0, 0},
9581 {0x7D, 0, 0, 0, 0},
9582 {0x7E, 0, 0, 0, 0},
9583 {0x7F, 0, 0, 0, 0},
9584 {0x80, 0, 0, 0, 0},
9585 {0x81, 0, 0, 0, 0},
9586 {0x82, 0, 0, 0, 0},
9587 {0x83, 0, 0, 0, 0},
9588 {0x84, 0, 0, 0, 0},
9589 {0x85, 0xff, 0xff, 0, 0},
9590 {0x86, 0, 0, 0, 0},
9591 {0x87, 0, 0, 0, 0},
9592 {0x88, 0, 0, 0, 0},
9593 {0x89, 0, 0, 0, 0},
9594 {0x8A, 0, 0, 0, 0},
9595 {0x8B, 0, 0, 0, 0},
9596 {0x8C, 0, 0, 0, 0},
9597 {0x8D, 0, 0, 0, 0},
9598 {0x8E, 0, 0, 0, 0},
9599 {0x8F, 0, 0, 0, 0},
9600 {0x90, 0, 0, 0, 0},
9601 {0x91, 0, 0, 0, 0},
9602 {0x92, 0, 0, 0, 0},
9603 {0x93, 0, 0, 0, 0},
9604 {0x94, 0, 0, 0, 0},
9605 {0x95, 0, 0, 0, 0},
9606 {0x96, 0, 0, 0, 0},
9607 {0x97, 0, 0, 0, 0},
9608 {0x98, 0, 0, 0, 0},
9609 {0x99, 0, 0, 0, 0},
9610 {0x9A, 0, 0, 0, 0},
9611 {0x9B, 0, 0, 0, 0},
9612 {0x9C, 0, 0, 0, 0},
9613 {0x9D, 0, 0, 0, 0},
9614 {0x9E, 0, 0, 0, 0},
9615 {0x9F, 0x6, 0x6, 0, 0},
9616 {0xA0, 0x66, 0x66, 0, 0},
9617 {0xA1, 0x66, 0x66, 0, 0},
9618 {0xA2, 0x66, 0x66, 0, 0},
9619 {0xA3, 0x66, 0x66, 0, 0},
9620 {0xA4, 0x66, 0x66, 0, 0},
9621 {0xA5, 0x66, 0x66, 0, 0},
9622 {0xA6, 0x66, 0x66, 0, 0},
9623 {0xA7, 0x66, 0x66, 0, 0},
9624 {0xA8, 0x66, 0x66, 0, 0},
9625 {0xA9, 0x66, 0x66, 0, 0},
9626 {0xAA, 0x66, 0x66, 0, 0},
9627 {0xAB, 0x66, 0x66, 0, 0},
9628 {0xAC, 0x66, 0x66, 0, 0},
9629 {0xAD, 0x66, 0x66, 0, 0},
9630 {0xAE, 0x66, 0x66, 0, 0},
9631 {0xAF, 0x66, 0x66, 0, 0},
9632 {0xB0, 0x66, 0x66, 0, 0},
9633 {0xB1, 0x66, 0x66, 0, 0},
9634 {0xB2, 0x66, 0x66, 0, 0},
9635 {0xB3, 0xa, 0xa, 0, 0},
9636 {0xB4, 0, 0, 0, 0},
9637 {0xB5, 0, 0, 0, 0},
9638 {0xB6, 0, 0, 0, 0},
9639 {0xFFFF, 0, 0, 0, 0}
9640};
9641
9642static struct radio_regs regs_TX_2056_rev6[] = {
9643 {0x02, 0, 0, 0, 0},
9644 {0x03, 0, 0, 0, 0},
9645 {0x04, 0, 0, 0, 0},
9646 {0x05, 0, 0, 0, 0},
9647 {0x06, 0, 0, 0, 0},
9648 {0x07, 0, 0, 0, 0},
9649 {0x08, 0, 0, 0, 0},
9650 {0x09, 0, 0, 0, 0},
9651 {0x0A, 0, 0, 0, 0},
9652 {0x0B, 0, 0, 0, 0},
9653 {0x0C, 0, 0, 0, 0},
9654 {0x0D, 0, 0, 0, 0},
9655 {0x0E, 0, 0, 0, 0},
9656 {0x0F, 0, 0, 0, 0},
9657 {0x10, 0, 0, 0, 0},
9658 {0x11, 0, 0, 0, 0},
9659 {0x12, 0, 0, 0, 0},
9660 {0x13, 0, 0, 0, 0},
9661 {0x14, 0, 0, 0, 0},
9662 {0x15, 0, 0, 0, 0},
9663 {0x16, 0, 0, 0, 0},
9664 {0x17, 0, 0, 0, 0},
9665 {0x18, 0, 0, 0, 0},
9666 {0x19, 0, 0, 0, 0},
9667 {0x1A, 0, 0, 0, 0},
9668 {0x1B, 0, 0, 0, 0},
9669 {0x1C, 0, 0, 0, 0},
9670 {0x1D, 0, 0, 0, 0},
9671 {0x1E, 0, 0, 0, 0},
9672 {0x1F, 0, 0, 0, 0},
9673 {0x20, 0, 0, 0, 0},
9674 {0x21, 0x88, 0x88, 0, 0},
9675 {0x22, 0x88, 0x88, 0, 0},
9676 {0x23, 0x88, 0x88, 0, 0},
9677 {0x24, 0x88, 0x88, 0, 0},
9678 {0x25, 0xc, 0xc, 0, 0},
9679 {0x26, 0, 0, 0, 0},
9680 {0x27, 0x3, 0x3, 0, 0},
9681 {0x28, 0, 0, 0, 0},
9682 {0x29, 0x3, 0x3, 0, 0},
9683 {0x2A, 0x37, 0x37, 0, 0},
9684 {0x2B, 0x3, 0x3, 0, 0},
9685 {0x2C, 0, 0, 0, 0},
9686 {0x2D, 0, 0, 0, 0},
9687 {0x2E, 0x1, 0x1, 0, 0},
9688 {0x2F, 0x1, 0x1, 0, 0},
9689 {0x30, 0, 0, 0, 0},
9690 {0x31, 0, 0, 0, 0},
9691 {0x32, 0, 0, 0, 0},
9692 {0x33, 0x11, 0x11, 0, 0},
9693 {0x34, 0xee, 0xee, 1, 1},
9694 {0x35, 0, 0, 0, 0},
9695 {0x36, 0, 0, 0, 0},
9696 {0x37, 0x3, 0x3, 0, 0},
9697 {0x38, 0x50, 0x50, 1, 1},
9698 {0x39, 0, 0, 0, 0},
9699 {0x3A, 0x50, 0x50, 1, 1},
9700 {0x3B, 0, 0, 0, 0},
9701 {0x3C, 0x6e, 0x6e, 0, 0},
9702 {0x3D, 0xf0, 0xf0, 1, 1},
9703 {0x3E, 0, 0, 0, 0},
9704 {0x3F, 0, 0, 0, 0},
9705 {0x40, 0, 0, 0, 0},
9706 {0x41, 0x3, 0x3, 0, 0},
9707 {0x42, 0x3, 0x3, 0, 0},
9708 {0x43, 0, 0, 0, 0},
9709 {0x44, 0x1e, 0x1e, 0, 0},
9710 {0x45, 0, 0, 0, 0},
9711 {0x46, 0x6e, 0x6e, 0, 0},
9712 {0x47, 0xf0, 0xf0, 1, 1},
9713 {0x48, 0, 0, 0, 0},
9714 {0x49, 0x2, 0x2, 0, 0},
9715 {0x4A, 0xff, 0xff, 1, 1},
9716 {0x4B, 0xc, 0xc, 0, 0},
9717 {0x4C, 0, 0, 0, 0},
9718 {0x4D, 0x38, 0x38, 0, 0},
9719 {0x4E, 0x70, 0x70, 1, 1},
9720 {0x4F, 0x2, 0x2, 0, 0},
9721 {0x50, 0x88, 0x88, 0, 0},
9722 {0x51, 0xc, 0xc, 0, 0},
9723 {0x52, 0, 0, 0, 0},
9724 {0x53, 0x8, 0x8, 0, 0},
9725 {0x54, 0x70, 0x70, 1, 1},
9726 {0x55, 0x2, 0x2, 0, 0},
9727 {0x56, 0xff, 0xff, 1, 1},
9728 {0x57, 0, 0, 0, 0},
9729 {0x58, 0x83, 0x83, 0, 0},
9730 {0x59, 0x77, 0x77, 1, 1},
9731 {0x5A, 0, 0, 0, 0},
9732 {0x5B, 0x2, 0x2, 0, 0},
9733 {0x5C, 0x88, 0x88, 0, 0},
9734 {0x5D, 0, 0, 0, 0},
9735 {0x5E, 0x8, 0x8, 0, 0},
9736 {0x5F, 0x77, 0x77, 1, 1},
9737 {0x60, 0x1, 0x1, 0, 0},
9738 {0x61, 0, 0, 0, 0},
9739 {0x62, 0x7, 0x7, 0, 0},
9740 {0x63, 0, 0, 0, 0},
9741 {0x64, 0x7, 0x7, 0, 0},
9742 {0x65, 0, 0, 0, 0},
9743 {0x66, 0, 0, 0, 0},
9744 {0x67, 0, 0, 1, 1},
9745 {0x68, 0, 0, 0, 0},
9746 {0x69, 0xa, 0xa, 0, 0},
9747 {0x6A, 0, 0, 0, 0},
9748 {0x6B, 0, 0, 0, 0},
9749 {0x6C, 0, 0, 0, 0},
9750 {0x6D, 0, 0, 0, 0},
9751 {0x6E, 0, 0, 0, 0},
9752 {0x6F, 0, 0, 0, 0},
9753 {0x70, 0, 0, 0, 0},
9754 {0x71, 0x2, 0x2, 0, 0},
9755 {0x72, 0, 0, 0, 0},
9756 {0x73, 0, 0, 0, 0},
9757 {0x74, 0xe, 0xe, 0, 0},
9758 {0x75, 0xe, 0xe, 0, 0},
9759 {0x76, 0xe, 0xe, 0, 0},
9760 {0x77, 0x13, 0x13, 0, 0},
9761 {0x78, 0x13, 0x13, 0, 0},
9762 {0x79, 0x1b, 0x1b, 0, 0},
9763 {0x7A, 0x1b, 0x1b, 0, 0},
9764 {0x7B, 0x55, 0x55, 0, 0},
9765 {0x7C, 0x5b, 0x5b, 0, 0},
9766 {0x7D, 0x30, 0x30, 1, 1},
9767 {0x7E, 0, 0, 0, 0},
9768 {0x7F, 0, 0, 0, 0},
9769 {0x80, 0, 0, 0, 0},
9770 {0x81, 0, 0, 0, 0},
9771 {0x82, 0, 0, 0, 0},
9772 {0x83, 0, 0, 0, 0},
9773 {0x84, 0, 0, 0, 0},
9774 {0x85, 0, 0, 0, 0},
9775 {0x86, 0, 0, 0, 0},
9776 {0x87, 0, 0, 0, 0},
9777 {0x88, 0, 0, 0, 0},
9778 {0x89, 0, 0, 0, 0},
9779 {0x8A, 0, 0, 0, 0},
9780 {0x8B, 0, 0, 0, 0},
9781 {0x8C, 0, 0, 0, 0},
9782 {0x8D, 0, 0, 0, 0},
9783 {0x8E, 0, 0, 0, 0},
9784 {0x8F, 0, 0, 0, 0},
9785 {0x90, 0, 0, 0, 0},
9786 {0x91, 0, 0, 0, 0},
9787 {0x92, 0, 0, 0, 0},
9788 {0x93, 0x70, 0x70, 0, 0},
9789 {0x94, 0x70, 0x70, 0, 0},
9790 {0x95, 0x70, 0x70, 0, 0},
9791 {0x96, 0x70, 0x70, 0, 0},
9792 {0x97, 0x70, 0x70, 0, 0},
9793 {0x98, 0x70, 0x70, 0, 0},
9794 {0x99, 0x70, 0x70, 0, 0},
9795 {0x9A, 0x70, 0x70, 0, 0},
9796 {0xFFFF, 0, 0, 0, 0}
9797};
9798
9799static struct radio_regs regs_RX_2056_rev6[] = {
9800 {0x02, 0, 0, 0, 0},
9801 {0x03, 0, 0, 0, 0},
9802 {0x04, 0, 0, 0, 0},
9803 {0x05, 0, 0, 0, 0},
9804 {0x06, 0, 0, 0, 0},
9805 {0x07, 0, 0, 0, 0},
9806 {0x08, 0, 0, 0, 0},
9807 {0x09, 0, 0, 0, 0},
9808 {0x0A, 0, 0, 0, 0},
9809 {0x0B, 0, 0, 0, 0},
9810 {0x0C, 0, 0, 0, 0},
9811 {0x0D, 0, 0, 0, 0},
9812 {0x0E, 0, 0, 0, 0},
9813 {0x0F, 0, 0, 0, 0},
9814 {0x10, 0, 0, 0, 0},
9815 {0x11, 0, 0, 0, 0},
9816 {0x12, 0, 0, 0, 0},
9817 {0x13, 0, 0, 0, 0},
9818 {0x14, 0, 0, 0, 0},
9819 {0x15, 0, 0, 0, 0},
9820 {0x16, 0, 0, 0, 0},
9821 {0x17, 0, 0, 0, 0},
9822 {0x18, 0, 0, 0, 0},
9823 {0x19, 0, 0, 0, 0},
9824 {0x1A, 0, 0, 0, 0},
9825 {0x1B, 0, 0, 0, 0},
9826 {0x1C, 0, 0, 0, 0},
9827 {0x1D, 0, 0, 0, 0},
9828 {0x1E, 0, 0, 0, 0},
9829 {0x1F, 0, 0, 0, 0},
9830 {0x20, 0x3, 0x3, 0, 0},
9831 {0x21, 0, 0, 0, 0},
9832 {0x22, 0, 0, 0, 0},
9833 {0x23, 0x90, 0x90, 0, 0},
9834 {0x24, 0x55, 0x55, 0, 0},
9835 {0x25, 0x15, 0x15, 0, 0},
9836 {0x26, 0x5, 0x5, 0, 0},
9837 {0x27, 0x15, 0x15, 0, 0},
9838 {0x28, 0x5, 0x5, 0, 0},
9839 {0x29, 0x20, 0x20, 0, 0},
9840 {0x2A, 0x11, 0x11, 0, 0},
9841 {0x2B, 0x90, 0x90, 0, 0},
9842 {0x2C, 0, 0, 0, 0},
9843 {0x2D, 0x88, 0x88, 0, 0},
9844 {0x2E, 0x32, 0x32, 0, 0},
9845 {0x2F, 0x77, 0x77, 0, 0},
9846 {0x30, 0x17, 0x17, 1, 1},
9847 {0x31, 0xff, 0xff, 1, 1},
9848 {0x32, 0x20, 0x20, 0, 0},
9849 {0x33, 0, 0, 0, 0},
9850 {0x34, 0x88, 0x88, 0, 0},
9851 {0x35, 0x32, 0x32, 0, 0},
9852 {0x36, 0x77, 0x77, 0, 0},
9853 {0x37, 0x17, 0x17, 1, 1},
9854 {0x38, 0xf0, 0xf0, 1, 1},
9855 {0x39, 0x20, 0x20, 0, 0},
9856 {0x3A, 0x8, 0x8, 0, 0},
9857 {0x3B, 0x55, 0x55, 1, 1},
9858 {0x3C, 0, 0, 0, 0},
9859 {0x3D, 0x88, 0x88, 1, 1},
9860 {0x3E, 0, 0, 0, 0},
9861 {0x3F, 0x44, 0x44, 0, 0},
9862 {0x40, 0x7, 0x7, 1, 1},
9863 {0x41, 0x6, 0x6, 0, 0},
9864 {0x42, 0x4, 0x4, 0, 0},
9865 {0x43, 0, 0, 0, 0},
9866 {0x44, 0x8, 0x8, 0, 0},
9867 {0x45, 0x55, 0x55, 1, 1},
9868 {0x46, 0, 0, 0, 0},
9869 {0x47, 0x11, 0x11, 0, 0},
9870 {0x48, 0, 0, 0, 0},
9871 {0x49, 0x44, 0x44, 0, 0},
9872 {0x4A, 0x7, 0x7, 0, 0},
9873 {0x4B, 0x6, 0x6, 0, 0},
9874 {0x4C, 0x4, 0x4, 0, 0},
9875 {0x4D, 0, 0, 0, 0},
9876 {0x4E, 0, 0, 0, 0},
9877 {0x4F, 0x26, 0x26, 1, 1},
9878 {0x50, 0x26, 0x26, 1, 1},
9879 {0x51, 0xf, 0xf, 1, 1},
9880 {0x52, 0xf, 0xf, 1, 1},
9881 {0x53, 0x44, 0x44, 0, 0},
9882 {0x54, 0, 0, 0, 0},
9883 {0x55, 0, 0, 0, 0},
9884 {0x56, 0x8, 0x8, 0, 0},
9885 {0x57, 0x8, 0x8, 0, 0},
9886 {0x58, 0x7, 0x7, 0, 0},
9887 {0x59, 0x22, 0x22, 0, 0},
9888 {0x5A, 0x22, 0x22, 0, 0},
9889 {0x5B, 0x2, 0x2, 0, 0},
9890 {0x5C, 0x4, 0x4, 1, 1},
9891 {0x5D, 0x7, 0x7, 0, 0},
9892 {0x5E, 0x55, 0x55, 0, 0},
9893 {0x5F, 0x23, 0x23, 0, 0},
9894 {0x60, 0x41, 0x41, 0, 0},
9895 {0x61, 0x1, 0x1, 0, 0},
9896 {0x62, 0xa, 0xa, 0, 0},
9897 {0x63, 0, 0, 0, 0},
9898 {0x64, 0, 0, 0, 0},
9899 {0x65, 0, 0, 0, 0},
9900 {0x66, 0, 0, 0, 0},
9901 {0x67, 0, 0, 0, 0},
9902 {0x68, 0, 0, 0, 0},
9903 {0x69, 0, 0, 0, 0},
9904 {0x6A, 0, 0, 0, 0},
9905 {0x6B, 0xc, 0xc, 0, 0},
9906 {0x6C, 0, 0, 0, 0},
9907 {0x6D, 0, 0, 0, 0},
9908 {0x6E, 0, 0, 0, 0},
9909 {0x6F, 0, 0, 0, 0},
9910 {0x70, 0, 0, 0, 0},
9911 {0x71, 0, 0, 0, 0},
9912 {0x72, 0x22, 0x22, 0, 0},
9913 {0x73, 0x22, 0x22, 0, 0},
9914 {0x74, 0, 0, 1, 1},
9915 {0x75, 0xa, 0xa, 0, 0},
9916 {0x76, 0x1, 0x1, 0, 0},
9917 {0x77, 0x22, 0x22, 0, 0},
9918 {0x78, 0x30, 0x30, 0, 0},
9919 {0x79, 0, 0, 0, 0},
9920 {0x7A, 0, 0, 0, 0},
9921 {0x7B, 0, 0, 0, 0},
9922 {0x7C, 0, 0, 0, 0},
9923 {0x7D, 0x5, 0x5, 1, 1},
9924 {0x7E, 0, 0, 0, 0},
9925 {0x7F, 0, 0, 0, 0},
9926 {0x80, 0, 0, 0, 0},
9927 {0x81, 0, 0, 0, 0},
9928 {0x82, 0, 0, 0, 0},
9929 {0x83, 0, 0, 0, 0},
9930 {0x84, 0, 0, 0, 0},
9931 {0x85, 0, 0, 0, 0},
9932 {0x86, 0, 0, 0, 0},
9933 {0x87, 0, 0, 0, 0},
9934 {0x88, 0, 0, 0, 0},
9935 {0x89, 0, 0, 0, 0},
9936 {0x8A, 0, 0, 0, 0},
9937 {0x8B, 0, 0, 0, 0},
9938 {0x8C, 0, 0, 0, 0},
9939 {0x8D, 0, 0, 0, 0},
9940 {0x8E, 0, 0, 0, 0},
9941 {0x8F, 0, 0, 0, 0},
9942 {0x90, 0, 0, 0, 0},
9943 {0x91, 0, 0, 0, 0},
9944 {0x92, 0, 0, 0, 0},
9945 {0x93, 0, 0, 0, 0},
9946 {0x94, 0, 0, 0, 0},
9947 {0xFFFF, 0, 0, 0, 0}
9948};
9949
9950static struct radio_regs regs_SYN_2056_rev7[] = {
9951 {0x02, 0, 0, 0, 0},
9952 {0x03, 0, 0, 0, 0},
9953 {0x04, 0, 0, 0, 0},
9954 {0x05, 0, 0, 0, 0},
9955 {0x06, 0, 0, 0, 0},
9956 {0x07, 0, 0, 0, 0},
9957 {0x08, 0, 0, 0, 0},
9958 {0x09, 0x1, 0x1, 0, 0},
9959 {0x0A, 0, 0, 0, 0},
9960 {0x0B, 0, 0, 0, 0},
9961 {0x0C, 0, 0, 0, 0},
9962 {0x0D, 0, 0, 0, 0},
9963 {0x0E, 0, 0, 0, 0},
9964 {0x0F, 0, 0, 0, 0},
9965 {0x10, 0, 0, 0, 0},
9966 {0x11, 0, 0, 0, 0},
9967 {0x12, 0, 0, 0, 0},
9968 {0x13, 0, 0, 0, 0},
9969 {0x14, 0, 0, 0, 0},
9970 {0x15, 0, 0, 0, 0},
9971 {0x16, 0, 0, 0, 0},
9972 {0x17, 0, 0, 0, 0},
9973 {0x18, 0, 0, 0, 0},
9974 {0x19, 0, 0, 0, 0},
9975 {0x1A, 0, 0, 0, 0},
9976 {0x1B, 0, 0, 0, 0},
9977 {0x1C, 0, 0, 0, 0},
9978 {0x1D, 0, 0, 0, 0},
9979 {0x1E, 0, 0, 0, 0},
9980 {0x1F, 0, 0, 0, 0},
9981 {0x20, 0, 0, 0, 0},
9982 {0x21, 0, 0, 0, 0},
9983 {0x22, 0x60, 0x60, 0, 0},
9984 {0x23, 0x6, 0x6, 0, 0},
9985 {0x24, 0xc, 0xc, 0, 0},
9986 {0x25, 0, 0, 0, 0},
9987 {0x26, 0, 0, 0, 0},
9988 {0x27, 0, 0, 0, 0},
9989 {0x28, 0x1, 0x1, 0, 0},
9990 {0x29, 0, 0, 0, 0},
9991 {0x2A, 0, 0, 0, 0},
9992 {0x2B, 0, 0, 0, 0},
9993 {0x2C, 0, 0, 0, 0},
9994 {0x2D, 0, 0, 0, 0},
9995 {0x2E, 0, 0, 0, 0},
9996 {0x2F, 0x1f, 0x1f, 0, 0},
9997 {0x30, 0x15, 0x15, 0, 0},
9998 {0x31, 0xf, 0xf, 0, 0},
9999 {0x32, 0, 0, 0, 0},
10000 {0x33, 0, 0, 0, 0},
10001 {0x34, 0, 0, 0, 0},
10002 {0x35, 0, 0, 0, 0},
10003 {0x36, 0, 0, 0, 0},
10004 {0x37, 0, 0, 0, 0},
10005 {0x38, 0, 0, 0, 0},
10006 {0x39, 0, 0, 0, 0},
10007 {0x3A, 0, 0, 0, 0},
10008 {0x3B, 0, 0, 0, 0},
10009 {0x3C, 0x13, 0x13, 0, 0},
10010 {0x3D, 0xf, 0xf, 0, 0},
10011 {0x3E, 0x18, 0x18, 0, 0},
10012 {0x3F, 0, 0, 0, 0},
10013 {0x40, 0, 0, 0, 0},
10014 {0x41, 0x20, 0x20, 0, 0},
10015 {0x42, 0x20, 0x20, 0, 0},
10016 {0x43, 0, 0, 0, 0},
10017 {0x44, 0x77, 0x77, 0, 0},
10018 {0x45, 0x7, 0x7, 0, 0},
10019 {0x46, 0x1, 0x1, 0, 0},
10020 {0x47, 0x4, 0x4, 0, 0},
10021 {0x48, 0xf, 0xf, 0, 0},
10022 {0x49, 0x30, 0x30, 0, 0},
10023 {0x4A, 0x32, 0x32, 0, 0},
10024 {0x4B, 0xd, 0xd, 0, 0},
10025 {0x4C, 0xd, 0xd, 0, 0},
10026 {0x4D, 0x4, 0x4, 0, 0},
10027 {0x4E, 0x6, 0x6, 0, 0},
10028 {0x4F, 0x1, 0x1, 0, 0},
10029 {0x50, 0x1c, 0x1c, 0, 0},
10030 {0x51, 0x2, 0x2, 0, 0},
10031 {0x52, 0x2, 0x2, 0, 0},
10032 {0x53, 0xf7, 0xf7, 1, 1},
10033 {0x54, 0xb4, 0xb4, 0, 0},
10034 {0x55, 0xd2, 0xd2, 0, 0},
10035 {0x56, 0, 0, 0, 0},
10036 {0x57, 0, 0, 0, 0},
10037 {0x58, 0x4, 0x4, 0, 0},
10038 {0x59, 0x96, 0x96, 0, 0},
10039 {0x5A, 0x3e, 0x3e, 0, 0},
10040 {0x5B, 0x3e, 0x3e, 0, 0},
10041 {0x5C, 0x13, 0x13, 0, 0},
10042 {0x5D, 0x2, 0x2, 0, 0},
10043 {0x5E, 0, 0, 0, 0},
10044 {0x5F, 0x7, 0x7, 0, 0},
10045 {0x60, 0x7, 0x7, 1, 1},
10046 {0x61, 0x8, 0x8, 0, 0},
10047 {0x62, 0x3, 0x3, 0, 0},
10048 {0x63, 0, 0, 0, 0},
10049 {0x64, 0, 0, 0, 0},
10050 {0x65, 0, 0, 0, 0},
10051 {0x66, 0, 0, 0, 0},
10052 {0x67, 0, 0, 0, 0},
10053 {0x68, 0x40, 0x40, 0, 0},
10054 {0x69, 0, 0, 0, 0},
10055 {0x6A, 0, 0, 0, 0},
10056 {0x6B, 0, 0, 0, 0},
10057 {0x6C, 0, 0, 0, 0},
10058 {0x6D, 0x1, 0x1, 0, 0},
10059 {0x6E, 0, 0, 0, 0},
10060 {0x6F, 0, 0, 0, 0},
10061 {0x70, 0x60, 0x60, 0, 0},
10062 {0x71, 0x66, 0x66, 0, 0},
10063 {0x72, 0xc, 0xc, 0, 0},
10064 {0x73, 0x66, 0x66, 0, 0},
10065 {0x74, 0x8f, 0x8f, 1, 1},
10066 {0x75, 0, 0, 0, 0},
10067 {0x76, 0xcc, 0xcc, 0, 0},
10068 {0x77, 0x1, 0x1, 0, 0},
10069 {0x78, 0x66, 0x66, 0, 0},
10070 {0x79, 0x66, 0x66, 0, 0},
10071 {0x7A, 0, 0, 0, 0},
10072 {0x7B, 0, 0, 0, 0},
10073 {0x7C, 0, 0, 0, 0},
10074 {0x7D, 0, 0, 0, 0},
10075 {0x7E, 0, 0, 0, 0},
10076 {0x7F, 0, 0, 0, 0},
10077 {0x80, 0, 0, 0, 0},
10078 {0x81, 0, 0, 0, 0},
10079 {0x82, 0, 0, 0, 0},
10080 {0x83, 0, 0, 0, 0},
10081 {0x84, 0, 0, 0, 0},
10082 {0x85, 0xff, 0xff, 0, 0},
10083 {0x86, 0, 0, 0, 0},
10084 {0x87, 0, 0, 0, 0},
10085 {0x88, 0, 0, 0, 0},
10086 {0x89, 0, 0, 0, 0},
10087 {0x8A, 0, 0, 0, 0},
10088 {0x8B, 0, 0, 0, 0},
10089 {0x8C, 0, 0, 0, 0},
10090 {0x8D, 0, 0, 0, 0},
10091 {0x8E, 0, 0, 0, 0},
10092 {0x8F, 0, 0, 0, 0},
10093 {0x90, 0, 0, 0, 0},
10094 {0x91, 0, 0, 0, 0},
10095 {0x92, 0, 0, 0, 0},
10096 {0x93, 0, 0, 0, 0},
10097 {0x94, 0, 0, 0, 0},
10098 {0x95, 0, 0, 0, 0},
10099 {0x96, 0, 0, 0, 0},
10100 {0x97, 0, 0, 0, 0},
10101 {0x98, 0, 0, 0, 0},
10102 {0x99, 0, 0, 0, 0},
10103 {0x9A, 0, 0, 0, 0},
10104 {0x9B, 0, 0, 0, 0},
10105 {0x9C, 0, 0, 0, 0},
10106 {0x9D, 0, 0, 0, 0},
10107 {0x9E, 0, 0, 0, 0},
10108 {0x9F, 0x6, 0x6, 0, 0},
10109 {0xA0, 0x66, 0x66, 0, 0},
10110 {0xA1, 0x66, 0x66, 0, 0},
10111 {0xA2, 0x66, 0x66, 0, 0},
10112 {0xA3, 0x66, 0x66, 0, 0},
10113 {0xA4, 0x66, 0x66, 0, 0},
10114 {0xA5, 0x66, 0x66, 0, 0},
10115 {0xA6, 0x66, 0x66, 0, 0},
10116 {0xA7, 0x66, 0x66, 0, 0},
10117 {0xA8, 0x66, 0x66, 0, 0},
10118 {0xA9, 0x66, 0x66, 0, 0},
10119 {0xAA, 0x66, 0x66, 0, 0},
10120 {0xAB, 0x66, 0x66, 0, 0},
10121 {0xAC, 0x66, 0x66, 0, 0},
10122 {0xAD, 0x66, 0x66, 0, 0},
10123 {0xAE, 0x66, 0x66, 0, 0},
10124 {0xAF, 0x66, 0x66, 0, 0},
10125 {0xB0, 0x66, 0x66, 0, 0},
10126 {0xB1, 0x66, 0x66, 0, 0},
10127 {0xB2, 0x66, 0x66, 0, 0},
10128 {0xB3, 0xa, 0xa, 0, 0},
10129 {0xB4, 0, 0, 0, 0},
10130 {0xB5, 0, 0, 0, 0},
10131 {0xB6, 0, 0, 0, 0},
10132 {0xFFFF, 0, 0, 0, 0},
10133};
10134
10135static struct radio_regs regs_TX_2056_rev7[] = {
10136 {0x02, 0, 0, 0, 0},
10137 {0x03, 0, 0, 0, 0},
10138 {0x04, 0, 0, 0, 0},
10139 {0x05, 0, 0, 0, 0},
10140 {0x06, 0, 0, 0, 0},
10141 {0x07, 0, 0, 0, 0},
10142 {0x08, 0, 0, 0, 0},
10143 {0x09, 0, 0, 0, 0},
10144 {0x0A, 0, 0, 0, 0},
10145 {0x0B, 0, 0, 0, 0},
10146 {0x0C, 0, 0, 0, 0},
10147 {0x0D, 0, 0, 0, 0},
10148 {0x0E, 0, 0, 0, 0},
10149 {0x0F, 0, 0, 0, 0},
10150 {0x10, 0, 0, 0, 0},
10151 {0x11, 0, 0, 0, 0},
10152 {0x12, 0, 0, 0, 0},
10153 {0x13, 0, 0, 0, 0},
10154 {0x14, 0, 0, 0, 0},
10155 {0x15, 0, 0, 0, 0},
10156 {0x16, 0, 0, 0, 0},
10157 {0x17, 0, 0, 0, 0},
10158 {0x18, 0, 0, 0, 0},
10159 {0x19, 0, 0, 0, 0},
10160 {0x1A, 0, 0, 0, 0},
10161 {0x1B, 0, 0, 0, 0},
10162 {0x1C, 0, 0, 0, 0},
10163 {0x1D, 0, 0, 0, 0},
10164 {0x1E, 0, 0, 0, 0},
10165 {0x1F, 0, 0, 0, 0},
10166 {0x20, 0, 0, 0, 0},
10167 {0x21, 0x88, 0x88, 0, 0},
10168 {0x22, 0x88, 0x88, 0, 0},
10169 {0x23, 0x88, 0x88, 0, 0},
10170 {0x24, 0x88, 0x88, 0, 0},
10171 {0x25, 0xc, 0xc, 0, 0},
10172 {0x26, 0, 0, 0, 0},
10173 {0x27, 0x3, 0x3, 0, 0},
10174 {0x28, 0, 0, 0, 0},
10175 {0x29, 0x3, 0x3, 0, 0},
10176 {0x2A, 0x37, 0x37, 0, 0},
10177 {0x2B, 0x3, 0x3, 0, 0},
10178 {0x2C, 0, 0, 0, 0},
10179 {0x2D, 0, 0, 0, 0},
10180 {0x2E, 0x1, 0x1, 0, 0},
10181 {0x2F, 0x1, 0x1, 0, 0},
10182 {0x30, 0, 0, 0, 0},
10183 {0x31, 0, 0, 0, 0},
10184 {0x32, 0, 0, 0, 0},
10185 {0x33, 0x11, 0x11, 0, 0},
10186 {0x34, 0xee, 0xee, 1, 1},
10187 {0x35, 0, 0, 0, 0},
10188 {0x36, 0, 0, 0, 0},
10189 {0x37, 0x3, 0x3, 0, 0},
10190 {0x38, 0x50, 0x50, 1, 1},
10191 {0x39, 0, 0, 0, 0},
10192 {0x3A, 0x50, 0x50, 1, 1},
10193 {0x3B, 0, 0, 0, 0},
10194 {0x3C, 0x6e, 0x6e, 0, 0},
10195 {0x3D, 0xf0, 0xf0, 1, 1},
10196 {0x3E, 0, 0, 0, 0},
10197 {0x3F, 0, 0, 0, 0},
10198 {0x40, 0, 0, 0, 0},
10199 {0x41, 0x3, 0x3, 0, 0},
10200 {0x42, 0x3, 0x3, 0, 0},
10201 {0x43, 0, 0, 0, 0},
10202 {0x44, 0x1e, 0x1e, 0, 0},
10203 {0x45, 0, 0, 0, 0},
10204 {0x46, 0x6e, 0x6e, 0, 0},
10205 {0x47, 0xf0, 0xf0, 1, 1},
10206 {0x48, 0, 0, 0, 0},
10207 {0x49, 0x2, 0x2, 0, 0},
10208 {0x4A, 0xff, 0xff, 1, 1},
10209 {0x4B, 0xc, 0xc, 0, 0},
10210 {0x4C, 0, 0, 0, 0},
10211 {0x4D, 0x38, 0x38, 0, 0},
10212 {0x4E, 0x70, 0x70, 1, 1},
10213 {0x4F, 0x2, 0x2, 0, 0},
10214 {0x50, 0x88, 0x88, 0, 0},
10215 {0x51, 0xc, 0xc, 0, 0},
10216 {0x52, 0, 0, 0, 0},
10217 {0x53, 0x8, 0x8, 0, 0},
10218 {0x54, 0x70, 0x70, 1, 1},
10219 {0x55, 0x2, 0x2, 0, 0},
10220 {0x56, 0xff, 0xff, 1, 1},
10221 {0x57, 0, 0, 0, 0},
10222 {0x58, 0x83, 0x83, 0, 0},
10223 {0x59, 0x77, 0x77, 1, 1},
10224 {0x5A, 0, 0, 0, 0},
10225 {0x5B, 0x2, 0x2, 0, 0},
10226 {0x5C, 0x88, 0x88, 0, 0},
10227 {0x5D, 0, 0, 0, 0},
10228 {0x5E, 0x8, 0x8, 0, 0},
10229 {0x5F, 0x77, 0x77, 1, 1},
10230 {0x60, 0x1, 0x1, 0, 0},
10231 {0x61, 0, 0, 0, 0},
10232 {0x62, 0x7, 0x7, 0, 0},
10233 {0x63, 0, 0, 0, 0},
10234 {0x64, 0x7, 0x7, 0, 0},
10235 {0x65, 0, 0, 0, 0},
10236 {0x66, 0, 0, 0, 0},
10237 {0x67, 0, 0, 1, 1},
10238 {0x68, 0, 0, 0, 0},
10239 {0x69, 0xa, 0xa, 0, 0},
10240 {0x6A, 0, 0, 0, 0},
10241 {0x6B, 0, 0, 0, 0},
10242 {0x6C, 0, 0, 0, 0},
10243 {0x6D, 0, 0, 0, 0},
10244 {0x6E, 0, 0, 0, 0},
10245 {0x6F, 0, 0, 0, 0},
10246 {0x70, 0, 0, 0, 0},
10247 {0x71, 0x2, 0x2, 0, 0},
10248 {0x72, 0, 0, 0, 0},
10249 {0x73, 0, 0, 0, 0},
10250 {0x74, 0xe, 0xe, 0, 0},
10251 {0x75, 0xe, 0xe, 0, 0},
10252 {0x76, 0xe, 0xe, 0, 0},
10253 {0x77, 0x13, 0x13, 0, 0},
10254 {0x78, 0x13, 0x13, 0, 0},
10255 {0x79, 0x1b, 0x1b, 0, 0},
10256 {0x7A, 0x1b, 0x1b, 0, 0},
10257 {0x7B, 0x55, 0x55, 0, 0},
10258 {0x7C, 0x5b, 0x5b, 0, 0},
10259 {0x7D, 0x30, 0x30, 1, 1},
10260 {0x7E, 0, 0, 0, 0},
10261 {0x7F, 0, 0, 0, 0},
10262 {0x80, 0, 0, 0, 0},
10263 {0x81, 0, 0, 0, 0},
10264 {0x82, 0, 0, 0, 0},
10265 {0x83, 0, 0, 0, 0},
10266 {0x84, 0, 0, 0, 0},
10267 {0x85, 0, 0, 0, 0},
10268 {0x86, 0, 0, 0, 0},
10269 {0x87, 0, 0, 0, 0},
10270 {0x88, 0, 0, 0, 0},
10271 {0x89, 0, 0, 0, 0},
10272 {0x8A, 0, 0, 0, 0},
10273 {0x8B, 0, 0, 0, 0},
10274 {0x8C, 0, 0, 0, 0},
10275 {0x8D, 0, 0, 0, 0},
10276 {0x8E, 0, 0, 0, 0},
10277 {0x8F, 0, 0, 0, 0},
10278 {0x90, 0, 0, 0, 0},
10279 {0x91, 0, 0, 0, 0},
10280 {0x92, 0, 0, 0, 0},
10281 {0x93, 0x70, 0x70, 0, 0},
10282 {0x94, 0x70, 0x70, 0, 0},
10283 {0x95, 0x71, 0x71, 1, 1},
10284 {0x96, 0x71, 0x71, 1, 1},
10285 {0x97, 0x72, 0x72, 1, 1},
10286 {0x98, 0x73, 0x73, 1, 1},
10287 {0x99, 0x74, 0x74, 1, 1},
10288 {0x9A, 0x75, 0x75, 1, 1},
10289 {0xFFFF, 0, 0, 0, 0},
10290};
10291
10292static struct radio_regs regs_RX_2056_rev7[] = {
10293 {0x02, 0, 0, 0, 0},
10294 {0x03, 0, 0, 0, 0},
10295 {0x04, 0, 0, 0, 0},
10296 {0x05, 0, 0, 0, 0},
10297 {0x06, 0, 0, 0, 0},
10298 {0x07, 0, 0, 0, 0},
10299 {0x08, 0, 0, 0, 0},
10300 {0x09, 0, 0, 0, 0},
10301 {0x0A, 0, 0, 0, 0},
10302 {0x0B, 0, 0, 0, 0},
10303 {0x0C, 0, 0, 0, 0},
10304 {0x0D, 0, 0, 0, 0},
10305 {0x0E, 0, 0, 0, 0},
10306 {0x0F, 0, 0, 0, 0},
10307 {0x10, 0, 0, 0, 0},
10308 {0x11, 0, 0, 0, 0},
10309 {0x12, 0, 0, 0, 0},
10310 {0x13, 0, 0, 0, 0},
10311 {0x14, 0, 0, 0, 0},
10312 {0x15, 0, 0, 0, 0},
10313 {0x16, 0, 0, 0, 0},
10314 {0x17, 0, 0, 0, 0},
10315 {0x18, 0, 0, 0, 0},
10316 {0x19, 0, 0, 0, 0},
10317 {0x1A, 0, 0, 0, 0},
10318 {0x1B, 0, 0, 0, 0},
10319 {0x1C, 0, 0, 0, 0},
10320 {0x1D, 0, 0, 0, 0},
10321 {0x1E, 0, 0, 0, 0},
10322 {0x1F, 0, 0, 0, 0},
10323 {0x20, 0x3, 0x3, 0, 0},
10324 {0x21, 0, 0, 0, 0},
10325 {0x22, 0, 0, 0, 0},
10326 {0x23, 0x90, 0x90, 0, 0},
10327 {0x24, 0x55, 0x55, 0, 0},
10328 {0x25, 0x15, 0x15, 0, 0},
10329 {0x26, 0x5, 0x5, 0, 0},
10330 {0x27, 0x15, 0x15, 0, 0},
10331 {0x28, 0x5, 0x5, 0, 0},
10332 {0x29, 0x20, 0x20, 0, 0},
10333 {0x2A, 0x11, 0x11, 0, 0},
10334 {0x2B, 0x90, 0x90, 0, 0},
10335 {0x2C, 0, 0, 0, 0},
10336 {0x2D, 0x88, 0x88, 0, 0},
10337 {0x2E, 0x32, 0x32, 0, 0},
10338 {0x2F, 0x77, 0x77, 0, 0},
10339 {0x30, 0x17, 0x17, 1, 1},
10340 {0x31, 0xff, 0xff, 1, 1},
10341 {0x32, 0x20, 0x20, 0, 0},
10342 {0x33, 0, 0, 0, 0},
10343 {0x34, 0x88, 0x88, 0, 0},
10344 {0x35, 0x32, 0x32, 0, 0},
10345 {0x36, 0x77, 0x77, 0, 0},
10346 {0x37, 0x17, 0x17, 1, 1},
10347 {0x38, 0xf0, 0xf0, 1, 1},
10348 {0x39, 0x20, 0x20, 0, 0},
10349 {0x3A, 0x8, 0x8, 0, 0},
10350 {0x3B, 0x55, 0x55, 1, 1},
10351 {0x3C, 0, 0, 0, 0},
10352 {0x3D, 0x88, 0x88, 1, 1},
10353 {0x3E, 0, 0, 0, 0},
10354 {0x3F, 0, 0, 1, 1},
10355 {0x40, 0x7, 0x7, 1, 1},
10356 {0x41, 0x6, 0x6, 0, 0},
10357 {0x42, 0x4, 0x4, 0, 0},
10358 {0x43, 0, 0, 0, 0},
10359 {0x44, 0x8, 0x8, 0, 0},
10360 {0x45, 0x55, 0x55, 1, 1},
10361 {0x46, 0, 0, 0, 0},
10362 {0x47, 0x11, 0x11, 0, 0},
10363 {0x48, 0, 0, 0, 0},
10364 {0x49, 0, 0, 1, 1},
10365 {0x4A, 0x7, 0x7, 0, 0},
10366 {0x4B, 0x6, 0x6, 0, 0},
10367 {0x4C, 0x4, 0x4, 0, 0},
10368 {0x4D, 0, 0, 0, 0},
10369 {0x4E, 0, 0, 0, 0},
10370 {0x4F, 0x26, 0x26, 1, 1},
10371 {0x50, 0x26, 0x26, 1, 1},
10372 {0x51, 0xf, 0xf, 1, 1},
10373 {0x52, 0xf, 0xf, 1, 1},
10374 {0x53, 0x44, 0x44, 0, 0},
10375 {0x54, 0, 0, 0, 0},
10376 {0x55, 0, 0, 0, 0},
10377 {0x56, 0x8, 0x8, 0, 0},
10378 {0x57, 0x8, 0x8, 0, 0},
10379 {0x58, 0x7, 0x7, 0, 0},
10380 {0x59, 0x22, 0x22, 0, 0},
10381 {0x5A, 0x22, 0x22, 0, 0},
10382 {0x5B, 0x2, 0x2, 0, 0},
10383 {0x5C, 0x4, 0x4, 1, 1},
10384 {0x5D, 0x7, 0x7, 0, 0},
10385 {0x5E, 0x55, 0x55, 0, 0},
10386 {0x5F, 0x23, 0x23, 0, 0},
10387 {0x60, 0x41, 0x41, 0, 0},
10388 {0x61, 0x1, 0x1, 0, 0},
10389 {0x62, 0xa, 0xa, 0, 0},
10390 {0x63, 0, 0, 0, 0},
10391 {0x64, 0, 0, 0, 0},
10392 {0x65, 0, 0, 0, 0},
10393 {0x66, 0, 0, 0, 0},
10394 {0x67, 0, 0, 0, 0},
10395 {0x68, 0, 0, 0, 0},
10396 {0x69, 0, 0, 0, 0},
10397 {0x6A, 0, 0, 0, 0},
10398 {0x6B, 0xc, 0xc, 0, 0},
10399 {0x6C, 0, 0, 0, 0},
10400 {0x6D, 0, 0, 0, 0},
10401 {0x6E, 0, 0, 0, 0},
10402 {0x6F, 0, 0, 0, 0},
10403 {0x70, 0, 0, 0, 0},
10404 {0x71, 0, 0, 0, 0},
10405 {0x72, 0x22, 0x22, 0, 0},
10406 {0x73, 0x22, 0x22, 0, 0},
10407 {0x74, 0, 0, 1, 1},
10408 {0x75, 0xa, 0xa, 0, 0},
10409 {0x76, 0x1, 0x1, 0, 0},
10410 {0x77, 0x22, 0x22, 0, 0},
10411 {0x78, 0x30, 0x30, 0, 0},
10412 {0x79, 0, 0, 0, 0},
10413 {0x7A, 0, 0, 0, 0},
10414 {0x7B, 0, 0, 0, 0},
10415 {0x7C, 0, 0, 0, 0},
10416 {0x7D, 0, 0, 0, 0},
10417 {0x7E, 0, 0, 0, 0},
10418 {0x7F, 0, 0, 0, 0},
10419 {0x80, 0, 0, 0, 0},
10420 {0x81, 0, 0, 0, 0},
10421 {0x82, 0, 0, 0, 0},
10422 {0x83, 0, 0, 0, 0},
10423 {0x84, 0, 0, 0, 0},
10424 {0x85, 0, 0, 0, 0},
10425 {0x86, 0, 0, 0, 0},
10426 {0x87, 0, 0, 0, 0},
10427 {0x88, 0, 0, 0, 0},
10428 {0x89, 0, 0, 0, 0},
10429 {0x8A, 0, 0, 0, 0},
10430 {0x8B, 0, 0, 0, 0},
10431 {0x8C, 0, 0, 0, 0},
10432 {0x8D, 0, 0, 0, 0},
10433 {0x8E, 0, 0, 0, 0},
10434 {0x8F, 0, 0, 0, 0},
10435 {0x90, 0, 0, 0, 0},
10436 {0x91, 0, 0, 0, 0},
10437 {0x92, 0, 0, 0, 0},
10438 {0x93, 0, 0, 0, 0},
10439 {0x94, 0, 0, 0, 0},
10440 {0xFFFF, 0, 0, 0, 0},
10441};
10442
10443static struct radio_regs regs_SYN_2056_rev8[] = {
10444 {0x02, 0, 0, 0, 0},
10445 {0x03, 0, 0, 0, 0},
10446 {0x04, 0, 0, 0, 0},
10447 {0x05, 0, 0, 0, 0},
10448 {0x06, 0, 0, 0, 0},
10449 {0x07, 0, 0, 0, 0},
10450 {0x08, 0, 0, 0, 0},
10451 {0x09, 0x1, 0x1, 0, 0},
10452 {0x0A, 0, 0, 0, 0},
10453 {0x0B, 0, 0, 0, 0},
10454 {0x0C, 0, 0, 0, 0},
10455 {0x0D, 0, 0, 0, 0},
10456 {0x0E, 0, 0, 0, 0},
10457 {0x0F, 0, 0, 0, 0},
10458 {0x10, 0, 0, 0, 0},
10459 {0x11, 0, 0, 0, 0},
10460 {0x12, 0, 0, 0, 0},
10461 {0x13, 0, 0, 0, 0},
10462 {0x14, 0, 0, 0, 0},
10463 {0x15, 0, 0, 0, 0},
10464 {0x16, 0, 0, 0, 0},
10465 {0x17, 0, 0, 0, 0},
10466 {0x18, 0, 0, 0, 0},
10467 {0x19, 0, 0, 0, 0},
10468 {0x1A, 0, 0, 0, 0},
10469 {0x1B, 0, 0, 0, 0},
10470 {0x1C, 0, 0, 0, 0},
10471 {0x1D, 0, 0, 0, 0},
10472 {0x1E, 0, 0, 0, 0},
10473 {0x1F, 0, 0, 0, 0},
10474 {0x20, 0, 0, 0, 0},
10475 {0x21, 0, 0, 0, 0},
10476 {0x22, 0x60, 0x60, 0, 0},
10477 {0x23, 0x6, 0x6, 0, 0},
10478 {0x24, 0xc, 0xc, 0, 0},
10479 {0x25, 0, 0, 0, 0},
10480 {0x26, 0, 0, 0, 0},
10481 {0x27, 0, 0, 0, 0},
10482 {0x28, 0x1, 0x1, 0, 0},
10483 {0x29, 0, 0, 0, 0},
10484 {0x2A, 0, 0, 0, 0},
10485 {0x2B, 0, 0, 0, 0},
10486 {0x2C, 0, 0, 0, 0},
10487 {0x2D, 0, 0, 0, 0},
10488 {0x2E, 0, 0, 0, 0},
10489 {0x2F, 0x1f, 0x1f, 0, 0},
10490 {0x30, 0x15, 0x15, 0, 0},
10491 {0x31, 0xf, 0xf, 0, 0},
10492 {0x32, 0, 0, 0, 0},
10493 {0x33, 0, 0, 0, 0},
10494 {0x34, 0, 0, 0, 0},
10495 {0x35, 0, 0, 0, 0},
10496 {0x36, 0, 0, 0, 0},
10497 {0x37, 0, 0, 0, 0},
10498 {0x38, 0, 0, 0, 0},
10499 {0x39, 0, 0, 0, 0},
10500 {0x3A, 0, 0, 0, 0},
10501 {0x3B, 0, 0, 0, 0},
10502 {0x3C, 0x13, 0x13, 0, 0},
10503 {0x3D, 0xf, 0xf, 0, 0},
10504 {0x3E, 0x18, 0x18, 0, 0},
10505 {0x3F, 0, 0, 0, 0},
10506 {0x40, 0, 0, 0, 0},
10507 {0x41, 0x20, 0x20, 0, 0},
10508 {0x42, 0x20, 0x20, 0, 0},
10509 {0x43, 0, 0, 0, 0},
10510 {0x44, 0x77, 0x77, 0, 0},
10511 {0x45, 0x7, 0x7, 0, 0},
10512 {0x46, 0x1, 0x1, 0, 0},
10513 {0x47, 0x4, 0x4, 0, 0},
10514 {0x48, 0xf, 0xf, 0, 0},
10515 {0x49, 0x30, 0x30, 0, 0},
10516 {0x4A, 0x32, 0x32, 0, 0},
10517 {0x4B, 0xd, 0xd, 0, 0},
10518 {0x4C, 0xd, 0xd, 0, 0},
10519 {0x4D, 0x4, 0x4, 0, 0},
10520 {0x4E, 0x6, 0x6, 0, 0},
10521 {0x4F, 0x1, 0x1, 0, 0},
10522 {0x50, 0x1c, 0x1c, 0, 0},
10523 {0x51, 0x2, 0x2, 0, 0},
10524 {0x52, 0x2, 0x2, 0, 0},
10525 {0x53, 0xf7, 0xf7, 1, 1},
10526 {0x54, 0xb4, 0xb4, 0, 0},
10527 {0x55, 0xd2, 0xd2, 0, 0},
10528 {0x56, 0, 0, 0, 0},
10529 {0x57, 0, 0, 0, 0},
10530 {0x58, 0x4, 0x4, 0, 0},
10531 {0x59, 0x96, 0x96, 0, 0},
10532 {0x5A, 0x3e, 0x3e, 0, 0},
10533 {0x5B, 0x3e, 0x3e, 0, 0},
10534 {0x5C, 0x13, 0x13, 0, 0},
10535 {0x5D, 0x2, 0x2, 0, 0},
10536 {0x5E, 0, 0, 0, 0},
10537 {0x5F, 0x7, 0x7, 0, 0},
10538 {0x60, 0x7, 0x7, 1, 1},
10539 {0x61, 0x8, 0x8, 0, 0},
10540 {0x62, 0x3, 0x3, 0, 0},
10541 {0x63, 0, 0, 0, 0},
10542 {0x64, 0, 0, 0, 0},
10543 {0x65, 0, 0, 0, 0},
10544 {0x66, 0, 0, 0, 0},
10545 {0x67, 0, 0, 0, 0},
10546 {0x68, 0x40, 0x40, 0, 0},
10547 {0x69, 0, 0, 0, 0},
10548 {0x6A, 0, 0, 0, 0},
10549 {0x6B, 0, 0, 0, 0},
10550 {0x6C, 0, 0, 0, 0},
10551 {0x6D, 0x1, 0x1, 0, 0},
10552 {0x6E, 0, 0, 0, 0},
10553 {0x6F, 0, 0, 0, 0},
10554 {0x70, 0x60, 0x60, 0, 0},
10555 {0x71, 0x66, 0x66, 0, 0},
10556 {0x72, 0xc, 0xc, 0, 0},
10557 {0x73, 0x66, 0x66, 0, 0},
10558 {0x74, 0x8f, 0x8f, 1, 1},
10559 {0x75, 0, 0, 0, 0},
10560 {0x76, 0xcc, 0xcc, 0, 0},
10561 {0x77, 0x1, 0x1, 0, 0},
10562 {0x78, 0x66, 0x66, 0, 0},
10563 {0x79, 0x66, 0x66, 0, 0},
10564 {0x7A, 0, 0, 0, 0},
10565 {0x7B, 0, 0, 0, 0},
10566 {0x7C, 0, 0, 0, 0},
10567 {0x7D, 0, 0, 0, 0},
10568 {0x7E, 0, 0, 0, 0},
10569 {0x7F, 0, 0, 0, 0},
10570 {0x80, 0, 0, 0, 0},
10571 {0x81, 0, 0, 0, 0},
10572 {0x82, 0, 0, 0, 0},
10573 {0x83, 0, 0, 0, 0},
10574 {0x84, 0, 0, 0, 0},
10575 {0x85, 0xff, 0xff, 0, 0},
10576 {0x86, 0, 0, 0, 0},
10577 {0x87, 0, 0, 0, 0},
10578 {0x88, 0, 0, 0, 0},
10579 {0x89, 0, 0, 0, 0},
10580 {0x8A, 0, 0, 0, 0},
10581 {0x8B, 0, 0, 0, 0},
10582 {0x8C, 0, 0, 0, 0},
10583 {0x8D, 0, 0, 0, 0},
10584 {0x8E, 0, 0, 0, 0},
10585 {0x8F, 0, 0, 0, 0},
10586 {0x90, 0, 0, 0, 0},
10587 {0x91, 0, 0, 0, 0},
10588 {0x92, 0, 0, 0, 0},
10589 {0x93, 0, 0, 0, 0},
10590 {0x94, 0, 0, 0, 0},
10591 {0x95, 0, 0, 0, 0},
10592 {0x96, 0, 0, 0, 0},
10593 {0x97, 0, 0, 0, 0},
10594 {0x98, 0, 0, 0, 0},
10595 {0x99, 0, 0, 0, 0},
10596 {0x9A, 0, 0, 0, 0},
10597 {0x9B, 0, 0, 0, 0},
10598 {0x9C, 0, 0, 0, 0},
10599 {0x9D, 0, 0, 0, 0},
10600 {0x9E, 0, 0, 0, 0},
10601 {0x9F, 0x6, 0x6, 0, 0},
10602 {0xA0, 0x66, 0x66, 0, 0},
10603 {0xA1, 0x66, 0x66, 0, 0},
10604 {0xA2, 0x66, 0x66, 0, 0},
10605 {0xA3, 0x66, 0x66, 0, 0},
10606 {0xA4, 0x66, 0x66, 0, 0},
10607 {0xA5, 0x66, 0x66, 0, 0},
10608 {0xA6, 0x66, 0x66, 0, 0},
10609 {0xA7, 0x66, 0x66, 0, 0},
10610 {0xA8, 0x66, 0x66, 0, 0},
10611 {0xA9, 0x66, 0x66, 0, 0},
10612 {0xAA, 0x66, 0x66, 0, 0},
10613 {0xAB, 0x66, 0x66, 0, 0},
10614 {0xAC, 0x66, 0x66, 0, 0},
10615 {0xAD, 0x66, 0x66, 0, 0},
10616 {0xAE, 0x66, 0x66, 0, 0},
10617 {0xAF, 0x66, 0x66, 0, 0},
10618 {0xB0, 0x66, 0x66, 0, 0},
10619 {0xB1, 0x66, 0x66, 0, 0},
10620 {0xB2, 0x66, 0x66, 0, 0},
10621 {0xB3, 0xa, 0xa, 0, 0},
10622 {0xB4, 0, 0, 0, 0},
10623 {0xB5, 0, 0, 0, 0},
10624 {0xB6, 0, 0, 0, 0},
10625 {0xFFFF, 0, 0, 0, 0},
10626};
10627
10628static struct radio_regs regs_TX_2056_rev8[] = {
10629 {0x02, 0, 0, 0, 0},
10630 {0x03, 0, 0, 0, 0},
10631 {0x04, 0, 0, 0, 0},
10632 {0x05, 0, 0, 0, 0},
10633 {0x06, 0, 0, 0, 0},
10634 {0x07, 0, 0, 0, 0},
10635 {0x08, 0, 0, 0, 0},
10636 {0x09, 0, 0, 0, 0},
10637 {0x0A, 0, 0, 0, 0},
10638 {0x0B, 0, 0, 0, 0},
10639 {0x0C, 0, 0, 0, 0},
10640 {0x0D, 0, 0, 0, 0},
10641 {0x0E, 0, 0, 0, 0},
10642 {0x0F, 0, 0, 0, 0},
10643 {0x10, 0, 0, 0, 0},
10644 {0x11, 0, 0, 0, 0},
10645 {0x12, 0, 0, 0, 0},
10646 {0x13, 0, 0, 0, 0},
10647 {0x14, 0, 0, 0, 0},
10648 {0x15, 0, 0, 0, 0},
10649 {0x16, 0, 0, 0, 0},
10650 {0x17, 0, 0, 0, 0},
10651 {0x18, 0, 0, 0, 0},
10652 {0x19, 0, 0, 0, 0},
10653 {0x1A, 0, 0, 0, 0},
10654 {0x1B, 0, 0, 0, 0},
10655 {0x1C, 0, 0, 0, 0},
10656 {0x1D, 0, 0, 0, 0},
10657 {0x1E, 0, 0, 0, 0},
10658 {0x1F, 0, 0, 0, 0},
10659 {0x20, 0, 0, 0, 0},
10660 {0x21, 0x88, 0x88, 0, 0},
10661 {0x22, 0x88, 0x88, 0, 0},
10662 {0x23, 0x88, 0x88, 0, 0},
10663 {0x24, 0x88, 0x88, 0, 0},
10664 {0x25, 0xc, 0xc, 0, 0},
10665 {0x26, 0, 0, 0, 0},
10666 {0x27, 0x3, 0x3, 0, 0},
10667 {0x28, 0, 0, 0, 0},
10668 {0x29, 0x3, 0x3, 0, 0},
10669 {0x2A, 0x37, 0x37, 0, 0},
10670 {0x2B, 0x3, 0x3, 0, 0},
10671 {0x2C, 0, 0, 0, 0},
10672 {0x2D, 0, 0, 0, 0},
10673 {0x2E, 0x1, 0x1, 0, 0},
10674 {0x2F, 0x1, 0x1, 0, 0},
10675 {0x30, 0, 0, 0, 0},
10676 {0x31, 0, 0, 0, 0},
10677 {0x32, 0, 0, 0, 0},
10678 {0x33, 0x11, 0x11, 0, 0},
10679 {0x34, 0xee, 0xee, 1, 1},
10680 {0x35, 0, 0, 0, 0},
10681 {0x36, 0, 0, 0, 0},
10682 {0x37, 0x3, 0x3, 0, 0},
10683 {0x38, 0x50, 0x50, 1, 1},
10684 {0x39, 0, 0, 0, 0},
10685 {0x3A, 0x50, 0x50, 1, 1},
10686 {0x3B, 0, 0, 0, 0},
10687 {0x3C, 0x6e, 0x6e, 0, 0},
10688 {0x3D, 0xf0, 0xf0, 1, 1},
10689 {0x3E, 0, 0, 0, 0},
10690 {0x3F, 0, 0, 0, 0},
10691 {0x40, 0, 0, 0, 0},
10692 {0x41, 0x3, 0x3, 0, 0},
10693 {0x42, 0x3, 0x3, 0, 0},
10694 {0x43, 0, 0, 0, 0},
10695 {0x44, 0x1e, 0x1e, 0, 0},
10696 {0x45, 0, 0, 0, 0},
10697 {0x46, 0x6e, 0x6e, 0, 0},
10698 {0x47, 0xf0, 0xf0, 1, 1},
10699 {0x48, 0, 0, 0, 0},
10700 {0x49, 0x2, 0x2, 0, 0},
10701 {0x4A, 0xff, 0xff, 1, 1},
10702 {0x4B, 0xc, 0xc, 0, 0},
10703 {0x4C, 0, 0, 0, 0},
10704 {0x4D, 0x38, 0x38, 0, 0},
10705 {0x4E, 0x70, 0x70, 1, 1},
10706 {0x4F, 0x2, 0x2, 0, 0},
10707 {0x50, 0x88, 0x88, 0, 0},
10708 {0x51, 0xc, 0xc, 0, 0},
10709 {0x52, 0, 0, 0, 0},
10710 {0x53, 0x8, 0x8, 0, 0},
10711 {0x54, 0x70, 0x70, 1, 1},
10712 {0x55, 0x2, 0x2, 0, 0},
10713 {0x56, 0xff, 0xff, 1, 1},
10714 {0x57, 0, 0, 0, 0},
10715 {0x58, 0x83, 0x83, 0, 0},
10716 {0x59, 0x77, 0x77, 1, 1},
10717 {0x5A, 0, 0, 0, 0},
10718 {0x5B, 0x2, 0x2, 0, 0},
10719 {0x5C, 0x88, 0x88, 0, 0},
10720 {0x5D, 0, 0, 0, 0},
10721 {0x5E, 0x8, 0x8, 0, 0},
10722 {0x5F, 0x77, 0x77, 1, 1},
10723 {0x60, 0x1, 0x1, 0, 0},
10724 {0x61, 0, 0, 0, 0},
10725 {0x62, 0x7, 0x7, 0, 0},
10726 {0x63, 0, 0, 0, 0},
10727 {0x64, 0x7, 0x7, 0, 0},
10728 {0x65, 0, 0, 0, 0},
10729 {0x66, 0, 0, 0, 0},
10730 {0x67, 0, 0, 1, 1},
10731 {0x68, 0, 0, 0, 0},
10732 {0x69, 0xa, 0xa, 0, 0},
10733 {0x6A, 0, 0, 0, 0},
10734 {0x6B, 0, 0, 0, 0},
10735 {0x6C, 0, 0, 0, 0},
10736 {0x6D, 0, 0, 0, 0},
10737 {0x6E, 0, 0, 0, 0},
10738 {0x6F, 0, 0, 0, 0},
10739 {0x70, 0, 0, 0, 0},
10740 {0x71, 0x2, 0x2, 0, 0},
10741 {0x72, 0, 0, 0, 0},
10742 {0x73, 0, 0, 0, 0},
10743 {0x74, 0xe, 0xe, 0, 0},
10744 {0x75, 0xe, 0xe, 0, 0},
10745 {0x76, 0xe, 0xe, 0, 0},
10746 {0x77, 0x13, 0x13, 0, 0},
10747 {0x78, 0x13, 0x13, 0, 0},
10748 {0x79, 0x1b, 0x1b, 0, 0},
10749 {0x7A, 0x1b, 0x1b, 0, 0},
10750 {0x7B, 0x55, 0x55, 0, 0},
10751 {0x7C, 0x5b, 0x5b, 0, 0},
10752 {0x7D, 0x30, 0x30, 1, 1},
10753 {0x7E, 0, 0, 0, 0},
10754 {0x7F, 0, 0, 0, 0},
10755 {0x80, 0, 0, 0, 0},
10756 {0x81, 0, 0, 0, 0},
10757 {0x82, 0, 0, 0, 0},
10758 {0x83, 0, 0, 0, 0},
10759 {0x84, 0, 0, 0, 0},
10760 {0x85, 0, 0, 0, 0},
10761 {0x86, 0, 0, 0, 0},
10762 {0x87, 0, 0, 0, 0},
10763 {0x88, 0, 0, 0, 0},
10764 {0x89, 0, 0, 0, 0},
10765 {0x8A, 0, 0, 0, 0},
10766 {0x8B, 0, 0, 0, 0},
10767 {0x8C, 0, 0, 0, 0},
10768 {0x8D, 0, 0, 0, 0},
10769 {0x8E, 0, 0, 0, 0},
10770 {0x8F, 0, 0, 0, 0},
10771 {0x90, 0, 0, 0, 0},
10772 {0x91, 0, 0, 0, 0},
10773 {0x92, 0, 0, 0, 0},
10774 {0x93, 0x70, 0x70, 0, 0},
10775 {0x94, 0x70, 0x70, 0, 0},
10776 {0x95, 0x70, 0x70, 0, 0},
10777 {0x96, 0x70, 0x70, 0, 0},
10778 {0x97, 0x70, 0x70, 0, 0},
10779 {0x98, 0x70, 0x70, 0, 0},
10780 {0x99, 0x70, 0x70, 0, 0},
10781 {0x9A, 0x70, 0x70, 0, 0},
10782 {0xFFFF, 0, 0, 0, 0},
10783};
10784
10785static struct radio_regs regs_RX_2056_rev8[] = {
10786 {0x02, 0, 0, 0, 0},
10787 {0x03, 0, 0, 0, 0},
10788 {0x04, 0, 0, 0, 0},
10789 {0x05, 0, 0, 0, 0},
10790 {0x06, 0, 0, 0, 0},
10791 {0x07, 0, 0, 0, 0},
10792 {0x08, 0, 0, 0, 0},
10793 {0x09, 0, 0, 0, 0},
10794 {0x0A, 0, 0, 0, 0},
10795 {0x0B, 0, 0, 0, 0},
10796 {0x0C, 0, 0, 0, 0},
10797 {0x0D, 0, 0, 0, 0},
10798 {0x0E, 0, 0, 0, 0},
10799 {0x0F, 0, 0, 0, 0},
10800 {0x10, 0, 0, 0, 0},
10801 {0x11, 0, 0, 0, 0},
10802 {0x12, 0, 0, 0, 0},
10803 {0x13, 0, 0, 0, 0},
10804 {0x14, 0, 0, 0, 0},
10805 {0x15, 0, 0, 0, 0},
10806 {0x16, 0, 0, 0, 0},
10807 {0x17, 0, 0, 0, 0},
10808 {0x18, 0, 0, 0, 0},
10809 {0x19, 0, 0, 0, 0},
10810 {0x1A, 0, 0, 0, 0},
10811 {0x1B, 0, 0, 0, 0},
10812 {0x1C, 0, 0, 0, 0},
10813 {0x1D, 0, 0, 0, 0},
10814 {0x1E, 0, 0, 0, 0},
10815 {0x1F, 0, 0, 0, 0},
10816 {0x20, 0x3, 0x3, 0, 0},
10817 {0x21, 0, 0, 0, 0},
10818 {0x22, 0, 0, 0, 0},
10819 {0x23, 0x90, 0x90, 0, 0},
10820 {0x24, 0x55, 0x55, 0, 0},
10821 {0x25, 0x15, 0x15, 0, 0},
10822 {0x26, 0x5, 0x5, 0, 0},
10823 {0x27, 0x15, 0x15, 0, 0},
10824 {0x28, 0x5, 0x5, 0, 0},
10825 {0x29, 0x20, 0x20, 0, 0},
10826 {0x2A, 0x11, 0x11, 0, 0},
10827 {0x2B, 0x90, 0x90, 0, 0},
10828 {0x2C, 0, 0, 0, 0},
10829 {0x2D, 0x88, 0x88, 0, 0},
10830 {0x2E, 0x32, 0x32, 0, 0},
10831 {0x2F, 0x77, 0x77, 0, 0},
10832 {0x30, 0x17, 0x17, 1, 1},
10833 {0x31, 0xff, 0xff, 1, 1},
10834 {0x32, 0x20, 0x20, 0, 0},
10835 {0x33, 0, 0, 0, 0},
10836 {0x34, 0x88, 0x88, 0, 0},
10837 {0x35, 0x32, 0x32, 0, 0},
10838 {0x36, 0x77, 0x77, 0, 0},
10839 {0x37, 0x17, 0x17, 1, 1},
10840 {0x38, 0xf0, 0xf0, 1, 1},
10841 {0x39, 0x20, 0x20, 0, 0},
10842 {0x3A, 0x8, 0x8, 0, 0},
10843 {0x3B, 0x55, 0x55, 1, 1},
10844 {0x3C, 0, 0, 0, 0},
10845 {0x3D, 0x88, 0x88, 1, 1},
10846 {0x3E, 0, 0, 0, 0},
10847 {0x3F, 0x44, 0x44, 0, 0},
10848 {0x40, 0x7, 0x7, 1, 1},
10849 {0x41, 0x6, 0x6, 0, 0},
10850 {0x42, 0x4, 0x4, 0, 0},
10851 {0x43, 0, 0, 0, 0},
10852 {0x44, 0x8, 0x8, 0, 0},
10853 {0x45, 0x55, 0x55, 1, 1},
10854 {0x46, 0, 0, 0, 0},
10855 {0x47, 0x11, 0x11, 0, 0},
10856 {0x48, 0, 0, 0, 0},
10857 {0x49, 0x44, 0x44, 0, 0},
10858 {0x4A, 0x7, 0x7, 0, 0},
10859 {0x4B, 0x6, 0x6, 0, 0},
10860 {0x4C, 0x4, 0x4, 0, 0},
10861 {0x4D, 0, 0, 0, 0},
10862 {0x4E, 0, 0, 0, 0},
10863 {0x4F, 0x26, 0x26, 1, 1},
10864 {0x50, 0x26, 0x26, 1, 1},
10865 {0x51, 0xf, 0xf, 1, 1},
10866 {0x52, 0xf, 0xf, 1, 1},
10867 {0x53, 0x44, 0x44, 0, 0},
10868 {0x54, 0, 0, 0, 0},
10869 {0x55, 0, 0, 0, 0},
10870 {0x56, 0x8, 0x8, 0, 0},
10871 {0x57, 0x8, 0x8, 0, 0},
10872 {0x58, 0x7, 0x7, 0, 0},
10873 {0x59, 0x22, 0x22, 0, 0},
10874 {0x5A, 0x22, 0x22, 0, 0},
10875 {0x5B, 0x2, 0x2, 0, 0},
10876 {0x5C, 0x4, 0x4, 1, 1},
10877 {0x5D, 0x7, 0x7, 0, 0},
10878 {0x5E, 0x55, 0x55, 0, 0},
10879 {0x5F, 0x23, 0x23, 0, 0},
10880 {0x60, 0x41, 0x41, 0, 0},
10881 {0x61, 0x1, 0x1, 0, 0},
10882 {0x62, 0xa, 0xa, 0, 0},
10883 {0x63, 0, 0, 0, 0},
10884 {0x64, 0, 0, 0, 0},
10885 {0x65, 0, 0, 0, 0},
10886 {0x66, 0, 0, 0, 0},
10887 {0x67, 0, 0, 0, 0},
10888 {0x68, 0, 0, 0, 0},
10889 {0x69, 0, 0, 0, 0},
10890 {0x6A, 0, 0, 0, 0},
10891 {0x6B, 0xc, 0xc, 0, 0},
10892 {0x6C, 0, 0, 0, 0},
10893 {0x6D, 0, 0, 0, 0},
10894 {0x6E, 0, 0, 0, 0},
10895 {0x6F, 0, 0, 0, 0},
10896 {0x70, 0, 0, 0, 0},
10897 {0x71, 0, 0, 0, 0},
10898 {0x72, 0x22, 0x22, 0, 0},
10899 {0x73, 0x22, 0x22, 0, 0},
10900 {0x74, 0, 0, 1, 1},
10901 {0x75, 0xa, 0xa, 0, 0},
10902 {0x76, 0x1, 0x1, 0, 0},
10903 {0x77, 0x22, 0x22, 0, 0},
10904 {0x78, 0x30, 0x30, 0, 0},
10905 {0x79, 0, 0, 0, 0},
10906 {0x7A, 0, 0, 0, 0},
10907 {0x7B, 0, 0, 0, 0},
10908 {0x7C, 0, 0, 0, 0},
10909 {0x7D, 0x5, 0x5, 1, 1},
10910 {0x7E, 0, 0, 0, 0},
10911 {0x7F, 0, 0, 0, 0},
10912 {0x80, 0, 0, 0, 0},
10913 {0x81, 0, 0, 0, 0},
10914 {0x82, 0, 0, 0, 0},
10915 {0x83, 0, 0, 0, 0},
10916 {0x84, 0, 0, 0, 0},
10917 {0x85, 0, 0, 0, 0},
10918 {0x86, 0, 0, 0, 0},
10919 {0x87, 0, 0, 0, 0},
10920 {0x88, 0, 0, 0, 0},
10921 {0x89, 0, 0, 0, 0},
10922 {0x8A, 0, 0, 0, 0},
10923 {0x8B, 0, 0, 0, 0},
10924 {0x8C, 0, 0, 0, 0},
10925 {0x8D, 0, 0, 0, 0},
10926 {0x8E, 0, 0, 0, 0},
10927 {0x8F, 0, 0, 0, 0},
10928 {0x90, 0, 0, 0, 0},
10929 {0x91, 0, 0, 0, 0},
10930 {0x92, 0, 0, 0, 0},
10931 {0x93, 0, 0, 0, 0},
10932 {0x94, 0, 0, 0, 0},
10933 {0xFFFF, 0, 0, 0, 0},
10934};
10935
10936static const struct radio_regs regs_SYN_2056_rev11[] = {
10937 {0x02, 0, 0, 0, 0},
10938 {0x03, 0, 0, 0, 0},
10939 {0x04, 0, 0, 0, 0},
10940 {0x05, 0, 0, 0, 0},
10941 {0x06, 0, 0, 0, 0},
10942 {0x07, 0, 0, 0, 0},
10943 {0x08, 0, 0, 0, 0},
10944 {0x09, 0x1, 0x1, 0, 0},
10945 {0x0A, 0, 0, 0, 0},
10946 {0x0B, 0, 0, 0, 0},
10947 {0x0C, 0, 0, 0, 0},
10948 {0x0D, 0, 0, 0, 0},
10949 {0x0E, 0, 0, 0, 0},
10950 {0x0F, 0, 0, 0, 0},
10951 {0x10, 0, 0, 0, 0},
10952 {0x11, 0, 0, 0, 0},
10953 {0x12, 0, 0, 0, 0},
10954 {0x13, 0, 0, 0, 0},
10955 {0x14, 0, 0, 0, 0},
10956 {0x15, 0, 0, 0, 0},
10957 {0x16, 0, 0, 0, 0},
10958 {0x17, 0, 0, 0, 0},
10959 {0x18, 0, 0, 0, 0},
10960 {0x19, 0, 0, 0, 0},
10961 {0x1A, 0, 0, 0, 0},
10962 {0x1B, 0, 0, 0, 0},
10963 {0x1C, 0, 0, 0, 0},
10964 {0x1D, 0, 0, 0, 0},
10965 {0x1E, 0, 0, 0, 0},
10966 {0x1F, 0, 0, 0, 0},
10967 {0x20, 0, 0, 0, 0},
10968 {0x21, 0, 0, 0, 0},
10969 {0x22, 0x60, 0x60, 0, 0},
10970 {0x23, 0x6, 0x6, 0, 0},
10971 {0x24, 0xc, 0xc, 0, 0},
10972 {0x25, 0, 0, 0, 0},
10973 {0x26, 0, 0, 0, 0},
10974 {0x27, 0, 0, 0, 0},
10975 {0x28, 0x1, 0x1, 0, 0},
10976 {0x29, 0, 0, 0, 0},
10977 {0x2A, 0, 0, 0, 0},
10978 {0x2B, 0, 0, 0, 0},
10979 {0x2C, 0, 0, 0, 0},
10980 {0x2D, 0, 0, 0, 0},
10981 {0x2E, 0, 0, 0, 0},
10982 {0x2F, 0x1f, 0x1f, 0, 0},
10983 {0x30, 0x15, 0x15, 0, 0},
10984 {0x31, 0xf, 0xf, 0, 0},
10985 {0x32, 0, 0, 0, 0},
10986 {0x33, 0, 0, 0, 0},
10987 {0x34, 0, 0, 0, 0},
10988 {0x35, 0, 0, 0, 0},
10989 {0x36, 0, 0, 0, 0},
10990 {0x37, 0, 0, 0, 0},
10991 {0x38, 0, 0, 0, 0},
10992 {0x39, 0, 0, 0, 0},
10993 {0x3A, 0, 0, 0, 0},
10994 {0x3B, 0, 0, 0, 0},
10995 {0x3C, 0x13, 0x13, 0, 0},
10996 {0x3D, 0xf, 0xf, 0, 0},
10997 {0x3E, 0x18, 0x18, 0, 0},
10998 {0x3F, 0, 0, 0, 0},
10999 {0x40, 0, 0, 0, 0},
11000 {0x41, 0x20, 0x20, 0, 0},
11001 {0x42, 0x20, 0x20, 0, 0},
11002 {0x43, 0, 0, 0, 0},
11003 {0x44, 0x77, 0x77, 0, 0},
11004 {0x45, 0x7, 0x7, 0, 0},
11005 {0x46, 0x1, 0x1, 0, 0},
11006 {0x47, 0x6, 0x6, 1, 1},
11007 {0x48, 0xf, 0xf, 0, 0},
11008 {0x49, 0x3f, 0x3f, 1, 1},
11009 {0x4A, 0x32, 0x32, 0, 0},
11010 {0x4B, 0x6, 0x6, 1, 1},
11011 {0x4C, 0x6, 0x6, 1, 1},
11012 {0x4D, 0x4, 0x4, 0, 0},
11013 {0x4E, 0x2b, 0x2b, 1, 1},
11014 {0x4F, 0x1, 0x1, 0, 0},
11015 {0x50, 0x1c, 0x1c, 0, 0},
11016 {0x51, 0x2, 0x2, 0, 0},
11017 {0x52, 0x2, 0x2, 0, 0},
11018 {0x53, 0xf7, 0xf7, 1, 1},
11019 {0x54, 0xb4, 0xb4, 0, 0},
11020 {0x55, 0xd2, 0xd2, 0, 0},
11021 {0x56, 0, 0, 0, 0},
11022 {0x57, 0, 0, 0, 0},
11023 {0x58, 0x4, 0x4, 0, 0},
11024 {0x59, 0x96, 0x96, 0, 0},
11025 {0x5A, 0x3e, 0x3e, 0, 0},
11026 {0x5B, 0x3e, 0x3e, 0, 0},
11027 {0x5C, 0x13, 0x13, 0, 0},
11028 {0x5D, 0x2, 0x2, 0, 0},
11029 {0x5E, 0, 0, 0, 0},
11030 {0x5F, 0x7, 0x7, 0, 0},
11031 {0x60, 0x7, 0x7, 1, 1},
11032 {0x61, 0x8, 0x8, 0, 0},
11033 {0x62, 0x3, 0x3, 0, 0},
11034 {0x63, 0, 0, 0, 0},
11035 {0x64, 0, 0, 0, 0},
11036 {0x65, 0, 0, 0, 0},
11037 {0x66, 0, 0, 0, 0},
11038 {0x67, 0, 0, 0, 0},
11039 {0x68, 0x40, 0x40, 0, 0},
11040 {0x69, 0, 0, 0, 0},
11041 {0x6A, 0, 0, 0, 0},
11042 {0x6B, 0, 0, 0, 0},
11043 {0x6C, 0, 0, 0, 0},
11044 {0x6D, 0x1, 0x1, 0, 0},
11045 {0x6E, 0, 0, 0, 0},
11046 {0x6F, 0, 0, 0, 0},
11047 {0x70, 0x60, 0x60, 0, 0},
11048 {0x71, 0x66, 0x66, 0, 0},
11049 {0x72, 0xc, 0xc, 0, 0},
11050 {0x73, 0x66, 0x66, 0, 0},
11051 {0x74, 0x8f, 0x8f, 1, 1},
11052 {0x75, 0, 0, 0, 0},
11053 {0x76, 0xcc, 0xcc, 0, 0},
11054 {0x77, 0x1, 0x1, 0, 0},
11055 {0x78, 0x66, 0x66, 0, 0},
11056 {0x79, 0x66, 0x66, 0, 0},
11057 {0x7A, 0, 0, 0, 0},
11058 {0x7B, 0, 0, 0, 0},
11059 {0x7C, 0, 0, 0, 0},
11060 {0x7D, 0, 0, 0, 0},
11061 {0x7E, 0, 0, 0, 0},
11062 {0x7F, 0, 0, 0, 0},
11063 {0x80, 0, 0, 0, 0},
11064 {0x81, 0, 0, 0, 0},
11065 {0x82, 0, 0, 0, 0},
11066 {0x83, 0, 0, 0, 0},
11067 {0x84, 0, 0, 0, 0},
11068 {0x85, 0xff, 0xff, 0, 0},
11069 {0x86, 0, 0, 0, 0},
11070 {0x87, 0, 0, 0, 0},
11071 {0x88, 0, 0, 0, 0},
11072 {0x89, 0, 0, 0, 0},
11073 {0x8A, 0, 0, 0, 0},
11074 {0x8B, 0, 0, 0, 0},
11075 {0x8C, 0, 0, 0, 0},
11076 {0x8D, 0, 0, 0, 0},
11077 {0x8E, 0, 0, 0, 0},
11078 {0x8F, 0, 0, 0, 0},
11079 {0x90, 0, 0, 0, 0},
11080 {0x91, 0, 0, 0, 0},
11081 {0x92, 0, 0, 0, 0},
11082 {0x93, 0, 0, 0, 0},
11083 {0x94, 0, 0, 0, 0},
11084 {0x95, 0, 0, 0, 0},
11085 {0x96, 0, 0, 0, 0},
11086 {0x97, 0, 0, 0, 0},
11087 {0x98, 0, 0, 0, 0},
11088 {0x99, 0, 0, 0, 0},
11089 {0x9A, 0, 0, 0, 0},
11090 {0x9B, 0, 0, 0, 0},
11091 {0x9C, 0, 0, 0, 0},
11092 {0x9D, 0, 0, 0, 0},
11093 {0x9E, 0, 0, 0, 0},
11094 {0x9F, 0x6, 0x6, 0, 0},
11095 {0xA0, 0x66, 0x66, 0, 0},
11096 {0xA1, 0x66, 0x66, 0, 0},
11097 {0xA2, 0x66, 0x66, 0, 0},
11098 {0xA3, 0x66, 0x66, 0, 0},
11099 {0xA4, 0x66, 0x66, 0, 0},
11100 {0xA5, 0x66, 0x66, 0, 0},
11101 {0xA6, 0x66, 0x66, 0, 0},
11102 {0xA7, 0x66, 0x66, 0, 0},
11103 {0xA8, 0x66, 0x66, 0, 0},
11104 {0xA9, 0x66, 0x66, 0, 0},
11105 {0xAA, 0x66, 0x66, 0, 0},
11106 {0xAB, 0x66, 0x66, 0, 0},
11107 {0xAC, 0x66, 0x66, 0, 0},
11108 {0xAD, 0x66, 0x66, 0, 0},
11109 {0xAE, 0x66, 0x66, 0, 0},
11110 {0xAF, 0x66, 0x66, 0, 0},
11111 {0xB0, 0x66, 0x66, 0, 0},
11112 {0xB1, 0x66, 0x66, 0, 0},
11113 {0xB2, 0x66, 0x66, 0, 0},
11114 {0xB3, 0xa, 0xa, 0, 0},
11115 {0xB4, 0, 0, 0, 0},
11116 {0xB5, 0, 0, 0, 0},
11117 {0xB6, 0, 0, 0, 0},
11118 {0xFFFF, 0, 0, 0, 0},
11119};
11120
11121static const struct radio_regs regs_TX_2056_rev11[] = {
11122 {0x02, 0, 0, 0, 0},
11123 {0x03, 0, 0, 0, 0},
11124 {0x04, 0, 0, 0, 0},
11125 {0x05, 0, 0, 0, 0},
11126 {0x06, 0, 0, 0, 0},
11127 {0x07, 0, 0, 0, 0},
11128 {0x08, 0, 0, 0, 0},
11129 {0x09, 0, 0, 0, 0},
11130 {0x0A, 0, 0, 0, 0},
11131 {0x0B, 0, 0, 0, 0},
11132 {0x0C, 0, 0, 0, 0},
11133 {0x0D, 0, 0, 0, 0},
11134 {0x0E, 0, 0, 0, 0},
11135 {0x0F, 0, 0, 0, 0},
11136 {0x10, 0, 0, 0, 0},
11137 {0x11, 0, 0, 0, 0},
11138 {0x12, 0, 0, 0, 0},
11139 {0x13, 0, 0, 0, 0},
11140 {0x14, 0, 0, 0, 0},
11141 {0x15, 0, 0, 0, 0},
11142 {0x16, 0, 0, 0, 0},
11143 {0x17, 0, 0, 0, 0},
11144 {0x18, 0, 0, 0, 0},
11145 {0x19, 0, 0, 0, 0},
11146 {0x1A, 0, 0, 0, 0},
11147 {0x1B, 0, 0, 0, 0},
11148 {0x1C, 0, 0, 0, 0},
11149 {0x1D, 0, 0, 0, 0},
11150 {0x1E, 0, 0, 0, 0},
11151 {0x1F, 0, 0, 0, 0},
11152 {0x20, 0, 0, 0, 0},
11153 {0x21, 0x88, 0x88, 0, 0},
11154 {0x22, 0x88, 0x88, 0, 0},
11155 {0x23, 0x88, 0x88, 0, 0},
11156 {0x24, 0x88, 0x88, 0, 0},
11157 {0x25, 0xc, 0xc, 0, 0},
11158 {0x26, 0, 0, 0, 0},
11159 {0x27, 0x3, 0x3, 0, 0},
11160 {0x28, 0, 0, 0, 0},
11161 {0x29, 0x3, 0x3, 0, 0},
11162 {0x2A, 0x37, 0x37, 0, 0},
11163 {0x2B, 0x3, 0x3, 0, 0},
11164 {0x2C, 0, 0, 0, 0},
11165 {0x2D, 0, 0, 0, 0},
11166 {0x2E, 0x1, 0x1, 0, 0},
11167 {0x2F, 0x1, 0x1, 0, 0},
11168 {0x30, 0, 0, 0, 0},
11169 {0x31, 0, 0, 0, 0},
11170 {0x32, 0, 0, 0, 0},
11171 {0x33, 0x11, 0x11, 0, 0},
11172 {0x34, 0xee, 0xee, 1, 1},
11173 {0x35, 0, 0, 0, 0},
11174 {0x36, 0, 0, 0, 0},
11175 {0x37, 0x3, 0x3, 0, 0},
11176 {0x38, 0x50, 0x50, 1, 1},
11177 {0x39, 0, 0, 0, 0},
11178 {0x3A, 0x50, 0x50, 1, 1},
11179 {0x3B, 0, 0, 0, 0},
11180 {0x3C, 0x6e, 0x6e, 0, 0},
11181 {0x3D, 0xf0, 0xf0, 1, 1},
11182 {0x3E, 0, 0, 0, 0},
11183 {0x3F, 0, 0, 0, 0},
11184 {0x40, 0, 0, 0, 0},
11185 {0x41, 0x3, 0x3, 0, 0},
11186 {0x42, 0x3, 0x3, 0, 0},
11187 {0x43, 0, 0, 0, 0},
11188 {0x44, 0x1e, 0x1e, 0, 0},
11189 {0x45, 0, 0, 0, 0},
11190 {0x46, 0x6e, 0x6e, 0, 0},
11191 {0x47, 0xf0, 0xf0, 1, 1},
11192 {0x48, 0, 0, 0, 0},
11193 {0x49, 0x2, 0x2, 0, 0},
11194 {0x4A, 0xff, 0xff, 1, 1},
11195 {0x4B, 0xc, 0xc, 0, 0},
11196 {0x4C, 0, 0, 0, 0},
11197 {0x4D, 0x38, 0x38, 0, 0},
11198 {0x4E, 0x70, 0x70, 1, 1},
11199 {0x4F, 0x2, 0x2, 0, 0},
11200 {0x50, 0x88, 0x88, 0, 0},
11201 {0x51, 0xc, 0xc, 0, 0},
11202 {0x52, 0, 0, 0, 0},
11203 {0x53, 0x8, 0x8, 0, 0},
11204 {0x54, 0x70, 0x70, 1, 1},
11205 {0x55, 0x2, 0x2, 0, 0},
11206 {0x56, 0xff, 0xff, 1, 1},
11207 {0x57, 0, 0, 0, 0},
11208 {0x58, 0x83, 0x83, 0, 0},
11209 {0x59, 0x77, 0x77, 1, 1},
11210 {0x5A, 0, 0, 0, 0},
11211 {0x5B, 0x2, 0x2, 0, 0},
11212 {0x5C, 0x88, 0x88, 0, 0},
11213 {0x5D, 0, 0, 0, 0},
11214 {0x5E, 0x8, 0x8, 0, 0},
11215 {0x5F, 0x77, 0x77, 1, 1},
11216 {0x60, 0x1, 0x1, 0, 0},
11217 {0x61, 0, 0, 0, 0},
11218 {0x62, 0x7, 0x7, 0, 0},
11219 {0x63, 0, 0, 0, 0},
11220 {0x64, 0x7, 0x7, 0, 0},
11221 {0x65, 0, 0, 0, 0},
11222 {0x66, 0, 0, 0, 0},
11223 {0x67, 0, 0, 1, 1},
11224 {0x68, 0, 0, 0, 0},
11225 {0x69, 0xa, 0xa, 0, 0},
11226 {0x6A, 0, 0, 0, 0},
11227 {0x6B, 0, 0, 0, 0},
11228 {0x6C, 0, 0, 0, 0},
11229 {0x6D, 0, 0, 0, 0},
11230 {0x6E, 0, 0, 0, 0},
11231 {0x6F, 0, 0, 0, 0},
11232 {0x70, 0, 0, 0, 0},
11233 {0x71, 0x2, 0x2, 0, 0},
11234 {0x72, 0, 0, 0, 0},
11235 {0x73, 0, 0, 0, 0},
11236 {0x74, 0xe, 0xe, 0, 0},
11237 {0x75, 0xe, 0xe, 0, 0},
11238 {0x76, 0xe, 0xe, 0, 0},
11239 {0x77, 0x13, 0x13, 0, 0},
11240 {0x78, 0x13, 0x13, 0, 0},
11241 {0x79, 0x1b, 0x1b, 0, 0},
11242 {0x7A, 0x1b, 0x1b, 0, 0},
11243 {0x7B, 0x55, 0x55, 0, 0},
11244 {0x7C, 0x5b, 0x5b, 0, 0},
11245 {0x7D, 0x30, 0x30, 1, 1},
11246 {0x7E, 0, 0, 0, 0},
11247 {0x7F, 0, 0, 0, 0},
11248 {0x80, 0, 0, 0, 0},
11249 {0x81, 0, 0, 0, 0},
11250 {0x82, 0, 0, 0, 0},
11251 {0x83, 0, 0, 0, 0},
11252 {0x84, 0, 0, 0, 0},
11253 {0x85, 0, 0, 0, 0},
11254 {0x86, 0, 0, 0, 0},
11255 {0x87, 0, 0, 0, 0},
11256 {0x88, 0, 0, 0, 0},
11257 {0x89, 0, 0, 0, 0},
11258 {0x8A, 0, 0, 0, 0},
11259 {0x8B, 0, 0, 0, 0},
11260 {0x8C, 0, 0, 0, 0},
11261 {0x8D, 0, 0, 0, 0},
11262 {0x8E, 0, 0, 0, 0},
11263 {0x8F, 0, 0, 0, 0},
11264 {0x90, 0, 0, 0, 0},
11265 {0x91, 0, 0, 0, 0},
11266 {0x92, 0, 0, 0, 0},
11267 {0x93, 0x70, 0x70, 0, 0},
11268 {0x94, 0x70, 0x70, 0, 0},
11269 {0x95, 0x70, 0x70, 0, 0},
11270 {0x96, 0x70, 0x70, 0, 0},
11271 {0x97, 0x70, 0x70, 0, 0},
11272 {0x98, 0x70, 0x70, 0, 0},
11273 {0x99, 0x70, 0x70, 0, 0},
11274 {0x9A, 0x70, 0x70, 0, 0},
11275 {0xFFFF, 0, 0, 0, 0},
11276};
11277
11278static const struct radio_regs regs_RX_2056_rev11[] = {
11279 {0x02, 0, 0, 0, 0},
11280 {0x03, 0, 0, 0, 0},
11281 {0x04, 0, 0, 0, 0},
11282 {0x05, 0, 0, 0, 0},
11283 {0x06, 0, 0, 0, 0},
11284 {0x07, 0, 0, 0, 0},
11285 {0x08, 0, 0, 0, 0},
11286 {0x09, 0, 0, 0, 0},
11287 {0x0A, 0, 0, 0, 0},
11288 {0x0B, 0, 0, 0, 0},
11289 {0x0C, 0, 0, 0, 0},
11290 {0x0D, 0, 0, 0, 0},
11291 {0x0E, 0, 0, 0, 0},
11292 {0x0F, 0, 0, 0, 0},
11293 {0x10, 0, 0, 0, 0},
11294 {0x11, 0, 0, 0, 0},
11295 {0x12, 0, 0, 0, 0},
11296 {0x13, 0, 0, 0, 0},
11297 {0x14, 0, 0, 0, 0},
11298 {0x15, 0, 0, 0, 0},
11299 {0x16, 0, 0, 0, 0},
11300 {0x17, 0, 0, 0, 0},
11301 {0x18, 0, 0, 0, 0},
11302 {0x19, 0, 0, 0, 0},
11303 {0x1A, 0, 0, 0, 0},
11304 {0x1B, 0, 0, 0, 0},
11305 {0x1C, 0, 0, 0, 0},
11306 {0x1D, 0, 0, 0, 0},
11307 {0x1E, 0, 0, 0, 0},
11308 {0x1F, 0, 0, 0, 0},
11309 {0x20, 0x3, 0x3, 0, 0},
11310 {0x21, 0, 0, 0, 0},
11311 {0x22, 0, 0, 0, 0},
11312 {0x23, 0x90, 0x90, 0, 0},
11313 {0x24, 0x55, 0x55, 0, 0},
11314 {0x25, 0x15, 0x15, 0, 0},
11315 {0x26, 0x5, 0x5, 0, 0},
11316 {0x27, 0x15, 0x15, 0, 0},
11317 {0x28, 0x5, 0x5, 0, 0},
11318 {0x29, 0x20, 0x20, 0, 0},
11319 {0x2A, 0x11, 0x11, 0, 0},
11320 {0x2B, 0x90, 0x90, 0, 0},
11321 {0x2C, 0, 0, 0, 0},
11322 {0x2D, 0x88, 0x88, 0, 0},
11323 {0x2E, 0x32, 0x32, 0, 0},
11324 {0x2F, 0x77, 0x77, 0, 0},
11325 {0x30, 0x17, 0x17, 1, 1},
11326 {0x31, 0xff, 0xff, 1, 1},
11327 {0x32, 0x20, 0x20, 0, 0},
11328 {0x33, 0, 0, 0, 0},
11329 {0x34, 0x88, 0x88, 0, 0},
11330 {0x35, 0x32, 0x32, 0, 0},
11331 {0x36, 0x77, 0x77, 0, 0},
11332 {0x37, 0x17, 0x17, 1, 1},
11333 {0x38, 0xf0, 0xf0, 1, 1},
11334 {0x39, 0x20, 0x20, 0, 0},
11335 {0x3A, 0x8, 0x8, 0, 0},
11336 {0x3B, 0x55, 0x55, 1, 1},
11337 {0x3C, 0, 0, 0, 0},
11338 {0x3D, 0x88, 0x88, 1, 1},
11339 {0x3E, 0, 0, 0, 0},
11340 {0x3F, 0x44, 0x44, 0, 0},
11341 {0x40, 0x7, 0x7, 1, 1},
11342 {0x41, 0x6, 0x6, 0, 0},
11343 {0x42, 0x4, 0x4, 0, 0},
11344 {0x43, 0, 0, 0, 0},
11345 {0x44, 0x8, 0x8, 0, 0},
11346 {0x45, 0x55, 0x55, 1, 1},
11347 {0x46, 0, 0, 0, 0},
11348 {0x47, 0x11, 0x11, 0, 0},
11349 {0x48, 0, 0, 0, 0},
11350 {0x49, 0x44, 0x44, 0, 0},
11351 {0x4A, 0x7, 0x7, 0, 0},
11352 {0x4B, 0x6, 0x6, 0, 0},
11353 {0x4C, 0x4, 0x4, 0, 0},
11354 {0x4D, 0, 0, 0, 0},
11355 {0x4E, 0, 0, 0, 0},
11356 {0x4F, 0x26, 0x26, 1, 1},
11357 {0x50, 0x26, 0x26, 1, 1},
11358 {0x51, 0xf, 0xf, 1, 1},
11359 {0x52, 0xf, 0xf, 1, 1},
11360 {0x53, 0x44, 0x44, 0, 0},
11361 {0x54, 0, 0, 0, 0},
11362 {0x55, 0, 0, 0, 0},
11363 {0x56, 0x8, 0x8, 0, 0},
11364 {0x57, 0x8, 0x8, 0, 0},
11365 {0x58, 0x7, 0x7, 0, 0},
11366 {0x59, 0x22, 0x22, 0, 0},
11367 {0x5A, 0x22, 0x22, 0, 0},
11368 {0x5B, 0x2, 0x2, 0, 0},
11369 {0x5C, 0x4, 0x4, 1, 1},
11370 {0x5D, 0x7, 0x7, 0, 0},
11371 {0x5E, 0x55, 0x55, 0, 0},
11372 {0x5F, 0x23, 0x23, 0, 0},
11373 {0x60, 0x41, 0x41, 0, 0},
11374 {0x61, 0x1, 0x1, 0, 0},
11375 {0x62, 0xa, 0xa, 0, 0},
11376 {0x63, 0, 0, 0, 0},
11377 {0x64, 0, 0, 0, 0},
11378 {0x65, 0, 0, 0, 0},
11379 {0x66, 0, 0, 0, 0},
11380 {0x67, 0, 0, 0, 0},
11381 {0x68, 0, 0, 0, 0},
11382 {0x69, 0, 0, 0, 0},
11383 {0x6A, 0, 0, 0, 0},
11384 {0x6B, 0xc, 0xc, 0, 0},
11385 {0x6C, 0, 0, 0, 0},
11386 {0x6D, 0, 0, 0, 0},
11387 {0x6E, 0, 0, 0, 0},
11388 {0x6F, 0, 0, 0, 0},
11389 {0x70, 0, 0, 0, 0},
11390 {0x71, 0, 0, 0, 0},
11391 {0x72, 0x22, 0x22, 0, 0},
11392 {0x73, 0x22, 0x22, 0, 0},
11393 {0x74, 0, 0, 1, 1},
11394 {0x75, 0xa, 0xa, 0, 0},
11395 {0x76, 0x1, 0x1, 0, 0},
11396 {0x77, 0x22, 0x22, 0, 0},
11397 {0x78, 0x30, 0x30, 0, 0},
11398 {0x79, 0, 0, 0, 0},
11399 {0x7A, 0, 0, 0, 0},
11400 {0x7B, 0, 0, 0, 0},
11401 {0x7C, 0, 0, 0, 0},
11402 {0x7D, 0x5, 0x5, 1, 1},
11403 {0x7E, 0, 0, 0, 0},
11404 {0x7F, 0, 0, 0, 0},
11405 {0x80, 0, 0, 0, 0},
11406 {0x81, 0, 0, 0, 0},
11407 {0x82, 0, 0, 0, 0},
11408 {0x83, 0, 0, 0, 0},
11409 {0x84, 0, 0, 0, 0},
11410 {0x85, 0, 0, 0, 0},
11411 {0x86, 0, 0, 0, 0},
11412 {0x87, 0, 0, 0, 0},
11413 {0x88, 0, 0, 0, 0},
11414 {0x89, 0, 0, 0, 0},
11415 {0x8A, 0, 0, 0, 0},
11416 {0x8B, 0, 0, 0, 0},
11417 {0x8C, 0, 0, 0, 0},
11418 {0x8D, 0, 0, 0, 0},
11419 {0x8E, 0, 0, 0, 0},
11420 {0x8F, 0, 0, 0, 0},
11421 {0x90, 0, 0, 0, 0},
11422 {0x91, 0, 0, 0, 0},
11423 {0x92, 0, 0, 0, 0},
11424 {0x93, 0, 0, 0, 0},
11425 {0x94, 0, 0, 0, 0},
11426 {0xFFFF, 0, 0, 0, 0},
11427};
11428
11429static struct radio_20xx_regs regs_2057_rev4[] = {
11430 {0x00, 0x84, 0},
11431 {0x01, 0, 0},
11432 {0x02, 0x60, 0},
11433 {0x03, 0x1f, 0},
11434 {0x04, 0x4, 0},
11435 {0x05, 0x2, 0},
11436 {0x06, 0x1, 0},
11437 {0x07, 0x1, 0},
11438 {0x08, 0x1, 0},
11439 {0x09, 0x69, 0},
11440 {0x0A, 0x66, 0},
11441 {0x0B, 0x6, 0},
11442 {0x0C, 0x18, 0},
11443 {0x0D, 0x3, 0},
11444 {0x0E, 0x20, 1},
11445 {0x0F, 0x20, 0},
11446 {0x10, 0, 0},
11447 {0x11, 0x7c, 0},
11448 {0x12, 0x42, 0},
11449 {0x13, 0xbd, 0},
11450 {0x14, 0x7, 0},
11451 {0x15, 0xf7, 0},
11452 {0x16, 0x8, 0},
11453 {0x17, 0x17, 0},
11454 {0x18, 0x7, 0},
11455 {0x19, 0, 0},
11456 {0x1A, 0x2, 0},
11457 {0x1B, 0x13, 0},
11458 {0x1C, 0x3e, 0},
11459 {0x1D, 0x3e, 0},
11460 {0x1E, 0x96, 0},
11461 {0x1F, 0x4, 0},
11462 {0x20, 0, 0},
11463 {0x21, 0, 0},
11464 {0x22, 0x17, 0},
11465 {0x23, 0x4, 0},
11466 {0x24, 0x1, 0},
11467 {0x25, 0x6, 0},
11468 {0x26, 0x4, 0},
11469 {0x27, 0xd, 0},
11470 {0x28, 0xd, 0},
11471 {0x29, 0x30, 0},
11472 {0x2A, 0x32, 0},
11473 {0x2B, 0x8, 0},
11474 {0x2C, 0x1c, 0},
11475 {0x2D, 0x2, 0},
11476 {0x2E, 0x4, 0},
11477 {0x2F, 0x7f, 0},
11478 {0x30, 0x27, 0},
11479 {0x31, 0, 1},
11480 {0x32, 0, 1},
11481 {0x33, 0, 1},
11482 {0x34, 0, 0},
11483 {0x35, 0x26, 1},
11484 {0x36, 0x18, 0},
11485 {0x37, 0x7, 0},
11486 {0x38, 0x66, 0},
11487 {0x39, 0x66, 0},
11488 {0x3A, 0x66, 0},
11489 {0x3B, 0x66, 0},
11490 {0x3C, 0xff, 1},
11491 {0x3D, 0xff, 1},
11492 {0x3E, 0xff, 1},
11493 {0x3F, 0xff, 1},
11494 {0x40, 0x16, 0},
11495 {0x41, 0x7, 0},
11496 {0x42, 0x19, 0},
11497 {0x43, 0x7, 0},
11498 {0x44, 0x6, 0},
11499 {0x45, 0x3, 0},
11500 {0x46, 0x1, 0},
11501 {0x47, 0x7, 0},
11502 {0x48, 0x33, 0},
11503 {0x49, 0x5, 0},
11504 {0x4A, 0x77, 0},
11505 {0x4B, 0x66, 0},
11506 {0x4C, 0x66, 0},
11507 {0x4D, 0, 0},
11508 {0x4E, 0x4, 0},
11509 {0x4F, 0xc, 0},
11510 {0x50, 0, 0},
11511 {0x51, 0x75, 0},
11512 {0x56, 0x7, 0},
11513 {0x57, 0, 0},
11514 {0x58, 0, 0},
11515 {0x59, 0xa8, 0},
11516 {0x5A, 0, 0},
11517 {0x5B, 0x1f, 0},
11518 {0x5C, 0x30, 0},
11519 {0x5D, 0x1, 0},
11520 {0x5E, 0x30, 0},
11521 {0x5F, 0x70, 0},
11522 {0x60, 0, 0},
11523 {0x61, 0, 0},
11524 {0x62, 0x33, 1},
11525 {0x63, 0x19, 0},
11526 {0x64, 0x62, 0},
11527 {0x65, 0, 0},
11528 {0x66, 0x11, 0},
11529 {0x69, 0, 0},
11530 {0x6A, 0x7e, 0},
11531 {0x6B, 0x3f, 0},
11532 {0x6C, 0x7f, 0},
11533 {0x6D, 0x78, 0},
11534 {0x6E, 0xc8, 0},
11535 {0x6F, 0x88, 0},
11536 {0x70, 0x8, 0},
11537 {0x71, 0xf, 0},
11538 {0x72, 0xbc, 0},
11539 {0x73, 0x8, 0},
11540 {0x74, 0x60, 0},
11541 {0x75, 0x1e, 0},
11542 {0x76, 0x70, 0},
11543 {0x77, 0, 0},
11544 {0x78, 0, 0},
11545 {0x79, 0, 0},
11546 {0x7A, 0x33, 0},
11547 {0x7B, 0x1e, 0},
11548 {0x7C, 0x62, 0},
11549 {0x7D, 0x11, 0},
11550 {0x80, 0x3c, 0},
11551 {0x81, 0x9c, 0},
11552 {0x82, 0xa, 0},
11553 {0x83, 0x9d, 0},
11554 {0x84, 0xa, 0},
11555 {0x85, 0, 0},
11556 {0x86, 0x40, 0},
11557 {0x87, 0x40, 0},
11558 {0x88, 0x88, 0},
11559 {0x89, 0x10, 0},
11560 {0x8A, 0xf0, 1},
11561 {0x8B, 0x10, 1},
11562 {0x8C, 0xf0, 1},
11563 {0x8D, 0, 0},
11564 {0x8E, 0, 0},
11565 {0x8F, 0x10, 0},
11566 {0x90, 0x55, 0},
11567 {0x91, 0x3f, 1},
11568 {0x92, 0x36, 1},
11569 {0x93, 0, 0},
11570 {0x94, 0, 0},
11571 {0x95, 0, 0},
11572 {0x96, 0x87, 0},
11573 {0x97, 0x11, 0},
11574 {0x98, 0, 0},
11575 {0x99, 0x33, 0},
11576 {0x9A, 0x88, 0},
11577 {0x9B, 0, 0},
11578 {0x9C, 0x87, 0},
11579 {0x9D, 0x11, 0},
11580 {0x9E, 0, 0},
11581 {0x9F, 0x33, 0},
11582 {0xA0, 0x88, 0},
11583 {0xA1, 0xe1, 0},
11584 {0xA2, 0x3f, 0},
11585 {0xA3, 0x44, 0},
11586 {0xA4, 0x8c, 1},
11587 {0xA5, 0x6d, 0},
11588 {0xA6, 0x22, 0},
11589 {0xA7, 0xbe, 0},
11590 {0xA8, 0x55, 1},
11591 {0xA9, 0xc, 0},
11592 {0xAA, 0xc, 0},
11593 {0xAB, 0xaa, 0},
11594 {0xAC, 0x2, 0},
11595 {0xAD, 0, 0},
11596 {0xAE, 0x10, 0},
11597 {0xAF, 0x1, 1},
11598 {0xB0, 0, 0},
11599 {0xB1, 0, 0},
11600 {0xB2, 0x80, 0},
11601 {0xB3, 0x60, 0},
11602 {0xB4, 0x44, 0},
11603 {0xB5, 0x55, 0},
11604 {0xB6, 0x1, 0},
11605 {0xB7, 0x55, 0},
11606 {0xB8, 0x1, 0},
11607 {0xB9, 0x5, 0},
11608 {0xBA, 0x55, 0},
11609 {0xBB, 0x55, 0},
11610 {0xC1, 0, 0},
11611 {0xC2, 0, 0},
11612 {0xC3, 0, 0},
11613 {0xC4, 0, 0},
11614 {0xC5, 0, 0},
11615 {0xC6, 0, 0},
11616 {0xC7, 0, 0},
11617 {0xC8, 0, 0},
11618 {0xC9, 0, 0},
11619 {0xCA, 0, 0},
11620 {0xCB, 0, 0},
11621 {0xCC, 0, 0},
11622 {0xCD, 0, 0},
11623 {0xCE, 0x5e, 0},
11624 {0xCF, 0xc, 0},
11625 {0xD0, 0xc, 0},
11626 {0xD1, 0xc, 0},
11627 {0xD2, 0, 0},
11628 {0xD3, 0x2b, 0},
11629 {0xD4, 0xc, 0},
11630 {0xD5, 0, 0},
11631 {0xD6, 0x75, 0},
11632 {0xDB, 0x7, 0},
11633 {0xDC, 0, 0},
11634 {0xDD, 0, 0},
11635 {0xDE, 0xa8, 0},
11636 {0xDF, 0, 0},
11637 {0xE0, 0x1f, 0},
11638 {0xE1, 0x30, 0},
11639 {0xE2, 0x1, 0},
11640 {0xE3, 0x30, 0},
11641 {0xE4, 0x70, 0},
11642 {0xE5, 0, 0},
11643 {0xE6, 0, 0},
11644 {0xE7, 0x33, 0},
11645 {0xE8, 0x19, 0},
11646 {0xE9, 0x62, 0},
11647 {0xEA, 0, 0},
11648 {0xEB, 0x11, 0},
11649 {0xEE, 0, 0},
11650 {0xEF, 0x7e, 0},
11651 {0xF0, 0x3f, 0},
11652 {0xF1, 0x7f, 0},
11653 {0xF2, 0x78, 0},
11654 {0xF3, 0xc8, 0},
11655 {0xF4, 0x88, 0},
11656 {0xF5, 0x8, 0},
11657 {0xF6, 0xf, 0},
11658 {0xF7, 0xbc, 0},
11659 {0xF8, 0x8, 0},
11660 {0xF9, 0x60, 0},
11661 {0xFA, 0x1e, 0},
11662 {0xFB, 0x70, 0},
11663 {0xFC, 0, 0},
11664 {0xFD, 0, 0},
11665 {0xFE, 0, 0},
11666 {0xFF, 0x33, 0},
11667 {0x100, 0x1e, 0},
11668 {0x101, 0x62, 0},
11669 {0x102, 0x11, 0},
11670 {0x105, 0x3c, 0},
11671 {0x106, 0x9c, 0},
11672 {0x107, 0xa, 0},
11673 {0x108, 0x9d, 0},
11674 {0x109, 0xa, 0},
11675 {0x10A, 0, 0},
11676 {0x10B, 0x40, 0},
11677 {0x10C, 0x40, 0},
11678 {0x10D, 0x88, 0},
11679 {0x10E, 0x10, 0},
11680 {0x10F, 0xf0, 1},
11681 {0x110, 0x10, 1},
11682 {0x111, 0xf0, 1},
11683 {0x112, 0, 0},
11684 {0x113, 0, 0},
11685 {0x114, 0x10, 0},
11686 {0x115, 0x55, 0},
11687 {0x116, 0x3f, 1},
11688 {0x117, 0x36, 1},
11689 {0x118, 0, 0},
11690 {0x119, 0, 0},
11691 {0x11A, 0, 0},
11692 {0x11B, 0x87, 0},
11693 {0x11C, 0x11, 0},
11694 {0x11D, 0, 0},
11695 {0x11E, 0x33, 0},
11696 {0x11F, 0x88, 0},
11697 {0x120, 0, 0},
11698 {0x121, 0x87, 0},
11699 {0x122, 0x11, 0},
11700 {0x123, 0, 0},
11701 {0x124, 0x33, 0},
11702 {0x125, 0x88, 0},
11703 {0x126, 0xe1, 0},
11704 {0x127, 0x3f, 0},
11705 {0x128, 0x44, 0},
11706 {0x129, 0x8c, 1},
11707 {0x12A, 0x6d, 0},
11708 {0x12B, 0x22, 0},
11709 {0x12C, 0xbe, 0},
11710 {0x12D, 0x55, 1},
11711 {0x12E, 0xc, 0},
11712 {0x12F, 0xc, 0},
11713 {0x130, 0xaa, 0},
11714 {0x131, 0x2, 0},
11715 {0x132, 0, 0},
11716 {0x133, 0x10, 0},
11717 {0x134, 0x1, 1},
11718 {0x135, 0, 0},
11719 {0x136, 0, 0},
11720 {0x137, 0x80, 0},
11721 {0x138, 0x60, 0},
11722 {0x139, 0x44, 0},
11723 {0x13A, 0x55, 0},
11724 {0x13B, 0x1, 0},
11725 {0x13C, 0x55, 0},
11726 {0x13D, 0x1, 0},
11727 {0x13E, 0x5, 0},
11728 {0x13F, 0x55, 0},
11729 {0x140, 0x55, 0},
11730 {0x146, 0, 0},
11731 {0x147, 0, 0},
11732 {0x148, 0, 0},
11733 {0x149, 0, 0},
11734 {0x14A, 0, 0},
11735 {0x14B, 0, 0},
11736 {0x14C, 0, 0},
11737 {0x14D, 0, 0},
11738 {0x14E, 0, 0},
11739 {0x14F, 0, 0},
11740 {0x150, 0, 0},
11741 {0x151, 0, 0},
11742 {0x152, 0, 0},
11743 {0x153, 0, 0},
11744 {0x154, 0xc, 0},
11745 {0x155, 0xc, 0},
11746 {0x156, 0xc, 0},
11747 {0x157, 0, 0},
11748 {0x158, 0x2b, 0},
11749 {0x159, 0x84, 0},
11750 {0x15A, 0x15, 0},
11751 {0x15B, 0xf, 0},
11752 {0x15C, 0, 0},
11753 {0x15D, 0, 0},
11754 {0x15E, 0, 1},
11755 {0x15F, 0, 1},
11756 {0x160, 0, 1},
11757 {0x161, 0, 1},
11758 {0x162, 0, 1},
11759 {0x163, 0, 1},
11760 {0x164, 0, 0},
11761 {0x165, 0, 0},
11762 {0x166, 0, 0},
11763 {0x167, 0, 0},
11764 {0x168, 0, 0},
11765 {0x169, 0x2, 1},
11766 {0x16A, 0, 1},
11767 {0x16B, 0, 1},
11768 {0x16C, 0, 1},
11769 {0x16D, 0, 0},
11770 {0x170, 0, 0},
11771 {0x171, 0x77, 0},
11772 {0x172, 0x77, 0},
11773 {0x173, 0x77, 0},
11774 {0x174, 0x77, 0},
11775 {0x175, 0, 0},
11776 {0x176, 0x3, 0},
11777 {0x177, 0x37, 0},
11778 {0x178, 0x3, 0},
11779 {0x179, 0, 0},
11780 {0x17A, 0x21, 0},
11781 {0x17B, 0x21, 0},
11782 {0x17C, 0, 0},
11783 {0x17D, 0xaa, 0},
11784 {0x17E, 0, 0},
11785 {0x17F, 0xaa, 0},
11786 {0x180, 0, 0},
11787 {0x190, 0, 0},
11788 {0x191, 0x77, 0},
11789 {0x192, 0x77, 0},
11790 {0x193, 0x77, 0},
11791 {0x194, 0x77, 0},
11792 {0x195, 0, 0},
11793 {0x196, 0x3, 0},
11794 {0x197, 0x37, 0},
11795 {0x198, 0x3, 0},
11796 {0x199, 0, 0},
11797 {0x19A, 0x21, 0},
11798 {0x19B, 0x21, 0},
11799 {0x19C, 0, 0},
11800 {0x19D, 0xaa, 0},
11801 {0x19E, 0, 0},
11802 {0x19F, 0xaa, 0},
11803 {0x1A0, 0, 0},
11804 {0x1A1, 0x2, 0},
11805 {0x1A2, 0xf, 0},
11806 {0x1A3, 0xf, 0},
11807 {0x1A4, 0, 1},
11808 {0x1A5, 0, 1},
11809 {0x1A6, 0, 1},
11810 {0x1A7, 0x2, 0},
11811 {0x1A8, 0xf, 0},
11812 {0x1A9, 0xf, 0},
11813 {0x1AA, 0, 1},
11814 {0x1AB, 0, 1},
11815 {0x1AC, 0, 1},
11816 {0xFFFF, 0, 0},
11817};
11818
11819static struct radio_20xx_regs regs_2057_rev5[] = {
11820 {0x00, 0, 1},
11821 {0x01, 0x57, 1},
11822 {0x02, 0x20, 1},
11823 {0x03, 0x1f, 0},
11824 {0x04, 0x4, 0},
11825 {0x05, 0x2, 0},
11826 {0x06, 0x1, 0},
11827 {0x07, 0x1, 0},
11828 {0x08, 0x1, 0},
11829 {0x09, 0x69, 0},
11830 {0x0A, 0x66, 0},
11831 {0x0B, 0x6, 0},
11832 {0x0C, 0x18, 0},
11833 {0x0D, 0x3, 0},
11834 {0x0E, 0x20, 0},
11835 {0x0F, 0x20, 0},
11836 {0x10, 0, 0},
11837 {0x11, 0x7c, 0},
11838 {0x12, 0x42, 0},
11839 {0x13, 0xbd, 0},
11840 {0x14, 0x7, 0},
11841 {0x15, 0x87, 0},
11842 {0x16, 0x8, 0},
11843 {0x17, 0x17, 0},
11844 {0x18, 0x7, 0},
11845 {0x19, 0, 0},
11846 {0x1A, 0x2, 0},
11847 {0x1B, 0x13, 0},
11848 {0x1C, 0x3e, 0},
11849 {0x1D, 0x3e, 0},
11850 {0x1E, 0x96, 0},
11851 {0x1F, 0x4, 0},
11852 {0x20, 0, 0},
11853 {0x21, 0, 0},
11854 {0x22, 0x17, 0},
11855 {0x23, 0x6, 1},
11856 {0x24, 0x1, 0},
11857 {0x25, 0x6, 0},
11858 {0x26, 0x4, 0},
11859 {0x27, 0xd, 0},
11860 {0x28, 0xd, 0},
11861 {0x29, 0x30, 0},
11862 {0x2A, 0x32, 0},
11863 {0x2B, 0x8, 0},
11864 {0x2C, 0x1c, 0},
11865 {0x2D, 0x2, 0},
11866 {0x2E, 0x4, 0},
11867 {0x2F, 0x7f, 0},
11868 {0x30, 0x27, 0},
11869 {0x31, 0, 1},
11870 {0x32, 0, 1},
11871 {0x33, 0, 1},
11872 {0x34, 0, 0},
11873 {0x35, 0x20, 0},
11874 {0x36, 0x18, 0},
11875 {0x37, 0x7, 0},
11876 {0x38, 0x66, 0},
11877 {0x39, 0x66, 0},
11878 {0x3C, 0xff, 0},
11879 {0x3D, 0xff, 0},
11880 {0x40, 0x16, 0},
11881 {0x41, 0x7, 0},
11882 {0x45, 0x3, 0},
11883 {0x46, 0x1, 0},
11884 {0x47, 0x7, 0},
11885 {0x4B, 0x66, 0},
11886 {0x4C, 0x66, 0},
11887 {0x4D, 0, 0},
11888 {0x4E, 0x4, 0},
11889 {0x4F, 0xc, 0},
11890 {0x50, 0, 0},
11891 {0x51, 0x70, 1},
11892 {0x56, 0x7, 0},
11893 {0x57, 0, 0},
11894 {0x58, 0, 0},
11895 {0x59, 0x88, 1},
11896 {0x5A, 0, 0},
11897 {0x5B, 0x1f, 0},
11898 {0x5C, 0x20, 1},
11899 {0x5D, 0x1, 0},
11900 {0x5E, 0x30, 0},
11901 {0x5F, 0x70, 0},
11902 {0x60, 0, 0},
11903 {0x61, 0, 0},
11904 {0x62, 0x33, 1},
11905 {0x63, 0xf, 1},
11906 {0x64, 0xf, 1},
11907 {0x65, 0, 0},
11908 {0x66, 0x11, 0},
11909 {0x80, 0x3c, 0},
11910 {0x81, 0x1, 1},
11911 {0x82, 0xa, 0},
11912 {0x85, 0, 0},
11913 {0x86, 0x40, 0},
11914 {0x87, 0x40, 0},
11915 {0x88, 0x88, 0},
11916 {0x89, 0x10, 0},
11917 {0x8A, 0xf0, 0},
11918 {0x8B, 0x10, 0},
11919 {0x8C, 0xf0, 0},
11920 {0x8F, 0x10, 0},
11921 {0x90, 0x55, 0},
11922 {0x91, 0x3f, 1},
11923 {0x92, 0x36, 1},
11924 {0x93, 0, 0},
11925 {0x94, 0, 0},
11926 {0x95, 0, 0},
11927 {0x96, 0x87, 0},
11928 {0x97, 0x11, 0},
11929 {0x98, 0, 0},
11930 {0x99, 0x33, 0},
11931 {0x9A, 0x88, 0},
11932 {0xA1, 0x20, 1},
11933 {0xA2, 0x3f, 0},
11934 {0xA3, 0x44, 0},
11935 {0xA4, 0x8c, 0},
11936 {0xA5, 0x6c, 0},
11937 {0xA6, 0x22, 0},
11938 {0xA7, 0xbe, 0},
11939 {0xA8, 0x55, 0},
11940 {0xAA, 0xc, 0},
11941 {0xAB, 0xaa, 0},
11942 {0xAC, 0x2, 0},
11943 {0xAD, 0, 0},
11944 {0xAE, 0x10, 0},
11945 {0xAF, 0x1, 0},
11946 {0xB0, 0, 0},
11947 {0xB1, 0, 0},
11948 {0xB2, 0x80, 0},
11949 {0xB3, 0x60, 0},
11950 {0xB4, 0x44, 0},
11951 {0xB5, 0x55, 0},
11952 {0xB6, 0x1, 0},
11953 {0xB7, 0x55, 0},
11954 {0xB8, 0x1, 0},
11955 {0xB9, 0x5, 0},
11956 {0xBA, 0x55, 0},
11957 {0xBB, 0x55, 0},
11958 {0xC3, 0, 0},
11959 {0xC4, 0, 0},
11960 {0xC5, 0, 0},
11961 {0xC6, 0, 0},
11962 {0xC7, 0, 0},
11963 {0xC8, 0, 0},
11964 {0xC9, 0, 0},
11965 {0xCA, 0, 0},
11966 {0xCB, 0, 0},
11967 {0xCD, 0, 0},
11968 {0xCE, 0x5e, 0},
11969 {0xCF, 0xc, 0},
11970 {0xD0, 0xc, 0},
11971 {0xD1, 0xc, 0},
11972 {0xD2, 0, 0},
11973 {0xD3, 0x2b, 0},
11974 {0xD4, 0xc, 0},
11975 {0xD5, 0, 0},
11976 {0xD6, 0x70, 1},
11977 {0xDB, 0x7, 0},
11978 {0xDC, 0, 0},
11979 {0xDD, 0, 0},
11980 {0xDE, 0x88, 1},
11981 {0xDF, 0, 0},
11982 {0xE0, 0x1f, 0},
11983 {0xE1, 0x20, 1},
11984 {0xE2, 0x1, 0},
11985 {0xE3, 0x30, 0},
11986 {0xE4, 0x70, 0},
11987 {0xE5, 0, 0},
11988 {0xE6, 0, 0},
11989 {0xE7, 0x33, 0},
11990 {0xE8, 0xf, 1},
11991 {0xE9, 0xf, 1},
11992 {0xEA, 0, 0},
11993 {0xEB, 0x11, 0},
11994 {0x105, 0x3c, 0},
11995 {0x106, 0x1, 1},
11996 {0x107, 0xa, 0},
11997 {0x10A, 0, 0},
11998 {0x10B, 0x40, 0},
11999 {0x10C, 0x40, 0},
12000 {0x10D, 0x88, 0},
12001 {0x10E, 0x10, 0},
12002 {0x10F, 0xf0, 0},
12003 {0x110, 0x10, 0},
12004 {0x111, 0xf0, 0},
12005 {0x114, 0x10, 0},
12006 {0x115, 0x55, 0},
12007 {0x116, 0x3f, 1},
12008 {0x117, 0x36, 1},
12009 {0x118, 0, 0},
12010 {0x119, 0, 0},
12011 {0x11A, 0, 0},
12012 {0x11B, 0x87, 0},
12013 {0x11C, 0x11, 0},
12014 {0x11D, 0, 0},
12015 {0x11E, 0x33, 0},
12016 {0x11F, 0x88, 0},
12017 {0x126, 0x20, 1},
12018 {0x127, 0x3f, 0},
12019 {0x128, 0x44, 0},
12020 {0x129, 0x8c, 0},
12021 {0x12A, 0x6c, 0},
12022 {0x12B, 0x22, 0},
12023 {0x12C, 0xbe, 0},
12024 {0x12D, 0x55, 0},
12025 {0x12F, 0xc, 0},
12026 {0x130, 0xaa, 0},
12027 {0x131, 0x2, 0},
12028 {0x132, 0, 0},
12029 {0x133, 0x10, 0},
12030 {0x134, 0x1, 0},
12031 {0x135, 0, 0},
12032 {0x136, 0, 0},
12033 {0x137, 0x80, 0},
12034 {0x138, 0x60, 0},
12035 {0x139, 0x44, 0},
12036 {0x13A, 0x55, 0},
12037 {0x13B, 0x1, 0},
12038 {0x13C, 0x55, 0},
12039 {0x13D, 0x1, 0},
12040 {0x13E, 0x5, 0},
12041 {0x13F, 0x55, 0},
12042 {0x140, 0x55, 0},
12043 {0x148, 0, 0},
12044 {0x149, 0, 0},
12045 {0x14A, 0, 0},
12046 {0x14B, 0, 0},
12047 {0x14C, 0, 0},
12048 {0x14D, 0, 0},
12049 {0x14E, 0, 0},
12050 {0x14F, 0, 0},
12051 {0x150, 0, 0},
12052 {0x154, 0xc, 0},
12053 {0x155, 0xc, 0},
12054 {0x156, 0xc, 0},
12055 {0x157, 0, 0},
12056 {0x158, 0x2b, 0},
12057 {0x159, 0x84, 0},
12058 {0x15A, 0x15, 0},
12059 {0x15B, 0xf, 0},
12060 {0x15C, 0, 0},
12061 {0x15D, 0, 0},
12062 {0x15E, 0, 1},
12063 {0x15F, 0, 1},
12064 {0x160, 0, 1},
12065 {0x161, 0, 1},
12066 {0x162, 0, 1},
12067 {0x163, 0, 1},
12068 {0x164, 0, 0},
12069 {0x165, 0, 0},
12070 {0x166, 0, 0},
12071 {0x167, 0, 0},
12072 {0x168, 0, 0},
12073 {0x169, 0, 0},
12074 {0x16A, 0, 1},
12075 {0x16B, 0, 1},
12076 {0x16C, 0, 1},
12077 {0x16D, 0, 0},
12078 {0x170, 0, 0},
12079 {0x171, 0x77, 0},
12080 {0x172, 0x77, 0},
12081 {0x173, 0x77, 0},
12082 {0x174, 0x77, 0},
12083 {0x175, 0, 0},
12084 {0x176, 0x3, 0},
12085 {0x177, 0x37, 0},
12086 {0x178, 0x3, 0},
12087 {0x179, 0, 0},
12088 {0x17B, 0x21, 0},
12089 {0x17C, 0, 0},
12090 {0x17D, 0xaa, 0},
12091 {0x17E, 0, 0},
12092 {0x190, 0, 0},
12093 {0x191, 0x77, 0},
12094 {0x192, 0x77, 0},
12095 {0x193, 0x77, 0},
12096 {0x194, 0x77, 0},
12097 {0x195, 0, 0},
12098 {0x196, 0x3, 0},
12099 {0x197, 0x37, 0},
12100 {0x198, 0x3, 0},
12101 {0x199, 0, 0},
12102 {0x19B, 0x21, 0},
12103 {0x19C, 0, 0},
12104 {0x19D, 0xaa, 0},
12105 {0x19E, 0, 0},
12106 {0x1A1, 0x2, 0},
12107 {0x1A2, 0xf, 0},
12108 {0x1A3, 0xf, 0},
12109 {0x1A4, 0, 1},
12110 {0x1A5, 0, 1},
12111 {0x1A6, 0, 1},
12112 {0x1A7, 0x2, 0},
12113 {0x1A8, 0xf, 0},
12114 {0x1A9, 0xf, 0},
12115 {0x1AA, 0, 1},
12116 {0x1AB, 0, 1},
12117 {0x1AC, 0, 1},
12118 {0x1AD, 0x84, 0},
12119 {0x1AE, 0x60, 0},
12120 {0x1AF, 0x47, 0},
12121 {0x1B0, 0x47, 0},
12122 {0x1B1, 0, 0},
12123 {0x1B2, 0, 0},
12124 {0x1B3, 0, 0},
12125 {0x1B4, 0, 0},
12126 {0x1B5, 0, 0},
12127 {0x1B6, 0, 0},
12128 {0x1B7, 0xc, 1},
12129 {0x1B8, 0, 0},
12130 {0x1B9, 0, 0},
12131 {0x1BA, 0, 0},
12132 {0x1BB, 0, 0},
12133 {0x1BC, 0, 0},
12134 {0x1BD, 0, 0},
12135 {0x1BE, 0, 0},
12136 {0x1BF, 0, 0},
12137 {0x1C0, 0, 0},
12138 {0x1C1, 0x1, 1},
12139 {0x1C2, 0x80, 1},
12140 {0x1C3, 0, 0},
12141 {0x1C4, 0, 0},
12142 {0x1C5, 0, 0},
12143 {0x1C6, 0, 0},
12144 {0x1C7, 0, 0},
12145 {0x1C8, 0, 0},
12146 {0x1C9, 0, 0},
12147 {0x1CA, 0, 0},
12148 {0xFFFF, 0, 0}
12149};
12150
12151static struct radio_20xx_regs regs_2057_rev5v1[] = {
12152 {0x00, 0x15, 1},
12153 {0x01, 0x57, 1},
12154 {0x02, 0x20, 1},
12155 {0x03, 0x1f, 0},
12156 {0x04, 0x4, 0},
12157 {0x05, 0x2, 0},
12158 {0x06, 0x1, 0},
12159 {0x07, 0x1, 0},
12160 {0x08, 0x1, 0},
12161 {0x09, 0x69, 0},
12162 {0x0A, 0x66, 0},
12163 {0x0B, 0x6, 0},
12164 {0x0C, 0x18, 0},
12165 {0x0D, 0x3, 0},
12166 {0x0E, 0x20, 0},
12167 {0x0F, 0x20, 0},
12168 {0x10, 0, 0},
12169 {0x11, 0x7c, 0},
12170 {0x12, 0x42, 0},
12171 {0x13, 0xbd, 0},
12172 {0x14, 0x7, 0},
12173 {0x15, 0x87, 0},
12174 {0x16, 0x8, 0},
12175 {0x17, 0x17, 0},
12176 {0x18, 0x7, 0},
12177 {0x19, 0, 0},
12178 {0x1A, 0x2, 0},
12179 {0x1B, 0x13, 0},
12180 {0x1C, 0x3e, 0},
12181 {0x1D, 0x3e, 0},
12182 {0x1E, 0x96, 0},
12183 {0x1F, 0x4, 0},
12184 {0x20, 0, 0},
12185 {0x21, 0, 0},
12186 {0x22, 0x17, 0},
12187 {0x23, 0x6, 1},
12188 {0x24, 0x1, 0},
12189 {0x25, 0x6, 0},
12190 {0x26, 0x4, 0},
12191 {0x27, 0xd, 0},
12192 {0x28, 0xd, 0},
12193 {0x29, 0x30, 0},
12194 {0x2A, 0x32, 0},
12195 {0x2B, 0x8, 0},
12196 {0x2C, 0x1c, 0},
12197 {0x2D, 0x2, 0},
12198 {0x2E, 0x4, 0},
12199 {0x2F, 0x7f, 0},
12200 {0x30, 0x27, 0},
12201 {0x31, 0, 1},
12202 {0x32, 0, 1},
12203 {0x33, 0, 1},
12204 {0x34, 0, 0},
12205 {0x35, 0x20, 0},
12206 {0x36, 0x18, 0},
12207 {0x37, 0x7, 0},
12208 {0x38, 0x66, 0},
12209 {0x39, 0x66, 0},
12210 {0x3C, 0xff, 0},
12211 {0x3D, 0xff, 0},
12212 {0x40, 0x16, 0},
12213 {0x41, 0x7, 0},
12214 {0x45, 0x3, 0},
12215 {0x46, 0x1, 0},
12216 {0x47, 0x7, 0},
12217 {0x4B, 0x66, 0},
12218 {0x4C, 0x66, 0},
12219 {0x4D, 0, 0},
12220 {0x4E, 0x4, 0},
12221 {0x4F, 0xc, 0},
12222 {0x50, 0, 0},
12223 {0x51, 0x70, 1},
12224 {0x56, 0x7, 0},
12225 {0x57, 0, 0},
12226 {0x58, 0, 0},
12227 {0x59, 0x88, 1},
12228 {0x5A, 0, 0},
12229 {0x5B, 0x1f, 0},
12230 {0x5C, 0x20, 1},
12231 {0x5D, 0x1, 0},
12232 {0x5E, 0x30, 0},
12233 {0x5F, 0x70, 0},
12234 {0x60, 0, 0},
12235 {0x61, 0, 0},
12236 {0x62, 0x33, 1},
12237 {0x63, 0xf, 1},
12238 {0x64, 0xf, 1},
12239 {0x65, 0, 0},
12240 {0x66, 0x11, 0},
12241 {0x80, 0x3c, 0},
12242 {0x81, 0x1, 1},
12243 {0x82, 0xa, 0},
12244 {0x85, 0, 0},
12245 {0x86, 0x40, 0},
12246 {0x87, 0x40, 0},
12247 {0x88, 0x88, 0},
12248 {0x89, 0x10, 0},
12249 {0x8A, 0xf0, 0},
12250 {0x8B, 0x10, 0},
12251 {0x8C, 0xf0, 0},
12252 {0x8F, 0x10, 0},
12253 {0x90, 0x55, 0},
12254 {0x91, 0x3f, 1},
12255 {0x92, 0x36, 1},
12256 {0x93, 0, 0},
12257 {0x94, 0, 0},
12258 {0x95, 0, 0},
12259 {0x96, 0x87, 0},
12260 {0x97, 0x11, 0},
12261 {0x98, 0, 0},
12262 {0x99, 0x33, 0},
12263 {0x9A, 0x88, 0},
12264 {0xA1, 0x20, 1},
12265 {0xA2, 0x3f, 0},
12266 {0xA3, 0x44, 0},
12267 {0xA4, 0x8c, 0},
12268 {0xA5, 0x6c, 0},
12269 {0xA6, 0x22, 0},
12270 {0xA7, 0xbe, 0},
12271 {0xA8, 0x55, 0},
12272 {0xAA, 0xc, 0},
12273 {0xAB, 0xaa, 0},
12274 {0xAC, 0x2, 0},
12275 {0xAD, 0, 0},
12276 {0xAE, 0x10, 0},
12277 {0xAF, 0x1, 0},
12278 {0xB0, 0, 0},
12279 {0xB1, 0, 0},
12280 {0xB2, 0x80, 0},
12281 {0xB3, 0x60, 0},
12282 {0xB4, 0x44, 0},
12283 {0xB5, 0x55, 0},
12284 {0xB6, 0x1, 0},
12285 {0xB7, 0x55, 0},
12286 {0xB8, 0x1, 0},
12287 {0xB9, 0x5, 0},
12288 {0xBA, 0x55, 0},
12289 {0xBB, 0x55, 0},
12290 {0xC3, 0, 0},
12291 {0xC4, 0, 0},
12292 {0xC5, 0, 0},
12293 {0xC6, 0, 0},
12294 {0xC7, 0, 0},
12295 {0xC8, 0, 0},
12296 {0xC9, 0x1, 1},
12297 {0xCA, 0, 0},
12298 {0xCB, 0, 0},
12299 {0xCD, 0, 0},
12300 {0xCE, 0x5e, 0},
12301 {0xCF, 0xc, 0},
12302 {0xD0, 0xc, 0},
12303 {0xD1, 0xc, 0},
12304 {0xD2, 0, 0},
12305 {0xD3, 0x2b, 0},
12306 {0xD4, 0xc, 0},
12307 {0xD5, 0, 0},
12308 {0xD6, 0x70, 1},
12309 {0xDB, 0x7, 0},
12310 {0xDC, 0, 0},
12311 {0xDD, 0, 0},
12312 {0xDE, 0x88, 1},
12313 {0xDF, 0, 0},
12314 {0xE0, 0x1f, 0},
12315 {0xE1, 0x20, 1},
12316 {0xE2, 0x1, 0},
12317 {0xE3, 0x30, 0},
12318 {0xE4, 0x70, 0},
12319 {0xE5, 0, 0},
12320 {0xE6, 0, 0},
12321 {0xE7, 0x33, 0},
12322 {0xE8, 0xf, 1},
12323 {0xE9, 0xf, 1},
12324 {0xEA, 0, 0},
12325 {0xEB, 0x11, 0},
12326 {0x105, 0x3c, 0},
12327 {0x106, 0x1, 1},
12328 {0x107, 0xa, 0},
12329 {0x10A, 0, 0},
12330 {0x10B, 0x40, 0},
12331 {0x10C, 0x40, 0},
12332 {0x10D, 0x88, 0},
12333 {0x10E, 0x10, 0},
12334 {0x10F, 0xf0, 0},
12335 {0x110, 0x10, 0},
12336 {0x111, 0xf0, 0},
12337 {0x114, 0x10, 0},
12338 {0x115, 0x55, 0},
12339 {0x116, 0x3f, 1},
12340 {0x117, 0x36, 1},
12341 {0x118, 0, 0},
12342 {0x119, 0, 0},
12343 {0x11A, 0, 0},
12344 {0x11B, 0x87, 0},
12345 {0x11C, 0x11, 0},
12346 {0x11D, 0, 0},
12347 {0x11E, 0x33, 0},
12348 {0x11F, 0x88, 0},
12349 {0x126, 0x20, 1},
12350 {0x127, 0x3f, 0},
12351 {0x128, 0x44, 0},
12352 {0x129, 0x8c, 0},
12353 {0x12A, 0x6c, 0},
12354 {0x12B, 0x22, 0},
12355 {0x12C, 0xbe, 0},
12356 {0x12D, 0x55, 0},
12357 {0x12F, 0xc, 0},
12358 {0x130, 0xaa, 0},
12359 {0x131, 0x2, 0},
12360 {0x132, 0, 0},
12361 {0x133, 0x10, 0},
12362 {0x134, 0x1, 0},
12363 {0x135, 0, 0},
12364 {0x136, 0, 0},
12365 {0x137, 0x80, 0},
12366 {0x138, 0x60, 0},
12367 {0x139, 0x44, 0},
12368 {0x13A, 0x55, 0},
12369 {0x13B, 0x1, 0},
12370 {0x13C, 0x55, 0},
12371 {0x13D, 0x1, 0},
12372 {0x13E, 0x5, 0},
12373 {0x13F, 0x55, 0},
12374 {0x140, 0x55, 0},
12375 {0x148, 0, 0},
12376 {0x149, 0, 0},
12377 {0x14A, 0, 0},
12378 {0x14B, 0, 0},
12379 {0x14C, 0, 0},
12380 {0x14D, 0, 0},
12381 {0x14E, 0x1, 1},
12382 {0x14F, 0, 0},
12383 {0x150, 0, 0},
12384 {0x154, 0xc, 0},
12385 {0x155, 0xc, 0},
12386 {0x156, 0xc, 0},
12387 {0x157, 0, 0},
12388 {0x158, 0x2b, 0},
12389 {0x159, 0x84, 0},
12390 {0x15A, 0x15, 0},
12391 {0x15B, 0xf, 0},
12392 {0x15C, 0, 0},
12393 {0x15D, 0, 0},
12394 {0x15E, 0, 1},
12395 {0x15F, 0, 1},
12396 {0x160, 0, 1},
12397 {0x161, 0, 1},
12398 {0x162, 0, 1},
12399 {0x163, 0, 1},
12400 {0x164, 0, 0},
12401 {0x165, 0, 0},
12402 {0x166, 0, 0},
12403 {0x167, 0, 0},
12404 {0x168, 0, 0},
12405 {0x169, 0, 0},
12406 {0x16A, 0, 1},
12407 {0x16B, 0, 1},
12408 {0x16C, 0, 1},
12409 {0x16D, 0, 0},
12410 {0x170, 0, 0},
12411 {0x171, 0x77, 0},
12412 {0x172, 0x77, 0},
12413 {0x173, 0x77, 0},
12414 {0x174, 0x77, 0},
12415 {0x175, 0, 0},
12416 {0x176, 0x3, 0},
12417 {0x177, 0x37, 0},
12418 {0x178, 0x3, 0},
12419 {0x179, 0, 0},
12420 {0x17B, 0x21, 0},
12421 {0x17C, 0, 0},
12422 {0x17D, 0xaa, 0},
12423 {0x17E, 0, 0},
12424 {0x190, 0, 0},
12425 {0x191, 0x77, 0},
12426 {0x192, 0x77, 0},
12427 {0x193, 0x77, 0},
12428 {0x194, 0x77, 0},
12429 {0x195, 0, 0},
12430 {0x196, 0x3, 0},
12431 {0x197, 0x37, 0},
12432 {0x198, 0x3, 0},
12433 {0x199, 0, 0},
12434 {0x19B, 0x21, 0},
12435 {0x19C, 0, 0},
12436 {0x19D, 0xaa, 0},
12437 {0x19E, 0, 0},
12438 {0x1A1, 0x2, 0},
12439 {0x1A2, 0xf, 0},
12440 {0x1A3, 0xf, 0},
12441 {0x1A4, 0, 1},
12442 {0x1A5, 0, 1},
12443 {0x1A6, 0, 1},
12444 {0x1A7, 0x2, 0},
12445 {0x1A8, 0xf, 0},
12446 {0x1A9, 0xf, 0},
12447 {0x1AA, 0, 1},
12448 {0x1AB, 0, 1},
12449 {0x1AC, 0, 1},
12450 {0x1AD, 0x84, 0},
12451 {0x1AE, 0x60, 0},
12452 {0x1AF, 0x47, 0},
12453 {0x1B0, 0x47, 0},
12454 {0x1B1, 0, 0},
12455 {0x1B2, 0, 0},
12456 {0x1B3, 0, 0},
12457 {0x1B4, 0, 0},
12458 {0x1B5, 0, 0},
12459 {0x1B6, 0, 0},
12460 {0x1B7, 0xc, 1},
12461 {0x1B8, 0, 0},
12462 {0x1B9, 0, 0},
12463 {0x1BA, 0, 0},
12464 {0x1BB, 0, 0},
12465 {0x1BC, 0, 0},
12466 {0x1BD, 0, 0},
12467 {0x1BE, 0, 0},
12468 {0x1BF, 0, 0},
12469 {0x1C0, 0, 0},
12470 {0x1C1, 0x1, 1},
12471 {0x1C2, 0x80, 1},
12472 {0x1C3, 0, 0},
12473 {0x1C4, 0, 0},
12474 {0x1C5, 0, 0},
12475 {0x1C6, 0, 0},
12476 {0x1C7, 0, 0},
12477 {0x1C8, 0, 0},
12478 {0x1C9, 0, 0},
12479 {0x1CA, 0, 0},
12480 {0xFFFF, 0, 0}
12481};
12482
12483static struct radio_20xx_regs regs_2057_rev7[] = {
12484 {0x00, 0, 1},
12485 {0x01, 0x57, 1},
12486 {0x02, 0x20, 1},
12487 {0x03, 0x1f, 0},
12488 {0x04, 0x4, 0},
12489 {0x05, 0x2, 0},
12490 {0x06, 0x1, 0},
12491 {0x07, 0x1, 0},
12492 {0x08, 0x1, 0},
12493 {0x09, 0x69, 0},
12494 {0x0A, 0x66, 0},
12495 {0x0B, 0x6, 0},
12496 {0x0C, 0x18, 0},
12497 {0x0D, 0x3, 0},
12498 {0x0E, 0x20, 0},
12499 {0x0F, 0x20, 0},
12500 {0x10, 0, 0},
12501 {0x11, 0x7c, 0},
12502 {0x12, 0x42, 0},
12503 {0x13, 0xbd, 0},
12504 {0x14, 0x7, 0},
12505 {0x15, 0x87, 0},
12506 {0x16, 0x8, 0},
12507 {0x17, 0x17, 0},
12508 {0x18, 0x7, 0},
12509 {0x19, 0, 0},
12510 {0x1A, 0x2, 0},
12511 {0x1B, 0x13, 0},
12512 {0x1C, 0x3e, 0},
12513 {0x1D, 0x3e, 0},
12514 {0x1E, 0x96, 0},
12515 {0x1F, 0x4, 0},
12516 {0x20, 0, 0},
12517 {0x21, 0, 0},
12518 {0x22, 0x17, 0},
12519 {0x23, 0x6, 0},
12520 {0x24, 0x1, 0},
12521 {0x25, 0x6, 0},
12522 {0x26, 0x4, 0},
12523 {0x27, 0xd, 0},
12524 {0x28, 0xd, 0},
12525 {0x29, 0x30, 0},
12526 {0x2A, 0x32, 0},
12527 {0x2B, 0x8, 0},
12528 {0x2C, 0x1c, 0},
12529 {0x2D, 0x2, 0},
12530 {0x2E, 0x4, 0},
12531 {0x2F, 0x7f, 0},
12532 {0x30, 0x27, 0},
12533 {0x31, 0, 1},
12534 {0x32, 0, 1},
12535 {0x33, 0, 1},
12536 {0x34, 0, 0},
12537 {0x35, 0x20, 0},
12538 {0x36, 0x18, 0},
12539 {0x37, 0x7, 0},
12540 {0x38, 0x66, 0},
12541 {0x39, 0x66, 0},
12542 {0x3A, 0x66, 0},
12543 {0x3B, 0x66, 0},
12544 {0x3C, 0xff, 0},
12545 {0x3D, 0xff, 0},
12546 {0x3E, 0xff, 0},
12547 {0x3F, 0xff, 0},
12548 {0x40, 0x16, 0},
12549 {0x41, 0x7, 0},
12550 {0x42, 0x19, 0},
12551 {0x43, 0x7, 0},
12552 {0x44, 0x6, 0},
12553 {0x45, 0x3, 0},
12554 {0x46, 0x1, 0},
12555 {0x47, 0x7, 0},
12556 {0x48, 0x33, 0},
12557 {0x49, 0x5, 0},
12558 {0x4A, 0x77, 0},
12559 {0x4B, 0x66, 0},
12560 {0x4C, 0x66, 0},
12561 {0x4D, 0, 0},
12562 {0x4E, 0x4, 0},
12563 {0x4F, 0xc, 0},
12564 {0x50, 0, 0},
12565 {0x51, 0x70, 1},
12566 {0x56, 0x7, 0},
12567 {0x57, 0, 0},
12568 {0x58, 0, 0},
12569 {0x59, 0x88, 1},
12570 {0x5A, 0, 0},
12571 {0x5B, 0x1f, 0},
12572 {0x5C, 0x20, 1},
12573 {0x5D, 0x1, 0},
12574 {0x5E, 0x30, 0},
12575 {0x5F, 0x70, 0},
12576 {0x60, 0, 0},
12577 {0x61, 0, 0},
12578 {0x62, 0x33, 1},
12579 {0x63, 0xf, 1},
12580 {0x64, 0x13, 1},
12581 {0x65, 0, 0},
12582 {0x66, 0xee, 1},
12583 {0x69, 0, 0},
12584 {0x6A, 0x7e, 0},
12585 {0x6B, 0x3f, 0},
12586 {0x6C, 0x7f, 0},
12587 {0x6D, 0x78, 0},
12588 {0x6E, 0x58, 1},
12589 {0x6F, 0x88, 0},
12590 {0x70, 0x8, 0},
12591 {0x71, 0xf, 0},
12592 {0x72, 0xbc, 0},
12593 {0x73, 0x8, 0},
12594 {0x74, 0x60, 0},
12595 {0x75, 0x13, 1},
12596 {0x76, 0x70, 0},
12597 {0x77, 0, 0},
12598 {0x78, 0, 0},
12599 {0x79, 0, 0},
12600 {0x7A, 0x33, 0},
12601 {0x7B, 0x13, 1},
12602 {0x7C, 0x14, 1},
12603 {0x7D, 0xee, 1},
12604 {0x80, 0x3c, 0},
12605 {0x81, 0x1, 1},
12606 {0x82, 0xa, 0},
12607 {0x83, 0x9d, 0},
12608 {0x84, 0xa, 0},
12609 {0x85, 0, 0},
12610 {0x86, 0x40, 0},
12611 {0x87, 0x40, 0},
12612 {0x88, 0x88, 0},
12613 {0x89, 0x10, 0},
12614 {0x8A, 0xf0, 0},
12615 {0x8B, 0x10, 0},
12616 {0x8C, 0xf0, 0},
12617 {0x8D, 0, 0},
12618 {0x8E, 0, 0},
12619 {0x8F, 0x10, 0},
12620 {0x90, 0x55, 0},
12621 {0x91, 0x3f, 1},
12622 {0x92, 0x36, 1},
12623 {0x93, 0, 0},
12624 {0x94, 0, 0},
12625 {0x95, 0, 0},
12626 {0x96, 0x87, 0},
12627 {0x97, 0x11, 0},
12628 {0x98, 0, 0},
12629 {0x99, 0x33, 0},
12630 {0x9A, 0x88, 0},
12631 {0x9B, 0, 0},
12632 {0x9C, 0x87, 0},
12633 {0x9D, 0x11, 0},
12634 {0x9E, 0, 0},
12635 {0x9F, 0x33, 0},
12636 {0xA0, 0x88, 0},
12637 {0xA1, 0x20, 1},
12638 {0xA2, 0x3f, 0},
12639 {0xA3, 0x44, 0},
12640 {0xA4, 0x8c, 0},
12641 {0xA5, 0x6c, 0},
12642 {0xA6, 0x22, 0},
12643 {0xA7, 0xbe, 0},
12644 {0xA8, 0x55, 0},
12645 {0xAA, 0xc, 0},
12646 {0xAB, 0xaa, 0},
12647 {0xAC, 0x2, 0},
12648 {0xAD, 0, 0},
12649 {0xAE, 0x10, 0},
12650 {0xAF, 0x1, 0},
12651 {0xB0, 0, 0},
12652 {0xB1, 0, 0},
12653 {0xB2, 0x80, 0},
12654 {0xB3, 0x60, 0},
12655 {0xB4, 0x44, 0},
12656 {0xB5, 0x55, 0},
12657 {0xB6, 0x1, 0},
12658 {0xB7, 0x55, 0},
12659 {0xB8, 0x1, 0},
12660 {0xB9, 0x5, 0},
12661 {0xBA, 0x55, 0},
12662 {0xBB, 0x55, 0},
12663 {0xC1, 0, 0},
12664 {0xC2, 0, 0},
12665 {0xC3, 0, 0},
12666 {0xC4, 0, 0},
12667 {0xC5, 0, 0},
12668 {0xC6, 0, 0},
12669 {0xC7, 0, 0},
12670 {0xC8, 0, 0},
12671 {0xC9, 0, 0},
12672 {0xCA, 0, 0},
12673 {0xCB, 0, 0},
12674 {0xCC, 0, 0},
12675 {0xCD, 0, 0},
12676 {0xCE, 0x5e, 0},
12677 {0xCF, 0xc, 0},
12678 {0xD0, 0xc, 0},
12679 {0xD1, 0xc, 0},
12680 {0xD2, 0, 0},
12681 {0xD3, 0x2b, 0},
12682 {0xD4, 0xc, 0},
12683 {0xD5, 0, 0},
12684 {0xD6, 0x70, 1},
12685 {0xDB, 0x7, 0},
12686 {0xDC, 0, 0},
12687 {0xDD, 0, 0},
12688 {0xDE, 0x88, 1},
12689 {0xDF, 0, 0},
12690 {0xE0, 0x1f, 0},
12691 {0xE1, 0x20, 1},
12692 {0xE2, 0x1, 0},
12693 {0xE3, 0x30, 0},
12694 {0xE4, 0x70, 0},
12695 {0xE5, 0, 0},
12696 {0xE6, 0, 0},
12697 {0xE7, 0x33, 0},
12698 {0xE8, 0xf, 1},
12699 {0xE9, 0x13, 1},
12700 {0xEA, 0, 0},
12701 {0xEB, 0xee, 1},
12702 {0xEE, 0, 0},
12703 {0xEF, 0x7e, 0},
12704 {0xF0, 0x3f, 0},
12705 {0xF1, 0x7f, 0},
12706 {0xF2, 0x78, 0},
12707 {0xF3, 0x58, 1},
12708 {0xF4, 0x88, 0},
12709 {0xF5, 0x8, 0},
12710 {0xF6, 0xf, 0},
12711 {0xF7, 0xbc, 0},
12712 {0xF8, 0x8, 0},
12713 {0xF9, 0x60, 0},
12714 {0xFA, 0x13, 1},
12715 {0xFB, 0x70, 0},
12716 {0xFC, 0, 0},
12717 {0xFD, 0, 0},
12718 {0xFE, 0, 0},
12719 {0xFF, 0x33, 0},
12720 {0x100, 0x13, 1},
12721 {0x101, 0x14, 1},
12722 {0x102, 0xee, 1},
12723 {0x105, 0x3c, 0},
12724 {0x106, 0x1, 1},
12725 {0x107, 0xa, 0},
12726 {0x108, 0x9d, 0},
12727 {0x109, 0xa, 0},
12728 {0x10A, 0, 0},
12729 {0x10B, 0x40, 0},
12730 {0x10C, 0x40, 0},
12731 {0x10D, 0x88, 0},
12732 {0x10E, 0x10, 0},
12733 {0x10F, 0xf0, 0},
12734 {0x110, 0x10, 0},
12735 {0x111, 0xf0, 0},
12736 {0x112, 0, 0},
12737 {0x113, 0, 0},
12738 {0x114, 0x10, 0},
12739 {0x115, 0x55, 0},
12740 {0x116, 0x3f, 1},
12741 {0x117, 0x36, 1},
12742 {0x118, 0, 0},
12743 {0x119, 0, 0},
12744 {0x11A, 0, 0},
12745 {0x11B, 0x87, 0},
12746 {0x11C, 0x11, 0},
12747 {0x11D, 0, 0},
12748 {0x11E, 0x33, 0},
12749 {0x11F, 0x88, 0},
12750 {0x120, 0, 0},
12751 {0x121, 0x87, 0},
12752 {0x122, 0x11, 0},
12753 {0x123, 0, 0},
12754 {0x124, 0x33, 0},
12755 {0x125, 0x88, 0},
12756 {0x126, 0x20, 1},
12757 {0x127, 0x3f, 0},
12758 {0x128, 0x44, 0},
12759 {0x129, 0x8c, 0},
12760 {0x12A, 0x6c, 0},
12761 {0x12B, 0x22, 0},
12762 {0x12C, 0xbe, 0},
12763 {0x12D, 0x55, 0},
12764 {0x12F, 0xc, 0},
12765 {0x130, 0xaa, 0},
12766 {0x131, 0x2, 0},
12767 {0x132, 0, 0},
12768 {0x133, 0x10, 0},
12769 {0x134, 0x1, 0},
12770 {0x135, 0, 0},
12771 {0x136, 0, 0},
12772 {0x137, 0x80, 0},
12773 {0x138, 0x60, 0},
12774 {0x139, 0x44, 0},
12775 {0x13A, 0x55, 0},
12776 {0x13B, 0x1, 0},
12777 {0x13C, 0x55, 0},
12778 {0x13D, 0x1, 0},
12779 {0x13E, 0x5, 0},
12780 {0x13F, 0x55, 0},
12781 {0x140, 0x55, 0},
12782 {0x146, 0, 0},
12783 {0x147, 0, 0},
12784 {0x148, 0, 0},
12785 {0x149, 0, 0},
12786 {0x14A, 0, 0},
12787 {0x14B, 0, 0},
12788 {0x14C, 0, 0},
12789 {0x14D, 0, 0},
12790 {0x14E, 0, 0},
12791 {0x14F, 0, 0},
12792 {0x150, 0, 0},
12793 {0x151, 0, 0},
12794 {0x154, 0xc, 0},
12795 {0x155, 0xc, 0},
12796 {0x156, 0xc, 0},
12797 {0x157, 0, 0},
12798 {0x158, 0x2b, 0},
12799 {0x159, 0x84, 0},
12800 {0x15A, 0x15, 0},
12801 {0x15B, 0xf, 0},
12802 {0x15C, 0, 0},
12803 {0x15D, 0, 0},
12804 {0x15E, 0, 1},
12805 {0x15F, 0, 1},
12806 {0x160, 0, 1},
12807 {0x161, 0, 1},
12808 {0x162, 0, 1},
12809 {0x163, 0, 1},
12810 {0x164, 0, 0},
12811 {0x165, 0, 0},
12812 {0x166, 0, 0},
12813 {0x167, 0, 0},
12814 {0x168, 0, 0},
12815 {0x169, 0, 0},
12816 {0x16A, 0, 1},
12817 {0x16B, 0, 1},
12818 {0x16C, 0, 1},
12819 {0x16D, 0, 0},
12820 {0x170, 0, 0},
12821 {0x171, 0x77, 0},
12822 {0x172, 0x77, 0},
12823 {0x173, 0x77, 0},
12824 {0x174, 0x77, 0},
12825 {0x175, 0, 0},
12826 {0x176, 0x3, 0},
12827 {0x177, 0x37, 0},
12828 {0x178, 0x3, 0},
12829 {0x179, 0, 0},
12830 {0x17A, 0x21, 0},
12831 {0x17B, 0x21, 0},
12832 {0x17C, 0, 0},
12833 {0x17D, 0xaa, 0},
12834 {0x17E, 0, 0},
12835 {0x17F, 0xaa, 0},
12836 {0x180, 0, 0},
12837 {0x190, 0, 0},
12838 {0x191, 0x77, 0},
12839 {0x192, 0x77, 0},
12840 {0x193, 0x77, 0},
12841 {0x194, 0x77, 0},
12842 {0x195, 0, 0},
12843 {0x196, 0x3, 0},
12844 {0x197, 0x37, 0},
12845 {0x198, 0x3, 0},
12846 {0x199, 0, 0},
12847 {0x19A, 0x21, 0},
12848 {0x19B, 0x21, 0},
12849 {0x19C, 0, 0},
12850 {0x19D, 0xaa, 0},
12851 {0x19E, 0, 0},
12852 {0x19F, 0xaa, 0},
12853 {0x1A0, 0, 0},
12854 {0x1A1, 0x2, 0},
12855 {0x1A2, 0xf, 0},
12856 {0x1A3, 0xf, 0},
12857 {0x1A4, 0, 1},
12858 {0x1A5, 0, 1},
12859 {0x1A6, 0, 1},
12860 {0x1A7, 0x2, 0},
12861 {0x1A8, 0xf, 0},
12862 {0x1A9, 0xf, 0},
12863 {0x1AA, 0, 1},
12864 {0x1AB, 0, 1},
12865 {0x1AC, 0, 1},
12866 {0x1AD, 0x84, 0},
12867 {0x1AE, 0x60, 0},
12868 {0x1AF, 0x47, 0},
12869 {0x1B0, 0x47, 0},
12870 {0x1B1, 0, 0},
12871 {0x1B2, 0, 0},
12872 {0x1B3, 0, 0},
12873 {0x1B4, 0, 0},
12874 {0x1B5, 0, 0},
12875 {0x1B6, 0, 0},
12876 {0x1B7, 0x5, 1},
12877 {0x1B8, 0, 0},
12878 {0x1B9, 0, 0},
12879 {0x1BA, 0, 0},
12880 {0x1BB, 0, 0},
12881 {0x1BC, 0, 0},
12882 {0x1BD, 0, 0},
12883 {0x1BE, 0, 0},
12884 {0x1BF, 0, 0},
12885 {0x1C0, 0, 0},
12886 {0x1C1, 0, 0},
12887 {0x1C2, 0xa0, 1},
12888 {0x1C3, 0, 0},
12889 {0x1C4, 0, 0},
12890 {0x1C5, 0, 0},
12891 {0x1C6, 0, 0},
12892 {0x1C7, 0, 0},
12893 {0x1C8, 0, 0},
12894 {0x1C9, 0, 0},
12895 {0x1CA, 0, 0},
12896 {0xFFFF, 0, 0}
12897};
12898
12899static struct radio_20xx_regs regs_2057_rev8[] = {
12900 {0x00, 0x8, 1},
12901 {0x01, 0x57, 1},
12902 {0x02, 0x20, 1},
12903 {0x03, 0x1f, 0},
12904 {0x04, 0x4, 0},
12905 {0x05, 0x2, 0},
12906 {0x06, 0x1, 0},
12907 {0x07, 0x1, 0},
12908 {0x08, 0x1, 0},
12909 {0x09, 0x69, 0},
12910 {0x0A, 0x66, 0},
12911 {0x0B, 0x6, 0},
12912 {0x0C, 0x18, 0},
12913 {0x0D, 0x3, 0},
12914 {0x0E, 0x20, 0},
12915 {0x0F, 0x20, 0},
12916 {0x10, 0, 0},
12917 {0x11, 0x7c, 0},
12918 {0x12, 0x42, 0},
12919 {0x13, 0xbd, 0},
12920 {0x14, 0x7, 0},
12921 {0x15, 0x87, 0},
12922 {0x16, 0x8, 0},
12923 {0x17, 0x17, 0},
12924 {0x18, 0x7, 0},
12925 {0x19, 0, 0},
12926 {0x1A, 0x2, 0},
12927 {0x1B, 0x13, 0},
12928 {0x1C, 0x3e, 0},
12929 {0x1D, 0x3e, 0},
12930 {0x1E, 0x96, 0},
12931 {0x1F, 0x4, 0},
12932 {0x20, 0, 0},
12933 {0x21, 0, 0},
12934 {0x22, 0x17, 0},
12935 {0x23, 0x6, 0},
12936 {0x24, 0x1, 0},
12937 {0x25, 0x6, 0},
12938 {0x26, 0x4, 0},
12939 {0x27, 0xd, 0},
12940 {0x28, 0xd, 0},
12941 {0x29, 0x30, 0},
12942 {0x2A, 0x32, 0},
12943 {0x2B, 0x8, 0},
12944 {0x2C, 0x1c, 0},
12945 {0x2D, 0x2, 0},
12946 {0x2E, 0x4, 0},
12947 {0x2F, 0x7f, 0},
12948 {0x30, 0x27, 0},
12949 {0x31, 0, 1},
12950 {0x32, 0, 1},
12951 {0x33, 0, 1},
12952 {0x34, 0, 0},
12953 {0x35, 0x20, 0},
12954 {0x36, 0x18, 0},
12955 {0x37, 0x7, 0},
12956 {0x38, 0x66, 0},
12957 {0x39, 0x66, 0},
12958 {0x3A, 0x66, 0},
12959 {0x3B, 0x66, 0},
12960 {0x3C, 0xff, 0},
12961 {0x3D, 0xff, 0},
12962 {0x3E, 0xff, 0},
12963 {0x3F, 0xff, 0},
12964 {0x40, 0x16, 0},
12965 {0x41, 0x7, 0},
12966 {0x42, 0x19, 0},
12967 {0x43, 0x7, 0},
12968 {0x44, 0x6, 0},
12969 {0x45, 0x3, 0},
12970 {0x46, 0x1, 0},
12971 {0x47, 0x7, 0},
12972 {0x48, 0x33, 0},
12973 {0x49, 0x5, 0},
12974 {0x4A, 0x77, 0},
12975 {0x4B, 0x66, 0},
12976 {0x4C, 0x66, 0},
12977 {0x4D, 0, 0},
12978 {0x4E, 0x4, 0},
12979 {0x4F, 0xc, 0},
12980 {0x50, 0, 0},
12981 {0x51, 0x70, 1},
12982 {0x56, 0x7, 0},
12983 {0x57, 0, 0},
12984 {0x58, 0, 0},
12985 {0x59, 0x88, 1},
12986 {0x5A, 0, 0},
12987 {0x5B, 0x1f, 0},
12988 {0x5C, 0x20, 1},
12989 {0x5D, 0x1, 0},
12990 {0x5E, 0x30, 0},
12991 {0x5F, 0x70, 0},
12992 {0x60, 0, 0},
12993 {0x61, 0, 0},
12994 {0x62, 0x33, 1},
12995 {0x63, 0xf, 1},
12996 {0x64, 0xf, 1},
12997 {0x65, 0, 0},
12998 {0x66, 0x11, 0},
12999 {0x69, 0, 0},
13000 {0x6A, 0x7e, 0},
13001 {0x6B, 0x3f, 0},
13002 {0x6C, 0x7f, 0},
13003 {0x6D, 0x78, 0},
13004 {0x6E, 0x58, 1},
13005 {0x6F, 0x88, 0},
13006 {0x70, 0x8, 0},
13007 {0x71, 0xf, 0},
13008 {0x72, 0xbc, 0},
13009 {0x73, 0x8, 0},
13010 {0x74, 0x60, 0},
13011 {0x75, 0x13, 1},
13012 {0x76, 0x70, 0},
13013 {0x77, 0, 0},
13014 {0x78, 0, 0},
13015 {0x79, 0, 0},
13016 {0x7A, 0x33, 0},
13017 {0x7B, 0x13, 1},
13018 {0x7C, 0xf, 1},
13019 {0x7D, 0xee, 1},
13020 {0x80, 0x3c, 0},
13021 {0x81, 0x1, 1},
13022 {0x82, 0xa, 0},
13023 {0x83, 0x9d, 0},
13024 {0x84, 0xa, 0},
13025 {0x85, 0, 0},
13026 {0x86, 0x40, 0},
13027 {0x87, 0x40, 0},
13028 {0x88, 0x88, 0},
13029 {0x89, 0x10, 0},
13030 {0x8A, 0xf0, 0},
13031 {0x8B, 0x10, 0},
13032 {0x8C, 0xf0, 0},
13033 {0x8D, 0, 0},
13034 {0x8E, 0, 0},
13035 {0x8F, 0x10, 0},
13036 {0x90, 0x55, 0},
13037 {0x91, 0x3f, 1},
13038 {0x92, 0x36, 1},
13039 {0x93, 0, 0},
13040 {0x94, 0, 0},
13041 {0x95, 0, 0},
13042 {0x96, 0x87, 0},
13043 {0x97, 0x11, 0},
13044 {0x98, 0, 0},
13045 {0x99, 0x33, 0},
13046 {0x9A, 0x88, 0},
13047 {0x9B, 0, 0},
13048 {0x9C, 0x87, 0},
13049 {0x9D, 0x11, 0},
13050 {0x9E, 0, 0},
13051 {0x9F, 0x33, 0},
13052 {0xA0, 0x88, 0},
13053 {0xA1, 0x20, 1},
13054 {0xA2, 0x3f, 0},
13055 {0xA3, 0x44, 0},
13056 {0xA4, 0x8c, 0},
13057 {0xA5, 0x6c, 0},
13058 {0xA6, 0x22, 0},
13059 {0xA7, 0xbe, 0},
13060 {0xA8, 0x55, 0},
13061 {0xAA, 0xc, 0},
13062 {0xAB, 0xaa, 0},
13063 {0xAC, 0x2, 0},
13064 {0xAD, 0, 0},
13065 {0xAE, 0x10, 0},
13066 {0xAF, 0x1, 0},
13067 {0xB0, 0, 0},
13068 {0xB1, 0, 0},
13069 {0xB2, 0x80, 0},
13070 {0xB3, 0x60, 0},
13071 {0xB4, 0x44, 0},
13072 {0xB5, 0x55, 0},
13073 {0xB6, 0x1, 0},
13074 {0xB7, 0x55, 0},
13075 {0xB8, 0x1, 0},
13076 {0xB9, 0x5, 0},
13077 {0xBA, 0x55, 0},
13078 {0xBB, 0x55, 0},
13079 {0xC1, 0, 0},
13080 {0xC2, 0, 0},
13081 {0xC3, 0, 0},
13082 {0xC4, 0, 0},
13083 {0xC5, 0, 0},
13084 {0xC6, 0, 0},
13085 {0xC7, 0, 0},
13086 {0xC8, 0, 0},
13087 {0xC9, 0x1, 1},
13088 {0xCA, 0, 0},
13089 {0xCB, 0, 0},
13090 {0xCC, 0, 0},
13091 {0xCD, 0, 0},
13092 {0xCE, 0x5e, 0},
13093 {0xCF, 0xc, 0},
13094 {0xD0, 0xc, 0},
13095 {0xD1, 0xc, 0},
13096 {0xD2, 0, 0},
13097 {0xD3, 0x2b, 0},
13098 {0xD4, 0xc, 0},
13099 {0xD5, 0, 0},
13100 {0xD6, 0x70, 1},
13101 {0xDB, 0x7, 0},
13102 {0xDC, 0, 0},
13103 {0xDD, 0, 0},
13104 {0xDE, 0x88, 1},
13105 {0xDF, 0, 0},
13106 {0xE0, 0x1f, 0},
13107 {0xE1, 0x20, 1},
13108 {0xE2, 0x1, 0},
13109 {0xE3, 0x30, 0},
13110 {0xE4, 0x70, 0},
13111 {0xE5, 0, 0},
13112 {0xE6, 0, 0},
13113 {0xE7, 0x33, 0},
13114 {0xE8, 0xf, 1},
13115 {0xE9, 0xf, 1},
13116 {0xEA, 0, 0},
13117 {0xEB, 0x11, 0},
13118 {0xEE, 0, 0},
13119 {0xEF, 0x7e, 0},
13120 {0xF0, 0x3f, 0},
13121 {0xF1, 0x7f, 0},
13122 {0xF2, 0x78, 0},
13123 {0xF3, 0x58, 1},
13124 {0xF4, 0x88, 0},
13125 {0xF5, 0x8, 0},
13126 {0xF6, 0xf, 0},
13127 {0xF7, 0xbc, 0},
13128 {0xF8, 0x8, 0},
13129 {0xF9, 0x60, 0},
13130 {0xFA, 0x13, 1},
13131 {0xFB, 0x70, 0},
13132 {0xFC, 0, 0},
13133 {0xFD, 0, 0},
13134 {0xFE, 0, 0},
13135 {0xFF, 0x33, 0},
13136 {0x100, 0x13, 1},
13137 {0x101, 0xf, 1},
13138 {0x102, 0xee, 1},
13139 {0x105, 0x3c, 0},
13140 {0x106, 0x1, 1},
13141 {0x107, 0xa, 0},
13142 {0x108, 0x9d, 0},
13143 {0x109, 0xa, 0},
13144 {0x10A, 0, 0},
13145 {0x10B, 0x40, 0},
13146 {0x10C, 0x40, 0},
13147 {0x10D, 0x88, 0},
13148 {0x10E, 0x10, 0},
13149 {0x10F, 0xf0, 0},
13150 {0x110, 0x10, 0},
13151 {0x111, 0xf0, 0},
13152 {0x112, 0, 0},
13153 {0x113, 0, 0},
13154 {0x114, 0x10, 0},
13155 {0x115, 0x55, 0},
13156 {0x116, 0x3f, 1},
13157 {0x117, 0x36, 1},
13158 {0x118, 0, 0},
13159 {0x119, 0, 0},
13160 {0x11A, 0, 0},
13161 {0x11B, 0x87, 0},
13162 {0x11C, 0x11, 0},
13163 {0x11D, 0, 0},
13164 {0x11E, 0x33, 0},
13165 {0x11F, 0x88, 0},
13166 {0x120, 0, 0},
13167 {0x121, 0x87, 0},
13168 {0x122, 0x11, 0},
13169 {0x123, 0, 0},
13170 {0x124, 0x33, 0},
13171 {0x125, 0x88, 0},
13172 {0x126, 0x20, 1},
13173 {0x127, 0x3f, 0},
13174 {0x128, 0x44, 0},
13175 {0x129, 0x8c, 0},
13176 {0x12A, 0x6c, 0},
13177 {0x12B, 0x22, 0},
13178 {0x12C, 0xbe, 0},
13179 {0x12D, 0x55, 0},
13180 {0x12F, 0xc, 0},
13181 {0x130, 0xaa, 0},
13182 {0x131, 0x2, 0},
13183 {0x132, 0, 0},
13184 {0x133, 0x10, 0},
13185 {0x134, 0x1, 0},
13186 {0x135, 0, 0},
13187 {0x136, 0, 0},
13188 {0x137, 0x80, 0},
13189 {0x138, 0x60, 0},
13190 {0x139, 0x44, 0},
13191 {0x13A, 0x55, 0},
13192 {0x13B, 0x1, 0},
13193 {0x13C, 0x55, 0},
13194 {0x13D, 0x1, 0},
13195 {0x13E, 0x5, 0},
13196 {0x13F, 0x55, 0},
13197 {0x140, 0x55, 0},
13198 {0x146, 0, 0},
13199 {0x147, 0, 0},
13200 {0x148, 0, 0},
13201 {0x149, 0, 0},
13202 {0x14A, 0, 0},
13203 {0x14B, 0, 0},
13204 {0x14C, 0, 0},
13205 {0x14D, 0, 0},
13206 {0x14E, 0x1, 1},
13207 {0x14F, 0, 0},
13208 {0x150, 0, 0},
13209 {0x151, 0, 0},
13210 {0x154, 0xc, 0},
13211 {0x155, 0xc, 0},
13212 {0x156, 0xc, 0},
13213 {0x157, 0, 0},
13214 {0x158, 0x2b, 0},
13215 {0x159, 0x84, 0},
13216 {0x15A, 0x15, 0},
13217 {0x15B, 0xf, 0},
13218 {0x15C, 0, 0},
13219 {0x15D, 0, 0},
13220 {0x15E, 0, 1},
13221 {0x15F, 0, 1},
13222 {0x160, 0, 1},
13223 {0x161, 0, 1},
13224 {0x162, 0, 1},
13225 {0x163, 0, 1},
13226 {0x164, 0, 0},
13227 {0x165, 0, 0},
13228 {0x166, 0, 0},
13229 {0x167, 0, 0},
13230 {0x168, 0, 0},
13231 {0x169, 0, 0},
13232 {0x16A, 0, 1},
13233 {0x16B, 0, 1},
13234 {0x16C, 0, 1},
13235 {0x16D, 0, 0},
13236 {0x170, 0, 0},
13237 {0x171, 0x77, 0},
13238 {0x172, 0x77, 0},
13239 {0x173, 0x77, 0},
13240 {0x174, 0x77, 0},
13241 {0x175, 0, 0},
13242 {0x176, 0x3, 0},
13243 {0x177, 0x37, 0},
13244 {0x178, 0x3, 0},
13245 {0x179, 0, 0},
13246 {0x17A, 0x21, 0},
13247 {0x17B, 0x21, 0},
13248 {0x17C, 0, 0},
13249 {0x17D, 0xaa, 0},
13250 {0x17E, 0, 0},
13251 {0x17F, 0xaa, 0},
13252 {0x180, 0, 0},
13253 {0x190, 0, 0},
13254 {0x191, 0x77, 0},
13255 {0x192, 0x77, 0},
13256 {0x193, 0x77, 0},
13257 {0x194, 0x77, 0},
13258 {0x195, 0, 0},
13259 {0x196, 0x3, 0},
13260 {0x197, 0x37, 0},
13261 {0x198, 0x3, 0},
13262 {0x199, 0, 0},
13263 {0x19A, 0x21, 0},
13264 {0x19B, 0x21, 0},
13265 {0x19C, 0, 0},
13266 {0x19D, 0xaa, 0},
13267 {0x19E, 0, 0},
13268 {0x19F, 0xaa, 0},
13269 {0x1A0, 0, 0},
13270 {0x1A1, 0x2, 0},
13271 {0x1A2, 0xf, 0},
13272 {0x1A3, 0xf, 0},
13273 {0x1A4, 0, 1},
13274 {0x1A5, 0, 1},
13275 {0x1A6, 0, 1},
13276 {0x1A7, 0x2, 0},
13277 {0x1A8, 0xf, 0},
13278 {0x1A9, 0xf, 0},
13279 {0x1AA, 0, 1},
13280 {0x1AB, 0, 1},
13281 {0x1AC, 0, 1},
13282 {0x1AD, 0x84, 0},
13283 {0x1AE, 0x60, 0},
13284 {0x1AF, 0x47, 0},
13285 {0x1B0, 0x47, 0},
13286 {0x1B1, 0, 0},
13287 {0x1B2, 0, 0},
13288 {0x1B3, 0, 0},
13289 {0x1B4, 0, 0},
13290 {0x1B5, 0, 0},
13291 {0x1B6, 0, 0},
13292 {0x1B7, 0x5, 1},
13293 {0x1B8, 0, 0},
13294 {0x1B9, 0, 0},
13295 {0x1BA, 0, 0},
13296 {0x1BB, 0, 0},
13297 {0x1BC, 0, 0},
13298 {0x1BD, 0, 0},
13299 {0x1BE, 0, 0},
13300 {0x1BF, 0, 0},
13301 {0x1C0, 0, 0},
13302 {0x1C1, 0, 0},
13303 {0x1C2, 0xa0, 1},
13304 {0x1C3, 0, 0},
13305 {0x1C4, 0, 0},
13306 {0x1C5, 0, 0},
13307 {0x1C6, 0, 0},
13308 {0x1C7, 0, 0},
13309 {0x1C8, 0, 0},
13310 {0x1C9, 0, 0},
13311 {0x1CA, 0, 0},
13312 {0xFFFF, 0, 0}
13313};
13314
13315static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13316
13317static s32 nphy_lnagain_est0[] = { -315, 40370 };
13318static s32 nphy_lnagain_est1[] = { -224, 23242 };
13319
13320static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13321 {
13322 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13323 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13324 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13325 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13326 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13327 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13328 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13329 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13330 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13331 },
13332 {
13333 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13334 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13335 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13336 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13337 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13338 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13339 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13340 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13341 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13342 }
13343};
13344
13345static const u32 nphy_tpc_txgain[] = {
13346 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13347 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13348 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13349 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13350 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13351 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13352 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13353 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13354 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13355 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13356 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13357 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13358 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13359 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13360 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13361 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13362 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13363 0x03902942, 0x03902844, 0x03902842, 0x03902744,
13364 0x03902742, 0x03902644, 0x03902642, 0x03902544,
13365 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13366 0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13367 0x03802842, 0x03802744, 0x03802742, 0x03802644,
13368 0x03802642, 0x03802544, 0x03802542, 0x03802444,
13369 0x03802442, 0x03802344, 0x03802342, 0x03802244,
13370 0x03802242, 0x03802144, 0x03802142, 0x03802044,
13371 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13372 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13373 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13374 0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13375 0x03801842, 0x03801744, 0x03801742, 0x03801644,
13376 0x03801642, 0x03801544, 0x03801542, 0x03801444,
13377 0x03801442, 0x03801344, 0x03801342, 0x00002b00
13378};
13379
13380static const u16 nphy_tpc_loscale[] = {
13381 256, 256, 271, 271, 287, 256, 256, 271,
13382 271, 287, 287, 304, 304, 256, 256, 271,
13383 271, 287, 287, 304, 304, 322, 322, 341,
13384 341, 362, 362, 383, 383, 256, 256, 271,
13385 271, 287, 287, 304, 304, 322, 322, 256,
13386 256, 271, 271, 287, 287, 304, 304, 322,
13387 322, 341, 341, 362, 362, 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, 341,
13392 341, 362, 362, 383, 383, 406, 406, 430,
13393 430, 455, 455, 482, 482, 511, 511, 541,
13394 541, 573, 573, 607, 607, 643, 643, 681,
13395 681, 722, 722, 764, 764, 810, 810, 858,
13396 858, 908, 908, 962, 962, 1019, 1019, 256
13397};
13398
13399static u32 nphy_tpc_txgain_ipa[] = {
13400 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13401 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13402 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13403 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13404 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13405 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13406 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13407 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13408 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13409 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13410 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13411 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13412 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13413 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13414 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13415 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13416 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13417 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13418 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13419 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13420 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13421 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13422 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13423 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13424 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13425 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13426 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13427 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13428 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13429 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13430 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13431 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13432};
13433
13434static u32 nphy_tpc_txgain_ipa_rev5[] = {
13435 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13436 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13437 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13438 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13439 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13440 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13441 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13442 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13443 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13444 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13445 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13446 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13447 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13448 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13449 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13450 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13451 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13452 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13453 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13454 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13455 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13456 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13457 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13458 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13459 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13460 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13461 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13462 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13463 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13464 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13465 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13466 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13467};
13468
13469static u32 nphy_tpc_txgain_ipa_rev6[] = {
13470 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13471 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13472 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13473 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13474 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13475 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13476 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13477 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13478 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13479 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13480 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13481 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13482 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13483 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13484 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13485 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13486 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13487 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13488 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13489 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13490 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13491 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13492 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13493 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13494 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13495 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13496 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13497 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13498 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13499 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13500 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13501 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13502};
13503
13504static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13505 0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13506 0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13507 0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13508 0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13509 0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13510 0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13511 0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13512 0x70470028, 0x70470026, 0x70470024, 0x70470022,
13513 0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13514 0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13515 0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13516 0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13517 0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13518 0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13519 0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13520 0x70170019, 0x70170018, 0x70170016, 0x70170015,
13521 0x70170014, 0x70170013, 0x70170012, 0x70170010,
13522 0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13523 0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13524 0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13525 0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13526 0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13527 0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13528 0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13529 0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13530 0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13531 0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13532 0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13533 0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13534 0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13535 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13536 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13537};
13538
13539static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13540 0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13541 0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13542 0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13543 0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13544 0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13545 0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13546 0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13547 0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13548 0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13549 0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13550 0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13551 0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13552 0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13553 0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13554 0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13555 0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13556 0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13557 0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13558 0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13559 0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13560 0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13561 0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13562 0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13563 0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13564 0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13565 0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13566 0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13567 0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13568 0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13569 0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13570 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13571 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13572};
13573
13574static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13575 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13576 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13577 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13578 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13579 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13580 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13581 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13582 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13583 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13584 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13585 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13586 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13587 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13588 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13589 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13590 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13591 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13592 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13593 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13594 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13595 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13596 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13597 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599 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};
13608
13609static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13610 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13611 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13612 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13613 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13614 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13615 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13616 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13617 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13618 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13619 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13620 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13621 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13622 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13623 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13624 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13625 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13626 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13627 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13628 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13629 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13630 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13631 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13632 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634 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};
13643
13644static u32 nphy_tpc_txgain_ipa_5g[] = {
13645 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13646 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13647 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13648 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13649 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13650 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13651 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13652 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13653 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13654 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13655 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13656 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13657 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13658 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13659 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13660 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13661 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13662 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13663 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13664 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13665 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13666 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13667 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13668 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13669 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13670 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13671 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13672 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13673 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13674 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13675 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13676 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13677};
13678
13679static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13680 0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13681 0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13682 0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13683 0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13684 0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13685 0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13686 0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13687 0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13688 0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13689 0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13690 0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13691 0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13692 0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13693 0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13694 0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13695 0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13696 0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13697 0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13698 0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13699 0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13700 0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13701 0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13702 0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13703 0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13704 0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13705 0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13706 0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13707 0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13708 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13709 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13710 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13711 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13712};
13713
13714static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13715 0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13716 0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13717 0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13718 0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13719 0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13720 0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13721 0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13722 0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13723 0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13724 0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13725 0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13726 0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13727 0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13728 0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13729 0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13730 0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13731 0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13732 0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13733 0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13734 0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13735 0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13736 0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13737 0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13738 0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13739 0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13740 0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13741 0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13742 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13743 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13744 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13745 0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13746 0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13747};
13748
13749static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13750 -114, -108, -98, -91, -84, -78, -70, -62,
13751 -54, -46, -39, -31, -23, -15, -8, 0
13752};
13753
13754static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13755 -100, -95, -89, -83, -77, -70, -63, -56,
13756 -48, -41, -33, -25, -19, -12, -6, 0
13757};
13758
13759static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13760 -159, -113, -86, -72, -62, -54, -48, -43,
13761 -39, -35, -31, -28, -25, -23, -20, -18,
13762 -17, -15, -13, -11, -10, -8, -7, -6,
13763 -5, -4, -3, -3, -2, -1, -1, 0
13764};
13765
13766static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13767 -109, -109, -82, -68, -58, -50, -44, -39,
13768 -35, -31, -28, -26, -23, -21, -19, -17,
13769 -16, -14, -13, -11, -10, -9, -8, -7,
13770 -5, -5, -4, -3, -2, -1, -1, 0
13771};
13772
13773static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13774 -122, -122, -95, -80, -69, -61, -54, -49,
13775 -43, -39, -35, -32, -28, -26, -23, -21,
13776 -18, -16, -15, -13, -11, -10, -8, -7,
13777 -6, -5, -4, -3, -2, -1, -1, 0
13778};
13779
13780static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13781 -107, -101, -92, -85, -78, -71, -62, -55,
13782 -47, -39, -32, -24, -19, -12, -6, 0
13783};
13784
13785static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13786 -110, -104, -95, -88, -81, -74, -66, -58,
13787 -50, -44, -36, -28, -23, -15, -8, 0
13788};
13789
13790static u8 pad_gain_codes_used_2057rev5[] = {
13791 20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13792 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13793};
13794
13795static u8 pad_gain_codes_used_2057rev7[] = {
13796 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13797 5, 4, 3, 2, 1
13798};
13799
13800static u8 pad_all_gain_codes_2057[] = {
13801 31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13802 21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13803 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13804 1, 0
13805};
13806
13807static u8 pga_all_gain_codes_2057[] = {
13808 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13809};
13810
13811static u32 nphy_papd_scaltbl[] = {
13812 0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13813 0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13814 0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13815 0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13816 0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13817 0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13818 0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13819 0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13820 0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13821 0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13822 0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13823 0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13824 0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13825 0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13826 0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13827 0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13828};
13829
13830static u32 nphy_tpc_txgain_rev3[] = {
13831 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13832 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13833 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13834 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13835 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13836 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13837 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13838 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13839 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13840 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13841 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13842 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13843 0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13844 0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13845 0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13846 0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13847 0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13848 0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13849 0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13850 0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13851 0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13852 0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13853 0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13854 0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13855 0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13856 0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13857 0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13858 0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13859 0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13860 0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13861 0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13862 0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13863};
13864
13865static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13866 0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13867 0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13868 0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13869 0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13870 0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13871 0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13872 0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13873 0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13874 0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13875 0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13876 0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13877 0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13878 0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13879 0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13880 0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13881 0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13882 0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13883 0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13884 0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13885 0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13886 0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13887 0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13888 0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13889 0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13890 0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13891 0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13892 0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13893 0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13894 0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13895 0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13896 0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13897 0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13898};
13899
13900static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13901 0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13902 0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13903 0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13904 0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13905 0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13906 0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13907 0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13908 0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13909 0x80290031, 0x80210039, 0x80210036, 0x80210033,
13910 0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13911 0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13912 0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13913 0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13914 0x80110027, 0x80110024, 0x80110022, 0x80110020,
13915 0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13916 0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13917 0x80090029, 0x80090027, 0x80090025, 0x80090023,
13918 0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13919 0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13920 0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13921 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13922 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13924 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13933};
13934
13935static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13936 0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13937 0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13938 0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13939 0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13940 0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13941 0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13942 0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13943 0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13944 0x10290031, 0x10210039, 0x10210036, 0x10210033,
13945 0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13946 0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13947 0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13948 0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13949 0x10110027, 0x10110024, 0x10110022, 0x10110020,
13950 0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13951 0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13952 0x10090029, 0x10090027, 0x10090025, 0x10090023,
13953 0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13954 0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13955 0x10090015, 0x10090013, 0x10090012, 0x10090011,
13956 0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13957 0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13958 0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13959 0x10090008, 0x10090008, 0x10090007, 0x10090007,
13960 0x10090007, 0x10090006, 0x10090006, 0x10090005,
13961 0x10090005, 0x10090005, 0x10090005, 0x10090004,
13962 0x10090004, 0x10090004, 0x10090004, 0x10090003,
13963 0x10090003, 0x10090003, 0x10090003, 0x10090003,
13964 0x10090003, 0x10090002, 0x10090002, 0x10090002,
13965 0x10090002, 0x10090002, 0x10090002, 0x10090002,
13966 0x10090002, 0x10090002, 0x10090001, 0x10090001,
13967 0x10090001, 0x10090001, 0x10090001, 0x10090001
13968};
13969
13970static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13971 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13972 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13973 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13974 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13975 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13976 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13977 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13978 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13979 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13980 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13981 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13982 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13983 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13984 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13985 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13986 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13987 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13988 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13989 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13990 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13991 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13992 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13993 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13994 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13995 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13996 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13997 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13998 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13999 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14000 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14001 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14002 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14003};
14004
14005static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14006 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14007 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14008 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14009 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14010 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14011 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14012 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14013 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14014 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14015 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14016 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14017 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14018 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14019 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14020 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14021 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14022 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14023 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14024 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14025 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14026 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14027 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14028 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14029 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14030 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14031 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14032 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14033 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14034 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14035 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14036 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14037 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14038};
14039
14040static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14041 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14042 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14043 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14044 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14045 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14046 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14047 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14048 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14049 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14050 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14051 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14052 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14053 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14054 0x09620039, 0x09620037, 0x09620035, 0x09620033,
14055 0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14056 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14057 0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14058 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14059 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14060 0x06620039, 0x06620037, 0x06620035, 0x06620033,
14061 0x05620046, 0x05620044, 0x05620042, 0x05620040,
14062 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14063 0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14064 0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14065 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14066 0x03620038, 0x03620037, 0x03620035, 0x03620033,
14067 0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14068 0x02620046, 0x02620044, 0x02620043, 0x02620042,
14069 0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14070 0x01620043, 0x01620042, 0x01620041, 0x01620040,
14071 0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14072 0x0062003b, 0x00620039, 0x00620037, 0x00620035
14073};
14074
14075static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14076 0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14077 0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14078 0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14079 0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14080 0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14081 0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14082 0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14083 0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14084 0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14085 0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14086 0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14087 0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14088 0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14089 0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14090 0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14091 0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14092 0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14093 0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14094 0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14095 0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14096 0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14097 0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14098 0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14099 0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14100 0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14101 0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14102 0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14103 0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14104 0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14105 0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14106 0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14107 0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14108};
14109
14110static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14111static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14112static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14113 0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14114};
14115static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14116 0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14117};
14118
14119bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14120{
14121 struct brcms_phy *pi = (struct brcms_phy *) pih;
14122 u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14123
14124 if (NREV_GE(pi->pubpi.phy_rev, 16))
14125 return true;
14126
14127 phybist0 = read_phy_reg(pi, 0x0e);
14128 phybist1 = read_phy_reg(pi, 0x0f);
14129 phybist2 = read_phy_reg(pi, 0xea);
14130 phybist3 = read_phy_reg(pi, 0xeb);
14131 phybist4 = read_phy_reg(pi, 0x156);
14132
14133 if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14134 (phybist3 == 0) && (phybist4 == 0))
14135 return true;
14136
14137 return false;
14138}
14139
14140static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14141{
14142 u16 addr, val;
14143
14144 val = 0x1e1f;
14145 for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14146 addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14147 write_phy_reg(pi, addr, val);
14148 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14149 val = 0x3e3f;
14150 else
14151 val -= 0x0202;
14152 }
14153
14154 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14155}
14156
14157void
14158wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14159 u32 width, const void *data)
14160{
14161 struct phytbl_info tbl;
14162
14163 tbl.tbl_id = id;
14164 tbl.tbl_len = len;
14165 tbl.tbl_offset = offset;
14166 tbl.tbl_width = width;
14167 tbl.tbl_ptr = data;
14168 wlc_phy_write_table_nphy(pi, &tbl);
14169}
14170
14171void
14172wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14173 u32 width, void *data)
14174{
14175 struct phytbl_info tbl;
14176
14177 tbl.tbl_id = id;
14178 tbl.tbl_len = len;
14179 tbl.tbl_offset = offset;
14180 tbl.tbl_width = width;
14181 tbl.tbl_ptr = data;
14182 wlc_phy_read_table_nphy(pi, &tbl);
14183}
14184
14185static void
14186wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14187{
14188 uint idx;
14189
14190 if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14191 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14192 wlc_phy_write_table_nphy(pi,
14193 &mimophytbl_info_rev16[idx]);
14194 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14195 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14196 wlc_phy_write_table_nphy(pi,
14197 &mimophytbl_info_rev7[idx]);
14198 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14199 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14200 wlc_phy_write_table_nphy(pi,
14201 &mimophytbl_info_rev3[idx]);
14202 } else {
14203 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14204 wlc_phy_write_table_nphy(pi,
14205 &mimophytbl_info_rev0[idx]);
14206 }
14207}
14208
14209static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14210{
14211 uint idx = 0;
14212 u8 antswctrllut;
14213
14214 if (pi->phy_init_por)
14215 wlc_phy_static_table_download_nphy(pi);
14216
14217 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14218
14219 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14220 pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14221 antswctrllut;
14222
14223 switch (antswctrllut) {
14224 case 0:
14225
14226 break;
14227
14228 case 1:
14229
14230 if (pi->aa2g == 7)
14231 wlc_phy_table_write_nphy(
14232 pi,
14233 NPHY_TBL_ID_ANTSWCTRLLUT,
14234 2, 0x21, 8,
14235 &ant_sw_ctrl_tbl_rev8_2o3[0]);
14236 else
14237 wlc_phy_table_write_nphy(
14238 pi,
14239 NPHY_TBL_ID_ANTSWCTRLLUT,
14240 2, 0x21, 8,
14241 &ant_sw_ctrl_tbl_rev8
14242 [0]);
14243
14244 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14245 2, 0x25, 8,
14246 &ant_sw_ctrl_tbl_rev8[2]);
14247 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248 2, 0x29, 8,
14249 &ant_sw_ctrl_tbl_rev8[4]);
14250 break;
14251
14252 case 2:
14253
14254 wlc_phy_table_write_nphy(
14255 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14256 2, 0x1, 8,
14257 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14258 wlc_phy_table_write_nphy(
14259 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14260 2, 0x5, 8,
14261 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14262 wlc_phy_table_write_nphy(
14263 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14264 2, 0x9, 8,
14265 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14266
14267 wlc_phy_table_write_nphy(
14268 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14269 2, 0x21, 8,
14270 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14271 wlc_phy_table_write_nphy(
14272 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14273 2, 0x25, 8,
14274 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14275 wlc_phy_table_write_nphy(
14276 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14277 2, 0x29, 8,
14278 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14279 break;
14280
14281 default:
14282 break;
14283 }
14284
14285 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14286 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14287
14288 if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14289 antswctrllut =
14290 CHSPEC_IS2G(pi->radio_chanspec) ?
14291 pi->srom_fem2g.antswctrllut :
14292 pi->srom_fem5g.antswctrllut;
14293 switch (antswctrllut) {
14294 case 0:
14295 wlc_phy_write_table_nphy(
14296 pi,
14297 &mimophytbl_info_rev3_volatile
14298 [idx]);
14299 break;
14300 case 1:
14301 wlc_phy_write_table_nphy(
14302 pi,
14303 &mimophytbl_info_rev3_volatile1
14304 [idx]);
14305 break;
14306 case 2:
14307 wlc_phy_write_table_nphy(
14308 pi,
14309 &mimophytbl_info_rev3_volatile2
14310 [idx]);
14311 break;
14312 case 3:
14313 wlc_phy_write_table_nphy(
14314 pi,
14315 &mimophytbl_info_rev3_volatile3
14316 [idx]);
14317 break;
14318 default:
14319 break;
14320 }
14321 } else {
14322 wlc_phy_write_table_nphy(
14323 pi,
14324 &mimophytbl_info_rev3_volatile[idx]);
14325 }
14326 }
14327 } else {
14328 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14329 wlc_phy_write_table_nphy(pi,
14330 &mimophytbl_info_rev0_volatile
14331 [idx]);
14332 }
14333}
14334
14335static void
14336wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14337{
14338 write_phy_reg(pi, 0x77, holdoff);
14339 write_phy_reg(pi, 0xb4, delay);
14340}
14341
14342void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14343{
14344 u16 holdoff, delay;
14345
14346 if (rifs) {
14347
14348 holdoff = 0x10;
14349 delay = 0x258;
14350 } else {
14351
14352 holdoff = 0x15;
14353 delay = 0x320;
14354 }
14355
14356 wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14357
14358 if (pi && pi->sh && (pi->sh->_rifs_phy != rifs))
14359 pi->sh->_rifs_phy = rifs;
14360}
14361
14362static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14363{
14364
14365 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14366 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14367 pi->phy_5g_pwrgain = true;
14368 return;
14369 }
14370
14371 pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14372 pi->phy_5g_pwrgain = false;
14373
14374 if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14375 NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14376 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14377 else if ((pi->sh->sromrev >= 4)
14378 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14379 pi->phy_5g_pwrgain = true;
14380}
14381
14382static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14383{
14384 u16 bw40po, cddpo, stbcpo, bwduppo;
14385 uint band_num;
14386 struct phy_shim_info *shim = pi->sh->physhim;
14387
14388 if (pi->sh->sromrev >= 9)
14389 return;
14390
14391 bw40po = (u16) wlapi_getintvar(shim, BRCMS_SROM_BW40PO);
14392 pi->bw402gpo = bw40po & 0xf;
14393 pi->bw405gpo = (bw40po & 0xf0) >> 4;
14394 pi->bw405glpo = (bw40po & 0xf00) >> 8;
14395 pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14396
14397 cddpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_CDDPO);
14398 pi->cdd2gpo = cddpo & 0xf;
14399 pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14400 pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14401 pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14402
14403 stbcpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_STBCPO);
14404 pi->stbc2gpo = stbcpo & 0xf;
14405 pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14406 pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14407 pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14408
14409 bwduppo = (u16) wlapi_getintvar(shim, BRCMS_SROM_BWDUPPO);
14410 pi->bwdup2gpo = bwduppo & 0xf;
14411 pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14412 pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14413 pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14414
14415 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14416 band_num++) {
14417 switch (band_num) {
14418 case 0:
14419
14420 pi->nphy_txpid2g[PHY_CORE_0] =
14421 (u8) wlapi_getintvar(shim,
14422 BRCMS_SROM_TXPID2GA0);
14423 pi->nphy_txpid2g[PHY_CORE_1] =
14424 (u8) wlapi_getintvar(shim,
14425 BRCMS_SROM_TXPID2GA1);
14426 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14427 (s8) wlapi_getintvar(shim,
14428 BRCMS_SROM_MAXP2GA0);
14429 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14430 (s8) wlapi_getintvar(shim,
14431 BRCMS_SROM_MAXP2GA1);
14432 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14433 (s16) wlapi_getintvar(shim,
14434 BRCMS_SROM_PA2GW0A0);
14435 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14436 (s16) wlapi_getintvar(shim,
14437 BRCMS_SROM_PA2GW0A1);
14438 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14439 (s16) wlapi_getintvar(shim,
14440 BRCMS_SROM_PA2GW1A0);
14441 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14442 (s16) wlapi_getintvar(shim,
14443 BRCMS_SROM_PA2GW1A1);
14444 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14445 (s16) wlapi_getintvar(shim,
14446 BRCMS_SROM_PA2GW2A0);
14447 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14448 (s16) wlapi_getintvar(shim,
14449 BRCMS_SROM_PA2GW2A1);
14450 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14451 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA0);
14452 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14453 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA1);
14454
14455 pi->cck2gpo = (u16) wlapi_getintvar(shim,
14456 BRCMS_SROM_CCK2GPO);
14457
14458 pi->ofdm2gpo =
14459 (u32) wlapi_getintvar(shim,
14460 BRCMS_SROM_OFDM2GPO);
14461
14462 pi->mcs2gpo[0] =
14463 (u16) wlapi_getintvar(shim,
14464 BRCMS_SROM_MCS2GPO0);
14465 pi->mcs2gpo[1] =
14466 (u16) wlapi_getintvar(shim,
14467 BRCMS_SROM_MCS2GPO1);
14468 pi->mcs2gpo[2] =
14469 (u16) wlapi_getintvar(shim,
14470 BRCMS_SROM_MCS2GPO2);
14471 pi->mcs2gpo[3] =
14472 (u16) wlapi_getintvar(shim,
14473 BRCMS_SROM_MCS2GPO3);
14474 pi->mcs2gpo[4] =
14475 (u16) wlapi_getintvar(shim,
14476 BRCMS_SROM_MCS2GPO4);
14477 pi->mcs2gpo[5] =
14478 (u16) wlapi_getintvar(shim,
14479 BRCMS_SROM_MCS2GPO5);
14480 pi->mcs2gpo[6] =
14481 (u16) wlapi_getintvar(shim,
14482 BRCMS_SROM_MCS2GPO6);
14483 pi->mcs2gpo[7] =
14484 (u16) wlapi_getintvar(shim,
14485 BRCMS_SROM_MCS2GPO7);
14486 break;
14487 case 1:
14488
14489 pi->nphy_txpid5g[PHY_CORE_0] =
14490 (u8) wlapi_getintvar(shim,
14491 BRCMS_SROM_TXPID5GA0);
14492 pi->nphy_txpid5g[PHY_CORE_1] =
14493 (u8) wlapi_getintvar(shim,
14494 BRCMS_SROM_TXPID5GA1);
14495 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14496 (s8) wlapi_getintvar(shim, BRCMS_SROM_MAXP5GA0);
14497 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14498 (s8) wlapi_getintvar(shim,
14499 BRCMS_SROM_MAXP5GA1);
14500 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14501 (s16) wlapi_getintvar(shim,
14502 BRCMS_SROM_PA5GW0A0);
14503 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14504 (s16) wlapi_getintvar(shim,
14505 BRCMS_SROM_PA5GW0A1);
14506 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14507 (s16) wlapi_getintvar(shim,
14508 BRCMS_SROM_PA5GW1A0);
14509 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14510 (s16) wlapi_getintvar(shim,
14511 BRCMS_SROM_PA5GW1A1);
14512 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14513 (s16) wlapi_getintvar(shim,
14514 BRCMS_SROM_PA5GW2A0);
14515 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14516 (s16) wlapi_getintvar(shim,
14517 BRCMS_SROM_PA5GW2A1);
14518 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14519 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA0);
14520 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14521 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA1);
14522
14523 pi->ofdm5gpo =
14524 (u32) wlapi_getintvar(shim,
14525 BRCMS_SROM_OFDM5GPO);
14526
14527 pi->mcs5gpo[0] =
14528 (u16) wlapi_getintvar(shim,
14529 BRCMS_SROM_MCS5GPO0);
14530 pi->mcs5gpo[1] =
14531 (u16) wlapi_getintvar(shim,
14532 BRCMS_SROM_MCS5GPO1);
14533 pi->mcs5gpo[2] =
14534 (u16) wlapi_getintvar(shim,
14535 BRCMS_SROM_MCS5GPO2);
14536 pi->mcs5gpo[3] =
14537 (u16) wlapi_getintvar(shim,
14538 BRCMS_SROM_MCS5GPO3);
14539 pi->mcs5gpo[4] =
14540 (u16) wlapi_getintvar(shim,
14541 BRCMS_SROM_MCS5GPO4);
14542 pi->mcs5gpo[5] =
14543 (u16) wlapi_getintvar(shim,
14544 BRCMS_SROM_MCS5GPO5);
14545 pi->mcs5gpo[6] =
14546 (u16) wlapi_getintvar(shim,
14547 BRCMS_SROM_MCS5GPO6);
14548 pi->mcs5gpo[7] =
14549 (u16) wlapi_getintvar(shim,
14550 BRCMS_SROM_MCS5GPO7);
14551 break;
14552 case 2:
14553
14554 pi->nphy_txpid5gl[0] =
14555 (u8) wlapi_getintvar(shim,
14556 BRCMS_SROM_TXPID5GLA0);
14557 pi->nphy_txpid5gl[1] =
14558 (u8) wlapi_getintvar(shim,
14559 BRCMS_SROM_TXPID5GLA1);
14560 pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14561 (s8) wlapi_getintvar(shim,
14562 BRCMS_SROM_MAXP5GLA0);
14563 pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14564 (s8) wlapi_getintvar(shim,
14565 BRCMS_SROM_MAXP5GLA1);
14566 pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14567 (s16) wlapi_getintvar(shim,
14568 BRCMS_SROM_PA5GLW0A0);
14569 pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14570 (s16) wlapi_getintvar(shim,
14571 BRCMS_SROM_PA5GLW0A1);
14572 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14573 (s16) wlapi_getintvar(shim,
14574 BRCMS_SROM_PA5GLW1A0);
14575 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14576 (s16) wlapi_getintvar(shim,
14577 BRCMS_SROM_PA5GLW1A1);
14578 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14579 (s16) wlapi_getintvar(shim,
14580 BRCMS_SROM_PA5GLW2A0);
14581 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14582 (s16) wlapi_getintvar(shim,
14583 BRCMS_SROM_PA5GLW2A1);
14584 pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14585 pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14586
14587 pi->ofdm5glpo =
14588 (u32) wlapi_getintvar(shim,
14589 BRCMS_SROM_OFDM5GLPO);
14590
14591 pi->mcs5glpo[0] =
14592 (u16) wlapi_getintvar(shim,
14593 BRCMS_SROM_MCS5GLPO0);
14594 pi->mcs5glpo[1] =
14595 (u16) wlapi_getintvar(shim,
14596 BRCMS_SROM_MCS5GLPO1);
14597 pi->mcs5glpo[2] =
14598 (u16) wlapi_getintvar(shim,
14599 BRCMS_SROM_MCS5GLPO2);
14600 pi->mcs5glpo[3] =
14601 (u16) wlapi_getintvar(shim,
14602 BRCMS_SROM_MCS5GLPO3);
14603 pi->mcs5glpo[4] =
14604 (u16) wlapi_getintvar(shim,
14605 BRCMS_SROM_MCS5GLPO4);
14606 pi->mcs5glpo[5] =
14607 (u16) wlapi_getintvar(shim,
14608 BRCMS_SROM_MCS5GLPO5);
14609 pi->mcs5glpo[6] =
14610 (u16) wlapi_getintvar(shim,
14611 BRCMS_SROM_MCS5GLPO6);
14612 pi->mcs5glpo[7] =
14613 (u16) wlapi_getintvar(shim,
14614 BRCMS_SROM_MCS5GLPO7);
14615 break;
14616 case 3:
14617
14618 pi->nphy_txpid5gh[0] =
14619 (u8) wlapi_getintvar(shim,
14620 BRCMS_SROM_TXPID5GHA0);
14621 pi->nphy_txpid5gh[1] =
14622 (u8) wlapi_getintvar(shim,
14623 BRCMS_SROM_TXPID5GHA1);
14624 pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14625 (s8) wlapi_getintvar(shim,
14626 BRCMS_SROM_MAXP5GHA0);
14627 pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14628 (s8) wlapi_getintvar(shim,
14629 BRCMS_SROM_MAXP5GHA1);
14630 pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14631 (s16) wlapi_getintvar(shim,
14632 BRCMS_SROM_PA5GHW0A0);
14633 pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14634 (s16) wlapi_getintvar(shim,
14635 BRCMS_SROM_PA5GHW0A1);
14636 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14637 (s16) wlapi_getintvar(shim,
14638 BRCMS_SROM_PA5GHW1A0);
14639 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14640 (s16) wlapi_getintvar(shim,
14641 BRCMS_SROM_PA5GHW1A1);
14642 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14643 (s16) wlapi_getintvar(shim,
14644 BRCMS_SROM_PA5GHW2A0);
14645 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14646 (s16) wlapi_getintvar(shim,
14647 BRCMS_SROM_PA5GHW2A1);
14648 pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14649 pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14650
14651 pi->ofdm5ghpo =
14652 (u32) wlapi_getintvar(shim,
14653 BRCMS_SROM_OFDM5GHPO);
14654
14655 pi->mcs5ghpo[0] =
14656 (u16) wlapi_getintvar(shim,
14657 BRCMS_SROM_MCS5GHPO0);
14658 pi->mcs5ghpo[1] =
14659 (u16) wlapi_getintvar(shim,
14660 BRCMS_SROM_MCS5GHPO1);
14661 pi->mcs5ghpo[2] =
14662 (u16) wlapi_getintvar(shim,
14663 BRCMS_SROM_MCS5GHPO2);
14664 pi->mcs5ghpo[3] =
14665 (u16) wlapi_getintvar(shim,
14666 BRCMS_SROM_MCS5GHPO3);
14667 pi->mcs5ghpo[4] =
14668 (u16) wlapi_getintvar(shim,
14669 BRCMS_SROM_MCS5GHPO4);
14670 pi->mcs5ghpo[5] =
14671 (u16) wlapi_getintvar(shim,
14672 BRCMS_SROM_MCS5GHPO5);
14673 pi->mcs5ghpo[6] =
14674 (u16) wlapi_getintvar(shim,
14675 BRCMS_SROM_MCS5GHPO6);
14676 pi->mcs5ghpo[7] =
14677 (u16) wlapi_getintvar(shim,
14678 BRCMS_SROM_MCS5GHPO7);
14679 break;
14680 }
14681 }
14682
14683 wlc_phy_txpwr_apply_nphy(pi);
14684}
14685
14686static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14687{
14688 struct phy_shim_info *shim = pi->sh->physhim;
14689
14690 pi->antswitch = (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWITCH);
14691 pi->aa2g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA2G);
14692 pi->aa5g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA5G);
14693
14694 pi->srom_fem2g.tssipos = (u8) wlapi_getintvar(shim,
14695 BRCMS_SROM_TSSIPOS2G);
14696 pi->srom_fem2g.extpagain = (u8) wlapi_getintvar(shim,
14697 BRCMS_SROM_EXTPAGAIN2G);
14698 pi->srom_fem2g.pdetrange = (u8) wlapi_getintvar(shim,
14699 BRCMS_SROM_PDETRANGE2G);
14700 pi->srom_fem2g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO2G);
14701 pi->srom_fem2g.antswctrllut =
14702 (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14703
14704 pi->srom_fem5g.tssipos = (u8) wlapi_getintvar(shim,
14705 BRCMS_SROM_TSSIPOS5G);
14706 pi->srom_fem5g.extpagain = (u8) wlapi_getintvar(shim,
14707 BRCMS_SROM_EXTPAGAIN5G);
14708 pi->srom_fem5g.pdetrange = (u8) wlapi_getintvar(shim,
14709 BRCMS_SROM_PDETRANGE5G);
14710 pi->srom_fem5g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO5G);
14711 if (wlapi_getvar(shim, BRCMS_SROM_ANTSWCTL5G))
14712 pi->srom_fem5g.antswctrllut =
14713 (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL5G);
14714 else
14715 pi->srom_fem5g.antswctrllut =
14716 (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14717
14718 wlc_phy_txpower_ipa_upd(pi);
14719
14720 pi->phy_txcore_disable_temp =
14721 (s16) wlapi_getintvar(shim, BRCMS_SROM_TEMPTHRESH);
14722 if (pi->phy_txcore_disable_temp == 0)
14723 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14724
14725 pi->phy_tempsense_offset = (s8) wlapi_getintvar(shim,
14726 BRCMS_SROM_TEMPOFFSET);
14727 if (pi->phy_tempsense_offset != 0) {
14728 if (pi->phy_tempsense_offset >
14729 (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14730 pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14731 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14732 NPHY_SROM_MINTEMPOFFSET))
14733 pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14734 else
14735 pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14736 }
14737
14738 pi->phy_txcore_enable_temp =
14739 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14740
14741 pi->phycal_tempdelta =
14742 (u8) wlapi_getintvar(shim, BRCMS_SROM_PHYCAL_TEMPDELTA);
14743 if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14744 pi->phycal_tempdelta = 0;
14745
14746 wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14747
14748 return true;
14749}
14750
14751bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14752{
14753 uint i;
14754
14755 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14756 pi->phyhang_avoid = true;
14757
14758 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14759 pi->nphy_gband_spurwar_en = true;
14760 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14761 pi->nphy_aband_spurwar_en = true;
14762 }
14763 if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14764 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14765 pi->nphy_gband_spurwar2_en = true;
14766 }
14767
14768 pi->n_preamble_override = AUTO;
14769 if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14770 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14771
14772 pi->nphy_txrx_chain = AUTO;
14773 pi->phy_scraminit = AUTO;
14774
14775 pi->nphy_rxcalparams = 0x010100B5;
14776
14777 pi->nphy_perical = PHY_PERICAL_MPHASE;
14778 pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14779 pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14780
14781 pi->nphy_gain_boost = true;
14782 pi->nphy_elna_gain_config = false;
14783 pi->radio_is_on = false;
14784
14785 for (i = 0; i < pi->pubpi.phy_corenum; i++)
14786 pi->nphy_txpwrindex[i].index = AUTO;
14787
14788 wlc_phy_txpwrctrl_config_nphy(pi);
14789 if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14790 pi->hwpwrctrl_capable = true;
14791
14792 pi->pi_fptr.init = wlc_phy_init_nphy;
14793 pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14794 pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14795 pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14796
14797 if (!wlc_phy_txpwr_srom_read_nphy(pi))
14798 return false;
14799
14800 return true;
14801}
14802
14803static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14804{
14805 s32 rfpwr_offset = 0;
14806
14807 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14808 if ((pi->pubpi.radiorev == 3) ||
14809 (pi->pubpi.radiorev == 4) ||
14810 (pi->pubpi.radiorev == 6))
14811 rfpwr_offset = (s16)
14812 nphy_papd_padgain_dlt_2g_2057rev3n4
14813 [pad_gn];
14814 else if (pi->pubpi.radiorev == 5)
14815 rfpwr_offset = (s16)
14816 nphy_papd_padgain_dlt_2g_2057rev5
14817 [pad_gn];
14818 else if ((pi->pubpi.radiorev == 7)
14819 || (pi->pubpi.radiorev ==
14820 8))
14821 rfpwr_offset = (s16)
14822 nphy_papd_padgain_dlt_2g_2057rev7
14823 [pad_gn];
14824 } else {
14825 if ((pi->pubpi.radiorev == 3) ||
14826 (pi->pubpi.radiorev == 4) ||
14827 (pi->pubpi.radiorev == 6))
14828 rfpwr_offset = (s16)
14829 nphy_papd_pgagain_dlt_5g_2057
14830 [pga_gn];
14831 else if ((pi->pubpi.radiorev == 7)
14832 || (pi->pubpi.radiorev ==
14833 8))
14834 rfpwr_offset = (s16)
14835 nphy_papd_pgagain_dlt_5g_2057rev7
14836 [pga_gn];
14837 }
14838 return rfpwr_offset;
14839}
14840
14841static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14842{
14843 bool gf_preamble = false;
14844 u16 val;
14845
14846 if (preamble == BRCMS_N_PREAMBLE_GF)
14847 gf_preamble = true;
14848
14849 val = read_phy_reg(pi, 0xed);
14850
14851 val |= RX_GF_MM_AUTO;
14852 val &= ~RX_GF_OR_MM;
14853 if (gf_preamble)
14854 val |= RX_GF_OR_MM;
14855
14856 write_phy_reg(pi, 0xed, val);
14857}
14858
14859static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14860{
14861 int j, type;
14862 u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14863
14864 for (type = 0; type < 3; type++) {
14865 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14866 write_phy_reg(pi, addr_offset[type] + j,
14867 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14868 }
14869
14870 if (pi->bw == WL_CHANSPEC_BW_40) {
14871 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14872 write_phy_reg(pi, 0x186 + j,
14873 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14874 } else {
14875 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14876 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14877 write_phy_reg(pi, 0x186 + j,
14878 NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14879 }
14880
14881 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14882 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14883 write_phy_reg(pi, 0x2c5 + j,
14884 NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14885 }
14886 }
14887}
14888
14889static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14890{
14891 int j;
14892
14893 if (pi->bw == WL_CHANSPEC_BW_40) {
14894 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14895 write_phy_reg(pi, 0x195 + j,
14896 NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14897 } else {
14898 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14899 write_phy_reg(pi, 0x186 + j,
14900 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14901 }
14902}
14903
14904static void
14905wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14906 u8 len)
14907{
14908 u32 t1_offset, t2_offset;
14909 u8 ctr;
14910 u8 end_event =
14911 NREV_GE(pi->pubpi.phy_rev,
14912 3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14913 u8 end_dly = 1;
14914
14915 if (pi->phyhang_avoid)
14916 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14917
14918 t1_offset = cmd << 4;
14919 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14920 events);
14921 t2_offset = t1_offset + 0x080;
14922 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14923 dlys);
14924
14925 for (ctr = len; ctr < 16; ctr++) {
14926 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14927 t1_offset + ctr, 8, &end_event);
14928 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14929 t2_offset + ctr, 8, &end_dly);
14930 }
14931
14932 if (pi->phyhang_avoid)
14933 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14934}
14935
14936static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14937{
14938 u16 lpf_bw_ctl_val = 0;
14939 u16 rx2tx_lpf_rc_lut_offset = 0;
14940
14941 if (offset == 0) {
14942 if (CHSPEC_IS40(pi->radio_chanspec))
14943 rx2tx_lpf_rc_lut_offset = 0x159;
14944 else
14945 rx2tx_lpf_rc_lut_offset = 0x154;
14946 } else {
14947 rx2tx_lpf_rc_lut_offset = offset;
14948 }
14949 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14950 (u32) rx2tx_lpf_rc_lut_offset, 16,
14951 &lpf_bw_ctl_val);
14952
14953 lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14954
14955 return lpf_bw_ctl_val;
14956}
14957
14958static void
14959wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14960 u8 core_mask, u8 off, u8 override_id)
14961{
14962 u8 core_num;
14963 u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14964 u8 val_shift = 0;
14965
14966 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14967 en_mask = field;
14968 for (core_num = 0; core_num < 2; core_num++) {
14969 if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14970
14971 switch (field) {
14972 case (0x1 << 2):
14973 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14974 val_addr = (core_num == 0) ? 0x7a :
14975 0x7d;
14976 val_mask = (0x1 << 1);
14977 val_shift = 1;
14978 break;
14979 case (0x1 << 3):
14980 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14981 val_addr = (core_num == 0) ? 0x7a :
14982 0x7d;
14983 val_mask = (0x1 << 2);
14984 val_shift = 2;
14985 break;
14986 case (0x1 << 4):
14987 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14988 val_addr = (core_num == 0) ? 0x7a :
14989 0x7d;
14990 val_mask = (0x1 << 4);
14991 val_shift = 4;
14992 break;
14993 case (0x1 << 5):
14994 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14995 val_addr = (core_num == 0) ? 0x7a :
14996 0x7d;
14997 val_mask = (0x1 << 5);
14998 val_shift = 5;
14999 break;
15000 case (0x1 << 6):
15001 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15002 val_addr = (core_num == 0) ? 0x7a :
15003 0x7d;
15004 val_mask = (0x1 << 6);
15005 val_shift = 6;
15006 break;
15007 case (0x1 << 7):
15008 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15009 val_addr = (core_num == 0) ? 0x7a :
15010 0x7d;
15011 val_mask = (0x1 << 7);
15012 val_shift = 7;
15013 break;
15014 case (0x1 << 10):
15015 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15016 val_addr = (core_num == 0) ? 0xf8 :
15017 0xfa;
15018 val_mask = (0x7 << 4);
15019 val_shift = 4;
15020 break;
15021 case (0x1 << 11):
15022 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15023 val_addr = (core_num == 0) ? 0x7b :
15024 0x7e;
15025 val_mask = (0xffff << 0);
15026 val_shift = 0;
15027 break;
15028 case (0x1 << 12):
15029 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15030 val_addr = (core_num == 0) ? 0x7c :
15031 0x7f;
15032 val_mask = (0xffff << 0);
15033 val_shift = 0;
15034 break;
15035 case (0x3 << 13):
15036 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15037 val_addr = (core_num == 0) ? 0x348 :
15038 0x349;
15039 val_mask = (0xff << 0);
15040 val_shift = 0;
15041 break;
15042 case (0x1 << 13):
15043 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15044 val_addr = (core_num == 0) ? 0x348 :
15045 0x349;
15046 val_mask = (0xf << 0);
15047 val_shift = 0;
15048 break;
15049 default:
15050 addr = 0xffff;
15051 break;
15052 }
15053 } else if (override_id ==
15054 NPHY_REV7_RFCTRLOVERRIDE_ID1) {
15055
15056 switch (field) {
15057 case (0x1 << 1):
15058 en_addr = (core_num == 0) ? 0x342 :
15059 0x343;
15060 val_addr = (core_num == 0) ? 0x340 :
15061 0x341;
15062 val_mask = (0x1 << 1);
15063 val_shift = 1;
15064 break;
15065 case (0x1 << 3):
15066 en_addr = (core_num == 0) ? 0x342 :
15067 0x343;
15068 val_addr = (core_num == 0) ? 0x340 :
15069 0x341;
15070 val_mask = (0x1 << 3);
15071 val_shift = 3;
15072 break;
15073 case (0x1 << 5):
15074 en_addr = (core_num == 0) ? 0x342 :
15075 0x343;
15076 val_addr = (core_num == 0) ? 0x340 :
15077 0x341;
15078 val_mask = (0x1 << 5);
15079 val_shift = 5;
15080 break;
15081 case (0x1 << 4):
15082 en_addr = (core_num == 0) ? 0x342 :
15083 0x343;
15084 val_addr = (core_num == 0) ? 0x340 :
15085 0x341;
15086 val_mask = (0x1 << 4);
15087 val_shift = 4;
15088 break;
15089 case (0x1 << 2):
15090
15091 en_addr = (core_num == 0) ? 0x342 :
15092 0x343;
15093 val_addr = (core_num == 0) ? 0x340 :
15094 0x341;
15095 val_mask = (0x1 << 2);
15096 val_shift = 2;
15097 break;
15098 case (0x1 << 7):
15099
15100 en_addr = (core_num == 0) ? 0x342 :
15101 0x343;
15102 val_addr = (core_num == 0) ? 0x340 :
15103 0x341;
15104 val_mask = (0x7 << 8);
15105 val_shift = 8;
15106 break;
15107 case (0x1 << 11):
15108 en_addr = (core_num == 0) ? 0x342 :
15109 0x343;
15110 val_addr = (core_num == 0) ? 0x340 :
15111 0x341;
15112 val_mask = (0x1 << 14);
15113 val_shift = 14;
15114 break;
15115 case (0x1 << 10):
15116 en_addr = (core_num == 0) ? 0x342 :
15117 0x343;
15118 val_addr = (core_num == 0) ? 0x340 :
15119 0x341;
15120 val_mask = (0x1 << 13);
15121 val_shift = 13;
15122 break;
15123 case (0x1 << 9):
15124 en_addr = (core_num == 0) ? 0x342 :
15125 0x343;
15126 val_addr = (core_num == 0) ? 0x340 :
15127 0x341;
15128 val_mask = (0x1 << 12);
15129 val_shift = 12;
15130 break;
15131 case (0x1 << 8):
15132 en_addr = (core_num == 0) ? 0x342 :
15133 0x343;
15134 val_addr = (core_num == 0) ? 0x340 :
15135 0x341;
15136 val_mask = (0x1 << 11);
15137 val_shift = 11;
15138 break;
15139 case (0x1 << 6):
15140 en_addr = (core_num == 0) ? 0x342 :
15141 0x343;
15142 val_addr = (core_num == 0) ? 0x340 :
15143 0x341;
15144 val_mask = (0x1 << 6);
15145 val_shift = 6;
15146 break;
15147 case (0x1 << 0):
15148 en_addr = (core_num == 0) ? 0x342 :
15149 0x343;
15150 val_addr = (core_num == 0) ? 0x340 :
15151 0x341;
15152 val_mask = (0x1 << 0);
15153 val_shift = 0;
15154 break;
15155 default:
15156 addr = 0xffff;
15157 break;
15158 }
15159 } else if (override_id ==
15160 NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15161
15162 switch (field) {
15163 case (0x1 << 3):
15164 en_addr = (core_num == 0) ? 0x346 :
15165 0x347;
15166 val_addr = (core_num == 0) ? 0x344 :
15167 0x345;
15168 val_mask = (0x1 << 3);
15169 val_shift = 3;
15170 break;
15171 case (0x1 << 1):
15172 en_addr = (core_num == 0) ? 0x346 :
15173 0x347;
15174 val_addr = (core_num == 0) ? 0x344 :
15175 0x345;
15176 val_mask = (0x1 << 1);
15177 val_shift = 1;
15178 break;
15179 case (0x1 << 0):
15180 en_addr = (core_num == 0) ? 0x346 :
15181 0x347;
15182 val_addr = (core_num == 0) ? 0x344 :
15183 0x345;
15184 val_mask = (0x1 << 0);
15185 val_shift = 0;
15186 break;
15187 case (0x1 << 2):
15188 en_addr = (core_num == 0) ? 0x346 :
15189 0x347;
15190 val_addr = (core_num == 0) ? 0x344 :
15191 0x345;
15192 val_mask = (0x1 << 2);
15193 val_shift = 2;
15194 break;
15195 case (0x1 << 4):
15196 en_addr = (core_num == 0) ? 0x346 :
15197 0x347;
15198 val_addr = (core_num == 0) ? 0x344 :
15199 0x345;
15200 val_mask = (0x1 << 4);
15201 val_shift = 4;
15202 break;
15203 default:
15204 addr = 0xffff;
15205 break;
15206 }
15207 }
15208
15209 if (off) {
15210 and_phy_reg(pi, en_addr, ~en_mask);
15211 and_phy_reg(pi, val_addr, ~val_mask);
15212 } else {
15213
15214 if ((core_mask == 0)
15215 || (core_mask & (1 << core_num))) {
15216 or_phy_reg(pi, en_addr, en_mask);
15217
15218 if (addr != 0xffff)
15219 mod_phy_reg(pi, val_addr,
15220 val_mask,
15221 (value <<
15222 val_shift));
15223 }
15224 }
15225 }
15226 }
15227}
15228
15229static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15230{
15231 uint core;
15232 int ctr;
15233 s16 gain_delta[2];
15234 u8 curr_channel;
15235 u16 minmax_gain[2];
15236 u16 regval[4];
15237
15238 if (pi->phyhang_avoid)
15239 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15240
15241 if (pi->nphy_gain_boost) {
15242 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15243
15244 gain_delta[0] = 6;
15245 gain_delta[1] = 6;
15246 } else {
15247
15248 curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15249 gain_delta[0] =
15250 (s16)
15251 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15252 curr_channel) +
15253 nphy_lnagain_est0[1]), 13);
15254 gain_delta[1] =
15255 (s16)
15256 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15257 curr_channel) +
15258 nphy_lnagain_est1[1]), 13);
15259 }
15260 } else {
15261
15262 gain_delta[0] = 0;
15263 gain_delta[1] = 0;
15264 }
15265
15266 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15267 if (pi->nphy_elna_gain_config) {
15268
15269 regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15270 regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15271 regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15272 regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15273 } else {
15274 for (ctr = 0; ctr < 4; ctr++)
15275 regval[ctr] =
15276 nphy_def_lnagains[ctr] +
15277 gain_delta[core];
15278 }
15279 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15280
15281 minmax_gain[core] =
15282 (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15283 }
15284
15285 mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15286 mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15287
15288 if (pi->phyhang_avoid)
15289 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15290}
15291
15292static void
15293wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15294{
15295 if (core == PHY_CORE_0) {
15296 write_phy_reg(pi, 0x38, 0x4);
15297 if (CHSPEC_IS2G(pi->radio_chanspec))
15298 write_phy_reg(pi, 0x37, 0x0060);
15299 else
15300 write_phy_reg(pi, 0x37, 0x1080);
15301 } else if (core == PHY_CORE_1) {
15302 write_phy_reg(pi, 0x2ae, 0x4);
15303 if (CHSPEC_IS2G(pi->radio_chanspec))
15304 write_phy_reg(pi, 0x2ad, 0x0060);
15305 else
15306 write_phy_reg(pi, 0x2ad, 0x1080);
15307 }
15308}
15309
15310static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15311{
15312 u8 txchain0, txchain1;
15313
15314 txchain0 = txchain & 0x1;
15315 txchain1 = (txchain & 0x2) >> 1;
15316 if (!txchain0)
15317 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15318
15319 if (!txchain1)
15320 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15321}
15322
15323static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15324{
15325 s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15326 s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15327 s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15328 s8 tia_gainbits[] = {
15329 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15330
15331 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15332 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15333
15334 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15335
15336 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15337 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15338
15339 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15340 lna1_gain_db);
15341 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15342 lna1_gain_db);
15343
15344 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15345 lna2_gain_db);
15346 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15347 lna2_gain_db);
15348
15349 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15350 tia_gain_db);
15351 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15352 tia_gain_db);
15353
15354 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15355 tia_gainbits);
15356 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15357 tia_gainbits);
15358
15359 write_phy_reg(pi, 0x37, 0x74);
15360 write_phy_reg(pi, 0x2ad, 0x74);
15361 write_phy_reg(pi, 0x38, 0x18);
15362 write_phy_reg(pi, 0x2ae, 0x18);
15363
15364 write_phy_reg(pi, 0x2b, 0xe8);
15365 write_phy_reg(pi, 0x41, 0xe8);
15366
15367 if (CHSPEC_IS20(pi->radio_chanspec)) {
15368
15369 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15370 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15371 } else {
15372
15373 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15374 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15375 }
15376}
15377
15378static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15379{
15380 u16 currband;
15381 s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15382 s8 *lna1_gain_db = NULL;
15383 s8 *lna1_gain_db_2 = NULL;
15384 s8 *lna2_gain_db = NULL;
15385 s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15386 s8 *tia_gain_db;
15387 s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15388 s8 *tia_gainbits;
15389 u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15390 u16 *rfseq_init_gain;
15391 u16 init_gaincode;
15392 u16 clip1hi_gaincode;
15393 u16 clip1md_gaincode = 0;
15394 u16 clip1md_gaincode_B;
15395 u16 clip1lo_gaincode;
15396 u16 clip1lo_gaincode_B;
15397 u8 crsminl_th = 0;
15398 u8 crsminu_th;
15399 u16 nbclip_th = 0;
15400 u8 w1clip_th;
15401 u16 freq;
15402 s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15403 u8 chg_nbclip_th = 0;
15404
15405 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15406 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15407
15408 currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15409 if (currband == 0) {
15410
15411 lna1_gain_db = lna1G_gain_db_rev7;
15412
15413 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15414 lna1_gain_db);
15415 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15416 lna1_gain_db);
15417
15418 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15419
15420 if (CHSPEC_IS40(pi->radio_chanspec)) {
15421 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15422 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15423 }
15424
15425 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15426
15427 if (CHSPEC_IS20(pi->radio_chanspec)) {
15428 mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15429 mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15430 }
15431 } else {
15432
15433 init_gaincode = 0x9e;
15434 clip1hi_gaincode = 0x9e;
15435 clip1md_gaincode_B = 0x24;
15436 clip1lo_gaincode = 0x8a;
15437 clip1lo_gaincode_B = 8;
15438 rfseq_init_gain = rfseqA_init_gain_rev7;
15439
15440 tia_gain_db = tiaA_gain_db_rev7;
15441 tia_gainbits = tiaA_gainbits_rev7;
15442
15443 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15444 if (CHSPEC_IS20(pi->radio_chanspec)) {
15445
15446 w1clip_th = 25;
15447 clip1md_gaincode = 0x82;
15448
15449 if ((freq <= 5080) || (freq == 5825)) {
15450
15451 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15452 s8 lna1A_gain_db_2_rev7[] = {
15453 11, 17, 22, 25};
15454 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15455
15456 crsminu_th = 0x3e;
15457 lna1_gain_db = lna1A_gain_db_rev7;
15458 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15459 lna2_gain_db = lna2A_gain_db_rev7;
15460 } else if ((freq >= 5500) && (freq <= 5700)) {
15461
15462 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15463 s8 lna1A_gain_db_2_rev7[] = {
15464 12, 18, 22, 26};
15465 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15466
15467 crsminu_th = 0x45;
15468 clip1md_gaincode_B = 0x14;
15469 nbclip_th = 0xff;
15470 chg_nbclip_th = 1;
15471 lna1_gain_db = lna1A_gain_db_rev7;
15472 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15473 lna2_gain_db = lna2A_gain_db_rev7;
15474 } else {
15475
15476 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15477 s8 lna1A_gain_db_2_rev7[] = {
15478 12, 18, 22, 26};
15479 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15480
15481 crsminu_th = 0x41;
15482 lna1_gain_db = lna1A_gain_db_rev7;
15483 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15484 lna2_gain_db = lna2A_gain_db_rev7;
15485 }
15486
15487 if (freq <= 4920) {
15488 nvar_baseline_offset0 = 5;
15489 nvar_baseline_offset1 = 5;
15490 } else if ((freq > 4920) && (freq <= 5320)) {
15491 nvar_baseline_offset0 = 3;
15492 nvar_baseline_offset1 = 5;
15493 } else if ((freq > 5320) && (freq <= 5700)) {
15494 nvar_baseline_offset0 = 3;
15495 nvar_baseline_offset1 = 2;
15496 } else {
15497 nvar_baseline_offset0 = 4;
15498 nvar_baseline_offset1 = 0;
15499 }
15500 } else {
15501
15502 crsminu_th = 0x3a;
15503 crsminl_th = 0x3a;
15504 w1clip_th = 20;
15505
15506 if ((freq >= 4920) && (freq <= 5320)) {
15507 nvar_baseline_offset0 = 4;
15508 nvar_baseline_offset1 = 5;
15509 } else if ((freq > 5320) && (freq <= 5550)) {
15510 nvar_baseline_offset0 = 4;
15511 nvar_baseline_offset1 = 2;
15512 } else {
15513 nvar_baseline_offset0 = 5;
15514 nvar_baseline_offset1 = 3;
15515 }
15516 }
15517
15518 write_phy_reg(pi, 0x20, init_gaincode);
15519 write_phy_reg(pi, 0x2a7, init_gaincode);
15520
15521 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15522 pi->pubpi.phy_corenum, 0x106, 16,
15523 rfseq_init_gain);
15524
15525 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15526 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15527
15528 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15529 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15530
15531 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15532 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15533 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15534 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15535
15536 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15537 tia_gain_db);
15538 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15539 tia_gain_db);
15540
15541 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15542 tia_gainbits);
15543 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15544 tia_gainbits);
15545
15546 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15547
15548 if (chg_nbclip_th == 1) {
15549 write_phy_reg(pi, 0x2b, nbclip_th);
15550 write_phy_reg(pi, 0x41, nbclip_th);
15551 }
15552
15553 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15554 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15555
15556 mod_phy_reg(pi, 0x2e4,
15557 (0x3f << 0), (nvar_baseline_offset0 << 0));
15558
15559 mod_phy_reg(pi, 0x2e4,
15560 (0x3f << 6), (nvar_baseline_offset1 << 6));
15561
15562 if (CHSPEC_IS20(pi->radio_chanspec)) {
15563
15564 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15565 lna1_gain_db);
15566 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15567 lna1_gain_db_2);
15568
15569 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15570 8, lna2_gain_db);
15571 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15572 8, lna2_gain_db);
15573
15574 write_phy_reg(pi, 0x24, clip1md_gaincode);
15575 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15576 } else {
15577 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15578 }
15579 }
15580}
15581
15582static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15583{
15584 u16 w1th, hpf_code, currband;
15585 int ctr;
15586 u8 rfseq_updategainu_events[] = {
15587 NPHY_RFSEQ_CMD_RX_GAIN,
15588 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15589 NPHY_RFSEQ_CMD_SET_HPF_BW
15590 };
15591 u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15592 s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15593 s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15594 s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15595 s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15596 s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15597 s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15598 s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15599 s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15600 s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15601 s8 *lna1_gain_db = NULL;
15602 s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15603 s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15604 s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15605 s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15606 s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15607 s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15608 s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15609 s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15610 s8 *lna2_gain_db = NULL;
15611 s8 tiaG_gain_db[] = {
15612 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15613 s8 tiaA_gain_db[] = {
15614 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15615 s8 tiaA_gain_db_rev4[] = {
15616 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15617 s8 tiaA_gain_db_rev5[] = {
15618 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15619 s8 tiaA_gain_db_rev6[] = {
15620 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15621 s8 *tia_gain_db;
15622 s8 tiaG_gainbits[] = {
15623 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15624 s8 tiaA_gainbits[] = {
15625 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15626 s8 tiaA_gainbits_rev4[] = {
15627 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15628 s8 tiaA_gainbits_rev5[] = {
15629 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15630 s8 tiaA_gainbits_rev6[] = {
15631 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15632 s8 *tia_gainbits;
15633 s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15634 s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15635 u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15636 u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15637 u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15638 u16 rfseqG_init_gain_rev5_elna[] = {
15639 0x013f, 0x013f, 0x013f, 0x013f };
15640 u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15641 u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15642 u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15643 u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15644 u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15645 u16 rfseqA_init_gain_rev4_elna[] = {
15646 0x314f, 0x314f, 0x314f, 0x314f };
15647 u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15648 u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15649 u16 *rfseq_init_gain;
15650 u16 initG_gaincode = 0x627e;
15651 u16 initG_gaincode_rev4 = 0x527e;
15652 u16 initG_gaincode_rev5 = 0x427e;
15653 u16 initG_gaincode_rev5_elna = 0x027e;
15654 u16 initG_gaincode_rev6 = 0x527e;
15655 u16 initG_gaincode_rev6_224B0 = 0x427e;
15656 u16 initG_gaincode_rev6_elna = 0x127e;
15657 u16 initA_gaincode = 0x52de;
15658 u16 initA_gaincode_rev4 = 0x629e;
15659 u16 initA_gaincode_rev4_elna = 0x329e;
15660 u16 initA_gaincode_rev5 = 0x729e;
15661 u16 initA_gaincode_rev6 = 0x729e;
15662 u16 init_gaincode;
15663 u16 clip1hiG_gaincode = 0x107e;
15664 u16 clip1hiG_gaincode_rev4 = 0x007e;
15665 u16 clip1hiG_gaincode_rev5 = 0x1076;
15666 u16 clip1hiG_gaincode_rev6 = 0x007e;
15667 u16 clip1hiA_gaincode = 0x00de;
15668 u16 clip1hiA_gaincode_rev4 = 0x029e;
15669 u16 clip1hiA_gaincode_rev5 = 0x029e;
15670 u16 clip1hiA_gaincode_rev6 = 0x029e;
15671 u16 clip1hi_gaincode;
15672 u16 clip1mdG_gaincode = 0x0066;
15673 u16 clip1mdA_gaincode = 0x00ca;
15674 u16 clip1mdA_gaincode_rev4 = 0x1084;
15675 u16 clip1mdA_gaincode_rev5 = 0x2084;
15676 u16 clip1mdA_gaincode_rev6 = 0x2084;
15677 u16 clip1md_gaincode = 0;
15678 u16 clip1loG_gaincode = 0x0074;
15679 u16 clip1loG_gaincode_rev5[] = {
15680 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15681 };
15682 u16 clip1loG_gaincode_rev6[] = {
15683 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15684 };
15685 u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15686 u16 clip1loA_gaincode = 0x00cc;
15687 u16 clip1loA_gaincode_rev4 = 0x0086;
15688 u16 clip1loA_gaincode_rev5 = 0x2086;
15689 u16 clip1loA_gaincode_rev6 = 0x2086;
15690 u16 clip1lo_gaincode;
15691 u8 crsminG_th = 0x18;
15692 u8 crsminG_th_rev5 = 0x18;
15693 u8 crsminG_th_rev6 = 0x18;
15694 u8 crsminA_th = 0x1e;
15695 u8 crsminA_th_rev4 = 0x24;
15696 u8 crsminA_th_rev5 = 0x24;
15697 u8 crsminA_th_rev6 = 0x24;
15698 u8 crsmin_th;
15699 u8 crsminlG_th = 0x18;
15700 u8 crsminlG_th_rev5 = 0x18;
15701 u8 crsminlG_th_rev6 = 0x18;
15702 u8 crsminlA_th = 0x1e;
15703 u8 crsminlA_th_rev4 = 0x24;
15704 u8 crsminlA_th_rev5 = 0x24;
15705 u8 crsminlA_th_rev6 = 0x24;
15706 u8 crsminl_th = 0;
15707 u8 crsminuG_th = 0x18;
15708 u8 crsminuG_th_rev5 = 0x18;
15709 u8 crsminuG_th_rev6 = 0x18;
15710 u8 crsminuA_th = 0x1e;
15711 u8 crsminuA_th_rev4 = 0x24;
15712 u8 crsminuA_th_rev5 = 0x24;
15713 u8 crsminuA_th_rev6 = 0x24;
15714 u8 crsminuA_th_rev6_224B0 = 0x2d;
15715 u8 crsminu_th;
15716 u16 nbclipG_th = 0x20d;
15717 u16 nbclipG_th_rev4 = 0x1a1;
15718 u16 nbclipG_th_rev5 = 0x1d0;
15719 u16 nbclipG_th_rev6 = 0x1d0;
15720 u16 nbclipA_th = 0x1a1;
15721 u16 nbclipA_th_rev4 = 0x107;
15722 u16 nbclipA_th_rev5 = 0x0a9;
15723 u16 nbclipA_th_rev6 = 0x0f0;
15724 u16 nbclip_th = 0;
15725 u8 w1clipG_th = 5;
15726 u8 w1clipG_th_rev5 = 9;
15727 u8 w1clipG_th_rev6 = 5;
15728 u8 w1clipA_th = 25, w1clip_th;
15729 u8 rssi_gain_default = 0x50;
15730 u8 rssiG_gain_rev6_224B0 = 0x50;
15731 u8 rssiA_gain_rev5 = 0x90;
15732 u8 rssiA_gain_rev6 = 0x90;
15733 u8 rssi_gain;
15734 u16 regval[21];
15735 u8 triso;
15736
15737 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15738 pi->srom_fem2g.triso;
15739
15740 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15741 if (pi->pubpi.radiorev == 5) {
15742 wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15743 } else if (pi->pubpi.radiorev == 7) {
15744 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15745
15746 mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15747 mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15748
15749 } else if ((pi->pubpi.radiorev == 3)
15750 || (pi->pubpi.radiorev == 8)) {
15751 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15752
15753 if (pi->pubpi.radiorev == 8) {
15754 mod_phy_reg(pi, 0x283,
15755 (0xff << 0), (0x44 << 0));
15756 mod_phy_reg(pi, 0x280,
15757 (0xff << 0), (0x44 << 0));
15758 }
15759 } else {
15760 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15761 }
15762 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15763
15764 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15765
15766 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15767 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15768
15769 currband =
15770 read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15771 if (currband == 0) {
15772 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15773 if (pi->pubpi.radiorev == 11) {
15774 lna1_gain_db = lna1G_gain_db_rev6_224B0;
15775 lna2_gain_db = lna2G_gain_db_rev6_224B0;
15776 rfseq_init_gain =
15777 rfseqG_init_gain_rev6_224B0;
15778 init_gaincode =
15779 initG_gaincode_rev6_224B0;
15780 clip1hi_gaincode =
15781 clip1hiG_gaincode_rev6;
15782 clip1lo_gaincode =
15783 clip1loG_gaincode_rev6_224B0;
15784 nbclip_th = nbclipG_th_rev6;
15785 w1clip_th = w1clipG_th_rev6;
15786 crsmin_th = crsminG_th_rev6;
15787 crsminl_th = crsminlG_th_rev6;
15788 crsminu_th = crsminuG_th_rev6;
15789 rssi_gain = rssiG_gain_rev6_224B0;
15790 } else {
15791 lna1_gain_db = lna1G_gain_db_rev6;
15792 lna2_gain_db = lna2G_gain_db_rev6;
15793 if (pi->sh->boardflags & BFL_EXTLNA) {
15794
15795 rfseq_init_gain =
15796 rfseqG_init_gain_rev6_elna;
15797 init_gaincode =
15798 initG_gaincode_rev6_elna;
15799 } else {
15800 rfseq_init_gain =
15801 rfseqG_init_gain_rev6;
15802 init_gaincode =
15803 initG_gaincode_rev6;
15804 }
15805 clip1hi_gaincode =
15806 clip1hiG_gaincode_rev6;
15807 switch (triso) {
15808 case 0:
15809 clip1lo_gaincode =
15810 clip1loG_gaincode_rev6
15811 [0];
15812 break;
15813 case 1:
15814 clip1lo_gaincode =
15815 clip1loG_gaincode_rev6
15816 [1];
15817 break;
15818 case 2:
15819 clip1lo_gaincode =
15820 clip1loG_gaincode_rev6
15821 [2];
15822 break;
15823 case 3:
15824 default:
15825
15826 clip1lo_gaincode =
15827 clip1loG_gaincode_rev6
15828 [3];
15829 break;
15830 case 4:
15831 clip1lo_gaincode =
15832 clip1loG_gaincode_rev6
15833 [4];
15834 break;
15835 case 5:
15836 clip1lo_gaincode =
15837 clip1loG_gaincode_rev6
15838 [5];
15839 break;
15840 case 6:
15841 clip1lo_gaincode =
15842 clip1loG_gaincode_rev6
15843 [6];
15844 break;
15845 case 7:
15846 clip1lo_gaincode =
15847 clip1loG_gaincode_rev6
15848 [7];
15849 break;
15850 }
15851 nbclip_th = nbclipG_th_rev6;
15852 w1clip_th = w1clipG_th_rev6;
15853 crsmin_th = crsminG_th_rev6;
15854 crsminl_th = crsminlG_th_rev6;
15855 crsminu_th = crsminuG_th_rev6;
15856 rssi_gain = rssi_gain_default;
15857 }
15858 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15859 lna1_gain_db = lna1G_gain_db_rev5;
15860 lna2_gain_db = lna2G_gain_db_rev5;
15861 if (pi->sh->boardflags & BFL_EXTLNA) {
15862
15863 rfseq_init_gain =
15864 rfseqG_init_gain_rev5_elna;
15865 init_gaincode =
15866 initG_gaincode_rev5_elna;
15867 } else {
15868 rfseq_init_gain = rfseqG_init_gain_rev5;
15869 init_gaincode = initG_gaincode_rev5;
15870 }
15871 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15872 switch (triso) {
15873 case 0:
15874 clip1lo_gaincode =
15875 clip1loG_gaincode_rev5[0];
15876 break;
15877 case 1:
15878 clip1lo_gaincode =
15879 clip1loG_gaincode_rev5[1];
15880 break;
15881 case 2:
15882 clip1lo_gaincode =
15883 clip1loG_gaincode_rev5[2];
15884 break;
15885 case 3:
15886
15887 clip1lo_gaincode =
15888 clip1loG_gaincode_rev5[3];
15889 break;
15890 case 4:
15891 clip1lo_gaincode =
15892 clip1loG_gaincode_rev5[4];
15893 break;
15894 case 5:
15895 clip1lo_gaincode =
15896 clip1loG_gaincode_rev5[5];
15897 break;
15898 case 6:
15899 clip1lo_gaincode =
15900 clip1loG_gaincode_rev5[6];
15901 break;
15902 case 7:
15903 clip1lo_gaincode =
15904 clip1loG_gaincode_rev5[7];
15905 break;
15906 default:
15907 clip1lo_gaincode =
15908 clip1loG_gaincode_rev5[3];
15909 break;
15910 }
15911 nbclip_th = nbclipG_th_rev5;
15912 w1clip_th = w1clipG_th_rev5;
15913 crsmin_th = crsminG_th_rev5;
15914 crsminl_th = crsminlG_th_rev5;
15915 crsminu_th = crsminuG_th_rev5;
15916 rssi_gain = rssi_gain_default;
15917 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15918 lna1_gain_db = lna1G_gain_db_rev4;
15919 lna2_gain_db = lna2G_gain_db;
15920 rfseq_init_gain = rfseqG_init_gain_rev4;
15921 init_gaincode = initG_gaincode_rev4;
15922 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15923 clip1lo_gaincode = clip1loG_gaincode;
15924 nbclip_th = nbclipG_th_rev4;
15925 w1clip_th = w1clipG_th;
15926 crsmin_th = crsminG_th;
15927 crsminl_th = crsminlG_th;
15928 crsminu_th = crsminuG_th;
15929 rssi_gain = rssi_gain_default;
15930 } else {
15931 lna1_gain_db = lna1G_gain_db;
15932 lna2_gain_db = lna2G_gain_db;
15933 rfseq_init_gain = rfseqG_init_gain;
15934 init_gaincode = initG_gaincode;
15935 clip1hi_gaincode = clip1hiG_gaincode;
15936 clip1lo_gaincode = clip1loG_gaincode;
15937 nbclip_th = nbclipG_th;
15938 w1clip_th = w1clipG_th;
15939 crsmin_th = crsminG_th;
15940 crsminl_th = crsminlG_th;
15941 crsminu_th = crsminuG_th;
15942 rssi_gain = rssi_gain_default;
15943 }
15944 tia_gain_db = tiaG_gain_db;
15945 tia_gainbits = tiaG_gainbits;
15946 clip1md_gaincode = clip1mdG_gaincode;
15947 } else {
15948 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15949 lna1_gain_db = lna1A_gain_db_rev6;
15950 lna2_gain_db = lna2A_gain_db_rev6;
15951 tia_gain_db = tiaA_gain_db_rev6;
15952 tia_gainbits = tiaA_gainbits_rev6;
15953 rfseq_init_gain = rfseqA_init_gain_rev6;
15954 init_gaincode = initA_gaincode_rev6;
15955 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15956 clip1md_gaincode = clip1mdA_gaincode_rev6;
15957 clip1lo_gaincode = clip1loA_gaincode_rev6;
15958 crsmin_th = crsminA_th_rev6;
15959 crsminl_th = crsminlA_th_rev6;
15960 if ((pi->pubpi.radiorev == 11) &&
15961 (CHSPEC_IS40(pi->radio_chanspec) == 0))
15962 crsminu_th = crsminuA_th_rev6_224B0;
15963 else
15964 crsminu_th = crsminuA_th_rev6;
15965
15966 nbclip_th = nbclipA_th_rev6;
15967 rssi_gain = rssiA_gain_rev6;
15968 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15969 lna1_gain_db = lna1A_gain_db_rev5;
15970 lna2_gain_db = lna2A_gain_db_rev5;
15971 tia_gain_db = tiaA_gain_db_rev5;
15972 tia_gainbits = tiaA_gainbits_rev5;
15973 rfseq_init_gain = rfseqA_init_gain_rev5;
15974 init_gaincode = initA_gaincode_rev5;
15975 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15976 clip1md_gaincode = clip1mdA_gaincode_rev5;
15977 clip1lo_gaincode = clip1loA_gaincode_rev5;
15978 crsmin_th = crsminA_th_rev5;
15979 crsminl_th = crsminlA_th_rev5;
15980 crsminu_th = crsminuA_th_rev5;
15981 nbclip_th = nbclipA_th_rev5;
15982 rssi_gain = rssiA_gain_rev5;
15983 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15984 lna1_gain_db = lna1A_gain_db_rev4;
15985 lna2_gain_db = lna2A_gain_db_rev4;
15986 tia_gain_db = tiaA_gain_db_rev4;
15987 tia_gainbits = tiaA_gainbits_rev4;
15988 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15989
15990 rfseq_init_gain =
15991 rfseqA_init_gain_rev4_elna;
15992 init_gaincode =
15993 initA_gaincode_rev4_elna;
15994 } else {
15995 rfseq_init_gain = rfseqA_init_gain_rev4;
15996 init_gaincode = initA_gaincode_rev4;
15997 }
15998 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15999 clip1md_gaincode = clip1mdA_gaincode_rev4;
16000 clip1lo_gaincode = clip1loA_gaincode_rev4;
16001 crsmin_th = crsminA_th_rev4;
16002 crsminl_th = crsminlA_th_rev4;
16003 crsminu_th = crsminuA_th_rev4;
16004 nbclip_th = nbclipA_th_rev4;
16005 rssi_gain = rssi_gain_default;
16006 } else {
16007 lna1_gain_db = lna1A_gain_db;
16008 lna2_gain_db = lna2A_gain_db;
16009 tia_gain_db = tiaA_gain_db;
16010 tia_gainbits = tiaA_gainbits;
16011 rfseq_init_gain = rfseqA_init_gain;
16012 init_gaincode = initA_gaincode;
16013 clip1hi_gaincode = clip1hiA_gaincode;
16014 clip1md_gaincode = clip1mdA_gaincode;
16015 clip1lo_gaincode = clip1loA_gaincode;
16016 crsmin_th = crsminA_th;
16017 crsminl_th = crsminlA_th;
16018 crsminu_th = crsminuA_th;
16019 nbclip_th = nbclipA_th;
16020 rssi_gain = rssi_gain_default;
16021 }
16022 w1clip_th = w1clipA_th;
16023 }
16024
16025 write_radio_reg(pi,
16026 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16027 RADIO_2056_RX0), 0x17);
16028 write_radio_reg(pi,
16029 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16030 RADIO_2056_RX1), 0x17);
16031
16032 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16033 0xf0);
16034 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16035 0xf0);
16036
16037 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16038 0x0);
16039 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16040 0x0);
16041
16042 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16043 rssi_gain);
16044 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16045 rssi_gain);
16046
16047 write_radio_reg(pi,
16048 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16049 RADIO_2056_RX0), 0x17);
16050 write_radio_reg(pi,
16051 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16052 RADIO_2056_RX1), 0x17);
16053
16054 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16055 0xFF);
16056 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16057 0xFF);
16058
16059 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16060 8, lna1_gain_db);
16061 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16062 8, lna1_gain_db);
16063
16064 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16065 8, lna2_gain_db);
16066 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16067 8, lna2_gain_db);
16068
16069 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16070 8, tia_gain_db);
16071 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16072 8, tia_gain_db);
16073
16074 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16075 8, tia_gainbits);
16076 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16077 8, tia_gainbits);
16078
16079 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16080 8, &lpf_gain_db);
16081 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16082 8, &lpf_gain_db);
16083 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16084 8, &lpf_gainbits);
16085 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16086 8, &lpf_gainbits);
16087
16088 write_phy_reg(pi, 0x20, init_gaincode);
16089 write_phy_reg(pi, 0x2a7, init_gaincode);
16090
16091 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16092 pi->pubpi.phy_corenum, 0x106, 16,
16093 rfseq_init_gain);
16094
16095 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16096 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16097
16098 write_phy_reg(pi, 0x24, clip1md_gaincode);
16099 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16100
16101 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16102 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16103
16104 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16105 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16106 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16107
16108 write_phy_reg(pi, 0x2b, nbclip_th);
16109 write_phy_reg(pi, 0x41, nbclip_th);
16110
16111 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16112 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16113
16114 write_phy_reg(pi, 0x150, 0x809c);
16115
16116 } else {
16117
16118 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16119 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16120
16121 write_phy_reg(pi, 0x2b, 0x84);
16122 write_phy_reg(pi, 0x41, 0x84);
16123
16124 if (CHSPEC_IS20(pi->radio_chanspec)) {
16125 write_phy_reg(pi, 0x6b, 0x2b);
16126 write_phy_reg(pi, 0x6c, 0x2b);
16127 write_phy_reg(pi, 0x6d, 0x9);
16128 write_phy_reg(pi, 0x6e, 0x9);
16129 }
16130
16131 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16132 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16133 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16134
16135 if (CHSPEC_IS20(pi->radio_chanspec)) {
16136 mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16137 mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16138
16139 mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16140 mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16141 }
16142
16143 write_phy_reg(pi, 0x150, 0x809c);
16144
16145 if (pi->nphy_gain_boost)
16146 if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16147 (CHSPEC_IS40(pi->radio_chanspec)))
16148 hpf_code = 4;
16149 else
16150 hpf_code = 5;
16151 else if (CHSPEC_IS40(pi->radio_chanspec))
16152 hpf_code = 6;
16153 else
16154 hpf_code = 7;
16155
16156 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16157 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16158
16159 for (ctr = 0; ctr < 4; ctr++)
16160 regval[ctr] = (hpf_code << 8) | 0x7c;
16161 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16162
16163 wlc_phy_adjust_lnagaintbl_nphy(pi);
16164
16165 if (pi->nphy_elna_gain_config) {
16166 regval[0] = 0;
16167 regval[1] = 1;
16168 regval[2] = 1;
16169 regval[3] = 1;
16170 wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16171 wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16172
16173 for (ctr = 0; ctr < 4; ctr++)
16174 regval[ctr] = (hpf_code << 8) | 0x74;
16175 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16176 }
16177
16178 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16179 for (ctr = 0; ctr < 21; ctr++)
16180 regval[ctr] = 3 * ctr;
16181 wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16182 wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16183
16184 for (ctr = 0; ctr < 21; ctr++)
16185 regval[ctr] = (u16) ctr;
16186 wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16187 wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16188 }
16189
16190 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16191 rfseq_updategainu_events,
16192 rfseq_updategainu_dlys,
16193 sizeof(rfseq_updategainu_events) /
16194 sizeof(rfseq_updategainu_events[0]));
16195
16196 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16197
16198 if (CHSPEC_IS2G(pi->radio_chanspec))
16199 mod_phy_reg(pi,
16200 (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16201 0x7f, 0x4);
16202 }
16203}
16204
16205static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16206{
16207 u8 rfseq_rx2tx_events[] = {
16208 NPHY_RFSEQ_CMD_NOP,
16209 NPHY_RFSEQ_CMD_RXG_FBW,
16210 NPHY_RFSEQ_CMD_TR_SWITCH,
16211 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16212 NPHY_RFSEQ_CMD_RXPD_TXPD,
16213 NPHY_RFSEQ_CMD_TX_GAIN,
16214 NPHY_RFSEQ_CMD_EXT_PA
16215 };
16216 u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16217 u8 rfseq_tx2rx_events[] = {
16218 NPHY_RFSEQ_CMD_NOP,
16219 NPHY_RFSEQ_CMD_EXT_PA,
16220 NPHY_RFSEQ_CMD_TX_GAIN,
16221 NPHY_RFSEQ_CMD_RXPD_TXPD,
16222 NPHY_RFSEQ_CMD_TR_SWITCH,
16223 NPHY_RFSEQ_CMD_RXG_FBW,
16224 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16225 };
16226 u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16227 u8 rfseq_tx2rx_events_rev3[] = {
16228 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16229 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16230 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16231 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16232 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16233 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16234 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16235 NPHY_REV3_RFSEQ_CMD_END
16236 };
16237 u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16238 u8 rfseq_rx2tx_events_rev3[] = {
16239 NPHY_REV3_RFSEQ_CMD_NOP,
16240 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16241 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16242 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16243 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16244 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16245 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16246 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16247 NPHY_REV3_RFSEQ_CMD_END
16248 };
16249 u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16250
16251 u8 rfseq_rx2tx_events_rev3_ipa[] = {
16252 NPHY_REV3_RFSEQ_CMD_NOP,
16253 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16254 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16255 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16256 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16257 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16258 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16259 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16260 NPHY_REV3_RFSEQ_CMD_END
16261 };
16262 u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16263 u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16264
16265 s16 alpha0, alpha1, alpha2;
16266 s16 beta0, beta1, beta2;
16267 u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16268 stbc_data_weights;
16269 u8 chan_freq_range = 0;
16270 u16 dac_control = 0x0002;
16271 u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16272 u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16273 u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16274 u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16275 u16 *aux_adc_vmid;
16276 u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16277 u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16278 u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16279 u16 *aux_adc_gain;
16280 u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16281 u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16282 s32 min_nvar_val = 0x18d;
16283 s32 min_nvar_offset_6mbps = 20;
16284 u8 pdetrange;
16285 u8 triso;
16286 u16 regval;
16287 u16 afectrl_adc_ctrl1_rev7 = 0x20;
16288 u16 afectrl_adc_ctrl2_rev7 = 0x0;
16289 u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16290 u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16291 u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16292 u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16293 u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16294 u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16295 u16 ipalvlshift_3p3_war_en = 0;
16296 u16 rccal_bcap_val, rccal_scap_val;
16297 u16 rccal_tx20_11b_bcap = 0;
16298 u16 rccal_tx20_11b_scap = 0;
16299 u16 rccal_tx20_11n_bcap = 0;
16300 u16 rccal_tx20_11n_scap = 0;
16301 u16 rccal_tx40_11n_bcap = 0;
16302 u16 rccal_tx40_11n_scap = 0;
16303 u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16304 u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16305 u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16306 u16 tx_lpf_bw_ofdm_20mhz = 0;
16307 u16 tx_lpf_bw_ofdm_40mhz = 0;
16308 u16 tx_lpf_bw_11b = 0;
16309 u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16310 u16 txgm_idac_bleed = 0;
16311 bool rccal_ovrd = false;
16312 u16 freq;
16313 int coreNum;
16314
16315 if (CHSPEC_IS5G(pi->radio_chanspec))
16316 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16317 else
16318 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16319
16320 if (pi->phyhang_avoid)
16321 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16322
16323 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16324
16325 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16326
16327 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16328 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16329
16330 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16331 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16332 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16333 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16334 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16335 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16336 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16337 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16338 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16339 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16340 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16341 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16342 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16343 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16344 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16345 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16346 }
16347
16348 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16349 write_phy_reg(pi, 0x23f, 0x1b0);
16350 write_phy_reg(pi, 0x240, 0x1b0);
16351 }
16352
16353 if (NREV_GE(pi->pubpi.phy_rev, 8))
16354 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16355
16356 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16357 &dac_control);
16358 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16359 &dac_control);
16360
16361 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16362 1, 0, 32, &leg_data_weights);
16363 leg_data_weights = leg_data_weights & 0xffffff;
16364 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16365 1, 0, 32, &leg_data_weights);
16366
16367 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16368 2, 0x15e, 16,
16369 rfseq_rx2tx_dacbufpu_rev7);
16370 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16371 rfseq_rx2tx_dacbufpu_rev7);
16372
16373 if (PHY_IPA(pi))
16374 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16375 rfseq_rx2tx_events_rev3_ipa,
16376 rfseq_rx2tx_dlys_rev3_ipa,
16377 sizeof
16378 (rfseq_rx2tx_events_rev3_ipa) /
16379 sizeof
16380 (rfseq_rx2tx_events_rev3_ipa
16381 [0]));
16382
16383 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16384 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16385
16386 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16387 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16388 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16389
16390 if (PHY_IPA(pi)) {
16391
16392 if (((pi->pubpi.radiorev == 5)
16393 && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16394 || (pi->pubpi.radiorev == 7)
16395 || (pi->pubpi.radiorev == 8)) {
16396
16397 rccal_bcap_val =
16398 read_radio_reg(
16399 pi,
16400 RADIO_2057_RCCAL_BCAP_VAL);
16401 rccal_scap_val =
16402 read_radio_reg(
16403 pi,
16404 RADIO_2057_RCCAL_SCAP_VAL);
16405
16406 rccal_tx20_11b_bcap = rccal_bcap_val;
16407 rccal_tx20_11b_scap = rccal_scap_val;
16408
16409 if ((pi->pubpi.radiorev == 5) &&
16410 (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16411
16412 rccal_tx20_11n_bcap = rccal_bcap_val;
16413 rccal_tx20_11n_scap = rccal_scap_val;
16414 rccal_tx40_11n_bcap = 0xc;
16415 rccal_tx40_11n_scap = 0xc;
16416
16417 rccal_ovrd = true;
16418
16419 } else if ((pi->pubpi.radiorev == 7)
16420 || (pi->pubpi.radiorev == 8)) {
16421
16422 tx_lpf_bw_ofdm_20mhz = 4;
16423 tx_lpf_bw_11b = 1;
16424
16425 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16426 rccal_tx20_11n_bcap = 0xc;
16427 rccal_tx20_11n_scap = 0xc;
16428 rccal_tx40_11n_bcap = 0xa;
16429 rccal_tx40_11n_scap = 0xa;
16430 } else {
16431 rccal_tx20_11n_bcap = 0x14;
16432 rccal_tx20_11n_scap = 0x14;
16433 rccal_tx40_11n_bcap = 0xf;
16434 rccal_tx40_11n_scap = 0xf;
16435 }
16436
16437 rccal_ovrd = true;
16438 }
16439 }
16440
16441 } else {
16442
16443 if (pi->pubpi.radiorev == 5) {
16444
16445 tx_lpf_bw_ofdm_20mhz = 1;
16446 tx_lpf_bw_ofdm_40mhz = 3;
16447
16448 rccal_bcap_val =
16449 read_radio_reg(
16450 pi,
16451 RADIO_2057_RCCAL_BCAP_VAL);
16452 rccal_scap_val =
16453 read_radio_reg(
16454 pi,
16455 RADIO_2057_RCCAL_SCAP_VAL);
16456
16457 rccal_tx20_11b_bcap = rccal_bcap_val;
16458 rccal_tx20_11b_scap = rccal_scap_val;
16459
16460 rccal_tx20_11n_bcap = 0x13;
16461 rccal_tx20_11n_scap = 0x11;
16462 rccal_tx40_11n_bcap = 0x13;
16463 rccal_tx40_11n_scap = 0x11;
16464
16465 rccal_ovrd = true;
16466 }
16467 }
16468
16469 if (rccal_ovrd) {
16470
16471 rx2tx_lpf_rc_lut_tx20_11b =
16472 (rccal_tx20_11b_bcap << 8) |
16473 (rccal_tx20_11b_scap << 3) |
16474 tx_lpf_bw_11b;
16475 rx2tx_lpf_rc_lut_tx20_11n =
16476 (rccal_tx20_11n_bcap << 8) |
16477 (rccal_tx20_11n_scap << 3) |
16478 tx_lpf_bw_ofdm_20mhz;
16479 rx2tx_lpf_rc_lut_tx40_11n =
16480 (rccal_tx40_11n_bcap << 8) |
16481 (rccal_tx40_11n_scap << 3) |
16482 tx_lpf_bw_ofdm_40mhz;
16483
16484 for (coreNum = 0; coreNum <= 1; coreNum++) {
16485 wlc_phy_table_write_nphy(
16486 pi, NPHY_TBL_ID_RFSEQ,
16487 1,
16488 0x152 + coreNum * 0x10,
16489 16,
16490 &rx2tx_lpf_rc_lut_tx20_11b);
16491 wlc_phy_table_write_nphy(
16492 pi, NPHY_TBL_ID_RFSEQ,
16493 1,
16494 0x153 + coreNum * 0x10,
16495 16,
16496 &rx2tx_lpf_rc_lut_tx20_11n);
16497 wlc_phy_table_write_nphy(
16498 pi, NPHY_TBL_ID_RFSEQ,
16499 1,
16500 0x154 + coreNum * 0x10,
16501 16,
16502 &rx2tx_lpf_rc_lut_tx20_11n);
16503 wlc_phy_table_write_nphy(
16504 pi, NPHY_TBL_ID_RFSEQ,
16505 1,
16506 0x155 + coreNum * 0x10,
16507 16,
16508 &rx2tx_lpf_rc_lut_tx40_11n);
16509 wlc_phy_table_write_nphy(
16510 pi, NPHY_TBL_ID_RFSEQ,
16511 1,
16512 0x156 + coreNum * 0x10,
16513 16,
16514 &rx2tx_lpf_rc_lut_tx40_11n);
16515 wlc_phy_table_write_nphy(
16516 pi, NPHY_TBL_ID_RFSEQ,
16517 1,
16518 0x157 + coreNum * 0x10,
16519 16,
16520 &rx2tx_lpf_rc_lut_tx40_11n);
16521 wlc_phy_table_write_nphy(
16522 pi, NPHY_TBL_ID_RFSEQ,
16523 1,
16524 0x158 + coreNum * 0x10,
16525 16,
16526 &rx2tx_lpf_rc_lut_tx40_11n);
16527 wlc_phy_table_write_nphy(
16528 pi, NPHY_TBL_ID_RFSEQ,
16529 1,
16530 0x159 + coreNum * 0x10,
16531 16,
16532 &rx2tx_lpf_rc_lut_tx40_11n);
16533 }
16534
16535 wlc_phy_rfctrl_override_nphy_rev7(
16536 pi, (0x1 << 4),
16537 1, 0x3, 0,
16538 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16539 }
16540
16541 write_phy_reg(pi, 0x32f, 0x3);
16542
16543 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16544 wlc_phy_rfctrl_override_nphy_rev7(
16545 pi, (0x1 << 2),
16546 1, 0x3, 0,
16547 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16548
16549 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16550 (pi->pubpi.radiorev == 6)) {
16551 if ((pi->sh->sromrev >= 8)
16552 && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16553 ipalvlshift_3p3_war_en = 1;
16554
16555 if (ipalvlshift_3p3_war_en) {
16556 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16557 0x5);
16558 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16559 0x30);
16560 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16561 or_radio_reg(pi,
16562 RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16563 0x1);
16564 or_radio_reg(pi,
16565 RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16566 0x1);
16567
16568 ipa2g_mainbias = 0x1f;
16569
16570 ipa2g_casconv = 0x6f;
16571
16572 ipa2g_biasfilt = 0xaa;
16573 } else {
16574
16575 ipa2g_mainbias = 0x2b;
16576
16577 ipa2g_casconv = 0x7f;
16578
16579 ipa2g_biasfilt = 0xee;
16580 }
16581
16582 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16583 for (coreNum = 0; coreNum <= 1; coreNum++) {
16584 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16585 coreNum, IPA2G_IMAIN,
16586 ipa2g_mainbias);
16587 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16588 coreNum, IPA2G_CASCONV,
16589 ipa2g_casconv);
16590 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16591 coreNum,
16592 IPA2G_BIAS_FILTER,
16593 ipa2g_biasfilt);
16594 }
16595 }
16596 }
16597
16598 if (PHY_IPA(pi)) {
16599 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16600 if ((pi->pubpi.radiorev == 3)
16601 || (pi->pubpi.radiorev == 4)
16602 || (pi->pubpi.radiorev == 6))
16603 txgm_idac_bleed = 0x7f;
16604
16605 for (coreNum = 0; coreNum <= 1; coreNum++) {
16606 if (txgm_idac_bleed != 0)
16607 WRITE_RADIO_REG4(
16608 pi, RADIO_2057,
16609 CORE, coreNum,
16610 TXGM_IDAC_BLEED,
16611 txgm_idac_bleed);
16612 }
16613
16614 if (pi->pubpi.radiorev == 5) {
16615
16616 for (coreNum = 0; coreNum <= 1;
16617 coreNum++) {
16618 WRITE_RADIO_REG4(pi, RADIO_2057,
16619 CORE, coreNum,
16620 IPA2G_CASCONV,
16621 0x13);
16622 WRITE_RADIO_REG4(pi, RADIO_2057,
16623 CORE, coreNum,
16624 IPA2G_IMAIN,
16625 0x1f);
16626 WRITE_RADIO_REG4(
16627 pi, RADIO_2057,
16628 CORE, coreNum,
16629 IPA2G_BIAS_FILTER,
16630 0xee);
16631 WRITE_RADIO_REG4(pi, RADIO_2057,
16632 CORE, coreNum,
16633 PAD2G_IDACS,
16634 0x8a);
16635 WRITE_RADIO_REG4(
16636 pi, RADIO_2057,
16637 CORE, coreNum,
16638 PAD_BIAS_FILTER_BWS,
16639 0x3e);
16640 }
16641
16642 } else if ((pi->pubpi.radiorev == 7)
16643 || (pi->pubpi.radiorev == 8)) {
16644
16645 if (CHSPEC_IS40(pi->radio_chanspec) ==
16646 0) {
16647 WRITE_RADIO_REG4(pi, RADIO_2057,
16648 CORE, 0,
16649 IPA2G_IMAIN,
16650 0x14);
16651 WRITE_RADIO_REG4(pi, RADIO_2057,
16652 CORE, 1,
16653 IPA2G_IMAIN,
16654 0x12);
16655 } else {
16656 WRITE_RADIO_REG4(pi, RADIO_2057,
16657 CORE, 0,
16658 IPA2G_IMAIN,
16659 0x16);
16660 WRITE_RADIO_REG4(pi, RADIO_2057,
16661 CORE, 1,
16662 IPA2G_IMAIN,
16663 0x16);
16664 }
16665 }
16666
16667 } else {
16668 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16669 pi->radio_chanspec));
16670 if (((freq >= 5180) && (freq <= 5230))
16671 || ((freq >= 5745) && (freq <= 5805))) {
16672 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16673 0, IPA5G_BIAS_FILTER,
16674 0xff);
16675 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16676 1, IPA5G_BIAS_FILTER,
16677 0xff);
16678 }
16679 }
16680 } else {
16681
16682 if (pi->pubpi.radiorev != 5) {
16683 for (coreNum = 0; coreNum <= 1; coreNum++) {
16684 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16685 coreNum,
16686 TXMIX2G_TUNE_BOOST_PU,
16687 0x61);
16688 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16689 coreNum,
16690 TXGM_IDAC_BLEED, 0x70);
16691 }
16692 }
16693 }
16694
16695 if (pi->pubpi.radiorev == 4) {
16696 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16697 0x05, 16,
16698 &afectrl_adc_ctrl1_rev7);
16699 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16700 0x15, 16,
16701 &afectrl_adc_ctrl1_rev7);
16702
16703 for (coreNum = 0; coreNum <= 1; coreNum++) {
16704 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16705 AFE_VCM_CAL_MASTER, 0x0);
16706 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16707 AFE_SET_VCM_I, 0x3f);
16708 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16709 AFE_SET_VCM_Q, 0x3f);
16710 }
16711 } else {
16712 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16713 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16714 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16715 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16716
16717 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16718 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16719 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16720 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16721
16722 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16723 0x05, 16,
16724 &afectrl_adc_ctrl2_rev7);
16725 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16726 0x15, 16,
16727 &afectrl_adc_ctrl2_rev7);
16728
16729 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16730 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16731 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16732 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16733 }
16734
16735 write_phy_reg(pi, 0x6a, 0x2);
16736
16737 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16738 &min_nvar_offset_6mbps);
16739
16740 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16741 &rfseq_pktgn_lpf_hpc_rev7);
16742
16743 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16744 &rfseq_pktgn_lpf_h_hpc_rev7);
16745
16746 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16747 &rfseq_htpktgn_lpf_hpc_rev7);
16748
16749 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16750 &rfseq_cckpktgn_lpf_hpc_rev7);
16751
16752 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16753 &rfseq_tx2rx_lpf_h_hpc_rev7);
16754
16755 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16756 &rfseq_rx2tx_lpf_h_hpc_rev7);
16757
16758 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16759 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16760 32, &min_nvar_val);
16761 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16762 127, 32, &min_nvar_val);
16763 } else {
16764 min_nvar_val = noise_var_tbl_rev7[3];
16765 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16766 32, &min_nvar_val);
16767
16768 min_nvar_val = noise_var_tbl_rev7[127];
16769 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16770 127, 32, &min_nvar_val);
16771 }
16772
16773 wlc_phy_workarounds_nphy_gainctrl(pi);
16774
16775 pdetrange =
16776 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16777 pdetrange : pi->srom_fem2g.pdetrange;
16778
16779 if (pdetrange == 0) {
16780 chan_freq_range =
16781 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16782 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16783 aux_adc_vmid_rev7_core0[3] = 0x70;
16784 aux_adc_vmid_rev7_core1[3] = 0x70;
16785 aux_adc_gain_rev7[3] = 2;
16786 } else {
16787 aux_adc_vmid_rev7_core0[3] = 0x80;
16788 aux_adc_vmid_rev7_core1[3] = 0x80;
16789 aux_adc_gain_rev7[3] = 3;
16790 }
16791 } else if (pdetrange == 1) {
16792 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16793 aux_adc_vmid_rev7_core0[3] = 0x7c;
16794 aux_adc_vmid_rev7_core1[3] = 0x7c;
16795 aux_adc_gain_rev7[3] = 2;
16796 } else {
16797 aux_adc_vmid_rev7_core0[3] = 0x8c;
16798 aux_adc_vmid_rev7_core1[3] = 0x8c;
16799 aux_adc_gain_rev7[3] = 1;
16800 }
16801 } else if (pdetrange == 2) {
16802 if (pi->pubpi.radioid == BCM2057_ID) {
16803 if ((pi->pubpi.radiorev == 5)
16804 || (pi->pubpi.radiorev == 7)
16805 || (pi->pubpi.radiorev == 8)) {
16806 if (chan_freq_range ==
16807 WL_CHAN_FREQ_RANGE_2G) {
16808 aux_adc_vmid_rev7_core0[3] =
16809 0x8c;
16810 aux_adc_vmid_rev7_core1[3] =
16811 0x8c;
16812 aux_adc_gain_rev7[3] = 0;
16813 } else {
16814 aux_adc_vmid_rev7_core0[3] =
16815 0x96;
16816 aux_adc_vmid_rev7_core1[3] =
16817 0x96;
16818 aux_adc_gain_rev7[3] = 0;
16819 }
16820 }
16821 }
16822
16823 } else if (pdetrange == 3) {
16824 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16825 aux_adc_vmid_rev7_core0[3] = 0x89;
16826 aux_adc_vmid_rev7_core1[3] = 0x89;
16827 aux_adc_gain_rev7[3] = 0;
16828 }
16829
16830 } else if (pdetrange == 5) {
16831
16832 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16833 aux_adc_vmid_rev7_core0[3] = 0x80;
16834 aux_adc_vmid_rev7_core1[3] = 0x80;
16835 aux_adc_gain_rev7[3] = 3;
16836 } else {
16837 aux_adc_vmid_rev7_core0[3] = 0x70;
16838 aux_adc_vmid_rev7_core1[3] = 0x70;
16839 aux_adc_gain_rev7[3] = 2;
16840 }
16841 }
16842
16843 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16844 &aux_adc_vmid_rev7_core0);
16845 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16846 &aux_adc_vmid_rev7_core1);
16847 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16848 &aux_adc_gain_rev7);
16849 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16850 &aux_adc_gain_rev7);
16851
16852 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16853
16854 write_phy_reg(pi, 0x23f, 0x1f8);
16855 write_phy_reg(pi, 0x240, 0x1f8);
16856
16857 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16858 1, 0, 32, &leg_data_weights);
16859 leg_data_weights = leg_data_weights & 0xffffff;
16860 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16861 1, 0, 32, &leg_data_weights);
16862
16863 alpha0 = 293;
16864 alpha1 = 435;
16865 alpha2 = 261;
16866 beta0 = 366;
16867 beta1 = 205;
16868 beta2 = 32;
16869 write_phy_reg(pi, 0x145, alpha0);
16870 write_phy_reg(pi, 0x146, alpha1);
16871 write_phy_reg(pi, 0x147, alpha2);
16872 write_phy_reg(pi, 0x148, beta0);
16873 write_phy_reg(pi, 0x149, beta1);
16874 write_phy_reg(pi, 0x14a, beta2);
16875
16876 write_phy_reg(pi, 0x38, 0xC);
16877 write_phy_reg(pi, 0x2ae, 0xC);
16878
16879 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16880 rfseq_tx2rx_events_rev3,
16881 rfseq_tx2rx_dlys_rev3,
16882 sizeof(rfseq_tx2rx_events_rev3) /
16883 sizeof(rfseq_tx2rx_events_rev3[0]));
16884
16885 if (PHY_IPA(pi))
16886 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16887 rfseq_rx2tx_events_rev3_ipa,
16888 rfseq_rx2tx_dlys_rev3_ipa,
16889 sizeof
16890 (rfseq_rx2tx_events_rev3_ipa) /
16891 sizeof
16892 (rfseq_rx2tx_events_rev3_ipa
16893 [0]));
16894
16895 if ((pi->sh->hw_phyrxchain != 0x3) &&
16896 (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16897
16898 if (PHY_IPA(pi)) {
16899 rfseq_rx2tx_dlys_rev3[5] = 59;
16900 rfseq_rx2tx_dlys_rev3[6] = 1;
16901 rfseq_rx2tx_events_rev3[7] =
16902 NPHY_REV3_RFSEQ_CMD_END;
16903 }
16904
16905 wlc_phy_set_rfseq_nphy(
16906 pi, NPHY_RFSEQ_RX2TX,
16907 rfseq_rx2tx_events_rev3,
16908 rfseq_rx2tx_dlys_rev3,
16909 sizeof(rfseq_rx2tx_events_rev3) /
16910 sizeof(rfseq_rx2tx_events_rev3[0]));
16911 }
16912
16913 if (CHSPEC_IS2G(pi->radio_chanspec))
16914 write_phy_reg(pi, 0x6a, 0x2);
16915 else
16916 write_phy_reg(pi, 0x6a, 0x9c40);
16917
16918 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16919
16920 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16921 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16922 32, &min_nvar_val);
16923 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16924 127, 32, &min_nvar_val);
16925 } else {
16926 min_nvar_val = noise_var_tbl_rev3[3];
16927 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16928 32, &min_nvar_val);
16929
16930 min_nvar_val = noise_var_tbl_rev3[127];
16931 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16932 127, 32, &min_nvar_val);
16933 }
16934
16935 wlc_phy_workarounds_nphy_gainctrl(pi);
16936
16937 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16938 &dac_control);
16939 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16940 &dac_control);
16941
16942 pdetrange =
16943 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16944 pdetrange : pi->srom_fem2g.pdetrange;
16945
16946 if (pdetrange == 0) {
16947 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16948 aux_adc_vmid = aux_adc_vmid_rev4;
16949 aux_adc_gain = aux_adc_gain_rev4;
16950 } else {
16951 aux_adc_vmid = aux_adc_vmid_rev3;
16952 aux_adc_gain = aux_adc_gain_rev3;
16953 }
16954 chan_freq_range =
16955 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16956 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16957 switch (chan_freq_range) {
16958 case WL_CHAN_FREQ_RANGE_5GL:
16959 aux_adc_vmid[3] = 0x89;
16960 aux_adc_gain[3] = 0;
16961 break;
16962 case WL_CHAN_FREQ_RANGE_5GM:
16963 aux_adc_vmid[3] = 0x89;
16964 aux_adc_gain[3] = 0;
16965 break;
16966 case WL_CHAN_FREQ_RANGE_5GH:
16967 aux_adc_vmid[3] = 0x89;
16968 aux_adc_gain[3] = 0;
16969 break;
16970 default:
16971 break;
16972 }
16973 }
16974 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16975 0x08, 16, aux_adc_vmid);
16976 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16977 0x18, 16, aux_adc_vmid);
16978 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16979 0x0c, 16, aux_adc_gain);
16980 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16981 0x1c, 16, aux_adc_gain);
16982 } else if (pdetrange == 1) {
16983 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16984 0x08, 16, sk_adc_vmid);
16985 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16986 0x18, 16, sk_adc_vmid);
16987 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16988 0x0c, 16, sk_adc_gain);
16989 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16990 0x1c, 16, sk_adc_gain);
16991 } else if (pdetrange == 2) {
16992
16993 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16994 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16995
16996 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16997 chan_freq_range =
16998 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16999 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17000 bcm_adc_vmid[3] = 0x8e;
17001 bcm_adc_gain[3] = 0x03;
17002 } else {
17003 bcm_adc_vmid[3] = 0x94;
17004 bcm_adc_gain[3] = 0x03;
17005 }
17006 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17007 bcm_adc_vmid[3] = 0x84;
17008 bcm_adc_gain[3] = 0x02;
17009 }
17010
17011 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17012 0x08, 16, bcm_adc_vmid);
17013 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17014 0x18, 16, bcm_adc_vmid);
17015 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17016 0x0c, 16, bcm_adc_gain);
17017 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17018 0x1c, 16, bcm_adc_gain);
17019 } else if (pdetrange == 3) {
17020 chan_freq_range =
17021 wlc_phy_get_chan_freq_range_nphy(pi, 0);
17022 if ((NREV_GE(pi->pubpi.phy_rev, 4))
17023 && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
17024
17025 u16 auxadc_vmid[] = {
17026 0xa2, 0xb4, 0xb4, 0x270
17027 };
17028 u16 auxadc_gain[] = {
17029 0x02, 0x02, 0x02, 0x00
17030 };
17031
17032 wlc_phy_table_write_nphy(pi,
17033 NPHY_TBL_ID_AFECTRL, 4,
17034 0x08, 16, auxadc_vmid);
17035 wlc_phy_table_write_nphy(pi,
17036 NPHY_TBL_ID_AFECTRL, 4,
17037 0x18, 16, auxadc_vmid);
17038 wlc_phy_table_write_nphy(pi,
17039 NPHY_TBL_ID_AFECTRL, 4,
17040 0x0c, 16, auxadc_gain);
17041 wlc_phy_table_write_nphy(pi,
17042 NPHY_TBL_ID_AFECTRL, 4,
17043 0x1c, 16, auxadc_gain);
17044 }
17045 } else if ((pdetrange == 4) || (pdetrange == 5)) {
17046 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
17047 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
17048 u16 Vmid[2], Av[2];
17049
17050 chan_freq_range =
17051 wlc_phy_get_chan_freq_range_nphy(pi, 0);
17052 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17053 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
17054 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
17055 Av[0] = (pdetrange == 4) ? 2 : 0;
17056 Av[1] = (pdetrange == 4) ? 2 : 0;
17057 } else {
17058 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
17059 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
17060 Av[0] = (pdetrange == 4) ? 2 : 0;
17061 Av[1] = (pdetrange == 4) ? 2 : 0;
17062 }
17063
17064 bcm_adc_vmid[3] = Vmid[0];
17065 bcm_adc_gain[3] = Av[0];
17066 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17067 0x08, 16, bcm_adc_vmid);
17068 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17069 0x0c, 16, bcm_adc_gain);
17070
17071 bcm_adc_vmid[3] = Vmid[1];
17072 bcm_adc_gain[3] = Av[1];
17073 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17074 0x18, 16, bcm_adc_vmid);
17075 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17076 0x1c, 16, bcm_adc_gain);
17077 }
17078
17079 write_radio_reg(pi,
17080 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
17081 0x0);
17082 write_radio_reg(pi,
17083 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
17084 0x0);
17085
17086 write_radio_reg(pi,
17087 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
17088 0x6);
17089 write_radio_reg(pi,
17090 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
17091 0x6);
17092
17093 write_radio_reg(pi,
17094 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
17095 0x7);
17096 write_radio_reg(pi,
17097 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
17098 0x7);
17099
17100 write_radio_reg(pi,
17101 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
17102 0x88);
17103 write_radio_reg(pi,
17104 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
17105 0x88);
17106
17107 write_radio_reg(pi,
17108 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
17109 0x0);
17110 write_radio_reg(pi,
17111 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
17112 0x0);
17113
17114 write_radio_reg(pi,
17115 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
17116 0x0);
17117 write_radio_reg(pi,
17118 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
17119 0x0);
17120
17121 triso =
17122 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
17123 triso : pi->srom_fem2g.triso;
17124 if (triso == 7) {
17125 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
17126 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
17127 }
17128
17129 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
17130
17131 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
17132 (CHSPEC_IS5G(pi->radio_chanspec))) ||
17133 (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
17134 (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
17135 (CHSPEC_IS2G(pi->radio_chanspec)))) {
17136 nss1_data_weights = 0x00088888;
17137 ht_data_weights = 0x00088888;
17138 stbc_data_weights = 0x00088888;
17139 } else {
17140 nss1_data_weights = 0x88888888;
17141 ht_data_weights = 0x88888888;
17142 stbc_data_weights = 0x88888888;
17143 }
17144 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17145 1, 1, 32, &nss1_data_weights);
17146 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17147 1, 2, 32, &ht_data_weights);
17148 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17149 1, 3, 32, &stbc_data_weights);
17150
17151 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17152 if (CHSPEC_IS5G(pi->radio_chanspec)) {
17153 write_radio_reg(pi,
17154 RADIO_2056_TX_GMBB_IDAC |
17155 RADIO_2056_TX0, 0x70);
17156 write_radio_reg(pi,
17157 RADIO_2056_TX_GMBB_IDAC |
17158 RADIO_2056_TX1, 0x70);
17159 }
17160 }
17161
17162 if (!pi->edcrs_threshold_lock) {
17163 write_phy_reg(pi, 0x224, 0x3eb);
17164 write_phy_reg(pi, 0x225, 0x3eb);
17165 write_phy_reg(pi, 0x226, 0x341);
17166 write_phy_reg(pi, 0x227, 0x341);
17167 write_phy_reg(pi, 0x228, 0x42b);
17168 write_phy_reg(pi, 0x229, 0x42b);
17169 write_phy_reg(pi, 0x22a, 0x381);
17170 write_phy_reg(pi, 0x22b, 0x381);
17171 write_phy_reg(pi, 0x22c, 0x42b);
17172 write_phy_reg(pi, 0x22d, 0x42b);
17173 write_phy_reg(pi, 0x22e, 0x381);
17174 write_phy_reg(pi, 0x22f, 0x381);
17175 }
17176
17177 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17178
17179 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17180 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17181 MHF4_BPHY_TXCORE0,
17182 MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17183 }
17184 } else {
17185
17186 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17187 (pi->sh->boardtype == 0x8b)) {
17188 uint i;
17189 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17190 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17191 rfseq_rx2tx_dlys[i] = war_dlys[i];
17192 }
17193
17194 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17195 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17196 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17197 } else {
17198 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17199 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17200 }
17201
17202 regval = 0x000a;
17203 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17204 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17205
17206 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17207 regval = 0xcdaa;
17208 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17209 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17210 }
17211
17212 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17213 regval = 0x0000;
17214 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17215 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17216
17217 regval = 0x7aab;
17218 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17219 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17220
17221 regval = 0x0800;
17222 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17223 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17224 }
17225
17226 write_phy_reg(pi, 0xf8, 0x02d8);
17227 write_phy_reg(pi, 0xf9, 0x0301);
17228 write_phy_reg(pi, 0xfa, 0x02d8);
17229 write_phy_reg(pi, 0xfb, 0x0301);
17230
17231 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17232 rfseq_rx2tx_dlys,
17233 sizeof(rfseq_rx2tx_events) /
17234 sizeof(rfseq_rx2tx_events[0]));
17235
17236 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17237 rfseq_tx2rx_dlys,
17238 sizeof(rfseq_tx2rx_events) /
17239 sizeof(rfseq_tx2rx_events[0]));
17240
17241 wlc_phy_workarounds_nphy_gainctrl(pi);
17242
17243 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17244
17245 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17246 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17247 MHF3_NPHY_MLADV_WAR,
17248 MHF3_NPHY_MLADV_WAR,
17249 BRCM_BAND_ALL);
17250
17251 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17252 write_phy_reg(pi, 0x1e3, 0x0);
17253 write_phy_reg(pi, 0x1e4, 0x0);
17254 }
17255
17256 if (NREV_LT(pi->pubpi.phy_rev, 2))
17257 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17258
17259 alpha0 = 293;
17260 alpha1 = 435;
17261 alpha2 = 261;
17262 beta0 = 366;
17263 beta1 = 205;
17264 beta2 = 32;
17265 write_phy_reg(pi, 0x145, alpha0);
17266 write_phy_reg(pi, 0x146, alpha1);
17267 write_phy_reg(pi, 0x147, alpha2);
17268 write_phy_reg(pi, 0x148, beta0);
17269 write_phy_reg(pi, 0x149, beta1);
17270 write_phy_reg(pi, 0x14a, beta2);
17271
17272 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17273 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17274
17275 write_phy_reg(pi, 0x192, 0xb5);
17276 write_phy_reg(pi, 0x193, 0xa4);
17277 write_phy_reg(pi, 0x194, 0x0);
17278 }
17279
17280 if (NREV_IS(pi->pubpi.phy_rev, 2))
17281 mod_phy_reg(pi, 0x221,
17282 NPHY_FORCESIG_DECODEGATEDCLKS,
17283 NPHY_FORCESIG_DECODEGATEDCLKS);
17284 }
17285
17286 if (pi->phyhang_avoid)
17287 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17288}
17289
17290static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17291{
17292 int j, type = 2;
17293 u16 addr_offset = 0x2c5;
17294
17295 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17296 write_phy_reg(pi, addr_offset + j,
17297 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17298}
17299
17300static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17301{
17302
17303 if (write == 0) {
17304 vals[0] = read_phy_reg(pi, 0x2c);
17305 vals[1] = read_phy_reg(pi, 0x42);
17306 } else {
17307 write_phy_reg(pi, 0x2c, vals[0]);
17308 write_phy_reg(pi, 0x42, vals[1]);
17309 }
17310}
17311
17312static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17313{
17314 u8 core;
17315
17316 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17317 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17318 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17319 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17320 TX_SSI_MASTER, 0x5);
17321 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17322 TX_SSI_MUX, 0xe);
17323
17324 if (pi->pubpi.radiorev != 5)
17325 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17326 core, TSSIA, 0);
17327
17328 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17329 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17330 core, TSSIG, 0x1);
17331 else
17332 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17333 core, TSSIG, 0x31);
17334 } else {
17335 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17336 TX_SSI_MASTER, 0x9);
17337 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17338 TX_SSI_MUX, 0xc);
17339 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17340 TSSIG, 0);
17341
17342 if (pi->pubpi.radiorev != 5) {
17343 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17344 WRITE_RADIO_REG3(pi, RADIO_2057,
17345 TX, core,
17346 TSSIA, 0x1);
17347 else
17348 WRITE_RADIO_REG3(pi, RADIO_2057,
17349 TX, core,
17350 TSSIA, 0x31);
17351 }
17352 }
17353 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17354 0);
17355 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17356 0);
17357 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17358 0x3);
17359 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17360 0x0);
17361 }
17362 } else {
17363 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17364 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17365 0x80);
17366 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17367 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17368
17369 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17370 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17371 0x0);
17372 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17373 0x0);
17374 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17375 0x3);
17376 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17377 0x0);
17378 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17379 0x8);
17380 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17381 0x0);
17382 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17383 0x0);
17384
17385 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17386 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17387 TX_SSI_MASTER, 0x5);
17388
17389 if (pi->pubpi.radiorev != 5)
17390 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17391 core, TSSIA, 0x0);
17392 if (NREV_GE(pi->pubpi.phy_rev, 5))
17393 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17394 core, TSSIG, 0x31);
17395 else
17396 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17397 core, TSSIG, 0x11);
17398 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17399 TX_SSI_MUX, 0xe);
17400 } else {
17401 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17402 TX_SSI_MASTER, 0x9);
17403 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17404 TSSIA, 0x31);
17405 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17406 TSSIG, 0x0);
17407 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17408 TX_SSI_MUX, 0xc);
17409 }
17410 }
17411 }
17412}
17413
17414static void
17415wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17416 u8 core_mask, u8 off)
17417{
17418 u8 core_num;
17419 u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17420 0, val_mask = 0;
17421 u8 shift = 0, val_shift = 0;
17422
17423 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17424
17425 en_mask = field;
17426 for (core_num = 0; core_num < 2; core_num++) {
17427
17428 switch (field) {
17429 case (0x1 << 1):
17430 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17431 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17432 val_mask = (0x1 << 0);
17433 val_shift = 0;
17434 break;
17435 case (0x1 << 2):
17436 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17437 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17438 val_mask = (0x1 << 1);
17439 val_shift = 1;
17440 break;
17441 case (0x1 << 3):
17442 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17443 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17444 val_mask = (0x1 << 2);
17445 val_shift = 2;
17446 break;
17447 case (0x1 << 4):
17448 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17449 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17450 val_mask = (0x1 << 4);
17451 val_shift = 4;
17452 break;
17453 case (0x1 << 5):
17454 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17455 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17456 val_mask = (0x1 << 5);
17457 val_shift = 5;
17458 break;
17459 case (0x1 << 6):
17460 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17461 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17462 val_mask = (0x1 << 6);
17463 val_shift = 6;
17464 break;
17465 case (0x1 << 7):
17466 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17467 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17468 val_mask = (0x1 << 7);
17469 val_shift = 7;
17470 break;
17471 case (0x1 << 8):
17472 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17473 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17474 val_mask = (0x7 << 8);
17475 val_shift = 8;
17476 break;
17477 case (0x1 << 11):
17478 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17479 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17480 val_mask = (0x7 << 13);
17481 val_shift = 13;
17482 break;
17483
17484 case (0x1 << 9):
17485 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17486 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17487 val_mask = (0x7 << 0);
17488 val_shift = 0;
17489 break;
17490
17491 case (0x1 << 10):
17492 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17493 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17494 val_mask = (0x7 << 4);
17495 val_shift = 4;
17496 break;
17497
17498 case (0x1 << 12):
17499 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17500 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17501 val_mask = (0xffff << 0);
17502 val_shift = 0;
17503 break;
17504 case (0x1 << 13):
17505 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17506 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17507 val_mask = (0xffff << 0);
17508 val_shift = 0;
17509 break;
17510 case (0x1 << 14):
17511 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17512 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17513 val_mask = (0x3 << 6);
17514 val_shift = 6;
17515 break;
17516 case (0x1 << 0):
17517 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17518 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17519 val_mask = (0x1 << 15);
17520 val_shift = 15;
17521 break;
17522 default:
17523 addr = 0xffff;
17524 break;
17525 }
17526
17527 if (off) {
17528 and_phy_reg(pi, en_addr, ~en_mask);
17529 and_phy_reg(pi, val_addr, ~val_mask);
17530 } else {
17531
17532 if ((core_mask == 0)
17533 || (core_mask & (1 << core_num))) {
17534 or_phy_reg(pi, en_addr, en_mask);
17535
17536 if (addr != 0xffff)
17537 mod_phy_reg(pi, val_addr,
17538 val_mask,
17539 (value <<
17540 val_shift));
17541 }
17542 }
17543 }
17544 } else {
17545
17546 if (off) {
17547 and_phy_reg(pi, 0xec, ~field);
17548 value = 0x0;
17549 } else {
17550 or_phy_reg(pi, 0xec, field);
17551 }
17552
17553 for (core_num = 0; core_num < 2; core_num++) {
17554
17555 switch (field) {
17556 case (0x1 << 1):
17557 case (0x1 << 9):
17558 case (0x1 << 12):
17559 case (0x1 << 13):
17560 case (0x1 << 14):
17561 addr = 0x78;
17562
17563 core_mask = 0x1;
17564 break;
17565 case (0x1 << 2):
17566 case (0x1 << 3):
17567 case (0x1 << 4):
17568 case (0x1 << 5):
17569 case (0x1 << 6):
17570 case (0x1 << 7):
17571 case (0x1 << 8):
17572 addr = (core_num == 0) ? 0x7a : 0x7d;
17573 break;
17574 case (0x1 << 10):
17575 addr = (core_num == 0) ? 0x7b : 0x7e;
17576 break;
17577 case (0x1 << 11):
17578 addr = (core_num == 0) ? 0x7c : 0x7f;
17579 break;
17580 default:
17581 addr = 0xffff;
17582 }
17583
17584 switch (field) {
17585 case (0x1 << 1):
17586 mask = (0x7 << 3);
17587 shift = 3;
17588 break;
17589 case (0x1 << 9):
17590 mask = (0x1 << 2);
17591 shift = 2;
17592 break;
17593 case (0x1 << 12):
17594 mask = (0x1 << 8);
17595 shift = 8;
17596 break;
17597 case (0x1 << 13):
17598 mask = (0x1 << 9);
17599 shift = 9;
17600 break;
17601 case (0x1 << 14):
17602 mask = (0xf << 12);
17603 shift = 12;
17604 break;
17605 case (0x1 << 2):
17606 mask = (0x1 << 0);
17607 shift = 0;
17608 break;
17609 case (0x1 << 3):
17610 mask = (0x1 << 1);
17611 shift = 1;
17612 break;
17613 case (0x1 << 4):
17614 mask = (0x1 << 2);
17615 shift = 2;
17616 break;
17617 case (0x1 << 5):
17618 mask = (0x3 << 4);
17619 shift = 4;
17620 break;
17621 case (0x1 << 6):
17622 mask = (0x3 << 6);
17623 shift = 6;
17624 break;
17625 case (0x1 << 7):
17626 mask = (0x1 << 8);
17627 shift = 8;
17628 break;
17629 case (0x1 << 8):
17630 mask = (0x1 << 9);
17631 shift = 9;
17632 break;
17633 case (0x1 << 10):
17634 mask = 0x1fff;
17635 shift = 0x0;
17636 break;
17637 case (0x1 << 11):
17638 mask = 0x1fff;
17639 shift = 0x0;
17640 break;
17641 default:
17642 mask = 0x0;
17643 shift = 0x0;
17644 break;
17645 }
17646
17647 if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17648 mod_phy_reg(pi, addr, mask, (value << shift));
17649 }
17650
17651 or_phy_reg(pi, 0xec, (0x1 << 0));
17652 or_phy_reg(pi, 0x78, (0x1 << 0));
17653 udelay(1);
17654 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17655 }
17656}
17657
17658static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17659{
17660 s32 rssi_buf[4];
17661 s32 int_val;
17662
17663 if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17664
17665 return;
17666
17667 if (PHY_IPA(pi))
17668 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17669
17670 if (NREV_GE(pi->pubpi.phy_rev, 7))
17671 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17672 0, 0x3, 0,
17673 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17674 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17675 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17676
17677 wlc_phy_stopplayback_nphy(pi);
17678
17679 wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17680
17681 udelay(20);
17682 int_val =
17683 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17684 1);
17685 wlc_phy_stopplayback_nphy(pi);
17686 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17687
17688 if (NREV_GE(pi->pubpi.phy_rev, 7))
17689 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17690 0, 0x3, 1,
17691 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17692 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17693 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17694
17695 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17696
17697 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17698 (u8) ((int_val >> 24) & 0xff);
17699 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17700 (u8) ((int_val >> 24) & 0xff);
17701
17702 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17703 (u8) ((int_val >> 8) & 0xff);
17704 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17705 (u8) ((int_val >> 8) & 0xff);
17706 } else {
17707 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17708 (u8) ((int_val >> 24) & 0xff);
17709
17710 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17711 (u8) ((int_val >> 8) & 0xff);
17712
17713 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17714 (u8) ((int_val >> 16) & 0xff);
17715 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17716 (u8) ((int_val) & 0xff);
17717 }
17718
17719}
17720
17721static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17722{
17723 u8 idx, idx2, i, delta_ind;
17724
17725 for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17726 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17727
17728 for (i = 0; i < 4; i++) {
17729 idx2 = 0;
17730
17731 delta_ind = 0;
17732
17733 switch (i) {
17734 case 0:
17735
17736 if (CHSPEC_IS40(pi->radio_chanspec)
17737 && NPHY_IS_SROM_REINTERPRET) {
17738 idx = TXP_FIRST_MCS_40_SISO;
17739 } else {
17740 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17741 TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17742 delta_ind = 1;
17743 }
17744 break;
17745
17746 case 1:
17747
17748 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17749 TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17750 break;
17751
17752 case 2:
17753
17754 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17755 TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17756 break;
17757
17758 case 3:
17759
17760 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17761 TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17762 break;
17763 }
17764
17765 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17766 pi->tx_power_offset[idx];
17767 idx = idx + delta_ind;
17768 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17769 pi->tx_power_offset[idx];
17770 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17771 pi->tx_power_offset[idx];
17772 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17773 pi->tx_power_offset[idx++];
17774
17775 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17776 pi->tx_power_offset[idx++];
17777 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17778 pi->tx_power_offset[idx];
17779 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17780 pi->tx_power_offset[idx];
17781 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17782 pi->tx_power_offset[idx++];
17783
17784 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17785 pi->tx_power_offset[idx++];
17786 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17787 pi->tx_power_offset[idx];
17788 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17789 pi->tx_power_offset[idx];
17790 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17791 pi->tx_power_offset[idx++];
17792
17793 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17794 pi->tx_power_offset[idx];
17795 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17796 pi->tx_power_offset[idx++];
17797 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17798 pi->tx_power_offset[idx];
17799 idx = idx + 1 - delta_ind;
17800 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17801 pi->tx_power_offset[idx];
17802
17803 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17804 pi->tx_power_offset[idx];
17805 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17806 pi->tx_power_offset[idx];
17807 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17808 pi->tx_power_offset[idx];
17809 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17810 pi->tx_power_offset[idx];
17811 }
17812}
17813
17814static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17815{
17816 u32 idx;
17817 s16 a1[2], b0[2], b1[2];
17818 s8 target_pwr_qtrdbm[2];
17819 s32 num, den, pwr_est;
17820 u8 chan_freq_range;
17821 u8 idle_tssi[2];
17822 u32 tbl_id, tbl_len, tbl_offset;
17823 u32 regval[64];
17824 u8 core;
17825
17826 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17827 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17828 (void)R_REG(&pi->regs->maccontrol);
17829 udelay(1);
17830 }
17831
17832 if (pi->phyhang_avoid)
17833 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17834
17835 or_phy_reg(pi, 0x122, (0x1 << 0));
17836
17837 if (NREV_GE(pi->pubpi.phy_rev, 3))
17838 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17839 else
17840 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17841
17842 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17843 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17844
17845 if (pi->sh->sromrev < 4) {
17846 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17847 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17848 target_pwr_qtrdbm[0] = 13 * 4;
17849 target_pwr_qtrdbm[1] = 13 * 4;
17850 a1[0] = -424;
17851 a1[1] = -424;
17852 b0[0] = 5612;
17853 b0[1] = 5612;
17854 b1[1] = -1393;
17855 b1[0] = -1393;
17856 } else {
17857
17858 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17859 switch (chan_freq_range) {
17860 case WL_CHAN_FREQ_RANGE_2G:
17861 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17862 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17863 target_pwr_qtrdbm[0] =
17864 pi->nphy_pwrctrl_info[0].max_pwr_2g;
17865 target_pwr_qtrdbm[1] =
17866 pi->nphy_pwrctrl_info[1].max_pwr_2g;
17867 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17868 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17869 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17870 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17871 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17872 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17873 break;
17874 case WL_CHAN_FREQ_RANGE_5GL:
17875 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17876 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17877 target_pwr_qtrdbm[0] =
17878 pi->nphy_pwrctrl_info[0].max_pwr_5gl;
17879 target_pwr_qtrdbm[1] =
17880 pi->nphy_pwrctrl_info[1].max_pwr_5gl;
17881 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17882 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17883 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17884 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17885 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17886 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17887 break;
17888 case WL_CHAN_FREQ_RANGE_5GM:
17889 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17890 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17891 target_pwr_qtrdbm[0] =
17892 pi->nphy_pwrctrl_info[0].max_pwr_5gm;
17893 target_pwr_qtrdbm[1] =
17894 pi->nphy_pwrctrl_info[1].max_pwr_5gm;
17895 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17896 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17897 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17898 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17899 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17900 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17901 break;
17902 case WL_CHAN_FREQ_RANGE_5GH:
17903 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17904 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17905 target_pwr_qtrdbm[0] =
17906 pi->nphy_pwrctrl_info[0].max_pwr_5gh;
17907 target_pwr_qtrdbm[1] =
17908 pi->nphy_pwrctrl_info[1].max_pwr_5gh;
17909 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17910 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17911 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17912 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17913 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17914 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17915 break;
17916 default:
17917 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17918 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17919 target_pwr_qtrdbm[0] = 13 * 4;
17920 target_pwr_qtrdbm[1] = 13 * 4;
17921 a1[0] = -424;
17922 a1[1] = -424;
17923 b0[0] = 5612;
17924 b0[1] = 5612;
17925 b1[1] = -1393;
17926 b1[0] = -1393;
17927 break;
17928 }
17929 }
17930
17931 target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17932 target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17933
17934 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17935 if (pi->srom_fem2g.tssipos)
17936 or_phy_reg(pi, 0x1e9, (0x1 << 14));
17937
17938 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17939 for (core = 0; core <= 1; core++) {
17940 if (PHY_IPA(pi)) {
17941 if (CHSPEC_IS2G(pi->radio_chanspec))
17942 WRITE_RADIO_REG3(pi, RADIO_2057,
17943 TX, core,
17944 TX_SSI_MUX,
17945 0xe);
17946 else
17947 WRITE_RADIO_REG3(pi, RADIO_2057,
17948 TX, core,
17949 TX_SSI_MUX,
17950 0xc);
17951 }
17952 }
17953 } else {
17954 if (PHY_IPA(pi)) {
17955
17956 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17957 RADIO_2056_TX0,
17958 (CHSPEC_IS5G
17959 (pi->radio_chanspec)) ?
17960 0xc : 0xe);
17961 write_radio_reg(pi,
17962 RADIO_2056_TX_TX_SSI_MUX |
17963 RADIO_2056_TX1,
17964 (CHSPEC_IS5G
17965 (pi->radio_chanspec)) ?
17966 0xc : 0xe);
17967 } else {
17968
17969 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17970 RADIO_2056_TX0, 0x11);
17971 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17972 RADIO_2056_TX1, 0x11);
17973 }
17974 }
17975 }
17976
17977 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17978 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17979 (void)R_REG(&pi->regs->maccontrol);
17980 udelay(1);
17981 }
17982
17983 if (NREV_GE(pi->pubpi.phy_rev, 7))
17984 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17985 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17986 else
17987 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17988 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17989
17990 if (NREV_GE(pi->pubpi.phy_rev, 7))
17991 mod_phy_reg(pi, 0x222, (0xff << 0),
17992 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17993 else if (NREV_GT(pi->pubpi.phy_rev, 1))
17994 mod_phy_reg(pi, 0x222, (0xff << 0),
17995 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17996
17997 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17998 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17999
18000 write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
18001
18002 write_phy_reg(pi, 0x1e9,
18003 (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
18004
18005 write_phy_reg(pi, 0x1ea,
18006 (target_pwr_qtrdbm[0] << 0) |
18007 (target_pwr_qtrdbm[1] << 8));
18008
18009 tbl_len = 64;
18010 tbl_offset = 0;
18011 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18012 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18013
18014 for (idx = 0; idx < tbl_len; idx++) {
18015 num = 8 *
18016 (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
18017 den = 32768 + a1[tbl_id - 26] * idx;
18018 pwr_est = max(((4 * num + den / 2) / den), -8);
18019 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
18020 if (idx <=
18021 (uint) (31 - idle_tssi[tbl_id - 26] + 1))
18022 pwr_est =
18023 max(pwr_est,
18024 target_pwr_qtrdbm
18025 [tbl_id - 26] + 1);
18026 }
18027 regval[idx] = (u32) pwr_est;
18028 }
18029 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18030 regval);
18031 }
18032
18033 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
18034 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
18035 pi->adj_pwr_tbl_nphy);
18036 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
18037 pi->adj_pwr_tbl_nphy);
18038
18039 if (pi->phyhang_avoid)
18040 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18041}
18042
18043static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
18044{
18045 u32 *tx_pwrctrl_tbl = NULL;
18046
18047 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18048 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18049 if ((pi->pubpi.radiorev == 4)
18050 || (pi->pubpi.radiorev == 6))
18051 tx_pwrctrl_tbl =
18052 nphy_tpc_txgain_ipa_2g_2057rev4n6;
18053 else if (pi->pubpi.radiorev == 3)
18054 tx_pwrctrl_tbl =
18055 nphy_tpc_txgain_ipa_2g_2057rev3;
18056 else if (pi->pubpi.radiorev == 5)
18057 tx_pwrctrl_tbl =
18058 nphy_tpc_txgain_ipa_2g_2057rev5;
18059 else if ((pi->pubpi.radiorev == 7)
18060 || (pi->pubpi.radiorev == 8))
18061 tx_pwrctrl_tbl =
18062 nphy_tpc_txgain_ipa_2g_2057rev7;
18063 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18064 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
18065 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18066 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
18067 } else {
18068 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
18069 }
18070 } else {
18071
18072 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18073 if ((pi->pubpi.radiorev == 3) ||
18074 (pi->pubpi.radiorev == 4) ||
18075 (pi->pubpi.radiorev == 6))
18076 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
18077 else if ((pi->pubpi.radiorev == 7)
18078 || (pi->pubpi.radiorev == 8))
18079 tx_pwrctrl_tbl =
18080 nphy_tpc_txgain_ipa_5g_2057rev7;
18081 } else {
18082 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
18083 }
18084 }
18085
18086 return tx_pwrctrl_tbl;
18087}
18088
18089static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
18090{
18091 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18092 if (pi->nphy_rssical_chanspec_2G == 0)
18093 return;
18094
18095 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18096 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18097 RADIO_2057_VCM_MASK,
18098 pi->rssical_cache.
18099 rssical_radio_regs_2G[0]);
18100 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18101 RADIO_2057_VCM_MASK,
18102 pi->rssical_cache.
18103 rssical_radio_regs_2G[1]);
18104 } else {
18105 mod_radio_reg(pi,
18106 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18107 RADIO_2056_VCM_MASK,
18108 pi->rssical_cache.
18109 rssical_radio_regs_2G[0]);
18110 mod_radio_reg(pi,
18111 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18112 RADIO_2056_VCM_MASK,
18113 pi->rssical_cache.
18114 rssical_radio_regs_2G[1]);
18115 }
18116
18117 write_phy_reg(pi, 0x1a6,
18118 pi->rssical_cache.rssical_phyregs_2G[0]);
18119 write_phy_reg(pi, 0x1ac,
18120 pi->rssical_cache.rssical_phyregs_2G[1]);
18121 write_phy_reg(pi, 0x1b2,
18122 pi->rssical_cache.rssical_phyregs_2G[2]);
18123 write_phy_reg(pi, 0x1b8,
18124 pi->rssical_cache.rssical_phyregs_2G[3]);
18125 write_phy_reg(pi, 0x1a4,
18126 pi->rssical_cache.rssical_phyregs_2G[4]);
18127 write_phy_reg(pi, 0x1aa,
18128 pi->rssical_cache.rssical_phyregs_2G[5]);
18129 write_phy_reg(pi, 0x1b0,
18130 pi->rssical_cache.rssical_phyregs_2G[6]);
18131 write_phy_reg(pi, 0x1b6,
18132 pi->rssical_cache.rssical_phyregs_2G[7]);
18133 write_phy_reg(pi, 0x1a5,
18134 pi->rssical_cache.rssical_phyregs_2G[8]);
18135 write_phy_reg(pi, 0x1ab,
18136 pi->rssical_cache.rssical_phyregs_2G[9]);
18137 write_phy_reg(pi, 0x1b1,
18138 pi->rssical_cache.rssical_phyregs_2G[10]);
18139 write_phy_reg(pi, 0x1b7,
18140 pi->rssical_cache.rssical_phyregs_2G[11]);
18141
18142 } else {
18143 if (pi->nphy_rssical_chanspec_5G == 0)
18144 return;
18145
18146 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18147 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18148 RADIO_2057_VCM_MASK,
18149 pi->rssical_cache.
18150 rssical_radio_regs_5G[0]);
18151 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18152 RADIO_2057_VCM_MASK,
18153 pi->rssical_cache.
18154 rssical_radio_regs_5G[1]);
18155 } else {
18156 mod_radio_reg(pi,
18157 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18158 RADIO_2056_VCM_MASK,
18159 pi->rssical_cache.
18160 rssical_radio_regs_5G[0]);
18161 mod_radio_reg(pi,
18162 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18163 RADIO_2056_VCM_MASK,
18164 pi->rssical_cache.
18165 rssical_radio_regs_5G[1]);
18166 }
18167
18168 write_phy_reg(pi, 0x1a6,
18169 pi->rssical_cache.rssical_phyregs_5G[0]);
18170 write_phy_reg(pi, 0x1ac,
18171 pi->rssical_cache.rssical_phyregs_5G[1]);
18172 write_phy_reg(pi, 0x1b2,
18173 pi->rssical_cache.rssical_phyregs_5G[2]);
18174 write_phy_reg(pi, 0x1b8,
18175 pi->rssical_cache.rssical_phyregs_5G[3]);
18176 write_phy_reg(pi, 0x1a4,
18177 pi->rssical_cache.rssical_phyregs_5G[4]);
18178 write_phy_reg(pi, 0x1aa,
18179 pi->rssical_cache.rssical_phyregs_5G[5]);
18180 write_phy_reg(pi, 0x1b0,
18181 pi->rssical_cache.rssical_phyregs_5G[6]);
18182 write_phy_reg(pi, 0x1b6,
18183 pi->rssical_cache.rssical_phyregs_5G[7]);
18184 write_phy_reg(pi, 0x1a5,
18185 pi->rssical_cache.rssical_phyregs_5G[8]);
18186 write_phy_reg(pi, 0x1ab,
18187 pi->rssical_cache.rssical_phyregs_5G[9]);
18188 write_phy_reg(pi, 0x1b1,
18189 pi->rssical_cache.rssical_phyregs_5G[10]);
18190 write_phy_reg(pi, 0x1b7,
18191 pi->rssical_cache.rssical_phyregs_5G[11]);
18192 }
18193}
18194
18195static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18196{
18197 u16 txcal_gain[2];
18198
18199 pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18200 pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18201 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18202 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18203
18204 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18205 txcal_gain);
18206
18207 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18208 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18209 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18210 } else {
18211 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18212 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18213 }
18214
18215 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18216 txcal_gain);
18217}
18218
18219static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18220{
18221 bool save_bbmult = false;
18222 u8 txcal_index_2057_rev5n7 = 0;
18223 u8 txcal_index_2057_rev3n4n6 = 10;
18224
18225 if (pi->use_int_tx_iqlo_cal_nphy) {
18226 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18227 if ((pi->pubpi.radiorev == 3) ||
18228 (pi->pubpi.radiorev == 4) ||
18229 (pi->pubpi.radiorev == 6)) {
18230
18231 pi->nphy_txcal_pwr_idx[0] =
18232 txcal_index_2057_rev3n4n6;
18233 pi->nphy_txcal_pwr_idx[1] =
18234 txcal_index_2057_rev3n4n6;
18235 wlc_phy_txpwr_index_nphy(
18236 pi, 3,
18237 txcal_index_2057_rev3n4n6,
18238 false);
18239 } else {
18240
18241 pi->nphy_txcal_pwr_idx[0] =
18242 txcal_index_2057_rev5n7;
18243 pi->nphy_txcal_pwr_idx[1] =
18244 txcal_index_2057_rev5n7;
18245 wlc_phy_txpwr_index_nphy(
18246 pi, 3,
18247 txcal_index_2057_rev5n7,
18248 false);
18249 }
18250 save_bbmult = true;
18251
18252 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18253 wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18254 if (pi->sh->hw_phytxchain != 3) {
18255 pi->nphy_txcal_pwr_idx[1] =
18256 pi->nphy_txcal_pwr_idx[0];
18257 wlc_phy_txpwr_index_nphy(pi, 3,
18258 pi->
18259 nphy_txcal_pwr_idx[0],
18260 true);
18261 save_bbmult = true;
18262 }
18263
18264 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18265 if (PHY_IPA(pi)) {
18266 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18267 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18268 false);
18269 } else {
18270 pi->nphy_txcal_pwr_idx[0] = 80;
18271 pi->nphy_txcal_pwr_idx[1] = 80;
18272 wlc_phy_txpwr_index_nphy(pi, 3, 80,
18273 false);
18274 save_bbmult = true;
18275 }
18276 } else {
18277 wlc_phy_internal_cal_txgain_nphy(pi);
18278 save_bbmult = true;
18279 }
18280
18281 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18282 if (PHY_IPA(pi)) {
18283 if (CHSPEC_IS2G(pi->radio_chanspec))
18284 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18285 false);
18286 else
18287 wlc_phy_cal_txgainctrl_nphy(pi, 14,
18288 false);
18289 } else {
18290 wlc_phy_internal_cal_txgain_nphy(pi);
18291 save_bbmult = true;
18292 }
18293 }
18294
18295 } else {
18296 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18297 }
18298
18299 if (save_bbmult)
18300 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18301 &pi->nphy_txcal_bbmult);
18302}
18303
18304static void
18305wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18306 u8 core_code)
18307{
18308 u16 mask;
18309 u16 val;
18310 u8 core;
18311
18312 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18313 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18314 if (core_code == RADIO_MIMO_CORESEL_CORE1
18315 && core == PHY_CORE_1)
18316 continue;
18317 else if (core_code == RADIO_MIMO_CORESEL_CORE2
18318 && core == PHY_CORE_0)
18319 continue;
18320
18321 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18322
18323 mask = (0x1 << 10);
18324 val = 1 << 10;
18325 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18326 0x92, mask, val);
18327 }
18328
18329 if (field == NPHY_RfctrlIntc_override_OFF) {
18330
18331 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18332 0x92, 0);
18333
18334 wlc_phy_force_rfseq_nphy(pi,
18335 NPHY_RFSEQ_RESET2RX);
18336 } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18337
18338 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18339
18340 mask = (0x1 << 6) | (0x1 << 7);
18341
18342 val = value << 6;
18343 mod_phy_reg(pi,
18344 (core ==
18345 PHY_CORE_0) ? 0x91 : 0x92,
18346 mask, val);
18347
18348 or_phy_reg(pi,
18349 (core ==
18350 PHY_CORE_0) ? 0x91 : 0x92,
18351 (0x1 << 10));
18352
18353 and_phy_reg(pi, 0x2ff, (u16)
18354 ~(0x3 << 14));
18355 or_phy_reg(pi, 0x2ff, (0x1 << 13));
18356 or_phy_reg(pi, 0x2ff, (0x1 << 0));
18357 } else {
18358
18359 mask = (0x1 << 6) |
18360 (0x1 << 7) |
18361 (0x1 << 8) | (0x1 << 9);
18362 val = value << 6;
18363 mod_phy_reg(pi,
18364 (core ==
18365 PHY_CORE_0) ? 0x91 : 0x92,
18366 mask, val);
18367
18368 mask = (0x1 << 0);
18369 val = 1 << 0;
18370 mod_phy_reg(pi,
18371 (core ==
18372 PHY_CORE_0) ? 0xe7 : 0xec,
18373 mask, val);
18374
18375 mask = (core == PHY_CORE_0) ?
18376 (0x1 << 0) : (0x1 << 1);
18377 val = 1 << ((core == PHY_CORE_0) ?
18378 0 : 1);
18379 mod_phy_reg(pi, 0x78, mask, val);
18380
18381 SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18382 != 0), 10000);
18383 if (WARN(read_phy_reg(pi, 0x78) & val,
18384 "HW error: override failed"))
18385 return;
18386
18387 mask = (0x1 << 0);
18388 val = 0 << 0;
18389 mod_phy_reg(pi,
18390 (core ==
18391 PHY_CORE_0) ? 0xe7 : 0xec,
18392 mask, val);
18393 }
18394 } else if (field == NPHY_RfctrlIntc_override_PA) {
18395 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18396
18397 mask = (0x1 << 4) | (0x1 << 5);
18398
18399 if (CHSPEC_IS5G(pi->radio_chanspec))
18400 val = value << 5;
18401 else
18402 val = value << 4;
18403
18404 mod_phy_reg(pi,
18405 (core ==
18406 PHY_CORE_0) ? 0x91 : 0x92,
18407 mask, val);
18408
18409 or_phy_reg(pi,
18410 (core ==
18411 PHY_CORE_0) ? 0x91 : 0x92,
18412 (0x1 << 12));
18413 } else {
18414
18415 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18416 mask = (0x1 << 5);
18417 val = value << 5;
18418 } else {
18419 mask = (0x1 << 4);
18420 val = value << 4;
18421 }
18422 mod_phy_reg(pi,
18423 (core ==
18424 PHY_CORE_0) ? 0x91 : 0x92,
18425 mask, val);
18426 }
18427 } else if (field ==
18428 NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18429 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18430 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18431
18432 mask = (0x1 << 0);
18433 val = value << 0;
18434 mod_phy_reg(pi,
18435 (core ==
18436 PHY_CORE_0) ? 0x91
18437 : 0x92, mask, val);
18438
18439 mask = (0x1 << 2);
18440 mod_phy_reg(pi,
18441 (core ==
18442 PHY_CORE_0) ? 0x91
18443 : 0x92, mask, 0);
18444 } else {
18445
18446 mask = (0x1 << 2);
18447 val = value << 2;
18448 mod_phy_reg(pi,
18449 (core ==
18450 PHY_CORE_0) ? 0x91
18451 : 0x92, mask, val);
18452
18453 mask = (0x1 << 0);
18454 mod_phy_reg(pi,
18455 (core ==
18456 PHY_CORE_0) ? 0x91
18457 : 0x92, mask, 0);
18458 }
18459
18460 mask = (0x1 << 11);
18461 val = 1 << 11;
18462 mod_phy_reg(pi,
18463 (core ==
18464 PHY_CORE_0) ? 0x91 : 0x92,
18465 mask, val);
18466 } else {
18467
18468 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18469 mask = (0x1 << 0);
18470 val = value << 0;
18471 } else {
18472 mask = (0x1 << 2);
18473 val = value << 2;
18474 }
18475 mod_phy_reg(pi,
18476 (core ==
18477 PHY_CORE_0) ? 0x91 : 0x92,
18478 mask, val);
18479 }
18480 } else if (field ==
18481 NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18482 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18483 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18484
18485 mask = (0x1 << 1);
18486 val = value << 1;
18487 mod_phy_reg(pi,
18488 (core ==
18489 PHY_CORE_0) ? 0x91
18490 : 0x92, mask, val);
18491
18492 mask = (0x1 << 3);
18493 mod_phy_reg(pi,
18494 (core ==
18495 PHY_CORE_0) ? 0x91
18496 : 0x92, mask, 0);
18497 } else {
18498
18499 mask = (0x1 << 3);
18500 val = value << 3;
18501 mod_phy_reg(pi,
18502 (core ==
18503 PHY_CORE_0) ? 0x91
18504 : 0x92, mask, val);
18505
18506 mask = (0x1 << 1);
18507 mod_phy_reg(pi,
18508 (core ==
18509 PHY_CORE_0) ? 0x91
18510 : 0x92, mask, 0);
18511 }
18512
18513 mask = (0x1 << 11);
18514 val = 1 << 11;
18515 mod_phy_reg(pi,
18516 (core ==
18517 PHY_CORE_0) ? 0x91 : 0x92,
18518 mask, val);
18519 } else {
18520
18521 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18522 mask = (0x1 << 1);
18523 val = value << 1;
18524 } else {
18525 mask = (0x1 << 3);
18526 val = value << 3;
18527 }
18528 mod_phy_reg(pi,
18529 (core ==
18530 PHY_CORE_0) ? 0x91 : 0x92,
18531 mask, val);
18532 }
18533 }
18534 }
18535 }
18536}
18537
18538void
18539wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18540 bool debug)
18541{
18542 int gainctrl_loopidx;
18543 uint core;
18544 u16 m0m1, curr_m0m1;
18545 s32 delta_power;
18546 s32 txpwrindex;
18547 s32 qdBm_power[2];
18548 u16 orig_BBConfig;
18549 u16 phy_saveregs[4];
18550 u32 freq_test;
18551 u16 ampl_test = 250;
18552 uint stepsize;
18553 bool phyhang_avoid_state = false;
18554
18555 if (NREV_GE(pi->pubpi.phy_rev, 7))
18556 stepsize = 2;
18557 else
18558 stepsize = 1;
18559
18560 if (CHSPEC_IS40(pi->radio_chanspec))
18561 freq_test = 5000;
18562 else
18563 freq_test = 2500;
18564
18565 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18566 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18567
18568 if (pi->phyhang_avoid)
18569 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18570
18571 phyhang_avoid_state = pi->phyhang_avoid;
18572 pi->phyhang_avoid = false;
18573
18574 phy_saveregs[0] = read_phy_reg(pi, 0x91);
18575 phy_saveregs[1] = read_phy_reg(pi, 0x92);
18576 phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18577 phy_saveregs[3] = read_phy_reg(pi, 0xec);
18578 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18579 RADIO_MIMO_CORESEL_CORE1 |
18580 RADIO_MIMO_CORESEL_CORE2);
18581
18582 if (!debug) {
18583 wlc_phy_rfctrlintc_override_nphy(pi,
18584 NPHY_RfctrlIntc_override_TRSW,
18585 0x2, RADIO_MIMO_CORESEL_CORE1);
18586 wlc_phy_rfctrlintc_override_nphy(pi,
18587 NPHY_RfctrlIntc_override_TRSW,
18588 0x8, RADIO_MIMO_CORESEL_CORE2);
18589 } else {
18590 wlc_phy_rfctrlintc_override_nphy(pi,
18591 NPHY_RfctrlIntc_override_TRSW,
18592 0x1, RADIO_MIMO_CORESEL_CORE1);
18593 wlc_phy_rfctrlintc_override_nphy(pi,
18594 NPHY_RfctrlIntc_override_TRSW,
18595 0x7, RADIO_MIMO_CORESEL_CORE2);
18596 }
18597
18598 orig_BBConfig = read_phy_reg(pi, 0x01);
18599 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18600
18601 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18602
18603 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18604 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18605
18606 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18607 gainctrl_loopidx++) {
18608 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18609 false);
18610
18611 if (core == PHY_CORE_0)
18612 curr_m0m1 = m0m1 & 0xff00;
18613 else
18614 curr_m0m1 = m0m1 & 0x00ff;
18615
18616 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18617 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18618
18619 udelay(50);
18620
18621 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18622 NPHY_CAL_TSSISAMPS);
18623
18624 pi->nphy_bb_mult_save = 0;
18625 wlc_phy_stopplayback_nphy(pi);
18626
18627 delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18628
18629 txpwrindex -= stepsize * delta_power;
18630 if (txpwrindex < 0)
18631 txpwrindex = 0;
18632 else if (txpwrindex > 127)
18633 txpwrindex = 127;
18634
18635 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18636 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18637 (pi->srom_fem5g.extpagain == 3)) {
18638 if (txpwrindex < 30)
18639 txpwrindex = 30;
18640 }
18641 } else {
18642 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18643 (pi->srom_fem2g.extpagain == 3)) {
18644 if (txpwrindex < 50)
18645 txpwrindex = 50;
18646 }
18647 }
18648
18649 wlc_phy_txpwr_index_nphy(pi, (1 << core),
18650 (u8) txpwrindex, true);
18651 }
18652
18653 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18654
18655 if (debug) {
18656 u16 radio_gain;
18657 u16 dbg_m0m1;
18658
18659 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18660
18661 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18662 false);
18663
18664 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18665 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18666
18667 udelay(100);
18668
18669 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18670 NPHY_CAL_TSSISAMPS);
18671
18672 wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18673 &radio_gain);
18674
18675 mdelay(4000);
18676 pi->nphy_bb_mult_save = 0;
18677 wlc_phy_stopplayback_nphy(pi);
18678 }
18679 }
18680
18681 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18682 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18683
18684 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18685
18686 write_phy_reg(pi, 0x01, orig_BBConfig);
18687
18688 write_phy_reg(pi, 0x91, phy_saveregs[0]);
18689 write_phy_reg(pi, 0x92, phy_saveregs[1]);
18690 write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18691 write_phy_reg(pi, 0xec, phy_saveregs[3]);
18692
18693 pi->phyhang_avoid = phyhang_avoid_state;
18694
18695 if (pi->phyhang_avoid)
18696 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18697}
18698
18699static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18700{
18701 void *tbl_ptr;
18702 int coreNum;
18703 u16 *txcal_radio_regs = NULL;
18704
18705 if (pi->phyhang_avoid)
18706 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18707
18708 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18709
18710 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18711 &pi->calibration_cache.
18712 rxcal_coeffs_2G);
18713
18714 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18715 txcal_radio_regs =
18716 pi->calibration_cache.txcal_radio_regs_2G;
18717 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18718
18719 pi->calibration_cache.txcal_radio_regs_2G[0] =
18720 read_radio_reg(pi,
18721 RADIO_2056_TX_LOFT_FINE_I |
18722 RADIO_2056_TX0);
18723 pi->calibration_cache.txcal_radio_regs_2G[1] =
18724 read_radio_reg(pi,
18725 RADIO_2056_TX_LOFT_FINE_Q |
18726 RADIO_2056_TX0);
18727 pi->calibration_cache.txcal_radio_regs_2G[2] =
18728 read_radio_reg(pi,
18729 RADIO_2056_TX_LOFT_FINE_I |
18730 RADIO_2056_TX1);
18731 pi->calibration_cache.txcal_radio_regs_2G[3] =
18732 read_radio_reg(pi,
18733 RADIO_2056_TX_LOFT_FINE_Q |
18734 RADIO_2056_TX1);
18735
18736 pi->calibration_cache.txcal_radio_regs_2G[4] =
18737 read_radio_reg(pi,
18738 RADIO_2056_TX_LOFT_COARSE_I |
18739 RADIO_2056_TX0);
18740 pi->calibration_cache.txcal_radio_regs_2G[5] =
18741 read_radio_reg(pi,
18742 RADIO_2056_TX_LOFT_COARSE_Q |
18743 RADIO_2056_TX0);
18744 pi->calibration_cache.txcal_radio_regs_2G[6] =
18745 read_radio_reg(pi,
18746 RADIO_2056_TX_LOFT_COARSE_I |
18747 RADIO_2056_TX1);
18748 pi->calibration_cache.txcal_radio_regs_2G[7] =
18749 read_radio_reg(pi,
18750 RADIO_2056_TX_LOFT_COARSE_Q |
18751 RADIO_2056_TX1);
18752 } else {
18753 pi->calibration_cache.txcal_radio_regs_2G[0] =
18754 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18755 pi->calibration_cache.txcal_radio_regs_2G[1] =
18756 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18757 pi->calibration_cache.txcal_radio_regs_2G[2] =
18758 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18759 pi->calibration_cache.txcal_radio_regs_2G[3] =
18760 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18761 }
18762
18763 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18764 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18765 } else {
18766
18767 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18768 &pi->calibration_cache.
18769 rxcal_coeffs_5G);
18770
18771 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18772 txcal_radio_regs =
18773 pi->calibration_cache.txcal_radio_regs_5G;
18774 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18775
18776 pi->calibration_cache.txcal_radio_regs_5G[0] =
18777 read_radio_reg(pi,
18778 RADIO_2056_TX_LOFT_FINE_I |
18779 RADIO_2056_TX0);
18780 pi->calibration_cache.txcal_radio_regs_5G[1] =
18781 read_radio_reg(pi,
18782 RADIO_2056_TX_LOFT_FINE_Q |
18783 RADIO_2056_TX0);
18784 pi->calibration_cache.txcal_radio_regs_5G[2] =
18785 read_radio_reg(pi,
18786 RADIO_2056_TX_LOFT_FINE_I |
18787 RADIO_2056_TX1);
18788 pi->calibration_cache.txcal_radio_regs_5G[3] =
18789 read_radio_reg(pi,
18790 RADIO_2056_TX_LOFT_FINE_Q |
18791 RADIO_2056_TX1);
18792
18793 pi->calibration_cache.txcal_radio_regs_5G[4] =
18794 read_radio_reg(pi,
18795 RADIO_2056_TX_LOFT_COARSE_I |
18796 RADIO_2056_TX0);
18797 pi->calibration_cache.txcal_radio_regs_5G[5] =
18798 read_radio_reg(pi,
18799 RADIO_2056_TX_LOFT_COARSE_Q |
18800 RADIO_2056_TX0);
18801 pi->calibration_cache.txcal_radio_regs_5G[6] =
18802 read_radio_reg(pi,
18803 RADIO_2056_TX_LOFT_COARSE_I |
18804 RADIO_2056_TX1);
18805 pi->calibration_cache.txcal_radio_regs_5G[7] =
18806 read_radio_reg(pi,
18807 RADIO_2056_TX_LOFT_COARSE_Q |
18808 RADIO_2056_TX1);
18809 } else {
18810 pi->calibration_cache.txcal_radio_regs_5G[0] =
18811 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18812 pi->calibration_cache.txcal_radio_regs_5G[1] =
18813 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18814 pi->calibration_cache.txcal_radio_regs_5G[2] =
18815 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18816 pi->calibration_cache.txcal_radio_regs_5G[3] =
18817 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18818 }
18819
18820 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18821 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18822 }
18823 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18824 for (coreNum = 0; coreNum <= 1; coreNum++) {
18825
18826 txcal_radio_regs[2 * coreNum] =
18827 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18828 LOFT_FINE_I);
18829 txcal_radio_regs[2 * coreNum + 1] =
18830 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18831 LOFT_FINE_Q);
18832
18833 txcal_radio_regs[2 * coreNum + 4] =
18834 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18835 LOFT_COARSE_I);
18836 txcal_radio_regs[2 * coreNum + 5] =
18837 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18838 LOFT_COARSE_Q);
18839 }
18840 }
18841
18842 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18843
18844 if (pi->phyhang_avoid)
18845 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18846}
18847
18848static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18849{
18850 struct nphy_iq_comp tx_comp;
18851
18852 wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18853
18854 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18855 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18856 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18857 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18858}
18859
18860static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18861{
18862 u16 *loft_comp;
18863 u16 txcal_coeffs_bphy[4];
18864 u16 *tbl_ptr;
18865 int coreNum;
18866 u16 *txcal_radio_regs = NULL;
18867
18868 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18869 if (pi->nphy_iqcal_chanspec_2G == 0)
18870 return;
18871
18872 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18873 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18874 } else {
18875 if (pi->nphy_iqcal_chanspec_5G == 0)
18876 return;
18877
18878 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18879 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18880 }
18881
18882 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18883
18884 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18885 txcal_coeffs_bphy[0] = tbl_ptr[0];
18886 txcal_coeffs_bphy[1] = tbl_ptr[1];
18887 txcal_coeffs_bphy[2] = tbl_ptr[2];
18888 txcal_coeffs_bphy[3] = tbl_ptr[3];
18889 } else {
18890 txcal_coeffs_bphy[0] = 0;
18891 txcal_coeffs_bphy[1] = 0;
18892 txcal_coeffs_bphy[2] = 0;
18893 txcal_coeffs_bphy[3] = 0;
18894 }
18895
18896 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18897 txcal_coeffs_bphy);
18898
18899 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18900
18901 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18902
18903 if (NREV_LT(pi->pubpi.phy_rev, 2))
18904 wlc_phy_tx_iq_war_nphy(pi);
18905
18906 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18907 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18908 txcal_radio_regs =
18909 pi->calibration_cache.txcal_radio_regs_2G;
18910 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18911
18912 write_radio_reg(pi,
18913 RADIO_2056_TX_LOFT_FINE_I |
18914 RADIO_2056_TX0,
18915 pi->calibration_cache.
18916 txcal_radio_regs_2G[0]);
18917 write_radio_reg(pi,
18918 RADIO_2056_TX_LOFT_FINE_Q |
18919 RADIO_2056_TX0,
18920 pi->calibration_cache.
18921 txcal_radio_regs_2G[1]);
18922 write_radio_reg(pi,
18923 RADIO_2056_TX_LOFT_FINE_I |
18924 RADIO_2056_TX1,
18925 pi->calibration_cache.
18926 txcal_radio_regs_2G[2]);
18927 write_radio_reg(pi,
18928 RADIO_2056_TX_LOFT_FINE_Q |
18929 RADIO_2056_TX1,
18930 pi->calibration_cache.
18931 txcal_radio_regs_2G[3]);
18932
18933 write_radio_reg(pi,
18934 RADIO_2056_TX_LOFT_COARSE_I |
18935 RADIO_2056_TX0,
18936 pi->calibration_cache.
18937 txcal_radio_regs_2G[4]);
18938 write_radio_reg(pi,
18939 RADIO_2056_TX_LOFT_COARSE_Q |
18940 RADIO_2056_TX0,
18941 pi->calibration_cache.
18942 txcal_radio_regs_2G[5]);
18943 write_radio_reg(pi,
18944 RADIO_2056_TX_LOFT_COARSE_I |
18945 RADIO_2056_TX1,
18946 pi->calibration_cache.
18947 txcal_radio_regs_2G[6]);
18948 write_radio_reg(pi,
18949 RADIO_2056_TX_LOFT_COARSE_Q |
18950 RADIO_2056_TX1,
18951 pi->calibration_cache.
18952 txcal_radio_regs_2G[7]);
18953 } else {
18954 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18955 pi->calibration_cache.
18956 txcal_radio_regs_2G[0]);
18957 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18958 pi->calibration_cache.
18959 txcal_radio_regs_2G[1]);
18960 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18961 pi->calibration_cache.
18962 txcal_radio_regs_2G[2]);
18963 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18964 pi->calibration_cache.
18965 txcal_radio_regs_2G[3]);
18966 }
18967
18968 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18969 &pi->calibration_cache.
18970 rxcal_coeffs_2G);
18971 } else {
18972 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18973 txcal_radio_regs =
18974 pi->calibration_cache.txcal_radio_regs_5G;
18975 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18976
18977 write_radio_reg(pi,
18978 RADIO_2056_TX_LOFT_FINE_I |
18979 RADIO_2056_TX0,
18980 pi->calibration_cache.
18981 txcal_radio_regs_5G[0]);
18982 write_radio_reg(pi,
18983 RADIO_2056_TX_LOFT_FINE_Q |
18984 RADIO_2056_TX0,
18985 pi->calibration_cache.
18986 txcal_radio_regs_5G[1]);
18987 write_radio_reg(pi,
18988 RADIO_2056_TX_LOFT_FINE_I |
18989 RADIO_2056_TX1,
18990 pi->calibration_cache.
18991 txcal_radio_regs_5G[2]);
18992 write_radio_reg(pi,
18993 RADIO_2056_TX_LOFT_FINE_Q |
18994 RADIO_2056_TX1,
18995 pi->calibration_cache.
18996 txcal_radio_regs_5G[3]);
18997
18998 write_radio_reg(pi,
18999 RADIO_2056_TX_LOFT_COARSE_I |
19000 RADIO_2056_TX0,
19001 pi->calibration_cache.
19002 txcal_radio_regs_5G[4]);
19003 write_radio_reg(pi,
19004 RADIO_2056_TX_LOFT_COARSE_Q |
19005 RADIO_2056_TX0,
19006 pi->calibration_cache.
19007 txcal_radio_regs_5G[5]);
19008 write_radio_reg(pi,
19009 RADIO_2056_TX_LOFT_COARSE_I |
19010 RADIO_2056_TX1,
19011 pi->calibration_cache.
19012 txcal_radio_regs_5G[6]);
19013 write_radio_reg(pi,
19014 RADIO_2056_TX_LOFT_COARSE_Q |
19015 RADIO_2056_TX1,
19016 pi->calibration_cache.
19017 txcal_radio_regs_5G[7]);
19018 } else {
19019 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
19020 pi->calibration_cache.
19021 txcal_radio_regs_5G[0]);
19022 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
19023 pi->calibration_cache.
19024 txcal_radio_regs_5G[1]);
19025 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
19026 pi->calibration_cache.
19027 txcal_radio_regs_5G[2]);
19028 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
19029 pi->calibration_cache.
19030 txcal_radio_regs_5G[3]);
19031 }
19032
19033 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
19034 &pi->calibration_cache.
19035 rxcal_coeffs_5G);
19036 }
19037
19038 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19039 for (coreNum = 0; coreNum <= 1; coreNum++) {
19040
19041 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19042 LOFT_FINE_I,
19043 txcal_radio_regs[2 * coreNum]);
19044 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19045 LOFT_FINE_Q,
19046 txcal_radio_regs[2 * coreNum + 1]);
19047
19048 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19049 LOFT_COARSE_I,
19050 txcal_radio_regs[2 * coreNum + 4]);
19051 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19052 LOFT_COARSE_Q,
19053 txcal_radio_regs[2 * coreNum + 5]);
19054 }
19055 }
19056}
19057
19058static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
19059{
19060 u32 idx;
19061 u16 iqloCalbuf[7];
19062 u32 iqcomp, locomp, curr_locomp;
19063 s8 locomp_i, locomp_q;
19064 s8 curr_locomp_i, curr_locomp_q;
19065 u32 tbl_id, tbl_len, tbl_offset;
19066 u32 regval[128];
19067
19068 if (pi->phyhang_avoid)
19069 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19070
19071 wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
19072
19073 tbl_len = 128;
19074 tbl_offset = 320;
19075 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19076 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19077 iqcomp =
19078 (tbl_id ==
19079 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
19080 (iqloCalbuf[1] & 0x3ff)
19081 : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
19082 (iqloCalbuf[3] & 0x3ff);
19083
19084 for (idx = 0; idx < tbl_len; idx++)
19085 regval[idx] = iqcomp;
19086 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19087 regval);
19088 }
19089
19090 tbl_offset = 448;
19091 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19092 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19093
19094 locomp =
19095 (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
19096 locomp_i = (s8) ((locomp >> 8) & 0xff);
19097 locomp_q = (s8) ((locomp) & 0xff);
19098 for (idx = 0; idx < tbl_len; idx++) {
19099 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19100 curr_locomp_i = locomp_i;
19101 curr_locomp_q = locomp_q;
19102 } else {
19103 curr_locomp_i = (s8) ((locomp_i *
19104 nphy_tpc_loscale[idx] +
19105 128) >> 8);
19106 curr_locomp_q =
19107 (s8) ((locomp_q *
19108 nphy_tpc_loscale[idx] +
19109 128) >> 8);
19110 }
19111 curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
19112 curr_locomp |= (u32) (curr_locomp_q & 0xff);
19113 regval[idx] = curr_locomp;
19114 }
19115 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19116 regval);
19117 }
19118
19119 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19120
19121 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
19122 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
19123 }
19124
19125 if (pi->phyhang_avoid)
19126 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19127}
19128
19129static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
19130{
19131 u8 tx_lpf_bw = 0;
19132
19133 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19134 if (CHSPEC_IS40(pi->radio_chanspec))
19135 tx_lpf_bw = 3;
19136 else
19137 tx_lpf_bw = 1;
19138
19139 if (PHY_IPA(pi)) {
19140 if (CHSPEC_IS40(pi->radio_chanspec))
19141 tx_lpf_bw = 5;
19142 else
19143 tx_lpf_bw = 4;
19144 }
19145
19146 write_phy_reg(pi, 0xe8,
19147 (tx_lpf_bw << 0) |
19148 (tx_lpf_bw << 3) |
19149 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19150
19151 if (PHY_IPA(pi)) {
19152
19153 if (CHSPEC_IS40(pi->radio_chanspec))
19154 tx_lpf_bw = 4;
19155 else
19156 tx_lpf_bw = 1;
19157
19158 write_phy_reg(pi, 0xe9,
19159 (tx_lpf_bw << 0) |
19160 (tx_lpf_bw << 3) |
19161 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19162 }
19163 }
19164}
19165
19166static void
19167wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19168{
19169 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19170 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19171 CHSPEC_IS40(pi->radio_chanspec)) {
19172 if (!pi->nphy_anarxlpf_adjusted) {
19173 write_radio_reg(pi,
19174 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19175 RADIO_2056_RX0),
19176 ((pi->nphy_rccal_value +
19177 reduction_factr) | 0x80));
19178
19179 pi->nphy_anarxlpf_adjusted = true;
19180 }
19181 } else {
19182 if (pi->nphy_anarxlpf_adjusted) {
19183 write_radio_reg(pi,
19184 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19185 RADIO_2056_RX0),
19186 (pi->nphy_rccal_value | 0x80));
19187
19188 pi->nphy_anarxlpf_adjusted = false;
19189 }
19190 }
19191 }
19192}
19193
19194static void
19195wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19196 int *tone_id_buf, u32 *noise_var_buf)
19197{
19198 int i;
19199 u32 offset;
19200 int tone_id;
19201 int tbllen =
19202 CHSPEC_IS40(pi->radio_chanspec) ?
19203 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19204
19205 if (pi->nphy_noisevars_adjusted) {
19206 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19207 tone_id = pi->nphy_saved_noisevars.tone_id[i];
19208 offset = (tone_id >= 0) ?
19209 ((tone_id *
19210 2) + 1) : (tbllen + (tone_id * 2) + 1);
19211 wlc_phy_table_write_nphy(
19212 pi, NPHY_TBL_ID_NOISEVAR, 1,
19213 offset, 32,
19214 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19215 }
19216
19217 pi->nphy_saved_noisevars.bufcount = 0;
19218 pi->nphy_noisevars_adjusted = false;
19219 }
19220
19221 if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19222 pi->nphy_saved_noisevars.bufcount = 0;
19223
19224 for (i = 0; i < ntones; i++) {
19225 tone_id = tone_id_buf[i];
19226 offset = (tone_id >= 0) ?
19227 ((tone_id * 2) + 1) :
19228 (tbllen + (tone_id * 2) + 1);
19229 pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19230 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19231 offset, 32,
19232 &pi->nphy_saved_noisevars.
19233 min_noise_vars[i]);
19234 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19235 offset, 32, &noise_var_buf[i]);
19236 pi->nphy_saved_noisevars.bufcount++;
19237 }
19238
19239 pi->nphy_noisevars_adjusted = true;
19240 }
19241}
19242
19243static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19244{
19245 u16 regval;
19246
19247 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19248 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19249 CHSPEC_IS40(pi->radio_chanspec)) {
19250 if (!pi->nphy_crsminpwr_adjusted) {
19251 regval = read_phy_reg(pi, 0x27d);
19252 pi->nphy_crsminpwr[0] = regval & 0xff;
19253 regval &= 0xff00;
19254 regval |= (u16) minpwr;
19255 write_phy_reg(pi, 0x27d, regval);
19256
19257 regval = read_phy_reg(pi, 0x280);
19258 pi->nphy_crsminpwr[1] = regval & 0xff;
19259 regval &= 0xff00;
19260 regval |= (u16) minpwr;
19261 write_phy_reg(pi, 0x280, regval);
19262
19263 regval = read_phy_reg(pi, 0x283);
19264 pi->nphy_crsminpwr[2] = regval & 0xff;
19265 regval &= 0xff00;
19266 regval |= (u16) minpwr;
19267 write_phy_reg(pi, 0x283, regval);
19268
19269 pi->nphy_crsminpwr_adjusted = true;
19270 }
19271 } else {
19272 if (pi->nphy_crsminpwr_adjusted) {
19273 regval = read_phy_reg(pi, 0x27d);
19274 regval &= 0xff00;
19275 regval |= pi->nphy_crsminpwr[0];
19276 write_phy_reg(pi, 0x27d, regval);
19277
19278 regval = read_phy_reg(pi, 0x280);
19279 regval &= 0xff00;
19280 regval |= pi->nphy_crsminpwr[1];
19281 write_phy_reg(pi, 0x280, regval);
19282
19283 regval = read_phy_reg(pi, 0x283);
19284 regval &= 0xff00;
19285 regval |= pi->nphy_crsminpwr[2];
19286 write_phy_reg(pi, 0x283, regval);
19287
19288 pi->nphy_crsminpwr_adjusted = false;
19289 }
19290 }
19291 }
19292}
19293
19294static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19295{
19296 u16 cur_channel = 0;
19297 int nphy_adj_tone_id_buf[] = { 57, 58 };
19298 u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19299 bool isAdjustNoiseVar = false;
19300 uint numTonesAdjust = 0;
19301 u32 tempval = 0;
19302
19303 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19304 if (pi->phyhang_avoid)
19305 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19306
19307 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19308
19309 if (pi->nphy_gband_spurwar_en) {
19310
19311 wlc_phy_adjust_rx_analpfbw_nphy(
19312 pi,
19313 NPHY_ANARXLPFBW_REDUCTIONFACT);
19314
19315 if (CHSPEC_IS2G(pi->radio_chanspec)) {
19316 if ((cur_channel == 11)
19317 && CHSPEC_IS40(pi->radio_chanspec))
19318 wlc_phy_adjust_min_noisevar_nphy(
19319 pi, 2,
19320 nphy_adj_tone_id_buf,
19321 nphy_adj_noise_var_buf);
19322 else
19323 wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19324 NULL,
19325 NULL);
19326 }
19327
19328 wlc_phy_adjust_crsminpwr_nphy(pi,
19329 NPHY_ADJUSTED_MINCRSPOWER);
19330 }
19331
19332 if ((pi->nphy_gband_spurwar2_en)
19333 && CHSPEC_IS2G(pi->radio_chanspec)) {
19334
19335 if (CHSPEC_IS40(pi->radio_chanspec)) {
19336 switch (cur_channel) {
19337 case 3:
19338 nphy_adj_tone_id_buf[0] = 57;
19339 nphy_adj_tone_id_buf[1] = 58;
19340 nphy_adj_noise_var_buf[0] = 0x22f;
19341 nphy_adj_noise_var_buf[1] = 0x25f;
19342 isAdjustNoiseVar = true;
19343 break;
19344 case 4:
19345 nphy_adj_tone_id_buf[0] = 41;
19346 nphy_adj_tone_id_buf[1] = 42;
19347 nphy_adj_noise_var_buf[0] = 0x22f;
19348 nphy_adj_noise_var_buf[1] = 0x25f;
19349 isAdjustNoiseVar = true;
19350 break;
19351 case 5:
19352 nphy_adj_tone_id_buf[0] = 25;
19353 nphy_adj_tone_id_buf[1] = 26;
19354 nphy_adj_noise_var_buf[0] = 0x24f;
19355 nphy_adj_noise_var_buf[1] = 0x25f;
19356 isAdjustNoiseVar = true;
19357 break;
19358 case 6:
19359 nphy_adj_tone_id_buf[0] = 9;
19360 nphy_adj_tone_id_buf[1] = 10;
19361 nphy_adj_noise_var_buf[0] = 0x22f;
19362 nphy_adj_noise_var_buf[1] = 0x24f;
19363 isAdjustNoiseVar = true;
19364 break;
19365 case 7:
19366 nphy_adj_tone_id_buf[0] = 121;
19367 nphy_adj_tone_id_buf[1] = 122;
19368 nphy_adj_noise_var_buf[0] = 0x18f;
19369 nphy_adj_noise_var_buf[1] = 0x24f;
19370 isAdjustNoiseVar = true;
19371 break;
19372 case 8:
19373 nphy_adj_tone_id_buf[0] = 105;
19374 nphy_adj_tone_id_buf[1] = 106;
19375 nphy_adj_noise_var_buf[0] = 0x22f;
19376 nphy_adj_noise_var_buf[1] = 0x25f;
19377 isAdjustNoiseVar = true;
19378 break;
19379 case 9:
19380 nphy_adj_tone_id_buf[0] = 89;
19381 nphy_adj_tone_id_buf[1] = 90;
19382 nphy_adj_noise_var_buf[0] = 0x22f;
19383 nphy_adj_noise_var_buf[1] = 0x24f;
19384 isAdjustNoiseVar = true;
19385 break;
19386 case 10:
19387 nphy_adj_tone_id_buf[0] = 73;
19388 nphy_adj_tone_id_buf[1] = 74;
19389 nphy_adj_noise_var_buf[0] = 0x22f;
19390 nphy_adj_noise_var_buf[1] = 0x24f;
19391 isAdjustNoiseVar = true;
19392 break;
19393 default:
19394 isAdjustNoiseVar = false;
19395 break;
19396 }
19397 }
19398
19399 if (isAdjustNoiseVar) {
19400 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
19401 sizeof(nphy_adj_tone_id_buf[0]);
19402
19403 wlc_phy_adjust_min_noisevar_nphy(
19404 pi,
19405 numTonesAdjust,
19406 nphy_adj_tone_id_buf,
19407 nphy_adj_noise_var_buf);
19408
19409 tempval = 0;
19410
19411 } else {
19412 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19413 NULL);
19414 }
19415 }
19416
19417 if ((pi->nphy_aband_spurwar_en) &&
19418 (CHSPEC_IS5G(pi->radio_chanspec))) {
19419 switch (cur_channel) {
19420 case 54:
19421 nphy_adj_tone_id_buf[0] = 32;
19422 nphy_adj_noise_var_buf[0] = 0x25f;
19423 break;
19424 case 38:
19425 case 102:
19426 case 118:
19427 nphy_adj_tone_id_buf[0] = 0;
19428 nphy_adj_noise_var_buf[0] = 0x0;
19429 break;
19430 case 134:
19431 nphy_adj_tone_id_buf[0] = 32;
19432 nphy_adj_noise_var_buf[0] = 0x21f;
19433 break;
19434 case 151:
19435 nphy_adj_tone_id_buf[0] = 16;
19436 nphy_adj_noise_var_buf[0] = 0x23f;
19437 break;
19438 case 153:
19439 case 161:
19440 nphy_adj_tone_id_buf[0] = 48;
19441 nphy_adj_noise_var_buf[0] = 0x23f;
19442 break;
19443 default:
19444 nphy_adj_tone_id_buf[0] = 0;
19445 nphy_adj_noise_var_buf[0] = 0x0;
19446 break;
19447 }
19448
19449 if (nphy_adj_tone_id_buf[0]
19450 && nphy_adj_noise_var_buf[0])
19451 wlc_phy_adjust_min_noisevar_nphy(
19452 pi, 1,
19453 nphy_adj_tone_id_buf,
19454 nphy_adj_noise_var_buf);
19455 else
19456 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19457 NULL);
19458 }
19459
19460 if (pi->phyhang_avoid)
19461 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19462 }
19463}
19464
19465void wlc_phy_init_nphy(struct brcms_phy *pi)
19466{
19467 u16 val;
19468 u16 clip1_ths[2];
19469 struct nphy_txgains target_gain;
19470 u8 tx_pwr_ctrl_state;
19471 bool do_nphy_cal = false;
19472 uint core;
19473 uint origidx, intr_val;
19474 struct d11regs __iomem *regs;
19475 u32 d11_clk_ctl_st;
19476 bool do_rssi_cal = false;
19477
19478 core = 0;
19479
19480 if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19481 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19482
19483 if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19484 ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19485 (pi->sh->chippkg == BCM4718_PKG_ID))) {
19486 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19487 (CHSPEC_IS2G(pi->radio_chanspec)))
19488 ai_corereg(pi->sh->sih, SI_CC_IDX,
19489 offsetof(struct chipcregs, chipcontrol),
19490 0x40, 0x40);
19491 }
19492
19493 if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19494 CHSPEC_IS40(pi->radio_chanspec)) {
19495
19496 regs = (struct d11regs __iomem *)
19497 ai_switch_core(pi->sh->sih,
19498 D11_CORE_ID, &origidx,
19499 &intr_val);
19500 d11_clk_ctl_st = R_REG(&regs->clk_ctl_st);
19501 AND_REG(&regs->clk_ctl_st,
19502 ~(CCS_FORCEHT | CCS_HTAREQ));
19503
19504 W_REG(&regs->clk_ctl_st, d11_clk_ctl_st);
19505
19506 ai_restore_core(pi->sh->sih, origidx, intr_val);
19507 }
19508
19509 pi->use_int_tx_iqlo_cal_nphy =
19510 (PHY_IPA(pi) ||
19511 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19512 (NREV_GE(pi->pubpi.phy_rev, 5)
19513 && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19514
19515 pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19516
19517 pi->nphy_deaf_count = 0;
19518
19519 wlc_phy_tbl_init_nphy(pi);
19520
19521 pi->nphy_crsminpwr_adjusted = false;
19522 pi->nphy_noisevars_adjusted = false;
19523
19524 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19525 write_phy_reg(pi, 0xe7, 0);
19526 write_phy_reg(pi, 0xec, 0);
19527 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19528 write_phy_reg(pi, 0x342, 0);
19529 write_phy_reg(pi, 0x343, 0);
19530 write_phy_reg(pi, 0x346, 0);
19531 write_phy_reg(pi, 0x347, 0);
19532 }
19533 write_phy_reg(pi, 0xe5, 0);
19534 write_phy_reg(pi, 0xe6, 0);
19535 } else {
19536 write_phy_reg(pi, 0xec, 0);
19537 }
19538
19539 write_phy_reg(pi, 0x91, 0);
19540 write_phy_reg(pi, 0x92, 0);
19541 if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19542 write_phy_reg(pi, 0x93, 0);
19543 write_phy_reg(pi, 0x94, 0);
19544 }
19545
19546 and_phy_reg(pi, 0xa1, ~3);
19547
19548 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19549 write_phy_reg(pi, 0x8f, 0);
19550 write_phy_reg(pi, 0xa5, 0);
19551 } else {
19552 write_phy_reg(pi, 0xa5, 0);
19553 }
19554
19555 if (NREV_IS(pi->pubpi.phy_rev, 2))
19556 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19557 else if (NREV_LT(pi->pubpi.phy_rev, 2))
19558 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19559
19560 write_phy_reg(pi, 0x203, 32);
19561 write_phy_reg(pi, 0x201, 32);
19562
19563 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19564 write_phy_reg(pi, 0x20d, 160);
19565 else
19566 write_phy_reg(pi, 0x20d, 184);
19567
19568 write_phy_reg(pi, 0x13a, 200);
19569
19570 write_phy_reg(pi, 0x70, 80);
19571
19572 write_phy_reg(pi, 0x1ff, 48);
19573
19574 if (NREV_LT(pi->pubpi.phy_rev, 8))
19575 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19576
19577 wlc_phy_stf_chain_upd_nphy(pi);
19578
19579 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19580 write_phy_reg(pi, 0x180, 0xaa8);
19581 write_phy_reg(pi, 0x181, 0x9a4);
19582 }
19583
19584 if (PHY_IPA(pi)) {
19585 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19586
19587 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19588 0x29b, (0x1 << 0), (1) << 0);
19589
19590 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19591 0x29c, (0x1ff << 7),
19592 (pi->nphy_papd_epsilon_offset[core]) << 7);
19593
19594 }
19595
19596 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19597 } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19598 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19599 }
19600
19601 wlc_phy_workarounds_nphy(pi);
19602
19603 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19604
19605 val = read_phy_reg(pi, 0x01);
19606 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19607 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19608 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19609
19610 wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19611
19612 wlc_phy_pa_override_nphy(pi, OFF);
19613 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19614 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19615 wlc_phy_pa_override_nphy(pi, ON);
19616
19617 wlc_phy_classifier_nphy(pi, 0, 0);
19618 wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19619
19620 if (CHSPEC_IS2G(pi->radio_chanspec))
19621 wlc_phy_bphy_init_nphy(pi);
19622
19623 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19624 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19625
19626 wlc_phy_txpwr_fixpower_nphy(pi);
19627
19628 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19629
19630 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19631
19632 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19633 u32 *tx_pwrctrl_tbl = NULL;
19634 u16 idx;
19635 s16 pga_gn = 0;
19636 s16 pad_gn = 0;
19637 s32 rfpwr_offset;
19638
19639 if (PHY_IPA(pi)) {
19640 tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19641 } else {
19642 if (CHSPEC_IS5G(pi->radio_chanspec)) {
19643 if (NREV_IS(pi->pubpi.phy_rev, 3))
19644 tx_pwrctrl_tbl =
19645 nphy_tpc_5GHz_txgain_rev3;
19646 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19647 tx_pwrctrl_tbl =
19648 (pi->srom_fem5g.extpagain ==
19649 3) ?
19650 nphy_tpc_5GHz_txgain_HiPwrEPA :
19651 nphy_tpc_5GHz_txgain_rev4;
19652 else
19653 tx_pwrctrl_tbl =
19654 nphy_tpc_5GHz_txgain_rev5;
19655 } else {
19656 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19657 if (pi->pubpi.radiorev == 5)
19658 tx_pwrctrl_tbl =
19659 nphy_tpc_txgain_epa_2057rev5;
19660 else if (pi->pubpi.radiorev == 3)
19661 tx_pwrctrl_tbl =
19662 nphy_tpc_txgain_epa_2057rev3;
19663 } else {
19664 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19665 (pi->srom_fem2g.extpagain == 3))
19666 tx_pwrctrl_tbl =
19667 nphy_tpc_txgain_HiPwrEPA;
19668 else
19669 tx_pwrctrl_tbl =
19670 nphy_tpc_txgain_rev3;
19671 }
19672 }
19673 }
19674
19675 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19676 192, 32, tx_pwrctrl_tbl);
19677 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19678 192, 32, tx_pwrctrl_tbl);
19679
19680 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19681
19682 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19683
19684 for (idx = 0; idx < 128; idx++) {
19685 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19686 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19687 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19688 pad_gn);
19689 wlc_phy_table_write_nphy(
19690 pi,
19691 NPHY_TBL_ID_CORE1TXPWRCTL,
19692 1, 576 + idx, 32,
19693 &rfpwr_offset);
19694 wlc_phy_table_write_nphy(
19695 pi,
19696 NPHY_TBL_ID_CORE2TXPWRCTL,
19697 1, 576 + idx, 32,
19698 &rfpwr_offset);
19699 }
19700 } else {
19701
19702 for (idx = 0; idx < 128; idx++) {
19703 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19704 if (CHSPEC_IS2G(pi->radio_chanspec))
19705 rfpwr_offset = (s16)
19706 nphy_papd_pga_gain_delta_ipa_2g
19707 [pga_gn];
19708 else
19709 rfpwr_offset = (s16)
19710 nphy_papd_pga_gain_delta_ipa_5g
19711 [pga_gn];
19712
19713 wlc_phy_table_write_nphy(
19714 pi,
19715 NPHY_TBL_ID_CORE1TXPWRCTL,
19716 1, 576 + idx, 32,
19717 &rfpwr_offset);
19718 wlc_phy_table_write_nphy(
19719 pi,
19720 NPHY_TBL_ID_CORE2TXPWRCTL,
19721 1, 576 + idx, 32,
19722 &rfpwr_offset);
19723 }
19724
19725 }
19726 } else {
19727
19728 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19729 192, 32, nphy_tpc_txgain);
19730 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19731 192, 32, nphy_tpc_txgain);
19732 }
19733
19734 if (pi->sh->phyrxchain != 0x3)
19735 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19736 pi->sh->phyrxchain);
19737
19738 if (PHY_PERICAL_MPHASE_PENDING(pi))
19739 wlc_phy_cal_perical_mphase_restart(pi);
19740
19741 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19742 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19743 (pi->nphy_rssical_chanspec_2G == 0) :
19744 (pi->nphy_rssical_chanspec_5G == 0);
19745
19746 if (do_rssi_cal)
19747 wlc_phy_rssi_cal_nphy(pi);
19748 else
19749 wlc_phy_restore_rssical_nphy(pi);
19750 } else {
19751 wlc_phy_rssi_cal_nphy(pi);
19752 }
19753
19754 if (!SCAN_RM_IN_PROGRESS(pi))
19755 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19756 (pi->nphy_iqcal_chanspec_2G == 0) :
19757 (pi->nphy_iqcal_chanspec_5G == 0);
19758
19759 if (!pi->do_initcal)
19760 do_nphy_cal = false;
19761
19762 if (do_nphy_cal) {
19763
19764 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19765
19766 if (pi->antsel_type == ANTSEL_2x3)
19767 wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19768 true);
19769
19770 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19771 wlc_phy_rssi_cal_nphy(pi);
19772
19773 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19774 pi->nphy_cal_orig_pwr_idx[0] =
19775 pi->nphy_txpwrindex[PHY_CORE_0]
19776 .
19777 index_internal;
19778 pi->nphy_cal_orig_pwr_idx[1] =
19779 pi->nphy_txpwrindex[PHY_CORE_1]
19780 .
19781 index_internal;
19782
19783 wlc_phy_precal_txgain_nphy(pi);
19784 target_gain =
19785 wlc_phy_get_tx_gain_nphy(pi);
19786 }
19787
19788 if (wlc_phy_cal_txiqlo_nphy
19789 (pi, target_gain, true,
19790 false) == 0) {
19791 if (wlc_phy_cal_rxiq_nphy
19792 (pi, target_gain, 2,
19793 false) == 0)
19794 wlc_phy_savecal_nphy(pi);
19795
19796 }
19797 } else if (pi->mphase_cal_phase_id ==
19798 MPHASE_CAL_STATE_IDLE) {
19799 wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19800 PHY_PERICAL_PHYINIT);
19801 }
19802 } else {
19803 wlc_phy_restorecal_nphy(pi);
19804 }
19805
19806 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19807
19808 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19809
19810 wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19811
19812 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19813
19814 write_phy_reg(pi, 0x70, 50);
19815
19816 wlc_phy_txlpfbw_nphy(pi);
19817
19818 wlc_phy_spurwar_nphy(pi);
19819
19820}
19821
19822static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19823{
19824 u16 val;
19825
19826 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19827
19828 val = read_phy_reg(pi, 0x01);
19829 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19830 udelay(1);
19831 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19832
19833 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19834
19835 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19836}
19837
19838void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19839{
19840 u16 rfctrlintc_override_val;
19841
19842 if (!en) {
19843
19844 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19845 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19846
19847 if (NREV_GE(pi->pubpi.phy_rev, 7))
19848 rfctrlintc_override_val = 0x1480;
19849 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19850 rfctrlintc_override_val =
19851 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19852 else
19853 rfctrlintc_override_val =
19854 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19855
19856 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19857 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19858 } else {
19859 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19860 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19861 }
19862
19863}
19864
19865void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19866{
19867
19868 u16 txrx_chain =
19869 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19870 bool CoreActv_override = false;
19871
19872 if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19873 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19874 CoreActv_override = true;
19875
19876 if (NREV_LE(pi->pubpi.phy_rev, 2))
19877 and_phy_reg(pi, 0xa0, ~0x20);
19878 } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19879 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19880 CoreActv_override = true;
19881
19882 if (NREV_LE(pi->pubpi.phy_rev, 2))
19883 or_phy_reg(pi, 0xa0, 0x20);
19884 }
19885
19886 mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19887
19888 if (CoreActv_override) {
19889 pi->nphy_perical = PHY_PERICAL_DISABLE;
19890 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19891 } else {
19892 pi->nphy_perical = PHY_PERICAL_MPHASE;
19893 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19894 }
19895}
19896
19897void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19898{
19899 u16 regval;
19900 u16 tbl_buf[16];
19901 uint i;
19902 struct brcms_phy *pi = (struct brcms_phy *) pih;
19903 u16 tbl_opcode;
19904 bool suspend;
19905
19906 pi->sh->phyrxchain = rxcore_bitmask;
19907
19908 if (!pi->sh->clk)
19909 return;
19910
19911 suspend = (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
19912 if (!suspend)
19913 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19914
19915 if (pi->phyhang_avoid)
19916 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19917
19918 regval = read_phy_reg(pi, 0xa2);
19919 regval &= ~(0xf << 4);
19920 regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19921 write_phy_reg(pi, 0xa2, regval);
19922
19923 if ((rxcore_bitmask & 0x3) != 0x3) {
19924
19925 write_phy_reg(pi, 0x20e, 1);
19926
19927 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19928 if (pi->rx2tx_biasentry == -1) {
19929 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19930 ARRAY_SIZE(tbl_buf), 80,
19931 16, tbl_buf);
19932
19933 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19934 if (tbl_buf[i] ==
19935 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19936 pi->rx2tx_biasentry = (u8) i;
19937 tbl_opcode =
19938 NPHY_REV3_RFSEQ_CMD_NOP;
19939 wlc_phy_table_write_nphy(
19940 pi,
19941 NPHY_TBL_ID_RFSEQ,
19942 1, i,
19943 16,
19944 &tbl_opcode);
19945 break;
19946 } else if (tbl_buf[i] ==
19947 NPHY_REV3_RFSEQ_CMD_END)
19948 break;
19949 }
19950 }
19951 }
19952 } else {
19953
19954 write_phy_reg(pi, 0x20e, 30);
19955
19956 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19957 if (pi->rx2tx_biasentry != -1) {
19958 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19959 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19960 1, pi->rx2tx_biasentry,
19961 16, &tbl_opcode);
19962 pi->rx2tx_biasentry = -1;
19963 }
19964 }
19965 }
19966
19967 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19968
19969 if (pi->phyhang_avoid)
19970 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19971
19972 if (!suspend)
19973 wlapi_enable_mac(pi->sh->physhim);
19974}
19975
19976u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19977{
19978 u16 regval, rxen_bits;
19979 struct brcms_phy *pi = (struct brcms_phy *) pih;
19980
19981 regval = read_phy_reg(pi, 0xa2);
19982 rxen_bits = (regval >> 4) & 0xf;
19983
19984 return (u8) rxen_bits;
19985}
19986
19987bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19988{
19989 return PHY_IPA(pi);
19990}
19991
19992void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19993{
19994}
19995
19996static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19997{
19998
19999 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20000 and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
20001
20002 or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
20003 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
20004
20005}
20006
20007static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
20008{
20009 struct radio_20xx_regs *regs_2057_ptr = NULL;
20010
20011 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20012 regs_2057_ptr = regs_2057_rev4;
20013 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20014 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20015 switch (pi->pubpi.radiorev) {
20016 case 5:
20017
20018 if (pi->pubpi.radiover == 0x0)
20019 regs_2057_ptr = regs_2057_rev5;
20020 else if (pi->pubpi.radiover == 0x1)
20021 regs_2057_ptr = regs_2057_rev5v1;
20022 else
20023 break;
20024
20025 case 7:
20026
20027 regs_2057_ptr = regs_2057_rev7;
20028 break;
20029
20030 case 8:
20031
20032 regs_2057_ptr = regs_2057_rev8;
20033 break;
20034
20035 default:
20036 break;
20037 }
20038 }
20039
20040 wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
20041}
20042
20043static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
20044{
20045 u16 rcal_reg = 0;
20046 int i;
20047
20048 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20049
20050 if (pi->pubpi.radiorev == 5) {
20051
20052 and_phy_reg(pi, 0x342, ~(0x1 << 1));
20053
20054 udelay(10);
20055
20056 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
20057 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20058 0x1);
20059 }
20060 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
20061
20062 udelay(10);
20063
20064 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
20065
20066 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20067 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
20068 if (rcal_reg & 0x1)
20069 break;
20070
20071 udelay(100);
20072 }
20073
20074 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20075 "HW error: radio calib2"))
20076 return 0;
20077
20078 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
20079
20080 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
20081
20082 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
20083 if (pi->pubpi.radiorev == 5) {
20084
20085 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
20086 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20087 0x0);
20088 }
20089
20090 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20091
20092 mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
20093 rcal_reg);
20094 mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
20095 rcal_reg << 2);
20096 }
20097
20098 } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20099 u16 savereg;
20100
20101 savereg =
20102 read_radio_reg(
20103 pi,
20104 RADIO_2056_SYN_PLL_MAST2 |
20105 RADIO_2056_SYN);
20106 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20107 savereg | 0x7);
20108 udelay(10);
20109
20110 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20111 0x1);
20112 udelay(10);
20113
20114 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20115 0x9);
20116
20117 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20118 rcal_reg = read_radio_reg(
20119 pi,
20120 RADIO_2056_SYN_RCAL_CODE_OUT |
20121 RADIO_2056_SYN);
20122 if (rcal_reg & 0x80)
20123 break;
20124
20125 udelay(100);
20126 }
20127
20128 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20129 "HW error: radio calib3"))
20130 return 0;
20131
20132 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20133 0x1);
20134
20135 rcal_reg =
20136 read_radio_reg(pi,
20137 RADIO_2056_SYN_RCAL_CODE_OUT |
20138 RADIO_2056_SYN);
20139
20140 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20141 0x0);
20142
20143 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20144 savereg);
20145
20146 return rcal_reg & 0x1f;
20147 }
20148 return rcal_reg & 0x3e;
20149}
20150
20151static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
20152{
20153 u16 rccal_valid;
20154 int i;
20155 bool chip43226_6362A0;
20156
20157 chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
20158 || (pi->pubpi.radiorev == 4)
20159 || (pi->pubpi.radiorev == 6));
20160
20161 rccal_valid = 0;
20162 if (chip43226_6362A0) {
20163 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20164 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20165 } else {
20166 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20167
20168 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20169 }
20170 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20171 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20172
20173 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20174 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20175 if (rccal_valid & 0x2)
20176 break;
20177
20178 udelay(500);
20179 }
20180
20181 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20182
20183 rccal_valid = 0;
20184 if (chip43226_6362A0) {
20185 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20186 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20187 } else {
20188 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20189
20190 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20191 }
20192 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20193 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20194
20195 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20196 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20197 if (rccal_valid & 0x2)
20198 break;
20199
20200 udelay(500);
20201 }
20202
20203 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20204
20205 rccal_valid = 0;
20206 if (chip43226_6362A0) {
20207 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20208
20209 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20210 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20211 } else {
20212 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20213 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20214 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20215 }
20216 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20217
20218 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20219 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20220 if (rccal_valid & 0x2)
20221 break;
20222
20223 udelay(500);
20224 }
20225
20226 if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20227 return 0;
20228
20229 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20230
20231 return rccal_valid;
20232}
20233
20234static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20235{
20236
20237 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20238
20239 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20240 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20241 mdelay(2);
20242 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20243 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20244
20245 if (pi->phy_init_por) {
20246 wlc_phy_radio205x_rcal(pi);
20247 wlc_phy_radio2057_rccal(pi);
20248 }
20249
20250 mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20251}
20252
20253static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20254{
20255 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20256 const struct radio_regs *regs_TX_2056_ptr = NULL;
20257 const struct radio_regs *regs_RX_2056_ptr = NULL;
20258
20259 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20260 regs_SYN_2056_ptr = regs_SYN_2056;
20261 regs_TX_2056_ptr = regs_TX_2056;
20262 regs_RX_2056_ptr = regs_RX_2056;
20263 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20264 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20265 regs_TX_2056_ptr = regs_TX_2056_A1;
20266 regs_RX_2056_ptr = regs_RX_2056_A1;
20267 } else {
20268 switch (pi->pubpi.radiorev) {
20269 case 5:
20270 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20271 regs_TX_2056_ptr = regs_TX_2056_rev5;
20272 regs_RX_2056_ptr = regs_RX_2056_rev5;
20273 break;
20274
20275 case 6:
20276 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20277 regs_TX_2056_ptr = regs_TX_2056_rev6;
20278 regs_RX_2056_ptr = regs_RX_2056_rev6;
20279 break;
20280
20281 case 7:
20282 case 9:
20283 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20284 regs_TX_2056_ptr = regs_TX_2056_rev7;
20285 regs_RX_2056_ptr = regs_RX_2056_rev7;
20286 break;
20287
20288 case 8:
20289 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20290 regs_TX_2056_ptr = regs_TX_2056_rev8;
20291 regs_RX_2056_ptr = regs_RX_2056_rev8;
20292 break;
20293
20294 case 11:
20295 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20296 regs_TX_2056_ptr = regs_TX_2056_rev11;
20297 regs_RX_2056_ptr = regs_RX_2056_rev11;
20298 break;
20299
20300 default:
20301 break;
20302 }
20303 }
20304
20305 wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20306
20307 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20308
20309 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20310
20311 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20312
20313 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20314}
20315
20316static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20317{
20318 mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20319
20320 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20321 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20322 udelay(1000);
20323 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20324
20325 if ((pi->sh->boardflags2 & BFL2_LEGACY)
20326 || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20327 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20328 else
20329 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20330
20331 mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20332
20333 if (pi->phy_init_por)
20334 wlc_phy_radio205x_rcal(pi);
20335}
20336
20337static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20338{
20339
20340 and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20341 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20342
20343 or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20344}
20345
20346static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20347{
20348 wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20349}
20350
20351static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20352{
20353
20354 and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20355 ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20356
20357 if (((pi->sh->sromrev >= 4)
20358 && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20359 || ((pi->sh->sromrev < 4))) {
20360 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20361 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20362 }
20363
20364 mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20365 write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20366
20367 and_radio_reg(pi, RADIO_2055_CAL_MISC,
20368 ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20369
20370 or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20371
20372 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20373
20374 udelay(1000);
20375
20376 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20377
20378 SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20379 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20380
20381 if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20382 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20383 "HW error: radio calibration1\n"))
20384 return;
20385
20386 and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20387 ~(RADIO_2055_CAL_LPO_ENABLE));
20388
20389 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20390
20391 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20392 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20393
20394 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20395 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20396
20397 mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20398 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20399 mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20400 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20401 if (pi->nphy_gain_boost) {
20402 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20403 ~(RADIO_2055_GAINBST_DISABLE));
20404 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20405 ~(RADIO_2055_GAINBST_DISABLE));
20406 } else {
20407 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20408 RADIO_2055_GAINBST_DISABLE);
20409 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20410 RADIO_2055_GAINBST_DISABLE);
20411 }
20412
20413 udelay(2);
20414}
20415
20416void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20417{
20418 if (on) {
20419 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20420 if (!pi->radio_is_on) {
20421 wlc_phy_radio_preinit_205x(pi);
20422 wlc_phy_radio_init_2057(pi);
20423 wlc_phy_radio_postinit_2057(pi);
20424 }
20425
20426 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20427 pi->radio_chanspec);
20428 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20429 wlc_phy_radio_preinit_205x(pi);
20430 wlc_phy_radio_init_2056(pi);
20431 wlc_phy_radio_postinit_2056(pi);
20432
20433 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20434 pi->radio_chanspec);
20435 } else {
20436 wlc_phy_radio_preinit_2055(pi);
20437 wlc_phy_radio_init_2055(pi);
20438 wlc_phy_radio_postinit_2055(pi);
20439 }
20440
20441 pi->radio_is_on = true;
20442
20443 } else {
20444
20445 if (NREV_GE(pi->pubpi.phy_rev, 3)
20446 && NREV_LT(pi->pubpi.phy_rev, 7)) {
20447 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20448 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20449
20450 write_radio_reg(pi,
20451 RADIO_2056_TX_PADA_BOOST_TUNE |
20452 RADIO_2056_TX0, 0);
20453 write_radio_reg(pi,
20454 RADIO_2056_TX_PADG_BOOST_TUNE |
20455 RADIO_2056_TX0, 0);
20456 write_radio_reg(pi,
20457 RADIO_2056_TX_PGAA_BOOST_TUNE |
20458 RADIO_2056_TX0, 0);
20459 write_radio_reg(pi,
20460 RADIO_2056_TX_PGAG_BOOST_TUNE |
20461 RADIO_2056_TX0, 0);
20462 mod_radio_reg(pi,
20463 RADIO_2056_TX_MIXA_BOOST_TUNE |
20464 RADIO_2056_TX0, 0xf0, 0);
20465 write_radio_reg(pi,
20466 RADIO_2056_TX_MIXG_BOOST_TUNE |
20467 RADIO_2056_TX0, 0);
20468
20469 write_radio_reg(pi,
20470 RADIO_2056_TX_PADA_BOOST_TUNE |
20471 RADIO_2056_TX1, 0);
20472 write_radio_reg(pi,
20473 RADIO_2056_TX_PADG_BOOST_TUNE |
20474 RADIO_2056_TX1, 0);
20475 write_radio_reg(pi,
20476 RADIO_2056_TX_PGAA_BOOST_TUNE |
20477 RADIO_2056_TX1, 0);
20478 write_radio_reg(pi,
20479 RADIO_2056_TX_PGAG_BOOST_TUNE |
20480 RADIO_2056_TX1, 0);
20481 mod_radio_reg(pi,
20482 RADIO_2056_TX_MIXA_BOOST_TUNE |
20483 RADIO_2056_TX1, 0xf0, 0);
20484 write_radio_reg(pi,
20485 RADIO_2056_TX_MIXG_BOOST_TUNE |
20486 RADIO_2056_TX1, 0);
20487
20488 pi->radio_is_on = false;
20489 }
20490
20491 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20492 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20493 pi->radio_is_on = false;
20494 }
20495
20496 }
20497}
20498
20499static bool
20500wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20501 const struct chan_info_nphy_radio2057 **t0,
20502 const struct chan_info_nphy_radio205x **t1,
20503 const struct chan_info_nphy_radio2057_rev5 **t2,
20504 const struct chan_info_nphy_2055 **t3)
20505{
20506 uint i;
20507 const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20508 const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20509 const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20510 u32 tbl_len = 0;
20511
20512 int freq = 0;
20513
20514 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20515
20516 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20517
20518 chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20519 tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20520
20521 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20522 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20523 switch (pi->pubpi.radiorev) {
20524
20525 case 5:
20526
20527 if (pi->pubpi.radiover == 0x0) {
20528
20529 chan_info_tbl_p_2 =
20530 chan_info_nphyrev8_2057_rev5;
20531 tbl_len = ARRAY_SIZE(
20532 chan_info_nphyrev8_2057_rev5);
20533
20534 } else if (pi->pubpi.radiover == 0x1) {
20535
20536 chan_info_tbl_p_2 =
20537 chan_info_nphyrev9_2057_rev5v1;
20538 tbl_len = ARRAY_SIZE(
20539 chan_info_nphyrev9_2057_rev5v1);
20540
20541 }
20542 break;
20543
20544 case 7:
20545 chan_info_tbl_p_0 =
20546 chan_info_nphyrev8_2057_rev7;
20547 tbl_len = ARRAY_SIZE(
20548 chan_info_nphyrev8_2057_rev7);
20549 break;
20550
20551 case 8:
20552 chan_info_tbl_p_0 =
20553 chan_info_nphyrev8_2057_rev8;
20554 tbl_len = ARRAY_SIZE(
20555 chan_info_nphyrev8_2057_rev8);
20556 break;
20557
20558 default:
20559 break;
20560 }
20561 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20562
20563 chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20564 tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20565 } else {
20566 goto fail;
20567 }
20568
20569 for (i = 0; i < tbl_len; i++) {
20570 if (pi->pubpi.radiorev == 5) {
20571
20572 if (chan_info_tbl_p_2[i].chan == channel)
20573 break;
20574 } else {
20575
20576 if (chan_info_tbl_p_0[i].chan == channel)
20577 break;
20578 }
20579 }
20580
20581 if (i >= tbl_len)
20582 goto fail;
20583
20584 if (pi->pubpi.radiorev == 5) {
20585 *t2 = &chan_info_tbl_p_2[i];
20586 freq = chan_info_tbl_p_2[i].freq;
20587 } else {
20588 *t0 = &chan_info_tbl_p_0[i];
20589 freq = chan_info_tbl_p_0[i].freq;
20590 }
20591
20592 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20593 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20594 chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20595 tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20596 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20597 chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20598 tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20599 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20600 || NREV_IS(pi->pubpi.phy_rev, 6)) {
20601 switch (pi->pubpi.radiorev) {
20602 case 5:
20603 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20604 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20605 break;
20606 case 6:
20607 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20608 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20609 break;
20610 case 7:
20611 case 9:
20612 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20613 tbl_len =
20614 ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20615 break;
20616 case 8:
20617 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20618 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20619 break;
20620 case 11:
20621 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20622 tbl_len = ARRAY_SIZE(
20623 chan_info_nphyrev6_2056v11);
20624 break;
20625 default:
20626 break;
20627 }
20628 }
20629
20630 for (i = 0; i < tbl_len; i++) {
20631 if (chan_info_tbl_p_1[i].chan == channel)
20632 break;
20633 }
20634
20635 if (i >= tbl_len)
20636 goto fail;
20637
20638 *t1 = &chan_info_tbl_p_1[i];
20639 freq = chan_info_tbl_p_1[i].freq;
20640
20641 } else {
20642 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20643 if (chan_info_nphy_2055[i].chan == channel)
20644 break;
20645
20646 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20647 goto fail;
20648
20649 *t3 = &chan_info_nphy_2055[i];
20650 freq = chan_info_nphy_2055[i].freq;
20651 }
20652
20653 *f = freq;
20654 return true;
20655
20656fail:
20657 *f = WL_CHAN_FREQ_RANGE_2G;
20658 return false;
20659}
20660
20661u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20662{
20663 int freq;
20664 const struct chan_info_nphy_radio2057 *t0 = NULL;
20665 const struct chan_info_nphy_radio205x *t1 = NULL;
20666 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20667 const struct chan_info_nphy_2055 *t3 = NULL;
20668
20669 if (channel == 0)
20670 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20671
20672 wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20673
20674 if (CHSPEC_IS2G(pi->radio_chanspec))
20675 return WL_CHAN_FREQ_RANGE_2G;
20676
20677 if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20678 return WL_CHAN_FREQ_RANGE_5GL;
20679 else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20680 return WL_CHAN_FREQ_RANGE_5GM;
20681 else
20682 return WL_CHAN_FREQ_RANGE_5GH;
20683}
20684
20685static void
20686wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20687 const struct chan_info_nphy_2055 *ci)
20688{
20689
20690 write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20691 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20692 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20693 write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20694
20695 BRCMS_PHY_WAR_PR51571(pi);
20696
20697 write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20698 write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20699 write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20700 write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20701
20702 BRCMS_PHY_WAR_PR51571(pi);
20703
20704 write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20705 write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20706 write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20707 write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20708
20709 BRCMS_PHY_WAR_PR51571(pi);
20710
20711 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20712 ci->RF_core1_lgbuf_a_tune);
20713 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20714 ci->RF_core1_lgbuf_g_tune);
20715 write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20716 write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20717 ci->RF_core1_tx_pga_pad_tn);
20718
20719 BRCMS_PHY_WAR_PR51571(pi);
20720
20721 write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20722 ci->RF_core1_tx_mx_bgtrim);
20723 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20724 ci->RF_core2_lgbuf_a_tune);
20725 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20726 ci->RF_core2_lgbuf_g_tune);
20727 write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20728
20729 BRCMS_PHY_WAR_PR51571(pi);
20730
20731 write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20732 ci->RF_core2_tx_pga_pad_tn);
20733 write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20734 ci->RF_core2_tx_mx_bgtrim);
20735
20736 udelay(50);
20737
20738 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20739 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20740
20741 BRCMS_PHY_WAR_PR51571(pi);
20742
20743 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20744
20745 udelay(300);
20746}
20747
20748static void
20749wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20750 const struct chan_info_nphy_radio205x *ci)
20751{
20752 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20753
20754 write_radio_reg(pi,
20755 RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20756 ci->RF_SYN_pll_vcocal1);
20757 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20758 ci->RF_SYN_pll_vcocal2);
20759 write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20760 ci->RF_SYN_pll_refdiv);
20761 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20762 ci->RF_SYN_pll_mmd2);
20763 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20764 ci->RF_SYN_pll_mmd1);
20765 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20766 ci->RF_SYN_pll_loopfilter1);
20767 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20768 ci->RF_SYN_pll_loopfilter2);
20769 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20770 ci->RF_SYN_pll_loopfilter3);
20771 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20772 ci->RF_SYN_pll_loopfilter4);
20773 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20774 ci->RF_SYN_pll_loopfilter5);
20775 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20776 ci->RF_SYN_reserved_addr27);
20777 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20778 ci->RF_SYN_reserved_addr28);
20779 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20780 ci->RF_SYN_reserved_addr29);
20781 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20782 ci->RF_SYN_logen_VCOBUF1);
20783 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20784 ci->RF_SYN_logen_MIXER2);
20785 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20786 ci->RF_SYN_logen_BUF3);
20787 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20788 ci->RF_SYN_logen_BUF4);
20789
20790 write_radio_reg(pi,
20791 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20792 ci->RF_RX0_lnaa_tune);
20793 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20794 ci->RF_RX0_lnag_tune);
20795 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20796 ci->RF_TX0_intpaa_boost_tune);
20797 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20798 ci->RF_TX0_intpag_boost_tune);
20799 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20800 ci->RF_TX0_pada_boost_tune);
20801 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20802 ci->RF_TX0_padg_boost_tune);
20803 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20804 ci->RF_TX0_pgaa_boost_tune);
20805 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20806 ci->RF_TX0_pgag_boost_tune);
20807 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20808 ci->RF_TX0_mixa_boost_tune);
20809 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20810 ci->RF_TX0_mixg_boost_tune);
20811
20812 write_radio_reg(pi,
20813 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20814 ci->RF_RX1_lnaa_tune);
20815 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20816 ci->RF_RX1_lnag_tune);
20817 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20818 ci->RF_TX1_intpaa_boost_tune);
20819 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20820 ci->RF_TX1_intpag_boost_tune);
20821 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20822 ci->RF_TX1_pada_boost_tune);
20823 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20824 ci->RF_TX1_padg_boost_tune);
20825 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20826 ci->RF_TX1_pgaa_boost_tune);
20827 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20828 ci->RF_TX1_pgag_boost_tune);
20829 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20830 ci->RF_TX1_mixa_boost_tune);
20831 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20832 ci->RF_TX1_mixg_boost_tune);
20833
20834 if (NREV_IS(pi->pubpi.phy_rev, 3))
20835 regs_SYN_2056_ptr = regs_SYN_2056;
20836 else if (NREV_IS(pi->pubpi.phy_rev, 4))
20837 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20838 else {
20839 switch (pi->pubpi.radiorev) {
20840 case 5:
20841 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20842 break;
20843 case 6:
20844 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20845 break;
20846 case 7:
20847 case 9:
20848 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20849 break;
20850 case 8:
20851 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20852 break;
20853 case 11:
20854 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20855 break;
20856 }
20857 }
20858 if (CHSPEC_IS2G(pi->radio_chanspec))
20859 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20860 RADIO_2056_SYN,
20861 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20862 else
20863 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20864 RADIO_2056_SYN,
20865 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20866
20867 if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20868 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20869 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20870 RADIO_2056_SYN, 0x1f);
20871 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20872 RADIO_2056_SYN, 0x1f);
20873
20874 write_radio_reg(pi,
20875 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20876 RADIO_2056_SYN, 0xb);
20877 write_radio_reg(pi,
20878 RADIO_2056_SYN_PLL_CP2 |
20879 RADIO_2056_SYN, 0x14);
20880 }
20881 }
20882
20883 if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20884 (CHSPEC_IS2G(pi->radio_chanspec))) {
20885 write_radio_reg(pi,
20886 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20887 0x1f);
20888 write_radio_reg(pi,
20889 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20890 0x1f);
20891 write_radio_reg(pi,
20892 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20893 0xb);
20894 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20895 0x20);
20896 }
20897
20898 if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20899 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20900 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20901 RADIO_2056_SYN, 0x1f);
20902 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20903 RADIO_2056_SYN, 0x1f);
20904 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20905 RADIO_2056_SYN, 0x5);
20906 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20907 RADIO_2056_SYN, 0xc);
20908 }
20909 }
20910
20911 if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20912 u16 pag_boost_tune;
20913 u16 padg_boost_tune;
20914 u16 pgag_boost_tune;
20915 u16 mixg_boost_tune;
20916 u16 bias, cascbias;
20917 uint core;
20918
20919 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20920
20921 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20922
20923 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20924 PADG_IDAC, 0xcc);
20925
20926 bias = 0x25;
20927 cascbias = 0x20;
20928
20929 if ((pi->sh->chip ==
20930 BCM43224_CHIP_ID)
20931 || (pi->sh->chip ==
20932 BCM43225_CHIP_ID)) {
20933 if (pi->sh->chippkg ==
20934 BCM43224_FAB_SMIC) {
20935 bias = 0x2a;
20936 cascbias = 0x38;
20937 }
20938 }
20939
20940 pag_boost_tune = 0x4;
20941 pgag_boost_tune = 0x03;
20942 padg_boost_tune = 0x77;
20943 mixg_boost_tune = 0x65;
20944
20945 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20946 INTPAG_IMAIN_STAT, bias);
20947 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20948 INTPAG_IAUX_STAT, bias);
20949 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20950 INTPAG_CASCBIAS, cascbias);
20951
20952 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20953 INTPAG_BOOST_TUNE,
20954 pag_boost_tune);
20955 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20956 PGAG_BOOST_TUNE,
20957 pgag_boost_tune);
20958 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20959 PADG_BOOST_TUNE,
20960 padg_boost_tune);
20961 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20962 MIXG_BOOST_TUNE,
20963 mixg_boost_tune);
20964 } else {
20965
20966 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20967 0x40 : 0x20;
20968
20969 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20970 INTPAG_IMAIN_STAT, bias);
20971 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20972 INTPAG_IAUX_STAT, bias);
20973 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20974 INTPAG_CASCBIAS, 0x30);
20975 }
20976 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20977 0xee);
20978 }
20979 }
20980
20981 if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20982 && CHSPEC_IS5G(pi->radio_chanspec)) {
20983 u16 paa_boost_tune;
20984 u16 pada_boost_tune;
20985 u16 pgaa_boost_tune;
20986 u16 mixa_boost_tune;
20987 u16 freq, pabias, cascbias;
20988 uint core;
20989
20990 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20991
20992 if (freq < 5150) {
20993
20994 paa_boost_tune = 0xa;
20995 pada_boost_tune = 0x77;
20996 pgaa_boost_tune = 0xf;
20997 mixa_boost_tune = 0xf;
20998 } else if (freq < 5340) {
20999
21000 paa_boost_tune = 0x8;
21001 pada_boost_tune = 0x77;
21002 pgaa_boost_tune = 0xfb;
21003 mixa_boost_tune = 0xf;
21004 } else if (freq < 5650) {
21005
21006 paa_boost_tune = 0x0;
21007 pada_boost_tune = 0x77;
21008 pgaa_boost_tune = 0xb;
21009 mixa_boost_tune = 0xf;
21010 } else {
21011
21012 paa_boost_tune = 0x0;
21013 pada_boost_tune = 0x77;
21014 if (freq != 5825)
21015 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
21016 else
21017 pgaa_boost_tune = 6;
21018
21019 mixa_boost_tune = 0xf;
21020 }
21021
21022 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21023 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21024 INTPAA_BOOST_TUNE, paa_boost_tune);
21025 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21026 PADA_BOOST_TUNE, pada_boost_tune);
21027 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21028 PGAA_BOOST_TUNE, pgaa_boost_tune);
21029 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21030 MIXA_BOOST_TUNE, mixa_boost_tune);
21031
21032 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21033 TXSPARE1, 0x30);
21034 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21035 PA_SPARE2, 0xee);
21036
21037 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21038 PADA_CASCBIAS, 0x3);
21039
21040 cascbias = 0x30;
21041
21042 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21043 (pi->sh->chip == BCM43225_CHIP_ID)) {
21044 if (pi->sh->chippkg == BCM43224_FAB_SMIC)
21045 cascbias = 0x35;
21046 }
21047
21048 pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
21049
21050 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21051 INTPAA_IAUX_STAT, pabias);
21052 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21053 INTPAA_IMAIN_STAT, pabias);
21054 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
21055 INTPAA_CASCBIAS, cascbias);
21056 }
21057 }
21058
21059 udelay(50);
21060
21061 wlc_phy_radio205x_vcocal_nphy(pi);
21062}
21063
21064void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
21065{
21066 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21067 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
21068 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
21069 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
21070 (1 << 2));
21071 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
21072 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21073 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
21074 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21075 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
21076 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21077 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
21078 }
21079
21080 udelay(300);
21081}
21082
21083static void
21084wlc_phy_chanspec_radio2057_setup(
21085 struct brcms_phy *pi,
21086 const struct chan_info_nphy_radio2057 *ci,
21087 const struct chan_info_nphy_radio2057_rev5 *
21088 ci2)
21089{
21090 int coreNum;
21091 u16 txmix2g_tune_boost_pu = 0;
21092 u16 pad2g_tune_pus = 0;
21093
21094 if (pi->pubpi.radiorev == 5) {
21095
21096 write_radio_reg(pi,
21097 RADIO_2057_VCOCAL_COUNTVAL0,
21098 ci2->RF_vcocal_countval0);
21099 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21100 ci2->RF_vcocal_countval1);
21101 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21102 ci2->RF_rfpll_refmaster_sparextalsize);
21103 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21104 ci2->RF_rfpll_loopfilter_r1);
21105 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21106 ci2->RF_rfpll_loopfilter_c2);
21107 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21108 ci2->RF_rfpll_loopfilter_c1);
21109 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
21110 ci2->RF_cp_kpd_idac);
21111 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
21112 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
21113 write_radio_reg(pi,
21114 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
21115 write_radio_reg(pi,
21116 RADIO_2057_LOGEN_MX2G_TUNE,
21117 ci2->RF_logen_mx2g_tune);
21118 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21119 ci2->RF_logen_indbuf2g_tune);
21120
21121 write_radio_reg(pi,
21122 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21123 ci2->RF_txmix2g_tune_boost_pu_core0);
21124 write_radio_reg(pi,
21125 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21126 ci2->RF_pad2g_tune_pus_core0);
21127 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21128 ci2->RF_lna2g_tune_core0);
21129
21130 write_radio_reg(pi,
21131 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21132 ci2->RF_txmix2g_tune_boost_pu_core1);
21133 write_radio_reg(pi,
21134 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21135 ci2->RF_pad2g_tune_pus_core1);
21136 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21137 ci2->RF_lna2g_tune_core1);
21138
21139 } else {
21140
21141 write_radio_reg(pi,
21142 RADIO_2057_VCOCAL_COUNTVAL0,
21143 ci->RF_vcocal_countval0);
21144 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21145 ci->RF_vcocal_countval1);
21146 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21147 ci->RF_rfpll_refmaster_sparextalsize);
21148 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21149 ci->RF_rfpll_loopfilter_r1);
21150 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21151 ci->RF_rfpll_loopfilter_c2);
21152 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21153 ci->RF_rfpll_loopfilter_c1);
21154 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21155 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21156 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21157 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21158 write_radio_reg(pi,
21159 RADIO_2057_LOGEN_MX2G_TUNE,
21160 ci->RF_logen_mx2g_tune);
21161 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21162 ci->RF_logen_mx5g_tune);
21163 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21164 ci->RF_logen_indbuf2g_tune);
21165 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21166 ci->RF_logen_indbuf5g_tune);
21167
21168 write_radio_reg(pi,
21169 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21170 ci->RF_txmix2g_tune_boost_pu_core0);
21171 write_radio_reg(pi,
21172 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21173 ci->RF_pad2g_tune_pus_core0);
21174 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21175 ci->RF_pga_boost_tune_core0);
21176 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21177 ci->RF_txmix5g_boost_tune_core0);
21178 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21179 ci->RF_pad5g_tune_misc_pus_core0);
21180 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21181 ci->RF_lna2g_tune_core0);
21182 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21183 ci->RF_lna5g_tune_core0);
21184
21185 write_radio_reg(pi,
21186 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21187 ci->RF_txmix2g_tune_boost_pu_core1);
21188 write_radio_reg(pi,
21189 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21190 ci->RF_pad2g_tune_pus_core1);
21191 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21192 ci->RF_pga_boost_tune_core1);
21193 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21194 ci->RF_txmix5g_boost_tune_core1);
21195 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21196 ci->RF_pad5g_tune_misc_pus_core1);
21197 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21198 ci->RF_lna2g_tune_core1);
21199 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21200 ci->RF_lna5g_tune_core1);
21201 }
21202
21203 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21204
21205 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21206 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21207 0x3f);
21208 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21209 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21210 0x8);
21211 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21212 0x8);
21213 } else {
21214 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21215 0x1f);
21216 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21217 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21218 0x8);
21219 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21220 0x8);
21221 }
21222 } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21223 (pi->pubpi.radiorev == 8)) {
21224
21225 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21226 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21227 0x1b);
21228 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21229 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21230 0xa);
21231 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21232 0xa);
21233 } else {
21234 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21235 0x1f);
21236 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21237 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21238 0x8);
21239 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21240 0x8);
21241 }
21242
21243 }
21244
21245 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21246 if (PHY_IPA(pi)) {
21247 if (pi->pubpi.radiorev == 3)
21248 txmix2g_tune_boost_pu = 0x6b;
21249
21250 if (pi->pubpi.radiorev == 5)
21251 pad2g_tune_pus = 0x73;
21252
21253 } else {
21254 if (pi->pubpi.radiorev != 5) {
21255 pad2g_tune_pus = 0x3;
21256
21257 txmix2g_tune_boost_pu = 0x61;
21258 }
21259 }
21260
21261 for (coreNum = 0; coreNum <= 1; coreNum++) {
21262
21263 if (txmix2g_tune_boost_pu != 0)
21264 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21265 TXMIX2G_TUNE_BOOST_PU,
21266 txmix2g_tune_boost_pu);
21267
21268 if (pad2g_tune_pus != 0)
21269 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21270 PAD2G_TUNE_PUS,
21271 pad2g_tune_pus);
21272 }
21273 }
21274
21275 udelay(50);
21276
21277 wlc_phy_radio205x_vcocal_nphy(pi);
21278}
21279
21280static void
21281wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21282 const struct nphy_sfo_cfg *ci)
21283{
21284 u16 val;
21285
21286 val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21287 if (CHSPEC_IS5G(chanspec) && !val) {
21288
21289 val = R_REG(&pi->regs->psm_phy_hdr_param);
21290 W_REG(&pi->regs->psm_phy_hdr_param,
21291 (val | MAC_PHY_FORCE_CLK));
21292
21293 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21294 (BBCFG_RESETCCA | BBCFG_RESETRX));
21295
21296 W_REG(&pi->regs->psm_phy_hdr_param, val);
21297
21298 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21299 } else if (!CHSPEC_IS5G(chanspec) && val) {
21300
21301 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21302
21303 val = R_REG(&pi->regs->psm_phy_hdr_param);
21304 W_REG(&pi->regs->psm_phy_hdr_param,
21305 (val | MAC_PHY_FORCE_CLK));
21306
21307 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21308 (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21309
21310 W_REG(&pi->regs->psm_phy_hdr_param, val);
21311 }
21312
21313 write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21314 write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21315 write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21316
21317 write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21318 write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21319 write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21320
21321 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21322 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21323
21324 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21325 } else {
21326 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21327 NPHY_ClassifierCtrl_ofdm_en);
21328
21329 if (CHSPEC_IS2G(chanspec))
21330 and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21331 }
21332
21333 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21334 wlc_phy_txpwr_fixpower_nphy(pi);
21335
21336 if (NREV_LT(pi->pubpi.phy_rev, 3))
21337 wlc_phy_adjust_lnagaintbl_nphy(pi);
21338
21339 wlc_phy_txlpfbw_nphy(pi);
21340
21341 if (NREV_GE(pi->pubpi.phy_rev, 3)
21342 && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21343 u8 spuravoid = 0;
21344
21345 val = CHSPEC_CHANNEL(chanspec);
21346 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21347 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21348 if ((val == 13) || (val == 14) || (val == 153))
21349 spuravoid = 1;
21350 } else if (((val >= 5) && (val <= 8)) || (val == 13)
21351 || (val == 14)) {
21352 spuravoid = 1;
21353 }
21354 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21355 if (val == 54)
21356 spuravoid = 1;
21357 } else {
21358 if (pi->nphy_aband_spurwar_en &&
21359 ((val == 38) || (val == 102)
21360 || (val == 118)))
21361 spuravoid = 1;
21362 }
21363
21364 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21365 spuravoid = 1;
21366
21367 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21368 si_pmu_spuravoid(pi->sh->sih, spuravoid);
21369 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21370
21371 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21372 (pi->sh->chip == BCM43225_CHIP_ID)) {
21373
21374 if (spuravoid == 1) {
21375
21376 W_REG(&pi->regs->tsf_clk_frac_l,
21377 0x5341);
21378 W_REG(&pi->regs->tsf_clk_frac_h,
21379 0x8);
21380 } else {
21381
21382 W_REG(&pi->regs->tsf_clk_frac_l,
21383 0x8889);
21384 W_REG(&pi->regs->tsf_clk_frac_h,
21385 0x8);
21386 }
21387 }
21388
21389 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21390
21391 mod_phy_reg(pi, 0x01, (0x1 << 15),
21392 ((spuravoid > 0) ? (0x1 << 15) : 0));
21393
21394 wlc_phy_resetcca_nphy(pi);
21395
21396 pi->phy_isspuravoid = (spuravoid > 0);
21397 }
21398
21399 if (NREV_LT(pi->pubpi.phy_rev, 7))
21400 write_phy_reg(pi, 0x17e, 0x3830);
21401
21402 wlc_phy_spurwar_nphy(pi);
21403}
21404
21405void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21406{
21407 int freq;
21408 const struct chan_info_nphy_radio2057 *t0 = NULL;
21409 const struct chan_info_nphy_radio205x *t1 = NULL;
21410 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21411 const struct chan_info_nphy_2055 *t3 = NULL;
21412
21413 if (!wlc_phy_chan2freq_nphy
21414 (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21415 return;
21416
21417 wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21418
21419 if (CHSPEC_BW(chanspec) != pi->bw)
21420 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21421
21422 if (CHSPEC_IS40(chanspec)) {
21423 if (CHSPEC_SB_UPPER(chanspec)) {
21424 or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21425 if (NREV_GE(pi->pubpi.phy_rev, 7))
21426 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21427 } else {
21428 and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21429 if (NREV_GE(pi->pubpi.phy_rev, 7))
21430 and_phy_reg(pi, 0x310,
21431 (~PRIM_SEL_UP20 & 0xffff));
21432 }
21433 }
21434
21435 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21436 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21437
21438 if ((pi->pubpi.radiorev <= 4)
21439 || (pi->pubpi.radiorev == 6)) {
21440 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21441 0x2,
21442 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21443 : 0));
21444 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21445 0x2,
21446 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21447 : 0));
21448 }
21449
21450 wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21451 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21452 (pi->pubpi.radiorev == 5) ?
21453 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21454 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21455
21456 } else {
21457
21458 mod_radio_reg(pi,
21459 RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21460 0x4,
21461 (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21462 wlc_phy_chanspec_radio2056_setup(pi, t1);
21463
21464 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21465 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21466 }
21467
21468 } else {
21469
21470 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21471 (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21472 : (0x05 << 4)));
21473
21474 wlc_phy_chanspec_radio2055_setup(pi, t3);
21475 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21476 (const struct nphy_sfo_cfg *)
21477 &(t3->PHY_BW1a));
21478 }
21479
21480}
21481
21482void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21483{
21484 struct brcms_phy *pi = (struct brcms_phy *) ppi;
21485 u16 mask = 0xfc00;
21486 u32 mc = 0;
21487
21488 if (NREV_GE(pi->pubpi.phy_rev, 7))
21489 return;
21490
21491 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21492 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21493
21494 if (lut_init == false)
21495 return;
21496
21497 if (pi->srom_fem2g.antswctrllut == 0) {
21498 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21499 1, 0x02, 16, &v0);
21500 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21501 1, 0x03, 16, &v1);
21502 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21503 1, 0x08, 16, &v2);
21504 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21505 1, 0x0C, 16, &v3);
21506 }
21507
21508 if (pi->srom_fem5g.antswctrllut == 0) {
21509 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21510 1, 0x12, 16, &v0);
21511 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21512 1, 0x13, 16, &v1);
21513 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21514 1, 0x18, 16, &v2);
21515 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21516 1, 0x1C, 16, &v3);
21517 }
21518 } else {
21519
21520 write_phy_reg(pi, 0xc8, 0x0);
21521 write_phy_reg(pi, 0xc9, 0x0);
21522
21523 ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
21524
21525 mc = R_REG(&pi->regs->maccontrol);
21526 mc &= ~MCTL_GPOUT_SEL_MASK;
21527 W_REG(&pi->regs->maccontrol, mc);
21528
21529 OR_REG(&pi->regs->psm_gpio_oe, mask);
21530
21531 AND_REG(&pi->regs->psm_gpio_out, ~mask);
21532
21533 if (lut_init) {
21534 write_phy_reg(pi, 0xf8, 0x02d8);
21535 write_phy_reg(pi, 0xf9, 0x0301);
21536 write_phy_reg(pi, 0xfa, 0x02d8);
21537 write_phy_reg(pi, 0xfb, 0x0301);
21538 }
21539 }
21540}
21541
21542u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21543{
21544 u16 curr_ctl, new_ctl;
21545 bool suspended = false;
21546
21547 if (D11REV_IS(pi->sh->corerev, 16)) {
21548 suspended =
21549 (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC) ?
21550 false : true;
21551 if (!suspended)
21552 wlapi_suspend_mac_and_wait(pi->sh->physhim);
21553 }
21554
21555 curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21556
21557 new_ctl = (curr_ctl & (~mask)) | (val & mask);
21558
21559 mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21560
21561 if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21562 wlapi_enable_mac(pi->sh->physhim);
21563
21564 return new_ctl;
21565}
21566
21567void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21568{
21569 u16 trigger_mask, status_mask;
21570 u16 orig_RfseqCoreActv;
21571
21572 switch (cmd) {
21573 case NPHY_RFSEQ_RX2TX:
21574 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21575 status_mask = NPHY_RfseqStatus_rx2tx;
21576 break;
21577 case NPHY_RFSEQ_TX2RX:
21578 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21579 status_mask = NPHY_RfseqStatus_tx2rx;
21580 break;
21581 case NPHY_RFSEQ_RESET2RX:
21582 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21583 status_mask = NPHY_RfseqStatus_reset2rx;
21584 break;
21585 case NPHY_RFSEQ_UPDATEGAINH:
21586 trigger_mask = NPHY_RfseqTrigger_updategainh;
21587 status_mask = NPHY_RfseqStatus_updategainh;
21588 break;
21589 case NPHY_RFSEQ_UPDATEGAINL:
21590 trigger_mask = NPHY_RfseqTrigger_updategainl;
21591 status_mask = NPHY_RfseqStatus_updategainl;
21592 break;
21593 case NPHY_RFSEQ_UPDATEGAINU:
21594 trigger_mask = NPHY_RfseqTrigger_updategainu;
21595 status_mask = NPHY_RfseqStatus_updategainu;
21596 break;
21597 default:
21598 return;
21599 }
21600
21601 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21602 or_phy_reg(pi, 0xa1,
21603 (NPHY_RfseqMode_CoreActv_override |
21604 NPHY_RfseqMode_Trigger_override));
21605 or_phy_reg(pi, 0xa3, trigger_mask);
21606 SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21607 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21608 WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21609}
21610
21611static void
21612wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21613 u8 core_mask, u8 off)
21614{
21615 u16 rfmxgain = 0, lpfgain = 0;
21616 u16 tgain = 0;
21617
21618 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21619
21620 switch (cmd) {
21621 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21622 wlc_phy_rfctrl_override_nphy_rev7(
21623 pi, (0x1 << 5),
21624 value, core_mask, off,
21625 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21626 wlc_phy_rfctrl_override_nphy_rev7(
21627 pi, (0x1 << 4), value,
21628 core_mask, off,
21629 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21630 wlc_phy_rfctrl_override_nphy_rev7(
21631 pi, (0x1 << 3), value,
21632 core_mask, off,
21633 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21634 break;
21635 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21636 wlc_phy_rfctrl_override_nphy_rev7(
21637 pi, (0x1 << 2),
21638 value, core_mask, off,
21639 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21640 wlc_phy_rfctrl_override_nphy_rev7(
21641 pi, (0x1 << 1), value,
21642 core_mask, off,
21643 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21644 wlc_phy_rfctrl_override_nphy_rev7(
21645 pi, (0x1 << 0), value,
21646 core_mask, off,
21647 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21648 wlc_phy_rfctrl_override_nphy_rev7(
21649 pi, (0x1 << 1), value,
21650 core_mask, off,
21651 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21652 wlc_phy_rfctrl_override_nphy_rev7(
21653 pi, (0x1 << 11), 0,
21654 core_mask, off,
21655 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21656 break;
21657 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21658 wlc_phy_rfctrl_override_nphy_rev7(
21659 pi, (0x1 << 2),
21660 value, core_mask, off,
21661 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21662 wlc_phy_rfctrl_override_nphy_rev7(
21663 pi, (0x1 << 1), value,
21664 core_mask, off,
21665 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21666 wlc_phy_rfctrl_override_nphy_rev7(
21667 pi, (0x1 << 0), value,
21668 core_mask, off,
21669 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21670 wlc_phy_rfctrl_override_nphy_rev7(
21671 pi, (0x1 << 2), value,
21672 core_mask, off,
21673 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21674 wlc_phy_rfctrl_override_nphy_rev7(
21675 pi, (0x1 << 11), 1,
21676 core_mask, off,
21677 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21678 break;
21679 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21680 rfmxgain = value & 0x000ff;
21681 lpfgain = value & 0x0ff00;
21682 lpfgain = lpfgain >> 8;
21683
21684 wlc_phy_rfctrl_override_nphy_rev7(
21685 pi, (0x1 << 11),
21686 rfmxgain, core_mask,
21687 off,
21688 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21689 wlc_phy_rfctrl_override_nphy_rev7(
21690 pi, (0x3 << 13),
21691 lpfgain, core_mask,
21692 off,
21693 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21694 break;
21695 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21696 tgain = value & 0x7fff;
21697 lpfgain = value & 0x8000;
21698 lpfgain = lpfgain >> 14;
21699
21700 wlc_phy_rfctrl_override_nphy_rev7(
21701 pi, (0x1 << 12),
21702 tgain, core_mask, off,
21703 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21704 wlc_phy_rfctrl_override_nphy_rev7(
21705 pi, (0x1 << 13),
21706 lpfgain, core_mask,
21707 off,
21708 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21709 break;
21710 }
21711 }
21712}
21713
21714static void
21715wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21716 u8 coresel, u8 rail, u8 rssi_type)
21717{
21718 u16 valuetostuff;
21719
21720 offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21721 NPHY_RSSICAL_MAXREAD : offset;
21722 offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21723 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21724
21725 valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21726
21727 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21728 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21729 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21730 write_phy_reg(pi, 0x1a6, valuetostuff);
21731
21732 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21733 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21734 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21735 write_phy_reg(pi, 0x1ac, valuetostuff);
21736
21737 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21738 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21739 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21740 write_phy_reg(pi, 0x1b2, valuetostuff);
21741
21742 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21743 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21744 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21745 write_phy_reg(pi, 0x1b8, valuetostuff);
21746
21747 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21748 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21749 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21750 write_phy_reg(pi, 0x1a4, valuetostuff);
21751
21752 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21753 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21754 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21755 write_phy_reg(pi, 0x1aa, valuetostuff);
21756
21757 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21758 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21759 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21760 write_phy_reg(pi, 0x1b0, valuetostuff);
21761
21762 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21763 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21764 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21765 write_phy_reg(pi, 0x1b6, valuetostuff);
21766
21767 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21768 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21769 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21770 write_phy_reg(pi, 0x1a5, valuetostuff);
21771 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21772 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21773 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21774 write_phy_reg(pi, 0x1ab, valuetostuff);
21775
21776 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21777 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21778 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21779 write_phy_reg(pi, 0x1b1, valuetostuff);
21780
21781 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21782 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21783 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21784 write_phy_reg(pi, 0x1b7, valuetostuff);
21785
21786 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21787 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21788 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21789 write_phy_reg(pi, 0x1a7, valuetostuff);
21790 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21791 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21792 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21793 write_phy_reg(pi, 0x1ad, valuetostuff);
21794 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21795 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21796 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21797 write_phy_reg(pi, 0x1b3, valuetostuff);
21798 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21799 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21800 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21801 write_phy_reg(pi, 0x1b9, valuetostuff);
21802
21803 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21804 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21805 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21806 write_phy_reg(pi, 0x1a8, valuetostuff);
21807
21808 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21809 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21810 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21811 write_phy_reg(pi, 0x1ae, valuetostuff);
21812
21813 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21814 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21815 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21816 write_phy_reg(pi, 0x1b4, valuetostuff);
21817
21818 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21819 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21820 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21821 write_phy_reg(pi, 0x1ba, valuetostuff);
21822
21823 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21824 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21825 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21826 write_phy_reg(pi, 0x1a9, valuetostuff);
21827 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21828 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21829 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21830 write_phy_reg(pi, 0x1b5, valuetostuff);
21831
21832 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21833 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21834 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21835 write_phy_reg(pi, 0x1af, valuetostuff);
21836
21837 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21838 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21839 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21840 write_phy_reg(pi, 0x1bb, valuetostuff);
21841}
21842
21843static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21844{
21845 if (PHY_IPA(pi)) {
21846 if (NREV_GE(pi->pubpi.phy_rev, 7))
21847 write_radio_reg(pi,
21848 ((core == PHY_CORE_0) ?
21849 RADIO_2057_TX0_TX_SSI_MUX :
21850 RADIO_2057_TX1_TX_SSI_MUX),
21851 (CHSPEC_IS5G(pi->radio_chanspec) ?
21852 0xc : 0xe));
21853 else
21854 write_radio_reg(pi,
21855 RADIO_2056_TX_TX_SSI_MUX |
21856 ((core == PHY_CORE_0) ?
21857 RADIO_2056_TX0 : RADIO_2056_TX1),
21858 (CHSPEC_IS5G(pi->radio_chanspec) ?
21859 0xc : 0xe));
21860 } else {
21861 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21862 write_radio_reg(pi,
21863 ((core == PHY_CORE_0) ?
21864 RADIO_2057_TX0_TX_SSI_MUX :
21865 RADIO_2057_TX1_TX_SSI_MUX),
21866 0x11);
21867
21868 if (pi->pubpi.radioid == BCM2057_ID)
21869 write_radio_reg(pi,
21870 RADIO_2057_IQTEST_SEL_PU, 0x1);
21871
21872 } else {
21873 write_radio_reg(pi,
21874 RADIO_2056_TX_TX_SSI_MUX |
21875 ((core == PHY_CORE_0) ?
21876 RADIO_2056_TX0 : RADIO_2056_TX1),
21877 0x11);
21878 }
21879 }
21880}
21881
21882void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21883{
21884 u16 mask, val;
21885 u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21886 startseq;
21887 u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21888 rfctrlovr_trigger_val;
21889 u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21890 u16 rfctrlcmd_val, rfctrlovr_val;
21891 u8 core;
21892
21893 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21894 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21895 mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21896 mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21897
21898 mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21899 mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21900
21901 mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21902 mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21903
21904 mask = (0x1 << 2) |
21905 (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21906 mod_phy_reg(pi, 0xf9, mask, 0);
21907 mod_phy_reg(pi, 0xfb, mask, 0);
21908
21909 } else {
21910 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21911 if (core_code == RADIO_MIMO_CORESEL_CORE1
21912 && core == PHY_CORE_1)
21913 continue;
21914 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21915 && core == PHY_CORE_0)
21916 continue;
21917
21918 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21919 0x8f : 0xa5, (0x1 << 9), 1 << 9);
21920
21921 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21922 rssi_type == NPHY_RSSI_SEL_W2 ||
21923 rssi_type == NPHY_RSSI_SEL_NB) {
21924 mod_phy_reg(pi,
21925 (core ==
21926 PHY_CORE_0) ? 0xa6 : 0xa7,
21927 (0x3 << 8), 0);
21928
21929 mask = (0x1 << 2) |
21930 (0x1 << 3) |
21931 (0x1 << 4) | (0x1 << 5);
21932 mod_phy_reg(pi,
21933 (core ==
21934 PHY_CORE_0) ? 0xf9 : 0xfb,
21935 mask, 0);
21936
21937 if (rssi_type == NPHY_RSSI_SEL_W1) {
21938 if (CHSPEC_IS5G(
21939 pi->radio_chanspec)) {
21940 mask = (0x1 << 2);
21941 val = 1 << 2;
21942 } else {
21943 mask = (0x1 << 3);
21944 val = 1 << 3;
21945 }
21946 } else if (rssi_type ==
21947 NPHY_RSSI_SEL_W2) {
21948 mask = (0x1 << 4);
21949 val = 1 << 4;
21950 } else {
21951 mask = (0x1 << 5);
21952 val = 1 << 5;
21953 }
21954 mod_phy_reg(pi,
21955 (core ==
21956 PHY_CORE_0) ? 0xf9 : 0xfb,
21957 mask, val);
21958
21959 mask = (0x1 << 5);
21960 val = 1 << 5;
21961 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21962 0xe5 : 0xe6, mask, val);
21963 } else {
21964 if (rssi_type == NPHY_RSSI_SEL_TBD) {
21965 mask = (0x3 << 8);
21966 val = 1 << 8;
21967 mod_phy_reg(pi,
21968 (core ==
21969 PHY_CORE_0) ? 0xa6
21970 : 0xa7, mask, val);
21971 mask = (0x3 << 10);
21972 val = 1 << 10;
21973 mod_phy_reg(pi,
21974 (core ==
21975 PHY_CORE_0) ? 0xa6
21976 : 0xa7, mask, val);
21977 } else if (rssi_type ==
21978 NPHY_RSSI_SEL_IQ) {
21979 mask = (0x3 << 8);
21980 val = 2 << 8;
21981 mod_phy_reg(pi,
21982 (core ==
21983 PHY_CORE_0) ? 0xa6
21984 : 0xa7, mask, val);
21985 mask = (0x3 << 10);
21986 val = 2 << 10;
21987 mod_phy_reg(pi,
21988 (core ==
21989 PHY_CORE_0) ? 0xa6
21990 : 0xa7, mask, val);
21991 } else {
21992 mask = (0x3 << 8);
21993 val = 3 << 8;
21994 mod_phy_reg(pi,
21995 (core ==
21996 PHY_CORE_0) ? 0xa6
21997 : 0xa7, mask, val);
21998 mask = (0x3 << 10);
21999 val = 3 << 10;
22000 mod_phy_reg(pi,
22001 (core ==
22002 PHY_CORE_0) ? 0xa6
22003 : 0xa7, mask, val);
22004 brcms_phy_wr_tx_mux(pi, core);
22005 afectrlovr_rssi_val = 1 << 9;
22006 mod_phy_reg(pi,
22007 (core ==
22008 PHY_CORE_0) ? 0x8f
22009 : 0xa5, (0x1 << 9),
22010 afectrlovr_rssi_val);
22011 }
22012 }
22013 }
22014 }
22015 } else {
22016
22017 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22018 (rssi_type == NPHY_RSSI_SEL_W2) ||
22019 (rssi_type == NPHY_RSSI_SEL_NB))
22020 val = 0x0;
22021 else if (rssi_type == NPHY_RSSI_SEL_TBD)
22022 val = 0x1;
22023 else if (rssi_type == NPHY_RSSI_SEL_IQ)
22024 val = 0x2;
22025 else
22026 val = 0x3;
22027
22028 mask = ((0x3 << 12) | (0x3 << 14));
22029 val = (val << 12) | (val << 14);
22030 mod_phy_reg(pi, 0xa6, mask, val);
22031 mod_phy_reg(pi, 0xa7, mask, val);
22032
22033 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22034 (rssi_type == NPHY_RSSI_SEL_W2) ||
22035 (rssi_type == NPHY_RSSI_SEL_NB)) {
22036 if (rssi_type == NPHY_RSSI_SEL_W1)
22037 val = 0x1;
22038 if (rssi_type == NPHY_RSSI_SEL_W2)
22039 val = 0x2;
22040 if (rssi_type == NPHY_RSSI_SEL_NB)
22041 val = 0x3;
22042
22043 mask = (0x3 << 4);
22044 val = (val << 4);
22045 mod_phy_reg(pi, 0x7a, mask, val);
22046 mod_phy_reg(pi, 0x7d, mask, val);
22047 }
22048
22049 if (core_code == RADIO_MIMO_CORESEL_OFF) {
22050 afectrlovr_rssi_val = 0;
22051 rfctrlcmd_rxen_val = 0;
22052 rfctrlcmd_coresel_val = 0;
22053 rfctrlovr_rssi_val = 0;
22054 rfctrlovr_rxen_val = 0;
22055 rfctrlovr_coresel_val = 0;
22056 rfctrlovr_trigger_val = 0;
22057 startseq = 0;
22058 } else {
22059 afectrlovr_rssi_val = 1;
22060 rfctrlcmd_rxen_val = 1;
22061 rfctrlcmd_coresel_val = core_code;
22062 rfctrlovr_rssi_val = 1;
22063 rfctrlovr_rxen_val = 1;
22064 rfctrlovr_coresel_val = 1;
22065 rfctrlovr_trigger_val = 1;
22066 startseq = 1;
22067 }
22068
22069 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
22070 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
22071 12) | (afectrlovr_rssi_val << 13);
22072 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
22073 afectrlovr_rssi_val);
22074
22075 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22076 (rssi_type == NPHY_RSSI_SEL_W2) ||
22077 (rssi_type == NPHY_RSSI_SEL_NB)) {
22078 rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
22079 rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
22080 (rfctrlcmd_coresel_val << 3);
22081
22082 rfctrlovr_mask = ((0x1 << 5) |
22083 (0x1 << 12) |
22084 (0x1 << 1) | (0x1 << 0));
22085 rfctrlovr_val = (rfctrlovr_rssi_val <<
22086 5) |
22087 (rfctrlovr_rxen_val << 12) |
22088 (rfctrlovr_coresel_val << 1) |
22089 (rfctrlovr_trigger_val << 0);
22090
22091 mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
22092 mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
22093
22094 mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
22095 udelay(20);
22096
22097 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22098 }
22099 }
22100}
22101
22102int
22103wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
22104 u8 nsamps)
22105{
22106 s16 rssi0, rssi1;
22107 u16 afectrlCore1_save = 0;
22108 u16 afectrlCore2_save = 0;
22109 u16 afectrlOverride1_save = 0;
22110 u16 afectrlOverride2_save = 0;
22111 u16 rfctrlOverrideAux0_save = 0;
22112 u16 rfctrlOverrideAux1_save = 0;
22113 u16 rfctrlMiscReg1_save = 0;
22114 u16 rfctrlMiscReg2_save = 0;
22115 u16 rfctrlcmd_save = 0;
22116 u16 rfctrloverride_save = 0;
22117 u16 rfctrlrssiothers1_save = 0;
22118 u16 rfctrlrssiothers2_save = 0;
22119 s8 tmp_buf[4];
22120 u8 ctr = 0, samp = 0;
22121 s32 rssi_out_val;
22122 u16 gpiosel_orig;
22123
22124 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22125 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22126 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22127 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22128 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22129 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
22130 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22131 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22132 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22133 } else {
22134 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
22135 rfctrlcmd_save = read_phy_reg(pi, 0x78);
22136 rfctrloverride_save = read_phy_reg(pi, 0xec);
22137 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22138 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22139 }
22140
22141 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22142
22143 gpiosel_orig = read_phy_reg(pi, 0xca);
22144 if (NREV_LT(pi->pubpi.phy_rev, 2))
22145 write_phy_reg(pi, 0xca, 5);
22146
22147 for (ctr = 0; ctr < 4; ctr++)
22148 rssi_buf[ctr] = 0;
22149
22150 for (samp = 0; samp < nsamps; samp++) {
22151 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22152 rssi0 = read_phy_reg(pi, 0x1c9);
22153 rssi1 = read_phy_reg(pi, 0x1ca);
22154 } else {
22155 rssi0 = read_phy_reg(pi, 0x219);
22156 rssi1 = read_phy_reg(pi, 0x21a);
22157 }
22158
22159 ctr = 0;
22160 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22161 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22162 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22163 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22164
22165 for (ctr = 0; ctr < 4; ctr++)
22166 rssi_buf[ctr] += tmp_buf[ctr];
22167
22168 }
22169
22170 rssi_out_val = rssi_buf[3] & 0xff;
22171 rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22172 rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22173 rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22174
22175 if (NREV_LT(pi->pubpi.phy_rev, 2))
22176 write_phy_reg(pi, 0xca, gpiosel_orig);
22177
22178 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22179 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22180 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22181 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22182 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22183 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22184 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22185 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22186 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22187 } else {
22188 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22189 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22190 write_phy_reg(pi, 0xec, rfctrloverride_save);
22191 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22192 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22193 }
22194
22195 return rssi_out_val;
22196}
22197
22198s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22199{
22200 u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22201 u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22202 u16 pwrdet_rxtx_core1_save;
22203 u16 pwrdet_rxtx_core2_save;
22204 u16 afectrlCore1_save;
22205 u16 afectrlCore2_save;
22206 u16 afectrlOverride_save;
22207 u16 afectrlOverride2_save;
22208 u16 pd_pll_ts_save;
22209 u16 gpioSel_save;
22210 s32 radio_temp[4];
22211 s32 radio_temp2[4];
22212 u16 syn_tempprocsense_save;
22213 s16 offset = 0;
22214
22215 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22216 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22217 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22218 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22219 s32 auxADC_Vl;
22220 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22221 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22222 u16 RSSIMultCoef0QPowerDet_save;
22223 u16 tempsense_Rcal;
22224
22225 syn_tempprocsense_save =
22226 read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22227
22228 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22229 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22230 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22231 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22232 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22233 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22234 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22235 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22236 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22237
22238 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22239 &auxADC_Vmid_save);
22240 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22241 &auxADC_Av_save);
22242 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22243 &auxADC_rssi_ctrlL_save);
22244 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22245 &auxADC_rssi_ctrlH_save);
22246
22247 write_phy_reg(pi, 0x1ae, 0x0);
22248
22249 auxADC_rssi_ctrlL = 0x0;
22250 auxADC_rssi_ctrlH = 0x20;
22251 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22252 &auxADC_rssi_ctrlL);
22253 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22254 &auxADC_rssi_ctrlH);
22255
22256 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22257
22258 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22259 tempsense_Rcal | 0x01);
22260
22261 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22262 1, 0, 0,
22263 NPHY_REV7_RFCTRLOVERRIDE_ID2);
22264 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22265 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22266 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22267 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22268
22269 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22270 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22271 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22272 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22273 udelay(5);
22274 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22275 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22276 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22277 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22278 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22279 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22280 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22281 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22282 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22283 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22284
22285 auxADC_Vmid = 0xA3;
22286 auxADC_Av = 0x0;
22287 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22288 &auxADC_Vmid);
22289 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22290 &auxADC_Av);
22291
22292 udelay(3);
22293
22294 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22295 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22296 tempsense_Rcal | 0x03);
22297
22298 udelay(5);
22299 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22300
22301 auxADC_Av = 0x7;
22302 if (radio_temp[1] + radio_temp2[1] < -30) {
22303 auxADC_Vmid = 0x45;
22304 auxADC_Vl = 263;
22305 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22306 auxADC_Vmid = 0x200;
22307 auxADC_Vl = 467;
22308 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22309 auxADC_Vmid = 0x266;
22310 auxADC_Vl = 634;
22311 } else {
22312 auxADC_Vmid = 0x2D5;
22313 auxADC_Vl = 816;
22314 }
22315
22316 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22317 &auxADC_Vmid);
22318 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22319 &auxADC_Av);
22320
22321 udelay(3);
22322
22323 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22324 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22325 tempsense_Rcal | 0x01);
22326
22327 udelay(5);
22328 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22329
22330 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22331 syn_tempprocsense_save);
22332
22333 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22334 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22335 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22336 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22337 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22338 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22339 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22340 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22341 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22342
22343 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22344 &auxADC_Vmid_save);
22345 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22346 &auxADC_Av_save);
22347 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22348 &auxADC_rssi_ctrlL_save);
22349 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22350 &auxADC_rssi_ctrlH_save);
22351
22352 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22353 + 82 * (auxADC_Vl) - 28861 +
22354 128) / 256;
22355
22356 offset = (s16) pi->phy_tempsense_offset;
22357
22358 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22359 syn_tempprocsense_save =
22360 read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22361
22362 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22363 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22364 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22365 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22366 gpioSel_save = read_phy_reg(pi, 0xca);
22367
22368 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22369
22370 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22371 if (NREV_LT(pi->pubpi.phy_rev, 7))
22372 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22373
22374 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22375 if (NREV_GE(pi->pubpi.phy_rev, 7))
22376 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22377 else
22378 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22379
22380 radio_temp[0] =
22381 (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22382
22383 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22384 syn_tempprocsense_save);
22385
22386 write_phy_reg(pi, 0xca, gpioSel_save);
22387 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22388 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22389 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22390 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22391
22392 offset = (s16) pi->phy_tempsense_offset;
22393 } else {
22394
22395 pwrdet_rxtx_core1_save =
22396 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22397 pwrdet_rxtx_core2_save =
22398 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22399 core1_txrf_iqcal1_save =
22400 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22401 core1_txrf_iqcal2_save =
22402 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22403 core2_txrf_iqcal1_save =
22404 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22405 core2_txrf_iqcal2_save =
22406 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22407 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22408
22409 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22410 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22411 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22412 gpioSel_save = read_phy_reg(pi, 0xca);
22413
22414 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22415 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22416 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22417 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22418 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22419 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22420 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22421
22422 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22423 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22424
22425 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22426 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22427
22428 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22429 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22430
22431 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22432 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22433 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22434 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22435
22436 radio_temp[0] =
22437 (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22438 radio_temp[3]);
22439
22440 radio_temp[0] =
22441 (radio_temp[0] +
22442 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22443
22444 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22445
22446 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22447 pwrdet_rxtx_core1_save);
22448 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22449 pwrdet_rxtx_core2_save);
22450 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22451 core1_txrf_iqcal1_save);
22452 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22453 core2_txrf_iqcal1_save);
22454 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22455 core1_txrf_iqcal2_save);
22456 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22457 core2_txrf_iqcal2_save);
22458 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22459
22460 write_phy_reg(pi, 0xca, gpioSel_save);
22461 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22462 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22463 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22464 }
22465
22466 return (s16) radio_temp[0] + offset;
22467}
22468
22469static void
22470wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22471{
22472 u8 core;
22473
22474 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22475 if (rssi_type == NPHY_RSSI_SEL_NB) {
22476 if (core == PHY_CORE_0) {
22477 mod_radio_reg(pi,
22478 RADIO_2055_CORE1_B0_NBRSSI_VCM,
22479 RADIO_2055_NBRSSI_VCM_I_MASK,
22480 vcm_buf[2 *
22481 core] <<
22482 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22483 mod_radio_reg(pi,
22484 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22485 RADIO_2055_NBRSSI_VCM_Q_MASK,
22486 vcm_buf[2 * core +
22487 1] <<
22488 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22489 } else {
22490 mod_radio_reg(pi,
22491 RADIO_2055_CORE2_B0_NBRSSI_VCM,
22492 RADIO_2055_NBRSSI_VCM_I_MASK,
22493 vcm_buf[2 *
22494 core] <<
22495 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22496 mod_radio_reg(pi,
22497 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22498 RADIO_2055_NBRSSI_VCM_Q_MASK,
22499 vcm_buf[2 * core +
22500 1] <<
22501 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22502 }
22503 } else {
22504 if (core == PHY_CORE_0)
22505 mod_radio_reg(pi,
22506 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22507 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22508 vcm_buf[2 *
22509 core] <<
22510 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22511 else
22512 mod_radio_reg(pi,
22513 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22514 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22515 vcm_buf[2 *
22516 core] <<
22517 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22518 }
22519 }
22520}
22521
22522static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22523{
22524 u16 classif_state;
22525 u16 clip_state[2];
22526 u16 clip_off[] = { 0xffff, 0xffff };
22527 s32 target_code;
22528 u8 vcm, min_vcm;
22529 u8 vcm_final = 0;
22530 u8 result_idx;
22531 s32 poll_results[8][4] = {
22532 {0, 0, 0, 0},
22533 {0, 0, 0, 0},
22534 {0, 0, 0, 0},
22535 {0, 0, 0, 0},
22536 {0, 0, 0, 0},
22537 {0, 0, 0, 0},
22538 {0, 0, 0, 0},
22539 {0, 0, 0, 0}
22540 };
22541 s32 poll_result_core[4] = { 0, 0, 0, 0 };
22542 s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22543 s32 fine_digital_offset[4];
22544 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22545 s32 min_poll;
22546 u8 vcm_level_max;
22547 u8 core;
22548 u8 wb_cnt;
22549 u8 rssi_type;
22550 u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22551 u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22552 u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22553 u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22554 u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22555 u16 NPHY_RfctrlCmd_save;
22556 u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22557 u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22558 u8 rxcore_state;
22559 u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22560 u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22561 u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22562 u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22563
22564 NPHY_REV7_RfctrlOverride3_save =
22565 NPHY_REV7_RfctrlOverride4_save =
22566 NPHY_REV7_RfctrlOverride5_save =
22567 NPHY_REV7_RfctrlOverride6_save =
22568 NPHY_REV7_RfctrlMiscReg3_save =
22569 NPHY_REV7_RfctrlMiscReg4_save =
22570 NPHY_REV7_RfctrlMiscReg5_save =
22571 NPHY_REV7_RfctrlMiscReg6_save = 0;
22572
22573 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22574 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22575 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22576 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22577
22578 NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22579 NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22580 NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22581 NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22582 NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22583 NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22584 NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22585 NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22586 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22587 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22588 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22589 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22590 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22591 }
22592 NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22593 NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22594 NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22595 NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22596 NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22597 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22598 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22599 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22600 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22601 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22602 }
22603 NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22604 NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22605
22606 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22607 RADIO_MIMO_CORESEL_ALLRXTX);
22608 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22609 RADIO_MIMO_CORESEL_ALLRXTX);
22610
22611 if (NREV_GE(pi->pubpi.phy_rev, 7))
22612 wlc_phy_rfctrl_override_1tomany_nphy(
22613 pi,
22614 NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22615 0, 0, 0);
22616 else
22617 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22618
22619 if (NREV_GE(pi->pubpi.phy_rev, 7))
22620 wlc_phy_rfctrl_override_1tomany_nphy(
22621 pi,
22622 NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22623 1, 0, 0);
22624 else
22625 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22626
22627 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22628 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22629 1, 0, 0,
22630 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22631 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22632 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22633 } else {
22634 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22635 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22636 }
22637
22638 if (CHSPEC_IS5G(pi->radio_chanspec)) {
22639 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22640 wlc_phy_rfctrl_override_nphy_rev7(
22641 pi, (0x1 << 5),
22642 0, 0, 0,
22643 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22644 wlc_phy_rfctrl_override_nphy_rev7(
22645 pi, (0x1 << 4), 1, 0,
22646 0,
22647 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22648 } else {
22649 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22650 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22651 }
22652
22653 } else {
22654 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22655 wlc_phy_rfctrl_override_nphy_rev7(
22656 pi, (0x1 << 4),
22657 0, 0, 0,
22658 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22659 wlc_phy_rfctrl_override_nphy_rev7(
22660 pi, (0x1 << 5), 1, 0,
22661 0,
22662 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22663 } else {
22664 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22665 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22666 }
22667 }
22668
22669 rxcore_state = wlc_phy_rxcore_getstate_nphy(
22670 (struct brcms_phy_pub *) pi);
22671
22672 vcm_level_max = 8;
22673
22674 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22675
22676 if ((rxcore_state & (1 << core)) == 0)
22677 continue;
22678
22679 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22680 core ==
22681 PHY_CORE_0 ?
22682 RADIO_MIMO_CORESEL_CORE1 :
22683 RADIO_MIMO_CORESEL_CORE2,
22684 NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22685 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22686 core ==
22687 PHY_CORE_0 ?
22688 RADIO_MIMO_CORESEL_CORE1 :
22689 RADIO_MIMO_CORESEL_CORE2,
22690 NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22691
22692 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22693 if (NREV_GE(pi->pubpi.phy_rev, 7))
22694 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22695 RADIO_2057_NB_MASTER_CORE0 :
22696 RADIO_2057_NB_MASTER_CORE1,
22697 RADIO_2057_VCM_MASK, vcm);
22698 else
22699 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22700 ((core ==
22701 PHY_CORE_0) ? RADIO_2056_RX0 :
22702 RADIO_2056_RX1),
22703 RADIO_2056_VCM_MASK,
22704 vcm << RADIO_2056_RSSI_VCM_SHIFT);
22705
22706 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22707 &poll_results[vcm][0],
22708 NPHY_RSSICAL_NPOLL);
22709 }
22710
22711 for (result_idx = 0; result_idx < 4; result_idx++) {
22712 if ((core == result_idx / 2) &&
22713 (result_idx % 2 == 0)) {
22714
22715 min_d = NPHY_RSSICAL_MAXD;
22716 min_vcm = 0;
22717 min_poll =
22718 NPHY_RSSICAL_MAXREAD *
22719 NPHY_RSSICAL_NPOLL + 1;
22720 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22721 curr_d =
22722 poll_results[vcm][result_idx] *
22723 poll_results[vcm][result_idx] +
22724 poll_results[vcm][result_idx +
22725 1] *
22726 poll_results[vcm][result_idx +
22727 1];
22728 if (curr_d < min_d) {
22729 min_d = curr_d;
22730 min_vcm = vcm;
22731 }
22732 if (poll_results[vcm][result_idx] <
22733 min_poll)
22734 min_poll =
22735 poll_results[vcm]
22736 [result_idx];
22737 }
22738 vcm_final = min_vcm;
22739 poll_results_min[result_idx] = min_poll;
22740 }
22741 }
22742
22743 if (NREV_GE(pi->pubpi.phy_rev, 7))
22744 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22745 RADIO_2057_NB_MASTER_CORE0 :
22746 RADIO_2057_NB_MASTER_CORE1,
22747 RADIO_2057_VCM_MASK, vcm_final);
22748 else
22749 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22750 ((core ==
22751 PHY_CORE_0) ? RADIO_2056_RX0 :
22752 RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22753 vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22754
22755 for (result_idx = 0; result_idx < 4; result_idx++) {
22756 if (core == result_idx / 2) {
22757 fine_digital_offset[result_idx] =
22758 (NPHY_RSSICAL_NB_TARGET *
22759 NPHY_RSSICAL_NPOLL) -
22760 poll_results[vcm_final][result_idx];
22761 if (fine_digital_offset[result_idx] < 0) {
22762 fine_digital_offset[result_idx] =
22763 abs(fine_digital_offset
22764 [result_idx]);
22765 fine_digital_offset[result_idx] +=
22766 (NPHY_RSSICAL_NPOLL / 2);
22767 fine_digital_offset[result_idx] /=
22768 NPHY_RSSICAL_NPOLL;
22769 fine_digital_offset[result_idx] =
22770 -fine_digital_offset[
22771 result_idx];
22772 } else {
22773 fine_digital_offset[result_idx] +=
22774 (NPHY_RSSICAL_NPOLL / 2);
22775 fine_digital_offset[result_idx] /=
22776 NPHY_RSSICAL_NPOLL;
22777 }
22778
22779 if (poll_results_min[result_idx] ==
22780 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22781 fine_digital_offset[result_idx] =
22782 (NPHY_RSSICAL_NB_TARGET -
22783 NPHY_RSSICAL_MAXREAD - 1);
22784
22785 wlc_phy_scale_offset_rssi_nphy(
22786 pi, 0x0,
22787 (s8)
22788 fine_digital_offset
22789 [result_idx],
22790 (result_idx / 2 == 0) ?
22791 RADIO_MIMO_CORESEL_CORE1 :
22792 RADIO_MIMO_CORESEL_CORE2,
22793 (result_idx % 2 == 0) ?
22794 NPHY_RAIL_I : NPHY_RAIL_Q,
22795 NPHY_RSSI_SEL_NB);
22796 }
22797 }
22798
22799 }
22800
22801 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22802
22803 if ((rxcore_state & (1 << core)) == 0)
22804 continue;
22805
22806 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22807 if (wb_cnt == 0) {
22808 rssi_type = NPHY_RSSI_SEL_W1;
22809 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22810 } else {
22811 rssi_type = NPHY_RSSI_SEL_W2;
22812 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22813 }
22814
22815 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22816 core ==
22817 PHY_CORE_0 ?
22818 RADIO_MIMO_CORESEL_CORE1
22819 :
22820 RADIO_MIMO_CORESEL_CORE2,
22821 NPHY_RAIL_I, rssi_type);
22822 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22823 core ==
22824 PHY_CORE_0 ?
22825 RADIO_MIMO_CORESEL_CORE1
22826 :
22827 RADIO_MIMO_CORESEL_CORE2,
22828 NPHY_RAIL_Q, rssi_type);
22829
22830 wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22831 NPHY_RSSICAL_NPOLL);
22832
22833 for (result_idx = 0; result_idx < 4; result_idx++) {
22834 if (core == result_idx / 2) {
22835 fine_digital_offset[result_idx] =
22836 (target_code *
22837 NPHY_RSSICAL_NPOLL) -
22838 poll_result_core[result_idx];
22839 if (fine_digital_offset[result_idx] <
22840 0) {
22841 fine_digital_offset[result_idx]
22842 = abs(
22843 fine_digital_offset
22844 [result_idx]);
22845 fine_digital_offset[result_idx]
22846 += (NPHY_RSSICAL_NPOLL
22847 / 2);
22848 fine_digital_offset[result_idx]
22849 /= NPHY_RSSICAL_NPOLL;
22850 fine_digital_offset[result_idx]
22851 = -fine_digital_offset
22852 [result_idx];
22853 } else {
22854 fine_digital_offset[result_idx]
22855 += (NPHY_RSSICAL_NPOLL
22856 / 2);
22857 fine_digital_offset[result_idx]
22858 /= NPHY_RSSICAL_NPOLL;
22859 }
22860
22861 wlc_phy_scale_offset_rssi_nphy(
22862 pi, 0x0,
22863 (s8)
22864 fine_digital_offset
22865 [core *
22866 2],
22867 (core == PHY_CORE_0) ?
22868 RADIO_MIMO_CORESEL_CORE1 :
22869 RADIO_MIMO_CORESEL_CORE2,
22870 (result_idx % 2 == 0) ?
22871 NPHY_RAIL_I :
22872 NPHY_RAIL_Q,
22873 rssi_type);
22874 }
22875 }
22876
22877 }
22878 }
22879
22880 write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22881 write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22882
22883 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22884
22885 mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22886 mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22887 mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22888
22889 mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22890 mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22891 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22892
22893 write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22894 write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22895 write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22896 write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22897 write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22898 write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22899 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22900 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22901 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22902 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22903 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22904 }
22905 write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22906 write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22907 write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22908 write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22909 write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22910 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22911 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22912 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22913 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22914 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22915 }
22916 write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22917 write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22918
22919 if (CHSPEC_IS2G(pi->radio_chanspec)) {
22920 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22921 pi->rssical_cache.rssical_radio_regs_2G[0] =
22922 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22923 pi->rssical_cache.rssical_radio_regs_2G[1] =
22924 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22925 } else {
22926 pi->rssical_cache.rssical_radio_regs_2G[0] =
22927 read_radio_reg(pi,
22928 RADIO_2056_RX_RSSI_MISC |
22929 RADIO_2056_RX0);
22930 pi->rssical_cache.rssical_radio_regs_2G[1] =
22931 read_radio_reg(pi,
22932 RADIO_2056_RX_RSSI_MISC |
22933 RADIO_2056_RX1);
22934 }
22935
22936 pi->rssical_cache.rssical_phyregs_2G[0] =
22937 read_phy_reg(pi, 0x1a6);
22938 pi->rssical_cache.rssical_phyregs_2G[1] =
22939 read_phy_reg(pi, 0x1ac);
22940 pi->rssical_cache.rssical_phyregs_2G[2] =
22941 read_phy_reg(pi, 0x1b2);
22942 pi->rssical_cache.rssical_phyregs_2G[3] =
22943 read_phy_reg(pi, 0x1b8);
22944 pi->rssical_cache.rssical_phyregs_2G[4] =
22945 read_phy_reg(pi, 0x1a4);
22946 pi->rssical_cache.rssical_phyregs_2G[5] =
22947 read_phy_reg(pi, 0x1aa);
22948 pi->rssical_cache.rssical_phyregs_2G[6] =
22949 read_phy_reg(pi, 0x1b0);
22950 pi->rssical_cache.rssical_phyregs_2G[7] =
22951 read_phy_reg(pi, 0x1b6);
22952 pi->rssical_cache.rssical_phyregs_2G[8] =
22953 read_phy_reg(pi, 0x1a5);
22954 pi->rssical_cache.rssical_phyregs_2G[9] =
22955 read_phy_reg(pi, 0x1ab);
22956 pi->rssical_cache.rssical_phyregs_2G[10] =
22957 read_phy_reg(pi, 0x1b1);
22958 pi->rssical_cache.rssical_phyregs_2G[11] =
22959 read_phy_reg(pi, 0x1b7);
22960
22961 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22962 } else {
22963 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22964 pi->rssical_cache.rssical_radio_regs_5G[0] =
22965 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22966 pi->rssical_cache.rssical_radio_regs_5G[1] =
22967 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22968 } else {
22969 pi->rssical_cache.rssical_radio_regs_5G[0] =
22970 read_radio_reg(pi,
22971 RADIO_2056_RX_RSSI_MISC |
22972 RADIO_2056_RX0);
22973 pi->rssical_cache.rssical_radio_regs_5G[1] =
22974 read_radio_reg(pi,
22975 RADIO_2056_RX_RSSI_MISC |
22976 RADIO_2056_RX1);
22977 }
22978
22979 pi->rssical_cache.rssical_phyregs_5G[0] =
22980 read_phy_reg(pi, 0x1a6);
22981 pi->rssical_cache.rssical_phyregs_5G[1] =
22982 read_phy_reg(pi, 0x1ac);
22983 pi->rssical_cache.rssical_phyregs_5G[2] =
22984 read_phy_reg(pi, 0x1b2);
22985 pi->rssical_cache.rssical_phyregs_5G[3] =
22986 read_phy_reg(pi, 0x1b8);
22987 pi->rssical_cache.rssical_phyregs_5G[4] =
22988 read_phy_reg(pi, 0x1a4);
22989 pi->rssical_cache.rssical_phyregs_5G[5] =
22990 read_phy_reg(pi, 0x1aa);
22991 pi->rssical_cache.rssical_phyregs_5G[6] =
22992 read_phy_reg(pi, 0x1b0);
22993 pi->rssical_cache.rssical_phyregs_5G[7] =
22994 read_phy_reg(pi, 0x1b6);
22995 pi->rssical_cache.rssical_phyregs_5G[8] =
22996 read_phy_reg(pi, 0x1a5);
22997 pi->rssical_cache.rssical_phyregs_5G[9] =
22998 read_phy_reg(pi, 0x1ab);
22999 pi->rssical_cache.rssical_phyregs_5G[10] =
23000 read_phy_reg(pi, 0x1b1);
23001 pi->rssical_cache.rssical_phyregs_5G[11] =
23002 read_phy_reg(pi, 0x1b7);
23003
23004 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
23005 }
23006
23007 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23008 wlc_phy_clip_det_nphy(pi, 1, clip_state);
23009}
23010
23011static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
23012{
23013 s32 target_code;
23014 u16 classif_state;
23015 u16 clip_state[2];
23016 u16 rssi_ctrl_state[2], pd_state[2];
23017 u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
23018 u16 rfctrlintc_override_val;
23019 u16 clip_off[] = { 0xffff, 0xffff };
23020 u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
23021 u8 vcm, min_vcm, vcm_tmp[4];
23022 u8 vcm_final[4] = { 0, 0, 0, 0 };
23023 u8 result_idx, ctr;
23024 s32 poll_results[4][4] = {
23025 {0, 0, 0, 0},
23026 {0, 0, 0, 0},
23027 {0, 0, 0, 0},
23028 {0, 0, 0, 0}
23029 };
23030 s32 poll_miniq[4][2] = {
23031 {0, 0},
23032 {0, 0},
23033 {0, 0},
23034 {0, 0}
23035 };
23036 s32 min_d, curr_d;
23037 s32 fine_digital_offset[4];
23038 s32 poll_results_min[4] = { 0, 0, 0, 0 };
23039 s32 min_poll;
23040
23041 switch (rssi_type) {
23042 case NPHY_RSSI_SEL_NB:
23043 target_code = NPHY_RSSICAL_NB_TARGET;
23044 break;
23045 case NPHY_RSSI_SEL_W1:
23046 target_code = NPHY_RSSICAL_W1_TARGET;
23047 break;
23048 case NPHY_RSSI_SEL_W2:
23049 target_code = NPHY_RSSICAL_W2_TARGET;
23050 break;
23051 default:
23052 return;
23053 break;
23054 }
23055
23056 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
23057 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
23058 wlc_phy_clip_det_nphy(pi, 0, clip_state);
23059 wlc_phy_clip_det_nphy(pi, 1, clip_off);
23060
23061 rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
23062 rfctrlintc_override_val =
23063 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
23064
23065 rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
23066 rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
23067 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
23068 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
23069
23070 rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
23071 rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
23072 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
23073 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
23074
23075 pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
23076 RADIO_2055_WBRSSI_G2_PD;
23077 pd_state[0] =
23078 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
23079 pd_state[1] =
23080 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
23081 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
23082 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
23083 rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
23084 RADIO_2055_WBRSSI_G2_SEL;
23085 rssi_ctrl_state[0] =
23086 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
23087 rssi_ctrl_state[1] =
23088 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
23089 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
23090
23091 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23092 NPHY_RAIL_I, rssi_type);
23093 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23094 NPHY_RAIL_Q, rssi_type);
23095
23096 for (vcm = 0; vcm < 4; vcm++) {
23097
23098 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
23099 if (rssi_type != NPHY_RSSI_SEL_W2)
23100 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
23101
23102 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
23103 NPHY_RSSICAL_NPOLL);
23104
23105 if ((rssi_type == NPHY_RSSI_SEL_W1)
23106 || (rssi_type == NPHY_RSSI_SEL_W2)) {
23107 for (ctr = 0; ctr < 2; ctr++)
23108 poll_miniq[vcm][ctr] =
23109 min(poll_results[vcm][ctr * 2 + 0],
23110 poll_results[vcm][ctr * 2 + 1]);
23111 }
23112 }
23113
23114 for (result_idx = 0; result_idx < 4; result_idx++) {
23115 min_d = NPHY_RSSICAL_MAXD;
23116 min_vcm = 0;
23117 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
23118 for (vcm = 0; vcm < 4; vcm++) {
23119 curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
23120 poll_results[vcm][result_idx] :
23121 poll_miniq[vcm][result_idx / 2]) -
23122 (target_code * NPHY_RSSICAL_NPOLL));
23123 if (curr_d < min_d) {
23124 min_d = curr_d;
23125 min_vcm = vcm;
23126 }
23127 if (poll_results[vcm][result_idx] < min_poll)
23128 min_poll = poll_results[vcm][result_idx];
23129 }
23130 vcm_final[result_idx] = min_vcm;
23131 poll_results_min[result_idx] = min_poll;
23132 }
23133
23134 if (rssi_type != NPHY_RSSI_SEL_W2)
23135 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23136
23137 for (result_idx = 0; result_idx < 4; result_idx++) {
23138 fine_digital_offset[result_idx] =
23139 (target_code * NPHY_RSSICAL_NPOLL) -
23140 poll_results[vcm_final[result_idx]][result_idx];
23141 if (fine_digital_offset[result_idx] < 0) {
23142 fine_digital_offset[result_idx] =
23143 abs(fine_digital_offset[result_idx]);
23144 fine_digital_offset[result_idx] +=
23145 (NPHY_RSSICAL_NPOLL / 2);
23146 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23147 fine_digital_offset[result_idx] =
23148 -fine_digital_offset[result_idx];
23149 } else {
23150 fine_digital_offset[result_idx] +=
23151 (NPHY_RSSICAL_NPOLL / 2);
23152 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23153 }
23154
23155 if (poll_results_min[result_idx] ==
23156 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23157 fine_digital_offset[result_idx] =
23158 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23159
23160 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23161 (s8)
23162 fine_digital_offset[result_idx],
23163 (result_idx / 2 ==
23164 0) ? RADIO_MIMO_CORESEL_CORE1 :
23165 RADIO_MIMO_CORESEL_CORE2,
23166 (result_idx % 2 ==
23167 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23168 rssi_type);
23169 }
23170
23171 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23172 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23173 if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23174 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23175 NPHY_RSSI_SEL_NB);
23176 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23177 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23178 NPHY_RSSI_SEL_W1);
23179 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23180 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23181 NPHY_RSSI_SEL_W2);
23182 else
23183 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23184 NPHY_RSSI_SEL_W2);
23185 if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23186 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23187 NPHY_RSSI_SEL_NB);
23188 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23189 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23190 NPHY_RSSI_SEL_W1);
23191 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23192 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23193 NPHY_RSSI_SEL_W2);
23194 else
23195 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23196 NPHY_RSSI_SEL_W2);
23197
23198 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23199
23200 write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23201 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23202 write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23203 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23204
23205 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23206 wlc_phy_clip_det_nphy(pi, 1, clip_state);
23207
23208 wlc_phy_resetcca_nphy(pi);
23209}
23210
23211void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23212{
23213 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23214 wlc_phy_rssi_cal_nphy_rev3(pi);
23215 } else {
23216 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23217 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23218 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23219 }
23220}
23221
23222int
23223wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23224{
23225 s16 rxpwr, rxpwr0, rxpwr1;
23226 s16 phyRx0_l, phyRx2_l;
23227
23228 rxpwr = 0;
23229 rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23230 rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23231
23232 if (rxpwr0 > 127)
23233 rxpwr0 -= 256;
23234 if (rxpwr1 > 127)
23235 rxpwr1 -= 256;
23236
23237 phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23238 phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23239 if (phyRx2_l > 127)
23240 phyRx2_l -= 256;
23241
23242 if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23243 rxpwr0 = rxpwr1;
23244 rxpwr1 = phyRx2_l;
23245 }
23246
23247 if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23248 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23249 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23250 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23251 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23252 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23253
23254 return rxpwr;
23255}
23256
23257static void
23258wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23259 u16 num_samps)
23260{
23261 u16 t;
23262 u32 *data_buf = NULL;
23263
23264 data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23265 if (data_buf == NULL)
23266 return;
23267
23268 if (pi->phyhang_avoid)
23269 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23270
23271 for (t = 0; t < num_samps; t++)
23272 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23273 (((unsigned int)tone_buf[t].q) & 0x3ff);
23274 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23275 data_buf);
23276
23277 kfree(data_buf);
23278
23279 if (pi->phyhang_avoid)
23280 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23281}
23282
23283static u16
23284wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23285 u8 dac_test_mode)
23286{
23287 u8 phy_bw, is_phybw40;
23288 u16 num_samps, t, spur;
23289 s32 theta = 0, rot = 0;
23290 u32 tbl_len;
23291 struct cordic_iq *tone_buf = NULL;
23292
23293 is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23294 phy_bw = (is_phybw40 == 1) ? 40 : 20;
23295 tbl_len = (phy_bw << 3);
23296
23297 if (dac_test_mode == 1) {
23298 spur = read_phy_reg(pi, 0x01);
23299 spur = (spur >> 15) & 1;
23300 phy_bw = (spur == 1) ? 82 : 80;
23301 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23302
23303 tbl_len = (phy_bw << 1);
23304 }
23305
23306 tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23307 if (tone_buf == NULL)
23308 return 0;
23309
23310 num_samps = (u16) tbl_len;
23311 rot = ((f_kHz * 36) / phy_bw) / 100;
23312 theta = 0;
23313
23314 for (t = 0; t < num_samps; t++) {
23315
23316 tone_buf[t] = cordic_calc_iq(theta);
23317
23318 theta += rot;
23319
23320 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23321 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23322 }
23323
23324 wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23325
23326 kfree(tone_buf);
23327
23328 return num_samps;
23329}
23330
23331static void
23332wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23333 u16 wait, u8 iqmode, u8 dac_test_mode,
23334 bool modify_bbmult)
23335{
23336 u16 bb_mult;
23337 u8 phy_bw, sample_cmd;
23338 u16 orig_RfseqCoreActv;
23339 u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23340 lpf_bw_ctl_miscreg4;
23341
23342 if (pi->phyhang_avoid)
23343 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23344
23345 phy_bw = 20;
23346 if (CHSPEC_IS40(pi->radio_chanspec))
23347 phy_bw = 40;
23348
23349 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23350
23351 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23352 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23353 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23354 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23355 (0x7 << 8);
23356 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23357 (0x7 << 8);
23358 } else {
23359 wlc_phy_rfctrl_override_nphy_rev7(
23360 pi,
23361 (0x1 << 7),
23362 wlc_phy_read_lpf_bw_ctl_nphy
23363 (pi,
23364 0), 0, 0,
23365 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23366
23367 pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23368
23369 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23370 (0x7 << 8);
23371 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23372 (0x7 << 8);
23373 }
23374 }
23375
23376 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23377
23378 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23379 &bb_mult);
23380 pi->nphy_bb_mult_save =
23381 BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23382 }
23383
23384 if (modify_bbmult) {
23385 bb_mult = (phy_bw == 20) ? 100 : 71;
23386 bb_mult = (bb_mult << 8) + bb_mult;
23387 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23388 &bb_mult);
23389 }
23390
23391 if (pi->phyhang_avoid)
23392 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23393
23394 write_phy_reg(pi, 0xc6, num_samps - 1);
23395
23396 if (loops != 0xffff)
23397 write_phy_reg(pi, 0xc4, loops - 1);
23398 else
23399 write_phy_reg(pi, 0xc4, loops);
23400
23401 write_phy_reg(pi, 0xc5, wait);
23402
23403 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23404 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23405 if (iqmode) {
23406
23407 and_phy_reg(pi, 0xc2, 0x7FFF);
23408
23409 or_phy_reg(pi, 0xc2, 0x8000);
23410 } else {
23411
23412 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23413 write_phy_reg(pi, 0xc3, sample_cmd);
23414 }
23415
23416 SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23417
23418 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23419}
23420
23421int
23422wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23423 u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23424{
23425 u16 num_samps;
23426 u16 loops = 0xffff;
23427 u16 wait = 0;
23428
23429 num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23430 dac_test_mode);
23431 if (num_samps == 0)
23432 return -EBADE;
23433
23434 wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23435 dac_test_mode, modify_bbmult);
23436
23437 return 0;
23438}
23439
23440void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23441{
23442 u16 playback_status;
23443 u16 bb_mult;
23444
23445 if (pi->phyhang_avoid)
23446 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23447
23448 playback_status = read_phy_reg(pi, 0xc7);
23449 if (playback_status & 0x1)
23450 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23451 else if (playback_status & 0x2)
23452 and_phy_reg(pi, 0xc2,
23453 (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23454
23455 and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23456
23457 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23458
23459 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23460 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23461 &bb_mult);
23462
23463 pi->nphy_bb_mult_save = 0;
23464 }
23465
23466 if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23467 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23468 wlc_phy_rfctrl_override_nphy_rev7(
23469 pi,
23470 (0x1 << 7),
23471 0, 0, 1,
23472 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23473 pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23474 }
23475 }
23476
23477 if (pi->phyhang_avoid)
23478 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23479}
23480
23481static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23482{
23483 u32 *tx_pwrctrl_tbl = NULL;
23484 uint phyrev = pi->pubpi.phy_rev;
23485
23486 if (PHY_IPA(pi)) {
23487 tx_pwrctrl_tbl =
23488 wlc_phy_get_ipa_gaintbl_nphy(pi);
23489 } else {
23490 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23491 if (NREV_IS(phyrev, 3))
23492 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23493 else if (NREV_IS(phyrev, 4))
23494 tx_pwrctrl_tbl =
23495 (pi->srom_fem5g.extpagain == 3) ?
23496 nphy_tpc_5GHz_txgain_HiPwrEPA :
23497 nphy_tpc_5GHz_txgain_rev4;
23498 else
23499 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23500 } else {
23501 if (NREV_GE(phyrev, 7)) {
23502 if (pi->pubpi.radiorev == 3)
23503 tx_pwrctrl_tbl =
23504 nphy_tpc_txgain_epa_2057rev3;
23505 else if (pi->pubpi.radiorev == 5)
23506 tx_pwrctrl_tbl =
23507 nphy_tpc_txgain_epa_2057rev5;
23508 } else {
23509 if (NREV_GE(phyrev, 5) &&
23510 (pi->srom_fem2g.extpagain == 3))
23511 tx_pwrctrl_tbl =
23512 nphy_tpc_txgain_HiPwrEPA;
23513 else
23514 tx_pwrctrl_tbl =
23515 nphy_tpc_txgain_rev3;
23516 }
23517 }
23518 }
23519 return tx_pwrctrl_tbl;
23520}
23521
23522struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23523{
23524 u16 base_idx[2], curr_gain[2];
23525 u8 core_no;
23526 struct nphy_txgains target_gain;
23527 u32 *tx_pwrctrl_tbl = NULL;
23528
23529 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23530 if (pi->phyhang_avoid)
23531 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23532
23533 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23534 curr_gain);
23535
23536 if (pi->phyhang_avoid)
23537 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23538
23539 for (core_no = 0; core_no < 2; core_no++) {
23540 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23541 target_gain.ipa[core_no] =
23542 curr_gain[core_no] & 0x0007;
23543 target_gain.pad[core_no] =
23544 ((curr_gain[core_no] & 0x00F8) >> 3);
23545 target_gain.pga[core_no] =
23546 ((curr_gain[core_no] & 0x0F00) >> 8);
23547 target_gain.txgm[core_no] =
23548 ((curr_gain[core_no] & 0x7000) >> 12);
23549 target_gain.txlpf[core_no] =
23550 ((curr_gain[core_no] & 0x8000) >> 15);
23551 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23552 target_gain.ipa[core_no] =
23553 curr_gain[core_no] & 0x000F;
23554 target_gain.pad[core_no] =
23555 ((curr_gain[core_no] & 0x00F0) >> 4);
23556 target_gain.pga[core_no] =
23557 ((curr_gain[core_no] & 0x0F00) >> 8);
23558 target_gain.txgm[core_no] =
23559 ((curr_gain[core_no] & 0x7000) >> 12);
23560 } else {
23561 target_gain.ipa[core_no] =
23562 curr_gain[core_no] & 0x0003;
23563 target_gain.pad[core_no] =
23564 ((curr_gain[core_no] & 0x000C) >> 2);
23565 target_gain.pga[core_no] =
23566 ((curr_gain[core_no] & 0x0070) >> 4);
23567 target_gain.txgm[core_no] =
23568 ((curr_gain[core_no] & 0x0380) >> 7);
23569 }
23570 }
23571 } else {
23572 uint phyrev = pi->pubpi.phy_rev;
23573
23574 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23575 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23576 for (core_no = 0; core_no < 2; core_no++) {
23577 if (NREV_GE(phyrev, 3)) {
23578 tx_pwrctrl_tbl =
23579 brcms_phy_get_tx_pwrctrl_tbl(pi);
23580 if (NREV_GE(phyrev, 7)) {
23581 target_gain.ipa[core_no] =
23582 (tx_pwrctrl_tbl
23583 [base_idx[core_no]]
23584 >> 16) & 0x7;
23585 target_gain.pad[core_no] =
23586 (tx_pwrctrl_tbl
23587 [base_idx[core_no]]
23588 >> 19) & 0x1f;
23589 target_gain.pga[core_no] =
23590 (tx_pwrctrl_tbl
23591 [base_idx[core_no]]
23592 >> 24) & 0xf;
23593 target_gain.txgm[core_no] =
23594 (tx_pwrctrl_tbl
23595 [base_idx[core_no]]
23596 >> 28) & 0x7;
23597 target_gain.txlpf[core_no] =
23598 (tx_pwrctrl_tbl
23599 [base_idx[core_no]]
23600 >> 31) & 0x1;
23601 } else {
23602 target_gain.ipa[core_no] =
23603 (tx_pwrctrl_tbl
23604 [base_idx[core_no]]
23605 >> 16) & 0xf;
23606 target_gain.pad[core_no] =
23607 (tx_pwrctrl_tbl
23608 [base_idx[core_no]]
23609 >> 20) & 0xf;
23610 target_gain.pga[core_no] =
23611 (tx_pwrctrl_tbl
23612 [base_idx[core_no]]
23613 >> 24) & 0xf;
23614 target_gain.txgm[core_no] =
23615 (tx_pwrctrl_tbl
23616 [base_idx[core_no]]
23617 >> 28) & 0x7;
23618 }
23619 } else {
23620 target_gain.ipa[core_no] =
23621 (nphy_tpc_txgain[base_idx[core_no]] >>
23622 16) & 0x3;
23623 target_gain.pad[core_no] =
23624 (nphy_tpc_txgain[base_idx[core_no]] >>
23625 18) & 0x3;
23626 target_gain.pga[core_no] =
23627 (nphy_tpc_txgain[base_idx[core_no]] >>
23628 20) & 0x7;
23629 target_gain.txgm[core_no] =
23630 (nphy_tpc_txgain[base_idx[core_no]] >>
23631 23) & 0x7;
23632 }
23633 }
23634 }
23635
23636 return target_gain;
23637}
23638
23639static void
23640wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23641 struct nphy_txgains target_gain,
23642 struct nphy_iqcal_params *params)
23643{
23644 u8 k;
23645 int idx;
23646 u16 gain_index;
23647 u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23648
23649 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23650 if (NREV_GE(pi->pubpi.phy_rev, 7))
23651 params->txlpf = target_gain.txlpf[core_no];
23652
23653 params->txgm = target_gain.txgm[core_no];
23654 params->pga = target_gain.pga[core_no];
23655 params->pad = target_gain.pad[core_no];
23656 params->ipa = target_gain.ipa[core_no];
23657 if (NREV_GE(pi->pubpi.phy_rev, 7))
23658 params->cal_gain =
23659 ((params->txlpf << 15) | (params->txgm << 12) |
23660 (params->pga << 8) |
23661 (params->pad << 3) | (params->ipa));
23662 else
23663 params->cal_gain =
23664 ((params->txgm << 12) | (params->pga << 8) |
23665 (params->pad << 4) | (params->ipa));
23666
23667 params->ncorr[0] = 0x79;
23668 params->ncorr[1] = 0x79;
23669 params->ncorr[2] = 0x79;
23670 params->ncorr[3] = 0x79;
23671 params->ncorr[4] = 0x79;
23672 } else {
23673
23674 gain_index = ((target_gain.pad[core_no] << 0) |
23675 (target_gain.pga[core_no] << 4) |
23676 (target_gain.txgm[core_no] << 8));
23677
23678 idx = -1;
23679 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23680 if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23681 gain_index) {
23682 idx = k;
23683 break;
23684 }
23685 }
23686
23687 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23688 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23689 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23690 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23691 (params->pad << 2));
23692 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23693 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23694 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23695 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23696 }
23697}
23698
23699static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23700{
23701 u16 jtag_core, core;
23702
23703 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23704
23705 for (core = 0; core <= 1; core++) {
23706
23707 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23708 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23709 TX_SSI_MASTER);
23710
23711 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23712 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23713 IQCAL_VCM_HG);
23714
23715 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23716 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23717 IQCAL_IDAC);
23718
23719 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23720 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23721 TSSI_VCM);
23722
23723 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23724
23725 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23726 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23727 TX_SSI_MUX);
23728
23729 if (pi->pubpi.radiorev != 5)
23730 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23731 READ_RADIO_REG3(pi, RADIO_2057, TX,
23732 core,
23733 TSSIA);
23734
23735 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23736 READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23737
23738 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23739 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23740 TSSI_MISC1);
23741
23742 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23743 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23744 TX_SSI_MASTER, 0x0a);
23745 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23746 IQCAL_VCM_HG, 0x43);
23747 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23748 IQCAL_IDAC, 0x55);
23749 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23750 TSSI_VCM, 0x00);
23751 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23752 TSSIG, 0x00);
23753 if (pi->use_int_tx_iqlo_cal_nphy) {
23754 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23755 core, TX_SSI_MUX, 0x4);
23756 if (!(pi->
23757 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23758 WRITE_RADIO_REG3(pi, RADIO_2057,
23759 TX, core,
23760 TSSIA, 0x31);
23761 else
23762 WRITE_RADIO_REG3(pi, RADIO_2057,
23763 TX, core,
23764 TSSIA, 0x21);
23765 }
23766 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23767 TSSI_MISC1, 0x00);
23768 } else {
23769 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23770 TX_SSI_MASTER, 0x06);
23771 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23772 IQCAL_VCM_HG, 0x43);
23773 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23774 IQCAL_IDAC, 0x55);
23775 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23776 TSSI_VCM, 0x00);
23777
23778 if (pi->pubpi.radiorev != 5)
23779 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23780 core, TSSIA, 0x00);
23781 if (pi->use_int_tx_iqlo_cal_nphy) {
23782 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23783 core, TX_SSI_MUX,
23784 0x06);
23785 if (!(pi->
23786 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23787 WRITE_RADIO_REG3(pi, RADIO_2057,
23788 TX, core,
23789 TSSIG, 0x31);
23790 else
23791 WRITE_RADIO_REG3(pi, RADIO_2057,
23792 TX, core,
23793 TSSIG, 0x21);
23794 }
23795 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23796 TSSI_MISC1, 0x00);
23797 }
23798 }
23799 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23800
23801 for (core = 0; core <= 1; core++) {
23802 jtag_core =
23803 (core ==
23804 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23805
23806 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23807 read_radio_reg(pi,
23808 RADIO_2056_TX_TX_SSI_MASTER |
23809 jtag_core);
23810
23811 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23812 read_radio_reg(pi,
23813 RADIO_2056_TX_IQCAL_VCM_HG |
23814 jtag_core);
23815
23816 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23817 read_radio_reg(pi,
23818 RADIO_2056_TX_IQCAL_IDAC |
23819 jtag_core);
23820
23821 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23822 read_radio_reg(
23823 pi,
23824 RADIO_2056_TX_TSSI_VCM |
23825 jtag_core);
23826
23827 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23828 read_radio_reg(pi,
23829 RADIO_2056_TX_TX_AMP_DET |
23830 jtag_core);
23831
23832 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23833 read_radio_reg(pi,
23834 RADIO_2056_TX_TX_SSI_MUX |
23835 jtag_core);
23836
23837 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23838 read_radio_reg(pi,
23839 RADIO_2056_TX_TSSIA | jtag_core);
23840
23841 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23842 read_radio_reg(pi,
23843 RADIO_2056_TX_TSSIG | jtag_core);
23844
23845 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23846 read_radio_reg(pi,
23847 RADIO_2056_TX_TSSI_MISC1 |
23848 jtag_core);
23849
23850 pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23851 read_radio_reg(pi,
23852 RADIO_2056_TX_TSSI_MISC2 |
23853 jtag_core);
23854
23855 pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23856 read_radio_reg(pi,
23857 RADIO_2056_TX_TSSI_MISC3 |
23858 jtag_core);
23859
23860 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23861 write_radio_reg(pi,
23862 RADIO_2056_TX_TX_SSI_MASTER |
23863 jtag_core, 0x0a);
23864 write_radio_reg(pi,
23865 RADIO_2056_TX_IQCAL_VCM_HG |
23866 jtag_core, 0x40);
23867 write_radio_reg(pi,
23868 RADIO_2056_TX_IQCAL_IDAC |
23869 jtag_core, 0x55);
23870 write_radio_reg(pi,
23871 RADIO_2056_TX_TSSI_VCM |
23872 jtag_core, 0x00);
23873 write_radio_reg(pi,
23874 RADIO_2056_TX_TX_AMP_DET |
23875 jtag_core, 0x00);
23876
23877 if (PHY_IPA(pi)) {
23878 write_radio_reg(
23879 pi,
23880 RADIO_2056_TX_TX_SSI_MUX
23881 | jtag_core, 0x4);
23882 write_radio_reg(pi,
23883 RADIO_2056_TX_TSSIA |
23884 jtag_core, 0x1);
23885 } else {
23886 write_radio_reg(
23887 pi,
23888 RADIO_2056_TX_TX_SSI_MUX
23889 | jtag_core, 0x00);
23890 write_radio_reg(pi,
23891 RADIO_2056_TX_TSSIA |
23892 jtag_core, 0x2f);
23893 }
23894 write_radio_reg(pi,
23895 RADIO_2056_TX_TSSIG | jtag_core,
23896 0x00);
23897 write_radio_reg(pi,
23898 RADIO_2056_TX_TSSI_MISC1 |
23899 jtag_core, 0x00);
23900
23901 write_radio_reg(pi,
23902 RADIO_2056_TX_TSSI_MISC2 |
23903 jtag_core, 0x00);
23904 write_radio_reg(pi,
23905 RADIO_2056_TX_TSSI_MISC3 |
23906 jtag_core, 0x00);
23907 } else {
23908 write_radio_reg(pi,
23909 RADIO_2056_TX_TX_SSI_MASTER |
23910 jtag_core, 0x06);
23911 write_radio_reg(pi,
23912 RADIO_2056_TX_IQCAL_VCM_HG |
23913 jtag_core, 0x40);
23914 write_radio_reg(pi,
23915 RADIO_2056_TX_IQCAL_IDAC |
23916 jtag_core, 0x55);
23917 write_radio_reg(pi,
23918 RADIO_2056_TX_TSSI_VCM |
23919 jtag_core, 0x00);
23920 write_radio_reg(pi,
23921 RADIO_2056_TX_TX_AMP_DET |
23922 jtag_core, 0x00);
23923 write_radio_reg(pi,
23924 RADIO_2056_TX_TSSIA | jtag_core,
23925 0x00);
23926
23927 if (PHY_IPA(pi)) {
23928
23929 write_radio_reg(
23930 pi,
23931 RADIO_2056_TX_TX_SSI_MUX
23932 | jtag_core, 0x06);
23933 if (NREV_LT(pi->pubpi.phy_rev, 5))
23934 write_radio_reg(
23935 pi,
23936 RADIO_2056_TX_TSSIG
23937 | jtag_core,
23938 0x11);
23939 else
23940 write_radio_reg(
23941 pi,
23942 RADIO_2056_TX_TSSIG
23943 | jtag_core,
23944 0x1);
23945 } else {
23946 write_radio_reg(
23947 pi,
23948 RADIO_2056_TX_TX_SSI_MUX
23949 | jtag_core, 0x00);
23950 write_radio_reg(pi,
23951 RADIO_2056_TX_TSSIG |
23952 jtag_core, 0x20);
23953 }
23954
23955 write_radio_reg(pi,
23956 RADIO_2056_TX_TSSI_MISC1 |
23957 jtag_core, 0x00);
23958 write_radio_reg(pi,
23959 RADIO_2056_TX_TSSI_MISC2 |
23960 jtag_core, 0x00);
23961 write_radio_reg(pi,
23962 RADIO_2056_TX_TSSI_MISC3 |
23963 jtag_core, 0x00);
23964 }
23965 }
23966 } else {
23967
23968 pi->tx_rx_cal_radio_saveregs[0] =
23969 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23970 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23971 pi->tx_rx_cal_radio_saveregs[1] =
23972 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23973 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23974
23975 pi->tx_rx_cal_radio_saveregs[2] =
23976 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23977 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23978 pi->tx_rx_cal_radio_saveregs[3] =
23979 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23980 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23981
23982 pi->tx_rx_cal_radio_saveregs[4] =
23983 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23984 pi->tx_rx_cal_radio_saveregs[5] =
23985 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23986
23987 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23988 0) {
23989
23990 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23991 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23992 } else {
23993
23994 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23995 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23996 }
23997
23998 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23999
24000 or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
24001 or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
24002 } else {
24003
24004 and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
24005 and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
24006 }
24007 }
24008}
24009
24010static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
24011{
24012 u16 jtag_core, core;
24013
24014 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24015 for (core = 0; core <= 1; core++) {
24016
24017 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24018 TX_SSI_MASTER,
24019 pi->
24020 tx_rx_cal_radio_saveregs[(core * 11) +
24021 0]);
24022
24023 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
24024 pi->
24025 tx_rx_cal_radio_saveregs[(core * 11) +
24026 1]);
24027
24028 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
24029 pi->
24030 tx_rx_cal_radio_saveregs[(core * 11) +
24031 2]);
24032
24033 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
24034 pi->
24035 tx_rx_cal_radio_saveregs[(core * 11) +
24036 3]);
24037
24038 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
24039 pi->
24040 tx_rx_cal_radio_saveregs[(core * 11) +
24041 5]);
24042
24043 if (pi->pubpi.radiorev != 5)
24044 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24045 TSSIA,
24046 pi->tx_rx_cal_radio_saveregs
24047 [(core * 11) + 6]);
24048
24049 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
24050 pi->
24051 tx_rx_cal_radio_saveregs[(core * 11) +
24052 7]);
24053
24054 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
24055 pi->
24056 tx_rx_cal_radio_saveregs[(core * 11) +
24057 8]);
24058 }
24059 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24060 for (core = 0; core <= 1; core++) {
24061 jtag_core = (core == PHY_CORE_0) ?
24062 RADIO_2056_TX0 : RADIO_2056_TX1;
24063
24064 write_radio_reg(pi,
24065 RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
24066 pi->
24067 tx_rx_cal_radio_saveregs[(core * 11) +
24068 0]);
24069
24070 write_radio_reg(pi,
24071 RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
24072 pi->
24073 tx_rx_cal_radio_saveregs[(core * 11) +
24074 1]);
24075
24076 write_radio_reg(pi,
24077 RADIO_2056_TX_IQCAL_IDAC | jtag_core,
24078 pi->
24079 tx_rx_cal_radio_saveregs[(core * 11) +
24080 2]);
24081
24082 write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
24083 pi->
24084 tx_rx_cal_radio_saveregs[(core * 11) +
24085 3]);
24086
24087 write_radio_reg(pi,
24088 RADIO_2056_TX_TX_AMP_DET | jtag_core,
24089 pi->
24090 tx_rx_cal_radio_saveregs[(core * 11) +
24091 4]);
24092
24093 write_radio_reg(pi,
24094 RADIO_2056_TX_TX_SSI_MUX | jtag_core,
24095 pi->
24096 tx_rx_cal_radio_saveregs[(core * 11) +
24097 5]);
24098
24099 write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
24100 pi->
24101 tx_rx_cal_radio_saveregs[(core * 11) +
24102 6]);
24103
24104 write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
24105 pi->
24106 tx_rx_cal_radio_saveregs[(core * 11) +
24107 7]);
24108
24109 write_radio_reg(pi,
24110 RADIO_2056_TX_TSSI_MISC1 | jtag_core,
24111 pi->
24112 tx_rx_cal_radio_saveregs[(core * 11) +
24113 8]);
24114
24115 write_radio_reg(pi,
24116 RADIO_2056_TX_TSSI_MISC2 | jtag_core,
24117 pi->
24118 tx_rx_cal_radio_saveregs[(core * 11) +
24119 9]);
24120
24121 write_radio_reg(pi,
24122 RADIO_2056_TX_TSSI_MISC3 | jtag_core,
24123 pi->
24124 tx_rx_cal_radio_saveregs[(core * 11) +
24125 10]);
24126 }
24127 } else {
24128
24129 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
24130 pi->tx_rx_cal_radio_saveregs[0]);
24131 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24132 pi->tx_rx_cal_radio_saveregs[1]);
24133 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24134 pi->tx_rx_cal_radio_saveregs[2]);
24135 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24136 pi->tx_rx_cal_radio_saveregs[3]);
24137 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24138 pi->tx_rx_cal_radio_saveregs[4]);
24139 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24140 pi->tx_rx_cal_radio_saveregs[5]);
24141 }
24142}
24143
24144static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24145{
24146 u16 val, mask;
24147
24148 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24149 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24150 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24151
24152 mask = ((0x3 << 8) | (0x3 << 10));
24153 val = (0x2 << 8);
24154 val |= (0x2 << 10);
24155 mod_phy_reg(pi, 0xa6, mask, val);
24156 mod_phy_reg(pi, 0xa7, mask, val);
24157
24158 val = read_phy_reg(pi, 0x8f);
24159 pi->tx_rx_cal_phy_saveregs[2] = val;
24160 val |= ((0x1 << 9) | (0x1 << 10));
24161 write_phy_reg(pi, 0x8f, val);
24162
24163 val = read_phy_reg(pi, 0xa5);
24164 pi->tx_rx_cal_phy_saveregs[3] = val;
24165 val |= ((0x1 << 9) | (0x1 << 10));
24166 write_phy_reg(pi, 0xa5, val);
24167
24168 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24169 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24170
24171 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24172 &val);
24173 pi->tx_rx_cal_phy_saveregs[5] = val;
24174 val = 0;
24175 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24176 &val);
24177
24178 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24179 &val);
24180 pi->tx_rx_cal_phy_saveregs[6] = val;
24181 val = 0;
24182 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24183 &val);
24184
24185 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24186 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24187
24188 if (!(pi->use_int_tx_iqlo_cal_nphy))
24189 wlc_phy_rfctrlintc_override_nphy(
24190 pi,
24191 NPHY_RfctrlIntc_override_PA,
24192 1,
24193 RADIO_MIMO_CORESEL_CORE1
24194 |
24195 RADIO_MIMO_CORESEL_CORE2);
24196 else
24197 wlc_phy_rfctrlintc_override_nphy(
24198 pi,
24199 NPHY_RfctrlIntc_override_PA,
24200 0,
24201 RADIO_MIMO_CORESEL_CORE1
24202 |
24203 RADIO_MIMO_CORESEL_CORE2);
24204
24205 wlc_phy_rfctrlintc_override_nphy(pi,
24206 NPHY_RfctrlIntc_override_TRSW,
24207 0x2, RADIO_MIMO_CORESEL_CORE1);
24208 wlc_phy_rfctrlintc_override_nphy(pi,
24209 NPHY_RfctrlIntc_override_TRSW,
24210 0x8, RADIO_MIMO_CORESEL_CORE2);
24211
24212 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24213 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24214 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24215 0x29b, (0x1 << 0), (0) << 0);
24216
24217 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24218 0x29b, (0x1 << 0), (0) << 0);
24219
24220 if (NREV_IS(pi->pubpi.phy_rev, 7)
24221 || NREV_GE(pi->pubpi.phy_rev, 8))
24222 wlc_phy_rfctrl_override_nphy_rev7(
24223 pi, (0x1 << 7),
24224 wlc_phy_read_lpf_bw_ctl_nphy
24225 (pi,
24226 0), 0, 0,
24227 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24228
24229 if (pi->use_int_tx_iqlo_cal_nphy
24230 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24231
24232 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24233
24234 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24235 1 << 4);
24236
24237 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24238 mod_radio_reg(
24239 pi,
24240 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24241 1, 0);
24242 mod_radio_reg(
24243 pi,
24244 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24245 1, 0);
24246 } else {
24247 mod_radio_reg(
24248 pi,
24249 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24250 1, 0);
24251 mod_radio_reg(
24252 pi,
24253 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24254 1, 0);
24255 }
24256 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24257 wlc_phy_rfctrl_override_nphy_rev7(
24258 pi,
24259 (0x1 << 3), 0,
24260 0x3, 0,
24261 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24262 }
24263 }
24264 } else {
24265 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24266 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24267
24268 mask = ((0x3 << 12) | (0x3 << 14));
24269 val = (0x2 << 12);
24270 val |= (0x2 << 14);
24271 mod_phy_reg(pi, 0xa6, mask, val);
24272 mod_phy_reg(pi, 0xa7, mask, val);
24273
24274 val = read_phy_reg(pi, 0xa5);
24275 pi->tx_rx_cal_phy_saveregs[2] = val;
24276 val |= ((0x1 << 12) | (0x1 << 13));
24277 write_phy_reg(pi, 0xa5, val);
24278
24279 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24280 &val);
24281 pi->tx_rx_cal_phy_saveregs[3] = val;
24282 val |= 0x2000;
24283 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24284 &val);
24285
24286 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24287 &val);
24288 pi->tx_rx_cal_phy_saveregs[4] = val;
24289 val |= 0x2000;
24290 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24291 &val);
24292
24293 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24294 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24295 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24296 write_phy_reg(pi, 0x91, val);
24297 write_phy_reg(pi, 0x92, val);
24298 }
24299}
24300
24301static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24302{
24303 u16 mask;
24304
24305 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24306 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24307 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24308 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24309 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24310 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24311
24312 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24313 &pi->tx_rx_cal_phy_saveregs[5]);
24314 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24315 &pi->tx_rx_cal_phy_saveregs[6]);
24316
24317 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24318 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24319
24320 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24321 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24322
24323 if (NREV_IS(pi->pubpi.phy_rev, 7)
24324 || NREV_GE(pi->pubpi.phy_rev, 8))
24325 wlc_phy_rfctrl_override_nphy_rev7(
24326 pi, (0x1 << 7), 0, 0,
24327 1,
24328 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24329
24330 wlc_phy_resetcca_nphy(pi);
24331
24332 if (pi->use_int_tx_iqlo_cal_nphy
24333 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24334
24335 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24336 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24337 mod_radio_reg(
24338 pi,
24339 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24340 1, 1);
24341 mod_radio_reg(
24342 pi,
24343 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24344 1, 1);
24345 } else {
24346 mod_radio_reg(
24347 pi,
24348 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24349 1, 1);
24350 mod_radio_reg(
24351 pi,
24352 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24353 1, 1);
24354 }
24355
24356 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24357 0);
24358 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24359 wlc_phy_rfctrl_override_nphy_rev7(
24360 pi,
24361 (0x1 << 3), 0,
24362 0x3, 1,
24363 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24364 }
24365 }
24366 } else {
24367 mask = ((0x3 << 12) | (0x3 << 14));
24368 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24369 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24370 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24371
24372 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24373 &pi->tx_rx_cal_phy_saveregs[3]);
24374
24375 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24376 &pi->tx_rx_cal_phy_saveregs[4]);
24377
24378 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24379 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24380 }
24381}
24382
24383void
24384wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24385{
24386 u16 tssi_reg;
24387 s32 temp, pwrindex[2];
24388 s32 idle_tssi[2];
24389 s32 rssi_buf[4];
24390 s32 tssival[2];
24391 u8 tssi_type;
24392
24393 tssi_reg = read_phy_reg(pi, 0x1e9);
24394
24395 temp = (s32) (tssi_reg & 0x3f);
24396 idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24397
24398 temp = (s32) ((tssi_reg >> 8) & 0x3f);
24399 idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24400
24401 tssi_type =
24402 CHSPEC_IS5G(pi->radio_chanspec) ?
24403 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24404
24405 wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24406
24407 tssival[0] = rssi_buf[0] / ((s32) num_samps);
24408 tssival[1] = rssi_buf[2] / ((s32) num_samps);
24409
24410 pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24411 pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24412
24413 if (pwrindex[0] < 0)
24414 pwrindex[0] = 0;
24415 else if (pwrindex[0] > 63)
24416 pwrindex[0] = 63;
24417
24418 if (pwrindex[1] < 0)
24419 pwrindex[1] = 0;
24420 else if (pwrindex[1] > 63)
24421 pwrindex[1] = 63;
24422
24423 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24424 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24425 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24426 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24427}
24428
24429static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24430{
24431 int index;
24432 u32 bbmult_scale;
24433 u16 bbmult;
24434 u16 tblentry;
24435
24436 struct nphy_txiqcal_ladder ladder_lo[] = {
24437 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24438 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24439 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24440 };
24441
24442 struct nphy_txiqcal_ladder ladder_iq[] = {
24443 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24444 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24445 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24446 };
24447
24448 bbmult = (core == PHY_CORE_0) ?
24449 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24450 (pi->nphy_txcal_bbmult & 0xff);
24451
24452 for (index = 0; index < 18; index++) {
24453 bbmult_scale = ladder_lo[index].percent * bbmult;
24454 bbmult_scale /= 100;
24455
24456 tblentry =
24457 ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24458 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24459 &tblentry);
24460
24461 bbmult_scale = ladder_iq[index].percent * bbmult;
24462 bbmult_scale /= 100;
24463
24464 tblentry =
24465 ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24466 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24467 16, &tblentry);
24468 }
24469}
24470
24471static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24472{
24473 u16 tmp;
24474 tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24475
24476 tmp = (tmp & (0x7f << 8)) >> 8;
24477 return (u8) tmp;
24478}
24479
24480static void
24481wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24482{
24483 mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24484
24485 if (NREV_GT(pi->pubpi.phy_rev, 1))
24486 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24487}
24488
24489static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24490{
24491 u16 m0m1;
24492
24493 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24494
24495 return m0m1;
24496}
24497
24498static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24499{
24500 u16 m0m1 = (u16) ((m0 << 8) | m1);
24501
24502 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24503 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24504}
24505
24506static void
24507wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24508 struct nphy_papd_restore_state *state, u8 core)
24509{
24510 s32 tone_freq;
24511 u8 off_core;
24512 u16 mixgain = 0;
24513
24514 off_core = core ^ 0x1;
24515 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24516
24517 if (NREV_IS(pi->pubpi.phy_rev, 7)
24518 || NREV_GE(pi->pubpi.phy_rev, 8))
24519 wlc_phy_rfctrl_override_nphy_rev7(
24520 pi, (0x1 << 7),
24521 wlc_phy_read_lpf_bw_ctl_nphy
24522 (pi,
24523 0), 0, 0,
24524 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24525
24526 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24527 if (pi->pubpi.radiorev == 5)
24528 mixgain = (core == 0) ? 0x20 : 0x00;
24529 else if ((pi->pubpi.radiorev == 7)
24530 || (pi->pubpi.radiorev == 8))
24531 mixgain = 0x00;
24532 else if ((pi->pubpi.radiorev <= 4)
24533 || (pi->pubpi.radiorev == 6))
24534 mixgain = 0x00;
24535 } else {
24536 if ((pi->pubpi.radiorev == 4) ||
24537 (pi->pubpi.radiorev == 6))
24538 mixgain = 0x50;
24539 else if ((pi->pubpi.radiorev == 3)
24540 || (pi->pubpi.radiorev == 7)
24541 || (pi->pubpi.radiorev == 8))
24542 mixgain = 0x0;
24543 }
24544
24545 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24546 mixgain, (1 << core), 0,
24547 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24548
24549 wlc_phy_rfctrl_override_1tomany_nphy(
24550 pi,
24551 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24552 1, (1 << core), 0);
24553 wlc_phy_rfctrl_override_1tomany_nphy(
24554 pi,
24555 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24556 0, (1 << off_core), 0);
24557
24558 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24559 0, 0x3, 0,
24560 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24561 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24562 (1 << core), 0,
24563 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24564 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24565 (1 << core), 0,
24566 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24567 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24568 (1 << core), 0,
24569 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24570 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24571 (1 << core), 0,
24572 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24573 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24574 (1 << core), 0,
24575 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24576 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24577 (1 << core), 0,
24578 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24579 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24580 (1 << core), 0,
24581 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24582
24583 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24584 0, (1 << core), 0,
24585 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24586 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24587 (1 << core), 0,
24588 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24589
24590 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24591 0xa6 : 0xa7);
24592 state->afeoverride[core] =
24593 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24594 state->afectrl[off_core] =
24595 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24596 state->afeoverride[off_core] =
24597 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24598
24599 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24600 (0x1 << 2), 0);
24601 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24602 0xa5), (0x1 << 2), (0x1 << 2));
24603
24604 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24605 (0x1 << 2), (0x1 << 2));
24606 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24607 0x8f), (0x1 << 2), (0x1 << 2));
24608
24609 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24610 state->pwrup[core] =
24611 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24612 TXRXCOUPLE_2G_PWRUP);
24613 state->atten[core] =
24614 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24615 TXRXCOUPLE_2G_ATTEN);
24616 state->pwrup[off_core] =
24617 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24618 TXRXCOUPLE_2G_PWRUP);
24619 state->atten[off_core] =
24620 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24621 TXRXCOUPLE_2G_ATTEN);
24622
24623 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24624 TXRXCOUPLE_2G_PWRUP, 0xc);
24625
24626 if ((pi->pubpi.radiorev == 3) ||
24627 (pi->pubpi.radiorev == 4) ||
24628 (pi->pubpi.radiorev == 6))
24629 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24630 TXRXCOUPLE_2G_ATTEN, 0xf0);
24631 else if (pi->pubpi.radiorev == 5)
24632 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24633 TXRXCOUPLE_2G_ATTEN,
24634 (core == 0) ? 0xf7 : 0xf2);
24635 else if ((pi->pubpi.radiorev == 7)
24636 || (pi->pubpi.radiorev == 8))
24637 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24638 TXRXCOUPLE_2G_ATTEN, 0xf0);
24639
24640 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24641 TXRXCOUPLE_2G_PWRUP, 0x0);
24642 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24643 TXRXCOUPLE_2G_ATTEN, 0xff);
24644 } else {
24645 state->pwrup[core] =
24646 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24647 TXRXCOUPLE_5G_PWRUP);
24648 state->atten[core] =
24649 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24650 TXRXCOUPLE_5G_ATTEN);
24651 state->pwrup[off_core] =
24652 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24653 TXRXCOUPLE_5G_PWRUP);
24654 state->atten[off_core] =
24655 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24656 TXRXCOUPLE_5G_ATTEN);
24657
24658 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24659 TXRXCOUPLE_5G_PWRUP, 0xc);
24660
24661 if ((pi->pubpi.radiorev == 7)
24662 || (pi->pubpi.radiorev == 8))
24663 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24664 TXRXCOUPLE_5G_ATTEN, 0xf4);
24665
24666 else
24667 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24668 TXRXCOUPLE_5G_ATTEN, 0xf0);
24669
24670 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24671 TXRXCOUPLE_5G_PWRUP, 0x0);
24672 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24673 TXRXCOUPLE_5G_ATTEN, 0xff);
24674 }
24675
24676 tone_freq = 4000;
24677
24678 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24679
24680 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24681 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24682
24683 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24684 0x2a4, (0x1 << 13), (1) << 13);
24685
24686 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24687 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24688
24689 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24690 0x2a4, (0x1 << 13), (0) << 13);
24691
24692 } else {
24693
24694 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24695
24696 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24697
24698 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24699
24700 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24701 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24702
24703 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24704 0xa6 : 0xa7);
24705 state->afeoverride[core] =
24706 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24707
24708 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24709 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24710 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24711 0xa5),
24712 (0x1 << 0) |
24713 (0x1 << 1) |
24714 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24715
24716 state->vga_master[core] =
24717 READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24718 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24719 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24720 state->fbmix[core] =
24721 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24722 TXFBMIX_G);
24723 state->intpa_master[core] =
24724 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24725 INTPAG_MASTER);
24726
24727 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24728 0x03);
24729 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24730 INTPAG_MASTER, 0x04);
24731 } else {
24732 state->fbmix[core] =
24733 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24734 TXFBMIX_A);
24735 state->intpa_master[core] =
24736 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24737 INTPAA_MASTER);
24738
24739 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24740 0x03);
24741 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24742 INTPAA_MASTER, 0x04);
24743
24744 }
24745
24746 tone_freq = 4000;
24747
24748 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24749
24750 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24751 0x29b, (0x1 << 0), (1) << 0);
24752
24753 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24754 0x29b, (0x1 << 0), (0) << 0);
24755
24756 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24757 }
24758}
24759
24760static void
24761wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24762 struct nphy_papd_restore_state *state)
24763{
24764 u8 core;
24765
24766 wlc_phy_stopplayback_nphy(pi);
24767
24768 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24769
24770 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24771
24772 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24773 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24774 TXRXCOUPLE_2G_PWRUP, 0);
24775 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24776 TXRXCOUPLE_2G_ATTEN,
24777 state->atten[core]);
24778 } else {
24779 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24780 TXRXCOUPLE_5G_PWRUP, 0);
24781 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24782 TXRXCOUPLE_5G_ATTEN,
24783 state->atten[core]);
24784 }
24785 }
24786
24787 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24788 wlc_phy_rfctrl_override_nphy_rev7(
24789 pi, (0x1 << 2),
24790 1, 0x3, 0,
24791 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24792 else
24793 wlc_phy_rfctrl_override_nphy_rev7(
24794 pi, (0x1 << 2),
24795 0, 0x3, 1,
24796 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24797
24798 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24799 0, 0x3, 1,
24800 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24801 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24802 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24803 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24804 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24805 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24806 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24807 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24808 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24809 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24810 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24811 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24812 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24813 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24814 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24815 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24816 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24817 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24818 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24819 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24820 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24821 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24822 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24823 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24824 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24825 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24826 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24827 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24828 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24829 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24830 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24831
24832 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24833
24834 write_phy_reg(pi, (core == PHY_CORE_0) ?
24835 0xa6 : 0xa7, state->afectrl[core]);
24836 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24837 0xa5, state->afeoverride[core]);
24838 }
24839
24840 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24841 (state->mm & 0xff));
24842
24843 if (NREV_IS(pi->pubpi.phy_rev, 7)
24844 || NREV_GE(pi->pubpi.phy_rev, 8))
24845 wlc_phy_rfctrl_override_nphy_rev7(
24846 pi, (0x1 << 7), 0, 0,
24847 1,
24848 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24849 } else {
24850 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24851 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24852 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24853
24854 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24855 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24856
24857 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24858
24859 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24860 state->vga_master[core]);
24861 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24862 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24863 TXFBMIX_G, state->fbmix[core]);
24864 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24865 INTPAG_MASTER,
24866 state->intpa_master[core]);
24867 } else {
24868 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24869 TXFBMIX_A, state->fbmix[core]);
24870 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24871 INTPAA_MASTER,
24872 state->intpa_master[core]);
24873 }
24874
24875 write_phy_reg(pi, (core == PHY_CORE_0) ?
24876 0xa6 : 0xa7, state->afectrl[core]);
24877 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24878 0xa5, state->afeoverride[core]);
24879 }
24880
24881 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24882 (state->mm & 0xff));
24883
24884 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24885 }
24886}
24887
24888static void
24889wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24890 u32 end)
24891{
24892 u32 *buf, *src, *dst, sz;
24893
24894 sz = end - start + 1;
24895
24896 buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24897 if (NULL == buf)
24898 return;
24899
24900 src = buf;
24901 dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24902
24903 wlc_phy_table_read_nphy(pi,
24904 (core ==
24905 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24906 NPHY_TBL_ID_EPSILONTBL1),
24907 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24908
24909 do {
24910 u32 phy_a1, phy_a2;
24911 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24912
24913 phy_a1 = end - min(end, (winsz >> 1));
24914 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24915 end + (winsz >> 1));
24916 phy_a3 = phy_a2 - phy_a1 + 1;
24917 phy_a6 = 0;
24918 phy_a7 = 0;
24919
24920 do {
24921 wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24922 &phy_a5);
24923 phy_a6 += phy_a4;
24924 phy_a7 += phy_a5;
24925 } while (phy_a2-- != phy_a1);
24926
24927 phy_a6 /= phy_a3;
24928 phy_a7 /= phy_a3;
24929 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24930 } while (end-- != start);
24931
24932 wlc_phy_table_write_nphy(pi,
24933 (core ==
24934 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24935 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24936
24937 kfree(buf);
24938}
24939
24940static void
24941wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24942 enum phy_cal_mode cal_mode, u8 core)
24943{
24944 u16 phy_a1, phy_a2, phy_a3;
24945 u16 phy_a4, phy_a5;
24946 bool phy_a6;
24947 u8 phy_a7, m[2];
24948 u32 phy_a8 = 0;
24949 struct nphy_txgains phy_a9;
24950
24951 if (NREV_LT(pi->pubpi.phy_rev, 3))
24952 return;
24953
24954 phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24955
24956 phy_a6 = ((cal_mode == CAL_GCTRL)
24957 || (cal_mode == CAL_SOFT)) ? true : false;
24958
24959 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24960
24961 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24962
24963 if (CHSPEC_IS2G(pi->radio_chanspec))
24964 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24965 (phy_a9.txgm[core] << 12) |
24966 (phy_a9.pga[core] << 8) |
24967 (txgains->gains.pad[core] << 3) |
24968 (phy_a9.ipa[core]));
24969 else
24970 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24971 (phy_a9.txgm[core] << 12) |
24972 (txgains->gains.pga[core] << 8) |
24973 (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24974
24975 wlc_phy_rfctrl_override_1tomany_nphy(
24976 pi,
24977 NPHY_REV7_RfctrlOverride_cmd_txgain,
24978 phy_a5, (1 << core), 0);
24979
24980 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24981 if ((pi->pubpi.radiorev <= 4)
24982 || (pi->pubpi.radiorev == 6))
24983 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24984 60 : 79;
24985 else
24986 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24987 45 : 64;
24988 } else {
24989 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24990 }
24991
24992 m[phy_a7] = 0;
24993 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24994
24995 phy_a2 = 63;
24996
24997 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24998 if ((pi->pubpi.radiorev == 4)
24999 || (pi->pubpi.radiorev == 6)) {
25000 phy_a1 = 30;
25001 phy_a3 = 30;
25002 } else {
25003 phy_a1 = 25;
25004 phy_a3 = 25;
25005 }
25006 } else {
25007 if ((pi->pubpi.radiorev == 5)
25008 || (pi->pubpi.radiorev == 7)
25009 || (pi->pubpi.radiorev == 8)) {
25010 phy_a1 = 25;
25011 phy_a3 = 25;
25012 } else {
25013 phy_a1 = 35;
25014 phy_a3 = 35;
25015 }
25016 }
25017
25018 if (cal_mode == CAL_GCTRL) {
25019 if ((pi->pubpi.radiorev == 5)
25020 && (CHSPEC_IS2G(pi->radio_chanspec)))
25021 phy_a1 = 55;
25022 else if (((pi->pubpi.radiorev == 7) &&
25023 (CHSPEC_IS2G(pi->radio_chanspec))) ||
25024 ((pi->pubpi.radiorev == 8) &&
25025 (CHSPEC_IS2G(pi->radio_chanspec))))
25026 phy_a1 = 60;
25027 else
25028 phy_a1 = 63;
25029
25030 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
25031
25032 phy_a1 = 35;
25033 phy_a3 = 35;
25034 }
25035
25036 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25037 0x29b, (0x1 << 0), (1) << 0);
25038
25039 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25040 0x29b, (0x1 << 0), (0) << 0);
25041
25042 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25043 0x2a4, (0x1 << 13), (1) << 13);
25044
25045 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25046 0x2a4, (0x1 << 13), (0) << 13);
25047
25048 write_phy_reg(pi, 0x2a1, 0x80);
25049 write_phy_reg(pi, 0x2a2, 0x100);
25050
25051 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25052 0x2a4, (0x7 << 4), (11) << 4);
25053
25054 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25055 0x2a4, (0x7 << 8), (11) << 8);
25056
25057 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25058 0x2a4, (0x7 << 0), (0x3) << 0);
25059
25060 write_phy_reg(pi, 0x2e5, 0x20);
25061
25062 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25063
25064 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25065
25066 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25067
25068 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25069 1, ((core == 0) ? 1 : 2), 0,
25070 NPHY_REV7_RFCTRLOVERRIDE_ID0);
25071 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25072 0, ((core == 0) ? 2 : 1), 0,
25073 NPHY_REV7_RFCTRLOVERRIDE_ID0);
25074
25075 write_phy_reg(pi, 0x2be, 1);
25076 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25077
25078 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25079 0, 0x3, 0,
25080 NPHY_REV7_RFCTRLOVERRIDE_ID0);
25081
25082 wlc_phy_table_write_nphy(pi,
25083 (core ==
25084 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25085 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25086 32, &phy_a8);
25087
25088 if (cal_mode != CAL_GCTRL) {
25089 if (CHSPEC_IS5G(pi->radio_chanspec))
25090 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
25091 }
25092
25093 wlc_phy_rfctrl_override_1tomany_nphy(
25094 pi,
25095 NPHY_REV7_RfctrlOverride_cmd_txgain,
25096 phy_a5, (1 << core), 1);
25097
25098 } else {
25099
25100 if (txgains) {
25101 if (txgains->useindex) {
25102 phy_a4 = 15 - ((txgains->index) >> 3);
25103 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25104 if (NREV_GE(pi->pubpi.phy_rev, 6))
25105 phy_a5 = 0x00f7 | (phy_a4 << 8);
25106
25107 else
25108 if (NREV_IS(pi->pubpi.phy_rev, 5))
25109 phy_a5 = 0x10f7 | (phy_a4 << 8);
25110 else
25111 phy_a5 = 0x50f7 | (phy_a4 << 8);
25112 } else {
25113 phy_a5 = 0x70f7 | (phy_a4 << 8);
25114 }
25115 wlc_phy_rfctrl_override_nphy(pi,
25116 (0x1 << 13),
25117 phy_a5,
25118 (1 << core), 0);
25119 } else {
25120 wlc_phy_rfctrl_override_nphy(pi,
25121 (0x1 << 13),
25122 0x5bf7,
25123 (1 << core), 0);
25124 }
25125 }
25126
25127 if (CHSPEC_IS2G(pi->radio_chanspec))
25128 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
25129 else
25130 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25131
25132 m[phy_a7] = 0;
25133 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25134
25135 phy_a2 = 63;
25136
25137 if (cal_mode == CAL_FULL) {
25138 phy_a1 = 25;
25139 phy_a3 = 25;
25140 } else if (cal_mode == CAL_SOFT) {
25141 phy_a1 = 25;
25142 phy_a3 = 25;
25143 } else if (cal_mode == CAL_GCTRL) {
25144 phy_a1 = 63;
25145 phy_a3 = 25;
25146 } else {
25147
25148 phy_a1 = 25;
25149 phy_a3 = 25;
25150 }
25151
25152 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25153 0x29b, (0x1 << 0), (1) << 0);
25154
25155 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25156 0x29b, (0x1 << 0), (0) << 0);
25157
25158 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25159 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25160 0x2a4, (0x1 << 13), (1) << 13);
25161
25162 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25163 0x2a4, (0x1 << 13), (0) << 13);
25164
25165 write_phy_reg(pi, 0x2a1, 0x20);
25166 write_phy_reg(pi, 0x2a2, 0x60);
25167
25168 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25169 0x2a4, (0xf << 4), (9) << 4);
25170
25171 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25172 0x2a4, (0xf << 8), (9) << 8);
25173
25174 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25175 0x2a4, (0xf << 0), (0x2) << 0);
25176
25177 write_phy_reg(pi, 0x2e5, 0x20);
25178 } else {
25179 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25180 0x2a4, (0x1 << 11), (1) << 11);
25181
25182 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25183 0x2a4, (0x1 << 11), (0) << 11);
25184
25185 write_phy_reg(pi, 0x2a1, 0x80);
25186 write_phy_reg(pi, 0x2a2, 0x600);
25187
25188 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25189 0x2a4, (0x7 << 4), (0) << 4);
25190
25191 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25192 0x2a4, (0x7 << 8), (0) << 8);
25193
25194 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25195 0x2a4, (0x7 << 0), (0x3) << 0);
25196
25197 mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25198
25199 }
25200
25201 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25202
25203 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25204
25205 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25206
25207 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25208
25209 write_phy_reg(pi, 0x2be, 1);
25210 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25211
25212 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25213
25214 wlc_phy_table_write_nphy(pi,
25215 (core ==
25216 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25217 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25218 32, &phy_a8);
25219
25220 if (cal_mode != CAL_GCTRL)
25221 wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25222 }
25223}
25224
25225static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25226{
25227 int phy_a1;
25228 int phy_a2;
25229 bool phy_a3;
25230 struct nphy_ipa_txcalgains phy_a4;
25231 bool phy_a5 = false;
25232 bool phy_a6 = true;
25233 s32 phy_a7, phy_a8;
25234 u32 phy_a9;
25235 int phy_a10;
25236 bool phy_a11 = false;
25237 int phy_a12;
25238 u8 phy_a13 = 0;
25239 u8 phy_a14;
25240 u8 *phy_a15 = NULL;
25241
25242 phy_a4.useindex = true;
25243 phy_a12 = start_gain;
25244
25245 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25246
25247 phy_a2 = 20;
25248 phy_a1 = 1;
25249
25250 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25251 if (pi->pubpi.radiorev == 5) {
25252
25253 phy_a15 = pad_gain_codes_used_2057rev5;
25254 phy_a13 =
25255 sizeof(pad_gain_codes_used_2057rev5) /
25256 sizeof(pad_gain_codes_used_2057rev5
25257 [0]) - 1;
25258
25259 } else if ((pi->pubpi.radiorev == 7)
25260 || (pi->pubpi.radiorev == 8)) {
25261
25262 phy_a15 = pad_gain_codes_used_2057rev7;
25263 phy_a13 =
25264 sizeof(pad_gain_codes_used_2057rev7) /
25265 sizeof(pad_gain_codes_used_2057rev7
25266 [0]) - 1;
25267
25268 } else {
25269
25270 phy_a15 = pad_all_gain_codes_2057;
25271 phy_a13 = sizeof(pad_all_gain_codes_2057) /
25272 sizeof(pad_all_gain_codes_2057[0]) -
25273 1;
25274 }
25275
25276 } else {
25277
25278 phy_a15 = pga_all_gain_codes_2057;
25279 phy_a13 = sizeof(pga_all_gain_codes_2057) /
25280 sizeof(pga_all_gain_codes_2057[0]) - 1;
25281 }
25282
25283 phy_a14 = 0;
25284
25285 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25286 if (CHSPEC_IS2G(pi->radio_chanspec))
25287 phy_a4.gains.pad[core] =
25288 (u16) phy_a15[phy_a12];
25289 else
25290 phy_a4.gains.pga[core] =
25291 (u16) phy_a15[phy_a12];
25292
25293 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25294
25295 wlc_phy_table_read_nphy(pi,
25296 (core ==
25297 PHY_CORE_0 ?
25298 NPHY_TBL_ID_EPSILONTBL0 :
25299 NPHY_TBL_ID_EPSILONTBL1), 1,
25300 63, 32, &phy_a9);
25301
25302 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25303
25304 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25305 (phy_a8 == 4095) || (phy_a8 == -4096));
25306
25307 if (!phy_a6 && (phy_a3 != phy_a5)) {
25308 if (!phy_a3)
25309 phy_a12 -= (u8) phy_a1;
25310
25311 phy_a11 = true;
25312 break;
25313 }
25314
25315 if (phy_a3)
25316 phy_a12 += (u8) phy_a1;
25317 else
25318 phy_a12 -= (u8) phy_a1;
25319
25320 if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25321 if (phy_a12 < phy_a14)
25322 phy_a12 = phy_a14;
25323 else
25324 phy_a12 = phy_a13;
25325
25326 phy_a11 = true;
25327 break;
25328 }
25329
25330 phy_a6 = false;
25331 phy_a5 = phy_a3;
25332 }
25333
25334 } else {
25335 phy_a2 = 10;
25336 phy_a1 = 8;
25337 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25338 phy_a4.index = (u8) phy_a12;
25339 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25340
25341 wlc_phy_table_read_nphy(pi,
25342 (core ==
25343 PHY_CORE_0 ?
25344 NPHY_TBL_ID_EPSILONTBL0 :
25345 NPHY_TBL_ID_EPSILONTBL1), 1,
25346 63, 32, &phy_a9);
25347
25348 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25349
25350 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25351 (phy_a8 == 4095) || (phy_a8 == -4096));
25352
25353 if (!phy_a6 && (phy_a3 != phy_a5)) {
25354 if (!phy_a3)
25355 phy_a12 -= (u8) phy_a1;
25356
25357 phy_a11 = true;
25358 break;
25359 }
25360
25361 if (phy_a3)
25362 phy_a12 += (u8) phy_a1;
25363 else
25364 phy_a12 -= (u8) phy_a1;
25365
25366 if ((phy_a12 < 0) || (phy_a12 > 127)) {
25367 if (phy_a12 < 0)
25368 phy_a12 = 0;
25369 else
25370 phy_a12 = 127;
25371
25372 phy_a11 = true;
25373 break;
25374 }
25375
25376 phy_a6 = false;
25377 phy_a5 = phy_a3;
25378 }
25379
25380 }
25381
25382 if (NREV_GE(pi->pubpi.phy_rev, 7))
25383 return (u8) phy_a15[phy_a12];
25384 else
25385 return (u8) phy_a12;
25386
25387}
25388
25389static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25390{
25391 struct nphy_ipa_txcalgains phy_b1[2];
25392 struct nphy_papd_restore_state phy_b2;
25393 bool phy_b3;
25394 u8 phy_b4;
25395 u8 phy_b5;
25396 s16 phy_b6, phy_b7, phy_b8;
25397 u16 phy_b9;
25398 s16 phy_b10, phy_b11, phy_b12;
25399
25400 phy_b11 = 0;
25401 phy_b12 = 0;
25402 phy_b7 = 0;
25403 phy_b8 = 0;
25404 phy_b6 = 0;
25405
25406 if (pi->nphy_papd_skip == 1)
25407 return;
25408
25409 phy_b3 = (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
25410 if (!phy_b3)
25411 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25412
25413 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25414
25415 pi->nphy_force_papd_cal = false;
25416
25417 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25418 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25419 wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25420
25421 pi->nphy_papd_last_cal = pi->sh->now;
25422 pi->nphy_papd_recal_counter++;
25423
25424 phy_b4 = pi->nphy_txpwrctrl;
25425 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25426
25427 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25428 nphy_papd_scaltbl);
25429 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25430 nphy_papd_scaltbl);
25431
25432 phy_b9 = read_phy_reg(pi, 0x01);
25433 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25434
25435 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25436 s32 i, val = 0;
25437 for (i = 0; i < 64; i++)
25438 wlc_phy_table_write_nphy(pi,
25439 ((phy_b5 ==
25440 PHY_CORE_0) ?
25441 NPHY_TBL_ID_EPSILONTBL0 :
25442 NPHY_TBL_ID_EPSILONTBL1), 1,
25443 i, 32, &val);
25444 }
25445
25446 wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25447
25448 phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25449 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25450 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25451
25452 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25453 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25454 if ((pi->pubpi.radiorev == 3)
25455 || (pi->pubpi.radiorev == 4)
25456 || (pi->pubpi.radiorev == 6)) {
25457 pi->nphy_papd_cal_gain_index[phy_b5] =
25458 23;
25459 } else if (pi->pubpi.radiorev == 5) {
25460 pi->nphy_papd_cal_gain_index[phy_b5] =
25461 0;
25462 pi->nphy_papd_cal_gain_index[phy_b5] =
25463 wlc_phy_a3_nphy(
25464 pi,
25465 pi->
25466 nphy_papd_cal_gain_index
25467 [phy_b5],
25468 phy_b5);
25469
25470 } else if ((pi->pubpi.radiorev == 7)
25471 || (pi->pubpi.radiorev == 8)) {
25472
25473 pi->nphy_papd_cal_gain_index[phy_b5] =
25474 0;
25475 pi->nphy_papd_cal_gain_index[phy_b5] =
25476 wlc_phy_a3_nphy(
25477 pi,
25478 pi->
25479 nphy_papd_cal_gain_index
25480 [phy_b5],
25481 phy_b5);
25482
25483 }
25484
25485 phy_b1[phy_b5].gains.pad[phy_b5] =
25486 pi->nphy_papd_cal_gain_index[phy_b5];
25487
25488 } else {
25489 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25490 pi->nphy_papd_cal_gain_index[phy_b5] =
25491 wlc_phy_a3_nphy(
25492 pi,
25493 pi->
25494 nphy_papd_cal_gain_index
25495 [phy_b5], phy_b5);
25496 phy_b1[phy_b5].gains.pga[phy_b5] =
25497 pi->nphy_papd_cal_gain_index[phy_b5];
25498 }
25499 } else {
25500 phy_b1[phy_b5].useindex = true;
25501 phy_b1[phy_b5].index = 16;
25502 phy_b1[phy_b5].index =
25503 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25504 phy_b5);
25505
25506 pi->nphy_papd_cal_gain_index[phy_b5] =
25507 15 - ((phy_b1[phy_b5].index) >> 3);
25508 }
25509
25510 switch (pi->nphy_papd_cal_type) {
25511 case 0:
25512 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25513 break;
25514 case 1:
25515 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25516 break;
25517 }
25518
25519 if (NREV_GE(pi->pubpi.phy_rev, 7))
25520 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25521 }
25522
25523 if (NREV_LT(pi->pubpi.phy_rev, 7))
25524 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25525
25526 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25527 int eps_offset = 0;
25528
25529 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25530 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25531 if (pi->pubpi.radiorev == 3)
25532 eps_offset = -2;
25533 else if (pi->pubpi.radiorev == 5)
25534 eps_offset = 3;
25535 else
25536 eps_offset = -1;
25537 } else {
25538 eps_offset = 2;
25539 }
25540
25541 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25542 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25543 phy_b10 = 0;
25544 if ((pi->pubpi.radiorev == 3) ||
25545 (pi->pubpi.radiorev == 4) ||
25546 (pi->pubpi.radiorev == 6)) {
25547 phy_b12 = -(
25548 nphy_papd_padgain_dlt_2g_2057rev3n4
25549 [phy_b8] + 1) / 2;
25550 phy_b10 = -1;
25551 } else if (pi->pubpi.radiorev == 5) {
25552 phy_b12 = -(
25553 nphy_papd_padgain_dlt_2g_2057rev5
25554 [phy_b8] + 1) / 2;
25555 } else if ((pi->pubpi.radiorev == 7) ||
25556 (pi->pubpi.radiorev == 8)) {
25557 phy_b12 = -(
25558 nphy_papd_padgain_dlt_2g_2057rev7
25559 [phy_b8] + 1) / 2;
25560 }
25561 } else {
25562 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25563 if ((pi->pubpi.radiorev == 3) ||
25564 (pi->pubpi.radiorev == 4) ||
25565 (pi->pubpi.radiorev == 6))
25566 phy_b11 =
25567 -(nphy_papd_pgagain_dlt_5g_2057
25568 [phy_b7]
25569 + 1) / 2;
25570 else if ((pi->pubpi.radiorev == 7)
25571 || (pi->pubpi.radiorev == 8))
25572 phy_b11 = -(
25573 nphy_papd_pgagain_dlt_5g_2057rev7
25574 [phy_b7] + 1) / 2;
25575
25576 phy_b10 = -9;
25577 }
25578
25579 if (CHSPEC_IS2G(pi->radio_chanspec))
25580 phy_b6 =
25581 -60 + 27 + eps_offset + phy_b12 +
25582 phy_b10;
25583 else
25584 phy_b6 =
25585 -60 + 27 + eps_offset + phy_b11 +
25586 phy_b10;
25587
25588 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25589 0x29c, (0x1ff << 7), (phy_b6) << 7);
25590
25591 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25592 } else {
25593 if (NREV_LT(pi->pubpi.phy_rev, 5))
25594 eps_offset = 4;
25595 else
25596 eps_offset = 2;
25597
25598 phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25599
25600 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25601 phy_b11 =
25602 -(nphy_papd_pga_gain_delta_ipa_2g[
25603 phy_b7] +
25604 1) / 2;
25605 phy_b10 = 0;
25606 } else {
25607 phy_b11 =
25608 -(nphy_papd_pga_gain_delta_ipa_5g[
25609 phy_b7] +
25610 1) / 2;
25611 phy_b10 = -9;
25612 }
25613
25614 phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25615
25616 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25617 0x29c, (0x1ff << 7), (phy_b6) << 7);
25618
25619 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25620 }
25621 }
25622
25623 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25624 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25625
25626 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25627 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25628
25629 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25630 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25631 0x2a4, (0x1 << 13), (0) << 13);
25632
25633 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25634 0x2a4, (0x1 << 13), (0) << 13);
25635
25636 } else {
25637 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25638 0x2a4, (0x1 << 11), (0) << 11);
25639
25640 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25641 0x2a4, (0x1 << 11), (0) << 11);
25642
25643 }
25644 pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25645
25646 write_phy_reg(pi, 0x01, phy_b9);
25647
25648 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25649
25650 wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25651 if (phy_b4 == PHY_TPC_HW_OFF) {
25652 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25653 (s8) (pi->nphy_txpwrindex[0].
25654 index_internal), false);
25655 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25656 (s8) (pi->nphy_txpwrindex[1].
25657 index_internal), false);
25658 }
25659
25660 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25661
25662 if (!phy_b3)
25663 wlapi_enable_mac(pi->sh->physhim);
25664}
25665
25666void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25667{
25668 struct nphy_txgains target_gain;
25669 u8 tx_pwr_ctrl_state;
25670 bool fullcal = true;
25671 bool restore_tx_gain = false;
25672 bool mphase;
25673
25674 if (PHY_MUTED(pi))
25675 return;
25676
25677 if (caltype == PHY_PERICAL_AUTO)
25678 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25679 else if (caltype == PHY_PERICAL_PARTIAL)
25680 fullcal = false;
25681
25682 if (pi->cal_type_override != PHY_PERICAL_AUTO)
25683 fullcal =
25684 (pi->cal_type_override ==
25685 PHY_PERICAL_FULL) ? true : false;
25686
25687 if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25688 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25689 wlc_phy_cal_perical_mphase_restart(pi);
25690 }
25691
25692 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25693 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25694
25695 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25696
25697 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25698
25699 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25700 (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25701 pi->nphy_cal_orig_pwr_idx[0] =
25702 (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25703 pi->nphy_cal_orig_pwr_idx[1] =
25704 (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25705
25706 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25707 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25708 0x110, 16,
25709 pi->nphy_cal_orig_tx_gain);
25710 } else {
25711 pi->nphy_cal_orig_tx_gain[0] = 0;
25712 pi->nphy_cal_orig_tx_gain[1] = 0;
25713 }
25714 }
25715 target_gain = wlc_phy_get_tx_gain_nphy(pi);
25716 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25717 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25718
25719 if (pi->antsel_type == ANTSEL_2x3)
25720 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25721
25722 mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25723 if (!mphase) {
25724
25725 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25726 wlc_phy_precal_txgain_nphy(pi);
25727 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25728 restore_tx_gain = true;
25729
25730 target_gain = pi->nphy_cal_target_gain;
25731 }
25732 if (0 ==
25733 wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25734 mphase)) {
25735 if (PHY_IPA(pi))
25736 wlc_phy_a4(pi, true);
25737
25738 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25739 wlapi_enable_mac(pi->sh->physhim);
25740 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25741 10000);
25742 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25743 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25744
25745 if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25746 (pi->first_cal_after_assoc ||
25747 (pi->cal_type_override ==
25748 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25749 wlc_phy_savecal_nphy(pi);
25750
25751 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25752
25753 pi->nphy_perical_last = pi->sh->now;
25754 }
25755 }
25756 if (caltype != PHY_PERICAL_AUTO)
25757 wlc_phy_rssi_cal_nphy(pi);
25758
25759 if (pi->first_cal_after_assoc
25760 || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25761 pi->first_cal_after_assoc = false;
25762 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25763 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25764 }
25765
25766 if (NREV_GE(pi->pubpi.phy_rev, 3))
25767 wlc_phy_radio205x_vcocal_nphy(pi);
25768 } else {
25769 switch (pi->mphase_cal_phase_id) {
25770 case MPHASE_CAL_STATE_INIT:
25771 pi->nphy_perical_last = pi->sh->now;
25772 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25773
25774 if (NREV_GE(pi->pubpi.phy_rev, 3))
25775 wlc_phy_precal_txgain_nphy(pi);
25776
25777 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25778 pi->mphase_cal_phase_id++;
25779 break;
25780
25781 case MPHASE_CAL_STATE_TXPHASE0:
25782 case MPHASE_CAL_STATE_TXPHASE1:
25783 case MPHASE_CAL_STATE_TXPHASE2:
25784 case MPHASE_CAL_STATE_TXPHASE3:
25785 case MPHASE_CAL_STATE_TXPHASE4:
25786 case MPHASE_CAL_STATE_TXPHASE5:
25787 if ((pi->radar_percal_mask & 0x10) != 0)
25788 pi->nphy_rxcal_active = true;
25789
25790 if (wlc_phy_cal_txiqlo_nphy
25791 (pi, pi->nphy_cal_target_gain, fullcal,
25792 true) != 0) {
25793
25794 wlc_phy_cal_perical_mphase_reset(pi);
25795 break;
25796 }
25797
25798 if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25799 (pi->mphase_cal_phase_id ==
25800 MPHASE_CAL_STATE_TXPHASE4))
25801 pi->mphase_cal_phase_id += 2;
25802 else
25803 pi->mphase_cal_phase_id++;
25804 break;
25805
25806 case MPHASE_CAL_STATE_PAPDCAL:
25807 if ((pi->radar_percal_mask & 0x2) != 0)
25808 pi->nphy_rxcal_active = true;
25809
25810 if (PHY_IPA(pi))
25811 wlc_phy_a4(pi, true);
25812
25813 pi->mphase_cal_phase_id++;
25814 break;
25815
25816 case MPHASE_CAL_STATE_RXCAL:
25817 if ((pi->radar_percal_mask & 0x1) != 0)
25818 pi->nphy_rxcal_active = true;
25819 if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25820 (pi->first_cal_after_assoc ||
25821 (pi->cal_type_override ==
25822 PHY_PERICAL_FULL)) ? 2 : 0,
25823 false) == 0)
25824 wlc_phy_savecal_nphy(pi);
25825
25826 pi->mphase_cal_phase_id++;
25827 break;
25828
25829 case MPHASE_CAL_STATE_RSSICAL:
25830 if ((pi->radar_percal_mask & 0x4) != 0)
25831 pi->nphy_rxcal_active = true;
25832 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25833 wlc_phy_rssi_cal_nphy(pi);
25834
25835 if (NREV_GE(pi->pubpi.phy_rev, 3))
25836 wlc_phy_radio205x_vcocal_nphy(pi);
25837
25838 restore_tx_gain = true;
25839
25840 if (pi->first_cal_after_assoc)
25841 pi->mphase_cal_phase_id++;
25842 else
25843 wlc_phy_cal_perical_mphase_reset(pi);
25844
25845 break;
25846
25847 case MPHASE_CAL_STATE_IDLETSSI:
25848 if ((pi->radar_percal_mask & 0x8) != 0)
25849 pi->nphy_rxcal_active = true;
25850
25851 if (pi->first_cal_after_assoc) {
25852 pi->first_cal_after_assoc = false;
25853 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25854 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25855 }
25856
25857 wlc_phy_cal_perical_mphase_reset(pi);
25858 break;
25859
25860 default:
25861 wlc_phy_cal_perical_mphase_reset(pi);
25862 break;
25863 }
25864 }
25865
25866 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25867 if (restore_tx_gain) {
25868 if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25869
25870 wlc_phy_txpwr_index_nphy(pi, 1,
25871 pi->
25872 nphy_cal_orig_pwr_idx
25873 [0], false);
25874 wlc_phy_txpwr_index_nphy(pi, 2,
25875 pi->
25876 nphy_cal_orig_pwr_idx
25877 [1], false);
25878
25879 pi->nphy_txpwrindex[0].index = -1;
25880 pi->nphy_txpwrindex[1].index = -1;
25881 } else {
25882 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25883 (s8) (pi->
25884 nphy_txpwrindex
25885 [0].
25886 index_internal),
25887 false);
25888 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25889 (s8) (pi->
25890 nphy_txpwrindex
25891 [1].
25892 index_internal),
25893 false);
25894 }
25895 }
25896 }
25897
25898 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25899 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25900 wlapi_enable_mac(pi->sh->physhim);
25901}
25902
25903int
25904wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25905 bool fullcal, bool mphase)
25906{
25907 u16 val;
25908 u16 tbl_buf[11];
25909 u8 cal_cnt;
25910 u16 cal_cmd;
25911 u8 num_cals, max_cal_cmds;
25912 u16 core_no, cal_type;
25913 u16 diq_start = 0;
25914 u8 phy_bw;
25915 u16 max_val;
25916 u16 tone_freq;
25917 u16 gain_save[2];
25918 u16 cal_gain[2];
25919 struct nphy_iqcal_params cal_params[2];
25920 u32 tbl_len;
25921 void *tbl_ptr;
25922 bool ladder_updated[2];
25923 u8 mphase_cal_lastphase = 0;
25924 int bcmerror = 0;
25925 bool phyhang_avoid_state = false;
25926
25927 u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25928 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25929 0x1902,
25930 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25931 0x6407
25932 };
25933
25934 u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25935 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25936 0x3200,
25937 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25938 0x6407
25939 };
25940
25941 u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25942 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25943 0x1202,
25944 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25945 0x4707
25946 };
25947
25948 u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25949 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25950 0x2300,
25951 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25952 0x4707
25953 };
25954
25955 u16 tbl_tx_iqlo_cal_startcoefs[] = {
25956 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25957 0x0000
25958 };
25959
25960 u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25961 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25962 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25963 };
25964
25965 u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25966 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25967 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25968 };
25969
25970 u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25971 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25972 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25973 0x0000
25974 };
25975
25976 u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25977 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25978 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25979 };
25980
25981 u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25982 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25983 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25984 };
25985
25986 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25987
25988 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25989 phyhang_avoid_state = pi->phyhang_avoid;
25990 pi->phyhang_avoid = false;
25991 }
25992
25993 if (CHSPEC_IS40(pi->radio_chanspec))
25994 phy_bw = 40;
25995 else
25996 phy_bw = 20;
25997
25998 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25999
26000 for (core_no = 0; core_no <= 1; core_no++) {
26001 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
26002 &cal_params[core_no]);
26003 cal_gain[core_no] = cal_params[core_no].cal_gain;
26004 }
26005
26006 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
26007
26008 wlc_phy_txcal_radio_setup_nphy(pi);
26009
26010 wlc_phy_txcal_physetup_nphy(pi);
26011
26012 ladder_updated[0] = ladder_updated[1] = false;
26013 if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
26014 (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
26015 && (CHSPEC_IS2G(pi->radio_chanspec))))) {
26016
26017 if (phy_bw == 40) {
26018 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
26019 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
26020 } else {
26021 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
26022 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
26023 }
26024 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
26025 16, tbl_ptr);
26026
26027 if (phy_bw == 40) {
26028 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
26029 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
26030 } else {
26031 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
26032 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
26033 }
26034 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
26035 16, tbl_ptr);
26036 }
26037
26038 if (NREV_GE(pi->pubpi.phy_rev, 7))
26039 write_phy_reg(pi, 0xc2, 0x8ad9);
26040 else
26041 write_phy_reg(pi, 0xc2, 0x8aa9);
26042
26043 max_val = 250;
26044 tone_freq = (phy_bw == 20) ? 2500 : 5000;
26045
26046 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26047 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
26048 bcmerror = 0;
26049 } else {
26050 bcmerror =
26051 wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
26052 false);
26053 }
26054
26055 if (bcmerror == 0) {
26056
26057 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
26058 tbl_ptr = pi->mphase_txcal_bestcoeffs;
26059 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26060 if (NREV_LT(pi->pubpi.phy_rev, 3))
26061 tbl_len -= 2;
26062 } else {
26063 if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
26064
26065 tbl_ptr = pi->nphy_txiqlocal_bestc;
26066 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26067 if (NREV_LT(pi->pubpi.phy_rev, 3))
26068 tbl_len -= 2;
26069 } else {
26070
26071 fullcal = true;
26072
26073 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26074 tbl_ptr =
26075 tbl_tx_iqlo_cal_startcoefs_nphyrev3;
26076 tbl_len = ARRAY_SIZE(
26077 tbl_tx_iqlo_cal_startcoefs_nphyrev3);
26078 } else {
26079 tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
26080 tbl_len = ARRAY_SIZE(
26081 tbl_tx_iqlo_cal_startcoefs);
26082 }
26083 }
26084 }
26085 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
26086 16, tbl_ptr);
26087
26088 if (fullcal) {
26089 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26090 ARRAY_SIZE(
26091 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
26092 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
26093 } else {
26094 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26095 ARRAY_SIZE(
26096 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
26097 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
26098 }
26099
26100 if (mphase) {
26101 cal_cnt = pi->mphase_txcal_cmdidx;
26102 if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
26103 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
26104 else
26105 num_cals = max_cal_cmds;
26106 } else {
26107 cal_cnt = 0;
26108 num_cals = max_cal_cmds;
26109 }
26110
26111 for (; cal_cnt < num_cals; cal_cnt++) {
26112
26113 if (fullcal) {
26114 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26115 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
26116 [cal_cnt] :
26117 tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
26118 } else {
26119 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26120 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
26121 cal_cnt]
26122 : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
26123 }
26124
26125 core_no = ((cal_cmd & 0x3000) >> 12);
26126 cal_type = ((cal_cmd & 0x0F00) >> 8);
26127
26128 if (NREV_GE(pi->pubpi.phy_rev, 6) ||
26129 (NREV_IS(pi->pubpi.phy_rev, 5) &&
26130 PHY_IPA(pi)
26131 && (CHSPEC_IS2G(pi->radio_chanspec)))) {
26132 if (!ladder_updated[core_no]) {
26133 wlc_phy_update_txcal_ladder_nphy(
26134 pi,
26135 core_no);
26136 ladder_updated[core_no] = true;
26137 }
26138 }
26139
26140 val =
26141 (cal_params[core_no].
26142 ncorr[cal_type] << 8) | NPHY_N_GCTL;
26143 write_phy_reg(pi, 0xc1, val);
26144
26145 if ((cal_type == 1) || (cal_type == 3)
26146 || (cal_type == 4)) {
26147
26148 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26149 1, 69 + core_no, 16,
26150 tbl_buf);
26151
26152 diq_start = tbl_buf[0];
26153
26154 tbl_buf[0] = 0;
26155 wlc_phy_table_write_nphy(pi,
26156 NPHY_TBL_ID_IQLOCAL, 1,
26157 69 + core_no, 16,
26158 tbl_buf);
26159 }
26160
26161 write_phy_reg(pi, 0xc0, cal_cmd);
26162
26163 SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26164 20000);
26165 if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26166 "HW error: txiq calib"))
26167 return -EIO;
26168
26169 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26170 tbl_len, 96, 16, tbl_buf);
26171 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26172 tbl_len, 64, 16, tbl_buf);
26173
26174 if ((cal_type == 1) || (cal_type == 3)
26175 || (cal_type == 4)) {
26176
26177 tbl_buf[0] = diq_start;
26178
26179 }
26180
26181 }
26182
26183 if (mphase) {
26184 pi->mphase_txcal_cmdidx = num_cals;
26185 if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26186 pi->mphase_txcal_cmdidx = 0;
26187 }
26188
26189 mphase_cal_lastphase =
26190 (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26191 MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26192
26193 if (!mphase
26194 || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26195
26196 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26197 16, tbl_buf);
26198 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26199 16, tbl_buf);
26200
26201 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26202
26203 tbl_buf[0] = 0;
26204 tbl_buf[1] = 0;
26205 tbl_buf[2] = 0;
26206 tbl_buf[3] = 0;
26207
26208 }
26209 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26210 16, tbl_buf);
26211
26212 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26213 16, tbl_buf);
26214 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26215 16, tbl_buf);
26216
26217 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26218 16, tbl_buf);
26219
26220 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26221 if (NREV_LT(pi->pubpi.phy_rev, 3))
26222 tbl_len -= 2;
26223
26224 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26225 tbl_len, 96, 16,
26226 pi->nphy_txiqlocal_bestc);
26227
26228 pi->nphy_txiqlocal_coeffsvalid = true;
26229 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26230 } else {
26231 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26232 if (NREV_LT(pi->pubpi.phy_rev, 3))
26233 tbl_len -= 2;
26234
26235 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26236 tbl_len, 96, 16,
26237 pi->mphase_txcal_bestcoeffs);
26238 }
26239
26240 wlc_phy_stopplayback_nphy(pi);
26241
26242 write_phy_reg(pi, 0xc2, 0x0000);
26243
26244 }
26245
26246 wlc_phy_txcal_phycleanup_nphy(pi);
26247
26248 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26249 gain_save);
26250
26251 wlc_phy_txcal_radio_cleanup_nphy(pi);
26252
26253 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26254 if (!mphase
26255 || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26256 wlc_phy_tx_iq_war_nphy(pi);
26257 }
26258
26259 if (NREV_GE(pi->pubpi.phy_rev, 4))
26260 pi->phyhang_avoid = phyhang_avoid_state;
26261
26262 wlc_phy_stay_in_carriersearch_nphy(pi, false);
26263
26264 return bcmerror;
26265}
26266
26267static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26268{
26269 u16 tbl_buf[7];
26270
26271 if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26272 (pi->nphy_txiqlocal_coeffsvalid)) {
26273 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26274 ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26275
26276 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26277 (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26278 (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26279 (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26280
26281 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26282 16, pi->nphy_txiqlocal_bestc);
26283
26284 tbl_buf[0] = 0;
26285 tbl_buf[1] = 0;
26286 tbl_buf[2] = 0;
26287 tbl_buf[3] = 0;
26288 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26289 16, tbl_buf);
26290
26291 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26292 16,
26293 &pi->nphy_txiqlocal_bestc[5]);
26294
26295 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26296 16,
26297 &pi->nphy_txiqlocal_bestc[5]);
26298 }
26299 }
26300}
26301
26302void
26303wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26304 struct nphy_iq_comp *pcomp)
26305{
26306 if (write) {
26307 write_phy_reg(pi, 0x9a, pcomp->a0);
26308 write_phy_reg(pi, 0x9b, pcomp->b0);
26309 write_phy_reg(pi, 0x9c, pcomp->a1);
26310 write_phy_reg(pi, 0x9d, pcomp->b1);
26311 } else {
26312 pcomp->a0 = read_phy_reg(pi, 0x9a);
26313 pcomp->b0 = read_phy_reg(pi, 0x9b);
26314 pcomp->a1 = read_phy_reg(pi, 0x9c);
26315 pcomp->b1 = read_phy_reg(pi, 0x9d);
26316 }
26317}
26318
26319void
26320wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26321 u16 num_samps, u8 wait_time, u8 wait_for_crs)
26322{
26323 u8 core;
26324
26325 write_phy_reg(pi, 0x12b, num_samps);
26326 mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26327 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26328 (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26329
26330 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26331
26332 SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26333 10000);
26334 if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26335 "HW error: rxiq est"))
26336 return;
26337
26338 if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26339 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26340 est[core].i_pwr =
26341 (read_phy_reg(pi,
26342 NPHY_IqestipwrAccHi(core)) << 16)
26343 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26344 est[core].q_pwr =
26345 (read_phy_reg(pi,
26346 NPHY_IqestqpwrAccHi(core)) << 16)
26347 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26348 est[core].iq_prod =
26349 (read_phy_reg(pi,
26350 NPHY_IqestIqAccHi(core)) << 16) |
26351 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26352 }
26353 }
26354}
26355
26356#define CAL_RETRY_CNT 2
26357static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26358{
26359 u8 curr_core;
26360 struct phy_iq_est est[PHY_CORE_MAX];
26361 struct nphy_iq_comp old_comp, new_comp;
26362 s32 iq = 0;
26363 u32 ii = 0, qq = 0;
26364 s16 iq_nbits, qq_nbits, brsh, arsh;
26365 s32 a, b, temp;
26366 int bcmerror = 0;
26367 uint cal_retry = 0;
26368
26369 if (core_mask == 0x0)
26370 return;
26371
26372 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26373 new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26374 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26375
26376cal_try:
26377 wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26378
26379 new_comp = old_comp;
26380
26381 for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26382
26383 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26384 iq = est[curr_core].iq_prod;
26385 ii = est[curr_core].i_pwr;
26386 qq = est[curr_core].q_pwr;
26387 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26388 iq = est[curr_core].iq_prod;
26389 ii = est[curr_core].i_pwr;
26390 qq = est[curr_core].q_pwr;
26391 } else {
26392 continue;
26393 }
26394
26395 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26396 bcmerror = -EBADE;
26397 break;
26398 }
26399
26400 iq_nbits = wlc_phy_nbits(iq);
26401 qq_nbits = wlc_phy_nbits(qq);
26402
26403 arsh = 10 - (30 - iq_nbits);
26404 if (arsh >= 0) {
26405 a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26406 temp = (s32) (ii >> arsh);
26407 if (temp == 0) {
26408 bcmerror = -EBADE;
26409 break;
26410 }
26411 } else {
26412 a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26413 temp = (s32) (ii << -arsh);
26414 if (temp == 0) {
26415 bcmerror = -EBADE;
26416 break;
26417 }
26418 }
26419
26420 a /= temp;
26421
26422 brsh = qq_nbits - 31 + 20;
26423 if (brsh >= 0) {
26424 b = (qq << (31 - qq_nbits));
26425 temp = (s32) (ii >> brsh);
26426 if (temp == 0) {
26427 bcmerror = -EBADE;
26428 break;
26429 }
26430 } else {
26431 b = (qq << (31 - qq_nbits));
26432 temp = (s32) (ii << -brsh);
26433 if (temp == 0) {
26434 bcmerror = -EBADE;
26435 break;
26436 }
26437 }
26438 b /= temp;
26439 b -= a * a;
26440 b = (s32) int_sqrt((unsigned long) b);
26441 b -= (1 << 10);
26442
26443 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26444 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26445 new_comp.a0 = (s16) a & 0x3ff;
26446 new_comp.b0 = (s16) b & 0x3ff;
26447 } else {
26448
26449 new_comp.a0 = (s16) b & 0x3ff;
26450 new_comp.b0 = (s16) a & 0x3ff;
26451 }
26452 }
26453 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26454 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26455 new_comp.a1 = (s16) a & 0x3ff;
26456 new_comp.b1 = (s16) b & 0x3ff;
26457 } else {
26458
26459 new_comp.a1 = (s16) b & 0x3ff;
26460 new_comp.b1 = (s16) a & 0x3ff;
26461 }
26462 }
26463 }
26464
26465 if (bcmerror != 0) {
26466 printk(KERN_DEBUG "%s: Failed, cnt = %d\n", __func__,
26467 cal_retry);
26468
26469 if (cal_retry < CAL_RETRY_CNT) {
26470 cal_retry++;
26471 goto cal_try;
26472 }
26473
26474 new_comp = old_comp;
26475 }
26476
26477 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26478}
26479
26480static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26481{
26482 u16 offtune_val;
26483 u16 bias_g = 0;
26484 u16 bias_a = 0;
26485
26486 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26487 if (rx_core == PHY_CORE_0) {
26488 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26489 pi->tx_rx_cal_radio_saveregs[0] =
26490 read_radio_reg(pi,
26491 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26492 pi->tx_rx_cal_radio_saveregs[1] =
26493 read_radio_reg(pi,
26494 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26495
26496 write_radio_reg(pi,
26497 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26498 0x3);
26499 write_radio_reg(pi,
26500 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26501 0xaf);
26502
26503 } else {
26504 pi->tx_rx_cal_radio_saveregs[0] =
26505 read_radio_reg(pi,
26506 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26507 pi->tx_rx_cal_radio_saveregs[1] =
26508 read_radio_reg(pi,
26509 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26510
26511 write_radio_reg(
26512 pi,
26513 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26514 0x3);
26515 write_radio_reg(
26516 pi,
26517 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26518 0x7f);
26519 }
26520
26521 } else {
26522 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26523 pi->tx_rx_cal_radio_saveregs[0] =
26524 read_radio_reg(pi,
26525 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26526 pi->tx_rx_cal_radio_saveregs[1] =
26527 read_radio_reg(pi,
26528 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26529
26530 write_radio_reg(
26531 pi,
26532 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26533 0x3);
26534 write_radio_reg(
26535 pi,
26536 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26537 0xaf);
26538
26539 } else {
26540 pi->tx_rx_cal_radio_saveregs[0] =
26541 read_radio_reg(pi,
26542 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26543 pi->tx_rx_cal_radio_saveregs[1] =
26544 read_radio_reg(pi,
26545 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26546
26547 write_radio_reg(pi,
26548 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26549 0x3);
26550 write_radio_reg(pi,
26551 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26552 0x7f);
26553 }
26554 }
26555
26556 } else {
26557 if (rx_core == PHY_CORE_0) {
26558 pi->tx_rx_cal_radio_saveregs[0] =
26559 read_radio_reg(pi,
26560 RADIO_2056_TX_RXIQCAL_TXMUX |
26561 RADIO_2056_TX1);
26562 pi->tx_rx_cal_radio_saveregs[1] =
26563 read_radio_reg(pi,
26564 RADIO_2056_RX_RXIQCAL_RXMUX |
26565 RADIO_2056_RX0);
26566
26567 if (pi->pubpi.radiorev >= 5) {
26568 pi->tx_rx_cal_radio_saveregs[2] =
26569 read_radio_reg(pi,
26570 RADIO_2056_RX_RXSPARE2 |
26571 RADIO_2056_RX0);
26572 pi->tx_rx_cal_radio_saveregs[3] =
26573 read_radio_reg(pi,
26574 RADIO_2056_TX_TXSPARE2 |
26575 RADIO_2056_TX1);
26576 }
26577
26578 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26579
26580 if (pi->pubpi.radiorev >= 5) {
26581 pi->tx_rx_cal_radio_saveregs[4] =
26582 read_radio_reg(pi,
26583 RADIO_2056_RX_LNAA_MASTER
26584 | RADIO_2056_RX0);
26585
26586 write_radio_reg(
26587 pi,
26588 RADIO_2056_RX_LNAA_MASTER
26589 | RADIO_2056_RX0, 0x40);
26590
26591 write_radio_reg(pi,
26592 RADIO_2056_TX_TXSPARE2 |
26593 RADIO_2056_TX1, bias_a);
26594
26595 write_radio_reg(pi,
26596 RADIO_2056_RX_RXSPARE2 |
26597 RADIO_2056_RX0, bias_a);
26598 } else {
26599 pi->tx_rx_cal_radio_saveregs[4] =
26600 read_radio_reg(pi,
26601 RADIO_2056_RX_LNAA_TUNE
26602 | RADIO_2056_RX0);
26603
26604 offtune_val =
26605 (pi->tx_rx_cal_radio_saveregs
26606 [2] & 0xF0) >> 8;
26607 offtune_val =
26608 (offtune_val <= 0x7) ? 0xF : 0;
26609
26610 mod_radio_reg(pi,
26611 RADIO_2056_RX_LNAA_TUNE |
26612 RADIO_2056_RX0, 0xF0,
26613 (offtune_val << 8));
26614 }
26615
26616 write_radio_reg(pi,
26617 RADIO_2056_TX_RXIQCAL_TXMUX |
26618 RADIO_2056_TX1, 0x9);
26619 write_radio_reg(pi,
26620 RADIO_2056_RX_RXIQCAL_RXMUX |
26621 RADIO_2056_RX0, 0x9);
26622 } else {
26623 if (pi->pubpi.radiorev >= 5) {
26624 pi->tx_rx_cal_radio_saveregs[4] =
26625 read_radio_reg(
26626 pi,
26627 RADIO_2056_RX_LNAG_MASTER
26628 | RADIO_2056_RX0);
26629
26630 write_radio_reg(
26631 pi,
26632 RADIO_2056_RX_LNAG_MASTER
26633 | RADIO_2056_RX0, 0x40);
26634
26635 write_radio_reg(
26636 pi,
26637 RADIO_2056_TX_TXSPARE2
26638 |
26639 RADIO_2056_TX1, bias_g);
26640
26641 write_radio_reg(
26642 pi,
26643 RADIO_2056_RX_RXSPARE2
26644 |
26645 RADIO_2056_RX0, bias_g);
26646
26647 } else {
26648 pi->tx_rx_cal_radio_saveregs[4] =
26649 read_radio_reg(
26650 pi,
26651 RADIO_2056_RX_LNAG_TUNE
26652 | RADIO_2056_RX0);
26653
26654 offtune_val =
26655 (pi->
26656 tx_rx_cal_radio_saveregs[2] &
26657 0xF0) >> 8;
26658 offtune_val =
26659 (offtune_val <= 0x7) ? 0xF : 0;
26660
26661 mod_radio_reg(pi,
26662 RADIO_2056_RX_LNAG_TUNE |
26663 RADIO_2056_RX0, 0xF0,
26664 (offtune_val << 8));
26665 }
26666
26667 write_radio_reg(pi,
26668 RADIO_2056_TX_RXIQCAL_TXMUX |
26669 RADIO_2056_TX1, 0x6);
26670 write_radio_reg(pi,
26671 RADIO_2056_RX_RXIQCAL_RXMUX |
26672 RADIO_2056_RX0, 0x6);
26673 }
26674
26675 } else {
26676 pi->tx_rx_cal_radio_saveregs[0] =
26677 read_radio_reg(pi,
26678 RADIO_2056_TX_RXIQCAL_TXMUX |
26679 RADIO_2056_TX0);
26680 pi->tx_rx_cal_radio_saveregs[1] =
26681 read_radio_reg(pi,
26682 RADIO_2056_RX_RXIQCAL_RXMUX |
26683 RADIO_2056_RX1);
26684
26685 if (pi->pubpi.radiorev >= 5) {
26686 pi->tx_rx_cal_radio_saveregs[2] =
26687 read_radio_reg(pi,
26688 RADIO_2056_RX_RXSPARE2 |
26689 RADIO_2056_RX1);
26690 pi->tx_rx_cal_radio_saveregs[3] =
26691 read_radio_reg(pi,
26692 RADIO_2056_TX_TXSPARE2 |
26693 RADIO_2056_TX0);
26694 }
26695
26696 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26697
26698 if (pi->pubpi.radiorev >= 5) {
26699 pi->tx_rx_cal_radio_saveregs[4] =
26700 read_radio_reg(
26701 pi,
26702 RADIO_2056_RX_LNAA_MASTER
26703 | RADIO_2056_RX1);
26704
26705 write_radio_reg(
26706 pi,
26707 RADIO_2056_RX_LNAA_MASTER |
26708 RADIO_2056_RX1, 0x40);
26709
26710 write_radio_reg(
26711 pi,
26712 RADIO_2056_TX_TXSPARE2
26713 |
26714 RADIO_2056_TX0, bias_a);
26715
26716 write_radio_reg(
26717 pi,
26718 RADIO_2056_RX_RXSPARE2
26719 |
26720 RADIO_2056_RX1, bias_a);
26721 } else {
26722 pi->tx_rx_cal_radio_saveregs[4] =
26723 read_radio_reg(
26724 pi,
26725 RADIO_2056_RX_LNAA_TUNE
26726 | RADIO_2056_RX1);
26727
26728 offtune_val =
26729 (pi->
26730 tx_rx_cal_radio_saveregs[2] &
26731 0xF0) >> 8;
26732 offtune_val =
26733 (offtune_val <= 0x7) ? 0xF : 0;
26734
26735 mod_radio_reg(pi,
26736 RADIO_2056_RX_LNAA_TUNE |
26737 RADIO_2056_RX1, 0xF0,
26738 (offtune_val << 8));
26739 }
26740
26741 write_radio_reg(pi,
26742 RADIO_2056_TX_RXIQCAL_TXMUX |
26743 RADIO_2056_TX0, 0x9);
26744 write_radio_reg(pi,
26745 RADIO_2056_RX_RXIQCAL_RXMUX |
26746 RADIO_2056_RX1, 0x9);
26747 } else {
26748 if (pi->pubpi.radiorev >= 5) {
26749 pi->tx_rx_cal_radio_saveregs[4] =
26750 read_radio_reg(
26751 pi,
26752 RADIO_2056_RX_LNAG_MASTER
26753 | RADIO_2056_RX1);
26754
26755 write_radio_reg(
26756 pi,
26757 RADIO_2056_RX_LNAG_MASTER
26758 | RADIO_2056_RX1, 0x40);
26759
26760 write_radio_reg(
26761 pi,
26762 RADIO_2056_TX_TXSPARE2
26763 |
26764 RADIO_2056_TX0, bias_g);
26765
26766 write_radio_reg(
26767 pi,
26768 RADIO_2056_RX_RXSPARE2
26769 |
26770 RADIO_2056_RX1, bias_g);
26771 } else {
26772 pi->tx_rx_cal_radio_saveregs[4] =
26773 read_radio_reg(
26774 pi,
26775 RADIO_2056_RX_LNAG_TUNE
26776 | RADIO_2056_RX1);
26777
26778 offtune_val =
26779 (pi->
26780 tx_rx_cal_radio_saveregs[2] &
26781 0xF0) >> 8;
26782 offtune_val =
26783 (offtune_val <= 0x7) ? 0xF : 0;
26784
26785 mod_radio_reg(pi,
26786 RADIO_2056_RX_LNAG_TUNE |
26787 RADIO_2056_RX1, 0xF0,
26788 (offtune_val << 8));
26789 }
26790
26791 write_radio_reg(pi,
26792 RADIO_2056_TX_RXIQCAL_TXMUX |
26793 RADIO_2056_TX0, 0x6);
26794 write_radio_reg(pi,
26795 RADIO_2056_RX_RXIQCAL_RXMUX |
26796 RADIO_2056_RX1, 0x6);
26797 }
26798 }
26799 }
26800}
26801
26802static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26803{
26804 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26805 if (rx_core == PHY_CORE_0) {
26806 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26807 write_radio_reg(
26808 pi,
26809 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26810 pi->
26811 tx_rx_cal_radio_saveregs[0]);
26812 write_radio_reg(
26813 pi,
26814 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26815 pi->
26816 tx_rx_cal_radio_saveregs[1]);
26817
26818 } else {
26819 write_radio_reg(
26820 pi,
26821 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26822 pi->
26823 tx_rx_cal_radio_saveregs[0]);
26824 write_radio_reg(
26825 pi,
26826 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26827 pi->
26828 tx_rx_cal_radio_saveregs[1]);
26829 }
26830
26831 } else {
26832 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26833 write_radio_reg(
26834 pi,
26835 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26836 pi->
26837 tx_rx_cal_radio_saveregs[0]);
26838 write_radio_reg(
26839 pi,
26840 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26841 pi->
26842 tx_rx_cal_radio_saveregs[1]);
26843
26844 } else {
26845 write_radio_reg(
26846 pi,
26847 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26848 pi->
26849 tx_rx_cal_radio_saveregs[0]);
26850 write_radio_reg(
26851 pi,
26852 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26853 pi->
26854 tx_rx_cal_radio_saveregs[1]);
26855 }
26856 }
26857
26858 } else {
26859 if (rx_core == PHY_CORE_0) {
26860 write_radio_reg(pi,
26861 RADIO_2056_TX_RXIQCAL_TXMUX |
26862 RADIO_2056_TX1,
26863 pi->tx_rx_cal_radio_saveregs[0]);
26864
26865 write_radio_reg(pi,
26866 RADIO_2056_RX_RXIQCAL_RXMUX |
26867 RADIO_2056_RX0,
26868 pi->tx_rx_cal_radio_saveregs[1]);
26869
26870 if (pi->pubpi.radiorev >= 5) {
26871 write_radio_reg(pi,
26872 RADIO_2056_RX_RXSPARE2 |
26873 RADIO_2056_RX0,
26874 pi->
26875 tx_rx_cal_radio_saveregs[2]);
26876
26877 write_radio_reg(pi,
26878 RADIO_2056_TX_TXSPARE2 |
26879 RADIO_2056_TX1,
26880 pi->
26881 tx_rx_cal_radio_saveregs[3]);
26882 }
26883
26884 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26885 if (pi->pubpi.radiorev >= 5)
26886 write_radio_reg(
26887 pi,
26888 RADIO_2056_RX_LNAA_MASTER
26889 | RADIO_2056_RX0,
26890 pi->
26891 tx_rx_cal_radio_saveregs
26892 [4]);
26893 else
26894 write_radio_reg(
26895 pi,
26896 RADIO_2056_RX_LNAA_TUNE
26897 | RADIO_2056_RX0,
26898 pi->
26899 tx_rx_cal_radio_saveregs
26900 [4]);
26901 } else {
26902 if (pi->pubpi.radiorev >= 5)
26903 write_radio_reg(
26904 pi,
26905 RADIO_2056_RX_LNAG_MASTER
26906 | RADIO_2056_RX0,
26907 pi->
26908 tx_rx_cal_radio_saveregs
26909 [4]);
26910 else
26911 write_radio_reg(
26912 pi,
26913 RADIO_2056_RX_LNAG_TUNE
26914 | RADIO_2056_RX0,
26915 pi->
26916 tx_rx_cal_radio_saveregs
26917 [4]);
26918 }
26919
26920 } else {
26921 write_radio_reg(pi,
26922 RADIO_2056_TX_RXIQCAL_TXMUX |
26923 RADIO_2056_TX0,
26924 pi->tx_rx_cal_radio_saveregs[0]);
26925
26926 write_radio_reg(pi,
26927 RADIO_2056_RX_RXIQCAL_RXMUX |
26928 RADIO_2056_RX1,
26929 pi->tx_rx_cal_radio_saveregs[1]);
26930
26931 if (pi->pubpi.radiorev >= 5) {
26932 write_radio_reg(pi,
26933 RADIO_2056_RX_RXSPARE2 |
26934 RADIO_2056_RX1,
26935 pi->
26936 tx_rx_cal_radio_saveregs[2]);
26937
26938 write_radio_reg(pi,
26939 RADIO_2056_TX_TXSPARE2 |
26940 RADIO_2056_TX0,
26941 pi->
26942 tx_rx_cal_radio_saveregs[3]);
26943 }
26944
26945 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26946 if (pi->pubpi.radiorev >= 5)
26947 write_radio_reg(
26948 pi,
26949 RADIO_2056_RX_LNAA_MASTER
26950 | RADIO_2056_RX1,
26951 pi->
26952 tx_rx_cal_radio_saveregs
26953 [4]);
26954 else
26955 write_radio_reg(
26956 pi,
26957 RADIO_2056_RX_LNAA_TUNE
26958 | RADIO_2056_RX1,
26959 pi->
26960 tx_rx_cal_radio_saveregs
26961 [4]);
26962 } else {
26963 if (pi->pubpi.radiorev >= 5)
26964 write_radio_reg(
26965 pi,
26966 RADIO_2056_RX_LNAG_MASTER
26967 | RADIO_2056_RX1,
26968 pi->
26969 tx_rx_cal_radio_saveregs
26970 [4]);
26971 else
26972 write_radio_reg(
26973 pi,
26974 RADIO_2056_RX_LNAG_TUNE
26975 | RADIO_2056_RX1,
26976 pi->
26977 tx_rx_cal_radio_saveregs
26978 [4]);
26979 }
26980 }
26981 }
26982}
26983
26984static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26985{
26986 u8 tx_core;
26987 u16 rx_antval, tx_antval;
26988
26989 if (NREV_GE(pi->pubpi.phy_rev, 7))
26990 tx_core = rx_core;
26991 else
26992 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26993
26994 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26995 pi->tx_rx_cal_phy_saveregs[1] =
26996 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26997 pi->tx_rx_cal_phy_saveregs[2] =
26998 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26999 pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
27000 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
27001 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
27002 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
27003 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
27004 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
27005 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27006 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
27007 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
27008 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
27009 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
27010 }
27011
27012 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
27013 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
27014 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
27015 0x29b, (0x1 << 0), (0) << 0);
27016
27017 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
27018 0x29b, (0x1 << 0), (0) << 0);
27019
27020 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27021
27022 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27023
27024 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
27025
27026 } else {
27027
27028 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27029 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27030 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
27031 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
27032 }
27033
27034 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
27035 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27036 (0x1 << 2), (0x1 << 2));
27037 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27038 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27039 (0x1 << 0) | (0x1 << 1), 0);
27040 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27041 0x8f : 0xa5,
27042 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
27043 }
27044
27045 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
27046 RADIO_MIMO_CORESEL_CORE1 |
27047 RADIO_MIMO_CORESEL_CORE2);
27048
27049 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27050 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
27051 0, 0, 0,
27052 NPHY_REV7_RFCTRLOVERRIDE_ID0);
27053 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
27054 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27055 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
27056 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27057 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
27058 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27059 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
27060 NPHY_REV7_RFCTRLOVERRIDE_ID2);
27061 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
27062 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27063 if (CHSPEC_IS40(pi->radio_chanspec))
27064 wlc_phy_rfctrl_override_nphy_rev7(
27065 pi,
27066 (0x1 << 7),
27067 2, 0, 0,
27068 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27069 else
27070 wlc_phy_rfctrl_override_nphy_rev7(
27071 pi,
27072 (0x1 << 7),
27073 0, 0, 0,
27074 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27075
27076 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
27077 0, 0, 0,
27078 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27079 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
27080 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27081 } else {
27082 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
27083 }
27084
27085 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
27086
27087 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27088
27089 wlc_phy_rfctrlintc_override_nphy(pi,
27090 NPHY_RfctrlIntc_override_TRSW,
27091 0x1, rx_core + 1);
27092 } else {
27093
27094 if (rx_core == PHY_CORE_0) {
27095 rx_antval = 0x1;
27096 tx_antval = 0x8;
27097 } else {
27098 rx_antval = 0x4;
27099 tx_antval = 0x2;
27100 }
27101
27102 wlc_phy_rfctrlintc_override_nphy(pi,
27103 NPHY_RfctrlIntc_override_TRSW,
27104 rx_antval, rx_core + 1);
27105 wlc_phy_rfctrlintc_override_nphy(pi,
27106 NPHY_RfctrlIntc_override_TRSW,
27107 tx_antval, tx_core + 1);
27108 }
27109}
27110
27111static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
27112{
27113
27114 write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
27115 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
27116 pi->tx_rx_cal_phy_saveregs[1]);
27117 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27118 pi->tx_rx_cal_phy_saveregs[2]);
27119 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
27120 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
27121
27122 write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
27123 write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
27124 write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
27125 write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
27126 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27127 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
27128 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
27129 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
27130 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
27131 }
27132
27133 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
27134 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
27135}
27136
27137static void
27138wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27139 u16 *rxgain, u8 cal_type)
27140{
27141
27142 u16 num_samps;
27143 struct phy_iq_est est[PHY_CORE_MAX];
27144 u8 tx_core;
27145 struct nphy_iq_comp save_comp, zero_comp;
27146 u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27147 thresh_pwr = 10000;
27148 s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27149 bool gainctrl_done = false;
27150 u8 mix_tia_gain = 3;
27151 s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27152 s8 curr_gaintbl_index = 3;
27153 u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27154 const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27155 u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27156 int fine_gain_idx;
27157 s8 txpwrindex;
27158 u16 nphy_rxcal_txgain[2];
27159
27160 if (NREV_GE(pi->pubpi.phy_rev, 7))
27161 tx_core = rx_core;
27162 else
27163 tx_core = 1 - rx_core;
27164
27165 num_samps = 1024;
27166 desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27167
27168 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27169 zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27170 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27171
27172 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27173 if (NREV_GE(pi->pubpi.phy_rev, 7))
27174 mix_tia_gain = 3;
27175 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27176 mix_tia_gain = 4;
27177 else
27178 mix_tia_gain = 6;
27179 if (NREV_GE(pi->pubpi.phy_rev, 7))
27180 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27181 else
27182 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27183 } else {
27184 if (NREV_GE(pi->pubpi.phy_rev, 7))
27185 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27186 else
27187 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27188 }
27189
27190 do {
27191
27192 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27193 0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27194 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27195 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27196 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27197 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27198 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27199
27200 if (NREV_GE(pi->pubpi.phy_rev, 7))
27201 wlc_phy_rfctrl_override_1tomany_nphy(
27202 pi,
27203 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27204 ((lpf_biq1 << 12) |
27205 (lpf_biq0 << 8) |
27206 (mix_tia_gain << 4) | (lna2 << 2)
27207 | lna1), 0x3, 0);
27208 else
27209 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27210 ((hpvga << 12) |
27211 (lpf_biq1 << 10) |
27212 (lpf_biq0 << 8) |
27213 (mix_tia_gain << 4) |
27214 (lna2 << 2) | lna1), 0x3,
27215 0);
27216
27217 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27218
27219 if (txpwrindex == -1) {
27220 nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27221 nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27222 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27223 2, 0x110, 16,
27224 nphy_rxcal_txgain);
27225 } else {
27226 wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27227 false);
27228 }
27229
27230 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27231 NPHY_RXCAL_TONEFREQ_40MHz :
27232 NPHY_RXCAL_TONEFREQ_20MHz,
27233 NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27234
27235 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27236 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27237 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27238 curr_pwr = i_pwr + q_pwr;
27239
27240 switch (gainctrl_dirn) {
27241 case NPHY_RXCAL_GAIN_INIT:
27242 if (curr_pwr > thresh_pwr) {
27243 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27244 prev_gaintbl_index = curr_gaintbl_index;
27245 curr_gaintbl_index--;
27246 } else {
27247 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27248 prev_gaintbl_index = curr_gaintbl_index;
27249 curr_gaintbl_index++;
27250 }
27251 break;
27252
27253 case NPHY_RXCAL_GAIN_UP:
27254 if (curr_pwr > thresh_pwr) {
27255 gainctrl_done = true;
27256 optim_pwr = prev_pwr;
27257 optim_gaintbl_index = prev_gaintbl_index;
27258 } else {
27259 prev_gaintbl_index = curr_gaintbl_index;
27260 curr_gaintbl_index++;
27261 }
27262 break;
27263
27264 case NPHY_RXCAL_GAIN_DOWN:
27265 if (curr_pwr > thresh_pwr) {
27266 prev_gaintbl_index = curr_gaintbl_index;
27267 curr_gaintbl_index--;
27268 } else {
27269 gainctrl_done = true;
27270 optim_pwr = curr_pwr;
27271 optim_gaintbl_index = curr_gaintbl_index;
27272 }
27273 break;
27274
27275 default:
27276 break;
27277 }
27278
27279 if ((curr_gaintbl_index < 0) ||
27280 (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27281 gainctrl_done = true;
27282 optim_pwr = curr_pwr;
27283 optim_gaintbl_index = prev_gaintbl_index;
27284 } else {
27285 prev_pwr = curr_pwr;
27286 }
27287
27288 wlc_phy_stopplayback_nphy(pi);
27289 } while (!gainctrl_done);
27290
27291 hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27292 lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27293 lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27294 lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27295 lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27296 txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27297
27298 actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27299 delta_pwr = desired_log2_pwr - actual_log2_pwr;
27300
27301 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27302 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27303
27304 if (fine_gain_idx + (int)lpf_biq0 > 10)
27305 lpf_biq1 = 10 - lpf_biq0;
27306 else
27307 lpf_biq1 = (u16) max(fine_gain_idx, 0);
27308
27309 wlc_phy_rfctrl_override_1tomany_nphy(
27310 pi,
27311 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27312 ((lpf_biq1 << 12) |
27313 (lpf_biq0 << 8) |
27314 (mix_tia_gain << 4) |
27315 (lna2 << 2) | lna1), 0x3,
27316 0);
27317 } else {
27318 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27319 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27320 ((hpvga << 12) |
27321 (lpf_biq1 << 10) |
27322 (lpf_biq0 << 8) |
27323 (mix_tia_gain << 4) |
27324 (lna2 << 2) |
27325 lna1), 0x3, 0);
27326 }
27327
27328 if (rxgain != NULL) {
27329 *rxgain++ = lna1;
27330 *rxgain++ = lna2;
27331 *rxgain++ = mix_tia_gain;
27332 *rxgain++ = lpf_biq0;
27333 *rxgain++ = lpf_biq1;
27334 *rxgain = hpvga;
27335 }
27336
27337 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27338}
27339
27340static void
27341wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27342 u8 cal_type)
27343{
27344 wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27345}
27346
27347static u8
27348wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27349{
27350 u32 target_bws[2] = { 9500, 21000 };
27351 u32 ref_tones[2] = { 3000, 6000 };
27352 u32 target_bw, ref_tone;
27353
27354 u32 target_pwr_ratios[2] = { 28606, 18468 };
27355 u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27356
27357 u16 start_rccal_ovr_val = 128;
27358 u16 txlpf_rccal_lpc_ovr_val = 128;
27359 u16 rxlpf_rccal_hpc_ovr_val = 159;
27360
27361 u16 orig_txlpf_rccal_lpc_ovr_val;
27362 u16 orig_rxlpf_rccal_hpc_ovr_val;
27363 u16 radio_addr_offset_rx;
27364 u16 radio_addr_offset_tx;
27365 u16 orig_dcBypass;
27366 u16 orig_RxStrnFilt40Num[6];
27367 u16 orig_RxStrnFilt40Den[4];
27368 u16 orig_rfctrloverride[2];
27369 u16 orig_rfctrlauxreg[2];
27370 u16 orig_rfctrlrssiothers;
27371 u16 tx_lpf_bw = 4;
27372
27373 u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27374 u16 lpf_hpc = 7, hpvga_hpc = 7;
27375
27376 s8 rccal_stepsize;
27377 u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27378 u32 ref_iq_vals = 0, target_iq_vals = 0;
27379 u16 num_samps, log_num_samps = 10;
27380 struct phy_iq_est est[PHY_CORE_MAX];
27381
27382 if (NREV_GE(pi->pubpi.phy_rev, 7))
27383 return 0;
27384
27385 num_samps = (1 << log_num_samps);
27386
27387 if (CHSPEC_IS40(pi->radio_chanspec)) {
27388 target_bw = target_bws[1];
27389 target_pwr_ratio = target_pwr_ratios[1];
27390 ref_tone = ref_tones[1];
27391 rx_lpf_bw = rx_lpf_bws[1];
27392 } else {
27393 target_bw = target_bws[0];
27394 target_pwr_ratio = target_pwr_ratios[0];
27395 ref_tone = ref_tones[0];
27396 rx_lpf_bw = rx_lpf_bws[0];
27397 }
27398
27399 if (core_idx == 0) {
27400 radio_addr_offset_rx = RADIO_2056_RX0;
27401 radio_addr_offset_tx =
27402 (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27403 } else {
27404 radio_addr_offset_rx = RADIO_2056_RX1;
27405 radio_addr_offset_tx =
27406 (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27407 }
27408
27409 orig_txlpf_rccal_lpc_ovr_val =
27410 read_radio_reg(pi,
27411 (RADIO_2056_TX_TXLPF_RCCAL |
27412 radio_addr_offset_tx));
27413 orig_rxlpf_rccal_hpc_ovr_val =
27414 read_radio_reg(pi,
27415 (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27416 radio_addr_offset_rx));
27417
27418 orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27419
27420 orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27421 orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27422 orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27423 orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27424 orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27425 orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27426 orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27427 orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27428 orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27429 orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27430
27431 orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27432 orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27433 orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27434 orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27435 orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27436
27437 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27438 txlpf_rccal_lpc_ovr_val);
27439
27440 write_radio_reg(pi,
27441 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27442 rxlpf_rccal_hpc_ovr_val);
27443
27444 mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27445
27446 write_phy_reg(pi, 0x267, 0x02d4);
27447 write_phy_reg(pi, 0x268, 0x0000);
27448 write_phy_reg(pi, 0x269, 0x0000);
27449 write_phy_reg(pi, 0x26a, 0x0000);
27450 write_phy_reg(pi, 0x26b, 0x0000);
27451 write_phy_reg(pi, 0x26c, 0x02d4);
27452 write_phy_reg(pi, 0x26d, 0x0000);
27453 write_phy_reg(pi, 0x26e, 0x0000);
27454 write_phy_reg(pi, 0x26f, 0x0000);
27455 write_phy_reg(pi, 0x270, 0x0000);
27456
27457 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27458 or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27459 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27460 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27461
27462 mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27463 (0x7 << 10), (tx_lpf_bw << 10));
27464 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27465 (0x7 << 0), (hpvga_hpc << 0));
27466 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27467 (0x7 << 4), (lpf_hpc << 4));
27468 mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27469 (0x7 << 8), (rx_lpf_bw << 8));
27470
27471 rccal_stepsize = 16;
27472 rccal_val = start_rccal_ovr_val + rccal_stepsize;
27473
27474 while (rccal_stepsize >= 0) {
27475 write_radio_reg(pi,
27476 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27477 radio_addr_offset_rx), rccal_val);
27478
27479 if (rccal_stepsize == 16) {
27480
27481 wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27482 0, 1, false);
27483 udelay(2);
27484
27485 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27486
27487 if (core_idx == 0)
27488 ref_iq_vals =
27489 max_t(u32, (est[0].i_pwr +
27490 est[0].q_pwr) >>
27491 (log_num_samps + 1),
27492 1);
27493 else
27494 ref_iq_vals =
27495 max_t(u32, (est[1].i_pwr +
27496 est[1].q_pwr) >>
27497 (log_num_samps + 1),
27498 1);
27499
27500 wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27501 0, 1, false);
27502 udelay(2);
27503 }
27504
27505 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27506
27507 if (core_idx == 0)
27508 target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27509 (log_num_samps + 1);
27510 else
27511 target_iq_vals =
27512 (est[1].i_pwr +
27513 est[1].q_pwr) >> (log_num_samps + 1);
27514
27515 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27516
27517 if (rccal_stepsize == 0)
27518 rccal_stepsize--;
27519 else if (rccal_stepsize == 1) {
27520 last_rccal_val = rccal_val;
27521 rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27522 last_pwr_ratio = pwr_ratio;
27523 rccal_stepsize--;
27524 } else {
27525 rccal_stepsize = (rccal_stepsize >> 1);
27526 rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27527 rccal_stepsize : (-rccal_stepsize));
27528 }
27529
27530 if (rccal_stepsize == -1) {
27531 best_rccal_val =
27532 (abs((int)last_pwr_ratio -
27533 (int)target_pwr_ratio) <
27534 abs((int)pwr_ratio -
27535 (int)target_pwr_ratio)) ? last_rccal_val :
27536 rccal_val;
27537
27538 if (CHSPEC_IS40(pi->radio_chanspec)) {
27539 if ((best_rccal_val > 140)
27540 || (best_rccal_val < 135))
27541 best_rccal_val = 138;
27542 } else {
27543 if ((best_rccal_val > 142)
27544 || (best_rccal_val < 137))
27545 best_rccal_val = 140;
27546 }
27547
27548 write_radio_reg(pi,
27549 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27550 radio_addr_offset_rx), best_rccal_val);
27551 }
27552 }
27553
27554 wlc_phy_stopplayback_nphy(pi);
27555
27556 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27557 orig_txlpf_rccal_lpc_ovr_val);
27558 write_radio_reg(pi,
27559 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27560 orig_rxlpf_rccal_hpc_ovr_val);
27561
27562 mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27563
27564 write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27565 write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27566 write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27567 write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27568 write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27569 write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27570 write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27571 write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27572 write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27573 write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27574
27575 write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27576 write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27577 write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27578 write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27579 write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27580
27581 pi->nphy_anarxlpf_adjusted = false;
27582
27583 return best_rccal_val - 0x80;
27584}
27585
27586#define WAIT_FOR_SCOPE 4000
27587static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27588 struct nphy_txgains target_gain,
27589 u8 cal_type, bool debug)
27590{
27591 u16 orig_BBConfig;
27592 u8 core_no, rx_core;
27593 u8 best_rccal[2];
27594 u16 gain_save[2];
27595 u16 cal_gain[2];
27596 struct nphy_iqcal_params cal_params[2];
27597 u8 rxcore_state;
27598 s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27599 s8 txlpf_idac;
27600 bool phyhang_avoid_state = false;
27601 bool skip_rxiqcal = false;
27602
27603 orig_BBConfig = read_phy_reg(pi, 0x01);
27604 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27605
27606 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27607
27608 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27609 phyhang_avoid_state = pi->phyhang_avoid;
27610 pi->phyhang_avoid = false;
27611 }
27612
27613 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27614
27615 for (core_no = 0; core_no <= 1; core_no++) {
27616 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27617 &cal_params[core_no]);
27618 cal_gain[core_no] = cal_params[core_no].cal_gain;
27619 }
27620
27621 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27622
27623 rxcore_state = wlc_phy_rxcore_getstate_nphy(
27624 (struct brcms_phy_pub *) pi);
27625
27626 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27627
27628 skip_rxiqcal =
27629 ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27630
27631 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27632
27633 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27634
27635 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27636
27637 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27638
27639 wlc_phy_tx_tone_nphy(pi,
27640 (CHSPEC_IS40(
27641 pi->radio_chanspec)) ?
27642 NPHY_RXCAL_TONEFREQ_40MHz :
27643 NPHY_RXCAL_TONEFREQ_20MHz,
27644 NPHY_RXCAL_TONEAMP, 0, cal_type,
27645 false);
27646
27647 if (debug)
27648 mdelay(WAIT_FOR_SCOPE);
27649
27650 wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27651 wlc_phy_stopplayback_nphy(pi);
27652 }
27653
27654 if (((cal_type == 1) || (cal_type == 2))
27655 && NREV_LT(pi->pubpi.phy_rev, 7)) {
27656
27657 if (rx_core == PHY_CORE_1) {
27658
27659 if (rxcore_state == 1)
27660 wlc_phy_rxcore_setstate_nphy(
27661 (struct brcms_phy_pub *) pi, 3);
27662
27663 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27664 1);
27665
27666 best_rccal[rx_core] =
27667 wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27668 pi->nphy_rccal_value = best_rccal[rx_core];
27669
27670 if (rxcore_state == 1)
27671 wlc_phy_rxcore_setstate_nphy(
27672 (struct brcms_phy_pub *) pi,
27673 rxcore_state);
27674 }
27675 }
27676
27677 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27678
27679 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27680 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27681 }
27682
27683 if ((cal_type == 1) || (cal_type == 2)) {
27684
27685 best_rccal[0] = best_rccal[1];
27686 write_radio_reg(pi,
27687 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27688 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27689
27690 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27691 rxlpf_rccal_hpc =
27692 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27693 txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27694
27695 if (PHY_IPA(pi)) {
27696 txlpf_rccal_lpc +=
27697 (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27698 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27699 0x0e : 0x13;
27700 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27701 TXLPF_IDAC_4, txlpf_idac);
27702 }
27703
27704 rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27705 0);
27706 txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27707 0);
27708
27709 write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27710 ((rx_core ==
27711 PHY_CORE_0) ? RADIO_2056_RX0 :
27712 RADIO_2056_RX1)),
27713 (rxlpf_rccal_hpc | 0x80));
27714
27715 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27716 ((rx_core ==
27717 PHY_CORE_0) ? RADIO_2056_TX0 :
27718 RADIO_2056_TX1)),
27719 (txlpf_rccal_lpc | 0x80));
27720 }
27721 }
27722
27723 write_phy_reg(pi, 0x01, orig_BBConfig);
27724
27725 wlc_phy_resetcca_nphy(pi);
27726
27727 if (NREV_GE(pi->pubpi.phy_rev, 7))
27728 wlc_phy_rfctrl_override_1tomany_nphy(
27729 pi,
27730 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27731 0, 0x3, 1);
27732 else
27733 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27734
27735 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27736
27737 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27738 gain_save);
27739
27740 if (NREV_GE(pi->pubpi.phy_rev, 4))
27741 pi->phyhang_avoid = phyhang_avoid_state;
27742
27743 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27744
27745 return 0;
27746}
27747
27748static int
27749wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27750 struct nphy_txgains target_gain, bool debug)
27751{
27752 struct phy_iq_est est[PHY_CORE_MAX];
27753 u8 core_num, rx_core, tx_core;
27754 u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27755 u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27756 u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27757 s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27758 s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27759 u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27760 u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27761 u16 num_samps;
27762 u32 i_pwr, q_pwr, tot_pwr[3];
27763 u8 gain_pass, use_hpf_num;
27764 u16 mask, val1, val2;
27765 u16 core_no;
27766 u16 gain_save[2];
27767 u16 cal_gain[2];
27768 struct nphy_iqcal_params cal_params[2];
27769 u8 phy_bw;
27770 int bcmerror = 0;
27771 bool first_playtone = true;
27772
27773 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27774
27775 if (NREV_LT(pi->pubpi.phy_rev, 2))
27776 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27777
27778 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27779
27780 for (core_no = 0; core_no <= 1; core_no++) {
27781 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27782 &cal_params[core_no]);
27783 cal_gain[core_no] = cal_params[core_no].cal_gain;
27784 }
27785
27786 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27787
27788 num_samps = 1024;
27789 desired_log2_pwr = 13;
27790
27791 for (core_num = 0; core_num < 2; core_num++) {
27792
27793 rx_core = core_num;
27794 tx_core = 1 - core_num;
27795
27796 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27797 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27798 0xa6 : 0xa7);
27799 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27800 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27801 0x91 : 0x92);
27802 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27803 0x91 : 0x92);
27804
27805 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27806 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27807
27808 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27809 ((0x1 << 1) | (0x1 << 2)));
27810 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27811
27812 if (((pi->nphy_rxcalparams) & 0xff000000))
27813 write_phy_reg(pi,
27814 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27815 (CHSPEC_IS5G(pi->radio_chanspec) ?
27816 0x140 : 0x110));
27817 else
27818 write_phy_reg(pi,
27819 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27820 (CHSPEC_IS5G(pi->radio_chanspec) ?
27821 0x180 : 0x120));
27822
27823 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27824 (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27825 0x114));
27826
27827 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27828 if (rx_core == PHY_CORE_0) {
27829 val1 = RADIO_2055_COUPLE_RX_MASK;
27830 val2 = RADIO_2055_COUPLE_TX_MASK;
27831 } else {
27832 val1 = RADIO_2055_COUPLE_TX_MASK;
27833 val2 = RADIO_2055_COUPLE_RX_MASK;
27834 }
27835
27836 if ((pi->nphy_rxcalparams & 0x10000)) {
27837 mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27838 val1);
27839 mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27840 val2);
27841 }
27842
27843 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27844
27845 if (debug)
27846 mdelay(WAIT_FOR_SCOPE);
27847
27848 if (gain_pass < 3) {
27849 curr_lna = lna_vals[gain_pass];
27850 curr_hpf1 = hpf1_vals[gain_pass];
27851 curr_hpf2 = hpf2_vals[gain_pass];
27852 } else {
27853
27854 if (tot_pwr[1] > 10000) {
27855 curr_lna = lna_vals[2];
27856 curr_hpf1 = hpf1_vals[2];
27857 curr_hpf2 = hpf2_vals[2];
27858 use_hpf_num = 1;
27859 curr_hpf = curr_hpf1;
27860 actual_log2_pwr =
27861 wlc_phy_nbits(tot_pwr[2]);
27862 } else {
27863 if (tot_pwr[0] > 10000) {
27864 curr_lna = lna_vals[1];
27865 curr_hpf1 = hpf1_vals[1];
27866 curr_hpf2 = hpf2_vals[1];
27867 use_hpf_num = 1;
27868 curr_hpf = curr_hpf1;
27869 actual_log2_pwr =
27870 wlc_phy_nbits(
27871 tot_pwr[1]);
27872 } else {
27873 curr_lna = lna_vals[0];
27874 curr_hpf1 = hpf1_vals[0];
27875 curr_hpf2 = hpf2_vals[0];
27876 use_hpf_num = 2;
27877 curr_hpf = curr_hpf2;
27878 actual_log2_pwr =
27879 wlc_phy_nbits(
27880 tot_pwr[0]);
27881 }
27882 }
27883
27884 hpf_change = desired_log2_pwr - actual_log2_pwr;
27885 curr_hpf += hpf_change;
27886 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27887 if (use_hpf_num == 1)
27888 curr_hpf1 = curr_hpf;
27889 else
27890 curr_hpf2 = curr_hpf;
27891 }
27892
27893 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27894 ((curr_hpf2 << 8) |
27895 (curr_hpf1 << 4) |
27896 (curr_lna << 2)), 0x3, 0);
27897 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27898
27899 wlc_phy_stopplayback_nphy(pi);
27900
27901 if (first_playtone) {
27902 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27903 (u16) (pi->nphy_rxcalparams &
27904 0xffff), 0, 0, true);
27905 first_playtone = false;
27906 } else {
27907 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27908 40 : 20;
27909 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27910 0, 0, 0, true);
27911 }
27912
27913 if (bcmerror == 0) {
27914 if (gain_pass < 3) {
27915
27916 wlc_phy_rx_iq_est_nphy(pi, est,
27917 num_samps, 32,
27918 0);
27919 i_pwr = (est[rx_core].i_pwr +
27920 num_samps / 2) / num_samps;
27921 q_pwr = (est[rx_core].q_pwr +
27922 num_samps / 2) / num_samps;
27923 tot_pwr[gain_pass] = i_pwr + q_pwr;
27924 } else {
27925
27926 wlc_phy_calc_rx_iq_comp_nphy(pi,
27927 (1 <<
27928 rx_core));
27929 }
27930
27931 wlc_phy_stopplayback_nphy(pi);
27932 }
27933
27934 if (bcmerror != 0)
27935 break;
27936 }
27937
27938 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27939 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27940
27941 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27942 0x92, orig_RfctrlIntcTx);
27943 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27944 0x92, orig_RfctrlIntcRx);
27945 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27946 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27947 0xa7, orig_AfectrlCore);
27948 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27949
27950 if (bcmerror != 0)
27951 break;
27952 }
27953
27954 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27955 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27956
27957 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27958 gain_save);
27959
27960 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27961
27962 return bcmerror;
27963}
27964
27965int
27966wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27967 u8 cal_type, bool debug)
27968{
27969 if (NREV_GE(pi->pubpi.phy_rev, 7))
27970 cal_type = 0;
27971
27972 if (NREV_GE(pi->pubpi.phy_rev, 3))
27973 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27974 debug);
27975 else
27976 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27977}
27978
27979void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27980{
27981 uint core;
27982 u32 txgain;
27983 u16 rad_gain, dac_gain, bbmult, m1m2;
27984 u8 txpi[2], chan_freq_range;
27985 s32 rfpwr_offset;
27986
27987 if (pi->phyhang_avoid)
27988 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27989
27990 if (pi->sh->sromrev < 4) {
27991 txpi[0] = txpi[1] = 72;
27992 } else {
27993
27994 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27995 switch (chan_freq_range) {
27996 case WL_CHAN_FREQ_RANGE_2G:
27997 txpi[0] = pi->nphy_txpid2g[0];
27998 txpi[1] = pi->nphy_txpid2g[1];
27999 break;
28000 case WL_CHAN_FREQ_RANGE_5GL:
28001 txpi[0] = pi->nphy_txpid5gl[0];
28002 txpi[1] = pi->nphy_txpid5gl[1];
28003 break;
28004 case WL_CHAN_FREQ_RANGE_5GM:
28005 txpi[0] = pi->nphy_txpid5g[0];
28006 txpi[1] = pi->nphy_txpid5g[1];
28007 break;
28008 case WL_CHAN_FREQ_RANGE_5GH:
28009 txpi[0] = pi->nphy_txpid5gh[0];
28010 txpi[1] = pi->nphy_txpid5gh[1];
28011 break;
28012 default:
28013 txpi[0] = txpi[1] = 91;
28014 break;
28015 }
28016 }
28017
28018 if (NREV_GE(pi->pubpi.phy_rev, 7))
28019 txpi[0] = txpi[1] = 30;
28020 else if (NREV_GE(pi->pubpi.phy_rev, 3))
28021 txpi[0] = txpi[1] = 40;
28022
28023 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
28024
28025 if ((txpi[0] < 40) || (txpi[0] > 100) ||
28026 (txpi[1] < 40) || (txpi[1] > 100))
28027 txpi[0] = txpi[1] = 91;
28028 }
28029
28030 pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
28031 pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
28032 pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
28033 pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
28034
28035 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28036 uint phyrev = pi->pubpi.phy_rev;
28037
28038 if (NREV_GE(phyrev, 3)) {
28039 if (PHY_IPA(pi)) {
28040 u32 *tx_gaintbl =
28041 wlc_phy_get_ipa_gaintbl_nphy(pi);
28042 txgain = tx_gaintbl[txpi[core]];
28043 } else {
28044 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28045 if (NREV_IS(phyrev, 3)) {
28046 txgain =
28047 nphy_tpc_5GHz_txgain_rev3
28048 [txpi[core]];
28049 } else if (NREV_IS(phyrev, 4)) {
28050 txgain = (
28051 pi->srom_fem5g.extpagain ==
28052 3) ?
28053 nphy_tpc_5GHz_txgain_HiPwrEPA
28054 [txpi[core]] :
28055 nphy_tpc_5GHz_txgain_rev4
28056 [txpi[core]];
28057 } else {
28058 txgain =
28059 nphy_tpc_5GHz_txgain_rev5
28060 [txpi[core]];
28061 }
28062 } else {
28063 if (NREV_GE(phyrev, 5) &&
28064 (pi->srom_fem2g.extpagain == 3)) {
28065 txgain =
28066 nphy_tpc_txgain_HiPwrEPA
28067 [txpi[core]];
28068 } else {
28069 txgain = nphy_tpc_txgain_rev3
28070 [txpi[core]];
28071 }
28072 }
28073 }
28074 } else {
28075 txgain = nphy_tpc_txgain[txpi[core]];
28076 }
28077
28078 if (NREV_GE(phyrev, 3))
28079 rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
28080 else
28081 rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
28082
28083 if (NREV_GE(phyrev, 7))
28084 dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
28085 else
28086 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28087
28088 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28089
28090 if (NREV_GE(phyrev, 3))
28091 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28092 0xa5), (0x1 << 8), (0x1 << 8));
28093 else
28094 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28095
28096 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
28097
28098 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28099 &rad_gain);
28100
28101 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28102 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28103 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
28104 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28105
28106 if (PHY_IPA(pi)) {
28107 wlc_phy_table_read_nphy(pi,
28108 (core ==
28109 PHY_CORE_0 ?
28110 NPHY_TBL_ID_CORE1TXPWRCTL :
28111 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
28112 576 + txpi[core], 32,
28113 &rfpwr_offset);
28114
28115 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28116 0x29b, (0x1ff << 4),
28117 ((s16) rfpwr_offset) << 4);
28118
28119 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28120 0x29b, (0x1 << 2), (1) << 2);
28121
28122 }
28123 }
28124
28125 and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
28126
28127 if (pi->phyhang_avoid)
28128 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28129}
28130
28131static void
28132wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
28133 u8 tmp_max_pwr, u8 rate_start,
28134 u8 rate_end)
28135{
28136 u8 rate;
28137 u8 word_num, nibble_num;
28138 u8 tmp_nibble;
28139
28140 for (rate = rate_start; rate <= rate_end; rate++) {
28141 word_num = (rate - rate_start) >> 2;
28142 nibble_num = (rate - rate_start) & 0x3;
28143 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
28144
28145 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28146 }
28147}
28148
28149static void
28150wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28151 u8 rate_start, u8 rate_end)
28152{
28153 u8 rate;
28154
28155 for (rate = rate_start; rate <= rate_end; rate++)
28156 srom_max[rate] -= 2 * pwr_offset;
28157}
28158
28159void
28160wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28161 u8 rate_mcs_end, u8 rate_ofdm_start)
28162{
28163 u8 rate1, rate2;
28164
28165 rate2 = rate_ofdm_start;
28166 for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28167 power[rate1] = power[rate2];
28168 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28169 }
28170 power[rate_mcs_end] = power[rate_mcs_end - 1];
28171}
28172
28173void
28174wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28175 u8 rate_ofdm_end, u8 rate_mcs_start)
28176{
28177 u8 rate1, rate2;
28178
28179 for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28180 rate1 <= rate_ofdm_end; rate1++, rate2++) {
28181 power[rate1] = power[rate2];
28182 if (rate1 == rate_ofdm_start)
28183 power[++rate1] = power[rate2];
28184 }
28185}
28186
28187void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28188{
28189 uint rate1, rate2, band_num;
28190 u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28191 u8 tmp_max_pwr = 0;
28192 u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28193 u8 *tx_srom_max_rate = NULL;
28194
28195 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28196 band_num++) {
28197 switch (band_num) {
28198 case 0:
28199
28200 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28201 pi->nphy_pwrctrl_info[1].max_pwr_2g);
28202
28203 pwr_offsets1[0] = pi->cck2gpo;
28204 wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28205 pwr_offsets1,
28206 tmp_max_pwr,
28207 TXP_FIRST_CCK,
28208 TXP_LAST_CCK);
28209
28210 pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28211 pwr_offsets1[1] =
28212 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28213
28214 pwr_offsets2 = pi->mcs2gpo;
28215
28216 tmp_cddpo = pi->cdd2gpo;
28217 tmp_stbcpo = pi->stbc2gpo;
28218 tmp_bw40po = pi->bw402gpo;
28219
28220 tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28221 break;
28222 case 1:
28223
28224 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28225 pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28226
28227 pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28228 pwr_offsets1[1] =
28229 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28230
28231 pwr_offsets2 = pi->mcs5gpo;
28232
28233 tmp_cddpo = pi->cdd5gpo;
28234 tmp_stbcpo = pi->stbc5gpo;
28235 tmp_bw40po = pi->bw405gpo;
28236
28237 tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28238 break;
28239 case 2:
28240
28241 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28242 pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28243
28244 pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28245 pwr_offsets1[1] =
28246 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28247
28248 pwr_offsets2 = pi->mcs5glpo;
28249
28250 tmp_cddpo = pi->cdd5glpo;
28251 tmp_stbcpo = pi->stbc5glpo;
28252 tmp_bw40po = pi->bw405glpo;
28253
28254 tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28255 break;
28256 case 3:
28257
28258 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28259 pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28260
28261 pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28262 pwr_offsets1[1] =
28263 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28264
28265 pwr_offsets2 = pi->mcs5ghpo;
28266
28267 tmp_cddpo = pi->cdd5ghpo;
28268 tmp_stbcpo = pi->stbc5ghpo;
28269 tmp_bw40po = pi->bw405ghpo;
28270
28271 tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28272 break;
28273 }
28274
28275 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28276 tmp_max_pwr, TXP_FIRST_OFDM,
28277 TXP_LAST_OFDM);
28278
28279 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28280 TXP_FIRST_MCS_20_SISO,
28281 TXP_LAST_MCS_20_SISO,
28282 TXP_FIRST_OFDM);
28283
28284 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28285 tmp_max_pwr,
28286 TXP_FIRST_MCS_20_CDD,
28287 TXP_LAST_MCS_20_CDD);
28288
28289 if (NREV_GE(pi->pubpi.phy_rev, 3))
28290 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28291 TXP_FIRST_MCS_20_CDD,
28292 TXP_LAST_MCS_20_CDD);
28293
28294 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28295 TXP_FIRST_OFDM_20_CDD,
28296 TXP_LAST_OFDM_20_CDD,
28297 TXP_FIRST_MCS_20_CDD);
28298
28299 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28300 tmp_max_pwr,
28301 TXP_FIRST_MCS_20_STBC,
28302 TXP_LAST_MCS_20_STBC);
28303
28304 if (NREV_GE(pi->pubpi.phy_rev, 3))
28305 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28306 tmp_stbcpo,
28307 TXP_FIRST_MCS_20_STBC,
28308 TXP_LAST_MCS_20_STBC);
28309
28310 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28311 &pwr_offsets2[2], tmp_max_pwr,
28312 TXP_FIRST_MCS_20_SDM,
28313 TXP_LAST_MCS_20_SDM);
28314
28315 if (NPHY_IS_SROM_REINTERPRET) {
28316
28317 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28318 &pwr_offsets2[4],
28319 tmp_max_pwr,
28320 TXP_FIRST_MCS_40_SISO,
28321 TXP_LAST_MCS_40_SISO);
28322
28323 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28324 TXP_FIRST_OFDM_40_SISO,
28325 TXP_LAST_OFDM_40_SISO,
28326 TXP_FIRST_MCS_40_SISO);
28327
28328 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28329 &pwr_offsets2[4],
28330 tmp_max_pwr,
28331 TXP_FIRST_MCS_40_CDD,
28332 TXP_LAST_MCS_40_CDD);
28333
28334 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28335 TXP_FIRST_MCS_40_CDD,
28336 TXP_LAST_MCS_40_CDD);
28337
28338 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28339 TXP_FIRST_OFDM_40_CDD,
28340 TXP_LAST_OFDM_40_CDD,
28341 TXP_FIRST_MCS_40_CDD);
28342
28343 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28344 &pwr_offsets2[4],
28345 tmp_max_pwr,
28346 TXP_FIRST_MCS_40_STBC,
28347 TXP_LAST_MCS_40_STBC);
28348
28349 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28350 tmp_stbcpo,
28351 TXP_FIRST_MCS_40_STBC,
28352 TXP_LAST_MCS_40_STBC);
28353
28354 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28355 &pwr_offsets2[6],
28356 tmp_max_pwr,
28357 TXP_FIRST_MCS_40_SDM,
28358 TXP_LAST_MCS_40_SDM);
28359 } else {
28360
28361 for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28362 TXP_FIRST_OFDM;
28363 rate1 <= TXP_LAST_MCS_40_SDM;
28364 rate1++, rate2++)
28365 tx_srom_max_rate[rate1] =
28366 tx_srom_max_rate[rate2];
28367 }
28368
28369 if (NREV_GE(pi->pubpi.phy_rev, 3))
28370 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28371 tmp_bw40po,
28372 TXP_FIRST_OFDM_40_SISO,
28373 TXP_LAST_MCS_40_SDM);
28374
28375 tx_srom_max_rate[TXP_MCS_32] =
28376 tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28377 }
28378
28379 return;
28380}
28381
28382void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28383{
28384 u8 tx_pwr_ctrl_state;
28385 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28386 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28387
28388 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28389
28390 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28391 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28392 (void)R_REG(&pi->regs->maccontrol);
28393 udelay(1);
28394 }
28395
28396 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28397
28398 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28399 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28400}
28401
28402static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28403{
28404 return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28405 (0x1 << 14) | (0x1 << 13));
28406}
28407
28408u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28409{
28410 u16 tmp;
28411 u16 pwr_idx[2];
28412
28413 if (wlc_phy_txpwr_ison_nphy(pi)) {
28414 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28415 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28416
28417 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28418 } else {
28419 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28420 << 8) |
28421 (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28422 }
28423
28424 return tmp;
28425}
28426
28427void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28428{
28429 if (PHY_IPA(pi)
28430 && (pi->nphy_force_papd_cal
28431 || (wlc_phy_txpwr_ison_nphy(pi)
28432 &&
28433 (((u32)
28434 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28435 pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28436 || ((u32)
28437 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28438 pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28439 wlc_phy_a4(pi, true);
28440}
28441
28442void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28443{
28444 u16 mask = 0, val = 0, ishw = 0;
28445 u8 ctr;
28446 uint core;
28447 u32 tbl_offset;
28448 u32 tbl_len;
28449 u16 regval[84];
28450
28451 if (pi->phyhang_avoid)
28452 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28453
28454 switch (ctrl_type) {
28455 case PHY_TPC_HW_OFF:
28456 case PHY_TPC_HW_ON:
28457 pi->nphy_txpwrctrl = ctrl_type;
28458 break;
28459 default:
28460 break;
28461 }
28462
28463 if (ctrl_type == PHY_TPC_HW_OFF) {
28464 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28465
28466 if (wlc_phy_txpwr_ison_nphy(pi)) {
28467 for (core = 0; core < pi->pubpi.phy_corenum;
28468 core++)
28469 pi->nphy_txpwr_idx[core] =
28470 wlc_phy_txpwr_idx_cur_get_nphy(
28471 pi,
28472 (u8) core);
28473 }
28474
28475 }
28476
28477 tbl_len = 84;
28478 tbl_offset = 64;
28479 for (ctr = 0; ctr < tbl_len; ctr++)
28480 regval[ctr] = 0;
28481 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28482 regval);
28483 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28484 regval);
28485
28486 if (NREV_GE(pi->pubpi.phy_rev, 3))
28487 and_phy_reg(pi, 0x1e7,
28488 (u16) (~((0x1 << 15) |
28489 (0x1 << 14) | (0x1 << 13))));
28490 else
28491 and_phy_reg(pi, 0x1e7,
28492 (u16) (~((0x1 << 14) | (0x1 << 13))));
28493
28494 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28495 or_phy_reg(pi, 0x8f, (0x1 << 8));
28496 or_phy_reg(pi, 0xa5, (0x1 << 8));
28497 } else {
28498 or_phy_reg(pi, 0xa5, (0x1 << 14));
28499 }
28500
28501 if (NREV_IS(pi->pubpi.phy_rev, 2))
28502 mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28503 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28504 mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28505
28506 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28507 pi->bw == WL_CHANSPEC_BW_40)
28508 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28509 MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28510
28511 } else {
28512
28513 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28514 8, pi->adj_pwr_tbl_nphy);
28515 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28516 8, pi->adj_pwr_tbl_nphy);
28517
28518 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28519 mask = (0x1 << 14) | (0x1 << 13);
28520 val = (ishw << 14) | (ishw << 13);
28521
28522 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28523 mask |= (0x1 << 15);
28524 val |= (ishw << 15);
28525 }
28526
28527 mod_phy_reg(pi, 0x1e7, mask, val);
28528
28529 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28530 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28531 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28532 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28533 } else {
28534 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28535 if (NREV_GT(pi->pubpi.phy_rev, 1))
28536 mod_phy_reg(pi, 0x222,
28537 (0xff << 0), 0x64);
28538 }
28539 }
28540
28541 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28542 if ((pi->nphy_txpwr_idx[0] != 128)
28543 && (pi->nphy_txpwr_idx[1] != 128))
28544 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28545 pi->
28546 nphy_txpwr_idx
28547 [0],
28548 pi->
28549 nphy_txpwr_idx
28550 [1]);
28551 }
28552
28553 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28554 and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28555 and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28556 } else {
28557 and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28558 }
28559
28560 if (NREV_IS(pi->pubpi.phy_rev, 2))
28561 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28562 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28563 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28564
28565 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28566 pi->bw == WL_CHANSPEC_BW_40)
28567 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28568 0x0, BRCM_BAND_ALL);
28569
28570 if (PHY_IPA(pi)) {
28571 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28572 0x29b, (0x1 << 2), (0) << 2);
28573
28574 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28575 0x29b, (0x1 << 2), (0) << 2);
28576
28577 }
28578
28579 }
28580
28581 if (pi->phyhang_avoid)
28582 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28583}
28584
28585void
28586wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28587 bool restore_cals)
28588{
28589 u8 core, txpwrctl_tbl;
28590 u16 tx_ind0, iq_ind0, lo_ind0;
28591 u16 m1m2;
28592 u32 txgain;
28593 u16 rad_gain, dac_gain;
28594 u8 bbmult;
28595 u32 iqcomp;
28596 u16 iqcomp_a, iqcomp_b;
28597 u32 locomp;
28598 u16 tmpval;
28599 u8 tx_pwr_ctrl_state;
28600 s32 rfpwr_offset;
28601 u16 regval[2];
28602
28603 if (pi->phyhang_avoid)
28604 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28605
28606 tx_ind0 = 192;
28607 iq_ind0 = 320;
28608 lo_ind0 = 448;
28609
28610 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28611
28612 if ((core_mask & (1 << core)) == 0)
28613 continue;
28614
28615 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28616
28617 if (txpwrindex < 0) {
28618 if (pi->nphy_txpwrindex[core].index < 0)
28619 continue;
28620
28621 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28622 mod_phy_reg(pi, 0x8f,
28623 (0x1 << 8),
28624 pi->nphy_txpwrindex[core].
28625 AfectrlOverride);
28626 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28627 pi->nphy_txpwrindex[core].
28628 AfectrlOverride);
28629 } else {
28630 mod_phy_reg(pi, 0xa5,
28631 (0x1 << 14),
28632 pi->nphy_txpwrindex[core].
28633 AfectrlOverride);
28634 }
28635
28636 write_phy_reg(pi, (core == PHY_CORE_0) ?
28637 0xaa : 0xab,
28638 pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28639
28640 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28641 &pi->nphy_txpwrindex[core].
28642 rad_gain);
28643
28644 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28645 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28646 m1m2 |= ((core == PHY_CORE_0) ?
28647 (pi->nphy_txpwrindex[core].bbmult << 8) :
28648 (pi->nphy_txpwrindex[core].bbmult << 0));
28649 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28650
28651 if (restore_cals) {
28652 wlc_phy_table_write_nphy(
28653 pi, 15, 2, (80 + 2 * core), 16,
28654 &pi->nphy_txpwrindex[core].iqcomp_a);
28655 wlc_phy_table_write_nphy(
28656 pi, 15, 1, (85 + core), 16,
28657 &pi->nphy_txpwrindex[core].locomp);
28658 wlc_phy_table_write_nphy(
28659 pi, 15, 1, (93 + core), 16,
28660 &pi->nphy_txpwrindex[core].locomp);
28661 }
28662
28663 wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28664
28665 pi->nphy_txpwrindex[core].index_internal =
28666 pi->nphy_txpwrindex[core].index_internal_save;
28667 } else {
28668
28669 if (pi->nphy_txpwrindex[core].index < 0) {
28670
28671 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28672 mod_phy_reg(pi, 0x8f,
28673 (0x1 << 8),
28674 pi->nphy_txpwrindex[core].
28675 AfectrlOverride);
28676 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28677 pi->nphy_txpwrindex[core].
28678 AfectrlOverride);
28679 } else {
28680 pi->nphy_txpwrindex[core].
28681 AfectrlOverride =
28682 read_phy_reg(pi, 0xa5);
28683 }
28684
28685 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28686 read_phy_reg(pi, (core == PHY_CORE_0) ?
28687 0xaa : 0xab);
28688
28689 wlc_phy_table_read_nphy(pi, 7, 1,
28690 (0x110 + core), 16,
28691 &pi->
28692 nphy_txpwrindex[core].
28693 rad_gain);
28694
28695 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28696 &tmpval);
28697 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28698 tmpval &= 0xff;
28699 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28700
28701 wlc_phy_table_read_nphy(pi, 15, 2,
28702 (80 + 2 * core), 16,
28703 &pi->
28704 nphy_txpwrindex[core].
28705 iqcomp_a);
28706
28707 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28708 16,
28709 &pi->
28710 nphy_txpwrindex[core].
28711 locomp);
28712
28713 pi->nphy_txpwrindex[core].index_internal_save =
28714 pi->nphy_txpwrindex[core].
28715 index_internal;
28716 }
28717
28718 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28719 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28720
28721 if (NREV_IS(pi->pubpi.phy_rev, 1))
28722 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28723
28724 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28725 (tx_ind0 + txpwrindex), 32,
28726 &txgain);
28727
28728 if (NREV_GE(pi->pubpi.phy_rev, 3))
28729 rad_gain = (txgain >> 16) &
28730 ((1 << (32 - 16 + 1)) - 1);
28731 else
28732 rad_gain = (txgain >> 16) &
28733 ((1 << (28 - 16 + 1)) - 1);
28734
28735 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28736 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28737
28738 if (NREV_GE(pi->pubpi.phy_rev, 3))
28739 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28740 0xa5), (0x1 << 8), (0x1 << 8));
28741 else
28742 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28743
28744 write_phy_reg(pi, (core == PHY_CORE_0) ?
28745 0xaa : 0xab, dac_gain);
28746
28747 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28748 &rad_gain);
28749
28750 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28751 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28752 m1m2 |= ((core == PHY_CORE_0) ?
28753 (bbmult << 8) : (bbmult << 0));
28754
28755 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28756
28757 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28758 (iq_ind0 + txpwrindex), 32,
28759 &iqcomp);
28760 iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28761 iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28762
28763 if (restore_cals) {
28764 regval[0] = (u16) iqcomp_a;
28765 regval[1] = (u16) iqcomp_b;
28766 wlc_phy_table_write_nphy(pi, 15, 2,
28767 (80 + 2 * core), 16,
28768 regval);
28769 }
28770
28771 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28772 (lo_ind0 + txpwrindex), 32,
28773 &locomp);
28774 if (restore_cals)
28775 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28776 16, &locomp);
28777
28778 if (NREV_IS(pi->pubpi.phy_rev, 1))
28779 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28780
28781 if (PHY_IPA(pi)) {
28782 wlc_phy_table_read_nphy(pi,
28783 (core == PHY_CORE_0 ?
28784 NPHY_TBL_ID_CORE1TXPWRCTL :
28785 NPHY_TBL_ID_CORE2TXPWRCTL),
28786 1, 576 + txpwrindex, 32,
28787 &rfpwr_offset);
28788
28789 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28790 0x29b, (0x1ff << 4),
28791 ((s16) rfpwr_offset) << 4);
28792
28793 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28794 0x29b, (0x1 << 2), (1) << 2);
28795
28796 }
28797
28798 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28799 }
28800
28801 pi->nphy_txpwrindex[core].index = txpwrindex;
28802 }
28803
28804 if (pi->phyhang_avoid)
28805 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28806}
28807
28808void
28809wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28810 u8 txp_rate_idx)
28811{
28812 u8 chan_freq_range;
28813
28814 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28815 switch (chan_freq_range) {
28816 case WL_CHAN_FREQ_RANGE_2G:
28817 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28818 break;
28819 case WL_CHAN_FREQ_RANGE_5GM:
28820 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28821 break;
28822 case WL_CHAN_FREQ_RANGE_5GL:
28823 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28824 break;
28825 case WL_CHAN_FREQ_RANGE_5GH:
28826 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28827 break;
28828 default:
28829 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28830 break;
28831 }
28832
28833 return;
28834}
28835
28836void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28837{
28838 u16 clip_off[] = { 0xffff, 0xffff };
28839
28840 if (enable) {
28841 if (pi->nphy_deaf_count == 0) {
28842 pi->classifier_state =
28843 wlc_phy_classifier_nphy(pi, 0, 0);
28844 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28845 wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28846 wlc_phy_clip_det_nphy(pi, 1, clip_off);
28847 }
28848
28849 pi->nphy_deaf_count++;
28850
28851 wlc_phy_resetcca_nphy(pi);
28852
28853 } else {
28854 pi->nphy_deaf_count--;
28855
28856 if (pi->nphy_deaf_count == 0) {
28857 wlc_phy_classifier_nphy(pi, (0x7 << 0),
28858 pi->classifier_state);
28859 wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28860 }
28861 }
28862}
28863
28864void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28865{
28866 wlapi_suspend_mac_and_wait(pi->sh->physhim);
28867
28868 if (mode) {
28869 if (pi->nphy_deaf_count == 0)
28870 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28871 } else if (pi->nphy_deaf_count > 0) {
28872 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28873 }
28874
28875 wlapi_enable_mac(pi->sh->physhim);
28876}