1 // SPDX-License-Identifier: ISC
2 /*
3 * Copyright (c) 2010 Broadcom Corporation
4 */
5
6 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
7
8 #include <linux/kernel.h>
9 #include <linux/delay.h>
10 #include <linux/cordic.h>
11
12 #include <brcm_hw_ids.h>
13 #include <aiutils.h>
14 #include <chipcommon.h>
15 #include <pmu.h>
16 #include <d11.h>
17 #include <phy_shim.h>
18 #include "phy_int.h"
19 #include "phy_hal.h"
20 #include "phy_radio.h"
21 #include "phyreg_n.h"
22 #include "phytbl_n.h"
23 #include "soc.h"
24
25 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
26 read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
27 ((core == PHY_CORE_0) ? \
28 radio_type##_##jspace##0 : \
29 radio_type##_##jspace##1))
30
31 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
32 write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
33 ((core == PHY_CORE_0) ? \
34 radio_type##_##jspace##0 : \
35 radio_type##_##jspace##1), value)
36
37 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
38 write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
39
40 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
41 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
42 radio_type##_##jspace##0##_##reg_name : \
43 radio_type##_##jspace##1##_##reg_name))
44
45 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
46 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
47 radio_type##_##jspace##0##_##reg_name : \
48 radio_type##_##jspace##1##_##reg_name), \
49 value)
50
51 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
52 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53 radio_type##_##reg_name##_##jspace##0 : \
54 radio_type##_##reg_name##_##jspace##1))
55
56 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
57 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
58 radio_type##_##reg_name##_##jspace##0 : \
59 radio_type##_##reg_name##_##jspace##1), \
60 value)
61
62 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
63 #define NPHY_ACI_CHANNEL_DELTA 5
64 #define NPHY_ACI_CHANNEL_SKIP 4
65 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
66 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
67 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
68 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
69 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
70 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
71
72 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
73
74 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
75
76 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
77
78 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
79
80 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
81
82 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
83
84 #define NPHY_NOISE_NOASSOC_ENTER_TH 400
85
86 #define NPHY_NOISE_ASSOC_ENTER_TH 400
87
88 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH 400
89
90 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
91 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
92
93 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
94
95 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
96
97 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
98
99 #define NPHY_RSSICAL_MAXREAD 31
100
101 #define NPHY_RSSICAL_NPOLL 8
102 #define NPHY_RSSICAL_MAXD (1<<20)
103 #define NPHY_MIN_RXIQ_PWR 2
104
105 #define NPHY_RSSICAL_W1_TARGET 25
106 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
107 #define NPHY_RSSICAL_NB_TARGET 0
108
109 #define NPHY_RSSICAL_W1_TARGET_REV3 29
110 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
111
112 #define NPHY_CALSANITY_RSSI_NB_MAX_POS 9
113 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
114 #define NPHY_CALSANITY_RSSI_W1_MAX_POS 12
115 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
116 NPHY_RSSICAL_MAXREAD)
117 #define NPHY_CALSANITY_RSSI_W2_MAX_POS NPHY_CALSANITY_RSSI_W1_MAX_POS
118 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
119 NPHY_RSSICAL_MAXREAD)
120 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
121 #define NPHY_RSSI_NB_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
122 ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
123 #define NPHY_RSSI_W1_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
124 ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
125 #define NPHY_RSSI_W2_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
126 ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
127
128 #define NPHY_IQCAL_NUMGAINS 9
129 #define NPHY_N_GCTL 0x66
130
131 #define NPHY_PAPD_EPS_TBL_SIZE 64
132 #define NPHY_PAPD_SCL_TBL_SIZE 64
133 #define NPHY_NUM_DIG_FILT_COEFFS 15
134
135 #define NPHY_PAPD_COMP_OFF 0
136 #define NPHY_PAPD_COMP_ON 1
137
138 #define NPHY_SROM_TEMPSHIFT 32
139 #define NPHY_SROM_MAXTEMPOFFSET 16
140 #define NPHY_SROM_MINTEMPOFFSET -16
141
142 #define NPHY_CAL_MAXTEMPDELTA 64
143
144 #define NPHY_NOISEVAR_TBLLEN40 256
145 #define NPHY_NOISEVAR_TBLLEN20 128
146
147 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
148
149 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
150
151 /* 5357 Chip specific ChipControl register bits */
152 #define CCTRL5357_EXTPA (1<<14) /* extPA in ChipControl 1, bit 14 */
153 #define CCTRL5357_ANT_MUX_2o3 (1<<15) /* 2o3 in ChipControl 1, bit 15 */
154
155 #define NPHY_CAL_TSSISAMPS 64
156 #define NPHY_TEST_TONE_FREQ_40MHz 4000
157 #define NPHY_TEST_TONE_FREQ_20MHz 2500
158
159 #define MAX_205x_RCAL_WAITLOOPS 10000
160
161 #define NPHY_RXCAL_TONEAMP 181
162 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
163 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
164
165 #define TXFILT_SHAPING_OFDM20 0
166 #define TXFILT_SHAPING_OFDM40 1
167 #define TXFILT_SHAPING_CCK 2
168 #define TXFILT_DEFAULT_OFDM20 3
169 #define TXFILT_DEFAULT_OFDM40 4
170
171 struct nphy_iqcal_params {
172 u16 txlpf;
173 u16 txgm;
174 u16 pga;
175 u16 pad;
176 u16 ipa;
177 u16 cal_gain;
178 u16 ncorr[5];
179 };
180
181 struct nphy_txiqcal_ladder {
182 u8 percent;
183 u8 g_env;
184 };
185
186 struct nphy_ipa_txcalgains {
187 struct nphy_txgains gains;
188 bool useindex;
189 u8 index;
190 };
191
192 struct nphy_papd_restore_state {
193 u16 fbmix[2];
194 u16 vga_master[2];
195 u16 intpa_master[2];
196 u16 afectrl[2];
197 u16 afeoverride[2];
198 u16 pwrup[2];
199 u16 atten[2];
200 u16 mm;
201 };
202
203 struct nphy_ipa_txrxgain {
204 u16 hpvga;
205 u16 lpf_biq1;
206 u16 lpf_biq0;
207 u16 lna2;
208 u16 lna1;
209 s8 txpwrindex;
210 };
211
212 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
213
214 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
215 {0, 0, 0, 0, 0, 100},
216 {0, 0, 0, 0, 0, 50},
217 {0, 0, 0, 0, 0, -1},
218 {0, 0, 0, 3, 0, -1},
219 {0, 0, 3, 3, 0, -1},
220 {0, 2, 3, 3, 0, -1}
221 };
222
223 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
224 {0, 0, 0, 0, 0, 128},
225 {0, 0, 0, 0, 0, 70},
226 {0, 0, 0, 0, 0, 20},
227 {0, 0, 0, 3, 0, 20},
228 {0, 0, 3, 3, 0, 20},
229 {0, 2, 3, 3, 0, 20}
230 };
231
232 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
233 {0, 0, 0, 0, 0, 100},
234 {0, 0, 0, 0, 0, 50},
235 {0, 0, 0, 0, 0, -1},
236 {0, 0, 0, 3, 0, -1},
237 {0, 0, 3, 3, 0, -1},
238 {0, 0, 5, 3, 0, -1}
239 };
240
241 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
242 {0, 0, 0, 0, 0, 10},
243 {0, 0, 0, 1, 0, 10},
244 {0, 0, 1, 2, 0, 10},
245 {0, 0, 1, 3, 0, 10},
246 {0, 0, 4, 3, 0, 10},
247 {0, 0, 6, 3, 0, 10}
248 };
249
250 enum {
251 NPHY_RXCAL_GAIN_INIT = 0,
252 NPHY_RXCAL_GAIN_UP,
253 NPHY_RXCAL_GAIN_DOWN
254 };
255
256 #define wlc_phy_get_papd_nphy(pi) \
257 (read_phy_reg((pi), 0x1e7) & \
258 ((0x1 << 15) | \
259 (0x1 << 14) | \
260 (0x1 << 13)))
261
262 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
263 {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
264 230, -44, 230, 201, -191, 201},
265 {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
266 26, 34, -32, 34},
267 {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
268 121, -73, 121, 91, 124, 91},
269 {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
270 151, 301, 151, 602, -752, 602},
271 {-92, 58, -96, 49, -104, 44, 17, 35, 17,
272 12, 25, 12, 13, 27, 13},
273 {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
274 230, -44, 230, 201, -191, 201},
275 {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
276 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
277 };
278
279 struct chan_info_nphy_2055 {
280 u16 chan;
281 u16 freq;
282 uint unknown;
283 u8 RF_pll_ref;
284 u8 RF_rf_pll_mod1;
285 u8 RF_rf_pll_mod0;
286 u8 RF_vco_cap_tail;
287 u8 RF_vco_cal1;
288 u8 RF_vco_cal2;
289 u8 RF_pll_lf_c1;
290 u8 RF_pll_lf_r1;
291 u8 RF_pll_lf_c2;
292 u8 RF_lgbuf_cen_buf;
293 u8 RF_lgen_tune1;
294 u8 RF_lgen_tune2;
295 u8 RF_core1_lgbuf_a_tune;
296 u8 RF_core1_lgbuf_g_tune;
297 u8 RF_core1_rxrf_reg1;
298 u8 RF_core1_tx_pga_pad_tn;
299 u8 RF_core1_tx_mx_bgtrim;
300 u8 RF_core2_lgbuf_a_tune;
301 u8 RF_core2_lgbuf_g_tune;
302 u8 RF_core2_rxrf_reg1;
303 u8 RF_core2_tx_pga_pad_tn;
304 u8 RF_core2_tx_mx_bgtrim;
305 u16 PHY_BW1a;
306 u16 PHY_BW2;
307 u16 PHY_BW3;
308 u16 PHY_BW4;
309 u16 PHY_BW5;
310 u16 PHY_BW6;
311 };
312
313 struct chan_info_nphy_radio205x {
314 u16 chan;
315 u16 freq;
316 u8 RF_SYN_pll_vcocal1;
317 u8 RF_SYN_pll_vcocal2;
318 u8 RF_SYN_pll_refdiv;
319 u8 RF_SYN_pll_mmd2;
320 u8 RF_SYN_pll_mmd1;
321 u8 RF_SYN_pll_loopfilter1;
322 u8 RF_SYN_pll_loopfilter2;
323 u8 RF_SYN_pll_loopfilter3;
324 u8 RF_SYN_pll_loopfilter4;
325 u8 RF_SYN_pll_loopfilter5;
326 u8 RF_SYN_reserved_addr27;
327 u8 RF_SYN_reserved_addr28;
328 u8 RF_SYN_reserved_addr29;
329 u8 RF_SYN_logen_VCOBUF1;
330 u8 RF_SYN_logen_MIXER2;
331 u8 RF_SYN_logen_BUF3;
332 u8 RF_SYN_logen_BUF4;
333 u8 RF_RX0_lnaa_tune;
334 u8 RF_RX0_lnag_tune;
335 u8 RF_TX0_intpaa_boost_tune;
336 u8 RF_TX0_intpag_boost_tune;
337 u8 RF_TX0_pada_boost_tune;
338 u8 RF_TX0_padg_boost_tune;
339 u8 RF_TX0_pgaa_boost_tune;
340 u8 RF_TX0_pgag_boost_tune;
341 u8 RF_TX0_mixa_boost_tune;
342 u8 RF_TX0_mixg_boost_tune;
343 u8 RF_RX1_lnaa_tune;
344 u8 RF_RX1_lnag_tune;
345 u8 RF_TX1_intpaa_boost_tune;
346 u8 RF_TX1_intpag_boost_tune;
347 u8 RF_TX1_pada_boost_tune;
348 u8 RF_TX1_padg_boost_tune;
349 u8 RF_TX1_pgaa_boost_tune;
350 u8 RF_TX1_pgag_boost_tune;
351 u8 RF_TX1_mixa_boost_tune;
352 u8 RF_TX1_mixg_boost_tune;
353 u16 PHY_BW1a;
354 u16 PHY_BW2;
355 u16 PHY_BW3;
356 u16 PHY_BW4;
357 u16 PHY_BW5;
358 u16 PHY_BW6;
359 };
360
361 struct chan_info_nphy_radio2057 {
362 u16 chan;
363 u16 freq;
364 u8 RF_vcocal_countval0;
365 u8 RF_vcocal_countval1;
366 u8 RF_rfpll_refmaster_sparextalsize;
367 u8 RF_rfpll_loopfilter_r1;
368 u8 RF_rfpll_loopfilter_c2;
369 u8 RF_rfpll_loopfilter_c1;
370 u8 RF_cp_kpd_idac;
371 u8 RF_rfpll_mmd0;
372 u8 RF_rfpll_mmd1;
373 u8 RF_vcobuf_tune;
374 u8 RF_logen_mx2g_tune;
375 u8 RF_logen_mx5g_tune;
376 u8 RF_logen_indbuf2g_tune;
377 u8 RF_logen_indbuf5g_tune;
378 u8 RF_txmix2g_tune_boost_pu_core0;
379 u8 RF_pad2g_tune_pus_core0;
380 u8 RF_pga_boost_tune_core0;
381 u8 RF_txmix5g_boost_tune_core0;
382 u8 RF_pad5g_tune_misc_pus_core0;
383 u8 RF_lna2g_tune_core0;
384 u8 RF_lna5g_tune_core0;
385 u8 RF_txmix2g_tune_boost_pu_core1;
386 u8 RF_pad2g_tune_pus_core1;
387 u8 RF_pga_boost_tune_core1;
388 u8 RF_txmix5g_boost_tune_core1;
389 u8 RF_pad5g_tune_misc_pus_core1;
390 u8 RF_lna2g_tune_core1;
391 u8 RF_lna5g_tune_core1;
392 u16 PHY_BW1a;
393 u16 PHY_BW2;
394 u16 PHY_BW3;
395 u16 PHY_BW4;
396 u16 PHY_BW5;
397 u16 PHY_BW6;
398 };
399
400 struct chan_info_nphy_radio2057_rev5 {
401 u16 chan;
402 u16 freq;
403 u8 RF_vcocal_countval0;
404 u8 RF_vcocal_countval1;
405 u8 RF_rfpll_refmaster_sparextalsize;
406 u8 RF_rfpll_loopfilter_r1;
407 u8 RF_rfpll_loopfilter_c2;
408 u8 RF_rfpll_loopfilter_c1;
409 u8 RF_cp_kpd_idac;
410 u8 RF_rfpll_mmd0;
411 u8 RF_rfpll_mmd1;
412 u8 RF_vcobuf_tune;
413 u8 RF_logen_mx2g_tune;
414 u8 RF_logen_indbuf2g_tune;
415 u8 RF_txmix2g_tune_boost_pu_core0;
416 u8 RF_pad2g_tune_pus_core0;
417 u8 RF_lna2g_tune_core0;
418 u8 RF_txmix2g_tune_boost_pu_core1;
419 u8 RF_pad2g_tune_pus_core1;
420 u8 RF_lna2g_tune_core1;
421 u16 PHY_BW1a;
422 u16 PHY_BW2;
423 u16 PHY_BW3;
424 u16 PHY_BW4;
425 u16 PHY_BW5;
426 u16 PHY_BW6;
427 };
428
429 struct nphy_sfo_cfg {
430 u16 PHY_BW1a;
431 u16 PHY_BW2;
432 u16 PHY_BW3;
433 u16 PHY_BW4;
434 u16 PHY_BW5;
435 u16 PHY_BW6;
436 };
437
438 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
439 {
440 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
441 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
442 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
443 {
444 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
445 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
446 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
447 {
448 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
449 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
450 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
451 {
452 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
453 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
454 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
455 {
456 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
457 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
458 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
459 {
460 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
461 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
462 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
463 {
464 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
465 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
466 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
467 {
468 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
469 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
470 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
471 {
472 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
473 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
474 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
475 {
476 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
477 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
478 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
479 {
480 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
481 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
482 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
483 {
484 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
485 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
486 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
487 {
488 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
489 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
490 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
491 {
492 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
493 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
494 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
495 {
496 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
497 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
498 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
499 {
500 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
501 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
502 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
503 {
504 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
505 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
506 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
507 {
508 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
509 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
510 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
511 {
512 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
513 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
514 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
515 {
516 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
517 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
518 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
519 {
520 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
521 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
522 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
523 {
524 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
525 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
526 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
527 {
528 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
529 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
530 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
531 {
532 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
533 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
534 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
535 {
536 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
537 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
538 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
539 {
540 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
541 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
542 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
543 {
544 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
545 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
546 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
547 {
548 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
549 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
550 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
551 {
552 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
553 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
554 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
555 {
556 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
557 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
558 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
559 {
560 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
561 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
562 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
563 {
564 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
565 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
566 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
567 {
568 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
569 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
570 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
571 {
572 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
573 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
574 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
575 {
576 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
577 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
578 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
579 {
580 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
581 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
582 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
583 {
584 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
585 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
586 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
587 {
588 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
589 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
590 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
591 {
592 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
593 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
594 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
595 {
596 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
597 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
598 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
599 {
600 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
601 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
602 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
603 {
604 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
605 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
606 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
607 {
608 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
609 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
610 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
611 {
612 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
613 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
614 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
615 {
616 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
617 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
618 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
619 {
620 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
621 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
622 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
623 {
624 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
625 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
626 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
627 {
628 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
629 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
630 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
631 {
632 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
633 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
634 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
635 {
636 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
637 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
638 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
639 {
640 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
641 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
642 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
643 {
644 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
645 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
646 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
647 {
648 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
649 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
650 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
651 {
652 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
653 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
654 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
655 {
656 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
657 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
658 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
659 {
660 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
661 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
662 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
663 {
664 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
665 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
666 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
667 {
668 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
669 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
670 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
671 {
672 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
673 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
674 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
675 {
676 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
677 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
678 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
679 {
680 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
681 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
682 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
683 {
684 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
685 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
686 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
687 {
688 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
689 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
690 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
691 {
692 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
693 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
694 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
695 {
696 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
697 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
698 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
699 {
700 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
701 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
702 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
703 {
704 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
705 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
706 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
707 {
708 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
709 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
710 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
711 {
712 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
713 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
714 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
715 {
716 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
717 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
718 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
719 {
720 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
721 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
722 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
723 {
724 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
725 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
726 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
727 {
728 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
729 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
730 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
731 {
732 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
733 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
734 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
735 {
736 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
737 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
738 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
739 {
740 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
741 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
742 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
743 {
744 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
745 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
746 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
747 {
748 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
749 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
750 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
751 {
752 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
753 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
754 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
755 {
756 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
757 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
758 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
759 {
760 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
761 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
762 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
763 {
764 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
765 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
766 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
767 {
768 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
769 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
770 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
771 {
772 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
773 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
774 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
775 {
776 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
777 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
778 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
779 {
780 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
781 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
782 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
783 {
784 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
785 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
786 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
787 {
788 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
789 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
790 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
791 {
792 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
793 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
794 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
795 {
796 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
797 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
798 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
799 {
800 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
801 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
802 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
803 {
804 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
805 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
806 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
807 {
808 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
809 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
810 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
811 {
812 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
813 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
814 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
815 {
816 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
817 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
818 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
819 {
820 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
821 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
822 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
823 {
824 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
825 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
826 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
827 {
828 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
829 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
830 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
831 {
832 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
833 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
834 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
835 {
836 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
837 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
838 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
839 {
840 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
841 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
842 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
843 {
844 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
845 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
846 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
847 {
848 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
849 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
850 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
851 {
852 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
853 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
854 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
855 {
856 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
857 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
858 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
859 {
860 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
861 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
862 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
863 {
864 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
865 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
866 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
867 {
868 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
869 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
870 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
871 {
872 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
873 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
874 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
875 {
876 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
877 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
878 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
879 {
880 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
881 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
882 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
883 {
884 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
885 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
886 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
887 {
888 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
889 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
890 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
891 {
892 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
893 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
894 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
895 {
896 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
897 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
898 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
899 {
900 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
901 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
902 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
903 {
904 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
905 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
906 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
907 {
908 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
909 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
910 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
911 {
912 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
913 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
914 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
915 {
916 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
917 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
918 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
919 {
920 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
921 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
922 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
923 {
924 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
925 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
926 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
927 {
928 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
929 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
930 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
931 {
932 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
933 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
934 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
935 };
936
937 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
938 {
939 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
940 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
941 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
942 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
943 {
944 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
945 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
946 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
947 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
948 {
949 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
950 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
951 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
952 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
953 {
954 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
955 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
956 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
957 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
958 {
959 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
960 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
961 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
962 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
963 {
964 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
965 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
966 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
967 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
968 {
969 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
970 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
971 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
972 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
973 {
974 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
975 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
976 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
977 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
978 {
979 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
980 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
981 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
982 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
983 {
984 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
985 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
986 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
987 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
988 {
989 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
990 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
991 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
992 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
993 {
994 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
995 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
996 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
997 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
998 {
999 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1000 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1001 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1002 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1003 {
1004 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1005 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1006 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1007 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1008 {
1009 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1010 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1011 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1012 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1013 {
1014 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1015 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1016 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1017 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1018 {
1019 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1020 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1021 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1022 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1023 {
1024 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1025 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1026 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1027 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1028 {
1029 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1030 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1031 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1032 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1033 {
1034 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1035 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1036 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1037 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1038 {
1039 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1040 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1041 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1042 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1043 {
1044 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1045 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1046 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1047 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1048 {
1049 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1050 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1051 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1052 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1053 {
1054 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1055 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1056 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1057 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1058 {
1059 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1060 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1061 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1062 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1063 {
1064 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1065 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1066 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1067 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1068 {
1069 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1070 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1071 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1072 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1073 {
1074 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1075 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1076 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1077 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1078 {
1079 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1080 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1081 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1082 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1083 {
1084 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1085 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1086 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1087 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1088 {
1089 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1090 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1091 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1092 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1093 {
1094 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1095 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1096 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1097 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1098 {
1099 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1100 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1101 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1102 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1103 {
1104 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1105 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1106 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1107 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1108 {
1109 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1110 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1111 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1112 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1113 {
1114 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1115 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1116 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1117 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1118 {
1119 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1120 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1121 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1122 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1123 {
1124 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1125 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1126 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1127 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1128 {
1129 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1130 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1131 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1132 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1133 {
1134 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1135 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1136 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1137 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1138 {
1139 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1140 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1141 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1142 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1143 {
1144 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1145 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1146 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1147 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1148 {
1149 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1150 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1151 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1152 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1153 {
1154 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1155 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1156 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1157 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1158 {
1159 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1160 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1161 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1162 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1163 {
1164 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1165 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1166 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1167 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1168 {
1169 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1170 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1171 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1172 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1173 {
1174 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1175 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1176 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1177 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1178 {
1179 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1180 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1181 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1182 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1183 {
1184 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1185 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1186 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1187 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1188 {
1189 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1190 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1191 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1192 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1193 {
1194 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1195 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1196 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1197 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1198 {
1199 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1200 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1201 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1202 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1203 {
1204 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1205 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1206 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1207 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1208 {
1209 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1210 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1211 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1212 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1213 {
1214 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1215 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1216 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1217 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1218 {
1219 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1220 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1221 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1222 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1223 {
1224 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1225 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1226 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1227 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1228 {
1229 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1230 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1231 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1232 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1233 {
1234 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1235 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1236 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1237 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1238 {
1239 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1240 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1241 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1242 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1243 {
1244 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1245 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1246 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1247 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1248 {
1249 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1250 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1251 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1252 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1253 {
1254 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1255 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1256 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1257 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1258 {
1259 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1260 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1261 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1262 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1263 {
1264 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1265 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1266 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1267 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1268 {
1269 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1270 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1271 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1272 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1273 {
1274 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1275 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1276 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1277 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1278 {
1279 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1280 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1281 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1282 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1283 {
1284 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1285 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1286 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1287 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1288 {
1289 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1290 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1291 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1292 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1293 {
1294 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1295 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1296 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1297 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1298 {
1299 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1300 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1301 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1302 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1303 {
1304 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1305 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1306 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1307 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1308 {
1309 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1310 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1311 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1312 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1313 {
1314 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1315 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1316 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1317 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1318 {
1319 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1320 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1321 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1322 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1323 {
1324 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1325 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1326 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1327 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1328 {
1329 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1330 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1331 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1332 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1333 {
1334 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1335 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1336 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1337 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1338 {
1339 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1340 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1341 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1342 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1343 {
1344 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1345 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1346 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1347 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1348 {
1349 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1350 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1351 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1352 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1353 {
1354 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1355 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1356 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1357 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1358 {
1359 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1360 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1361 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1362 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1363 {
1364 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1365 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1366 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1367 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1368 {
1369 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1370 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1371 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1372 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1373 {
1374 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1375 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1376 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1377 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1378 {
1379 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1380 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1381 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1382 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1383 {
1384 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1385 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1386 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1387 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1388 {
1389 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1390 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1391 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1392 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1393 {
1394 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1395 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1396 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1397 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1398 {
1399 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1400 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1401 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1402 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1403 {
1404 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1405 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1406 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1407 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1408 {
1409 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1410 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1411 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1412 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1413 {
1414 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1415 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1416 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1417 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1418 {
1419 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1420 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1421 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1422 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1423 {
1424 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1425 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1426 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1427 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1428 {
1429 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1430 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1431 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1432 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1433 {
1434 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1435 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1436 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1437 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1438 {
1439 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1440 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1441 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1442 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1443 {
1444 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1445 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1446 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1447 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1448 {
1449 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1450 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1451 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1452 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1453 {
1454 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1455 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1456 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1457 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1458 {
1459 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1460 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1461 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1462 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1463 {
1464 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1465 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1466 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1467 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1468 {
1469 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1470 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1471 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1472 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1473 {
1474 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1475 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1476 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1477 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1478 {
1479 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1480 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1481 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1482 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1483 {
1484 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1485 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1486 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1487 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1488 {
1489 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1490 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1491 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1492 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1493 {
1494 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1495 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1496 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1497 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1498 {
1499 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1500 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1501 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1502 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1503 {
1504 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1505 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1506 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1507 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1508 {
1509 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1510 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1511 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1512 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1513 {
1514 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1515 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1516 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1517 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1518 {
1519 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1520 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1521 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1522 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1523 {
1524 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1525 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1526 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1527 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1528 {
1529 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1530 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1531 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1532 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1533 {
1534 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1535 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1536 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1537 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1538 {
1539 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1540 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1541 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1542 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1543 {
1544 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1545 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1546 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1547 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1548 {
1549 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1550 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1551 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1552 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1553 {
1554 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1555 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1556 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1557 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1558 };
1559
1560 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1561 {
1562 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1563 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1564 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1565 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1566 {
1567 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1568 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1569 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1570 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1571 {
1572 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1573 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1574 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1575 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1576 {
1577 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1578 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1579 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1580 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1581 {
1582 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1583 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1584 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1585 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1586 {
1587 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1588 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1589 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1590 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1591 {
1592 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1593 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1594 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1595 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1596 {
1597 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1598 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1599 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1600 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1601 {
1602 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1603 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1604 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1605 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1606 {
1607 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1608 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1609 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1610 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1611 {
1612 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1613 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1614 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1615 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1616 {
1617 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1618 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1619 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1620 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1621 {
1622 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1623 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1624 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1625 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1626 {
1627 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1628 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1629 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1630 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1631 {
1632 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1633 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1634 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1635 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1636 {
1637 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1638 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1639 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1640 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1641 {
1642 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1643 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1644 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1645 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1646 {
1647 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1648 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1649 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1650 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1651 {
1652 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1653 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1654 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1655 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1656 {
1657 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1658 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1659 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1660 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1661 {
1662 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1663 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1664 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1665 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1666 {
1667 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1668 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1669 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1670 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1671 {
1672 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1673 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1674 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1675 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1676 {
1677 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1678 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1679 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1680 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1681 {
1682 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1683 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1684 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1685 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1686 {
1687 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1688 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1689 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1690 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1691 {
1692 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1693 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1694 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1695 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1696 {
1697 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1698 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1699 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1700 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1701 {
1702 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1703 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1704 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1705 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1706 {
1707 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1708 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1709 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1710 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1711 {
1712 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1713 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1714 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1715 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1716 {
1717 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1718 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1719 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1720 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1721 {
1722 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1723 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1724 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1725 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1726 {
1727 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1728 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1729 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1730 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1731 {
1732 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1733 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1734 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1735 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1736 {
1737 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1738 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1739 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1740 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1741 {
1742 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1743 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1744 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1745 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1746 {
1747 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1748 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1749 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1750 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1751 {
1752 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1753 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1754 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1755 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1756 {
1757 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1758 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1759 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1760 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1761 {
1762 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1763 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1764 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1765 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1766 {
1767 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1768 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1769 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1770 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1771 {
1772 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1773 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1774 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1775 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1776 {
1777 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1778 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1779 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1780 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1781 {
1782 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1783 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1784 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1785 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1786 {
1787 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1788 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1789 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1790 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1791 {
1792 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1793 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1794 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1795 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1796 {
1797 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1798 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1799 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1800 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1801 {
1802 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1803 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1804 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1805 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1806 {
1807 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1808 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1809 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1810 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1811 {
1812 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1813 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1814 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1815 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1816 {
1817 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1818 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1819 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1820 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1821 {
1822 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1823 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1824 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1825 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1826 {
1827 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1828 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1829 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1830 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1831 {
1832 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1833 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1834 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1835 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1836 {
1837 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1838 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1839 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1840 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1841 {
1842 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1843 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1844 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1845 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1846 {
1847 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1848 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1849 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1850 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1851 {
1852 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1853 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1854 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1855 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1856 {
1857 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1858 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1859 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1860 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1861 {
1862 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1863 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1864 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1865 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1866 {
1867 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1868 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1869 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1870 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1871 {
1872 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1873 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1874 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1875 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1876 {
1877 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1878 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1879 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1880 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1881 {
1882 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1883 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1884 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1885 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1886 {
1887 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1888 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1889 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1890 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1891 {
1892 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1893 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1894 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1895 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1896 {
1897 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1898 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1899 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1900 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1901 {
1902 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1903 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1904 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1905 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1906 {
1907 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1908 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1909 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1910 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1911 {
1912 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1913 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1914 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1915 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1916 {
1917 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1918 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1919 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1920 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1921 {
1922 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1923 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1924 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1925 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1926 {
1927 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1928 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1929 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1930 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1931 {
1932 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1933 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1934 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1935 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1936 {
1937 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1938 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1939 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1940 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1941 {
1942 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1943 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1944 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1945 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1946 {
1947 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1948 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1949 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1950 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1951 {
1952 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1953 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1954 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1955 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1956 {
1957 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1958 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1959 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1960 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1961 {
1962 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1963 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1964 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1965 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1966 {
1967 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1968 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1969 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1970 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1971 {
1972 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1973 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1974 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1975 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1976 {
1977 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1978 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1979 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1980 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1981 {
1982 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1983 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1984 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1985 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1986 {
1987 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1988 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1989 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1990 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1991 {
1992 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1993 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1994 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1995 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1996 {
1997 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1998 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
1999 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2000 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2001 {
2002 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2003 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2004 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2005 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2006 {
2007 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2008 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2009 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2010 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2011 {
2012 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2013 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2014 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2015 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2016 {
2017 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2018 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2019 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2020 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2021 {
2022 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2023 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2024 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2025 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2026 {
2027 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2028 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2029 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2030 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2031 {
2032 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2033 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2034 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2035 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2036 {
2037 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2038 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2039 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2040 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2041 {
2042 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2043 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2044 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2045 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2046 {
2047 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2048 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2049 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2050 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2051 {
2052 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2053 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2054 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2055 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2056 {
2057 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2058 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2059 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2060 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2061 {
2062 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2063 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2064 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2065 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2066 {
2067 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2068 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2069 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2070 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2071 {
2072 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2073 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2074 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2075 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2076 {
2077 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2078 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2079 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2080 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2081 {
2082 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2083 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2084 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2085 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2086 {
2087 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2088 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2089 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2090 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2091 {
2092 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2093 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2094 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2095 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2096 {
2097 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2098 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2099 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2100 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2101 {
2102 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2103 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2104 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2105 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2106 {
2107 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2108 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2109 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2110 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2111 {
2112 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2113 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2114 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2115 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2116 {
2117 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2118 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2119 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2120 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2121 {
2122 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2123 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2124 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2125 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2126 {
2127 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2128 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2129 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2130 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2131 {
2132 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2133 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2134 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2135 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2136 {
2137 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2138 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2139 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2140 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2141 {
2142 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2143 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2144 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2145 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2146 {
2147 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2148 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2149 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2150 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2151 {
2152 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2153 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2154 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2155 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2156 {
2157 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2158 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2159 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2160 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2161 {
2162 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2163 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2164 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2165 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2166 {
2167 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2168 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2169 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2170 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2171 {
2172 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2173 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2174 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2175 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2176 {
2177 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2178 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2179 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2180 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2181 };
2182
2183 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2184 {
2185 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2186 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2187 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2188 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2189 {
2190 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2191 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2192 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2193 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2194 {
2195 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2196 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2197 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2198 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2199 {
2200 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2201 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2202 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2203 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2204 {
2205 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2206 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2207 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2208 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2209 {
2210 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2211 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2212 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2213 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2214 {
2215 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2216 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2217 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2218 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2219 {
2220 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2221 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2222 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2223 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2224 {
2225 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2226 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2227 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2228 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2229 {
2230 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2231 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2232 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2233 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2234 {
2235 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2236 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2237 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2238 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2239 {
2240 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2241 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2242 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2243 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2244 {
2245 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2246 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2247 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2248 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2249 {
2250 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2251 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2252 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2253 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2254 {
2255 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2256 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2257 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2258 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2259 {
2260 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2261 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2262 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2263 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2264 {
2265 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2266 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2267 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2268 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2269 {
2270 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2271 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2272 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2273 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2274 {
2275 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2276 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2277 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2278 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2279 {
2280 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2281 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2282 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2283 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2284 {
2285 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2286 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2287 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2288 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2289 {
2290 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2291 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2292 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2293 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2294 {
2295 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2296 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2297 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2298 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2299 {
2300 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2301 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2302 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2303 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2304 {
2305 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2306 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2307 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2308 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2309 {
2310 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2311 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2312 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2313 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2314 {
2315 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2316 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2317 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2318 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2319 {
2320 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2321 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2322 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2323 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2324 {
2325 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2326 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2327 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2328 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2329 {
2330 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2331 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2332 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2333 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2334 {
2335 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2336 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2337 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2338 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2339 {
2340 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2341 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2342 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2343 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2344 {
2345 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2346 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2347 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2348 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2349 {
2350 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2351 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2352 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2353 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2354 {
2355 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2356 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2357 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2358 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2359 {
2360 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2361 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2362 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2363 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2364 {
2365 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2366 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2367 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2368 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2369 {
2370 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2371 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2372 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2373 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2374 {
2375 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2376 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2377 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2378 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2379 {
2380 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2381 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2382 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2383 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2384 {
2385 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2386 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2387 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2388 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2389 {
2390 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2391 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2392 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2393 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2394 {
2395 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2396 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2397 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2398 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2399 {
2400 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2401 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2402 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2403 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2404 {
2405 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2406 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2407 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2408 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2409 {
2410 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2411 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2412 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2413 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2414 {
2415 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2416 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2417 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2418 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2419 {
2420 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2421 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2422 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2423 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2424 {
2425 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2426 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2427 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2428 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2429 {
2430 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2431 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2432 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2433 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2434 {
2435 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2436 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2437 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2438 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2439 {
2440 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2441 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2442 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2443 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2444 {
2445 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2446 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2447 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2448 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2449 {
2450 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2451 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2452 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2453 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2454 {
2455 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2456 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2457 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2458 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2459 {
2460 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2461 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2462 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2463 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2464 {
2465 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2466 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2467 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2468 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2469 {
2470 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2471 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2472 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2473 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2474 {
2475 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2476 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2477 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2478 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2479 {
2480 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2481 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2482 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2483 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2484 {
2485 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2486 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2487 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2488 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2489 {
2490 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2491 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2492 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2493 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2494 {
2495 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2496 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2497 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2498 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2499 {
2500 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2501 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2502 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2503 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2504 {
2505 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2506 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2507 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2508 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2509 {
2510 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2511 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2512 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2513 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2514 {
2515 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2516 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2517 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2518 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2519 {
2520 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2521 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2522 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2523 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2524 {
2525 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2526 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2527 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2528 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2529 {
2530 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2531 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2532 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2533 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2534 {
2535 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2536 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2537 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2538 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2539 {
2540 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2541 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2542 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2543 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2544 {
2545 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2546 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2547 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2548 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2549 {
2550 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2551 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2552 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2553 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2554 {
2555 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2556 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2557 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2558 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2559 {
2560 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2561 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2562 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2563 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2564 {
2565 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2566 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2567 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2568 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2569 {
2570 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2571 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2572 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2573 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2574 {
2575 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2576 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2577 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2578 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2579 {
2580 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2581 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2582 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2583 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2584 {
2585 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2586 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2587 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2588 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2589 {
2590 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2591 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2592 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2593 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2594 {
2595 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2596 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2597 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2598 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2599 {
2600 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2601 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2602 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2603 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2604 {
2605 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2606 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2607 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2608 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2609 {
2610 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2611 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2612 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2613 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2614 {
2615 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2616 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2617 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2618 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2619 {
2620 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2621 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2622 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2623 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2624 {
2625 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2626 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2627 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2628 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2629 {
2630 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2631 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2632 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2633 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2634 {
2635 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2636 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2637 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2638 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2639 {
2640 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2641 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2642 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2643 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2644 {
2645 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2646 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2647 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2648 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2649 {
2650 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2651 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2652 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2653 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2654 {
2655 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2656 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2657 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2658 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2659 {
2660 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2661 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2662 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2663 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2664 {
2665 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2666 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2667 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2668 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2669 {
2670 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2671 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2672 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2673 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2674 {
2675 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2676 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2677 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2678 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2679 {
2680 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2681 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2682 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2683 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2684 {
2685 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2686 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2687 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2688 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2689 {
2690 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2691 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2692 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2693 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2694 {
2695 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2696 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2697 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2698 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2699 {
2700 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2701 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2702 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2703 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2704 {
2705 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2706 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2707 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2708 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2709 {
2710 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2711 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2712 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2713 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2714 {
2715 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2716 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2717 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2718 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2719 {
2720 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2721 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2722 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2723 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2724 {
2725 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2726 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2727 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2728 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2729 {
2730 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2731 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2732 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2733 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2734 {
2735 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2736 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2737 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2738 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2739 {
2740 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2741 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2742 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2743 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2744 {
2745 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2746 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2747 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2748 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2749 {
2750 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2751 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2752 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2753 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2754 {
2755 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2756 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2757 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2758 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2759 {
2760 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2761 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2762 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2763 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2764 {
2765 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2766 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2767 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2768 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2769 {
2770 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2771 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2772 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2773 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2774 {
2775 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2776 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2777 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2778 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2779 {
2780 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2781 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2782 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2783 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2784 {
2785 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2786 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2787 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2788 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2789 {
2790 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2791 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2792 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2793 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2794 {
2795 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2796 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2797 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2798 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2799 {
2800 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2801 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2802 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2803 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2804 };
2805
2806 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2807 {
2808 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2809 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2810 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2811 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2812 {
2813 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2814 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2815 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2816 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2817 {
2818 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2819 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2820 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2821 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2822 {
2823 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2824 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2825 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2826 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2827 {
2828 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2829 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2830 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2831 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2832 {
2833 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2834 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2835 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2836 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2837 {
2838 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2839 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2840 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2841 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2842 {
2843 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2844 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2845 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2846 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2847 {
2848 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2849 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2850 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2851 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2852 {
2853 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2854 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2855 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2856 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2857 {
2858 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2859 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2860 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2861 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2862 {
2863 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2864 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2865 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2866 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2867 {
2868 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2869 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2870 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2871 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2872 {
2873 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2874 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2875 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2876 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2877 {
2878 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2879 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2880 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2881 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2882 {
2883 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2884 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2885 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2886 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2887 {
2888 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2889 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2890 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2891 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2892 {
2893 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2894 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2895 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2896 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2897 {
2898 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2899 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2900 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2901 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2902 {
2903 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2904 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2905 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2906 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2907 {
2908 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2909 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2910 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2911 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2912 {
2913 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2914 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2915 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2916 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2917 {
2918 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2919 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2920 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2921 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2922 {
2923 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2924 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2925 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2926 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2927 {
2928 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2929 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2930 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2931 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2932 {
2933 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2934 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2935 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2936 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2937 {
2938 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2939 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2940 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2941 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2942 {
2943 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2944 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2945 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2946 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2947 {
2948 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2949 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2950 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2951 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2952 {
2953 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2954 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2955 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2956 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2957 {
2958 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2959 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2960 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2961 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2962 {
2963 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2964 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2965 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2966 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2967 {
2968 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2969 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2970 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2971 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2972 {
2973 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2974 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2975 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2976 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2977 {
2978 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2979 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2980 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2981 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2982 {
2983 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2984 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2985 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2986 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2987 {
2988 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2989 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2990 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2991 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2992 {
2993 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2994 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2995 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2996 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2997 {
2998 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2999 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3000 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3001 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3002 {
3003 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3004 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3005 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3006 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3007 {
3008 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3009 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3010 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3011 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3012 {
3013 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3014 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3015 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3016 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3017 {
3018 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3019 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3020 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3021 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3022 {
3023 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3024 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3025 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3026 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3027 {
3028 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3029 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3030 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3031 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3032 {
3033 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3034 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3035 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3036 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3037 {
3038 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3039 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3040 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3041 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3042 {
3043 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3044 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3045 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3046 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3047 {
3048 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3049 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3050 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3051 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3052 {
3053 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3054 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3055 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3056 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3057 {
3058 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3059 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3060 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3061 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3062 {
3063 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3064 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3065 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3066 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3067 {
3068 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3069 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3070 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3071 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3072 {
3073 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3074 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3075 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3076 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3077 {
3078 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3079 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3080 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3081 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3082 {
3083 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3084 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3085 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3086 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3087 {
3088 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3089 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3090 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3091 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3092 {
3093 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3094 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3095 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3096 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3097 {
3098 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3099 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3100 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3101 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3102 {
3103 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3104 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3105 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3106 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3107 {
3108 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3109 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3110 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3111 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3112 {
3113 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3114 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3115 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3116 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3117 {
3118 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3119 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3120 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3121 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3122 {
3123 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3124 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3125 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3126 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3127 {
3128 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3129 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3130 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3131 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3132 {
3133 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3134 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3135 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3136 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3137 {
3138 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3139 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3140 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3141 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3142 {
3143 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3144 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3145 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3146 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3147 {
3148 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3149 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3150 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3151 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3152 {
3153 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3154 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3155 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3156 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3157 {
3158 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3159 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3160 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3161 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3162 {
3163 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3164 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3165 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3166 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3167 {
3168 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3169 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3170 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3171 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3172 {
3173 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3174 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3175 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3176 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3177 {
3178 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3179 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3180 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3181 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3182 {
3183 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3184 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3185 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3186 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3187 {
3188 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3189 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3190 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3191 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3192 {
3193 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3194 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3195 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3196 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3197 {
3198 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3199 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3200 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3201 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3202 {
3203 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3204 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3205 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3206 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3207 {
3208 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3209 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3210 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3211 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3212 {
3213 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3214 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3215 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3216 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3217 {
3218 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3219 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3220 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3221 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3222 {
3223 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3224 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3225 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3226 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3227 {
3228 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3229 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3230 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3231 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3232 {
3233 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3234 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3235 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3236 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3237 {
3238 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3239 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3240 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3241 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3242 {
3243 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3244 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3245 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3246 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3247 {
3248 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3249 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3250 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3251 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3252 {
3253 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3254 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3255 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3256 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3257 {
3258 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3259 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3260 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3261 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3262 {
3263 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3264 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3265 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3266 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3267 {
3268 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3269 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3270 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3271 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3272 {
3273 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3274 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3275 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3276 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3277 {
3278 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3279 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3280 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3281 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3282 {
3283 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3284 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3285 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3286 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3287 {
3288 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3289 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3290 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3291 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3292 {
3293 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3294 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3295 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3296 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3297 {
3298 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3299 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3300 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3301 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3302 {
3303 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3304 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3305 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3306 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3307 {
3308 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3309 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3310 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3311 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3312 {
3313 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3314 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3315 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3316 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3317 {
3318 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3319 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3320 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3321 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3322 {
3323 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3324 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3325 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3326 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3327 {
3328 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3329 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3330 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3331 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3332 {
3333 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3334 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3335 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3336 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3337 {
3338 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3339 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3340 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3341 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3342 {
3343 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3344 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3345 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3346 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3347 {
3348 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3349 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3350 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3351 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3352 {
3353 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3354 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3355 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3356 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3357 {
3358 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3359 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3360 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3361 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3362 {
3363 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3364 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3365 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3366 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3367 {
3368 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3369 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3370 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3371 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3372 {
3373 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3374 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3375 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3376 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3377 {
3378 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3379 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3380 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3381 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3382 {
3383 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3384 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3385 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3386 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3387 {
3388 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3389 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3390 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3391 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3392 {
3393 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3394 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3395 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3396 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3397 {
3398 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3399 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3400 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3401 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3402 {
3403 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3404 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3405 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3406 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3407 {
3408 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3409 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3410 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3411 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3412 {
3413 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3414 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3415 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3416 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3417 {
3418 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3419 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3420 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3421 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3422 {
3423 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3424 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3425 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3426 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3427 };
3428
3429 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3430 {
3431 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3432 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3433 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3434 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3435 {
3436 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3437 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3438 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3439 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3440 {
3441 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3442 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3443 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3444 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3445 {
3446 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3447 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3448 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3449 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3450 {
3451 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3452 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3453 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3454 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3455 {
3456 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3457 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3458 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3459 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3460 {
3461 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3462 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3463 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3464 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3465 {
3466 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3467 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3468 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3469 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3470 {
3471 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3472 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3473 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3474 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3475 {
3476 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3477 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3478 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3479 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3480 {
3481 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3482 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3483 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3484 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3485 {
3486 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3487 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3488 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3489 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3490 {
3491 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3492 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3493 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3494 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3495 {
3496 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3497 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3498 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3499 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3500 {
3501 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3502 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3503 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3504 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3505 {
3506 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3507 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3508 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3509 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3510 {
3511 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3512 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3513 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3514 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3515 {
3516 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3517 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3518 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3519 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3520 {
3521 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3522 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3523 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3524 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3525 {
3526 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3527 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3528 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3529 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3530 {
3531 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3532 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3533 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3534 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3535 {
3536 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3537 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3538 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3539 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3540 {
3541 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3542 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3543 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3544 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3545 {
3546 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3547 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3548 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3549 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3550 {
3551 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3552 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3553 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3554 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3555 {
3556 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3557 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3558 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3559 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3560 {
3561 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3562 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3563 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3564 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3565 {
3566 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3567 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3568 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3569 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3570 {
3571 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3572 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3573 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3574 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3575 {
3576 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3577 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3578 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3579 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3580 {
3581 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3582 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3583 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3584 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3585 {
3586 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3587 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3588 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3589 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3590 {
3591 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3592 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3593 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3594 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3595 {
3596 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3597 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3598 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3599 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3600 {
3601 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3602 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3603 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3604 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3605 {
3606 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3607 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3608 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3609 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3610 {
3611 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3612 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3613 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3614 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3615 {
3616 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3617 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3618 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3619 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3620 {
3621 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3622 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3623 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3624 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3625 {
3626 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3627 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3628 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3629 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3630 {
3631 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3632 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3633 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3634 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3635 {
3636 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3637 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3638 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3639 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3640 {
3641 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3642 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3643 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3644 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3645 {
3646 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3647 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3648 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3649 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3650 {
3651 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3652 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3653 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3654 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3655 {
3656 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3657 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3658 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3659 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3660 {
3661 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3662 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3663 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3664 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3665 {
3666 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3667 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3668 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3669 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3670 {
3671 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3672 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3673 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3674 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3675 {
3676 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3677 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3678 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3679 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3680 {
3681 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3682 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3683 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3684 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3685 {
3686 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3687 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3688 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3689 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3690 {
3691 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3692 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3693 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3694 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3695 {
3696 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3697 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3698 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3699 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3700 {
3701 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3702 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3703 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3704 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3705 {
3706 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3707 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3708 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3709 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3710 {
3711 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3712 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3713 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3714 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3715 {
3716 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3717 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3718 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3719 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3720 {
3721 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3722 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3723 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3724 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3725 {
3726 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3727 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3728 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3729 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3730 {
3731 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3732 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3733 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3734 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3735 {
3736 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3737 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3738 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3739 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3740 {
3741 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3742 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3743 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3744 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3745 {
3746 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3747 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3748 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3749 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3750 {
3751 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3752 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3753 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3754 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3755 {
3756 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3757 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3758 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3759 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3760 {
3761 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3762 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3763 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3764 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3765 {
3766 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3767 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3768 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3769 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3770 {
3771 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3772 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3773 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3774 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3775 {
3776 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3777 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3778 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3779 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3780 {
3781 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3782 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3783 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3784 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3785 {
3786 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3787 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3788 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3789 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3790 {
3791 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3792 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3793 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3794 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3795 {
3796 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3797 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3798 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3799 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3800 {
3801 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3802 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3803 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3804 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3805 {
3806 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3807 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3808 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3809 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3810 {
3811 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3812 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3813 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3814 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3815 {
3816 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3817 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3818 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3819 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3820 {
3821 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3822 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3823 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3824 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3825 {
3826 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3827 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3828 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3829 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3830 {
3831 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3832 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3833 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3834 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3835 {
3836 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3837 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3838 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3839 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3840 {
3841 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3842 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3843 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3844 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3845 {
3846 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3847 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3848 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3849 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3850 {
3851 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3852 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3853 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3854 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3855 {
3856 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3857 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3858 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3859 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3860 {
3861 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3862 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3863 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3864 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3865 {
3866 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3867 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3868 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3869 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3870 {
3871 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3872 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3873 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3874 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3875 {
3876 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3877 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3878 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3879 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3880 {
3881 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3882 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3883 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3884 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3885 {
3886 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3887 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3888 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3889 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3890 {
3891 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3892 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3893 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3894 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3895 {
3896 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3897 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3898 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3899 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3900 {
3901 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3902 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3903 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3904 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3905 {
3906 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3907 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3908 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3909 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3910 {
3911 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3912 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3913 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3914 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3915 {
3916 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3917 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3918 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3919 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3920 {
3921 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3922 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3923 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3924 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3925 {
3926 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3927 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3928 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3929 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3930 {
3931 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3932 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3933 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3934 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3935 {
3936 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3937 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3938 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3939 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3940 {
3941 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3942 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3943 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3944 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3945 {
3946 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3947 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3948 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3949 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3950 {
3951 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3952 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3953 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3954 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3955 {
3956 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3957 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3958 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3959 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3960 {
3961 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3962 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3963 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3964 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3965 {
3966 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3967 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3968 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3969 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3970 {
3971 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3972 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3973 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3974 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3975 {
3976 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3977 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3978 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3979 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3980 {
3981 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3982 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3983 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3984 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3985 {
3986 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3987 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3988 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3989 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3990 {
3991 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3992 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3993 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3994 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3995 {
3996 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3997 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3998 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3999 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4000 {
4001 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4002 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4003 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4004 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4005 {
4006 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4007 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4008 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4009 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4010 {
4011 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4012 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4013 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4014 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4015 {
4016 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4017 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4018 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4019 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4020 {
4021 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4022 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4023 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4024 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4025 {
4026 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4027 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4028 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4029 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4030 {
4031 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4032 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4033 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4034 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4035 {
4036 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4037 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4038 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4039 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4040 {
4041 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4042 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4043 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4044 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4045 {
4046 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4047 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4048 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4049 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4050 };
4051
4052 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4053 {
4054 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4055 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4056 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4057 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4058 {
4059 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4060 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4061 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4062 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4063 {
4064 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4065 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4066 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4067 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4068 {
4069 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4070 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4071 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4072 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4073 {
4074 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4075 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4076 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4077 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4078 {
4079 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4080 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4081 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4082 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4083 {
4084 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4085 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4086 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4087 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4088 {
4089 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4090 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4091 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4092 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4093 {
4094 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4095 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4096 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4097 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4098 {
4099 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4100 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4101 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4102 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4103 {
4104 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4105 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4106 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4107 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4108 {
4109 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4110 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4111 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4112 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4113 {
4114 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4115 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4116 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4117 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4118 {
4119 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4120 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4121 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4122 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4123 {
4124 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4125 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4126 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4127 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4128 {
4129 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4130 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4131 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4132 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4133 {
4134 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4135 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4136 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4137 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4138 {
4139 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4140 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4141 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4142 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4143 {
4144 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4145 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4146 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4147 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4148 {
4149 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4150 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4151 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4152 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4153 {
4154 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4155 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4156 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4157 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4158 {
4159 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4160 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4161 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4162 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4163 {
4164 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4165 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4166 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4167 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4168 {
4169 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4170 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4171 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4172 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4173 {
4174 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4175 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4176 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4177 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4178 {
4179 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4180 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4181 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4182 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4183 {
4184 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4185 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4186 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4187 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4188 {
4189 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4190 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4191 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4192 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4193 {
4194 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4195 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4196 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4197 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4198 {
4199 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4200 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4201 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4202 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4203 {
4204 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4205 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4206 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4207 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4208 {
4209 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4210 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4211 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4212 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4213 {
4214 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4215 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4216 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4217 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4218 {
4219 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4220 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4221 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4222 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4223 {
4224 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4225 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4226 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4227 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4228 {
4229 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4230 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4231 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4232 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4233 {
4234 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4235 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4236 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4237 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4238 {
4239 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4240 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4241 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4242 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4243 {
4244 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4245 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4246 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4247 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4248 {
4249 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4250 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4251 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4252 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4253 {
4254 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4255 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4256 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4257 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4258 {
4259 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4260 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4261 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4262 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4263 {
4264 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4265 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4266 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4267 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4268 {
4269 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4270 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4271 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4272 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4273 {
4274 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4275 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4276 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4277 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4278 {
4279 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4280 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4281 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4282 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4283 {
4284 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4285 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4286 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4287 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4288 {
4289 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4290 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4291 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4292 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4293 {
4294 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4295 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4296 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4297 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4298 {
4299 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4300 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4301 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4302 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4303 {
4304 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4305 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4306 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4307 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4308 {
4309 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4310 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4311 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4312 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4313 {
4314 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4315 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4316 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4317 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4318 {
4319 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4320 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4321 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4322 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4323 {
4324 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4325 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4326 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4327 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4328 {
4329 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4330 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4331 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4332 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4333 {
4334 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4335 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4336 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4337 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4338 {
4339 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4340 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4341 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4342 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4343 {
4344 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4345 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4346 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4347 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4348 {
4349 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4350 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4351 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4352 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4353 {
4354 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4355 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4356 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4357 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4358 {
4359 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4360 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4361 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4362 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4363 {
4364 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4365 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4366 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4367 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4368 {
4369 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4370 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4371 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4372 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4373 {
4374 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4375 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4376 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4377 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4378 {
4379 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4380 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4381 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4382 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4383 {
4384 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4385 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4386 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4387 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4388 {
4389 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4390 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4391 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4392 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4393 {
4394 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4395 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4396 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4397 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4398 {
4399 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4400 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4401 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4402 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4403 {
4404 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4405 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4406 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4407 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4408 {
4409 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4410 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4411 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4412 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4413 {
4414 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4415 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4416 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4417 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4418 {
4419 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4420 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4421 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4422 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4423 {
4424 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4425 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4426 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4427 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4428 {
4429 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4430 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4431 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4432 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4433 {
4434 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4435 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4436 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4437 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4438 {
4439 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4440 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4441 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4442 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4443 {
4444 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4445 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4446 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4447 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4448 {
4449 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4450 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4451 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4452 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4453 {
4454 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4455 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4456 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4457 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4458 {
4459 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4460 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4461 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4462 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4463 {
4464 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4465 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4466 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4467 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4468 {
4469 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4470 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4471 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4472 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4473 {
4474 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4475 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4476 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4477 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4478 {
4479 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4480 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4481 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4482 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4483 {
4484 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4485 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4486 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4487 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4488 {
4489 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4490 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4491 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4492 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4493 {
4494 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4495 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4496 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4497 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4498 {
4499 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4500 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4501 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4502 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4503 {
4504 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4505 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4506 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4507 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4508 {
4509 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4510 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4511 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4512 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4513 {
4514 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4515 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4516 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4517 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4518 {
4519 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4520 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4521 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4522 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4523 {
4524 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4525 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4526 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4527 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4528 {
4529 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4530 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4531 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4532 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4533 {
4534 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4535 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4536 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4537 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4538 {
4539 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4540 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4541 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4542 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4543 {
4544 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4545 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4546 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4547 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4548 {
4549 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4550 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4551 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4552 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4553 {
4554 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4555 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4556 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4557 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4558 {
4559 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4560 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4561 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4562 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4563 {
4564 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4565 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4566 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4567 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4568 {
4569 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4570 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4571 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4572 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4573 {
4574 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4575 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4576 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4577 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4578 {
4579 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4580 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4581 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4582 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4583 {
4584 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4585 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4586 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4587 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4588 {
4589 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4590 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4591 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4592 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4593 {
4594 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4595 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4596 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4597 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4598 {
4599 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4600 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4601 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4602 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4603 {
4604 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4605 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4606 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4607 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4608 {
4609 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4610 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4611 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4612 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4613 {
4614 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4615 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4616 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4617 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4618 {
4619 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4620 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4621 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4622 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4623 {
4624 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4625 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4626 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4627 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4628 {
4629 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4630 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4631 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4632 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4633 {
4634 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4635 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4636 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4637 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4638 {
4639 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4640 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4641 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4642 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4643 {
4644 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4645 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4646 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4647 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4648 {
4649 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4650 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4651 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4652 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4653 {
4654 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4655 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4656 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4657 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4658 {
4659 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4660 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4661 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4662 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4663 {
4664 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4665 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4666 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4667 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4668 {
4669 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4670 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4671 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4672 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4673 };
4674
4675 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4676 {
4677 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4678 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4679 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4680 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4681 {
4682 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4683 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4684 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4685 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4686 {
4687 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4688 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4689 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4690 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4691 {
4692 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4693 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4694 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4695 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4696 {
4697 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4698 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4699 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4700 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4701 {
4702 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4703 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4704 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4705 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4706 {
4707 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4708 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4709 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4710 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4711 {
4712 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4713 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4714 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4715 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4716 {
4717 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4718 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4719 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4720 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4721 {
4722 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4723 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4724 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4725 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4726 {
4727 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4728 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4729 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4730 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4731 {
4732 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4733 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4734 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4735 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4736 {
4737 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4738 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4739 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4740 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4741 {
4742 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4743 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4744 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4745 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4746 {
4747 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4748 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4749 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4750 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4751 {
4752 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4753 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4754 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4755 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4756 {
4757 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4758 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4759 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4760 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4761 {
4762 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4763 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4764 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4765 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4766 {
4767 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4768 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4769 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4770 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4771 {
4772 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4773 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4774 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4775 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4776 {
4777 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4778 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4779 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4780 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4781 {
4782 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4783 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4784 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4785 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4786 {
4787 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4788 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4789 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4790 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4791 {
4792 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4793 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4794 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4795 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4796 {
4797 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4798 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4799 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4800 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4801 {
4802 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4803 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4804 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4805 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4806 {
4807 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4808 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4809 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4810 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4811 {
4812 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4813 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4814 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4815 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4816 {
4817 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4818 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4819 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4820 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4821 {
4822 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4823 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4824 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4825 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4826 {
4827 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4828 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4829 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4830 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4831 {
4832 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4833 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4834 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4835 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4836 {
4837 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4838 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4839 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4840 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4841 {
4842 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4843 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4844 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4845 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4846 {
4847 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4848 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4849 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4850 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4851 {
4852 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4853 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4854 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4855 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4856 {
4857 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4858 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4859 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4860 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4861 {
4862 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4863 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4864 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4865 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4866 {
4867 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4868 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4869 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4870 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4871 {
4872 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4873 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4874 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4875 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4876 {
4877 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4878 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4879 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4880 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4881 {
4882 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4883 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4884 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4885 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4886 {
4887 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4888 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4889 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4890 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4891 {
4892 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4893 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4894 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4895 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4896 {
4897 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4898 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4899 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4900 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4901 {
4902 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4903 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4904 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4905 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4906 {
4907 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4908 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4909 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4910 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4911 {
4912 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4913 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4914 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4915 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4916 {
4917 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4918 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4919 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4920 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4921 {
4922 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4923 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4924 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4925 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4926 {
4927 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4928 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4929 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4930 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4931 {
4932 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4933 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4934 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4935 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4936 {
4937 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4938 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4939 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4940 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4941 {
4942 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4943 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4944 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4945 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4946 {
4947 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4948 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4949 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4950 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4951 {
4952 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4953 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4954 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4955 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4956 {
4957 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4958 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4959 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4960 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4961 {
4962 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4963 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4964 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4965 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4966 {
4967 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4968 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4969 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4970 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4971 {
4972 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4973 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4974 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4975 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4976 {
4977 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4978 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4979 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4980 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4981 {
4982 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4983 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4984 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4985 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4986 {
4987 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4988 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4989 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4990 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4991 {
4992 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4993 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4994 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4995 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4996 {
4997 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4998 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4999 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5000 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5001 {
5002 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5003 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5004 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5005 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5006 {
5007 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5008 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5009 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5010 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5011 {
5012 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5013 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5014 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5015 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5016 {
5017 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5018 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5019 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5020 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5021 {
5022 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5023 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5024 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5025 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5026 {
5027 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5028 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5029 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5030 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5031 {
5032 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5033 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5034 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5035 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5036 {
5037 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5038 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5039 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5040 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5041 {
5042 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5043 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5044 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5045 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5046 {
5047 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5048 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5049 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5050 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5051 {
5052 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5053 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5054 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5055 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5056 {
5057 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5058 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5059 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5060 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5061 {
5062 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5063 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5064 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5065 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5066 {
5067 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5068 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5069 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5070 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5071 {
5072 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5073 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5074 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5075 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5076 {
5077 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5078 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5079 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5080 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5081 {
5082 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5083 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5084 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5085 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5086 {
5087 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5088 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5089 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5090 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5091 {
5092 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5093 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5094 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5095 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5096 {
5097 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5098 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5099 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5100 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5101 {
5102 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5103 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5104 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5105 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5106 {
5107 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5108 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5109 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5110 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5111 {
5112 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5113 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5114 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5115 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5116 {
5117 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5118 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5119 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5120 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5121 {
5122 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5123 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5124 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5125 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5126 {
5127 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5128 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5129 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5130 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5131 {
5132 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5133 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5134 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5135 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5136 {
5137 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5138 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5139 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5140 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5141 {
5142 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5143 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5144 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5145 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5146 {
5147 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5148 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5149 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5150 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5151 {
5152 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5153 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5154 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5155 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5156 {
5157 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5158 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5159 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5160 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5161 {
5162 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5163 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5164 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5165 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5166 {
5167 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5168 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5169 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5170 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5171 {
5172 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5173 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5174 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5175 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5176 {
5177 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5178 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5179 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5180 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5181 {
5182 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5183 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5184 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5185 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5186 {
5187 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5188 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5189 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5190 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5191 {
5192 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5193 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5194 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5195 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5196 {
5197 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5198 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5199 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5200 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5201 {
5202 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5203 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5204 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5205 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5206 {
5207 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5208 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5209 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5210 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5211 {
5212 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5213 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5214 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5215 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5216 {
5217 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5218 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5219 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5220 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5221 {
5222 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5223 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5224 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5225 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5226 {
5227 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5228 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5229 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5230 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5231 {
5232 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5233 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5234 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5235 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5236 {
5237 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5238 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5239 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5240 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5241 {
5242 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5243 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5244 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5245 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5246 {
5247 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5248 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5249 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5250 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5251 {
5252 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5253 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5254 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5255 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5256 {
5257 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5258 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5259 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5260 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5261 {
5262 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5263 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5264 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5265 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5266 {
5267 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5268 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5269 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5270 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5271 {
5272 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5273 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5274 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5275 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5276 {
5277 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5278 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5279 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5280 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5281 {
5282 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5283 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5284 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5285 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5286 {
5287 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5288 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5289 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5290 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5291 {
5292 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5293 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5294 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5295 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5296 };
5297
5298 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5299 {
5300 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5301 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5302 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5303 0x0215,
5304 0x0216,
5305 },
5306 {
5307 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5308 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5309 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5310 0x0214,
5311 0x0215,
5312 },
5313 {
5314 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5315 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5316 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5317 0x0213,
5318 0x0214,
5319 },
5320 {
5321 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5322 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5323 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5324 0x0212,
5325 0x0213,
5326 },
5327 {
5328 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5329 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5330 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5331 0x0211,
5332 0x0212,
5333 },
5334 {
5335 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5336 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5337 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5338 0x020f,
5339 0x0211,
5340 },
5341 {
5342 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5343 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5344 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5345 0x020e,
5346 0x020f,
5347 },
5348 {
5349 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5350 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5351 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5352 0x020d,
5353 0x020e,
5354 },
5355 {
5356 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5357 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5358 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5359 0x020c,
5360 0x020d,
5361 },
5362 {
5363 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5364 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5365 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5366 0x020b,
5367 0x020c,
5368 },
5369 {
5370 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5371 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5372 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5373 0x020a,
5374 0x020b,
5375 },
5376 {
5377 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5378 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5379 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5380 0x0209,
5381 0x020a,
5382 },
5383 {
5384 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5385 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5386 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5387 0x0208,
5388 0x0209,
5389 },
5390 {
5391 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5392 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5393 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5394 0x0207,
5395 0x0208,
5396 },
5397 {
5398 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5399 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5400 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5401 0x0206,
5402 0x0207,
5403 },
5404 {
5405 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5406 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5407 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5408 0x0205,
5409 0x0206,
5410 },
5411 {
5412 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5413 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5414 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5415 0x0204,
5416 0x0205,
5417 },
5418 {
5419 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5420 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5421 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5422 0x0203,
5423 0x0204,
5424 },
5425 {
5426 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5427 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5428 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5429 0x0202,
5430 0x0203,
5431 },
5432 {
5433 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5434 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5435 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5436 0x0201,
5437 0x0202,
5438 },
5439 {
5440 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5441 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5442 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5443 0x0200,
5444 0x0201,
5445 },
5446 {
5447 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5448 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5449 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5450 0x01ff,
5451 0x0200,
5452 },
5453 {
5454 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5455 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5456 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5457 0x01fe,
5458 0x01ff,
5459 },
5460 {
5461 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5462 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5463 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5464 0x01fc,
5465 0x01fd,
5466 },
5467 {
5468 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5469 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5470 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5471 0x01fb,
5472 0x01fc,
5473 },
5474 {
5475 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5476 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5477 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5478 0x01fa,
5479 0x01fb,
5480 },
5481 {
5482 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5483 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5484 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5485 0x01f9,
5486 0x01fa,
5487 },
5488 {
5489 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5490 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5491 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5492 0x01f8,
5493 0x01f9,
5494 },
5495 {
5496 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5497 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5498 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5499 0x01f7,
5500 0x01f8,
5501 },
5502 {
5503 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5504 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5505 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5506 0x01f6,
5507 0x01f7,
5508 },
5509 {
5510 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5511 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5512 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5513 0x01f5,
5514 0x01f6,
5515 },
5516 {
5517 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5518 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5519 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5520 0x01f4,
5521 0x01f5,
5522 },
5523 {
5524 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5525 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5526 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5527 0x01f3,
5528 0x01f4,
5529 },
5530 {
5531 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5532 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5533 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5534 0x01f2,
5535 0x01f3,
5536 },
5537 {
5538 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5539 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5540 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5541 0x01f1,
5542 0x01f2,
5543 },
5544 {
5545 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5546 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5547 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5548 0x01f0,
5549 0x01f1,
5550 },
5551 {
5552 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5553 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5554 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5555 0x01f0,
5556 0x01f0,
5557 },
5558 {
5559 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5560 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5561 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5562 0x01ef,
5563 0x01f0,
5564 },
5565 {
5566 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5567 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5568 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5569 0x01ee,
5570 0x01ef,
5571 },
5572 {
5573 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5574 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5575 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5576 0x01ed,
5577 0x01ee,
5578 },
5579 {
5580 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5581 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5582 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5583 0x01ec,
5584 0x01ed,
5585 },
5586 {
5587 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5588 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5589 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5590 0x01eb,
5591 0x01ec,
5592 },
5593 {
5594 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5595 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5596 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5597 0x01ea,
5598 0x01eb,
5599 },
5600 {
5601 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5602 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5603 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5604 0x01e9,
5605 0x01ea,
5606 },
5607 {
5608 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5609 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5610 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5611 0x01e8,
5612 0x01e9,
5613 },
5614 {
5615 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5616 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5617 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5618 0x01e7,
5619 0x01e8,
5620 },
5621 {
5622 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5623 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5624 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5625 0x01e6,
5626 0x01e7,
5627 },
5628 {
5629 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5630 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5631 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5632 0x01e5,
5633 0x01e6,
5634 },
5635 {
5636 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5637 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5638 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5639 0x01e5,
5640 0x01e5,
5641 },
5642 {
5643 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5644 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5645 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5646 0x01e4,
5647 0x01e5,
5648 },
5649 {
5650 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5651 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5652 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5653 0x01e3,
5654 0x01e4,
5655 },
5656 {
5657 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5658 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5659 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5660 0x01e2,
5661 0x01e3,
5662 },
5663 {
5664 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5665 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5666 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5667 0x01e1,
5668 0x01e2,
5669 },
5670 {
5671 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5672 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5673 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5674 0x01e0,
5675 0x01e1,
5676 },
5677 {
5678 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5679 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5680 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5681 0x01df,
5682 0x01e0,
5683 },
5684 {
5685 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5686 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5687 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5688 0x01de,
5689 0x01df,
5690 },
5691 {
5692 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5693 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5694 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5695 0x01dd,
5696 0x01de,
5697 },
5698 {
5699 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5700 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5701 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5702 0x01dd,
5703 0x01dd,
5704 },
5705 {
5706 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5707 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5708 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5709 0x01dc,
5710 0x01dd,
5711 },
5712 {
5713 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5714 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5715 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5716 0x01db,
5717 0x01dc,
5718 },
5719 {
5720 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5721 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5722 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5723 0x01da,
5724 0x01db,
5725 },
5726 {
5727 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5728 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5729 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5730 0x01d9,
5731 0x01da,
5732 },
5733 {
5734 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5735 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5736 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5737 0x01d8,
5738 0x01d9,
5739 },
5740 {
5741 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5742 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5743 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5744 0x01d7,
5745 0x01d8,
5746 },
5747 {
5748 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5749 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5750 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5751 0x01d7,
5752 0x01d7,
5753 },
5754 {
5755 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5756 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5757 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5758 0x01d6,
5759 0x01d7,
5760 },
5761 {
5762 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5763 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5764 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5765 0x01d5,
5766 0x01d6,
5767 },
5768 {
5769 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5770 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5771 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5772 0x01d4,
5773 0x01d5,
5774 },
5775 {
5776 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5777 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5778 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5779 0x01d3,
5780 0x01d4,
5781 },
5782 {
5783 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5784 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5785 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5786 0x01d2,
5787 0x01d3,
5788 },
5789 {
5790 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5791 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5792 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5793 0x01d2,
5794 0x01d2,
5795 },
5796 {
5797 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5798 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5799 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5800 0x01d1,
5801 0x01d2,
5802 },
5803 {
5804 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5805 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5806 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5807 0x01d0,
5808 0x01d1,
5809 },
5810 {
5811 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5812 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5813 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5814 0x01cf,
5815 0x01d0,
5816 },
5817 {
5818 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5819 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5820 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5821 0x01ce,
5822 0x01cf,
5823 },
5824 {
5825 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5826 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5827 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5828 0x01ce,
5829 0x01ce,
5830 },
5831 {
5832 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5833 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5834 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5835 0x01cd,
5836 0x01ce,
5837 },
5838 {
5839 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5840 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5841 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5842 0x01cc,
5843 0x01cd,
5844 },
5845 {
5846 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5847 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5848 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5849 0x01cb,
5850 0x01cc,
5851 },
5852 {
5853 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5854 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5855 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5856 0x01ca,
5857 0x01cb,
5858 },
5859 {
5860 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5861 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5862 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5863 0x01ca,
5864 0x01cb,
5865 },
5866 {
5867 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5868 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5869 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5870 0x01c9,
5871 0x01ca,
5872 },
5873 {
5874 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5875 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5876 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5877 0x01c9,
5878 0x01ca,
5879 },
5880 {
5881 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5882 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5883 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5884 0x01c9,
5885 0x01c9,
5886 },
5887 {
5888 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5889 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5890 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5891 0x01c8,
5892 0x01c9,
5893 },
5894 {
5895 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5896 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5897 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5898 0x01c8,
5899 0x01c9,
5900 },
5901 {
5902 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5903 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5904 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5905 0x01c8,
5906 0x01c8,
5907 },
5908 {
5909 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5910 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5911 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5912 0x01c7,
5913 0x01c8,
5914 },
5915 {
5916 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5917 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5918 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5919 0x01c7,
5920 0x01c8,
5921 },
5922 {
5923 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5924 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5925 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5926 0x01c6,
5927 0x01c7,
5928 },
5929 {
5930 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5931 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5932 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5933 0x01c6,
5934 0x01c7,
5935 },
5936 {
5937 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5938 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5939 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5940 0x01c6,
5941 0x01c6,
5942 },
5943 {
5944 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5945 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5946 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5947 0x01c5,
5948 0x01c6,
5949 },
5950 {
5951 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5952 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5953 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5954 0x01c5,
5955 0x01c6,
5956 },
5957 {
5958 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5959 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5960 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5961 0x01c4,
5962 0x01c5,
5963 },
5964 {
5965 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5966 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5967 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5968 0x01c4,
5969 0x01c5,
5970 },
5971 {
5972 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5973 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5974 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5975 0x01c4,
5976 0x01c4,
5977 },
5978 {
5979 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5980 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5981 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5982 0x01c3,
5983 0x01c4,
5984 },
5985 {
5986 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5987 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5988 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5989 0x01c3,
5990 0x01c4,
5991 },
5992 {
5993 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
5994 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5995 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
5996 0x01c2,
5997 0x01c3,
5998 },
5999 {
6000 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6001 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6002 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6003 0x01c2,
6004 0x01c3,
6005 },
6006 {
6007 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6008 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6009 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6010 0x01c2,
6011 0x01c2,
6012 },
6013 {
6014 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6015 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6016 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6017 0x01c1,
6018 0x01c2,
6019 },
6020 {
6021 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6022 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6023 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6024 0x01c0,
6025 0x01c1,
6026 },
6027 {
6028 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6029 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6030 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6031 0x01bf,
6032 0x01c0,
6033 },
6034 {
6035 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6036 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6037 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6038 0x01bf,
6039 0x01bf,
6040 },
6041 {
6042 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6043 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6044 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6045 0x01be,
6046 0x01bf,
6047 },
6048 {
6049 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6050 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6051 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6052 0x01bd,
6053 0x01be,
6054 },
6055 {
6056 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6057 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6058 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6059 0x01bc,
6060 0x01bd,
6061 },
6062 {
6063 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6064 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6065 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6066 0x043f,
6067 0x0443,
6068 },
6069 {
6070 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6071 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6072 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6073 0x043d,
6074 0x0441,
6075 },
6076 {
6077 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6078 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6079 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6080 0x043a,
6081 0x043f,
6082 },
6083 {
6084 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6085 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6086 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6087 0x0438,
6088 0x043d,
6089 },
6090 {
6091 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6092 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6093 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6094 0x0436,
6095 0x043a,
6096 },
6097 {
6098 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6099 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6100 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6101 0x0434,
6102 0x0438,
6103 },
6104 {
6105 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6106 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6107 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6108 0x0431,
6109 0x0436,
6110 },
6111 {
6112 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6113 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6114 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6115 0x042f,
6116 0x0434,
6117 },
6118 {
6119 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6120 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6121 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6122 0x042d,
6123 0x0431,
6124 },
6125 {
6126 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6127 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6128 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6129 0x042b,
6130 0x042f,
6131 },
6132 {
6133 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6134 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6135 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6136 0x0429,
6137 0x042d,
6138 },
6139 {
6140 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6141 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6142 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6143 0x0427,
6144 0x042b,
6145 },
6146 {
6147 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6148 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6149 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6150 0x0424,
6151 0x0429,
6152 },
6153 {
6154 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6155 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6156 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6157 0x041f,
6158 0x0424}
6159 };
6160
6161 static const struct chan_info_nphy_radio2057_rev5
6162 chan_info_nphyrev8_2057_rev5[] = {
6163 {
6164 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6165 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6166 0x043a, 0x043f, 0x0443},
6167 {
6168 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6169 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6170 0x0438, 0x043d, 0x0441},
6171 {
6172 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6173 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6174 0x0436, 0x043a, 0x043f},
6175 {
6176 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6177 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6178 0x0434, 0x0438, 0x043d},
6179 {
6180 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6181 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6182 0x0431, 0x0436, 0x043a},
6183 {
6184 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6185 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6186 0x042f, 0x0434, 0x0438},
6187 {
6188 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6189 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6190 0x042d, 0x0431, 0x0436},
6191 {
6192 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6193 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6194 0x042b, 0x042f, 0x0434},
6195 {
6196 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6197 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6198 0x0429, 0x042d, 0x0431},
6199 {
6200 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6201 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6202 0x0427, 0x042b, 0x042f},
6203 {
6204 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6205 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6206 0x0424, 0x0429, 0x042d},
6207 {
6208 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6209 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6210 0x0422, 0x0427, 0x042b},
6211 {
6212 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6213 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6214 0x0420, 0x0424, 0x0429},
6215 {
6216 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6217 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6218 0x041b, 0x041f, 0x0424}
6219 };
6220
6221 static const struct chan_info_nphy_radio2057_rev5
6222 chan_info_nphyrev9_2057_rev5v1[] = {
6223 {
6224 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6225 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6226 0x043a, 0x043f, 0x0443},
6227 {
6228 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6229 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6230 0x0438, 0x043d, 0x0441},
6231 {
6232 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6233 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6234 0x0436, 0x043a, 0x043f},
6235 {
6236 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6237 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6238 0x0434, 0x0438, 0x043d},
6239 {
6240 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6241 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6242 0x0431, 0x0436, 0x043a},
6243 {
6244 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6245 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6246 0x042f, 0x0434, 0x0438},
6247 {
6248 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6249 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6250 0x042d, 0x0431, 0x0436},
6251 {
6252 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6253 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6254 0x042b, 0x042f, 0x0434},
6255 {
6256 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6257 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6258 0x0429, 0x042d, 0x0431},
6259 {
6260 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6261 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6262 0x0427, 0x042b, 0x042f},
6263 {
6264 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6265 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6266 0x0424, 0x0429, 0x042d},
6267 {
6268 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6269 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6270 0x0422, 0x0427, 0x042b},
6271 {
6272 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6273 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6274 0x0420, 0x0424, 0x0429},
6275 {
6276 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6277 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6278 0x041b, 0x041f, 0x0424}
6279 };
6280
6281 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6282 {
6283 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6284 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6285 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6286 0x0215,
6287 0x0216},
6288 {
6289 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6290 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6291 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6292 0x0214,
6293 0x0215},
6294 {
6295 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6296 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6297 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6298 0x0213,
6299 0x0214},
6300 {
6301 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6302 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6303 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6304 0x0212,
6305 0x0213},
6306 {
6307 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6308 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6309 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6310 0x0211,
6311 0x0212},
6312 {
6313 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6314 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6315 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6316 0x020f,
6317 0x0211},
6318 {
6319 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6320 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6321 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6322 0x020e,
6323 0x020f},
6324 {
6325 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6326 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6327 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6328 0x020d,
6329 0x020e},
6330 {
6331 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6332 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6333 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6334 0x020c,
6335 0x020d},
6336 {
6337 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6338 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6339 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6340 0x020b,
6341 0x020c},
6342 {
6343 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6344 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6345 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6346 0x020a,
6347 0x020b},
6348 {
6349 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6350 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6351 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6352 0x0209,
6353 0x020a},
6354 {
6355 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6356 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6357 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6358 0x0208,
6359 0x0209},
6360 {
6361 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6362 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6363 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6364 0x0207,
6365 0x0208},
6366 {
6367 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6368 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6369 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6370 0x0206,
6371 0x0207},
6372 {
6373 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6374 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6375 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6376 0x0205,
6377 0x0206},
6378 {
6379 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6380 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6381 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6382 0x0204,
6383 0x0205},
6384 {
6385 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6386 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6387 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6388 0x0203,
6389 0x0204},
6390 {
6391 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6392 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6393 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6394 0x0202,
6395 0x0203},
6396 {
6397 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6398 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6399 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6400 0x0201,
6401 0x0202},
6402 {
6403 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6404 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6405 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6406 0x0200,
6407 0x0201},
6408 {
6409 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6410 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6411 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6412 0x01ff,
6413 0x0200},
6414 {
6415 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6416 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6417 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6418 0x01fe,
6419 0x01ff},
6420 {
6421 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6422 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6423 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6424 0x01fc,
6425 0x01fd},
6426 {
6427 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6428 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6429 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6430 0x01fb,
6431 0x01fc},
6432 {
6433 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6434 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6435 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6436 0x01fa,
6437 0x01fb},
6438 {
6439 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6440 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6441 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6442 0x01f9,
6443 0x01fa},
6444 {
6445 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6446 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6447 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6448 0x01f8,
6449 0x01f9},
6450 {
6451 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6452 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6453 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6454 0x01f7,
6455 0x01f8},
6456 {
6457 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6458 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6459 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6460 0x01f6,
6461 0x01f7},
6462 {
6463 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6464 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6465 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6466 0x01f5,
6467 0x01f6},
6468 {
6469 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6470 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6471 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6472 0x01f4,
6473 0x01f5},
6474 {
6475 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6476 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6477 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6478 0x01f3,
6479 0x01f4},
6480 {
6481 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6482 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6483 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6484 0x01f2,
6485 0x01f3},
6486 {
6487 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6488 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6489 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6490 0x01f1,
6491 0x01f2},
6492 {
6493 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6494 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6495 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6496 0x01f0,
6497 0x01f1},
6498 {
6499 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6500 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6501 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6502 0x01f0,
6503 0x01f0},
6504 {
6505 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6506 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6507 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6508 0x01ef,
6509 0x01f0},
6510 {
6511 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6512 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6513 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6514 0x01ee,
6515 0x01ef},
6516 {
6517 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6518 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6519 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6520 0x01ed,
6521 0x01ee},
6522 {
6523 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6524 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6525 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6526 0x01ec,
6527 0x01ed},
6528 {
6529 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6530 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6531 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6532 0x01eb,
6533 0x01ec},
6534 {
6535 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6536 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6537 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6538 0x01ea,
6539 0x01eb},
6540 {
6541 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6542 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6543 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6544 0x01e9,
6545 0x01ea},
6546 {
6547 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6548 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6549 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6550 0x01e8,
6551 0x01e9},
6552 {
6553 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6554 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6555 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6556 0x01e7,
6557 0x01e8},
6558 {
6559 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6560 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6561 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6562 0x01e6,
6563 0x01e7},
6564 {
6565 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6566 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6567 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6568 0x01e5,
6569 0x01e6},
6570 {
6571 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6572 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6573 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6574 0x01e5,
6575 0x01e5},
6576 {
6577 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6578 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6579 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6580 0x01e4,
6581 0x01e5},
6582 {
6583 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6584 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6585 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6586 0x01e3,
6587 0x01e4},
6588 {
6589 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6590 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6591 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6592 0x01e2,
6593 0x01e3},
6594 {
6595 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6596 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6597 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6598 0x01e1,
6599 0x01e2},
6600 {
6601 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6602 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6603 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6604 0x01e0,
6605 0x01e1},
6606 {
6607 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6608 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6609 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6610 0x01df,
6611 0x01e0},
6612 {
6613 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6614 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6615 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6616 0x01de,
6617 0x01df},
6618 {
6619 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6620 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6621 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6622 0x01dd,
6623 0x01de},
6624 {
6625 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6626 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6627 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6628 0x01dd,
6629 0x01dd},
6630 {
6631 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6632 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6633 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6634 0x01dc,
6635 0x01dd},
6636 {
6637 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6638 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6639 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6640 0x01db,
6641 0x01dc},
6642 {
6643 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6644 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6645 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6646 0x01da,
6647 0x01db},
6648 {
6649 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6650 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6651 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6652 0x01d9,
6653 0x01da},
6654 {
6655 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6656 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6657 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6658 0x01d8,
6659 0x01d9},
6660 {
6661 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6662 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6663 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6664 0x01d7,
6665 0x01d8},
6666 {
6667 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6668 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6669 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6670 0x01d7,
6671 0x01d7},
6672 {
6673 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6674 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6675 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6676 0x01d6,
6677 0x01d7},
6678 {
6679 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6680 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6681 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6682 0x01d5,
6683 0x01d6},
6684 {
6685 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6686 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6687 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6688 0x01d4,
6689 0x01d5},
6690 {
6691 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6692 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6693 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6694 0x01d3,
6695 0x01d4},
6696 {
6697 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6698 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6699 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6700 0x01d2,
6701 0x01d3},
6702 {
6703 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6704 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6705 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6706 0x01d2,
6707 0x01d2},
6708 {
6709 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6710 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6711 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6712 0x01d1,
6713 0x01d2},
6714 {
6715 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6716 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6717 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6718 0x01d0,
6719 0x01d1},
6720 {
6721 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6722 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6723 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6724 0x01cf,
6725 0x01d0},
6726 {
6727 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6728 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6729 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6730 0x01ce,
6731 0x01cf},
6732 {
6733 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6734 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6735 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6736 0x01ce,
6737 0x01ce},
6738 {
6739 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6740 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6741 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6742 0x01cd,
6743 0x01ce},
6744 {
6745 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6746 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6747 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6748 0x01cc,
6749 0x01cd},
6750 {
6751 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6752 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6753 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6754 0x01cb,
6755 0x01cc},
6756 {
6757 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6758 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6759 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6760 0x01ca,
6761 0x01cb},
6762 {
6763 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6764 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6765 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6766 0x01ca,
6767 0x01cb},
6768 {
6769 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6770 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6771 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6772 0x01c9,
6773 0x01ca},
6774 {
6775 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6776 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6777 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6778 0x01c9,
6779 0x01ca},
6780 {
6781 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6782 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6783 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6784 0x01c9,
6785 0x01c9},
6786 {
6787 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6788 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6789 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6790 0x01c8,
6791 0x01c9},
6792 {
6793 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6794 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6795 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6796 0x01c8,
6797 0x01c9},
6798 {
6799 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6800 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6801 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6802 0x01c8,
6803 0x01c8},
6804 {
6805 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6806 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6807 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6808 0x01c7,
6809 0x01c8},
6810 {
6811 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6812 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6813 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6814 0x01c7,
6815 0x01c8},
6816 {
6817 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6818 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6819 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6820 0x01c6,
6821 0x01c7},
6822 {
6823 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6824 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6825 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6826 0x01c6,
6827 0x01c7},
6828 {
6829 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6830 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6831 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6832 0x01c6,
6833 0x01c6},
6834 {
6835 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6836 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6837 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6838 0x01c5,
6839 0x01c6},
6840 {
6841 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6842 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6843 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6844 0x01c5,
6845 0x01c6},
6846 {
6847 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6848 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6849 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6850 0x01c4,
6851 0x01c5},
6852 {
6853 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6854 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6855 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6856 0x01c4,
6857 0x01c5},
6858 {
6859 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6860 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6861 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6862 0x01c4,
6863 0x01c4},
6864 {
6865 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6866 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6867 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6868 0x01c3,
6869 0x01c4},
6870 {
6871 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6872 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6873 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6874 0x01c3,
6875 0x01c4},
6876 {
6877 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6878 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6879 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6880 0x01c2,
6881 0x01c3},
6882 {
6883 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6884 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6885 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6886 0x01c2,
6887 0x01c3},
6888 {
6889 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6890 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6891 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6892 0x01c2,
6893 0x01c2},
6894 {
6895 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6896 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6897 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6898 0x01c1,
6899 0x01c2},
6900 {
6901 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6902 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6903 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6904 0x01c0,
6905 0x01c1},
6906 {
6907 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6908 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6909 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6910 0x01bf,
6911 0x01c0},
6912 {
6913 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6914 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6915 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6916 0x01bf,
6917 0x01bf},
6918 {
6919 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6920 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6921 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6922 0x01be,
6923 0x01bf},
6924 {
6925 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6926 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6927 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6928 0x01bd,
6929 0x01be},
6930 {
6931 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6932 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6933 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6934 0x01bc,
6935 0x01bd},
6936 {
6937 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6938 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6939 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6940 0x043f,
6941 0x0443},
6942 {
6943 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6944 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6945 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6946 0x043d,
6947 0x0441},
6948 {
6949 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6950 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6951 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6952 0x043a,
6953 0x043f},
6954 {
6955 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6956 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6957 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6958 0x0438,
6959 0x043d},
6960 {
6961 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6962 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6963 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6964 0x0436,
6965 0x043a},
6966 {
6967 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6968 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6969 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6970 0x0434,
6971 0x0438},
6972 {
6973 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6974 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6975 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6976 0x0431,
6977 0x0436},
6978 {
6979 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6980 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6981 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6982 0x042f,
6983 0x0434},
6984 {
6985 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6986 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6987 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6988 0x042d,
6989 0x0431},
6990 {
6991 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6992 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6993 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6994 0x042b,
6995 0x042f},
6996 {
6997 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6998 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6999 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7000 0x0429,
7001 0x042d},
7002 {
7003 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7004 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7005 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7006 0x0427,
7007 0x042b},
7008 {
7009 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7010 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7011 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7012 0x0424,
7013 0x0429},
7014 {
7015 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7016 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7017 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7018 0x041f,
7019 0x0424}
7020 };
7021
7022 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7023 {
7024 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7025 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7026 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7027 0x0214,
7028 0x0215},
7029 {
7030 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7031 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7032 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7033 0x0213,
7034 0x0214},
7035 {
7036 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7037 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7038 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7039 0x0212,
7040 0x0213},
7041 {
7042 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7043 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7044 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7045 0x0211,
7046 0x0212},
7047 {
7048 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7049 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7050 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7051 0x020f,
7052 0x0211},
7053 {
7054 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7055 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7056 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7057 0x020e,
7058 0x020f},
7059 {
7060 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7061 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7062 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7063 0x020d,
7064 0x020e},
7065 {
7066 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7067 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7068 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7069 0x020c,
7070 0x020d},
7071 {
7072 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7073 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7074 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7075 0x020b,
7076 0x020c},
7077 {
7078 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7079 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7080 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7081 0x020a,
7082 0x020b},
7083 {
7084 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7085 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7086 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7087 0x0209,
7088 0x020a},
7089 {
7090 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7091 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7092 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7093 0x0208,
7094 0x0209},
7095 {
7096 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7097 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7098 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7099 0x0207,
7100 0x0208},
7101 {
7102 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7103 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7104 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7105 0x0206,
7106 0x0207},
7107 {
7108 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7109 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7110 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7111 0x0205,
7112 0x0206},
7113 {
7114 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7115 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7116 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7117 0x0204,
7118 0x0205},
7119 {
7120 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7121 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7122 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7123 0x0203,
7124 0x0204},
7125 {
7126 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7127 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7128 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7129 0x0202,
7130 0x0203},
7131 {
7132 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7133 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7134 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7135 0x0201,
7136 0x0202},
7137 {
7138 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7139 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7140 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7141 0x0200,
7142 0x0201},
7143 {
7144 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7145 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7146 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7147 0x01ff,
7148 0x0200},
7149 {
7150 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7151 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7152 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7153 0x01fe,
7154 0x01ff},
7155 {
7156 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7157 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7158 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7159 0x01fc,
7160 0x01fd},
7161 {
7162 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7163 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7164 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7165 0x01fb,
7166 0x01fc},
7167 {
7168 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7169 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7170 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7171 0x01fa,
7172 0x01fb},
7173 {
7174 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7175 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7176 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7177 0x01f9,
7178 0x01fa},
7179 {
7180 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7181 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7182 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7183 0x01f8,
7184 0x01f9},
7185 {
7186 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7187 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7188 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7189 0x01f7,
7190 0x01f8},
7191 {
7192 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7193 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7194 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7195 0x01f6,
7196 0x01f7},
7197 {
7198 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7199 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7200 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7201 0x01f5,
7202 0x01f6},
7203 {
7204 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7205 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7206 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7207 0x01f4,
7208 0x01f5},
7209 {
7210 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7211 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7212 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7213 0x01f3,
7214 0x01f4},
7215 {
7216 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7217 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7218 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7219 0x01f2,
7220 0x01f3},
7221 {
7222 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7223 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7224 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7225 0x01f1,
7226 0x01f2},
7227 {
7228 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7229 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7230 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7231 0x01f0,
7232 0x01f1},
7233 {
7234 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7235 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7236 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7237 0x01f0,
7238 0x01f0},
7239 {
7240 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7241 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7242 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7243 0x01ef,
7244 0x01f0},
7245 {
7246 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7247 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7248 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7249 0x01ee,
7250 0x01ef},
7251 {
7252 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7253 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7254 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7255 0x01ed,
7256 0x01ee},
7257 {
7258 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7259 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7260 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7261 0x01ec,
7262 0x01ed},
7263 {
7264 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7265 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7266 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7267 0x01eb,
7268 0x01ec},
7269 {
7270 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7271 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7272 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7273 0x01ea,
7274 0x01eb},
7275 {
7276 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7277 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7278 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7279 0x01e9,
7280 0x01ea},
7281 {
7282 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7283 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7284 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7285 0x01e8,
7286 0x01e9},
7287 {
7288 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7289 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7290 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7291 0x01e7,
7292 0x01e8},
7293 {
7294 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7295 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7296 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7297 0x01e6,
7298 0x01e7},
7299 {
7300 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7301 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7302 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7303 0x01e5,
7304 0x01e6},
7305 {
7306 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7307 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7308 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7309 0x01e5,
7310 0x01e5},
7311 {
7312 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7313 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7314 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7315 0x01e4,
7316 0x01e5},
7317 {
7318 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7319 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7320 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7321 0x01e3,
7322 0x01e4},
7323 {
7324 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7325 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7326 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7327 0x01e2,
7328 0x01e3},
7329 {
7330 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7331 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7332 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7333 0x01e1,
7334 0x01e2},
7335 {
7336 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7337 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7338 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7339 0x01e0,
7340 0x01e1},
7341 {
7342 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7343 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7344 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7345 0x01df,
7346 0x01e0},
7347 {
7348 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7349 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7350 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7351 0x01de,
7352 0x01df},
7353 {
7354 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7355 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7356 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7357 0x01dd,
7358 0x01de},
7359 {
7360 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7361 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7362 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7363 0x01dd,
7364 0x01dd},
7365 {
7366 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7367 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7368 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7369 0x01dc,
7370 0x01dd},
7371 {
7372 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7373 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7374 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7375 0x01db,
7376 0x01dc},
7377 {
7378 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7379 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7380 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7381 0x01da,
7382 0x01db},
7383 {
7384 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7385 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7386 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7387 0x01d9,
7388 0x01da},
7389 {
7390 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7391 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7392 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7393 0x01d8,
7394 0x01d9},
7395 {
7396 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7397 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7398 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7399 0x01d7,
7400 0x01d8},
7401 {
7402 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7403 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7404 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7405 0x01d7,
7406 0x01d7},
7407 {
7408 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7409 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7410 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7411 0x01d6,
7412 0x01d7},
7413 {
7414 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7415 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7416 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7417 0x01d5,
7418 0x01d6},
7419 {
7420 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7421 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7422 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7423 0x01d4,
7424 0x01d5},
7425 {
7426 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7427 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7428 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7429 0x01d3,
7430 0x01d4},
7431 {
7432 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7433 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7434 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7435 0x01d2,
7436 0x01d3},
7437 {
7438 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7439 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7440 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7441 0x01d2,
7442 0x01d2},
7443 {
7444 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7445 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7446 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7447 0x01d1,
7448 0x01d2},
7449 {
7450 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7451 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7452 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7453 0x01d0,
7454 0x01d1},
7455 {
7456 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7457 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7458 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7459 0x01cf,
7460 0x01d0},
7461 {
7462 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7463 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7464 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7465 0x01ce,
7466 0x01cf},
7467 {
7468 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7469 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7470 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7471 0x01ce,
7472 0x01ce},
7473 {
7474 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7475 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7476 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7477 0x01cd,
7478 0x01ce},
7479 {
7480 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7481 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7482 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7483 0x01cc,
7484 0x01cd},
7485 {
7486 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7487 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7488 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7489 0x01cb,
7490 0x01cc},
7491 {
7492 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7493 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7494 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7495 0x01ca,
7496 0x01cb},
7497 {
7498 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7499 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7500 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7501 0x01ca,
7502 0x01cb},
7503 {
7504 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7505 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7506 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7507 0x01c9,
7508 0x01ca},
7509 {
7510 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7511 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7512 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7513 0x01c9,
7514 0x01ca},
7515 {
7516 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7517 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7518 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7519 0x01c9,
7520 0x01c9},
7521 {
7522 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7523 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7524 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7525 0x01c8,
7526 0x01c9},
7527 {
7528 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7529 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7530 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7531 0x01c8,
7532 0x01c9},
7533 {
7534 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7535 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7536 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7537 0x01c8,
7538 0x01c8},
7539 {
7540 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7541 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7542 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7543 0x01c7,
7544 0x01c8},
7545 {
7546 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7547 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7548 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7549 0x01c7,
7550 0x01c8},
7551 {
7552 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7553 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7554 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7555 0x01c6,
7556 0x01c7},
7557 {
7558 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7559 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7560 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7561 0x01c6,
7562 0x01c7},
7563 {
7564 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7565 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7566 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7567 0x01c6,
7568 0x01c6},
7569 {
7570 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7571 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7572 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7573 0x01c5,
7574 0x01c6},
7575 {
7576 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7577 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7578 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7579 0x01c5,
7580 0x01c6},
7581 {
7582 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7583 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7584 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7585 0x01c4,
7586 0x01c5},
7587 {
7588 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7589 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7590 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7591 0x01c4,
7592 0x01c5},
7593 {
7594 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7595 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7596 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7597 0x01c4,
7598 0x01c4},
7599 {
7600 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7601 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7602 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7603 0x01c3,
7604 0x01c4},
7605 {
7606 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7607 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7608 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7609 0x01c3,
7610 0x01c4},
7611 {
7612 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7613 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7614 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7615 0x01c2,
7616 0x01c3},
7617 {
7618 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7619 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7620 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7621 0x01c2,
7622 0x01c3},
7623 {
7624 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7625 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7626 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7627 0x01c2,
7628 0x01c2},
7629 {
7630 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7631 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7632 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7633 0x01c1,
7634 0x01c2},
7635 {
7636 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7637 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7638 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7639 0x01c0,
7640 0x01c1},
7641 {
7642 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7643 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7644 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7645 0x01bf,
7646 0x01c0},
7647 {
7648 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7649 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7650 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7651 0x01bf,
7652 0x01bf},
7653 {
7654 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7655 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7656 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7657 0x01be,
7658 0x01bf},
7659 {
7660 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7661 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7662 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7663 0x01bd,
7664 0x01be},
7665 {
7666 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7667 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7668 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7669 0x01bc,
7670 0x01bd},
7671 {
7672 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7673 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7674 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7675 0x043f,
7676 0x0443},
7677 {
7678 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7679 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7680 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7681 0x043d,
7682 0x0441},
7683 {
7684 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7685 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7686 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7687 0x043a,
7688 0x043f},
7689 {
7690 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7691 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7692 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7693 0x0438,
7694 0x043d},
7695 {
7696 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7697 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7698 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7699 0x0436,
7700 0x043a},
7701 {
7702 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7703 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7704 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7705 0x0434,
7706 0x0438},
7707 {
7708 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7709 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7710 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7711 0x0431,
7712 0x0436},
7713 {
7714 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7715 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7716 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7717 0x042f,
7718 0x0434},
7719 {
7720 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7721 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7722 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7723 0x042d,
7724 0x0431},
7725 {
7726 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7727 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7728 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7729 0x042b,
7730 0x042f},
7731 {
7732 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7733 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7734 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7735 0x0429,
7736 0x042d},
7737 {
7738 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7739 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7740 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7741 0x0427,
7742 0x042b},
7743 {
7744 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7745 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7746 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7747 0x0424,
7748 0x0429},
7749 {
7750 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7751 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7752 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7753 0x041f,
7754 0x0424}
7755 };
7756
7757 static struct radio_regs regs_2055[] = {
7758 {0x02, 0x80, 0x80, 0, 0},
7759 {0x03, 0, 0, 0, 0},
7760 {0x04, 0x27, 0x27, 0, 0},
7761 {0x05, 0, 0, 0, 0},
7762 {0x06, 0x27, 0x27, 0, 0},
7763 {0x07, 0x7f, 0x7f, 1, 1},
7764 {0x08, 0x7, 0x7, 1, 1},
7765 {0x09, 0x7f, 0x7f, 1, 1},
7766 {0x0A, 0x7, 0x7, 1, 1},
7767 {0x0B, 0x15, 0x15, 0, 0},
7768 {0x0C, 0x15, 0x15, 0, 0},
7769 {0x0D, 0x4f, 0x4f, 1, 1},
7770 {0x0E, 0x5, 0x5, 1, 1},
7771 {0x0F, 0x4f, 0x4f, 1, 1},
7772 {0x10, 0x5, 0x5, 1, 1},
7773 {0x11, 0xd0, 0xd0, 0, 0},
7774 {0x12, 0x2, 0x2, 0, 0},
7775 {0x13, 0, 0, 0, 0},
7776 {0x14, 0x40, 0x40, 0, 0},
7777 {0x15, 0, 0, 0, 0},
7778 {0x16, 0, 0, 0, 0},
7779 {0x17, 0, 0, 0, 0},
7780 {0x18, 0, 0, 0, 0},
7781 {0x19, 0, 0, 0, 0},
7782 {0x1A, 0, 0, 0, 0},
7783 {0x1B, 0, 0, 0, 0},
7784 {0x1C, 0, 0, 0, 0},
7785 {0x1D, 0xc0, 0xc0, 0, 0},
7786 {0x1E, 0xff, 0xff, 0, 0},
7787 {0x1F, 0xc0, 0xc0, 0, 0},
7788 {0x20, 0xff, 0xff, 0, 0},
7789 {0x21, 0xc0, 0xc0, 0, 0},
7790 {0x22, 0, 0, 0, 0},
7791 {0x23, 0x2c, 0x2c, 0, 0},
7792 {0x24, 0, 0, 0, 0},
7793 {0x25, 0, 0, 0, 0},
7794 {0x26, 0, 0, 0, 0},
7795 {0x27, 0, 0, 0, 0},
7796 {0x28, 0, 0, 0, 0},
7797 {0x29, 0, 0, 0, 0},
7798 {0x2A, 0, 0, 0, 0},
7799 {0x2B, 0, 0, 0, 0},
7800 {0x2C, 0, 0, 0, 0},
7801 {0x2D, 0xa4, 0xa4, 0, 0},
7802 {0x2E, 0x38, 0x38, 0, 0},
7803 {0x2F, 0, 0, 0, 0},
7804 {0x30, 0x4, 0x4, 1, 1},
7805 {0x31, 0, 0, 0, 0},
7806 {0x32, 0xa, 0xa, 0, 0},
7807 {0x33, 0x87, 0x87, 0, 0},
7808 {0x34, 0x9, 0x9, 0, 0},
7809 {0x35, 0x70, 0x70, 0, 0},
7810 {0x36, 0x11, 0x11, 0, 0},
7811 {0x37, 0x18, 0x18, 1, 1},
7812 {0x38, 0x6, 0x6, 0, 0},
7813 {0x39, 0x4, 0x4, 1, 1},
7814 {0x3A, 0x6, 0x6, 0, 0},
7815 {0x3B, 0x9e, 0x9e, 0, 0},
7816 {0x3C, 0x9, 0x9, 0, 0},
7817 {0x3D, 0xc8, 0xc8, 1, 1},
7818 {0x3E, 0x88, 0x88, 0, 0},
7819 {0x3F, 0, 0, 0, 0},
7820 {0x40, 0, 0, 0, 0},
7821 {0x41, 0, 0, 0, 0},
7822 {0x42, 0x1, 0x1, 0, 0},
7823 {0x43, 0x2, 0x2, 0, 0},
7824 {0x44, 0x96, 0x96, 0, 0},
7825 {0x45, 0x3e, 0x3e, 0, 0},
7826 {0x46, 0x3e, 0x3e, 0, 0},
7827 {0x47, 0x13, 0x13, 0, 0},
7828 {0x48, 0x2, 0x2, 0, 0},
7829 {0x49, 0x15, 0x15, 0, 0},
7830 {0x4A, 0x7, 0x7, 0, 0},
7831 {0x4B, 0, 0, 0, 0},
7832 {0x4C, 0, 0, 0, 0},
7833 {0x4D, 0, 0, 0, 0},
7834 {0x4E, 0, 0, 0, 0},
7835 {0x4F, 0, 0, 0, 0},
7836 {0x50, 0x8, 0x8, 0, 0},
7837 {0x51, 0x8, 0x8, 0, 0},
7838 {0x52, 0x6, 0x6, 0, 0},
7839 {0x53, 0x84, 0x84, 1, 1},
7840 {0x54, 0xc3, 0xc3, 0, 0},
7841 {0x55, 0x8f, 0x8f, 0, 0},
7842 {0x56, 0xff, 0xff, 0, 0},
7843 {0x57, 0xff, 0xff, 0, 0},
7844 {0x58, 0x88, 0x88, 0, 0},
7845 {0x59, 0x88, 0x88, 0, 0},
7846 {0x5A, 0, 0, 0, 0},
7847 {0x5B, 0xcc, 0xcc, 0, 0},
7848 {0x5C, 0x6, 0x6, 0, 0},
7849 {0x5D, 0x80, 0x80, 0, 0},
7850 {0x5E, 0x80, 0x80, 0, 0},
7851 {0x5F, 0xf8, 0xf8, 0, 0},
7852 {0x60, 0x88, 0x88, 0, 0},
7853 {0x61, 0x88, 0x88, 0, 0},
7854 {0x62, 0x88, 0x8, 1, 1},
7855 {0x63, 0x88, 0x88, 0, 0},
7856 {0x64, 0, 0, 0, 0},
7857 {0x65, 0x1, 0x1, 1, 1},
7858 {0x66, 0x8a, 0x8a, 0, 0},
7859 {0x67, 0x8, 0x8, 0, 0},
7860 {0x68, 0x83, 0x83, 0, 0},
7861 {0x69, 0x6, 0x6, 0, 0},
7862 {0x6A, 0xa0, 0xa0, 0, 0},
7863 {0x6B, 0xa, 0xa, 0, 0},
7864 {0x6C, 0x87, 0x87, 1, 1},
7865 {0x6D, 0x2a, 0x2a, 0, 0},
7866 {0x6E, 0x2a, 0x2a, 0, 0},
7867 {0x6F, 0x2a, 0x2a, 0, 0},
7868 {0x70, 0x2a, 0x2a, 0, 0},
7869 {0x71, 0x18, 0x18, 0, 0},
7870 {0x72, 0x6a, 0x6a, 1, 1},
7871 {0x73, 0xab, 0xab, 1, 1},
7872 {0x74, 0x13, 0x13, 1, 1},
7873 {0x75, 0xc1, 0xc1, 1, 1},
7874 {0x76, 0xaa, 0xaa, 1, 1},
7875 {0x77, 0x87, 0x87, 1, 1},
7876 {0x78, 0, 0, 0, 0},
7877 {0x79, 0x6, 0x6, 0, 0},
7878 {0x7A, 0x7, 0x7, 0, 0},
7879 {0x7B, 0x7, 0x7, 0, 0},
7880 {0x7C, 0x15, 0x15, 0, 0},
7881 {0x7D, 0x55, 0x55, 0, 0},
7882 {0x7E, 0x97, 0x97, 1, 1},
7883 {0x7F, 0x8, 0x8, 0, 0},
7884 {0x80, 0x14, 0x14, 1, 1},
7885 {0x81, 0x33, 0x33, 0, 0},
7886 {0x82, 0x88, 0x88, 0, 0},
7887 {0x83, 0x6, 0x6, 0, 0},
7888 {0x84, 0x3, 0x3, 1, 1},
7889 {0x85, 0xa, 0xa, 0, 0},
7890 {0x86, 0x3, 0x3, 1, 1},
7891 {0x87, 0x2a, 0x2a, 0, 0},
7892 {0x88, 0xa4, 0xa4, 0, 0},
7893 {0x89, 0x18, 0x18, 0, 0},
7894 {0x8A, 0x28, 0x28, 0, 0},
7895 {0x8B, 0, 0, 0, 0},
7896 {0x8C, 0x4a, 0x4a, 0, 0},
7897 {0x8D, 0, 0, 0, 0},
7898 {0x8E, 0xf8, 0xf8, 0, 0},
7899 {0x8F, 0x88, 0x88, 0, 0},
7900 {0x90, 0x88, 0x88, 0, 0},
7901 {0x91, 0x88, 0x8, 1, 1},
7902 {0x92, 0x88, 0x88, 0, 0},
7903 {0x93, 0, 0, 0, 0},
7904 {0x94, 0x1, 0x1, 1, 1},
7905 {0x95, 0x8a, 0x8a, 0, 0},
7906 {0x96, 0x8, 0x8, 0, 0},
7907 {0x97, 0x83, 0x83, 0, 0},
7908 {0x98, 0x6, 0x6, 0, 0},
7909 {0x99, 0xa0, 0xa0, 0, 0},
7910 {0x9A, 0xa, 0xa, 0, 0},
7911 {0x9B, 0x87, 0x87, 1, 1},
7912 {0x9C, 0x2a, 0x2a, 0, 0},
7913 {0x9D, 0x2a, 0x2a, 0, 0},
7914 {0x9E, 0x2a, 0x2a, 0, 0},
7915 {0x9F, 0x2a, 0x2a, 0, 0},
7916 {0xA0, 0x18, 0x18, 0, 0},
7917 {0xA1, 0x6a, 0x6a, 1, 1},
7918 {0xA2, 0xab, 0xab, 1, 1},
7919 {0xA3, 0x13, 0x13, 1, 1},
7920 {0xA4, 0xc1, 0xc1, 1, 1},
7921 {0xA5, 0xaa, 0xaa, 1, 1},
7922 {0xA6, 0x87, 0x87, 1, 1},
7923 {0xA7, 0, 0, 0, 0},
7924 {0xA8, 0x6, 0x6, 0, 0},
7925 {0xA9, 0x7, 0x7, 0, 0},
7926 {0xAA, 0x7, 0x7, 0, 0},
7927 {0xAB, 0x15, 0x15, 0, 0},
7928 {0xAC, 0x55, 0x55, 0, 0},
7929 {0xAD, 0x97, 0x97, 1, 1},
7930 {0xAE, 0x8, 0x8, 0, 0},
7931 {0xAF, 0x14, 0x14, 1, 1},
7932 {0xB0, 0x33, 0x33, 0, 0},
7933 {0xB1, 0x88, 0x88, 0, 0},
7934 {0xB2, 0x6, 0x6, 0, 0},
7935 {0xB3, 0x3, 0x3, 1, 1},
7936 {0xB4, 0xa, 0xa, 0, 0},
7937 {0xB5, 0x3, 0x3, 1, 1},
7938 {0xB6, 0x2a, 0x2a, 0, 0},
7939 {0xB7, 0xa4, 0xa4, 0, 0},
7940 {0xB8, 0x18, 0x18, 0, 0},
7941 {0xB9, 0x28, 0x28, 0, 0},
7942 {0xBA, 0, 0, 0, 0},
7943 {0xBB, 0x4a, 0x4a, 0, 0},
7944 {0xBC, 0, 0, 0, 0},
7945 {0xBD, 0x71, 0x71, 0, 0},
7946 {0xBE, 0x72, 0x72, 0, 0},
7947 {0xBF, 0x73, 0x73, 0, 0},
7948 {0xC0, 0x74, 0x74, 0, 0},
7949 {0xC1, 0x75, 0x75, 0, 0},
7950 {0xC2, 0x76, 0x76, 0, 0},
7951 {0xC3, 0x77, 0x77, 0, 0},
7952 {0xC4, 0x78, 0x78, 0, 0},
7953 {0xC5, 0x79, 0x79, 0, 0},
7954 {0xC6, 0x7a, 0x7a, 0, 0},
7955 {0xC7, 0, 0, 0, 0},
7956 {0xC8, 0, 0, 0, 0},
7957 {0xC9, 0, 0, 0, 0},
7958 {0xCA, 0, 0, 0, 0},
7959 {0xCB, 0, 0, 0, 0},
7960 {0xCC, 0, 0, 0, 0},
7961 {0xCD, 0, 0, 0, 0},
7962 {0xCE, 0x6, 0x6, 0, 0},
7963 {0xCF, 0, 0, 0, 0},
7964 {0xD0, 0, 0, 0, 0},
7965 {0xD1, 0x18, 0x18, 0, 0},
7966 {0xD2, 0x88, 0x88, 0, 0},
7967 {0xD3, 0, 0, 0, 0},
7968 {0xD4, 0, 0, 0, 0},
7969 {0xD5, 0, 0, 0, 0},
7970 {0xD6, 0, 0, 0, 0},
7971 {0xD7, 0, 0, 0, 0},
7972 {0xD8, 0, 0, 0, 0},
7973 {0xD9, 0, 0, 0, 0},
7974 {0xDA, 0x6, 0x6, 0, 0},
7975 {0xDB, 0, 0, 0, 0},
7976 {0xDC, 0, 0, 0, 0},
7977 {0xDD, 0x18, 0x18, 0, 0},
7978 {0xDE, 0x88, 0x88, 0, 0},
7979 {0xDF, 0, 0, 0, 0},
7980 {0xE0, 0, 0, 0, 0},
7981 {0xE1, 0, 0, 0, 0},
7982 {0xE2, 0, 0, 0, 0},
7983 {0xFFFF, 0, 0, 0, 0},
7984 };
7985
7986 static struct radio_regs regs_SYN_2056[] = {
7987 {0x02, 0, 0, 0, 0},
7988 {0x03, 0, 0, 0, 0},
7989 {0x04, 0, 0, 0, 0},
7990 {0x05, 0, 0, 0, 0},
7991 {0x06, 0, 0, 0, 0},
7992 {0x07, 0, 0, 0, 0},
7993 {0x08, 0, 0, 0, 0},
7994 {0x09, 0x1, 0x1, 0, 0},
7995 {0x0A, 0, 0, 0, 0},
7996 {0x0B, 0, 0, 0, 0},
7997 {0x0C, 0, 0, 0, 0},
7998 {0x0D, 0, 0, 0, 0},
7999 {0x0E, 0, 0, 0, 0},
8000 {0x0F, 0, 0, 0, 0},
8001 {0x10, 0, 0, 0, 0},
8002 {0x11, 0, 0, 0, 0},
8003 {0x12, 0, 0, 0, 0},
8004 {0x13, 0, 0, 0, 0},
8005 {0x14, 0, 0, 0, 0},
8006 {0x15, 0, 0, 0, 0},
8007 {0x16, 0, 0, 0, 0},
8008 {0x17, 0, 0, 0, 0},
8009 {0x18, 0, 0, 0, 0},
8010 {0x19, 0, 0, 0, 0},
8011 {0x1A, 0, 0, 0, 0},
8012 {0x1B, 0, 0, 0, 0},
8013 {0x1C, 0, 0, 0, 0},
8014 {0x1D, 0, 0, 0, 0},
8015 {0x1E, 0, 0, 0, 0},
8016 {0x1F, 0, 0, 0, 0},
8017 {0x20, 0, 0, 0, 0},
8018 {0x21, 0, 0, 0, 0},
8019 {0x22, 0x60, 0x60, 0, 0},
8020 {0x23, 0x6, 0x6, 0, 0},
8021 {0x24, 0xc, 0xc, 0, 0},
8022 {0x25, 0, 0, 0, 0},
8023 {0x26, 0, 0, 0, 0},
8024 {0x27, 0, 0, 0, 0},
8025 {0x28, 0x1, 0x1, 0, 0},
8026 {0x29, 0, 0, 0, 0},
8027 {0x2A, 0, 0, 0, 0},
8028 {0x2B, 0, 0, 0, 0},
8029 {0x2C, 0, 0, 0, 0},
8030 {0x2D, 0, 0, 0, 0},
8031 {0x2E, 0xd, 0xd, 0, 0},
8032 {0x2F, 0x1f, 0x1f, 0, 0},
8033 {0x30, 0x15, 0x15, 0, 0},
8034 {0x31, 0xf, 0xf, 0, 0},
8035 {0x32, 0, 0, 0, 0},
8036 {0x33, 0, 0, 0, 0},
8037 {0x34, 0, 0, 0, 0},
8038 {0x35, 0, 0, 0, 0},
8039 {0x36, 0, 0, 0, 0},
8040 {0x37, 0, 0, 0, 0},
8041 {0x38, 0, 0, 0, 0},
8042 {0x39, 0, 0, 0, 0},
8043 {0x3A, 0, 0, 0, 0},
8044 {0x3B, 0, 0, 0, 0},
8045 {0x3C, 0x13, 0x13, 0, 0},
8046 {0x3D, 0xf, 0xf, 0, 0},
8047 {0x3E, 0x18, 0x18, 0, 0},
8048 {0x3F, 0, 0, 0, 0},
8049 {0x40, 0, 0, 0, 0},
8050 {0x41, 0x20, 0x20, 0, 0},
8051 {0x42, 0x20, 0x20, 0, 0},
8052 {0x43, 0, 0, 0, 0},
8053 {0x44, 0x77, 0x77, 0, 0},
8054 {0x45, 0x7, 0x7, 0, 0},
8055 {0x46, 0x1, 0x1, 0, 0},
8056 {0x47, 0x4, 0x4, 0, 0},
8057 {0x48, 0xf, 0xf, 0, 0},
8058 {0x49, 0x30, 0x30, 0, 0},
8059 {0x4A, 0x32, 0x32, 0, 0},
8060 {0x4B, 0xd, 0xd, 0, 0},
8061 {0x4C, 0xd, 0xd, 0, 0},
8062 {0x4D, 0x4, 0x4, 0, 0},
8063 {0x4E, 0x6, 0x6, 0, 0},
8064 {0x4F, 0x1, 0x1, 0, 0},
8065 {0x50, 0x1c, 0x1c, 0, 0},
8066 {0x51, 0x2, 0x2, 0, 0},
8067 {0x52, 0x2, 0x2, 0, 0},
8068 {0x53, 0xf7, 0xf7, 1, 1},
8069 {0x54, 0xb4, 0xb4, 0, 0},
8070 {0x55, 0xd2, 0xd2, 0, 0},
8071 {0x56, 0, 0, 0, 0},
8072 {0x57, 0, 0, 0, 0},
8073 {0x58, 0x4, 0x4, 0, 0},
8074 {0x59, 0x96, 0x96, 0, 0},
8075 {0x5A, 0x3e, 0x3e, 0, 0},
8076 {0x5B, 0x3e, 0x3e, 0, 0},
8077 {0x5C, 0x13, 0x13, 0, 0},
8078 {0x5D, 0x2, 0x2, 0, 0},
8079 {0x5E, 0, 0, 0, 0},
8080 {0x5F, 0x7, 0x7, 0, 0},
8081 {0x60, 0x7, 0x7, 1, 1},
8082 {0x61, 0x8, 0x8, 0, 0},
8083 {0x62, 0x3, 0x3, 0, 0},
8084 {0x63, 0, 0, 0, 0},
8085 {0x64, 0, 0, 0, 0},
8086 {0x65, 0, 0, 0, 0},
8087 {0x66, 0, 0, 0, 0},
8088 {0x67, 0, 0, 0, 0},
8089 {0x68, 0x40, 0x40, 0, 0},
8090 {0x69, 0, 0, 0, 0},
8091 {0x6A, 0, 0, 0, 0},
8092 {0x6B, 0, 0, 0, 0},
8093 {0x6C, 0, 0, 0, 0},
8094 {0x6D, 0x1, 0x1, 0, 0},
8095 {0x6E, 0, 0, 0, 0},
8096 {0x6F, 0, 0, 0, 0},
8097 {0x70, 0x60, 0x60, 0, 0},
8098 {0x71, 0x66, 0x66, 0, 0},
8099 {0x72, 0xc, 0xc, 0, 0},
8100 {0x73, 0x66, 0x66, 0, 0},
8101 {0x74, 0x8f, 0x8f, 1, 1},
8102 {0x75, 0, 0, 0, 0},
8103 {0x76, 0xcc, 0xcc, 0, 0},
8104 {0x77, 0x1, 0x1, 0, 0},
8105 {0x78, 0x66, 0x66, 0, 0},
8106 {0x79, 0x66, 0x66, 0, 0},
8107 {0x7A, 0, 0, 0, 0},
8108 {0x7B, 0, 0, 0, 0},
8109 {0x7C, 0, 0, 0, 0},
8110 {0x7D, 0, 0, 0, 0},
8111 {0x7E, 0, 0, 0, 0},
8112 {0x7F, 0, 0, 0, 0},
8113 {0x80, 0, 0, 0, 0},
8114 {0x81, 0, 0, 0, 0},
8115 {0x82, 0, 0, 0, 0},
8116 {0x83, 0, 0, 0, 0},
8117 {0x84, 0, 0, 0, 0},
8118 {0x85, 0xff, 0xff, 0, 0},
8119 {0x86, 0, 0, 0, 0},
8120 {0x87, 0, 0, 0, 0},
8121 {0x88, 0, 0, 0, 0},
8122 {0x89, 0, 0, 0, 0},
8123 {0x8A, 0, 0, 0, 0},
8124 {0x8B, 0, 0, 0, 0},
8125 {0x8C, 0, 0, 0, 0},
8126 {0x8D, 0, 0, 0, 0},
8127 {0x8E, 0, 0, 0, 0},
8128 {0x8F, 0, 0, 0, 0},
8129 {0x90, 0, 0, 0, 0},
8130 {0x91, 0, 0, 0, 0},
8131 {0x92, 0, 0, 0, 0},
8132 {0x93, 0, 0, 0, 0},
8133 {0x94, 0, 0, 0, 0},
8134 {0x95, 0, 0, 0, 0},
8135 {0x96, 0, 0, 0, 0},
8136 {0x97, 0, 0, 0, 0},
8137 {0x98, 0, 0, 0, 0},
8138 {0x99, 0, 0, 0, 0},
8139 {0x9A, 0, 0, 0, 0},
8140 {0x9B, 0, 0, 0, 0},
8141 {0x9C, 0, 0, 0, 0},
8142 {0x9D, 0, 0, 0, 0},
8143 {0x9E, 0, 0, 0, 0},
8144 {0x9F, 0x6, 0x6, 0, 0},
8145 {0xA0, 0x66, 0x66, 0, 0},
8146 {0xA1, 0x66, 0x66, 0, 0},
8147 {0xA2, 0x66, 0x66, 0, 0},
8148 {0xA3, 0x66, 0x66, 0, 0},
8149 {0xA4, 0x66, 0x66, 0, 0},
8150 {0xA5, 0x66, 0x66, 0, 0},
8151 {0xA6, 0x66, 0x66, 0, 0},
8152 {0xA7, 0x66, 0x66, 0, 0},
8153 {0xA8, 0x66, 0x66, 0, 0},
8154 {0xA9, 0x66, 0x66, 0, 0},
8155 {0xAA, 0x66, 0x66, 0, 0},
8156 {0xAB, 0x66, 0x66, 0, 0},
8157 {0xAC, 0x66, 0x66, 0, 0},
8158 {0xAD, 0x66, 0x66, 0, 0},
8159 {0xAE, 0x66, 0x66, 0, 0},
8160 {0xAF, 0x66, 0x66, 0, 0},
8161 {0xB0, 0x66, 0x66, 0, 0},
8162 {0xB1, 0x66, 0x66, 0, 0},
8163 {0xB2, 0x66, 0x66, 0, 0},
8164 {0xB3, 0xa, 0xa, 0, 0},
8165 {0xB4, 0, 0, 0, 0},
8166 {0xB5, 0, 0, 0, 0},
8167 {0xB6, 0, 0, 0, 0},
8168 {0xFFFF, 0, 0, 0, 0}
8169 };
8170
8171 static struct radio_regs regs_TX_2056[] = {
8172 {0x02, 0, 0, 0, 0},
8173 {0x03, 0, 0, 0, 0},
8174 {0x04, 0, 0, 0, 0},
8175 {0x05, 0, 0, 0, 0},
8176 {0x06, 0, 0, 0, 0},
8177 {0x07, 0, 0, 0, 0},
8178 {0x08, 0, 0, 0, 0},
8179 {0x09, 0, 0, 0, 0},
8180 {0x0A, 0, 0, 0, 0},
8181 {0x0B, 0, 0, 0, 0},
8182 {0x0C, 0, 0, 0, 0},
8183 {0x0D, 0, 0, 0, 0},
8184 {0x0E, 0, 0, 0, 0},
8185 {0x0F, 0, 0, 0, 0},
8186 {0x10, 0, 0, 0, 0},
8187 {0x11, 0, 0, 0, 0},
8188 {0x12, 0, 0, 0, 0},
8189 {0x13, 0, 0, 0, 0},
8190 {0x14, 0, 0, 0, 0},
8191 {0x15, 0, 0, 0, 0},
8192 {0x16, 0, 0, 0, 0},
8193 {0x17, 0, 0, 0, 0},
8194 {0x18, 0, 0, 0, 0},
8195 {0x19, 0, 0, 0, 0},
8196 {0x1A, 0, 0, 0, 0},
8197 {0x1B, 0, 0, 0, 0},
8198 {0x1C, 0, 0, 0, 0},
8199 {0x1D, 0, 0, 0, 0},
8200 {0x1E, 0, 0, 0, 0},
8201 {0x1F, 0, 0, 0, 0},
8202 {0x20, 0, 0, 0, 0},
8203 {0x21, 0x88, 0x88, 0, 0},
8204 {0x22, 0x88, 0x88, 0, 0},
8205 {0x23, 0x88, 0x88, 0, 0},
8206 {0x24, 0x88, 0x88, 0, 0},
8207 {0x25, 0xc, 0xc, 0, 0},
8208 {0x26, 0, 0, 0, 0},
8209 {0x27, 0x3, 0x3, 0, 0},
8210 {0x28, 0, 0, 0, 0},
8211 {0x29, 0x3, 0x3, 0, 0},
8212 {0x2A, 0x37, 0x37, 0, 0},
8213 {0x2B, 0x3, 0x3, 0, 0},
8214 {0x2C, 0, 0, 0, 0},
8215 {0x2D, 0, 0, 0, 0},
8216 {0x2E, 0x1, 0x1, 0, 0},
8217 {0x2F, 0x1, 0x1, 0, 0},
8218 {0x30, 0, 0, 0, 0},
8219 {0x31, 0, 0, 0, 0},
8220 {0x32, 0, 0, 0, 0},
8221 {0x33, 0x11, 0x11, 0, 0},
8222 {0x34, 0x11, 0x11, 0, 0},
8223 {0x35, 0, 0, 0, 0},
8224 {0x36, 0, 0, 0, 0},
8225 {0x37, 0x3, 0x3, 0, 0},
8226 {0x38, 0xf, 0xf, 0, 0},
8227 {0x39, 0, 0, 0, 0},
8228 {0x3A, 0x2d, 0x2d, 0, 0},
8229 {0x3B, 0, 0, 0, 0},
8230 {0x3C, 0x6e, 0x6e, 0, 0},
8231 {0x3D, 0xf0, 0xf0, 1, 1},
8232 {0x3E, 0, 0, 0, 0},
8233 {0x3F, 0, 0, 0, 0},
8234 {0x40, 0, 0, 0, 0},
8235 {0x41, 0x3, 0x3, 0, 0},
8236 {0x42, 0x3, 0x3, 0, 0},
8237 {0x43, 0, 0, 0, 0},
8238 {0x44, 0x1e, 0x1e, 0, 0},
8239 {0x45, 0, 0, 0, 0},
8240 {0x46, 0x6e, 0x6e, 0, 0},
8241 {0x47, 0xf0, 0xf0, 1, 1},
8242 {0x48, 0, 0, 0, 0},
8243 {0x49, 0x2, 0x2, 0, 0},
8244 {0x4A, 0xff, 0xff, 1, 1},
8245 {0x4B, 0xc, 0xc, 0, 0},
8246 {0x4C, 0, 0, 0, 0},
8247 {0x4D, 0x38, 0x38, 0, 0},
8248 {0x4E, 0x70, 0x70, 1, 1},
8249 {0x4F, 0x2, 0x2, 0, 0},
8250 {0x50, 0x88, 0x88, 0, 0},
8251 {0x51, 0xc, 0xc, 0, 0},
8252 {0x52, 0, 0, 0, 0},
8253 {0x53, 0x8, 0x8, 0, 0},
8254 {0x54, 0x70, 0x70, 1, 1},
8255 {0x55, 0x2, 0x2, 0, 0},
8256 {0x56, 0xff, 0xff, 1, 1},
8257 {0x57, 0, 0, 0, 0},
8258 {0x58, 0x83, 0x83, 0, 0},
8259 {0x59, 0x77, 0x77, 1, 1},
8260 {0x5A, 0, 0, 0, 0},
8261 {0x5B, 0x2, 0x2, 0, 0},
8262 {0x5C, 0x88, 0x88, 0, 0},
8263 {0x5D, 0, 0, 0, 0},
8264 {0x5E, 0x8, 0x8, 0, 0},
8265 {0x5F, 0x77, 0x77, 1, 1},
8266 {0x60, 0x1, 0x1, 0, 0},
8267 {0x61, 0, 0, 0, 0},
8268 {0x62, 0x7, 0x7, 0, 0},
8269 {0x63, 0, 0, 0, 0},
8270 {0x64, 0x7, 0x7, 0, 0},
8271 {0x65, 0, 0, 0, 0},
8272 {0x66, 0, 0, 0, 0},
8273 {0x67, 0x74, 0x74, 1, 1},
8274 {0x68, 0, 0, 0, 0},
8275 {0x69, 0xa, 0xa, 0, 0},
8276 {0x6A, 0, 0, 0, 0},
8277 {0x6B, 0, 0, 0, 0},
8278 {0x6C, 0, 0, 0, 0},
8279 {0x6D, 0, 0, 0, 0},
8280 {0x6E, 0, 0, 0, 0},
8281 {0x6F, 0, 0, 0, 0},
8282 {0x70, 0, 0, 0, 0},
8283 {0x71, 0x2, 0x2, 0, 0},
8284 {0x72, 0, 0, 0, 0},
8285 {0x73, 0, 0, 0, 0},
8286 {0x74, 0xe, 0xe, 0, 0},
8287 {0x75, 0xe, 0xe, 0, 0},
8288 {0x76, 0xe, 0xe, 0, 0},
8289 {0x77, 0x13, 0x13, 0, 0},
8290 {0x78, 0x13, 0x13, 0, 0},
8291 {0x79, 0x1b, 0x1b, 0, 0},
8292 {0x7A, 0x1b, 0x1b, 0, 0},
8293 {0x7B, 0x55, 0x55, 0, 0},
8294 {0x7C, 0x5b, 0x5b, 0, 0},
8295 {0x7D, 0, 0, 0, 0},
8296 {0x7E, 0, 0, 0, 0},
8297 {0x7F, 0, 0, 0, 0},
8298 {0x80, 0, 0, 0, 0},
8299 {0x81, 0, 0, 0, 0},
8300 {0x82, 0, 0, 0, 0},
8301 {0x83, 0, 0, 0, 0},
8302 {0x84, 0, 0, 0, 0},
8303 {0x85, 0, 0, 0, 0},
8304 {0x86, 0, 0, 0, 0},
8305 {0x87, 0, 0, 0, 0},
8306 {0x88, 0, 0, 0, 0},
8307 {0x89, 0, 0, 0, 0},
8308 {0x8A, 0, 0, 0, 0},
8309 {0x8B, 0, 0, 0, 0},
8310 {0x8C, 0, 0, 0, 0},
8311 {0x8D, 0, 0, 0, 0},
8312 {0x8E, 0, 0, 0, 0},
8313 {0x8F, 0, 0, 0, 0},
8314 {0x90, 0, 0, 0, 0},
8315 {0x91, 0, 0, 0, 0},
8316 {0x92, 0, 0, 0, 0},
8317 {0xFFFF, 0, 0, 0, 0}
8318 };
8319
8320 static struct radio_regs regs_RX_2056[] = {
8321 {0x02, 0, 0, 0, 0},
8322 {0x03, 0, 0, 0, 0},
8323 {0x04, 0, 0, 0, 0},
8324 {0x05, 0, 0, 0, 0},
8325 {0x06, 0, 0, 0, 0},
8326 {0x07, 0, 0, 0, 0},
8327 {0x08, 0, 0, 0, 0},
8328 {0x09, 0, 0, 0, 0},
8329 {0x0A, 0, 0, 0, 0},
8330 {0x0B, 0, 0, 0, 0},
8331 {0x0C, 0, 0, 0, 0},
8332 {0x0D, 0, 0, 0, 0},
8333 {0x0E, 0, 0, 0, 0},
8334 {0x0F, 0, 0, 0, 0},
8335 {0x10, 0, 0, 0, 0},
8336 {0x11, 0, 0, 0, 0},
8337 {0x12, 0, 0, 0, 0},
8338 {0x13, 0, 0, 0, 0},
8339 {0x14, 0, 0, 0, 0},
8340 {0x15, 0, 0, 0, 0},
8341 {0x16, 0, 0, 0, 0},
8342 {0x17, 0, 0, 0, 0},
8343 {0x18, 0, 0, 0, 0},
8344 {0x19, 0, 0, 0, 0},
8345 {0x1A, 0, 0, 0, 0},
8346 {0x1B, 0, 0, 0, 0},
8347 {0x1C, 0, 0, 0, 0},
8348 {0x1D, 0, 0, 0, 0},
8349 {0x1E, 0, 0, 0, 0},
8350 {0x1F, 0, 0, 0, 0},
8351 {0x20, 0x3, 0x3, 0, 0},
8352 {0x21, 0, 0, 0, 0},
8353 {0x22, 0, 0, 0, 0},
8354 {0x23, 0x90, 0x90, 0, 0},
8355 {0x24, 0x55, 0x55, 0, 0},
8356 {0x25, 0x15, 0x15, 0, 0},
8357 {0x26, 0x5, 0x5, 0, 0},
8358 {0x27, 0x15, 0x15, 0, 0},
8359 {0x28, 0x5, 0x5, 0, 0},
8360 {0x29, 0x20, 0x20, 0, 0},
8361 {0x2A, 0x11, 0x11, 0, 0},
8362 {0x2B, 0x90, 0x90, 0, 0},
8363 {0x2C, 0, 0, 0, 0},
8364 {0x2D, 0x88, 0x88, 0, 0},
8365 {0x2E, 0x32, 0x32, 0, 0},
8366 {0x2F, 0x77, 0x77, 0, 0},
8367 {0x30, 0x17, 0x17, 1, 1},
8368 {0x31, 0xff, 0xff, 1, 1},
8369 {0x32, 0x20, 0x20, 0, 0},
8370 {0x33, 0, 0, 0, 0},
8371 {0x34, 0x88, 0x88, 0, 0},
8372 {0x35, 0x32, 0x32, 0, 0},
8373 {0x36, 0x77, 0x77, 0, 0},
8374 {0x37, 0x17, 0x17, 1, 1},
8375 {0x38, 0xf0, 0xf0, 1, 1},
8376 {0x39, 0x20, 0x20, 0, 0},
8377 {0x3A, 0x8, 0x8, 0, 0},
8378 {0x3B, 0x99, 0x99, 0, 0},
8379 {0x3C, 0, 0, 0, 0},
8380 {0x3D, 0x44, 0x44, 1, 1},
8381 {0x3E, 0, 0, 0, 0},
8382 {0x3F, 0x44, 0x44, 0, 0},
8383 {0x40, 0xf, 0xf, 1, 1},
8384 {0x41, 0x6, 0x6, 0, 0},
8385 {0x42, 0x4, 0x4, 0, 0},
8386 {0x43, 0x50, 0x50, 1, 1},
8387 {0x44, 0x8, 0x8, 0, 0},
8388 {0x45, 0x99, 0x99, 0, 0},
8389 {0x46, 0, 0, 0, 0},
8390 {0x47, 0x11, 0x11, 0, 0},
8391 {0x48, 0, 0, 0, 0},
8392 {0x49, 0x44, 0x44, 0, 0},
8393 {0x4A, 0x7, 0x7, 0, 0},
8394 {0x4B, 0x6, 0x6, 0, 0},
8395 {0x4C, 0x4, 0x4, 0, 0},
8396 {0x4D, 0, 0, 0, 0},
8397 {0x4E, 0, 0, 0, 0},
8398 {0x4F, 0x66, 0x66, 0, 0},
8399 {0x50, 0x66, 0x66, 0, 0},
8400 {0x51, 0x57, 0x57, 0, 0},
8401 {0x52, 0x57, 0x57, 0, 0},
8402 {0x53, 0x44, 0x44, 0, 0},
8403 {0x54, 0, 0, 0, 0},
8404 {0x55, 0, 0, 0, 0},
8405 {0x56, 0x8, 0x8, 0, 0},
8406 {0x57, 0x8, 0x8, 0, 0},
8407 {0x58, 0x7, 0x7, 0, 0},
8408 {0x59, 0x22, 0x22, 0, 0},
8409 {0x5A, 0x22, 0x22, 0, 0},
8410 {0x5B, 0x2, 0x2, 0, 0},
8411 {0x5C, 0x23, 0x23, 0, 0},
8412 {0x5D, 0x7, 0x7, 0, 0},
8413 {0x5E, 0x55, 0x55, 0, 0},
8414 {0x5F, 0x23, 0x23, 0, 0},
8415 {0x60, 0x41, 0x41, 0, 0},
8416 {0x61, 0x1, 0x1, 0, 0},
8417 {0x62, 0xa, 0xa, 0, 0},
8418 {0x63, 0, 0, 0, 0},
8419 {0x64, 0, 0, 0, 0},
8420 {0x65, 0, 0, 0, 0},
8421 {0x66, 0, 0, 0, 0},
8422 {0x67, 0, 0, 0, 0},
8423 {0x68, 0, 0, 0, 0},
8424 {0x69, 0, 0, 0, 0},
8425 {0x6A, 0, 0, 0, 0},
8426 {0x6B, 0xc, 0xc, 0, 0},
8427 {0x6C, 0, 0, 0, 0},
8428 {0x6D, 0, 0, 0, 0},
8429 {0x6E, 0, 0, 0, 0},
8430 {0x6F, 0, 0, 0, 0},
8431 {0x70, 0, 0, 0, 0},
8432 {0x71, 0, 0, 0, 0},
8433 {0x72, 0x22, 0x22, 0, 0},
8434 {0x73, 0x22, 0x22, 0, 0},
8435 {0x74, 0x2, 0x2, 0, 0},
8436 {0x75, 0xa, 0xa, 0, 0},
8437 {0x76, 0x1, 0x1, 0, 0},
8438 {0x77, 0x22, 0x22, 0, 0},
8439 {0x78, 0x30, 0x30, 0, 0},
8440 {0x79, 0, 0, 0, 0},
8441 {0x7A, 0, 0, 0, 0},
8442 {0x7B, 0, 0, 0, 0},
8443 {0x7C, 0, 0, 0, 0},
8444 {0x7D, 0, 0, 0, 0},
8445 {0x7E, 0, 0, 0, 0},
8446 {0x7F, 0, 0, 0, 0},
8447 {0x80, 0, 0, 0, 0},
8448 {0x81, 0, 0, 0, 0},
8449 {0x82, 0, 0, 0, 0},
8450 {0x83, 0, 0, 0, 0},
8451 {0x84, 0, 0, 0, 0},
8452 {0x85, 0, 0, 0, 0},
8453 {0x86, 0, 0, 0, 0},
8454 {0x87, 0, 0, 0, 0},
8455 {0x88, 0, 0, 0, 0},
8456 {0x89, 0, 0, 0, 0},
8457 {0x8A, 0, 0, 0, 0},
8458 {0x8B, 0, 0, 0, 0},
8459 {0x8C, 0, 0, 0, 0},
8460 {0x8D, 0, 0, 0, 0},
8461 {0x8E, 0, 0, 0, 0},
8462 {0x8F, 0, 0, 0, 0},
8463 {0x90, 0, 0, 0, 0},
8464 {0x91, 0, 0, 0, 0},
8465 {0x92, 0, 0, 0, 0},
8466 {0x93, 0, 0, 0, 0},
8467 {0x94, 0, 0, 0, 0},
8468 {0xFFFF, 0, 0, 0, 0}
8469 };
8470
8471 static struct radio_regs regs_SYN_2056_A1[] = {
8472 {0x02, 0, 0, 0, 0},
8473 {0x03, 0, 0, 0, 0},
8474 {0x04, 0, 0, 0, 0},
8475 {0x05, 0, 0, 0, 0},
8476 {0x06, 0, 0, 0, 0},
8477 {0x07, 0, 0, 0, 0},
8478 {0x08, 0, 0, 0, 0},
8479 {0x09, 0x1, 0x1, 0, 0},
8480 {0x0A, 0, 0, 0, 0},
8481 {0x0B, 0, 0, 0, 0},
8482 {0x0C, 0, 0, 0, 0},
8483 {0x0D, 0, 0, 0, 0},
8484 {0x0E, 0, 0, 0, 0},
8485 {0x0F, 0, 0, 0, 0},
8486 {0x10, 0, 0, 0, 0},
8487 {0x11, 0, 0, 0, 0},
8488 {0x12, 0, 0, 0, 0},
8489 {0x13, 0, 0, 0, 0},
8490 {0x14, 0, 0, 0, 0},
8491 {0x15, 0, 0, 0, 0},
8492 {0x16, 0, 0, 0, 0},
8493 {0x17, 0, 0, 0, 0},
8494 {0x18, 0, 0, 0, 0},
8495 {0x19, 0, 0, 0, 0},
8496 {0x1A, 0, 0, 0, 0},
8497 {0x1B, 0, 0, 0, 0},
8498 {0x1C, 0, 0, 0, 0},
8499 {0x1D, 0, 0, 0, 0},
8500 {0x1E, 0, 0, 0, 0},
8501 {0x1F, 0, 0, 0, 0},
8502 {0x20, 0, 0, 0, 0},
8503 {0x21, 0, 0, 0, 0},
8504 {0x22, 0x60, 0x60, 0, 0},
8505 {0x23, 0x6, 0x6, 0, 0},
8506 {0x24, 0xc, 0xc, 0, 0},
8507 {0x25, 0, 0, 0, 0},
8508 {0x26, 0, 0, 0, 0},
8509 {0x27, 0, 0, 0, 0},
8510 {0x28, 0x1, 0x1, 0, 0},
8511 {0x29, 0, 0, 0, 0},
8512 {0x2A, 0, 0, 0, 0},
8513 {0x2B, 0, 0, 0, 0},
8514 {0x2C, 0, 0, 0, 0},
8515 {0x2D, 0, 0, 0, 0},
8516 {0x2E, 0xd, 0xd, 0, 0},
8517 {0x2F, 0x1f, 0x1f, 0, 0},
8518 {0x30, 0x15, 0x15, 0, 0},
8519 {0x31, 0xf, 0xf, 0, 0},
8520 {0x32, 0, 0, 0, 0},
8521 {0x33, 0, 0, 0, 0},
8522 {0x34, 0, 0, 0, 0},
8523 {0x35, 0, 0, 0, 0},
8524 {0x36, 0, 0, 0, 0},
8525 {0x37, 0, 0, 0, 0},
8526 {0x38, 0, 0, 0, 0},
8527 {0x39, 0, 0, 0, 0},
8528 {0x3A, 0, 0, 0, 0},
8529 {0x3B, 0, 0, 0, 0},
8530 {0x3C, 0x13, 0x13, 0, 0},
8531 {0x3D, 0xf, 0xf, 0, 0},
8532 {0x3E, 0x18, 0x18, 0, 0},
8533 {0x3F, 0, 0, 0, 0},
8534 {0x40, 0, 0, 0, 0},
8535 {0x41, 0x20, 0x20, 0, 0},
8536 {0x42, 0x20, 0x20, 0, 0},
8537 {0x43, 0, 0, 0, 0},
8538 {0x44, 0x77, 0x77, 0, 0},
8539 {0x45, 0x7, 0x7, 0, 0},
8540 {0x46, 0x1, 0x1, 0, 0},
8541 {0x47, 0x4, 0x4, 0, 0},
8542 {0x48, 0xf, 0xf, 0, 0},
8543 {0x49, 0x30, 0x30, 0, 0},
8544 {0x4A, 0x32, 0x32, 0, 0},
8545 {0x4B, 0xd, 0xd, 0, 0},
8546 {0x4C, 0xd, 0xd, 0, 0},
8547 {0x4D, 0x4, 0x4, 0, 0},
8548 {0x4E, 0x6, 0x6, 0, 0},
8549 {0x4F, 0x1, 0x1, 0, 0},
8550 {0x50, 0x1c, 0x1c, 0, 0},
8551 {0x51, 0x2, 0x2, 0, 0},
8552 {0x52, 0x2, 0x2, 0, 0},
8553 {0x53, 0xf7, 0xf7, 1, 1},
8554 {0x54, 0xb4, 0xb4, 0, 0},
8555 {0x55, 0xd2, 0xd2, 0, 0},
8556 {0x56, 0, 0, 0, 0},
8557 {0x57, 0, 0, 0, 0},
8558 {0x58, 0x4, 0x4, 0, 0},
8559 {0x59, 0x96, 0x96, 0, 0},
8560 {0x5A, 0x3e, 0x3e, 0, 0},
8561 {0x5B, 0x3e, 0x3e, 0, 0},
8562 {0x5C, 0x13, 0x13, 0, 0},
8563 {0x5D, 0x2, 0x2, 0, 0},
8564 {0x5E, 0, 0, 0, 0},
8565 {0x5F, 0x7, 0x7, 0, 0},
8566 {0x60, 0x7, 0x7, 1, 1},
8567 {0x61, 0x8, 0x8, 0, 0},
8568 {0x62, 0x3, 0x3, 0, 0},
8569 {0x63, 0, 0, 0, 0},
8570 {0x64, 0, 0, 0, 0},
8571 {0x65, 0, 0, 0, 0},
8572 {0x66, 0, 0, 0, 0},
8573 {0x67, 0, 0, 0, 0},
8574 {0x68, 0x40, 0x40, 0, 0},
8575 {0x69, 0, 0, 0, 0},
8576 {0x6A, 0, 0, 0, 0},
8577 {0x6B, 0, 0, 0, 0},
8578 {0x6C, 0, 0, 0, 0},
8579 {0x6D, 0x1, 0x1, 0, 0},
8580 {0x6E, 0, 0, 0, 0},
8581 {0x6F, 0, 0, 0, 0},
8582 {0x70, 0x60, 0x60, 0, 0},
8583 {0x71, 0x66, 0x66, 0, 0},
8584 {0x72, 0xc, 0xc, 0, 0},
8585 {0x73, 0x66, 0x66, 0, 0},
8586 {0x74, 0x8f, 0x8f, 1, 1},
8587 {0x75, 0, 0, 0, 0},
8588 {0x76, 0xcc, 0xcc, 0, 0},
8589 {0x77, 0x1, 0x1, 0, 0},
8590 {0x78, 0x66, 0x66, 0, 0},
8591 {0x79, 0x66, 0x66, 0, 0},
8592 {0x7A, 0, 0, 0, 0},
8593 {0x7B, 0, 0, 0, 0},
8594 {0x7C, 0, 0, 0, 0},
8595 {0x7D, 0, 0, 0, 0},
8596 {0x7E, 0, 0, 0, 0},
8597 {0x7F, 0, 0, 0, 0},
8598 {0x80, 0, 0, 0, 0},
8599 {0x81, 0, 0, 0, 0},
8600 {0x82, 0, 0, 0, 0},
8601 {0x83, 0, 0, 0, 0},
8602 {0x84, 0, 0, 0, 0},
8603 {0x85, 0xff, 0xff, 0, 0},
8604 {0x86, 0, 0, 0, 0},
8605 {0x87, 0, 0, 0, 0},
8606 {0x88, 0, 0, 0, 0},
8607 {0x89, 0, 0, 0, 0},
8608 {0x8A, 0, 0, 0, 0},
8609 {0x8B, 0, 0, 0, 0},
8610 {0x8C, 0, 0, 0, 0},
8611 {0x8D, 0, 0, 0, 0},
8612 {0x8E, 0, 0, 0, 0},
8613 {0x8F, 0, 0, 0, 0},
8614 {0x90, 0, 0, 0, 0},
8615 {0x91, 0, 0, 0, 0},
8616 {0x92, 0, 0, 0, 0},
8617 {0x93, 0, 0, 0, 0},
8618 {0x94, 0, 0, 0, 0},
8619 {0x95, 0, 0, 0, 0},
8620 {0x96, 0, 0, 0, 0},
8621 {0x97, 0, 0, 0, 0},
8622 {0x98, 0, 0, 0, 0},
8623 {0x99, 0, 0, 0, 0},
8624 {0x9A, 0, 0, 0, 0},
8625 {0x9B, 0, 0, 0, 0},
8626 {0x9C, 0, 0, 0, 0},
8627 {0x9D, 0, 0, 0, 0},
8628 {0x9E, 0, 0, 0, 0},
8629 {0x9F, 0x6, 0x6, 0, 0},
8630 {0xA0, 0x66, 0x66, 0, 0},
8631 {0xA1, 0x66, 0x66, 0, 0},
8632 {0xA2, 0x66, 0x66, 0, 0},
8633 {0xA3, 0x66, 0x66, 0, 0},
8634 {0xA4, 0x66, 0x66, 0, 0},
8635 {0xA5, 0x66, 0x66, 0, 0},
8636 {0xA6, 0x66, 0x66, 0, 0},
8637 {0xA7, 0x66, 0x66, 0, 0},
8638 {0xA8, 0x66, 0x66, 0, 0},
8639 {0xA9, 0x66, 0x66, 0, 0},
8640 {0xAA, 0x66, 0x66, 0, 0},
8641 {0xAB, 0x66, 0x66, 0, 0},
8642 {0xAC, 0x66, 0x66, 0, 0},
8643 {0xAD, 0x66, 0x66, 0, 0},
8644 {0xAE, 0x66, 0x66, 0, 0},
8645 {0xAF, 0x66, 0x66, 0, 0},
8646 {0xB0, 0x66, 0x66, 0, 0},
8647 {0xB1, 0x66, 0x66, 0, 0},
8648 {0xB2, 0x66, 0x66, 0, 0},
8649 {0xB3, 0xa, 0xa, 0, 0},
8650 {0xB4, 0, 0, 0, 0},
8651 {0xB5, 0, 0, 0, 0},
8652 {0xB6, 0, 0, 0, 0},
8653 {0xFFFF, 0, 0, 0, 0}
8654 };
8655
8656 static struct radio_regs regs_TX_2056_A1[] = {
8657 {0x02, 0, 0, 0, 0},
8658 {0x03, 0, 0, 0, 0},
8659 {0x04, 0, 0, 0, 0},
8660 {0x05, 0, 0, 0, 0},
8661 {0x06, 0, 0, 0, 0},
8662 {0x07, 0, 0, 0, 0},
8663 {0x08, 0, 0, 0, 0},
8664 {0x09, 0, 0, 0, 0},
8665 {0x0A, 0, 0, 0, 0},
8666 {0x0B, 0, 0, 0, 0},
8667 {0x0C, 0, 0, 0, 0},
8668 {0x0D, 0, 0, 0, 0},
8669 {0x0E, 0, 0, 0, 0},
8670 {0x0F, 0, 0, 0, 0},
8671 {0x10, 0, 0, 0, 0},
8672 {0x11, 0, 0, 0, 0},
8673 {0x12, 0, 0, 0, 0},
8674 {0x13, 0, 0, 0, 0},
8675 {0x14, 0, 0, 0, 0},
8676 {0x15, 0, 0, 0, 0},
8677 {0x16, 0, 0, 0, 0},
8678 {0x17, 0, 0, 0, 0},
8679 {0x18, 0, 0, 0, 0},
8680 {0x19, 0, 0, 0, 0},
8681 {0x1A, 0, 0, 0, 0},
8682 {0x1B, 0, 0, 0, 0},
8683 {0x1C, 0, 0, 0, 0},
8684 {0x1D, 0, 0, 0, 0},
8685 {0x1E, 0, 0, 0, 0},
8686 {0x1F, 0, 0, 0, 0},
8687 {0x20, 0, 0, 0, 0},
8688 {0x21, 0x88, 0x88, 0, 0},
8689 {0x22, 0x88, 0x88, 0, 0},
8690 {0x23, 0x88, 0x88, 0, 0},
8691 {0x24, 0x88, 0x88, 0, 0},
8692 {0x25, 0xc, 0xc, 0, 0},
8693 {0x26, 0, 0, 0, 0},
8694 {0x27, 0x3, 0x3, 0, 0},
8695 {0x28, 0, 0, 0, 0},
8696 {0x29, 0x3, 0x3, 0, 0},
8697 {0x2A, 0x37, 0x37, 0, 0},
8698 {0x2B, 0x3, 0x3, 0, 0},
8699 {0x2C, 0, 0, 0, 0},
8700 {0x2D, 0, 0, 0, 0},
8701 {0x2E, 0x1, 0x1, 0, 0},
8702 {0x2F, 0x1, 0x1, 0, 0},
8703 {0x30, 0, 0, 0, 0},
8704 {0x31, 0, 0, 0, 0},
8705 {0x32, 0, 0, 0, 0},
8706 {0x33, 0x11, 0x11, 0, 0},
8707 {0x34, 0x11, 0x11, 0, 0},
8708 {0x35, 0, 0, 0, 0},
8709 {0x36, 0, 0, 0, 0},
8710 {0x37, 0x3, 0x3, 0, 0},
8711 {0x38, 0xf, 0xf, 0, 0},
8712 {0x39, 0, 0, 0, 0},
8713 {0x3A, 0x2d, 0x2d, 0, 0},
8714 {0x3B, 0, 0, 0, 0},
8715 {0x3C, 0x6e, 0x6e, 0, 0},
8716 {0x3D, 0xf0, 0xf0, 1, 1},
8717 {0x3E, 0, 0, 0, 0},
8718 {0x3F, 0, 0, 0, 0},
8719 {0x40, 0, 0, 0, 0},
8720 {0x41, 0x3, 0x3, 0, 0},
8721 {0x42, 0x3, 0x3, 0, 0},
8722 {0x43, 0, 0, 0, 0},
8723 {0x44, 0x1e, 0x1e, 0, 0},
8724 {0x45, 0, 0, 0, 0},
8725 {0x46, 0x6e, 0x6e, 0, 0},
8726 {0x47, 0xf0, 0xf0, 1, 1},
8727 {0x48, 0, 0, 0, 0},
8728 {0x49, 0x2, 0x2, 0, 0},
8729 {0x4A, 0xff, 0xff, 1, 1},
8730 {0x4B, 0xc, 0xc, 0, 0},
8731 {0x4C, 0, 0, 0, 0},
8732 {0x4D, 0x38, 0x38, 0, 0},
8733 {0x4E, 0x70, 0x70, 1, 1},
8734 {0x4F, 0x2, 0x2, 0, 0},
8735 {0x50, 0x88, 0x88, 0, 0},
8736 {0x51, 0xc, 0xc, 0, 0},
8737 {0x52, 0, 0, 0, 0},
8738 {0x53, 0x8, 0x8, 0, 0},
8739 {0x54, 0x70, 0x70, 1, 1},
8740 {0x55, 0x2, 0x2, 0, 0},
8741 {0x56, 0xff, 0xff, 1, 1},
8742 {0x57, 0, 0, 0, 0},
8743 {0x58, 0x83, 0x83, 0, 0},
8744 {0x59, 0x77, 0x77, 1, 1},
8745 {0x5A, 0, 0, 0, 0},
8746 {0x5B, 0x2, 0x2, 0, 0},
8747 {0x5C, 0x88, 0x88, 0, 0},
8748 {0x5D, 0, 0, 0, 0},
8749 {0x5E, 0x8, 0x8, 0, 0},
8750 {0x5F, 0x77, 0x77, 1, 1},
8751 {0x60, 0x1, 0x1, 0, 0},
8752 {0x61, 0, 0, 0, 0},
8753 {0x62, 0x7, 0x7, 0, 0},
8754 {0x63, 0, 0, 0, 0},
8755 {0x64, 0x7, 0x7, 0, 0},
8756 {0x65, 0, 0, 0, 0},
8757 {0x66, 0, 0, 0, 0},
8758 {0x67, 0x72, 0x72, 1, 1},
8759 {0x68, 0, 0, 0, 0},
8760 {0x69, 0xa, 0xa, 0, 0},
8761 {0x6A, 0, 0, 0, 0},
8762 {0x6B, 0, 0, 0, 0},
8763 {0x6C, 0, 0, 0, 0},
8764 {0x6D, 0, 0, 0, 0},
8765 {0x6E, 0, 0, 0, 0},
8766 {0x6F, 0, 0, 0, 0},
8767 {0x70, 0, 0, 0, 0},
8768 {0x71, 0x2, 0x2, 0, 0},
8769 {0x72, 0, 0, 0, 0},
8770 {0x73, 0, 0, 0, 0},
8771 {0x74, 0xe, 0xe, 0, 0},
8772 {0x75, 0xe, 0xe, 0, 0},
8773 {0x76, 0xe, 0xe, 0, 0},
8774 {0x77, 0x13, 0x13, 0, 0},
8775 {0x78, 0x13, 0x13, 0, 0},
8776 {0x79, 0x1b, 0x1b, 0, 0},
8777 {0x7A, 0x1b, 0x1b, 0, 0},
8778 {0x7B, 0x55, 0x55, 0, 0},
8779 {0x7C, 0x5b, 0x5b, 0, 0},
8780 {0x7D, 0, 0, 0, 0},
8781 {0x7E, 0, 0, 0, 0},
8782 {0x7F, 0, 0, 0, 0},
8783 {0x80, 0, 0, 0, 0},
8784 {0x81, 0, 0, 0, 0},
8785 {0x82, 0, 0, 0, 0},
8786 {0x83, 0, 0, 0, 0},
8787 {0x84, 0, 0, 0, 0},
8788 {0x85, 0, 0, 0, 0},
8789 {0x86, 0, 0, 0, 0},
8790 {0x87, 0, 0, 0, 0},
8791 {0x88, 0, 0, 0, 0},
8792 {0x89, 0, 0, 0, 0},
8793 {0x8A, 0, 0, 0, 0},
8794 {0x8B, 0, 0, 0, 0},
8795 {0x8C, 0, 0, 0, 0},
8796 {0x8D, 0, 0, 0, 0},
8797 {0x8E, 0, 0, 0, 0},
8798 {0x8F, 0, 0, 0, 0},
8799 {0x90, 0, 0, 0, 0},
8800 {0x91, 0, 0, 0, 0},
8801 {0x92, 0, 0, 0, 0},
8802 {0xFFFF, 0, 0, 0, 0}
8803 };
8804
8805 static struct radio_regs regs_RX_2056_A1[] = {
8806 {0x02, 0, 0, 0, 0},
8807 {0x03, 0, 0, 0, 0},
8808 {0x04, 0, 0, 0, 0},
8809 {0x05, 0, 0, 0, 0},
8810 {0x06, 0, 0, 0, 0},
8811 {0x07, 0, 0, 0, 0},
8812 {0x08, 0, 0, 0, 0},
8813 {0x09, 0, 0, 0, 0},
8814 {0x0A, 0, 0, 0, 0},
8815 {0x0B, 0, 0, 0, 0},
8816 {0x0C, 0, 0, 0, 0},
8817 {0x0D, 0, 0, 0, 0},
8818 {0x0E, 0, 0, 0, 0},
8819 {0x0F, 0, 0, 0, 0},
8820 {0x10, 0, 0, 0, 0},
8821 {0x11, 0, 0, 0, 0},
8822 {0x12, 0, 0, 0, 0},
8823 {0x13, 0, 0, 0, 0},
8824 {0x14, 0, 0, 0, 0},
8825 {0x15, 0, 0, 0, 0},
8826 {0x16, 0, 0, 0, 0},
8827 {0x17, 0, 0, 0, 0},
8828 {0x18, 0, 0, 0, 0},
8829 {0x19, 0, 0, 0, 0},
8830 {0x1A, 0, 0, 0, 0},
8831 {0x1B, 0, 0, 0, 0},
8832 {0x1C, 0, 0, 0, 0},
8833 {0x1D, 0, 0, 0, 0},
8834 {0x1E, 0, 0, 0, 0},
8835 {0x1F, 0, 0, 0, 0},
8836 {0x20, 0x3, 0x3, 0, 0},
8837 {0x21, 0, 0, 0, 0},
8838 {0x22, 0, 0, 0, 0},
8839 {0x23, 0x90, 0x90, 0, 0},
8840 {0x24, 0x55, 0x55, 0, 0},
8841 {0x25, 0x15, 0x15, 0, 0},
8842 {0x26, 0x5, 0x5, 0, 0},
8843 {0x27, 0x15, 0x15, 0, 0},
8844 {0x28, 0x5, 0x5, 0, 0},
8845 {0x29, 0x20, 0x20, 0, 0},
8846 {0x2A, 0x11, 0x11, 0, 0},
8847 {0x2B, 0x90, 0x90, 0, 0},
8848 {0x2C, 0, 0, 0, 0},
8849 {0x2D, 0x88, 0x88, 0, 0},
8850 {0x2E, 0x32, 0x32, 0, 0},
8851 {0x2F, 0x77, 0x77, 0, 0},
8852 {0x30, 0x17, 0x17, 1, 1},
8853 {0x31, 0xff, 0xff, 1, 1},
8854 {0x32, 0x20, 0x20, 0, 0},
8855 {0x33, 0, 0, 0, 0},
8856 {0x34, 0x88, 0x88, 0, 0},
8857 {0x35, 0x32, 0x32, 0, 0},
8858 {0x36, 0x77, 0x77, 0, 0},
8859 {0x37, 0x17, 0x17, 1, 1},
8860 {0x38, 0xf0, 0xf0, 1, 1},
8861 {0x39, 0x20, 0x20, 0, 0},
8862 {0x3A, 0x8, 0x8, 0, 0},
8863 {0x3B, 0x55, 0x55, 1, 1},
8864 {0x3C, 0, 0, 0, 0},
8865 {0x3D, 0x44, 0x44, 1, 1},
8866 {0x3E, 0, 0, 0, 0},
8867 {0x3F, 0x44, 0x44, 0, 0},
8868 {0x40, 0xf, 0xf, 1, 1},
8869 {0x41, 0x6, 0x6, 0, 0},
8870 {0x42, 0x4, 0x4, 0, 0},
8871 {0x43, 0x50, 0x50, 1, 1},
8872 {0x44, 0x8, 0x8, 0, 0},
8873 {0x45, 0x55, 0x55, 1, 1},
8874 {0x46, 0, 0, 0, 0},
8875 {0x47, 0x11, 0x11, 0, 0},
8876 {0x48, 0, 0, 0, 0},
8877 {0x49, 0x44, 0x44, 0, 0},
8878 {0x4A, 0x7, 0x7, 0, 0},
8879 {0x4B, 0x6, 0x6, 0, 0},
8880 {0x4C, 0x4, 0x4, 0, 0},
8881 {0x4D, 0, 0, 0, 0},
8882 {0x4E, 0, 0, 0, 0},
8883 {0x4F, 0x26, 0x26, 1, 1},
8884 {0x50, 0x26, 0x26, 1, 1},
8885 {0x51, 0xf, 0xf, 1, 1},
8886 {0x52, 0xf, 0xf, 1, 1},
8887 {0x53, 0x44, 0x44, 0, 0},
8888 {0x54, 0, 0, 0, 0},
8889 {0x55, 0, 0, 0, 0},
8890 {0x56, 0x8, 0x8, 0, 0},
8891 {0x57, 0x8, 0x8, 0, 0},
8892 {0x58, 0x7, 0x7, 0, 0},
8893 {0x59, 0x22, 0x22, 0, 0},
8894 {0x5A, 0x22, 0x22, 0, 0},
8895 {0x5B, 0x2, 0x2, 0, 0},
8896 {0x5C, 0x2f, 0x2f, 1, 1},
8897 {0x5D, 0x7, 0x7, 0, 0},
8898 {0x5E, 0x55, 0x55, 0, 0},
8899 {0x5F, 0x23, 0x23, 0, 0},
8900 {0x60, 0x41, 0x41, 0, 0},
8901 {0x61, 0x1, 0x1, 0, 0},
8902 {0x62, 0xa, 0xa, 0, 0},
8903 {0x63, 0, 0, 0, 0},
8904 {0x64, 0, 0, 0, 0},
8905 {0x65, 0, 0, 0, 0},
8906 {0x66, 0, 0, 0, 0},
8907 {0x67, 0, 0, 0, 0},
8908 {0x68, 0, 0, 0, 0},
8909 {0x69, 0, 0, 0, 0},
8910 {0x6A, 0, 0, 0, 0},
8911 {0x6B, 0xc, 0xc, 0, 0},
8912 {0x6C, 0, 0, 0, 0},
8913 {0x6D, 0, 0, 0, 0},
8914 {0x6E, 0, 0, 0, 0},
8915 {0x6F, 0, 0, 0, 0},
8916 {0x70, 0, 0, 0, 0},
8917 {0x71, 0, 0, 0, 0},
8918 {0x72, 0x22, 0x22, 0, 0},
8919 {0x73, 0x22, 0x22, 0, 0},
8920 {0x74, 0, 0, 1, 1},
8921 {0x75, 0xa, 0xa, 0, 0},
8922 {0x76, 0x1, 0x1, 0, 0},
8923 {0x77, 0x22, 0x22, 0, 0},
8924 {0x78, 0x30, 0x30, 0, 0},
8925 {0x79, 0, 0, 0, 0},
8926 {0x7A, 0, 0, 0, 0},
8927 {0x7B, 0, 0, 0, 0},
8928 {0x7C, 0, 0, 0, 0},
8929 {0x7D, 0, 0, 0, 0},
8930 {0x7E, 0, 0, 0, 0},
8931 {0x7F, 0, 0, 0, 0},
8932 {0x80, 0, 0, 0, 0},
8933 {0x81, 0, 0, 0, 0},
8934 {0x82, 0, 0, 0, 0},
8935 {0x83, 0, 0, 0, 0},
8936 {0x84, 0, 0, 0, 0},
8937 {0x85, 0, 0, 0, 0},
8938 {0x86, 0, 0, 0, 0},
8939 {0x87, 0, 0, 0, 0},
8940 {0x88, 0, 0, 0, 0},
8941 {0x89, 0, 0, 0, 0},
8942 {0x8A, 0, 0, 0, 0},
8943 {0x8B, 0, 0, 0, 0},
8944 {0x8C, 0, 0, 0, 0},
8945 {0x8D, 0, 0, 0, 0},
8946 {0x8E, 0, 0, 0, 0},
8947 {0x8F, 0, 0, 0, 0},
8948 {0x90, 0, 0, 0, 0},
8949 {0x91, 0, 0, 0, 0},
8950 {0x92, 0, 0, 0, 0},
8951 {0x93, 0, 0, 0, 0},
8952 {0x94, 0, 0, 0, 0},
8953 {0xFFFF, 0, 0, 0, 0}
8954 };
8955
8956 static struct radio_regs regs_SYN_2056_rev5[] = {
8957 {0x02, 0, 0, 0, 0},
8958 {0x03, 0, 0, 0, 0},
8959 {0x04, 0, 0, 0, 0},
8960 {0x05, 0, 0, 0, 0},
8961 {0x06, 0, 0, 0, 0},
8962 {0x07, 0, 0, 0, 0},
8963 {0x08, 0, 0, 0, 0},
8964 {0x09, 0x1, 0x1, 0, 0},
8965 {0x0A, 0, 0, 0, 0},
8966 {0x0B, 0, 0, 0, 0},
8967 {0x0C, 0, 0, 0, 0},
8968 {0x0D, 0, 0, 0, 0},
8969 {0x0E, 0, 0, 0, 0},
8970 {0x0F, 0, 0, 0, 0},
8971 {0x10, 0, 0, 0, 0},
8972 {0x11, 0, 0, 0, 0},
8973 {0x12, 0, 0, 0, 0},
8974 {0x13, 0, 0, 0, 0},
8975 {0x14, 0, 0, 0, 0},
8976 {0x15, 0, 0, 0, 0},
8977 {0x16, 0, 0, 0, 0},
8978 {0x17, 0, 0, 0, 0},
8979 {0x18, 0, 0, 0, 0},
8980 {0x19, 0, 0, 0, 0},
8981 {0x1A, 0, 0, 0, 0},
8982 {0x1B, 0, 0, 0, 0},
8983 {0x1C, 0, 0, 0, 0},
8984 {0x1D, 0, 0, 0, 0},
8985 {0x1E, 0, 0, 0, 0},
8986 {0x1F, 0, 0, 0, 0},
8987 {0x20, 0, 0, 0, 0},
8988 {0x21, 0, 0, 0, 0},
8989 {0x22, 0x60, 0x60, 0, 0},
8990 {0x23, 0x6, 0x6, 0, 0},
8991 {0x24, 0xc, 0xc, 0, 0},
8992 {0x25, 0, 0, 0, 0},
8993 {0x26, 0, 0, 0, 0},
8994 {0x27, 0, 0, 0, 0},
8995 {0x28, 0x1, 0x1, 0, 0},
8996 {0x29, 0, 0, 0, 0},
8997 {0x2A, 0, 0, 0, 0},
8998 {0x2B, 0, 0, 0, 0},
8999 {0x2C, 0, 0, 0, 0},
9000 {0x2D, 0, 0, 0, 0},
9001 {0x2E, 0, 0, 0, 0},
9002 {0x2F, 0x1f, 0x1f, 0, 0},
9003 {0x30, 0x15, 0x15, 0, 0},
9004 {0x31, 0xf, 0xf, 0, 0},
9005 {0x32, 0, 0, 0, 0},
9006 {0x33, 0, 0, 0, 0},
9007 {0x34, 0, 0, 0, 0},
9008 {0x35, 0, 0, 0, 0},
9009 {0x36, 0, 0, 0, 0},
9010 {0x37, 0, 0, 0, 0},
9011 {0x38, 0, 0, 0, 0},
9012 {0x39, 0, 0, 0, 0},
9013 {0x3A, 0, 0, 0, 0},
9014 {0x3B, 0, 0, 0, 0},
9015 {0x3C, 0x13, 0x13, 0, 0},
9016 {0x3D, 0xf, 0xf, 0, 0},
9017 {0x3E, 0x18, 0x18, 0, 0},
9018 {0x3F, 0, 0, 0, 0},
9019 {0x40, 0, 0, 0, 0},
9020 {0x41, 0x20, 0x20, 0, 0},
9021 {0x42, 0x20, 0x20, 0, 0},
9022 {0x43, 0, 0, 0, 0},
9023 {0x44, 0x77, 0x77, 0, 0},
9024 {0x45, 0x7, 0x7, 0, 0},
9025 {0x46, 0x1, 0x1, 0, 0},
9026 {0x47, 0x4, 0x4, 0, 0},
9027 {0x48, 0xf, 0xf, 0, 0},
9028 {0x49, 0x30, 0x30, 0, 0},
9029 {0x4A, 0x32, 0x32, 0, 0},
9030 {0x4B, 0xd, 0xd, 0, 0},
9031 {0x4C, 0xd, 0xd, 0, 0},
9032 {0x4D, 0x4, 0x4, 0, 0},
9033 {0x4E, 0x6, 0x6, 0, 0},
9034 {0x4F, 0x1, 0x1, 0, 0},
9035 {0x50, 0x1c, 0x1c, 0, 0},
9036 {0x51, 0x2, 0x2, 0, 0},
9037 {0x52, 0x2, 0x2, 0, 0},
9038 {0x53, 0xf7, 0xf7, 1, 1},
9039 {0x54, 0xb4, 0xb4, 0, 0},
9040 {0x55, 0xd2, 0xd2, 0, 0},
9041 {0x56, 0, 0, 0, 0},
9042 {0x57, 0, 0, 0, 0},
9043 {0x58, 0x4, 0x4, 0, 0},
9044 {0x59, 0x96, 0x96, 0, 0},
9045 {0x5A, 0x3e, 0x3e, 0, 0},
9046 {0x5B, 0x3e, 0x3e, 0, 0},
9047 {0x5C, 0x13, 0x13, 0, 0},
9048 {0x5D, 0x2, 0x2, 0, 0},
9049 {0x5E, 0, 0, 0, 0},
9050 {0x5F, 0x7, 0x7, 0, 0},
9051 {0x60, 0x7, 0x7, 1, 1},
9052 {0x61, 0x8, 0x8, 0, 0},
9053 {0x62, 0x3, 0x3, 0, 0},
9054 {0x63, 0, 0, 0, 0},
9055 {0x64, 0, 0, 0, 0},
9056 {0x65, 0, 0, 0, 0},
9057 {0x66, 0, 0, 0, 0},
9058 {0x67, 0, 0, 0, 0},
9059 {0x68, 0x40, 0x40, 0, 0},
9060 {0x69, 0, 0, 0, 0},
9061 {0x6A, 0, 0, 0, 0},
9062 {0x6B, 0, 0, 0, 0},
9063 {0x6C, 0, 0, 0, 0},
9064 {0x6D, 0x1, 0x1, 0, 0},
9065 {0x6E, 0, 0, 0, 0},
9066 {0x6F, 0, 0, 0, 0},
9067 {0x70, 0x60, 0x60, 0, 0},
9068 {0x71, 0x66, 0x66, 0, 0},
9069 {0x72, 0xc, 0xc, 0, 0},
9070 {0x73, 0x66, 0x66, 0, 0},
9071 {0x74, 0x8f, 0x8f, 1, 1},
9072 {0x75, 0, 0, 0, 0},
9073 {0x76, 0xcc, 0xcc, 0, 0},
9074 {0x77, 0x1, 0x1, 0, 0},
9075 {0x78, 0x66, 0x66, 0, 0},
9076 {0x79, 0x66, 0x66, 0, 0},
9077 {0x7A, 0, 0, 0, 0},
9078 {0x7B, 0, 0, 0, 0},
9079 {0x7C, 0, 0, 0, 0},
9080 {0x7D, 0, 0, 0, 0},
9081 {0x7E, 0, 0, 0, 0},
9082 {0x7F, 0, 0, 0, 0},
9083 {0x80, 0, 0, 0, 0},
9084 {0x81, 0, 0, 0, 0},
9085 {0x82, 0, 0, 0, 0},
9086 {0x83, 0, 0, 0, 0},
9087 {0x84, 0, 0, 0, 0},
9088 {0x85, 0xff, 0xff, 0, 0},
9089 {0x86, 0, 0, 0, 0},
9090 {0x87, 0, 0, 0, 0},
9091 {0x88, 0, 0, 0, 0},
9092 {0x89, 0, 0, 0, 0},
9093 {0x8A, 0, 0, 0, 0},
9094 {0x8B, 0, 0, 0, 0},
9095 {0x8C, 0, 0, 0, 0},
9096 {0x8D, 0, 0, 0, 0},
9097 {0x8E, 0, 0, 0, 0},
9098 {0x8F, 0, 0, 0, 0},
9099 {0x90, 0, 0, 0, 0},
9100 {0x91, 0, 0, 0, 0},
9101 {0x92, 0, 0, 0, 0},
9102 {0x93, 0, 0, 0, 0},
9103 {0x94, 0, 0, 0, 0},
9104 {0x95, 0, 0, 0, 0},
9105 {0x96, 0, 0, 0, 0},
9106 {0x97, 0, 0, 0, 0},
9107 {0x98, 0, 0, 0, 0},
9108 {0x99, 0, 0, 0, 0},
9109 {0x9A, 0, 0, 0, 0},
9110 {0x9B, 0, 0, 0, 0},
9111 {0x9C, 0, 0, 0, 0},
9112 {0x9D, 0, 0, 0, 0},
9113 {0x9E, 0, 0, 0, 0},
9114 {0x9F, 0x6, 0x6, 0, 0},
9115 {0xA0, 0x66, 0x66, 0, 0},
9116 {0xA1, 0x66, 0x66, 0, 0},
9117 {0xA2, 0x66, 0x66, 0, 0},
9118 {0xA3, 0x66, 0x66, 0, 0},
9119 {0xA4, 0x66, 0x66, 0, 0},
9120 {0xA5, 0x66, 0x66, 0, 0},
9121 {0xA6, 0x66, 0x66, 0, 0},
9122 {0xA7, 0x66, 0x66, 0, 0},
9123 {0xA8, 0x66, 0x66, 0, 0},
9124 {0xA9, 0x66, 0x66, 0, 0},
9125 {0xAA, 0x66, 0x66, 0, 0},
9126 {0xAB, 0x66, 0x66, 0, 0},
9127 {0xAC, 0x66, 0x66, 0, 0},
9128 {0xAD, 0x66, 0x66, 0, 0},
9129 {0xAE, 0x66, 0x66, 0, 0},
9130 {0xAF, 0x66, 0x66, 0, 0},
9131 {0xB0, 0x66, 0x66, 0, 0},
9132 {0xB1, 0x66, 0x66, 0, 0},
9133 {0xB2, 0x66, 0x66, 0, 0},
9134 {0xB3, 0xa, 0xa, 0, 0},
9135 {0xB4, 0, 0, 0, 0},
9136 {0xB5, 0, 0, 0, 0},
9137 {0xB6, 0, 0, 0, 0},
9138 {0xFFFF, 0, 0, 0, 0}
9139 };
9140
9141 static struct radio_regs regs_TX_2056_rev5[] = {
9142 {0x02, 0, 0, 0, 0},
9143 {0x03, 0, 0, 0, 0},
9144 {0x04, 0, 0, 0, 0},
9145 {0x05, 0, 0, 0, 0},
9146 {0x06, 0, 0, 0, 0},
9147 {0x07, 0, 0, 0, 0},
9148 {0x08, 0, 0, 0, 0},
9149 {0x09, 0, 0, 0, 0},
9150 {0x0A, 0, 0, 0, 0},
9151 {0x0B, 0, 0, 0, 0},
9152 {0x0C, 0, 0, 0, 0},
9153 {0x0D, 0, 0, 0, 0},
9154 {0x0E, 0, 0, 0, 0},
9155 {0x0F, 0, 0, 0, 0},
9156 {0x10, 0, 0, 0, 0},
9157 {0x11, 0, 0, 0, 0},
9158 {0x12, 0, 0, 0, 0},
9159 {0x13, 0, 0, 0, 0},
9160 {0x14, 0, 0, 0, 0},
9161 {0x15, 0, 0, 0, 0},
9162 {0x16, 0, 0, 0, 0},
9163 {0x17, 0, 0, 0, 0},
9164 {0x18, 0, 0, 0, 0},
9165 {0x19, 0, 0, 0, 0},
9166 {0x1A, 0, 0, 0, 0},
9167 {0x1B, 0, 0, 0, 0},
9168 {0x1C, 0, 0, 0, 0},
9169 {0x1D, 0, 0, 0, 0},
9170 {0x1E, 0, 0, 0, 0},
9171 {0x1F, 0, 0, 0, 0},
9172 {0x20, 0, 0, 0, 0},
9173 {0x21, 0x88, 0x88, 0, 0},
9174 {0x22, 0x88, 0x88, 0, 0},
9175 {0x23, 0x88, 0x88, 0, 0},
9176 {0x24, 0x88, 0x88, 0, 0},
9177 {0x25, 0xc, 0xc, 0, 0},
9178 {0x26, 0, 0, 0, 0},
9179 {0x27, 0x3, 0x3, 0, 0},
9180 {0x28, 0, 0, 0, 0},
9181 {0x29, 0x3, 0x3, 0, 0},
9182 {0x2A, 0x37, 0x37, 0, 0},
9183 {0x2B, 0x3, 0x3, 0, 0},
9184 {0x2C, 0, 0, 0, 0},
9185 {0x2D, 0, 0, 0, 0},
9186 {0x2E, 0x1, 0x1, 0, 0},
9187 {0x2F, 0x1, 0x1, 0, 0},
9188 {0x30, 0, 0, 0, 0},
9189 {0x31, 0, 0, 0, 0},
9190 {0x32, 0, 0, 0, 0},
9191 {0x33, 0x11, 0x11, 0, 0},
9192 {0x34, 0x11, 0x11, 0, 0},
9193 {0x35, 0, 0, 0, 0},
9194 {0x36, 0, 0, 0, 0},
9195 {0x37, 0x3, 0x3, 0, 0},
9196 {0x38, 0xf, 0xf, 0, 0},
9197 {0x39, 0, 0, 0, 0},
9198 {0x3A, 0x2d, 0x2d, 0, 0},
9199 {0x3B, 0, 0, 0, 0},
9200 {0x3C, 0x6e, 0x6e, 0, 0},
9201 {0x3D, 0xf0, 0xf0, 1, 1},
9202 {0x3E, 0, 0, 0, 0},
9203 {0x3F, 0, 0, 0, 0},
9204 {0x40, 0, 0, 0, 0},
9205 {0x41, 0x3, 0x3, 0, 0},
9206 {0x42, 0x3, 0x3, 0, 0},
9207 {0x43, 0, 0, 0, 0},
9208 {0x44, 0x1e, 0x1e, 0, 0},
9209 {0x45, 0, 0, 0, 0},
9210 {0x46, 0x6e, 0x6e, 0, 0},
9211 {0x47, 0xf0, 0xf0, 1, 1},
9212 {0x48, 0, 0, 0, 0},
9213 {0x49, 0x2, 0x2, 0, 0},
9214 {0x4A, 0xff, 0xff, 1, 1},
9215 {0x4B, 0xc, 0xc, 0, 0},
9216 {0x4C, 0, 0, 0, 0},
9217 {0x4D, 0x38, 0x38, 0, 0},
9218 {0x4E, 0x70, 0x70, 1, 1},
9219 {0x4F, 0x2, 0x2, 0, 0},
9220 {0x50, 0x88, 0x88, 0, 0},
9221 {0x51, 0xc, 0xc, 0, 0},
9222 {0x52, 0, 0, 0, 0},
9223 {0x53, 0x8, 0x8, 0, 0},
9224 {0x54, 0x70, 0x70, 1, 1},
9225 {0x55, 0x2, 0x2, 0, 0},
9226 {0x56, 0xff, 0xff, 1, 1},
9227 {0x57, 0, 0, 0, 0},
9228 {0x58, 0x83, 0x83, 0, 0},
9229 {0x59, 0x77, 0x77, 1, 1},
9230 {0x5A, 0, 0, 0, 0},
9231 {0x5B, 0x2, 0x2, 0, 0},
9232 {0x5C, 0x88, 0x88, 0, 0},
9233 {0x5D, 0, 0, 0, 0},
9234 {0x5E, 0x8, 0x8, 0, 0},
9235 {0x5F, 0x77, 0x77, 1, 1},
9236 {0x60, 0x1, 0x1, 0, 0},
9237 {0x61, 0, 0, 0, 0},
9238 {0x62, 0x7, 0x7, 0, 0},
9239 {0x63, 0, 0, 0, 0},
9240 {0x64, 0x7, 0x7, 0, 0},
9241 {0x65, 0, 0, 0, 0},
9242 {0x66, 0, 0, 0, 0},
9243 {0x67, 0, 0, 1, 1},
9244 {0x68, 0, 0, 0, 0},
9245 {0x69, 0xa, 0xa, 0, 0},
9246 {0x6A, 0, 0, 0, 0},
9247 {0x6B, 0, 0, 0, 0},
9248 {0x6C, 0, 0, 0, 0},
9249 {0x6D, 0, 0, 0, 0},
9250 {0x6E, 0, 0, 0, 0},
9251 {0x6F, 0, 0, 0, 0},
9252 {0x70, 0, 0, 0, 0},
9253 {0x71, 0x2, 0x2, 0, 0},
9254 {0x72, 0, 0, 0, 0},
9255 {0x73, 0, 0, 0, 0},
9256 {0x74, 0xe, 0xe, 0, 0},
9257 {0x75, 0xe, 0xe, 0, 0},
9258 {0x76, 0xe, 0xe, 0, 0},
9259 {0x77, 0x13, 0x13, 0, 0},
9260 {0x78, 0x13, 0x13, 0, 0},
9261 {0x79, 0x1b, 0x1b, 0, 0},
9262 {0x7A, 0x1b, 0x1b, 0, 0},
9263 {0x7B, 0x55, 0x55, 0, 0},
9264 {0x7C, 0x5b, 0x5b, 0, 0},
9265 {0x7D, 0, 0, 0, 0},
9266 {0x7E, 0, 0, 0, 0},
9267 {0x7F, 0, 0, 0, 0},
9268 {0x80, 0, 0, 0, 0},
9269 {0x81, 0, 0, 0, 0},
9270 {0x82, 0, 0, 0, 0},
9271 {0x83, 0, 0, 0, 0},
9272 {0x84, 0, 0, 0, 0},
9273 {0x85, 0, 0, 0, 0},
9274 {0x86, 0, 0, 0, 0},
9275 {0x87, 0, 0, 0, 0},
9276 {0x88, 0, 0, 0, 0},
9277 {0x89, 0, 0, 0, 0},
9278 {0x8A, 0, 0, 0, 0},
9279 {0x8B, 0, 0, 0, 0},
9280 {0x8C, 0, 0, 0, 0},
9281 {0x8D, 0, 0, 0, 0},
9282 {0x8E, 0, 0, 0, 0},
9283 {0x8F, 0, 0, 0, 0},
9284 {0x90, 0, 0, 0, 0},
9285 {0x91, 0, 0, 0, 0},
9286 {0x92, 0, 0, 0, 0},
9287 {0x93, 0x70, 0x70, 0, 0},
9288 {0x94, 0x70, 0x70, 0, 0},
9289 {0x95, 0x71, 0x71, 1, 1},
9290 {0x96, 0x71, 0x71, 1, 1},
9291 {0x97, 0x72, 0x72, 1, 1},
9292 {0x98, 0x73, 0x73, 1, 1},
9293 {0x99, 0x74, 0x74, 1, 1},
9294 {0x9A, 0x75, 0x75, 1, 1},
9295 {0xFFFF, 0, 0, 0, 0}
9296 };
9297
9298 static struct radio_regs regs_RX_2056_rev5[] = {
9299 {0x02, 0, 0, 0, 0},
9300 {0x03, 0, 0, 0, 0},
9301 {0x04, 0, 0, 0, 0},
9302 {0x05, 0, 0, 0, 0},
9303 {0x06, 0, 0, 0, 0},
9304 {0x07, 0, 0, 0, 0},
9305 {0x08, 0, 0, 0, 0},
9306 {0x09, 0, 0, 0, 0},
9307 {0x0A, 0, 0, 0, 0},
9308 {0x0B, 0, 0, 0, 0},
9309 {0x0C, 0, 0, 0, 0},
9310 {0x0D, 0, 0, 0, 0},
9311 {0x0E, 0, 0, 0, 0},
9312 {0x0F, 0, 0, 0, 0},
9313 {0x10, 0, 0, 0, 0},
9314 {0x11, 0, 0, 0, 0},
9315 {0x12, 0, 0, 0, 0},
9316 {0x13, 0, 0, 0, 0},
9317 {0x14, 0, 0, 0, 0},
9318 {0x15, 0, 0, 0, 0},
9319 {0x16, 0, 0, 0, 0},
9320 {0x17, 0, 0, 0, 0},
9321 {0x18, 0, 0, 0, 0},
9322 {0x19, 0, 0, 0, 0},
9323 {0x1A, 0, 0, 0, 0},
9324 {0x1B, 0, 0, 0, 0},
9325 {0x1C, 0, 0, 0, 0},
9326 {0x1D, 0, 0, 0, 0},
9327 {0x1E, 0, 0, 0, 0},
9328 {0x1F, 0, 0, 0, 0},
9329 {0x20, 0x3, 0x3, 0, 0},
9330 {0x21, 0, 0, 0, 0},
9331 {0x22, 0, 0, 0, 0},
9332 {0x23, 0x90, 0x90, 0, 0},
9333 {0x24, 0x55, 0x55, 0, 0},
9334 {0x25, 0x15, 0x15, 0, 0},
9335 {0x26, 0x5, 0x5, 0, 0},
9336 {0x27, 0x15, 0x15, 0, 0},
9337 {0x28, 0x5, 0x5, 0, 0},
9338 {0x29, 0x20, 0x20, 0, 0},
9339 {0x2A, 0x11, 0x11, 0, 0},
9340 {0x2B, 0x90, 0x90, 0, 0},
9341 {0x2C, 0, 0, 0, 0},
9342 {0x2D, 0x88, 0x88, 0, 0},
9343 {0x2E, 0x32, 0x32, 0, 0},
9344 {0x2F, 0x77, 0x77, 0, 0},
9345 {0x30, 0x17, 0x17, 1, 1},
9346 {0x31, 0xff, 0xff, 1, 1},
9347 {0x32, 0x20, 0x20, 0, 0},
9348 {0x33, 0, 0, 0, 0},
9349 {0x34, 0x88, 0x88, 0, 0},
9350 {0x35, 0x32, 0x32, 0, 0},
9351 {0x36, 0x77, 0x77, 0, 0},
9352 {0x37, 0x17, 0x17, 1, 1},
9353 {0x38, 0xf0, 0xf0, 1, 1},
9354 {0x39, 0x20, 0x20, 0, 0},
9355 {0x3A, 0x8, 0x8, 0, 0},
9356 {0x3B, 0x55, 0x55, 1, 1},
9357 {0x3C, 0, 0, 0, 0},
9358 {0x3D, 0x88, 0x88, 1, 1},
9359 {0x3E, 0, 0, 0, 0},
9360 {0x3F, 0, 0, 1, 1},
9361 {0x40, 0x7, 0x7, 1, 1},
9362 {0x41, 0x6, 0x6, 0, 0},
9363 {0x42, 0x4, 0x4, 0, 0},
9364 {0x43, 0, 0, 0, 0},
9365 {0x44, 0x8, 0x8, 0, 0},
9366 {0x45, 0x55, 0x55, 1, 1},
9367 {0x46, 0, 0, 0, 0},
9368 {0x47, 0x11, 0x11, 0, 0},
9369 {0x48, 0, 0, 0, 0},
9370 {0x49, 0, 0, 1, 1},
9371 {0x4A, 0x7, 0x7, 0, 0},
9372 {0x4B, 0x6, 0x6, 0, 0},
9373 {0x4C, 0x4, 0x4, 0, 0},
9374 {0x4D, 0, 0, 0, 0},
9375 {0x4E, 0, 0, 0, 0},
9376 {0x4F, 0x26, 0x26, 1, 1},
9377 {0x50, 0x26, 0x26, 1, 1},
9378 {0x51, 0xf, 0xf, 1, 1},
9379 {0x52, 0xf, 0xf, 1, 1},
9380 {0x53, 0x44, 0x44, 0, 0},
9381 {0x54, 0, 0, 0, 0},
9382 {0x55, 0, 0, 0, 0},
9383 {0x56, 0x8, 0x8, 0, 0},
9384 {0x57, 0x8, 0x8, 0, 0},
9385 {0x58, 0x7, 0x7, 0, 0},
9386 {0x59, 0x22, 0x22, 0, 0},
9387 {0x5A, 0x22, 0x22, 0, 0},
9388 {0x5B, 0x2, 0x2, 0, 0},
9389 {0x5C, 0x4, 0x4, 1, 1},
9390 {0x5D, 0x7, 0x7, 0, 0},
9391 {0x5E, 0x55, 0x55, 0, 0},
9392 {0x5F, 0x23, 0x23, 0, 0},
9393 {0x60, 0x41, 0x41, 0, 0},
9394 {0x61, 0x1, 0x1, 0, 0},
9395 {0x62, 0xa, 0xa, 0, 0},
9396 {0x63, 0, 0, 0, 0},
9397 {0x64, 0, 0, 0, 0},
9398 {0x65, 0, 0, 0, 0},
9399 {0x66, 0, 0, 0, 0},
9400 {0x67, 0, 0, 0, 0},
9401 {0x68, 0, 0, 0, 0},
9402 {0x69, 0, 0, 0, 0},
9403 {0x6A, 0, 0, 0, 0},
9404 {0x6B, 0xc, 0xc, 0, 0},
9405 {0x6C, 0, 0, 0, 0},
9406 {0x6D, 0, 0, 0, 0},
9407 {0x6E, 0, 0, 0, 0},
9408 {0x6F, 0, 0, 0, 0},
9409 {0x70, 0, 0, 0, 0},
9410 {0x71, 0, 0, 0, 0},
9411 {0x72, 0x22, 0x22, 0, 0},
9412 {0x73, 0x22, 0x22, 0, 0},
9413 {0x74, 0, 0, 1, 1},
9414 {0x75, 0xa, 0xa, 0, 0},
9415 {0x76, 0x1, 0x1, 0, 0},
9416 {0x77, 0x22, 0x22, 0, 0},
9417 {0x78, 0x30, 0x30, 0, 0},
9418 {0x79, 0, 0, 0, 0},
9419 {0x7A, 0, 0, 0, 0},
9420 {0x7B, 0, 0, 0, 0},
9421 {0x7C, 0, 0, 0, 0},
9422 {0x7D, 0, 0, 0, 0},
9423 {0x7E, 0, 0, 0, 0},
9424 {0x7F, 0, 0, 0, 0},
9425 {0x80, 0, 0, 0, 0},
9426 {0x81, 0, 0, 0, 0},
9427 {0x82, 0, 0, 0, 0},
9428 {0x83, 0, 0, 0, 0},
9429 {0x84, 0, 0, 0, 0},
9430 {0x85, 0, 0, 0, 0},
9431 {0x86, 0, 0, 0, 0},
9432 {0x87, 0, 0, 0, 0},
9433 {0x88, 0, 0, 0, 0},
9434 {0x89, 0, 0, 0, 0},
9435 {0x8A, 0, 0, 0, 0},
9436 {0x8B, 0, 0, 0, 0},
9437 {0x8C, 0, 0, 0, 0},
9438 {0x8D, 0, 0, 0, 0},
9439 {0x8E, 0, 0, 0, 0},
9440 {0x8F, 0, 0, 0, 0},
9441 {0x90, 0, 0, 0, 0},
9442 {0x91, 0, 0, 0, 0},
9443 {0x92, 0, 0, 0, 0},
9444 {0x93, 0, 0, 0, 0},
9445 {0x94, 0, 0, 0, 0},
9446 {0xFFFF, 0, 0, 0, 0}
9447 };
9448
9449 static struct radio_regs regs_SYN_2056_rev6[] = {
9450 {0x02, 0, 0, 0, 0},
9451 {0x03, 0, 0, 0, 0},
9452 {0x04, 0, 0, 0, 0},
9453 {0x05, 0, 0, 0, 0},
9454 {0x06, 0, 0, 0, 0},
9455 {0x07, 0, 0, 0, 0},
9456 {0x08, 0, 0, 0, 0},
9457 {0x09, 0x1, 0x1, 0, 0},
9458 {0x0A, 0, 0, 0, 0},
9459 {0x0B, 0, 0, 0, 0},
9460 {0x0C, 0, 0, 0, 0},
9461 {0x0D, 0, 0, 0, 0},
9462 {0x0E, 0, 0, 0, 0},
9463 {0x0F, 0, 0, 0, 0},
9464 {0x10, 0, 0, 0, 0},
9465 {0x11, 0, 0, 0, 0},
9466 {0x12, 0, 0, 0, 0},
9467 {0x13, 0, 0, 0, 0},
9468 {0x14, 0, 0, 0, 0},
9469 {0x15, 0, 0, 0, 0},
9470 {0x16, 0, 0, 0, 0},
9471 {0x17, 0, 0, 0, 0},
9472 {0x18, 0, 0, 0, 0},
9473 {0x19, 0, 0, 0, 0},
9474 {0x1A, 0, 0, 0, 0},
9475 {0x1B, 0, 0, 0, 0},
9476 {0x1C, 0, 0, 0, 0},
9477 {0x1D, 0, 0, 0, 0},
9478 {0x1E, 0, 0, 0, 0},
9479 {0x1F, 0, 0, 0, 0},
9480 {0x20, 0, 0, 0, 0},
9481 {0x21, 0, 0, 0, 0},
9482 {0x22, 0x60, 0x60, 0, 0},
9483 {0x23, 0x6, 0x6, 0, 0},
9484 {0x24, 0xc, 0xc, 0, 0},
9485 {0x25, 0, 0, 0, 0},
9486 {0x26, 0, 0, 0, 0},
9487 {0x27, 0, 0, 0, 0},
9488 {0x28, 0x1, 0x1, 0, 0},
9489 {0x29, 0, 0, 0, 0},
9490 {0x2A, 0, 0, 0, 0},
9491 {0x2B, 0, 0, 0, 0},
9492 {0x2C, 0, 0, 0, 0},
9493 {0x2D, 0, 0, 0, 0},
9494 {0x2E, 0, 0, 0, 0},
9495 {0x2F, 0x1f, 0x1f, 0, 0},
9496 {0x30, 0x15, 0x15, 0, 0},
9497 {0x31, 0xf, 0xf, 0, 0},
9498 {0x32, 0, 0, 0, 0},
9499 {0x33, 0, 0, 0, 0},
9500 {0x34, 0, 0, 0, 0},
9501 {0x35, 0, 0, 0, 0},
9502 {0x36, 0, 0, 0, 0},
9503 {0x37, 0, 0, 0, 0},
9504 {0x38, 0, 0, 0, 0},
9505 {0x39, 0, 0, 0, 0},
9506 {0x3A, 0, 0, 0, 0},
9507 {0x3B, 0, 0, 0, 0},
9508 {0x3C, 0x13, 0x13, 0, 0},
9509 {0x3D, 0xf, 0xf, 0, 0},
9510 {0x3E, 0x18, 0x18, 0, 0},
9511 {0x3F, 0, 0, 0, 0},
9512 {0x40, 0, 0, 0, 0},
9513 {0x41, 0x20, 0x20, 0, 0},
9514 {0x42, 0x20, 0x20, 0, 0},
9515 {0x43, 0, 0, 0, 0},
9516 {0x44, 0x77, 0x77, 0, 0},
9517 {0x45, 0x7, 0x7, 0, 0},
9518 {0x46, 0x1, 0x1, 0, 0},
9519 {0x47, 0x4, 0x4, 0, 0},
9520 {0x48, 0xf, 0xf, 0, 0},
9521 {0x49, 0x30, 0x30, 0, 0},
9522 {0x4A, 0x32, 0x32, 0, 0},
9523 {0x4B, 0xd, 0xd, 0, 0},
9524 {0x4C, 0xd, 0xd, 0, 0},
9525 {0x4D, 0x4, 0x4, 0, 0},
9526 {0x4E, 0x6, 0x6, 0, 0},
9527 {0x4F, 0x1, 0x1, 0, 0},
9528 {0x50, 0x1c, 0x1c, 0, 0},
9529 {0x51, 0x2, 0x2, 0, 0},
9530 {0x52, 0x2, 0x2, 0, 0},
9531 {0x53, 0xf7, 0xf7, 1, 1},
9532 {0x54, 0xb4, 0xb4, 0, 0},
9533 {0x55, 0xd2, 0xd2, 0, 0},
9534 {0x56, 0, 0, 0, 0},
9535 {0x57, 0, 0, 0, 0},
9536 {0x58, 0x4, 0x4, 0, 0},
9537 {0x59, 0x96, 0x96, 0, 0},
9538 {0x5A, 0x3e, 0x3e, 0, 0},
9539 {0x5B, 0x3e, 0x3e, 0, 0},
9540 {0x5C, 0x13, 0x13, 0, 0},
9541 {0x5D, 0x2, 0x2, 0, 0},
9542 {0x5E, 0, 0, 0, 0},
9543 {0x5F, 0x7, 0x7, 0, 0},
9544 {0x60, 0x7, 0x7, 1, 1},
9545 {0x61, 0x8, 0x8, 0, 0},
9546 {0x62, 0x3, 0x3, 0, 0},
9547 {0x63, 0, 0, 0, 0},
9548 {0x64, 0, 0, 0, 0},
9549 {0x65, 0, 0, 0, 0},
9550 {0x66, 0, 0, 0, 0},
9551 {0x67, 0, 0, 0, 0},
9552 {0x68, 0x40, 0x40, 0, 0},
9553 {0x69, 0, 0, 0, 0},
9554 {0x6A, 0, 0, 0, 0},
9555 {0x6B, 0, 0, 0, 0},
9556 {0x6C, 0, 0, 0, 0},
9557 {0x6D, 0x1, 0x1, 0, 0},
9558 {0x6E, 0, 0, 0, 0},
9559 {0x6F, 0, 0, 0, 0},
9560 {0x70, 0x60, 0x60, 0, 0},
9561 {0x71, 0x66, 0x66, 0, 0},
9562 {0x72, 0xc, 0xc, 0, 0},
9563 {0x73, 0x66, 0x66, 0, 0},
9564 {0x74, 0x8f, 0x8f, 1, 1},
9565 {0x75, 0, 0, 0, 0},
9566 {0x76, 0xcc, 0xcc, 0, 0},
9567 {0x77, 0x1, 0x1, 0, 0},
9568 {0x78, 0x66, 0x66, 0, 0},
9569 {0x79, 0x66, 0x66, 0, 0},
9570 {0x7A, 0, 0, 0, 0},
9571 {0x7B, 0, 0, 0, 0},
9572 {0x7C, 0, 0, 0, 0},
9573 {0x7D, 0, 0, 0, 0},
9574 {0x7E, 0, 0, 0, 0},
9575 {0x7F, 0, 0, 0, 0},
9576 {0x80, 0, 0, 0, 0},
9577 {0x81, 0, 0, 0, 0},
9578 {0x82, 0, 0, 0, 0},
9579 {0x83, 0, 0, 0, 0},
9580 {0x84, 0, 0, 0, 0},
9581 {0x85, 0xff, 0xff, 0, 0},
9582 {0x86, 0, 0, 0, 0},
9583 {0x87, 0, 0, 0, 0},
9584 {0x88, 0, 0, 0, 0},
9585 {0x89, 0, 0, 0, 0},
9586 {0x8A, 0, 0, 0, 0},
9587 {0x8B, 0, 0, 0, 0},
9588 {0x8C, 0, 0, 0, 0},
9589 {0x8D, 0, 0, 0, 0},
9590 {0x8E, 0, 0, 0, 0},
9591 {0x8F, 0, 0, 0, 0},
9592 {0x90, 0, 0, 0, 0},
9593 {0x91, 0, 0, 0, 0},
9594 {0x92, 0, 0, 0, 0},
9595 {0x93, 0, 0, 0, 0},
9596 {0x94, 0, 0, 0, 0},
9597 {0x95, 0, 0, 0, 0},
9598 {0x96, 0, 0, 0, 0},
9599 {0x97, 0, 0, 0, 0},
9600 {0x98, 0, 0, 0, 0},
9601 {0x99, 0, 0, 0, 0},
9602 {0x9A, 0, 0, 0, 0},
9603 {0x9B, 0, 0, 0, 0},
9604 {0x9C, 0, 0, 0, 0},
9605 {0x9D, 0, 0, 0, 0},
9606 {0x9E, 0, 0, 0, 0},
9607 {0x9F, 0x6, 0x6, 0, 0},
9608 {0xA0, 0x66, 0x66, 0, 0},
9609 {0xA1, 0x66, 0x66, 0, 0},
9610 {0xA2, 0x66, 0x66, 0, 0},
9611 {0xA3, 0x66, 0x66, 0, 0},
9612 {0xA4, 0x66, 0x66, 0, 0},
9613 {0xA5, 0x66, 0x66, 0, 0},
9614 {0xA6, 0x66, 0x66, 0, 0},
9615 {0xA7, 0x66, 0x66, 0, 0},
9616 {0xA8, 0x66, 0x66, 0, 0},
9617 {0xA9, 0x66, 0x66, 0, 0},
9618 {0xAA, 0x66, 0x66, 0, 0},
9619 {0xAB, 0x66, 0x66, 0, 0},
9620 {0xAC, 0x66, 0x66, 0, 0},
9621 {0xAD, 0x66, 0x66, 0, 0},
9622 {0xAE, 0x66, 0x66, 0, 0},
9623 {0xAF, 0x66, 0x66, 0, 0},
9624 {0xB0, 0x66, 0x66, 0, 0},
9625 {0xB1, 0x66, 0x66, 0, 0},
9626 {0xB2, 0x66, 0x66, 0, 0},
9627 {0xB3, 0xa, 0xa, 0, 0},
9628 {0xB4, 0, 0, 0, 0},
9629 {0xB5, 0, 0, 0, 0},
9630 {0xB6, 0, 0, 0, 0},
9631 {0xFFFF, 0, 0, 0, 0}
9632 };
9633
9634 static struct radio_regs regs_TX_2056_rev6[] = {
9635 {0x02, 0, 0, 0, 0},
9636 {0x03, 0, 0, 0, 0},
9637 {0x04, 0, 0, 0, 0},
9638 {0x05, 0, 0, 0, 0},
9639 {0x06, 0, 0, 0, 0},
9640 {0x07, 0, 0, 0, 0},
9641 {0x08, 0, 0, 0, 0},
9642 {0x09, 0, 0, 0, 0},
9643 {0x0A, 0, 0, 0, 0},
9644 {0x0B, 0, 0, 0, 0},
9645 {0x0C, 0, 0, 0, 0},
9646 {0x0D, 0, 0, 0, 0},
9647 {0x0E, 0, 0, 0, 0},
9648 {0x0F, 0, 0, 0, 0},
9649 {0x10, 0, 0, 0, 0},
9650 {0x11, 0, 0, 0, 0},
9651 {0x12, 0, 0, 0, 0},
9652 {0x13, 0, 0, 0, 0},
9653 {0x14, 0, 0, 0, 0},
9654 {0x15, 0, 0, 0, 0},
9655 {0x16, 0, 0, 0, 0},
9656 {0x17, 0, 0, 0, 0},
9657 {0x18, 0, 0, 0, 0},
9658 {0x19, 0, 0, 0, 0},
9659 {0x1A, 0, 0, 0, 0},
9660 {0x1B, 0, 0, 0, 0},
9661 {0x1C, 0, 0, 0, 0},
9662 {0x1D, 0, 0, 0, 0},
9663 {0x1E, 0, 0, 0, 0},
9664 {0x1F, 0, 0, 0, 0},
9665 {0x20, 0, 0, 0, 0},
9666 {0x21, 0x88, 0x88, 0, 0},
9667 {0x22, 0x88, 0x88, 0, 0},
9668 {0x23, 0x88, 0x88, 0, 0},
9669 {0x24, 0x88, 0x88, 0, 0},
9670 {0x25, 0xc, 0xc, 0, 0},
9671 {0x26, 0, 0, 0, 0},
9672 {0x27, 0x3, 0x3, 0, 0},
9673 {0x28, 0, 0, 0, 0},
9674 {0x29, 0x3, 0x3, 0, 0},
9675 {0x2A, 0x37, 0x37, 0, 0},
9676 {0x2B, 0x3, 0x3, 0, 0},
9677 {0x2C, 0, 0, 0, 0},
9678 {0x2D, 0, 0, 0, 0},
9679 {0x2E, 0x1, 0x1, 0, 0},
9680 {0x2F, 0x1, 0x1, 0, 0},
9681 {0x30, 0, 0, 0, 0},
9682 {0x31, 0, 0, 0, 0},
9683 {0x32, 0, 0, 0, 0},
9684 {0x33, 0x11, 0x11, 0, 0},
9685 {0x34, 0xee, 0xee, 1, 1},
9686 {0x35, 0, 0, 0, 0},
9687 {0x36, 0, 0, 0, 0},
9688 {0x37, 0x3, 0x3, 0, 0},
9689 {0x38, 0x50, 0x50, 1, 1},
9690 {0x39, 0, 0, 0, 0},
9691 {0x3A, 0x50, 0x50, 1, 1},
9692 {0x3B, 0, 0, 0, 0},
9693 {0x3C, 0x6e, 0x6e, 0, 0},
9694 {0x3D, 0xf0, 0xf0, 1, 1},
9695 {0x3E, 0, 0, 0, 0},
9696 {0x3F, 0, 0, 0, 0},
9697 {0x40, 0, 0, 0, 0},
9698 {0x41, 0x3, 0x3, 0, 0},
9699 {0x42, 0x3, 0x3, 0, 0},
9700 {0x43, 0, 0, 0, 0},
9701 {0x44, 0x1e, 0x1e, 0, 0},
9702 {0x45, 0, 0, 0, 0},
9703 {0x46, 0x6e, 0x6e, 0, 0},
9704 {0x47, 0xf0, 0xf0, 1, 1},
9705 {0x48, 0, 0, 0, 0},
9706 {0x49, 0x2, 0x2, 0, 0},
9707 {0x4A, 0xff, 0xff, 1, 1},
9708 {0x4B, 0xc, 0xc, 0, 0},
9709 {0x4C, 0, 0, 0, 0},
9710 {0x4D, 0x38, 0x38, 0, 0},
9711 {0x4E, 0x70, 0x70, 1, 1},
9712 {0x4F, 0x2, 0x2, 0, 0},
9713 {0x50, 0x88, 0x88, 0, 0},
9714 {0x51, 0xc, 0xc, 0, 0},
9715 {0x52, 0, 0, 0, 0},
9716 {0x53, 0x8, 0x8, 0, 0},
9717 {0x54, 0x70, 0x70, 1, 1},
9718 {0x55, 0x2, 0x2, 0, 0},
9719 {0x56, 0xff, 0xff, 1, 1},
9720 {0x57, 0, 0, 0, 0},
9721 {0x58, 0x83, 0x83, 0, 0},
9722 {0x59, 0x77, 0x77, 1, 1},
9723 {0x5A, 0, 0, 0, 0},
9724 {0x5B, 0x2, 0x2, 0, 0},
9725 {0x5C, 0x88, 0x88, 0, 0},
9726 {0x5D, 0, 0, 0, 0},
9727 {0x5E, 0x8, 0x8, 0, 0},
9728 {0x5F, 0x77, 0x77, 1, 1},
9729 {0x60, 0x1, 0x1, 0, 0},
9730 {0x61, 0, 0, 0, 0},
9731 {0x62, 0x7, 0x7, 0, 0},
9732 {0x63, 0, 0, 0, 0},
9733 {0x64, 0x7, 0x7, 0, 0},
9734 {0x65, 0, 0, 0, 0},
9735 {0x66, 0, 0, 0, 0},
9736 {0x67, 0, 0, 1, 1},
9737 {0x68, 0, 0, 0, 0},
9738 {0x69, 0xa, 0xa, 0, 0},
9739 {0x6A, 0, 0, 0, 0},
9740 {0x6B, 0, 0, 0, 0},
9741 {0x6C, 0, 0, 0, 0},
9742 {0x6D, 0, 0, 0, 0},
9743 {0x6E, 0, 0, 0, 0},
9744 {0x6F, 0, 0, 0, 0},
9745 {0x70, 0, 0, 0, 0},
9746 {0x71, 0x2, 0x2, 0, 0},
9747 {0x72, 0, 0, 0, 0},
9748 {0x73, 0, 0, 0, 0},
9749 {0x74, 0xe, 0xe, 0, 0},
9750 {0x75, 0xe, 0xe, 0, 0},
9751 {0x76, 0xe, 0xe, 0, 0},
9752 {0x77, 0x13, 0x13, 0, 0},
9753 {0x78, 0x13, 0x13, 0, 0},
9754 {0x79, 0x1b, 0x1b, 0, 0},
9755 {0x7A, 0x1b, 0x1b, 0, 0},
9756 {0x7B, 0x55, 0x55, 0, 0},
9757 {0x7C, 0x5b, 0x5b, 0, 0},
9758 {0x7D, 0x30, 0x30, 1, 1},
9759 {0x7E, 0, 0, 0, 0},
9760 {0x7F, 0, 0, 0, 0},
9761 {0x80, 0, 0, 0, 0},
9762 {0x81, 0, 0, 0, 0},
9763 {0x82, 0, 0, 0, 0},
9764 {0x83, 0, 0, 0, 0},
9765 {0x84, 0, 0, 0, 0},
9766 {0x85, 0, 0, 0, 0},
9767 {0x86, 0, 0, 0, 0},
9768 {0x87, 0, 0, 0, 0},
9769 {0x88, 0, 0, 0, 0},
9770 {0x89, 0, 0, 0, 0},
9771 {0x8A, 0, 0, 0, 0},
9772 {0x8B, 0, 0, 0, 0},
9773 {0x8C, 0, 0, 0, 0},
9774 {0x8D, 0, 0, 0, 0},
9775 {0x8E, 0, 0, 0, 0},
9776 {0x8F, 0, 0, 0, 0},
9777 {0x90, 0, 0, 0, 0},
9778 {0x91, 0, 0, 0, 0},
9779 {0x92, 0, 0, 0, 0},
9780 {0x93, 0x70, 0x70, 0, 0},
9781 {0x94, 0x70, 0x70, 0, 0},
9782 {0x95, 0x70, 0x70, 0, 0},
9783 {0x96, 0x70, 0x70, 0, 0},
9784 {0x97, 0x70, 0x70, 0, 0},
9785 {0x98, 0x70, 0x70, 0, 0},
9786 {0x99, 0x70, 0x70, 0, 0},
9787 {0x9A, 0x70, 0x70, 0, 0},
9788 {0xFFFF, 0, 0, 0, 0}
9789 };
9790
9791 static struct radio_regs regs_RX_2056_rev6[] = {
9792 {0x02, 0, 0, 0, 0},
9793 {0x03, 0, 0, 0, 0},
9794 {0x04, 0, 0, 0, 0},
9795 {0x05, 0, 0, 0, 0},
9796 {0x06, 0, 0, 0, 0},
9797 {0x07, 0, 0, 0, 0},
9798 {0x08, 0, 0, 0, 0},
9799 {0x09, 0, 0, 0, 0},
9800 {0x0A, 0, 0, 0, 0},
9801 {0x0B, 0, 0, 0, 0},
9802 {0x0C, 0, 0, 0, 0},
9803 {0x0D, 0, 0, 0, 0},
9804 {0x0E, 0, 0, 0, 0},
9805 {0x0F, 0, 0, 0, 0},
9806 {0x10, 0, 0, 0, 0},
9807 {0x11, 0, 0, 0, 0},
9808 {0x12, 0, 0, 0, 0},
9809 {0x13, 0, 0, 0, 0},
9810 {0x14, 0, 0, 0, 0},
9811 {0x15, 0, 0, 0, 0},
9812 {0x16, 0, 0, 0, 0},
9813 {0x17, 0, 0, 0, 0},
9814 {0x18, 0, 0, 0, 0},
9815 {0x19, 0, 0, 0, 0},
9816 {0x1A, 0, 0, 0, 0},
9817 {0x1B, 0, 0, 0, 0},
9818 {0x1C, 0, 0, 0, 0},
9819 {0x1D, 0, 0, 0, 0},
9820 {0x1E, 0, 0, 0, 0},
9821 {0x1F, 0, 0, 0, 0},
9822 {0x20, 0x3, 0x3, 0, 0},
9823 {0x21, 0, 0, 0, 0},
9824 {0x22, 0, 0, 0, 0},
9825 {0x23, 0x90, 0x90, 0, 0},
9826 {0x24, 0x55, 0x55, 0, 0},
9827 {0x25, 0x15, 0x15, 0, 0},
9828 {0x26, 0x5, 0x5, 0, 0},
9829 {0x27, 0x15, 0x15, 0, 0},
9830 {0x28, 0x5, 0x5, 0, 0},
9831 {0x29, 0x20, 0x20, 0, 0},
9832 {0x2A, 0x11, 0x11, 0, 0},
9833 {0x2B, 0x90, 0x90, 0, 0},
9834 {0x2C, 0, 0, 0, 0},
9835 {0x2D, 0x88, 0x88, 0, 0},
9836 {0x2E, 0x32, 0x32, 0, 0},
9837 {0x2F, 0x77, 0x77, 0, 0},
9838 {0x30, 0x17, 0x17, 1, 1},
9839 {0x31, 0xff, 0xff, 1, 1},
9840 {0x32, 0x20, 0x20, 0, 0},
9841 {0x33, 0, 0, 0, 0},
9842 {0x34, 0x88, 0x88, 0, 0},
9843 {0x35, 0x32, 0x32, 0, 0},
9844 {0x36, 0x77, 0x77, 0, 0},
9845 {0x37, 0x17, 0x17, 1, 1},
9846 {0x38, 0xf0, 0xf0, 1, 1},
9847 {0x39, 0x20, 0x20, 0, 0},
9848 {0x3A, 0x8, 0x8, 0, 0},
9849 {0x3B, 0x55, 0x55, 1, 1},
9850 {0x3C, 0, 0, 0, 0},
9851 {0x3D, 0x88, 0x88, 1, 1},
9852 {0x3E, 0, 0, 0, 0},
9853 {0x3F, 0x44, 0x44, 0, 0},
9854 {0x40, 0x7, 0x7, 1, 1},
9855 {0x41, 0x6, 0x6, 0, 0},
9856 {0x42, 0x4, 0x4, 0, 0},
9857 {0x43, 0, 0, 0, 0},
9858 {0x44, 0x8, 0x8, 0, 0},
9859 {0x45, 0x55, 0x55, 1, 1},
9860 {0x46, 0, 0, 0, 0},
9861 {0x47, 0x11, 0x11, 0, 0},
9862 {0x48, 0, 0, 0, 0},
9863 {0x49, 0x44, 0x44, 0, 0},
9864 {0x4A, 0x7, 0x7, 0, 0},
9865 {0x4B, 0x6, 0x6, 0, 0},
9866 {0x4C, 0x4, 0x4, 0, 0},
9867 {0x4D, 0, 0, 0, 0},
9868 {0x4E, 0, 0, 0, 0},
9869 {0x4F, 0x26, 0x26, 1, 1},
9870 {0x50, 0x26, 0x26, 1, 1},
9871 {0x51, 0xf, 0xf, 1, 1},
9872 {0x52, 0xf, 0xf, 1, 1},
9873 {0x53, 0x44, 0x44, 0, 0},
9874 {0x54, 0, 0, 0, 0},
9875 {0x55, 0, 0, 0, 0},
9876 {0x56, 0x8, 0x8, 0, 0},
9877 {0x57, 0x8, 0x8, 0, 0},
9878 {0x58, 0x7, 0x7, 0, 0},
9879 {0x59, 0x22, 0x22, 0, 0},
9880 {0x5A, 0x22, 0x22, 0, 0},
9881 {0x5B, 0x2, 0x2, 0, 0},
9882 {0x5C, 0x4, 0x4, 1, 1},
9883 {0x5D, 0x7, 0x7, 0, 0},
9884 {0x5E, 0x55, 0x55, 0, 0},
9885 {0x5F, 0x23, 0x23, 0, 0},
9886 {0x60, 0x41, 0x41, 0, 0},
9887 {0x61, 0x1, 0x1, 0, 0},
9888 {0x62, 0xa, 0xa, 0, 0},
9889 {0x63, 0, 0, 0, 0},
9890 {0x64, 0, 0, 0, 0},
9891 {0x65, 0, 0, 0, 0},
9892 {0x66, 0, 0, 0, 0},
9893 {0x67, 0, 0, 0, 0},
9894 {0x68, 0, 0, 0, 0},
9895 {0x69, 0, 0, 0, 0},
9896 {0x6A, 0, 0, 0, 0},
9897 {0x6B, 0xc, 0xc, 0, 0},
9898 {0x6C, 0, 0, 0, 0},
9899 {0x6D, 0, 0, 0, 0},
9900 {0x6E, 0, 0, 0, 0},
9901 {0x6F, 0, 0, 0, 0},
9902 {0x70, 0, 0, 0, 0},
9903 {0x71, 0, 0, 0, 0},
9904 {0x72, 0x22, 0x22, 0, 0},
9905 {0x73, 0x22, 0x22, 0, 0},
9906 {0x74, 0, 0, 1, 1},
9907 {0x75, 0xa, 0xa, 0, 0},
9908 {0x76, 0x1, 0x1, 0, 0},
9909 {0x77, 0x22, 0x22, 0, 0},
9910 {0x78, 0x30, 0x30, 0, 0},
9911 {0x79, 0, 0, 0, 0},
9912 {0x7A, 0, 0, 0, 0},
9913 {0x7B, 0, 0, 0, 0},
9914 {0x7C, 0, 0, 0, 0},
9915 {0x7D, 0x5, 0x5, 1, 1},
9916 {0x7E, 0, 0, 0, 0},
9917 {0x7F, 0, 0, 0, 0},
9918 {0x80, 0, 0, 0, 0},
9919 {0x81, 0, 0, 0, 0},
9920 {0x82, 0, 0, 0, 0},
9921 {0x83, 0, 0, 0, 0},
9922 {0x84, 0, 0, 0, 0},
9923 {0x85, 0, 0, 0, 0},
9924 {0x86, 0, 0, 0, 0},
9925 {0x87, 0, 0, 0, 0},
9926 {0x88, 0, 0, 0, 0},
9927 {0x89, 0, 0, 0, 0},
9928 {0x8A, 0, 0, 0, 0},
9929 {0x8B, 0, 0, 0, 0},
9930 {0x8C, 0, 0, 0, 0},
9931 {0x8D, 0, 0, 0, 0},
9932 {0x8E, 0, 0, 0, 0},
9933 {0x8F, 0, 0, 0, 0},
9934 {0x90, 0, 0, 0, 0},
9935 {0x91, 0, 0, 0, 0},
9936 {0x92, 0, 0, 0, 0},
9937 {0x93, 0, 0, 0, 0},
9938 {0x94, 0, 0, 0, 0},
9939 {0xFFFF, 0, 0, 0, 0}
9940 };
9941
9942 static struct radio_regs regs_SYN_2056_rev7[] = {
9943 {0x02, 0, 0, 0, 0},
9944 {0x03, 0, 0, 0, 0},
9945 {0x04, 0, 0, 0, 0},
9946 {0x05, 0, 0, 0, 0},
9947 {0x06, 0, 0, 0, 0},
9948 {0x07, 0, 0, 0, 0},
9949 {0x08, 0, 0, 0, 0},
9950 {0x09, 0x1, 0x1, 0, 0},
9951 {0x0A, 0, 0, 0, 0},
9952 {0x0B, 0, 0, 0, 0},
9953 {0x0C, 0, 0, 0, 0},
9954 {0x0D, 0, 0, 0, 0},
9955 {0x0E, 0, 0, 0, 0},
9956 {0x0F, 0, 0, 0, 0},
9957 {0x10, 0, 0, 0, 0},
9958 {0x11, 0, 0, 0, 0},
9959 {0x12, 0, 0, 0, 0},
9960 {0x13, 0, 0, 0, 0},
9961 {0x14, 0, 0, 0, 0},
9962 {0x15, 0, 0, 0, 0},
9963 {0x16, 0, 0, 0, 0},
9964 {0x17, 0, 0, 0, 0},
9965 {0x18, 0, 0, 0, 0},
9966 {0x19, 0, 0, 0, 0},
9967 {0x1A, 0, 0, 0, 0},
9968 {0x1B, 0, 0, 0, 0},
9969 {0x1C, 0, 0, 0, 0},
9970 {0x1D, 0, 0, 0, 0},
9971 {0x1E, 0, 0, 0, 0},
9972 {0x1F, 0, 0, 0, 0},
9973 {0x20, 0, 0, 0, 0},
9974 {0x21, 0, 0, 0, 0},
9975 {0x22, 0x60, 0x60, 0, 0},
9976 {0x23, 0x6, 0x6, 0, 0},
9977 {0x24, 0xc, 0xc, 0, 0},
9978 {0x25, 0, 0, 0, 0},
9979 {0x26, 0, 0, 0, 0},
9980 {0x27, 0, 0, 0, 0},
9981 {0x28, 0x1, 0x1, 0, 0},
9982 {0x29, 0, 0, 0, 0},
9983 {0x2A, 0, 0, 0, 0},
9984 {0x2B, 0, 0, 0, 0},
9985 {0x2C, 0, 0, 0, 0},
9986 {0x2D, 0, 0, 0, 0},
9987 {0x2E, 0, 0, 0, 0},
9988 {0x2F, 0x1f, 0x1f, 0, 0},
9989 {0x30, 0x15, 0x15, 0, 0},
9990 {0x31, 0xf, 0xf, 0, 0},
9991 {0x32, 0, 0, 0, 0},
9992 {0x33, 0, 0, 0, 0},
9993 {0x34, 0, 0, 0, 0},
9994 {0x35, 0, 0, 0, 0},
9995 {0x36, 0, 0, 0, 0},
9996 {0x37, 0, 0, 0, 0},
9997 {0x38, 0, 0, 0, 0},
9998 {0x39, 0, 0, 0, 0},
9999 {0x3A, 0, 0, 0, 0},
10000 {0x3B, 0, 0, 0, 0},
10001 {0x3C, 0x13, 0x13, 0, 0},
10002 {0x3D, 0xf, 0xf, 0, 0},
10003 {0x3E, 0x18, 0x18, 0, 0},
10004 {0x3F, 0, 0, 0, 0},
10005 {0x40, 0, 0, 0, 0},
10006 {0x41, 0x20, 0x20, 0, 0},
10007 {0x42, 0x20, 0x20, 0, 0},
10008 {0x43, 0, 0, 0, 0},
10009 {0x44, 0x77, 0x77, 0, 0},
10010 {0x45, 0x7, 0x7, 0, 0},
10011 {0x46, 0x1, 0x1, 0, 0},
10012 {0x47, 0x4, 0x4, 0, 0},
10013 {0x48, 0xf, 0xf, 0, 0},
10014 {0x49, 0x30, 0x30, 0, 0},
10015 {0x4A, 0x32, 0x32, 0, 0},
10016 {0x4B, 0xd, 0xd, 0, 0},
10017 {0x4C, 0xd, 0xd, 0, 0},
10018 {0x4D, 0x4, 0x4, 0, 0},
10019 {0x4E, 0x6, 0x6, 0, 0},
10020 {0x4F, 0x1, 0x1, 0, 0},
10021 {0x50, 0x1c, 0x1c, 0, 0},
10022 {0x51, 0x2, 0x2, 0, 0},
10023 {0x52, 0x2, 0x2, 0, 0},
10024 {0x53, 0xf7, 0xf7, 1, 1},
10025 {0x54, 0xb4, 0xb4, 0, 0},
10026 {0x55, 0xd2, 0xd2, 0, 0},
10027 {0x56, 0, 0, 0, 0},
10028 {0x57, 0, 0, 0, 0},
10029 {0x58, 0x4, 0x4, 0, 0},
10030 {0x59, 0x96, 0x96, 0, 0},
10031 {0x5A, 0x3e, 0x3e, 0, 0},
10032 {0x5B, 0x3e, 0x3e, 0, 0},
10033 {0x5C, 0x13, 0x13, 0, 0},
10034 {0x5D, 0x2, 0x2, 0, 0},
10035 {0x5E, 0, 0, 0, 0},
10036 {0x5F, 0x7, 0x7, 0, 0},
10037 {0x60, 0x7, 0x7, 1, 1},
10038 {0x61, 0x8, 0x8, 0, 0},
10039 {0x62, 0x3, 0x3, 0, 0},
10040 {0x63, 0, 0, 0, 0},
10041 {0x64, 0, 0, 0, 0},
10042 {0x65, 0, 0, 0, 0},
10043 {0x66, 0, 0, 0, 0},
10044 {0x67, 0, 0, 0, 0},
10045 {0x68, 0x40, 0x40, 0, 0},
10046 {0x69, 0, 0, 0, 0},
10047 {0x6A, 0, 0, 0, 0},
10048 {0x6B, 0, 0, 0, 0},
10049 {0x6C, 0, 0, 0, 0},
10050 {0x6D, 0x1, 0x1, 0, 0},
10051 {0x6E, 0, 0, 0, 0},
10052 {0x6F, 0, 0, 0, 0},
10053 {0x70, 0x60, 0x60, 0, 0},
10054 {0x71, 0x66, 0x66, 0, 0},
10055 {0x72, 0xc, 0xc, 0, 0},
10056 {0x73, 0x66, 0x66, 0, 0},
10057 {0x74, 0x8f, 0x8f, 1, 1},
10058 {0x75, 0, 0, 0, 0},
10059 {0x76, 0xcc, 0xcc, 0, 0},
10060 {0x77, 0x1, 0x1, 0, 0},
10061 {0x78, 0x66, 0x66, 0, 0},
10062 {0x79, 0x66, 0x66, 0, 0},
10063 {0x7A, 0, 0, 0, 0},
10064 {0x7B, 0, 0, 0, 0},
10065 {0x7C, 0, 0, 0, 0},
10066 {0x7D, 0, 0, 0, 0},
10067 {0x7E, 0, 0, 0, 0},
10068 {0x7F, 0, 0, 0, 0},
10069 {0x80, 0, 0, 0, 0},
10070 {0x81, 0, 0, 0, 0},
10071 {0x82, 0, 0, 0, 0},
10072 {0x83, 0, 0, 0, 0},
10073 {0x84, 0, 0, 0, 0},
10074 {0x85, 0xff, 0xff, 0, 0},
10075 {0x86, 0, 0, 0, 0},
10076 {0x87, 0, 0, 0, 0},
10077 {0x88, 0, 0, 0, 0},
10078 {0x89, 0, 0, 0, 0},
10079 {0x8A, 0, 0, 0, 0},
10080 {0x8B, 0, 0, 0, 0},
10081 {0x8C, 0, 0, 0, 0},
10082 {0x8D, 0, 0, 0, 0},
10083 {0x8E, 0, 0, 0, 0},
10084 {0x8F, 0, 0, 0, 0},
10085 {0x90, 0, 0, 0, 0},
10086 {0x91, 0, 0, 0, 0},
10087 {0x92, 0, 0, 0, 0},
10088 {0x93, 0, 0, 0, 0},
10089 {0x94, 0, 0, 0, 0},
10090 {0x95, 0, 0, 0, 0},
10091 {0x96, 0, 0, 0, 0},
10092 {0x97, 0, 0, 0, 0},
10093 {0x98, 0, 0, 0, 0},
10094 {0x99, 0, 0, 0, 0},
10095 {0x9A, 0, 0, 0, 0},
10096 {0x9B, 0, 0, 0, 0},
10097 {0x9C, 0, 0, 0, 0},
10098 {0x9D, 0, 0, 0, 0},
10099 {0x9E, 0, 0, 0, 0},
10100 {0x9F, 0x6, 0x6, 0, 0},
10101 {0xA0, 0x66, 0x66, 0, 0},
10102 {0xA1, 0x66, 0x66, 0, 0},
10103 {0xA2, 0x66, 0x66, 0, 0},
10104 {0xA3, 0x66, 0x66, 0, 0},
10105 {0xA4, 0x66, 0x66, 0, 0},
10106 {0xA5, 0x66, 0x66, 0, 0},
10107 {0xA6, 0x66, 0x66, 0, 0},
10108 {0xA7, 0x66, 0x66, 0, 0},
10109 {0xA8, 0x66, 0x66, 0, 0},
10110 {0xA9, 0x66, 0x66, 0, 0},
10111 {0xAA, 0x66, 0x66, 0, 0},
10112 {0xAB, 0x66, 0x66, 0, 0},
10113 {0xAC, 0x66, 0x66, 0, 0},
10114 {0xAD, 0x66, 0x66, 0, 0},
10115 {0xAE, 0x66, 0x66, 0, 0},
10116 {0xAF, 0x66, 0x66, 0, 0},
10117 {0xB0, 0x66, 0x66, 0, 0},
10118 {0xB1, 0x66, 0x66, 0, 0},
10119 {0xB2, 0x66, 0x66, 0, 0},
10120 {0xB3, 0xa, 0xa, 0, 0},
10121 {0xB4, 0, 0, 0, 0},
10122 {0xB5, 0, 0, 0, 0},
10123 {0xB6, 0, 0, 0, 0},
10124 {0xFFFF, 0, 0, 0, 0},
10125 };
10126
10127 static struct radio_regs regs_TX_2056_rev7[] = {
10128 {0x02, 0, 0, 0, 0},
10129 {0x03, 0, 0, 0, 0},
10130 {0x04, 0, 0, 0, 0},
10131 {0x05, 0, 0, 0, 0},
10132 {0x06, 0, 0, 0, 0},
10133 {0x07, 0, 0, 0, 0},
10134 {0x08, 0, 0, 0, 0},
10135 {0x09, 0, 0, 0, 0},
10136 {0x0A, 0, 0, 0, 0},
10137 {0x0B, 0, 0, 0, 0},
10138 {0x0C, 0, 0, 0, 0},
10139 {0x0D, 0, 0, 0, 0},
10140 {0x0E, 0, 0, 0, 0},
10141 {0x0F, 0, 0, 0, 0},
10142 {0x10, 0, 0, 0, 0},
10143 {0x11, 0, 0, 0, 0},
10144 {0x12, 0, 0, 0, 0},
10145 {0x13, 0, 0, 0, 0},
10146 {0x14, 0, 0, 0, 0},
10147 {0x15, 0, 0, 0, 0},
10148 {0x16, 0, 0, 0, 0},
10149 {0x17, 0, 0, 0, 0},
10150 {0x18, 0, 0, 0, 0},
10151 {0x19, 0, 0, 0, 0},
10152 {0x1A, 0, 0, 0, 0},
10153 {0x1B, 0, 0, 0, 0},
10154 {0x1C, 0, 0, 0, 0},
10155 {0x1D, 0, 0, 0, 0},
10156 {0x1E, 0, 0, 0, 0},
10157 {0x1F, 0, 0, 0, 0},
10158 {0x20, 0, 0, 0, 0},
10159 {0x21, 0x88, 0x88, 0, 0},
10160 {0x22, 0x88, 0x88, 0, 0},
10161 {0x23, 0x88, 0x88, 0, 0},
10162 {0x24, 0x88, 0x88, 0, 0},
10163 {0x25, 0xc, 0xc, 0, 0},
10164 {0x26, 0, 0, 0, 0},
10165 {0x27, 0x3, 0x3, 0, 0},
10166 {0x28, 0, 0, 0, 0},
10167 {0x29, 0x3, 0x3, 0, 0},
10168 {0x2A, 0x37, 0x37, 0, 0},
10169 {0x2B, 0x3, 0x3, 0, 0},
10170 {0x2C, 0, 0, 0, 0},
10171 {0x2D, 0, 0, 0, 0},
10172 {0x2E, 0x1, 0x1, 0, 0},
10173 {0x2F, 0x1, 0x1, 0, 0},
10174 {0x30, 0, 0, 0, 0},
10175 {0x31, 0, 0, 0, 0},
10176 {0x32, 0, 0, 0, 0},
10177 {0x33, 0x11, 0x11, 0, 0},
10178 {0x34, 0xee, 0xee, 1, 1},
10179 {0x35, 0, 0, 0, 0},
10180 {0x36, 0, 0, 0, 0},
10181 {0x37, 0x3, 0x3, 0, 0},
10182 {0x38, 0x50, 0x50, 1, 1},
10183 {0x39, 0, 0, 0, 0},
10184 {0x3A, 0x50, 0x50, 1, 1},
10185 {0x3B, 0, 0, 0, 0},
10186 {0x3C, 0x6e, 0x6e, 0, 0},
10187 {0x3D, 0xf0, 0xf0, 1, 1},
10188 {0x3E, 0, 0, 0, 0},
10189 {0x3F, 0, 0, 0, 0},
10190 {0x40, 0, 0, 0, 0},
10191 {0x41, 0x3, 0x3, 0, 0},
10192 {0x42, 0x3, 0x3, 0, 0},
10193 {0x43, 0, 0, 0, 0},
10194 {0x44, 0x1e, 0x1e, 0, 0},
10195 {0x45, 0, 0, 0, 0},
10196 {0x46, 0x6e, 0x6e, 0, 0},
10197 {0x47, 0xf0, 0xf0, 1, 1},
10198 {0x48, 0, 0, 0, 0},
10199 {0x49, 0x2, 0x2, 0, 0},
10200 {0x4A, 0xff, 0xff, 1, 1},
10201 {0x4B, 0xc, 0xc, 0, 0},
10202 {0x4C, 0, 0, 0, 0},
10203 {0x4D, 0x38, 0x38, 0, 0},
10204 {0x4E, 0x70, 0x70, 1, 1},
10205 {0x4F, 0x2, 0x2, 0, 0},
10206 {0x50, 0x88, 0x88, 0, 0},
10207 {0x51, 0xc, 0xc, 0, 0},
10208 {0x52, 0, 0, 0, 0},
10209 {0x53, 0x8, 0x8, 0, 0},
10210 {0x54, 0x70, 0x70, 1, 1},
10211 {0x55, 0x2, 0x2, 0, 0},
10212 {0x56, 0xff, 0xff, 1, 1},
10213 {0x57, 0, 0, 0, 0},
10214 {0x58, 0x83, 0x83, 0, 0},
10215 {0x59, 0x77, 0x77, 1, 1},
10216 {0x5A, 0, 0, 0, 0},
10217 {0x5B, 0x2, 0x2, 0, 0},
10218 {0x5C, 0x88, 0x88, 0, 0},
10219 {0x5D, 0, 0, 0, 0},
10220 {0x5E, 0x8, 0x8, 0, 0},
10221 {0x5F, 0x77, 0x77, 1, 1},
10222 {0x60, 0x1, 0x1, 0, 0},
10223 {0x61, 0, 0, 0, 0},
10224 {0x62, 0x7, 0x7, 0, 0},
10225 {0x63, 0, 0, 0, 0},
10226 {0x64, 0x7, 0x7, 0, 0},
10227 {0x65, 0, 0, 0, 0},
10228 {0x66, 0, 0, 0, 0},
10229 {0x67, 0, 0, 1, 1},
10230 {0x68, 0, 0, 0, 0},
10231 {0x69, 0xa, 0xa, 0, 0},
10232 {0x6A, 0, 0, 0, 0},
10233 {0x6B, 0, 0, 0, 0},
10234 {0x6C, 0, 0, 0, 0},
10235 {0x6D, 0, 0, 0, 0},
10236 {0x6E, 0, 0, 0, 0},
10237 {0x6F, 0, 0, 0, 0},
10238 {0x70, 0, 0, 0, 0},
10239 {0x71, 0x2, 0x2, 0, 0},
10240 {0x72, 0, 0, 0, 0},
10241 {0x73, 0, 0, 0, 0},
10242 {0x74, 0xe, 0xe, 0, 0},
10243 {0x75, 0xe, 0xe, 0, 0},
10244 {0x76, 0xe, 0xe, 0, 0},
10245 {0x77, 0x13, 0x13, 0, 0},
10246 {0x78, 0x13, 0x13, 0, 0},
10247 {0x79, 0x1b, 0x1b, 0, 0},
10248 {0x7A, 0x1b, 0x1b, 0, 0},
10249 {0x7B, 0x55, 0x55, 0, 0},
10250 {0x7C, 0x5b, 0x5b, 0, 0},
10251 {0x7D, 0x30, 0x30, 1, 1},
10252 {0x7E, 0, 0, 0, 0},
10253 {0x7F, 0, 0, 0, 0},
10254 {0x80, 0, 0, 0, 0},
10255 {0x81, 0, 0, 0, 0},
10256 {0x82, 0, 0, 0, 0},
10257 {0x83, 0, 0, 0, 0},
10258 {0x84, 0, 0, 0, 0},
10259 {0x85, 0, 0, 0, 0},
10260 {0x86, 0, 0, 0, 0},
10261 {0x87, 0, 0, 0, 0},
10262 {0x88, 0, 0, 0, 0},
10263 {0x89, 0, 0, 0, 0},
10264 {0x8A, 0, 0, 0, 0},
10265 {0x8B, 0, 0, 0, 0},
10266 {0x8C, 0, 0, 0, 0},
10267 {0x8D, 0, 0, 0, 0},
10268 {0x8E, 0, 0, 0, 0},
10269 {0x8F, 0, 0, 0, 0},
10270 {0x90, 0, 0, 0, 0},
10271 {0x91, 0, 0, 0, 0},
10272 {0x92, 0, 0, 0, 0},
10273 {0x93, 0x70, 0x70, 0, 0},
10274 {0x94, 0x70, 0x70, 0, 0},
10275 {0x95, 0x71, 0x71, 1, 1},
10276 {0x96, 0x71, 0x71, 1, 1},
10277 {0x97, 0x72, 0x72, 1, 1},
10278 {0x98, 0x73, 0x73, 1, 1},
10279 {0x99, 0x74, 0x74, 1, 1},
10280 {0x9A, 0x75, 0x75, 1, 1},
10281 {0xFFFF, 0, 0, 0, 0},
10282 };
10283
10284 static struct radio_regs regs_RX_2056_rev7[] = {
10285 {0x02, 0, 0, 0, 0},
10286 {0x03, 0, 0, 0, 0},
10287 {0x04, 0, 0, 0, 0},
10288 {0x05, 0, 0, 0, 0},
10289 {0x06, 0, 0, 0, 0},
10290 {0x07, 0, 0, 0, 0},
10291 {0x08, 0, 0, 0, 0},
10292 {0x09, 0, 0, 0, 0},
10293 {0x0A, 0, 0, 0, 0},
10294 {0x0B, 0, 0, 0, 0},
10295 {0x0C, 0, 0, 0, 0},
10296 {0x0D, 0, 0, 0, 0},
10297 {0x0E, 0, 0, 0, 0},
10298 {0x0F, 0, 0, 0, 0},
10299 {0x10, 0, 0, 0, 0},
10300 {0x11, 0, 0, 0, 0},
10301 {0x12, 0, 0, 0, 0},
10302 {0x13, 0, 0, 0, 0},
10303 {0x14, 0, 0, 0, 0},
10304 {0x15, 0, 0, 0, 0},
10305 {0x16, 0, 0, 0, 0},
10306 {0x17, 0, 0, 0, 0},
10307 {0x18, 0, 0, 0, 0},
10308 {0x19, 0, 0, 0, 0},
10309 {0x1A, 0, 0, 0, 0},
10310 {0x1B, 0, 0, 0, 0},
10311 {0x1C, 0, 0, 0, 0},
10312 {0x1D, 0, 0, 0, 0},
10313 {0x1E, 0, 0, 0, 0},
10314 {0x1F, 0, 0, 0, 0},
10315 {0x20, 0x3, 0x3, 0, 0},
10316 {0x21, 0, 0, 0, 0},
10317 {0x22, 0, 0, 0, 0},
10318 {0x23, 0x90, 0x90, 0, 0},
10319 {0x24, 0x55, 0x55, 0, 0},
10320 {0x25, 0x15, 0x15, 0, 0},
10321 {0x26, 0x5, 0x5, 0, 0},
10322 {0x27, 0x15, 0x15, 0, 0},
10323 {0x28, 0x5, 0x5, 0, 0},
10324 {0x29, 0x20, 0x20, 0, 0},
10325 {0x2A, 0x11, 0x11, 0, 0},
10326 {0x2B, 0x90, 0x90, 0, 0},
10327 {0x2C, 0, 0, 0, 0},
10328 {0x2D, 0x88, 0x88, 0, 0},
10329 {0x2E, 0x32, 0x32, 0, 0},
10330 {0x2F, 0x77, 0x77, 0, 0},
10331 {0x30, 0x17, 0x17, 1, 1},
10332 {0x31, 0xff, 0xff, 1, 1},
10333 {0x32, 0x20, 0x20, 0, 0},
10334 {0x33, 0, 0, 0, 0},
10335 {0x34, 0x88, 0x88, 0, 0},
10336 {0x35, 0x32, 0x32, 0, 0},
10337 {0x36, 0x77, 0x77, 0, 0},
10338 {0x37, 0x17, 0x17, 1, 1},
10339 {0x38, 0xf0, 0xf0, 1, 1},
10340 {0x39, 0x20, 0x20, 0, 0},
10341 {0x3A, 0x8, 0x8, 0, 0},
10342 {0x3B, 0x55, 0x55, 1, 1},
10343 {0x3C, 0, 0, 0, 0},
10344 {0x3D, 0x88, 0x88, 1, 1},
10345 {0x3E, 0, 0, 0, 0},
10346 {0x3F, 0, 0, 1, 1},
10347 {0x40, 0x7, 0x7, 1, 1},
10348 {0x41, 0x6, 0x6, 0, 0},
10349 {0x42, 0x4, 0x4, 0, 0},
10350 {0x43, 0, 0, 0, 0},
10351 {0x44, 0x8, 0x8, 0, 0},
10352 {0x45, 0x55, 0x55, 1, 1},
10353 {0x46, 0, 0, 0, 0},
10354 {0x47, 0x11, 0x11, 0, 0},
10355 {0x48, 0, 0, 0, 0},
10356 {0x49, 0, 0, 1, 1},
10357 {0x4A, 0x7, 0x7, 0, 0},
10358 {0x4B, 0x6, 0x6, 0, 0},
10359 {0x4C, 0x4, 0x4, 0, 0},
10360 {0x4D, 0, 0, 0, 0},
10361 {0x4E, 0, 0, 0, 0},
10362 {0x4F, 0x26, 0x26, 1, 1},
10363 {0x50, 0x26, 0x26, 1, 1},
10364 {0x51, 0xf, 0xf, 1, 1},
10365 {0x52, 0xf, 0xf, 1, 1},
10366 {0x53, 0x44, 0x44, 0, 0},
10367 {0x54, 0, 0, 0, 0},
10368 {0x55, 0, 0, 0, 0},
10369 {0x56, 0x8, 0x8, 0, 0},
10370 {0x57, 0x8, 0x8, 0, 0},
10371 {0x58, 0x7, 0x7, 0, 0},
10372 {0x59, 0x22, 0x22, 0, 0},
10373 {0x5A, 0x22, 0x22, 0, 0},
10374 {0x5B, 0x2, 0x2, 0, 0},
10375 {0x5C, 0x4, 0x4, 1, 1},
10376 {0x5D, 0x7, 0x7, 0, 0},
10377 {0x5E, 0x55, 0x55, 0, 0},
10378 {0x5F, 0x23, 0x23, 0, 0},
10379 {0x60, 0x41, 0x41, 0, 0},
10380 {0x61, 0x1, 0x1, 0, 0},
10381 {0x62, 0xa, 0xa, 0, 0},
10382 {0x63, 0, 0, 0, 0},
10383 {0x64, 0, 0, 0, 0},
10384 {0x65, 0, 0, 0, 0},
10385 {0x66, 0, 0, 0, 0},
10386 {0x67, 0, 0, 0, 0},
10387 {0x68, 0, 0, 0, 0},
10388 {0x69, 0, 0, 0, 0},
10389 {0x6A, 0, 0, 0, 0},
10390 {0x6B, 0xc, 0xc, 0, 0},
10391 {0x6C, 0, 0, 0, 0},
10392 {0x6D, 0, 0, 0, 0},
10393 {0x6E, 0, 0, 0, 0},
10394 {0x6F, 0, 0, 0, 0},
10395 {0x70, 0, 0, 0, 0},
10396 {0x71, 0, 0, 0, 0},
10397 {0x72, 0x22, 0x22, 0, 0},
10398 {0x73, 0x22, 0x22, 0, 0},
10399 {0x74, 0, 0, 1, 1},
10400 {0x75, 0xa, 0xa, 0, 0},
10401 {0x76, 0x1, 0x1, 0, 0},
10402 {0x77, 0x22, 0x22, 0, 0},
10403 {0x78, 0x30, 0x30, 0, 0},
10404 {0x79, 0, 0, 0, 0},
10405 {0x7A, 0, 0, 0, 0},
10406 {0x7B, 0, 0, 0, 0},
10407 {0x7C, 0, 0, 0, 0},
10408 {0x7D, 0, 0, 0, 0},
10409 {0x7E, 0, 0, 0, 0},
10410 {0x7F, 0, 0, 0, 0},
10411 {0x80, 0, 0, 0, 0},
10412 {0x81, 0, 0, 0, 0},
10413 {0x82, 0, 0, 0, 0},
10414 {0x83, 0, 0, 0, 0},
10415 {0x84, 0, 0, 0, 0},
10416 {0x85, 0, 0, 0, 0},
10417 {0x86, 0, 0, 0, 0},
10418 {0x87, 0, 0, 0, 0},
10419 {0x88, 0, 0, 0, 0},
10420 {0x89, 0, 0, 0, 0},
10421 {0x8A, 0, 0, 0, 0},
10422 {0x8B, 0, 0, 0, 0},
10423 {0x8C, 0, 0, 0, 0},
10424 {0x8D, 0, 0, 0, 0},
10425 {0x8E, 0, 0, 0, 0},
10426 {0x8F, 0, 0, 0, 0},
10427 {0x90, 0, 0, 0, 0},
10428 {0x91, 0, 0, 0, 0},
10429 {0x92, 0, 0, 0, 0},
10430 {0x93, 0, 0, 0, 0},
10431 {0x94, 0, 0, 0, 0},
10432 {0xFFFF, 0, 0, 0, 0},
10433 };
10434
10435 static struct radio_regs regs_SYN_2056_rev8[] = {
10436 {0x02, 0, 0, 0, 0},
10437 {0x03, 0, 0, 0, 0},
10438 {0x04, 0, 0, 0, 0},
10439 {0x05, 0, 0, 0, 0},
10440 {0x06, 0, 0, 0, 0},
10441 {0x07, 0, 0, 0, 0},
10442 {0x08, 0, 0, 0, 0},
10443 {0x09, 0x1, 0x1, 0, 0},
10444 {0x0A, 0, 0, 0, 0},
10445 {0x0B, 0, 0, 0, 0},
10446 {0x0C, 0, 0, 0, 0},
10447 {0x0D, 0, 0, 0, 0},
10448 {0x0E, 0, 0, 0, 0},
10449 {0x0F, 0, 0, 0, 0},
10450 {0x10, 0, 0, 0, 0},
10451 {0x11, 0, 0, 0, 0},
10452 {0x12, 0, 0, 0, 0},
10453 {0x13, 0, 0, 0, 0},
10454 {0x14, 0, 0, 0, 0},
10455 {0x15, 0, 0, 0, 0},
10456 {0x16, 0, 0, 0, 0},
10457 {0x17, 0, 0, 0, 0},
10458 {0x18, 0, 0, 0, 0},
10459 {0x19, 0, 0, 0, 0},
10460 {0x1A, 0, 0, 0, 0},
10461 {0x1B, 0, 0, 0, 0},
10462 {0x1C, 0, 0, 0, 0},
10463 {0x1D, 0, 0, 0, 0},
10464 {0x1E, 0, 0, 0, 0},
10465 {0x1F, 0, 0, 0, 0},
10466 {0x20, 0, 0, 0, 0},
10467 {0x21, 0, 0, 0, 0},
10468 {0x22, 0x60, 0x60, 0, 0},
10469 {0x23, 0x6, 0x6, 0, 0},
10470 {0x24, 0xc, 0xc, 0, 0},
10471 {0x25, 0, 0, 0, 0},
10472 {0x26, 0, 0, 0, 0},
10473 {0x27, 0, 0, 0, 0},
10474 {0x28, 0x1, 0x1, 0, 0},
10475 {0x29, 0, 0, 0, 0},
10476 {0x2A, 0, 0, 0, 0},
10477 {0x2B, 0, 0, 0, 0},
10478 {0x2C, 0, 0, 0, 0},
10479 {0x2D, 0, 0, 0, 0},
10480 {0x2E, 0, 0, 0, 0},
10481 {0x2F, 0x1f, 0x1f, 0, 0},
10482 {0x30, 0x15, 0x15, 0, 0},
10483 {0x31, 0xf, 0xf, 0, 0},
10484 {0x32, 0, 0, 0, 0},
10485 {0x33, 0, 0, 0, 0},
10486 {0x34, 0, 0, 0, 0},
10487 {0x35, 0, 0, 0, 0},
10488 {0x36, 0, 0, 0, 0},
10489 {0x37, 0, 0, 0, 0},
10490 {0x38, 0, 0, 0, 0},
10491 {0x39, 0, 0, 0, 0},
10492 {0x3A, 0, 0, 0, 0},
10493 {0x3B, 0, 0, 0, 0},
10494 {0x3C, 0x13, 0x13, 0, 0},
10495 {0x3D, 0xf, 0xf, 0, 0},
10496 {0x3E, 0x18, 0x18, 0, 0},
10497 {0x3F, 0, 0, 0, 0},
10498 {0x40, 0, 0, 0, 0},
10499 {0x41, 0x20, 0x20, 0, 0},
10500 {0x42, 0x20, 0x20, 0, 0},
10501 {0x43, 0, 0, 0, 0},
10502 {0x44, 0x77, 0x77, 0, 0},
10503 {0x45, 0x7, 0x7, 0, 0},
10504 {0x46, 0x1, 0x1, 0, 0},
10505 {0x47, 0x4, 0x4, 0, 0},
10506 {0x48, 0xf, 0xf, 0, 0},
10507 {0x49, 0x30, 0x30, 0, 0},
10508 {0x4A, 0x32, 0x32, 0, 0},
10509 {0x4B, 0xd, 0xd, 0, 0},
10510 {0x4C, 0xd, 0xd, 0, 0},
10511 {0x4D, 0x4, 0x4, 0, 0},
10512 {0x4E, 0x6, 0x6, 0, 0},
10513 {0x4F, 0x1, 0x1, 0, 0},
10514 {0x50, 0x1c, 0x1c, 0, 0},
10515 {0x51, 0x2, 0x2, 0, 0},
10516 {0x52, 0x2, 0x2, 0, 0},
10517 {0x53, 0xf7, 0xf7, 1, 1},
10518 {0x54, 0xb4, 0xb4, 0, 0},
10519 {0x55, 0xd2, 0xd2, 0, 0},
10520 {0x56, 0, 0, 0, 0},
10521 {0x57, 0, 0, 0, 0},
10522 {0x58, 0x4, 0x4, 0, 0},
10523 {0x59, 0x96, 0x96, 0, 0},
10524 {0x5A, 0x3e, 0x3e, 0, 0},
10525 {0x5B, 0x3e, 0x3e, 0, 0},
10526 {0x5C, 0x13, 0x13, 0, 0},
10527 {0x5D, 0x2, 0x2, 0, 0},
10528 {0x5E, 0, 0, 0, 0},
10529 {0x5F, 0x7, 0x7, 0, 0},
10530 {0x60, 0x7, 0x7, 1, 1},
10531 {0x61, 0x8, 0x8, 0, 0},
10532 {0x62, 0x3, 0x3, 0, 0},
10533 {0x63, 0, 0, 0, 0},
10534 {0x64, 0, 0, 0, 0},
10535 {0x65, 0, 0, 0, 0},
10536 {0x66, 0, 0, 0, 0},
10537 {0x67, 0, 0, 0, 0},
10538 {0x68, 0x40, 0x40, 0, 0},
10539 {0x69, 0, 0, 0, 0},
10540 {0x6A, 0, 0, 0, 0},
10541 {0x6B, 0, 0, 0, 0},
10542 {0x6C, 0, 0, 0, 0},
10543 {0x6D, 0x1, 0x1, 0, 0},
10544 {0x6E, 0, 0, 0, 0},
10545 {0x6F, 0, 0, 0, 0},
10546 {0x70, 0x60, 0x60, 0, 0},
10547 {0x71, 0x66, 0x66, 0, 0},
10548 {0x72, 0xc, 0xc, 0, 0},
10549 {0x73, 0x66, 0x66, 0, 0},
10550 {0x74, 0x8f, 0x8f, 1, 1},
10551 {0x75, 0, 0, 0, 0},
10552 {0x76, 0xcc, 0xcc, 0, 0},
10553 {0x77, 0x1, 0x1, 0, 0},
10554 {0x78, 0x66, 0x66, 0, 0},
10555 {0x79, 0x66, 0x66, 0, 0},
10556 {0x7A, 0, 0, 0, 0},
10557 {0x7B, 0, 0, 0, 0},
10558 {0x7C, 0, 0, 0, 0},
10559 {0x7D, 0, 0, 0, 0},
10560 {0x7E, 0, 0, 0, 0},
10561 {0x7F, 0, 0, 0, 0},
10562 {0x80, 0, 0, 0, 0},
10563 {0x81, 0, 0, 0, 0},
10564 {0x82, 0, 0, 0, 0},
10565 {0x83, 0, 0, 0, 0},
10566 {0x84, 0, 0, 0, 0},
10567 {0x85, 0xff, 0xff, 0, 0},
10568 {0x86, 0, 0, 0, 0},
10569 {0x87, 0, 0, 0, 0},
10570 {0x88, 0, 0, 0, 0},
10571 {0x89, 0, 0, 0, 0},
10572 {0x8A, 0, 0, 0, 0},
10573 {0x8B, 0, 0, 0, 0},
10574 {0x8C, 0, 0, 0, 0},
10575 {0x8D, 0, 0, 0, 0},
10576 {0x8E, 0, 0, 0, 0},
10577 {0x8F, 0, 0, 0, 0},
10578 {0x90, 0, 0, 0, 0},
10579 {0x91, 0, 0, 0, 0},
10580 {0x92, 0, 0, 0, 0},
10581 {0x93, 0, 0, 0, 0},
10582 {0x94, 0, 0, 0, 0},
10583 {0x95, 0, 0, 0, 0},
10584 {0x96, 0, 0, 0, 0},
10585 {0x97, 0, 0, 0, 0},
10586 {0x98, 0, 0, 0, 0},
10587 {0x99, 0, 0, 0, 0},
10588 {0x9A, 0, 0, 0, 0},
10589 {0x9B, 0, 0, 0, 0},
10590 {0x9C, 0, 0, 0, 0},
10591 {0x9D, 0, 0, 0, 0},
10592 {0x9E, 0, 0, 0, 0},
10593 {0x9F, 0x6, 0x6, 0, 0},
10594 {0xA0, 0x66, 0x66, 0, 0},
10595 {0xA1, 0x66, 0x66, 0, 0},
10596 {0xA2, 0x66, 0x66, 0, 0},
10597 {0xA3, 0x66, 0x66, 0, 0},
10598 {0xA4, 0x66, 0x66, 0, 0},
10599 {0xA5, 0x66, 0x66, 0, 0},
10600 {0xA6, 0x66, 0x66, 0, 0},
10601 {0xA7, 0x66, 0x66, 0, 0},
10602 {0xA8, 0x66, 0x66, 0, 0},
10603 {0xA9, 0x66, 0x66, 0, 0},
10604 {0xAA, 0x66, 0x66, 0, 0},
10605 {0xAB, 0x66, 0x66, 0, 0},
10606 {0xAC, 0x66, 0x66, 0, 0},
10607 {0xAD, 0x66, 0x66, 0, 0},
10608 {0xAE, 0x66, 0x66, 0, 0},
10609 {0xAF, 0x66, 0x66, 0, 0},
10610 {0xB0, 0x66, 0x66, 0, 0},
10611 {0xB1, 0x66, 0x66, 0, 0},
10612 {0xB2, 0x66, 0x66, 0, 0},
10613 {0xB3, 0xa, 0xa, 0, 0},
10614 {0xB4, 0, 0, 0, 0},
10615 {0xB5, 0, 0, 0, 0},
10616 {0xB6, 0, 0, 0, 0},
10617 {0xFFFF, 0, 0, 0, 0},
10618 };
10619
10620 static struct radio_regs regs_TX_2056_rev8[] = {
10621 {0x02, 0, 0, 0, 0},
10622 {0x03, 0, 0, 0, 0},
10623 {0x04, 0, 0, 0, 0},
10624 {0x05, 0, 0, 0, 0},
10625 {0x06, 0, 0, 0, 0},
10626 {0x07, 0, 0, 0, 0},
10627 {0x08, 0, 0, 0, 0},
10628 {0x09, 0, 0, 0, 0},
10629 {0x0A, 0, 0, 0, 0},
10630 {0x0B, 0, 0, 0, 0},
10631 {0x0C, 0, 0, 0, 0},
10632 {0x0D, 0, 0, 0, 0},
10633 {0x0E, 0, 0, 0, 0},
10634 {0x0F, 0, 0, 0, 0},
10635 {0x10, 0, 0, 0, 0},
10636 {0x11, 0, 0, 0, 0},
10637 {0x12, 0, 0, 0, 0},
10638 {0x13, 0, 0, 0, 0},
10639 {0x14, 0, 0, 0, 0},
10640 {0x15, 0, 0, 0, 0},
10641 {0x16, 0, 0, 0, 0},
10642 {0x17, 0, 0, 0, 0},
10643 {0x18, 0, 0, 0, 0},
10644 {0x19, 0, 0, 0, 0},
10645 {0x1A, 0, 0, 0, 0},
10646 {0x1B, 0, 0, 0, 0},
10647 {0x1C, 0, 0, 0, 0},
10648 {0x1D, 0, 0, 0, 0},
10649 {0x1E, 0, 0, 0, 0},
10650 {0x1F, 0, 0, 0, 0},
10651 {0x20, 0, 0, 0, 0},
10652 {0x21, 0x88, 0x88, 0, 0},
10653 {0x22, 0x88, 0x88, 0, 0},
10654 {0x23, 0x88, 0x88, 0, 0},
10655 {0x24, 0x88, 0x88, 0, 0},
10656 {0x25, 0xc, 0xc, 0, 0},
10657 {0x26, 0, 0, 0, 0},
10658 {0x27, 0x3, 0x3, 0, 0},
10659 {0x28, 0, 0, 0, 0},
10660 {0x29, 0x3, 0x3, 0, 0},
10661 {0x2A, 0x37, 0x37, 0, 0},
10662 {0x2B, 0x3, 0x3, 0, 0},
10663 {0x2C, 0, 0, 0, 0},
10664 {0x2D, 0, 0, 0, 0},
10665 {0x2E, 0x1, 0x1, 0, 0},
10666 {0x2F, 0x1, 0x1, 0, 0},
10667 {0x30, 0, 0, 0, 0},
10668 {0x31, 0, 0, 0, 0},
10669 {0x32, 0, 0, 0, 0},
10670 {0x33, 0x11, 0x11, 0, 0},
10671 {0x34, 0xee, 0xee, 1, 1},
10672 {0x35, 0, 0, 0, 0},
10673 {0x36, 0, 0, 0, 0},
10674 {0x37, 0x3, 0x3, 0, 0},
10675 {0x38, 0x50, 0x50, 1, 1},
10676 {0x39, 0, 0, 0, 0},
10677 {0x3A, 0x50, 0x50, 1, 1},
10678 {0x3B, 0, 0, 0, 0},
10679 {0x3C, 0x6e, 0x6e, 0, 0},
10680 {0x3D, 0xf0, 0xf0, 1, 1},
10681 {0x3E, 0, 0, 0, 0},
10682 {0x3F, 0, 0, 0, 0},
10683 {0x40, 0, 0, 0, 0},
10684 {0x41, 0x3, 0x3, 0, 0},
10685 {0x42, 0x3, 0x3, 0, 0},
10686 {0x43, 0, 0, 0, 0},
10687 {0x44, 0x1e, 0x1e, 0, 0},
10688 {0x45, 0, 0, 0, 0},
10689 {0x46, 0x6e, 0x6e, 0, 0},
10690 {0x47, 0xf0, 0xf0, 1, 1},
10691 {0x48, 0, 0, 0, 0},
10692 {0x49, 0x2, 0x2, 0, 0},
10693 {0x4A, 0xff, 0xff, 1, 1},
10694 {0x4B, 0xc, 0xc, 0, 0},
10695 {0x4C, 0, 0, 0, 0},
10696 {0x4D, 0x38, 0x38, 0, 0},
10697 {0x4E, 0x70, 0x70, 1, 1},
10698 {0x4F, 0x2, 0x2, 0, 0},
10699 {0x50, 0x88, 0x88, 0, 0},
10700 {0x51, 0xc, 0xc, 0, 0},
10701 {0x52, 0, 0, 0, 0},
10702 {0x53, 0x8, 0x8, 0, 0},
10703 {0x54, 0x70, 0x70, 1, 1},
10704 {0x55, 0x2, 0x2, 0, 0},
10705 {0x56, 0xff, 0xff, 1, 1},
10706 {0x57, 0, 0, 0, 0},
10707 {0x58, 0x83, 0x83, 0, 0},
10708 {0x59, 0x77, 0x77, 1, 1},
10709 {0x5A, 0, 0, 0, 0},
10710 {0x5B, 0x2, 0x2, 0, 0},
10711 {0x5C, 0x88, 0x88, 0, 0},
10712 {0x5D, 0, 0, 0, 0},
10713 {0x5E, 0x8, 0x8, 0, 0},
10714 {0x5F, 0x77, 0x77, 1, 1},
10715 {0x60, 0x1, 0x1, 0, 0},
10716 {0x61, 0, 0, 0, 0},
10717 {0x62, 0x7, 0x7, 0, 0},
10718 {0x63, 0, 0, 0, 0},
10719 {0x64, 0x7, 0x7, 0, 0},
10720 {0x65, 0, 0, 0, 0},
10721 {0x66, 0, 0, 0, 0},
10722 {0x67, 0, 0, 1, 1},
10723 {0x68, 0, 0, 0, 0},
10724 {0x69, 0xa, 0xa, 0, 0},
10725 {0x6A, 0, 0, 0, 0},
10726 {0x6B, 0, 0, 0, 0},
10727 {0x6C, 0, 0, 0, 0},
10728 {0x6D, 0, 0, 0, 0},
10729 {0x6E, 0, 0, 0, 0},
10730 {0x6F, 0, 0, 0, 0},
10731 {0x70, 0, 0, 0, 0},
10732 {0x71, 0x2, 0x2, 0, 0},
10733 {0x72, 0, 0, 0, 0},
10734 {0x73, 0, 0, 0, 0},
10735 {0x74, 0xe, 0xe, 0, 0},
10736 {0x75, 0xe, 0xe, 0, 0},
10737 {0x76, 0xe, 0xe, 0, 0},
10738 {0x77, 0x13, 0x13, 0, 0},
10739 {0x78, 0x13, 0x13, 0, 0},
10740 {0x79, 0x1b, 0x1b, 0, 0},
10741 {0x7A, 0x1b, 0x1b, 0, 0},
10742 {0x7B, 0x55, 0x55, 0, 0},
10743 {0x7C, 0x5b, 0x5b, 0, 0},
10744 {0x7D, 0x30, 0x30, 1, 1},
10745 {0x7E, 0, 0, 0, 0},
10746 {0x7F, 0, 0, 0, 0},
10747 {0x80, 0, 0, 0, 0},
10748 {0x81, 0, 0, 0, 0},
10749 {0x82, 0, 0, 0, 0},
10750 {0x83, 0, 0, 0, 0},
10751 {0x84, 0, 0, 0, 0},
10752 {0x85, 0, 0, 0, 0},
10753 {0x86, 0, 0, 0, 0},
10754 {0x87, 0, 0, 0, 0},
10755 {0x88, 0, 0, 0, 0},
10756 {0x89, 0, 0, 0, 0},
10757 {0x8A, 0, 0, 0, 0},
10758 {0x8B, 0, 0, 0, 0},
10759 {0x8C, 0, 0, 0, 0},
10760 {0x8D, 0, 0, 0, 0},
10761 {0x8E, 0, 0, 0, 0},
10762 {0x8F, 0, 0, 0, 0},
10763 {0x90, 0, 0, 0, 0},
10764 {0x91, 0, 0, 0, 0},
10765 {0x92, 0, 0, 0, 0},
10766 {0x93, 0x70, 0x70, 0, 0},
10767 {0x94, 0x70, 0x70, 0, 0},
10768 {0x95, 0x70, 0x70, 0, 0},
10769 {0x96, 0x70, 0x70, 0, 0},
10770 {0x97, 0x70, 0x70, 0, 0},
10771 {0x98, 0x70, 0x70, 0, 0},
10772 {0x99, 0x70, 0x70, 0, 0},
10773 {0x9A, 0x70, 0x70, 0, 0},
10774 {0xFFFF, 0, 0, 0, 0},
10775 };
10776
10777 static struct radio_regs regs_RX_2056_rev8[] = {
10778 {0x02, 0, 0, 0, 0},
10779 {0x03, 0, 0, 0, 0},
10780 {0x04, 0, 0, 0, 0},
10781 {0x05, 0, 0, 0, 0},
10782 {0x06, 0, 0, 0, 0},
10783 {0x07, 0, 0, 0, 0},
10784 {0x08, 0, 0, 0, 0},
10785 {0x09, 0, 0, 0, 0},
10786 {0x0A, 0, 0, 0, 0},
10787 {0x0B, 0, 0, 0, 0},
10788 {0x0C, 0, 0, 0, 0},
10789 {0x0D, 0, 0, 0, 0},
10790 {0x0E, 0, 0, 0, 0},
10791 {0x0F, 0, 0, 0, 0},
10792 {0x10, 0, 0, 0, 0},
10793 {0x11, 0, 0, 0, 0},
10794 {0x12, 0, 0, 0, 0},
10795 {0x13, 0, 0, 0, 0},
10796 {0x14, 0, 0, 0, 0},
10797 {0x15, 0, 0, 0, 0},
10798 {0x16, 0, 0, 0, 0},
10799 {0x17, 0, 0, 0, 0},
10800 {0x18, 0, 0, 0, 0},
10801 {0x19, 0, 0, 0, 0},
10802 {0x1A, 0, 0, 0, 0},
10803 {0x1B, 0, 0, 0, 0},
10804 {0x1C, 0, 0, 0, 0},
10805 {0x1D, 0, 0, 0, 0},
10806 {0x1E, 0, 0, 0, 0},
10807 {0x1F, 0, 0, 0, 0},
10808 {0x20, 0x3, 0x3, 0, 0},
10809 {0x21, 0, 0, 0, 0},
10810 {0x22, 0, 0, 0, 0},
10811 {0x23, 0x90, 0x90, 0, 0},
10812 {0x24, 0x55, 0x55, 0, 0},
10813 {0x25, 0x15, 0x15, 0, 0},
10814 {0x26, 0x5, 0x5, 0, 0},
10815 {0x27, 0x15, 0x15, 0, 0},
10816 {0x28, 0x5, 0x5, 0, 0},
10817 {0x29, 0x20, 0x20, 0, 0},
10818 {0x2A, 0x11, 0x11, 0, 0},
10819 {0x2B, 0x90, 0x90, 0, 0},
10820 {0x2C, 0, 0, 0, 0},
10821 {0x2D, 0x88, 0x88, 0, 0},
10822 {0x2E, 0x32, 0x32, 0, 0},
10823 {0x2F, 0x77, 0x77, 0, 0},
10824 {0x30, 0x17, 0x17, 1, 1},
10825 {0x31, 0xff, 0xff, 1, 1},
10826 {0x32, 0x20, 0x20, 0, 0},
10827 {0x33, 0, 0, 0, 0},
10828 {0x34, 0x88, 0x88, 0, 0},
10829 {0x35, 0x32, 0x32, 0, 0},
10830 {0x36, 0x77, 0x77, 0, 0},
10831 {0x37, 0x17, 0x17, 1, 1},
10832 {0x38, 0xf0, 0xf0, 1, 1},
10833 {0x39, 0x20, 0x20, 0, 0},
10834 {0x3A, 0x8, 0x8, 0, 0},
10835 {0x3B, 0x55, 0x55, 1, 1},
10836 {0x3C, 0, 0, 0, 0},
10837 {0x3D, 0x88, 0x88, 1, 1},
10838 {0x3E, 0, 0, 0, 0},
10839 {0x3F, 0x44, 0x44, 0, 0},
10840 {0x40, 0x7, 0x7, 1, 1},
10841 {0x41, 0x6, 0x6, 0, 0},
10842 {0x42, 0x4, 0x4, 0, 0},
10843 {0x43, 0, 0, 0, 0},
10844 {0x44, 0x8, 0x8, 0, 0},
10845 {0x45, 0x55, 0x55, 1, 1},
10846 {0x46, 0, 0, 0, 0},
10847 {0x47, 0x11, 0x11, 0, 0},
10848 {0x48, 0, 0, 0, 0},
10849 {0x49, 0x44, 0x44, 0, 0},
10850 {0x4A, 0x7, 0x7, 0, 0},
10851 {0x4B, 0x6, 0x6, 0, 0},
10852 {0x4C, 0x4, 0x4, 0, 0},
10853 {0x4D, 0, 0, 0, 0},
10854 {0x4E, 0, 0, 0, 0},
10855 {0x4F, 0x26, 0x26, 1, 1},
10856 {0x50, 0x26, 0x26, 1, 1},
10857 {0x51, 0xf, 0xf, 1, 1},
10858 {0x52, 0xf, 0xf, 1, 1},
10859 {0x53, 0x44, 0x44, 0, 0},
10860 {0x54, 0, 0, 0, 0},
10861 {0x55, 0, 0, 0, 0},
10862 {0x56, 0x8, 0x8, 0, 0},
10863 {0x57, 0x8, 0x8, 0, 0},
10864 {0x58, 0x7, 0x7, 0, 0},
10865 {0x59, 0x22, 0x22, 0, 0},
10866 {0x5A, 0x22, 0x22, 0, 0},
10867 {0x5B, 0x2, 0x2, 0, 0},
10868 {0x5C, 0x4, 0x4, 1, 1},
10869 {0x5D, 0x7, 0x7, 0, 0},
10870 {0x5E, 0x55, 0x55, 0, 0},
10871 {0x5F, 0x23, 0x23, 0, 0},
10872 {0x60, 0x41, 0x41, 0, 0},
10873 {0x61, 0x1, 0x1, 0, 0},
10874 {0x62, 0xa, 0xa, 0, 0},
10875 {0x63, 0, 0, 0, 0},
10876 {0x64, 0, 0, 0, 0},
10877 {0x65, 0, 0, 0, 0},
10878 {0x66, 0, 0, 0, 0},
10879 {0x67, 0, 0, 0, 0},
10880 {0x68, 0, 0, 0, 0},
10881 {0x69, 0, 0, 0, 0},
10882 {0x6A, 0, 0, 0, 0},
10883 {0x6B, 0xc, 0xc, 0, 0},
10884 {0x6C, 0, 0, 0, 0},
10885 {0x6D, 0, 0, 0, 0},
10886 {0x6E, 0, 0, 0, 0},
10887 {0x6F, 0, 0, 0, 0},
10888 {0x70, 0, 0, 0, 0},
10889 {0x71, 0, 0, 0, 0},
10890 {0x72, 0x22, 0x22, 0, 0},
10891 {0x73, 0x22, 0x22, 0, 0},
10892 {0x74, 0, 0, 1, 1},
10893 {0x75, 0xa, 0xa, 0, 0},
10894 {0x76, 0x1, 0x1, 0, 0},
10895 {0x77, 0x22, 0x22, 0, 0},
10896 {0x78, 0x30, 0x30, 0, 0},
10897 {0x79, 0, 0, 0, 0},
10898 {0x7A, 0, 0, 0, 0},
10899 {0x7B, 0, 0, 0, 0},
10900 {0x7C, 0, 0, 0, 0},
10901 {0x7D, 0x5, 0x5, 1, 1},
10902 {0x7E, 0, 0, 0, 0},
10903 {0x7F, 0, 0, 0, 0},
10904 {0x80, 0, 0, 0, 0},
10905 {0x81, 0, 0, 0, 0},
10906 {0x82, 0, 0, 0, 0},
10907 {0x83, 0, 0, 0, 0},
10908 {0x84, 0, 0, 0, 0},
10909 {0x85, 0, 0, 0, 0},
10910 {0x86, 0, 0, 0, 0},
10911 {0x87, 0, 0, 0, 0},
10912 {0x88, 0, 0, 0, 0},
10913 {0x89, 0, 0, 0, 0},
10914 {0x8A, 0, 0, 0, 0},
10915 {0x8B, 0, 0, 0, 0},
10916 {0x8C, 0, 0, 0, 0},
10917 {0x8D, 0, 0, 0, 0},
10918 {0x8E, 0, 0, 0, 0},
10919 {0x8F, 0, 0, 0, 0},
10920 {0x90, 0, 0, 0, 0},
10921 {0x91, 0, 0, 0, 0},
10922 {0x92, 0, 0, 0, 0},
10923 {0x93, 0, 0, 0, 0},
10924 {0x94, 0, 0, 0, 0},
10925 {0xFFFF, 0, 0, 0, 0},
10926 };
10927
10928 static const struct radio_regs regs_SYN_2056_rev11[] = {
10929 {0x02, 0, 0, 0, 0},
10930 {0x03, 0, 0, 0, 0},
10931 {0x04, 0, 0, 0, 0},
10932 {0x05, 0, 0, 0, 0},
10933 {0x06, 0, 0, 0, 0},
10934 {0x07, 0, 0, 0, 0},
10935 {0x08, 0, 0, 0, 0},
10936 {0x09, 0x1, 0x1, 0, 0},
10937 {0x0A, 0, 0, 0, 0},
10938 {0x0B, 0, 0, 0, 0},
10939 {0x0C, 0, 0, 0, 0},
10940 {0x0D, 0, 0, 0, 0},
10941 {0x0E, 0, 0, 0, 0},
10942 {0x0F, 0, 0, 0, 0},
10943 {0x10, 0, 0, 0, 0},
10944 {0x11, 0, 0, 0, 0},
10945 {0x12, 0, 0, 0, 0},
10946 {0x13, 0, 0, 0, 0},
10947 {0x14, 0, 0, 0, 0},
10948 {0x15, 0, 0, 0, 0},
10949 {0x16, 0, 0, 0, 0},
10950 {0x17, 0, 0, 0, 0},
10951 {0x18, 0, 0, 0, 0},
10952 {0x19, 0, 0, 0, 0},
10953 {0x1A, 0, 0, 0, 0},
10954 {0x1B, 0, 0, 0, 0},
10955 {0x1C, 0, 0, 0, 0},
10956 {0x1D, 0, 0, 0, 0},
10957 {0x1E, 0, 0, 0, 0},
10958 {0x1F, 0, 0, 0, 0},
10959 {0x20, 0, 0, 0, 0},
10960 {0x21, 0, 0, 0, 0},
10961 {0x22, 0x60, 0x60, 0, 0},
10962 {0x23, 0x6, 0x6, 0, 0},
10963 {0x24, 0xc, 0xc, 0, 0},
10964 {0x25, 0, 0, 0, 0},
10965 {0x26, 0, 0, 0, 0},
10966 {0x27, 0, 0, 0, 0},
10967 {0x28, 0x1, 0x1, 0, 0},
10968 {0x29, 0, 0, 0, 0},
10969 {0x2A, 0, 0, 0, 0},
10970 {0x2B, 0, 0, 0, 0},
10971 {0x2C, 0, 0, 0, 0},
10972 {0x2D, 0, 0, 0, 0},
10973 {0x2E, 0, 0, 0, 0},
10974 {0x2F, 0x1f, 0x1f, 0, 0},
10975 {0x30, 0x15, 0x15, 0, 0},
10976 {0x31, 0xf, 0xf, 0, 0},
10977 {0x32, 0, 0, 0, 0},
10978 {0x33, 0, 0, 0, 0},
10979 {0x34, 0, 0, 0, 0},
10980 {0x35, 0, 0, 0, 0},
10981 {0x36, 0, 0, 0, 0},
10982 {0x37, 0, 0, 0, 0},
10983 {0x38, 0, 0, 0, 0},
10984 {0x39, 0, 0, 0, 0},
10985 {0x3A, 0, 0, 0, 0},
10986 {0x3B, 0, 0, 0, 0},
10987 {0x3C, 0x13, 0x13, 0, 0},
10988 {0x3D, 0xf, 0xf, 0, 0},
10989 {0x3E, 0x18, 0x18, 0, 0},
10990 {0x3F, 0, 0, 0, 0},
10991 {0x40, 0, 0, 0, 0},
10992 {0x41, 0x20, 0x20, 0, 0},
10993 {0x42, 0x20, 0x20, 0, 0},
10994 {0x43, 0, 0, 0, 0},
10995 {0x44, 0x77, 0x77, 0, 0},
10996 {0x45, 0x7, 0x7, 0, 0},
10997 {0x46, 0x1, 0x1, 0, 0},
10998 {0x47, 0x6, 0x6, 1, 1},
10999 {0x48, 0xf, 0xf, 0, 0},
11000 {0x49, 0x3f, 0x3f, 1, 1},
11001 {0x4A, 0x32, 0x32, 0, 0},
11002 {0x4B, 0x6, 0x6, 1, 1},
11003 {0x4C, 0x6, 0x6, 1, 1},
11004 {0x4D, 0x4, 0x4, 0, 0},
11005 {0x4E, 0x2b, 0x2b, 1, 1},
11006 {0x4F, 0x1, 0x1, 0, 0},
11007 {0x50, 0x1c, 0x1c, 0, 0},
11008 {0x51, 0x2, 0x2, 0, 0},
11009 {0x52, 0x2, 0x2, 0, 0},
11010 {0x53, 0xf7, 0xf7, 1, 1},
11011 {0x54, 0xb4, 0xb4, 0, 0},
11012 {0x55, 0xd2, 0xd2, 0, 0},
11013 {0x56, 0, 0, 0, 0},
11014 {0x57, 0, 0, 0, 0},
11015 {0x58, 0x4, 0x4, 0, 0},
11016 {0x59, 0x96, 0x96, 0, 0},
11017 {0x5A, 0x3e, 0x3e, 0, 0},
11018 {0x5B, 0x3e, 0x3e, 0, 0},
11019 {0x5C, 0x13, 0x13, 0, 0},
11020 {0x5D, 0x2, 0x2, 0, 0},
11021 {0x5E, 0, 0, 0, 0},
11022 {0x5F, 0x7, 0x7, 0, 0},
11023 {0x60, 0x7, 0x7, 1, 1},
11024 {0x61, 0x8, 0x8, 0, 0},
11025 {0x62, 0x3, 0x3, 0, 0},
11026 {0x63, 0, 0, 0, 0},
11027 {0x64, 0, 0, 0, 0},
11028 {0x65, 0, 0, 0, 0},
11029 {0x66, 0, 0, 0, 0},
11030 {0x67, 0, 0, 0, 0},
11031 {0x68, 0x40, 0x40, 0, 0},
11032 {0x69, 0, 0, 0, 0},
11033 {0x6A, 0, 0, 0, 0},
11034 {0x6B, 0, 0, 0, 0},
11035 {0x6C, 0, 0, 0, 0},
11036 {0x6D, 0x1, 0x1, 0, 0},
11037 {0x6E, 0, 0, 0, 0},
11038 {0x6F, 0, 0, 0, 0},
11039 {0x70, 0x60, 0x60, 0, 0},
11040 {0x71, 0x66, 0x66, 0, 0},
11041 {0x72, 0xc, 0xc, 0, 0},
11042 {0x73, 0x66, 0x66, 0, 0},
11043 {0x74, 0x8f, 0x8f, 1, 1},
11044 {0x75, 0, 0, 0, 0},
11045 {0x76, 0xcc, 0xcc, 0, 0},
11046 {0x77, 0x1, 0x1, 0, 0},
11047 {0x78, 0x66, 0x66, 0, 0},
11048 {0x79, 0x66, 0x66, 0, 0},
11049 {0x7A, 0, 0, 0, 0},
11050 {0x7B, 0, 0, 0, 0},
11051 {0x7C, 0, 0, 0, 0},
11052 {0x7D, 0, 0, 0, 0},
11053 {0x7E, 0, 0, 0, 0},
11054 {0x7F, 0, 0, 0, 0},
11055 {0x80, 0, 0, 0, 0},
11056 {0x81, 0, 0, 0, 0},
11057 {0x82, 0, 0, 0, 0},
11058 {0x83, 0, 0, 0, 0},
11059 {0x84, 0, 0, 0, 0},
11060 {0x85, 0xff, 0xff, 0, 0},
11061 {0x86, 0, 0, 0, 0},
11062 {0x87, 0, 0, 0, 0},
11063 {0x88, 0, 0, 0, 0},
11064 {0x89, 0, 0, 0, 0},
11065 {0x8A, 0, 0, 0, 0},
11066 {0x8B, 0, 0, 0, 0},
11067 {0x8C, 0, 0, 0, 0},
11068 {0x8D, 0, 0, 0, 0},
11069 {0x8E, 0, 0, 0, 0},
11070 {0x8F, 0, 0, 0, 0},
11071 {0x90, 0, 0, 0, 0},
11072 {0x91, 0, 0, 0, 0},
11073 {0x92, 0, 0, 0, 0},
11074 {0x93, 0, 0, 0, 0},
11075 {0x94, 0, 0, 0, 0},
11076 {0x95, 0, 0, 0, 0},
11077 {0x96, 0, 0, 0, 0},
11078 {0x97, 0, 0, 0, 0},
11079 {0x98, 0, 0, 0, 0},
11080 {0x99, 0, 0, 0, 0},
11081 {0x9A, 0, 0, 0, 0},
11082 {0x9B, 0, 0, 0, 0},
11083 {0x9C, 0, 0, 0, 0},
11084 {0x9D, 0, 0, 0, 0},
11085 {0x9E, 0, 0, 0, 0},
11086 {0x9F, 0x6, 0x6, 0, 0},
11087 {0xA0, 0x66, 0x66, 0, 0},
11088 {0xA1, 0x66, 0x66, 0, 0},
11089 {0xA2, 0x66, 0x66, 0, 0},
11090 {0xA3, 0x66, 0x66, 0, 0},
11091 {0xA4, 0x66, 0x66, 0, 0},
11092 {0xA5, 0x66, 0x66, 0, 0},
11093 {0xA6, 0x66, 0x66, 0, 0},
11094 {0xA7, 0x66, 0x66, 0, 0},
11095 {0xA8, 0x66, 0x66, 0, 0},
11096 {0xA9, 0x66, 0x66, 0, 0},
11097 {0xAA, 0x66, 0x66, 0, 0},
11098 {0xAB, 0x66, 0x66, 0, 0},
11099 {0xAC, 0x66, 0x66, 0, 0},
11100 {0xAD, 0x66, 0x66, 0, 0},
11101 {0xAE, 0x66, 0x66, 0, 0},
11102 {0xAF, 0x66, 0x66, 0, 0},
11103 {0xB0, 0x66, 0x66, 0, 0},
11104 {0xB1, 0x66, 0x66, 0, 0},
11105 {0xB2, 0x66, 0x66, 0, 0},
11106 {0xB3, 0xa, 0xa, 0, 0},
11107 {0xB4, 0, 0, 0, 0},
11108 {0xB5, 0, 0, 0, 0},
11109 {0xB6, 0, 0, 0, 0},
11110 {0xFFFF, 0, 0, 0, 0},
11111 };
11112
11113 static const struct radio_regs regs_TX_2056_rev11[] = {
11114 {0x02, 0, 0, 0, 0},
11115 {0x03, 0, 0, 0, 0},
11116 {0x04, 0, 0, 0, 0},
11117 {0x05, 0, 0, 0, 0},
11118 {0x06, 0, 0, 0, 0},
11119 {0x07, 0, 0, 0, 0},
11120 {0x08, 0, 0, 0, 0},
11121 {0x09, 0, 0, 0, 0},
11122 {0x0A, 0, 0, 0, 0},
11123 {0x0B, 0, 0, 0, 0},
11124 {0x0C, 0, 0, 0, 0},
11125 {0x0D, 0, 0, 0, 0},
11126 {0x0E, 0, 0, 0, 0},
11127 {0x0F, 0, 0, 0, 0},
11128 {0x10, 0, 0, 0, 0},
11129 {0x11, 0, 0, 0, 0},
11130 {0x12, 0, 0, 0, 0},
11131 {0x13, 0, 0, 0, 0},
11132 {0x14, 0, 0, 0, 0},
11133 {0x15, 0, 0, 0, 0},
11134 {0x16, 0, 0, 0, 0},
11135 {0x17, 0, 0, 0, 0},
11136 {0x18, 0, 0, 0, 0},
11137 {0x19, 0, 0, 0, 0},
11138 {0x1A, 0, 0, 0, 0},
11139 {0x1B, 0, 0, 0, 0},
11140 {0x1C, 0, 0, 0, 0},
11141 {0x1D, 0, 0, 0, 0},
11142 {0x1E, 0, 0, 0, 0},
11143 {0x1F, 0, 0, 0, 0},
11144 {0x20, 0, 0, 0, 0},
11145 {0x21, 0x88, 0x88, 0, 0},
11146 {0x22, 0x88, 0x88, 0, 0},
11147 {0x23, 0x88, 0x88, 0, 0},
11148 {0x24, 0x88, 0x88, 0, 0},
11149 {0x25, 0xc, 0xc, 0, 0},
11150 {0x26, 0, 0, 0, 0},
11151 {0x27, 0x3, 0x3, 0, 0},
11152 {0x28, 0, 0, 0, 0},
11153 {0x29, 0x3, 0x3, 0, 0},
11154 {0x2A, 0x37, 0x37, 0, 0},
11155 {0x2B, 0x3, 0x3, 0, 0},
11156 {0x2C, 0, 0, 0, 0},
11157 {0x2D, 0, 0, 0, 0},
11158 {0x2E, 0x1, 0x1, 0, 0},
11159 {0x2F, 0x1, 0x1, 0, 0},
11160 {0x30, 0, 0, 0, 0},
11161 {0x31, 0, 0, 0, 0},
11162 {0x32, 0, 0, 0, 0},
11163 {0x33, 0x11, 0x11, 0, 0},
11164 {0x34, 0xee, 0xee, 1, 1},
11165 {0x35, 0, 0, 0, 0},
11166 {0x36, 0, 0, 0, 0},
11167 {0x37, 0x3, 0x3, 0, 0},
11168 {0x38, 0x50, 0x50, 1, 1},
11169 {0x39, 0, 0, 0, 0},
11170 {0x3A, 0x50, 0x50, 1, 1},
11171 {0x3B, 0, 0, 0, 0},
11172 {0x3C, 0x6e, 0x6e, 0, 0},
11173 {0x3D, 0xf0, 0xf0, 1, 1},
11174 {0x3E, 0, 0, 0, 0},
11175 {0x3F, 0, 0, 0, 0},
11176 {0x40, 0, 0, 0, 0},
11177 {0x41, 0x3, 0x3, 0, 0},
11178 {0x42, 0x3, 0x3, 0, 0},
11179 {0x43, 0, 0, 0, 0},
11180 {0x44, 0x1e, 0x1e, 0, 0},
11181 {0x45, 0, 0, 0, 0},
11182 {0x46, 0x6e, 0x6e, 0, 0},
11183 {0x47, 0xf0, 0xf0, 1, 1},
11184 {0x48, 0, 0, 0, 0},
11185 {0x49, 0x2, 0x2, 0, 0},
11186 {0x4A, 0xff, 0xff, 1, 1},
11187 {0x4B, 0xc, 0xc, 0, 0},
11188 {0x4C, 0, 0, 0, 0},
11189 {0x4D, 0x38, 0x38, 0, 0},
11190 {0x4E, 0x70, 0x70, 1, 1},
11191 {0x4F, 0x2, 0x2, 0, 0},
11192 {0x50, 0x88, 0x88, 0, 0},
11193 {0x51, 0xc, 0xc, 0, 0},
11194 {0x52, 0, 0, 0, 0},
11195 {0x53, 0x8, 0x8, 0, 0},
11196 {0x54, 0x70, 0x70, 1, 1},
11197 {0x55, 0x2, 0x2, 0, 0},
11198 {0x56, 0xff, 0xff, 1, 1},
11199 {0x57, 0, 0, 0, 0},
11200 {0x58, 0x83, 0x83, 0, 0},
11201 {0x59, 0x77, 0x77, 1, 1},
11202 {0x5A, 0, 0, 0, 0},
11203 {0x5B, 0x2, 0x2, 0, 0},
11204 {0x5C, 0x88, 0x88, 0, 0},
11205 {0x5D, 0, 0, 0, 0},
11206 {0x5E, 0x8, 0x8, 0, 0},
11207 {0x5F, 0x77, 0x77, 1, 1},
11208 {0x60, 0x1, 0x1, 0, 0},
11209 {0x61, 0, 0, 0, 0},
11210 {0x62, 0x7, 0x7, 0, 0},
11211 {0x63, 0, 0, 0, 0},
11212 {0x64, 0x7, 0x7, 0, 0},
11213 {0x65, 0, 0, 0, 0},
11214 {0x66, 0, 0, 0, 0},
11215 {0x67, 0, 0, 1, 1},
11216 {0x68, 0, 0, 0, 0},
11217 {0x69, 0xa, 0xa, 0, 0},
11218 {0x6A, 0, 0, 0, 0},
11219 {0x6B, 0, 0, 0, 0},
11220 {0x6C, 0, 0, 0, 0},
11221 {0x6D, 0, 0, 0, 0},
11222 {0x6E, 0, 0, 0, 0},
11223 {0x6F, 0, 0, 0, 0},
11224 {0x70, 0, 0, 0, 0},
11225 {0x71, 0x2, 0x2, 0, 0},
11226 {0x72, 0, 0, 0, 0},
11227 {0x73, 0, 0, 0, 0},
11228 {0x74, 0xe, 0xe, 0, 0},
11229 {0x75, 0xe, 0xe, 0, 0},
11230 {0x76, 0xe, 0xe, 0, 0},
11231 {0x77, 0x13, 0x13, 0, 0},
11232 {0x78, 0x13, 0x13, 0, 0},
11233 {0x79, 0x1b, 0x1b, 0, 0},
11234 {0x7A, 0x1b, 0x1b, 0, 0},
11235 {0x7B, 0x55, 0x55, 0, 0},
11236 {0x7C, 0x5b, 0x5b, 0, 0},
11237 {0x7D, 0x30, 0x30, 1, 1},
11238 {0x7E, 0, 0, 0, 0},
11239 {0x7F, 0, 0, 0, 0},
11240 {0x80, 0, 0, 0, 0},
11241 {0x81, 0, 0, 0, 0},
11242 {0x82, 0, 0, 0, 0},
11243 {0x83, 0, 0, 0, 0},
11244 {0x84, 0, 0, 0, 0},
11245 {0x85, 0, 0, 0, 0},
11246 {0x86, 0, 0, 0, 0},
11247 {0x87, 0, 0, 0, 0},
11248 {0x88, 0, 0, 0, 0},
11249 {0x89, 0, 0, 0, 0},
11250 {0x8A, 0, 0, 0, 0},
11251 {0x8B, 0, 0, 0, 0},
11252 {0x8C, 0, 0, 0, 0},
11253 {0x8D, 0, 0, 0, 0},
11254 {0x8E, 0, 0, 0, 0},
11255 {0x8F, 0, 0, 0, 0},
11256 {0x90, 0, 0, 0, 0},
11257 {0x91, 0, 0, 0, 0},
11258 {0x92, 0, 0, 0, 0},
11259 {0x93, 0x70, 0x70, 0, 0},
11260 {0x94, 0x70, 0x70, 0, 0},
11261 {0x95, 0x70, 0x70, 0, 0},
11262 {0x96, 0x70, 0x70, 0, 0},
11263 {0x97, 0x70, 0x70, 0, 0},
11264 {0x98, 0x70, 0x70, 0, 0},
11265 {0x99, 0x70, 0x70, 0, 0},
11266 {0x9A, 0x70, 0x70, 0, 0},
11267 {0xFFFF, 0, 0, 0, 0},
11268 };
11269
11270 static const struct radio_regs regs_RX_2056_rev11[] = {
11271 {0x02, 0, 0, 0, 0},
11272 {0x03, 0, 0, 0, 0},
11273 {0x04, 0, 0, 0, 0},
11274 {0x05, 0, 0, 0, 0},
11275 {0x06, 0, 0, 0, 0},
11276 {0x07, 0, 0, 0, 0},
11277 {0x08, 0, 0, 0, 0},
11278 {0x09, 0, 0, 0, 0},
11279 {0x0A, 0, 0, 0, 0},
11280 {0x0B, 0, 0, 0, 0},
11281 {0x0C, 0, 0, 0, 0},
11282 {0x0D, 0, 0, 0, 0},
11283 {0x0E, 0, 0, 0, 0},
11284 {0x0F, 0, 0, 0, 0},
11285 {0x10, 0, 0, 0, 0},
11286 {0x11, 0, 0, 0, 0},
11287 {0x12, 0, 0, 0, 0},
11288 {0x13, 0, 0, 0, 0},
11289 {0x14, 0, 0, 0, 0},
11290 {0x15, 0, 0, 0, 0},
11291 {0x16, 0, 0, 0, 0},
11292 {0x17, 0, 0, 0, 0},
11293 {0x18, 0, 0, 0, 0},
11294 {0x19, 0, 0, 0, 0},
11295 {0x1A, 0, 0, 0, 0},
11296 {0x1B, 0, 0, 0, 0},
11297 {0x1C, 0, 0, 0, 0},
11298 {0x1D, 0, 0, 0, 0},
11299 {0x1E, 0, 0, 0, 0},
11300 {0x1F, 0, 0, 0, 0},
11301 {0x20, 0x3, 0x3, 0, 0},
11302 {0x21, 0, 0, 0, 0},
11303 {0x22, 0, 0, 0, 0},
11304 {0x23, 0x90, 0x90, 0, 0},
11305 {0x24, 0x55, 0x55, 0, 0},
11306 {0x25, 0x15, 0x15, 0, 0},
11307 {0x26, 0x5, 0x5, 0, 0},
11308 {0x27, 0x15, 0x15, 0, 0},
11309 {0x28, 0x5, 0x5, 0, 0},
11310 {0x29, 0x20, 0x20, 0, 0},
11311 {0x2A, 0x11, 0x11, 0, 0},
11312 {0x2B, 0x90, 0x90, 0, 0},
11313 {0x2C, 0, 0, 0, 0},
11314 {0x2D, 0x88, 0x88, 0, 0},
11315 {0x2E, 0x32, 0x32, 0, 0},
11316 {0x2F, 0x77, 0x77, 0, 0},
11317 {0x30, 0x17, 0x17, 1, 1},
11318 {0x31, 0xff, 0xff, 1, 1},
11319 {0x32, 0x20, 0x20, 0, 0},
11320 {0x33, 0, 0, 0, 0},
11321 {0x34, 0x88, 0x88, 0, 0},
11322 {0x35, 0x32, 0x32, 0, 0},
11323 {0x36, 0x77, 0x77, 0, 0},
11324 {0x37, 0x17, 0x17, 1, 1},
11325 {0x38, 0xf0, 0xf0, 1, 1},
11326 {0x39, 0x20, 0x20, 0, 0},
11327 {0x3A, 0x8, 0x8, 0, 0},
11328 {0x3B, 0x55, 0x55, 1, 1},
11329 {0x3C, 0, 0, 0, 0},
11330 {0x3D, 0x88, 0x88, 1, 1},
11331 {0x3E, 0, 0, 0, 0},
11332 {0x3F, 0x44, 0x44, 0, 0},
11333 {0x40, 0x7, 0x7, 1, 1},
11334 {0x41, 0x6, 0x6, 0, 0},
11335 {0x42, 0x4, 0x4, 0, 0},
11336 {0x43, 0, 0, 0, 0},
11337 {0x44, 0x8, 0x8, 0, 0},
11338 {0x45, 0x55, 0x55, 1, 1},
11339 {0x46, 0, 0, 0, 0},
11340 {0x47, 0x11, 0x11, 0, 0},
11341 {0x48, 0, 0, 0, 0},
11342 {0x49, 0x44, 0x44, 0, 0},
11343 {0x4A, 0x7, 0x7, 0, 0},
11344 {0x4B, 0x6, 0x6, 0, 0},
11345 {0x4C, 0x4, 0x4, 0, 0},
11346 {0x4D, 0, 0, 0, 0},
11347 {0x4E, 0, 0, 0, 0},
11348 {0x4F, 0x26, 0x26, 1, 1},
11349 {0x50, 0x26, 0x26, 1, 1},
11350 {0x51, 0xf, 0xf, 1, 1},
11351 {0x52, 0xf, 0xf, 1, 1},
11352 {0x53, 0x44, 0x44, 0, 0},
11353 {0x54, 0, 0, 0, 0},
11354 {0x55, 0, 0, 0, 0},
11355 {0x56, 0x8, 0x8, 0, 0},
11356 {0x57, 0x8, 0x8, 0, 0},
11357 {0x58, 0x7, 0x7, 0, 0},
11358 {0x59, 0x22, 0x22, 0, 0},
11359 {0x5A, 0x22, 0x22, 0, 0},
11360 {0x5B, 0x2, 0x2, 0, 0},
11361 {0x5C, 0x4, 0x4, 1, 1},
11362 {0x5D, 0x7, 0x7, 0, 0},
11363 {0x5E, 0x55, 0x55, 0, 0},
11364 {0x5F, 0x23, 0x23, 0, 0},
11365 {0x60, 0x41, 0x41, 0, 0},
11366 {0x61, 0x1, 0x1, 0, 0},
11367 {0x62, 0xa, 0xa, 0, 0},
11368 {0x63, 0, 0, 0, 0},
11369 {0x64, 0, 0, 0, 0},
11370 {0x65, 0, 0, 0, 0},
11371 {0x66, 0, 0, 0, 0},
11372 {0x67, 0, 0, 0, 0},
11373 {0x68, 0, 0, 0, 0},
11374 {0x69, 0, 0, 0, 0},
11375 {0x6A, 0, 0, 0, 0},
11376 {0x6B, 0xc, 0xc, 0, 0},
11377 {0x6C, 0, 0, 0, 0},
11378 {0x6D, 0, 0, 0, 0},
11379 {0x6E, 0, 0, 0, 0},
11380 {0x6F, 0, 0, 0, 0},
11381 {0x70, 0, 0, 0, 0},
11382 {0x71, 0, 0, 0, 0},
11383 {0x72, 0x22, 0x22, 0, 0},
11384 {0x73, 0x22, 0x22, 0, 0},
11385 {0x74, 0, 0, 1, 1},
11386 {0x75, 0xa, 0xa, 0, 0},
11387 {0x76, 0x1, 0x1, 0, 0},
11388 {0x77, 0x22, 0x22, 0, 0},
11389 {0x78, 0x30, 0x30, 0, 0},
11390 {0x79, 0, 0, 0, 0},
11391 {0x7A, 0, 0, 0, 0},
11392 {0x7B, 0, 0, 0, 0},
11393 {0x7C, 0, 0, 0, 0},
11394 {0x7D, 0x5, 0x5, 1, 1},
11395 {0x7E, 0, 0, 0, 0},
11396 {0x7F, 0, 0, 0, 0},
11397 {0x80, 0, 0, 0, 0},
11398 {0x81, 0, 0, 0, 0},
11399 {0x82, 0, 0, 0, 0},
11400 {0x83, 0, 0, 0, 0},
11401 {0x84, 0, 0, 0, 0},
11402 {0x85, 0, 0, 0, 0},
11403 {0x86, 0, 0, 0, 0},
11404 {0x87, 0, 0, 0, 0},
11405 {0x88, 0, 0, 0, 0},
11406 {0x89, 0, 0, 0, 0},
11407 {0x8A, 0, 0, 0, 0},
11408 {0x8B, 0, 0, 0, 0},
11409 {0x8C, 0, 0, 0, 0},
11410 {0x8D, 0, 0, 0, 0},
11411 {0x8E, 0, 0, 0, 0},
11412 {0x8F, 0, 0, 0, 0},
11413 {0x90, 0, 0, 0, 0},
11414 {0x91, 0, 0, 0, 0},
11415 {0x92, 0, 0, 0, 0},
11416 {0x93, 0, 0, 0, 0},
11417 {0x94, 0, 0, 0, 0},
11418 {0xFFFF, 0, 0, 0, 0},
11419 };
11420
11421 static struct radio_20xx_regs regs_2057_rev4[] = {
11422 {0x00, 0x84, 0},
11423 {0x01, 0, 0},
11424 {0x02, 0x60, 0},
11425 {0x03, 0x1f, 0},
11426 {0x04, 0x4, 0},
11427 {0x05, 0x2, 0},
11428 {0x06, 0x1, 0},
11429 {0x07, 0x1, 0},
11430 {0x08, 0x1, 0},
11431 {0x09, 0x69, 0},
11432 {0x0A, 0x66, 0},
11433 {0x0B, 0x6, 0},
11434 {0x0C, 0x18, 0},
11435 {0x0D, 0x3, 0},
11436 {0x0E, 0x20, 1},
11437 {0x0F, 0x20, 0},
11438 {0x10, 0, 0},
11439 {0x11, 0x7c, 0},
11440 {0x12, 0x42, 0},
11441 {0x13, 0xbd, 0},
11442 {0x14, 0x7, 0},
11443 {0x15, 0xf7, 0},
11444 {0x16, 0x8, 0},
11445 {0x17, 0x17, 0},
11446 {0x18, 0x7, 0},
11447 {0x19, 0, 0},
11448 {0x1A, 0x2, 0},
11449 {0x1B, 0x13, 0},
11450 {0x1C, 0x3e, 0},
11451 {0x1D, 0x3e, 0},
11452 {0x1E, 0x96, 0},
11453 {0x1F, 0x4, 0},
11454 {0x20, 0, 0},
11455 {0x21, 0, 0},
11456 {0x22, 0x17, 0},
11457 {0x23, 0x4, 0},
11458 {0x24, 0x1, 0},
11459 {0x25, 0x6, 0},
11460 {0x26, 0x4, 0},
11461 {0x27, 0xd, 0},
11462 {0x28, 0xd, 0},
11463 {0x29, 0x30, 0},
11464 {0x2A, 0x32, 0},
11465 {0x2B, 0x8, 0},
11466 {0x2C, 0x1c, 0},
11467 {0x2D, 0x2, 0},
11468 {0x2E, 0x4, 0},
11469 {0x2F, 0x7f, 0},
11470 {0x30, 0x27, 0},
11471 {0x31, 0, 1},
11472 {0x32, 0, 1},
11473 {0x33, 0, 1},
11474 {0x34, 0, 0},
11475 {0x35, 0x26, 1},
11476 {0x36, 0x18, 0},
11477 {0x37, 0x7, 0},
11478 {0x38, 0x66, 0},
11479 {0x39, 0x66, 0},
11480 {0x3A, 0x66, 0},
11481 {0x3B, 0x66, 0},
11482 {0x3C, 0xff, 1},
11483 {0x3D, 0xff, 1},
11484 {0x3E, 0xff, 1},
11485 {0x3F, 0xff, 1},
11486 {0x40, 0x16, 0},
11487 {0x41, 0x7, 0},
11488 {0x42, 0x19, 0},
11489 {0x43, 0x7, 0},
11490 {0x44, 0x6, 0},
11491 {0x45, 0x3, 0},
11492 {0x46, 0x1, 0},
11493 {0x47, 0x7, 0},
11494 {0x48, 0x33, 0},
11495 {0x49, 0x5, 0},
11496 {0x4A, 0x77, 0},
11497 {0x4B, 0x66, 0},
11498 {0x4C, 0x66, 0},
11499 {0x4D, 0, 0},
11500 {0x4E, 0x4, 0},
11501 {0x4F, 0xc, 0},
11502 {0x50, 0, 0},
11503 {0x51, 0x75, 0},
11504 {0x56, 0x7, 0},
11505 {0x57, 0, 0},
11506 {0x58, 0, 0},
11507 {0x59, 0xa8, 0},
11508 {0x5A, 0, 0},
11509 {0x5B, 0x1f, 0},
11510 {0x5C, 0x30, 0},
11511 {0x5D, 0x1, 0},
11512 {0x5E, 0x30, 0},
11513 {0x5F, 0x70, 0},
11514 {0x60, 0, 0},
11515 {0x61, 0, 0},
11516 {0x62, 0x33, 1},
11517 {0x63, 0x19, 0},
11518 {0x64, 0x62, 0},
11519 {0x65, 0, 0},
11520 {0x66, 0x11, 0},
11521 {0x69, 0, 0},
11522 {0x6A, 0x7e, 0},
11523 {0x6B, 0x3f, 0},
11524 {0x6C, 0x7f, 0},
11525 {0x6D, 0x78, 0},
11526 {0x6E, 0xc8, 0},
11527 {0x6F, 0x88, 0},
11528 {0x70, 0x8, 0},
11529 {0x71, 0xf, 0},
11530 {0x72, 0xbc, 0},
11531 {0x73, 0x8, 0},
11532 {0x74, 0x60, 0},
11533 {0x75, 0x1e, 0},
11534 {0x76, 0x70, 0},
11535 {0x77, 0, 0},
11536 {0x78, 0, 0},
11537 {0x79, 0, 0},
11538 {0x7A, 0x33, 0},
11539 {0x7B, 0x1e, 0},
11540 {0x7C, 0x62, 0},
11541 {0x7D, 0x11, 0},
11542 {0x80, 0x3c, 0},
11543 {0x81, 0x9c, 0},
11544 {0x82, 0xa, 0},
11545 {0x83, 0x9d, 0},
11546 {0x84, 0xa, 0},
11547 {0x85, 0, 0},
11548 {0x86, 0x40, 0},
11549 {0x87, 0x40, 0},
11550 {0x88, 0x88, 0},
11551 {0x89, 0x10, 0},
11552 {0x8A, 0xf0, 1},
11553 {0x8B, 0x10, 1},
11554 {0x8C, 0xf0, 1},
11555 {0x8D, 0, 0},
11556 {0x8E, 0, 0},
11557 {0x8F, 0x10, 0},
11558 {0x90, 0x55, 0},
11559 {0x91, 0x3f, 1},
11560 {0x92, 0x36, 1},
11561 {0x93, 0, 0},
11562 {0x94, 0, 0},
11563 {0x95, 0, 0},
11564 {0x96, 0x87, 0},
11565 {0x97, 0x11, 0},
11566 {0x98, 0, 0},
11567 {0x99, 0x33, 0},
11568 {0x9A, 0x88, 0},
11569 {0x9B, 0, 0},
11570 {0x9C, 0x87, 0},
11571 {0x9D, 0x11, 0},
11572 {0x9E, 0, 0},
11573 {0x9F, 0x33, 0},
11574 {0xA0, 0x88, 0},
11575 {0xA1, 0xe1, 0},
11576 {0xA2, 0x3f, 0},
11577 {0xA3, 0x44, 0},
11578 {0xA4, 0x8c, 1},
11579 {0xA5, 0x6d, 0},
11580 {0xA6, 0x22, 0},
11581 {0xA7, 0xbe, 0},
11582 {0xA8, 0x55, 1},
11583 {0xA9, 0xc, 0},
11584 {0xAA, 0xc, 0},
11585 {0xAB, 0xaa, 0},
11586 {0xAC, 0x2, 0},
11587 {0xAD, 0, 0},
11588 {0xAE, 0x10, 0},
11589 {0xAF, 0x1, 1},
11590 {0xB0, 0, 0},
11591 {0xB1, 0, 0},
11592 {0xB2, 0x80, 0},
11593 {0xB3, 0x60, 0},
11594 {0xB4, 0x44, 0},
11595 {0xB5, 0x55, 0},
11596 {0xB6, 0x1, 0},
11597 {0xB7, 0x55, 0},
11598 {0xB8, 0x1, 0},
11599 {0xB9, 0x5, 0},
11600 {0xBA, 0x55, 0},
11601 {0xBB, 0x55, 0},
11602 {0xC1, 0, 0},
11603 {0xC2, 0, 0},
11604 {0xC3, 0, 0},
11605 {0xC4, 0, 0},
11606 {0xC5, 0, 0},
11607 {0xC6, 0, 0},
11608 {0xC7, 0, 0},
11609 {0xC8, 0, 0},
11610 {0xC9, 0, 0},
11611 {0xCA, 0, 0},
11612 {0xCB, 0, 0},
11613 {0xCC, 0, 0},
11614 {0xCD, 0, 0},
11615 {0xCE, 0x5e, 0},
11616 {0xCF, 0xc, 0},
11617 {0xD0, 0xc, 0},
11618 {0xD1, 0xc, 0},
11619 {0xD2, 0, 0},
11620 {0xD3, 0x2b, 0},
11621 {0xD4, 0xc, 0},
11622 {0xD5, 0, 0},
11623 {0xD6, 0x75, 0},
11624 {0xDB, 0x7, 0},
11625 {0xDC, 0, 0},
11626 {0xDD, 0, 0},
11627 {0xDE, 0xa8, 0},
11628 {0xDF, 0, 0},
11629 {0xE0, 0x1f, 0},
11630 {0xE1, 0x30, 0},
11631 {0xE2, 0x1, 0},
11632 {0xE3, 0x30, 0},
11633 {0xE4, 0x70, 0},
11634 {0xE5, 0, 0},
11635 {0xE6, 0, 0},
11636 {0xE7, 0x33, 0},
11637 {0xE8, 0x19, 0},
11638 {0xE9, 0x62, 0},
11639 {0xEA, 0, 0},
11640 {0xEB, 0x11, 0},
11641 {0xEE, 0, 0},
11642 {0xEF, 0x7e, 0},
11643 {0xF0, 0x3f, 0},
11644 {0xF1, 0x7f, 0},
11645 {0xF2, 0x78, 0},
11646 {0xF3, 0xc8, 0},
11647 {0xF4, 0x88, 0},
11648 {0xF5, 0x8, 0},
11649 {0xF6, 0xf, 0},
11650 {0xF7, 0xbc, 0},
11651 {0xF8, 0x8, 0},
11652 {0xF9, 0x60, 0},
11653 {0xFA, 0x1e, 0},
11654 {0xFB, 0x70, 0},
11655 {0xFC, 0, 0},
11656 {0xFD, 0, 0},
11657 {0xFE, 0, 0},
11658 {0xFF, 0x33, 0},
11659 {0x100, 0x1e, 0},
11660 {0x101, 0x62, 0},
11661 {0x102, 0x11, 0},
11662 {0x105, 0x3c, 0},
11663 {0x106, 0x9c, 0},
11664 {0x107, 0xa, 0},
11665 {0x108, 0x9d, 0},
11666 {0x109, 0xa, 0},
11667 {0x10A, 0, 0},
11668 {0x10B, 0x40, 0},
11669 {0x10C, 0x40, 0},
11670 {0x10D, 0x88, 0},
11671 {0x10E, 0x10, 0},
11672 {0x10F, 0xf0, 1},
11673 {0x110, 0x10, 1},
11674 {0x111, 0xf0, 1},
11675 {0x112, 0, 0},
11676 {0x113, 0, 0},
11677 {0x114, 0x10, 0},
11678 {0x115, 0x55, 0},
11679 {0x116, 0x3f, 1},
11680 {0x117, 0x36, 1},
11681 {0x118, 0, 0},
11682 {0x119, 0, 0},
11683 {0x11A, 0, 0},
11684 {0x11B, 0x87, 0},
11685 {0x11C, 0x11, 0},
11686 {0x11D, 0, 0},
11687 {0x11E, 0x33, 0},
11688 {0x11F, 0x88, 0},
11689 {0x120, 0, 0},
11690 {0x121, 0x87, 0},
11691 {0x122, 0x11, 0},
11692 {0x123, 0, 0},
11693 {0x124, 0x33, 0},
11694 {0x125, 0x88, 0},
11695 {0x126, 0xe1, 0},
11696 {0x127, 0x3f, 0},
11697 {0x128, 0x44, 0},
11698 {0x129, 0x8c, 1},
11699 {0x12A, 0x6d, 0},
11700 {0x12B, 0x22, 0},
11701 {0x12C, 0xbe, 0},
11702 {0x12D, 0x55, 1},
11703 {0x12E, 0xc, 0},
11704 {0x12F, 0xc, 0},
11705 {0x130, 0xaa, 0},
11706 {0x131, 0x2, 0},
11707 {0x132, 0, 0},
11708 {0x133, 0x10, 0},
11709 {0x134, 0x1, 1},
11710 {0x135, 0, 0},
11711 {0x136, 0, 0},
11712 {0x137, 0x80, 0},
11713 {0x138, 0x60, 0},
11714 {0x139, 0x44, 0},
11715 {0x13A, 0x55, 0},
11716 {0x13B, 0x1, 0},
11717 {0x13C, 0x55, 0},
11718 {0x13D, 0x1, 0},
11719 {0x13E, 0x5, 0},
11720 {0x13F, 0x55, 0},
11721 {0x140, 0x55, 0},
11722 {0x146, 0, 0},
11723 {0x147, 0, 0},
11724 {0x148, 0, 0},
11725 {0x149, 0, 0},
11726 {0x14A, 0, 0},
11727 {0x14B, 0, 0},
11728 {0x14C, 0, 0},
11729 {0x14D, 0, 0},
11730 {0x14E, 0, 0},
11731 {0x14F, 0, 0},
11732 {0x150, 0, 0},
11733 {0x151, 0, 0},
11734 {0x152, 0, 0},
11735 {0x153, 0, 0},
11736 {0x154, 0xc, 0},
11737 {0x155, 0xc, 0},
11738 {0x156, 0xc, 0},
11739 {0x157, 0, 0},
11740 {0x158, 0x2b, 0},
11741 {0x159, 0x84, 0},
11742 {0x15A, 0x15, 0},
11743 {0x15B, 0xf, 0},
11744 {0x15C, 0, 0},
11745 {0x15D, 0, 0},
11746 {0x15E, 0, 1},
11747 {0x15F, 0, 1},
11748 {0x160, 0, 1},
11749 {0x161, 0, 1},
11750 {0x162, 0, 1},
11751 {0x163, 0, 1},
11752 {0x164, 0, 0},
11753 {0x165, 0, 0},
11754 {0x166, 0, 0},
11755 {0x167, 0, 0},
11756 {0x168, 0, 0},
11757 {0x169, 0x2, 1},
11758 {0x16A, 0, 1},
11759 {0x16B, 0, 1},
11760 {0x16C, 0, 1},
11761 {0x16D, 0, 0},
11762 {0x170, 0, 0},
11763 {0x171, 0x77, 0},
11764 {0x172, 0x77, 0},
11765 {0x173, 0x77, 0},
11766 {0x174, 0x77, 0},
11767 {0x175, 0, 0},
11768 {0x176, 0x3, 0},
11769 {0x177, 0x37, 0},
11770 {0x178, 0x3, 0},
11771 {0x179, 0, 0},
11772 {0x17A, 0x21, 0},
11773 {0x17B, 0x21, 0},
11774 {0x17C, 0, 0},
11775 {0x17D, 0xaa, 0},
11776 {0x17E, 0, 0},
11777 {0x17F, 0xaa, 0},
11778 {0x180, 0, 0},
11779 {0x190, 0, 0},
11780 {0x191, 0x77, 0},
11781 {0x192, 0x77, 0},
11782 {0x193, 0x77, 0},
11783 {0x194, 0x77, 0},
11784 {0x195, 0, 0},
11785 {0x196, 0x3, 0},
11786 {0x197, 0x37, 0},
11787 {0x198, 0x3, 0},
11788 {0x199, 0, 0},
11789 {0x19A, 0x21, 0},
11790 {0x19B, 0x21, 0},
11791 {0x19C, 0, 0},
11792 {0x19D, 0xaa, 0},
11793 {0x19E, 0, 0},
11794 {0x19F, 0xaa, 0},
11795 {0x1A0, 0, 0},
11796 {0x1A1, 0x2, 0},
11797 {0x1A2, 0xf, 0},
11798 {0x1A3, 0xf, 0},
11799 {0x1A4, 0, 1},
11800 {0x1A5, 0, 1},
11801 {0x1A6, 0, 1},
11802 {0x1A7, 0x2, 0},
11803 {0x1A8, 0xf, 0},
11804 {0x1A9, 0xf, 0},
11805 {0x1AA, 0, 1},
11806 {0x1AB, 0, 1},
11807 {0x1AC, 0, 1},
11808 {0xFFFF, 0, 0},
11809 };
11810
11811 static struct radio_20xx_regs regs_2057_rev5[] = {
11812 {0x00, 0, 1},
11813 {0x01, 0x57, 1},
11814 {0x02, 0x20, 1},
11815 {0x03, 0x1f, 0},
11816 {0x04, 0x4, 0},
11817 {0x05, 0x2, 0},
11818 {0x06, 0x1, 0},
11819 {0x07, 0x1, 0},
11820 {0x08, 0x1, 0},
11821 {0x09, 0x69, 0},
11822 {0x0A, 0x66, 0},
11823 {0x0B, 0x6, 0},
11824 {0x0C, 0x18, 0},
11825 {0x0D, 0x3, 0},
11826 {0x0E, 0x20, 0},
11827 {0x0F, 0x20, 0},
11828 {0x10, 0, 0},
11829 {0x11, 0x7c, 0},
11830 {0x12, 0x42, 0},
11831 {0x13, 0xbd, 0},
11832 {0x14, 0x7, 0},
11833 {0x15, 0x87, 0},
11834 {0x16, 0x8, 0},
11835 {0x17, 0x17, 0},
11836 {0x18, 0x7, 0},
11837 {0x19, 0, 0},
11838 {0x1A, 0x2, 0},
11839 {0x1B, 0x13, 0},
11840 {0x1C, 0x3e, 0},
11841 {0x1D, 0x3e, 0},
11842 {0x1E, 0x96, 0},
11843 {0x1F, 0x4, 0},
11844 {0x20, 0, 0},
11845 {0x21, 0, 0},
11846 {0x22, 0x17, 0},
11847 {0x23, 0x6, 1},
11848 {0x24, 0x1, 0},
11849 {0x25, 0x6, 0},
11850 {0x26, 0x4, 0},
11851 {0x27, 0xd, 0},
11852 {0x28, 0xd, 0},
11853 {0x29, 0x30, 0},
11854 {0x2A, 0x32, 0},
11855 {0x2B, 0x8, 0},
11856 {0x2C, 0x1c, 0},
11857 {0x2D, 0x2, 0},
11858 {0x2E, 0x4, 0},
11859 {0x2F, 0x7f, 0},
11860 {0x30, 0x27, 0},
11861 {0x31, 0, 1},
11862 {0x32, 0, 1},
11863 {0x33, 0, 1},
11864 {0x34, 0, 0},
11865 {0x35, 0x20, 0},
11866 {0x36, 0x18, 0},
11867 {0x37, 0x7, 0},
11868 {0x38, 0x66, 0},
11869 {0x39, 0x66, 0},
11870 {0x3C, 0xff, 0},
11871 {0x3D, 0xff, 0},
11872 {0x40, 0x16, 0},
11873 {0x41, 0x7, 0},
11874 {0x45, 0x3, 0},
11875 {0x46, 0x1, 0},
11876 {0x47, 0x7, 0},
11877 {0x4B, 0x66, 0},
11878 {0x4C, 0x66, 0},
11879 {0x4D, 0, 0},
11880 {0x4E, 0x4, 0},
11881 {0x4F, 0xc, 0},
11882 {0x50, 0, 0},
11883 {0x51, 0x70, 1},
11884 {0x56, 0x7, 0},
11885 {0x57, 0, 0},
11886 {0x58, 0, 0},
11887 {0x59, 0x88, 1},
11888 {0x5A, 0, 0},
11889 {0x5B, 0x1f, 0},
11890 {0x5C, 0x20, 1},
11891 {0x5D, 0x1, 0},
11892 {0x5E, 0x30, 0},
11893 {0x5F, 0x70, 0},
11894 {0x60, 0, 0},
11895 {0x61, 0, 0},
11896 {0x62, 0x33, 1},
11897 {0x63, 0xf, 1},
11898 {0x64, 0xf, 1},
11899 {0x65, 0, 0},
11900 {0x66, 0x11, 0},
11901 {0x80, 0x3c, 0},
11902 {0x81, 0x1, 1},
11903 {0x82, 0xa, 0},
11904 {0x85, 0, 0},
11905 {0x86, 0x40, 0},
11906 {0x87, 0x40, 0},
11907 {0x88, 0x88, 0},
11908 {0x89, 0x10, 0},
11909 {0x8A, 0xf0, 0},
11910 {0x8B, 0x10, 0},
11911 {0x8C, 0xf0, 0},
11912 {0x8F, 0x10, 0},
11913 {0x90, 0x55, 0},
11914 {0x91, 0x3f, 1},
11915 {0x92, 0x36, 1},
11916 {0x93, 0, 0},
11917 {0x94, 0, 0},
11918 {0x95, 0, 0},
11919 {0x96, 0x87, 0},
11920 {0x97, 0x11, 0},
11921 {0x98, 0, 0},
11922 {0x99, 0x33, 0},
11923 {0x9A, 0x88, 0},
11924 {0xA1, 0x20, 1},
11925 {0xA2, 0x3f, 0},
11926 {0xA3, 0x44, 0},
11927 {0xA4, 0x8c, 0},
11928 {0xA5, 0x6c, 0},
11929 {0xA6, 0x22, 0},
11930 {0xA7, 0xbe, 0},
11931 {0xA8, 0x55, 0},
11932 {0xAA, 0xc, 0},
11933 {0xAB, 0xaa, 0},
11934 {0xAC, 0x2, 0},
11935 {0xAD, 0, 0},
11936 {0xAE, 0x10, 0},
11937 {0xAF, 0x1, 0},
11938 {0xB0, 0, 0},
11939 {0xB1, 0, 0},
11940 {0xB2, 0x80, 0},
11941 {0xB3, 0x60, 0},
11942 {0xB4, 0x44, 0},
11943 {0xB5, 0x55, 0},
11944 {0xB6, 0x1, 0},
11945 {0xB7, 0x55, 0},
11946 {0xB8, 0x1, 0},
11947 {0xB9, 0x5, 0},
11948 {0xBA, 0x55, 0},
11949 {0xBB, 0x55, 0},
11950 {0xC3, 0, 0},
11951 {0xC4, 0, 0},
11952 {0xC5, 0, 0},
11953 {0xC6, 0, 0},
11954 {0xC7, 0, 0},
11955 {0xC8, 0, 0},
11956 {0xC9, 0, 0},
11957 {0xCA, 0, 0},
11958 {0xCB, 0, 0},
11959 {0xCD, 0, 0},
11960 {0xCE, 0x5e, 0},
11961 {0xCF, 0xc, 0},
11962 {0xD0, 0xc, 0},
11963 {0xD1, 0xc, 0},
11964 {0xD2, 0, 0},
11965 {0xD3, 0x2b, 0},
11966 {0xD4, 0xc, 0},
11967 {0xD5, 0, 0},
11968 {0xD6, 0x70, 1},
11969 {0xDB, 0x7, 0},
11970 {0xDC, 0, 0},
11971 {0xDD, 0, 0},
11972 {0xDE, 0x88, 1},
11973 {0xDF, 0, 0},
11974 {0xE0, 0x1f, 0},
11975 {0xE1, 0x20, 1},
11976 {0xE2, 0x1, 0},
11977 {0xE3, 0x30, 0},
11978 {0xE4, 0x70, 0},
11979 {0xE5, 0, 0},
11980 {0xE6, 0, 0},
11981 {0xE7, 0x33, 0},
11982 {0xE8, 0xf, 1},
11983 {0xE9, 0xf, 1},
11984 {0xEA, 0, 0},
11985 {0xEB, 0x11, 0},
11986 {0x105, 0x3c, 0},
11987 {0x106, 0x1, 1},
11988 {0x107, 0xa, 0},
11989 {0x10A, 0, 0},
11990 {0x10B, 0x40, 0},
11991 {0x10C, 0x40, 0},
11992 {0x10D, 0x88, 0},
11993 {0x10E, 0x10, 0},
11994 {0x10F, 0xf0, 0},
11995 {0x110, 0x10, 0},
11996 {0x111, 0xf0, 0},
11997 {0x114, 0x10, 0},
11998 {0x115, 0x55, 0},
11999 {0x116, 0x3f, 1},
12000 {0x117, 0x36, 1},
12001 {0x118, 0, 0},
12002 {0x119, 0, 0},
12003 {0x11A, 0, 0},
12004 {0x11B, 0x87, 0},
12005 {0x11C, 0x11, 0},
12006 {0x11D, 0, 0},
12007 {0x11E, 0x33, 0},
12008 {0x11F, 0x88, 0},
12009 {0x126, 0x20, 1},
12010 {0x127, 0x3f, 0},
12011 {0x128, 0x44, 0},
12012 {0x129, 0x8c, 0},
12013 {0x12A, 0x6c, 0},
12014 {0x12B, 0x22, 0},
12015 {0x12C, 0xbe, 0},
12016 {0x12D, 0x55, 0},
12017 {0x12F, 0xc, 0},
12018 {0x130, 0xaa, 0},
12019 {0x131, 0x2, 0},
12020 {0x132, 0, 0},
12021 {0x133, 0x10, 0},
12022 {0x134, 0x1, 0},
12023 {0x135, 0, 0},
12024 {0x136, 0, 0},
12025 {0x137, 0x80, 0},
12026 {0x138, 0x60, 0},
12027 {0x139, 0x44, 0},
12028 {0x13A, 0x55, 0},
12029 {0x13B, 0x1, 0},
12030 {0x13C, 0x55, 0},
12031 {0x13D, 0x1, 0},
12032 {0x13E, 0x5, 0},
12033 {0x13F, 0x55, 0},
12034 {0x140, 0x55, 0},
12035 {0x148, 0, 0},
12036 {0x149, 0, 0},
12037 {0x14A, 0, 0},
12038 {0x14B, 0, 0},
12039 {0x14C, 0, 0},
12040 {0x14D, 0, 0},
12041 {0x14E, 0, 0},
12042 {0x14F, 0, 0},
12043 {0x150, 0, 0},
12044 {0x154, 0xc, 0},
12045 {0x155, 0xc, 0},
12046 {0x156, 0xc, 0},
12047 {0x157, 0, 0},
12048 {0x158, 0x2b, 0},
12049 {0x159, 0x84, 0},
12050 {0x15A, 0x15, 0},
12051 {0x15B, 0xf, 0},
12052 {0x15C, 0, 0},
12053 {0x15D, 0, 0},
12054 {0x15E, 0, 1},
12055 {0x15F, 0, 1},
12056 {0x160, 0, 1},
12057 {0x161, 0, 1},
12058 {0x162, 0, 1},
12059 {0x163, 0, 1},
12060 {0x164, 0, 0},
12061 {0x165, 0, 0},
12062 {0x166, 0, 0},
12063 {0x167, 0, 0},
12064 {0x168, 0, 0},
12065 {0x169, 0, 0},
12066 {0x16A, 0, 1},
12067 {0x16B, 0, 1},
12068 {0x16C, 0, 1},
12069 {0x16D, 0, 0},
12070 {0x170, 0, 0},
12071 {0x171, 0x77, 0},
12072 {0x172, 0x77, 0},
12073 {0x173, 0x77, 0},
12074 {0x174, 0x77, 0},
12075 {0x175, 0, 0},
12076 {0x176, 0x3, 0},
12077 {0x177, 0x37, 0},
12078 {0x178, 0x3, 0},
12079 {0x179, 0, 0},
12080 {0x17B, 0x21, 0},
12081 {0x17C, 0, 0},
12082 {0x17D, 0xaa, 0},
12083 {0x17E, 0, 0},
12084 {0x190, 0, 0},
12085 {0x191, 0x77, 0},
12086 {0x192, 0x77, 0},
12087 {0x193, 0x77, 0},
12088 {0x194, 0x77, 0},
12089 {0x195, 0, 0},
12090 {0x196, 0x3, 0},
12091 {0x197, 0x37, 0},
12092 {0x198, 0x3, 0},
12093 {0x199, 0, 0},
12094 {0x19B, 0x21, 0},
12095 {0x19C, 0, 0},
12096 {0x19D, 0xaa, 0},
12097 {0x19E, 0, 0},
12098 {0x1A1, 0x2, 0},
12099 {0x1A2, 0xf, 0},
12100 {0x1A3, 0xf, 0},
12101 {0x1A4, 0, 1},
12102 {0x1A5, 0, 1},
12103 {0x1A6, 0, 1},
12104 {0x1A7, 0x2, 0},
12105 {0x1A8, 0xf, 0},
12106 {0x1A9, 0xf, 0},
12107 {0x1AA, 0, 1},
12108 {0x1AB, 0, 1},
12109 {0x1AC, 0, 1},
12110 {0x1AD, 0x84, 0},
12111 {0x1AE, 0x60, 0},
12112 {0x1AF, 0x47, 0},
12113 {0x1B0, 0x47, 0},
12114 {0x1B1, 0, 0},
12115 {0x1B2, 0, 0},
12116 {0x1B3, 0, 0},
12117 {0x1B4, 0, 0},
12118 {0x1B5, 0, 0},
12119 {0x1B6, 0, 0},
12120 {0x1B7, 0xc, 1},
12121 {0x1B8, 0, 0},
12122 {0x1B9, 0, 0},
12123 {0x1BA, 0, 0},
12124 {0x1BB, 0, 0},
12125 {0x1BC, 0, 0},
12126 {0x1BD, 0, 0},
12127 {0x1BE, 0, 0},
12128 {0x1BF, 0, 0},
12129 {0x1C0, 0, 0},
12130 {0x1C1, 0x1, 1},
12131 {0x1C2, 0x80, 1},
12132 {0x1C3, 0, 0},
12133 {0x1C4, 0, 0},
12134 {0x1C5, 0, 0},
12135 {0x1C6, 0, 0},
12136 {0x1C7, 0, 0},
12137 {0x1C8, 0, 0},
12138 {0x1C9, 0, 0},
12139 {0x1CA, 0, 0},
12140 {0xFFFF, 0, 0}
12141 };
12142
12143 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12144 {0x00, 0x15, 1},
12145 {0x01, 0x57, 1},
12146 {0x02, 0x20, 1},
12147 {0x03, 0x1f, 0},
12148 {0x04, 0x4, 0},
12149 {0x05, 0x2, 0},
12150 {0x06, 0x1, 0},
12151 {0x07, 0x1, 0},
12152 {0x08, 0x1, 0},
12153 {0x09, 0x69, 0},
12154 {0x0A, 0x66, 0},
12155 {0x0B, 0x6, 0},
12156 {0x0C, 0x18, 0},
12157 {0x0D, 0x3, 0},
12158 {0x0E, 0x20, 0},
12159 {0x0F, 0x20, 0},
12160 {0x10, 0, 0},
12161 {0x11, 0x7c, 0},
12162 {0x12, 0x42, 0},
12163 {0x13, 0xbd, 0},
12164 {0x14, 0x7, 0},
12165 {0x15, 0x87, 0},
12166 {0x16, 0x8, 0},
12167 {0x17, 0x17, 0},
12168 {0x18, 0x7, 0},
12169 {0x19, 0, 0},
12170 {0x1A, 0x2, 0},
12171 {0x1B, 0x13, 0},
12172 {0x1C, 0x3e, 0},
12173 {0x1D, 0x3e, 0},
12174 {0x1E, 0x96, 0},
12175 {0x1F, 0x4, 0},
12176 {0x20, 0, 0},
12177 {0x21, 0, 0},
12178 {0x22, 0x17, 0},
12179 {0x23, 0x6, 1},
12180 {0x24, 0x1, 0},
12181 {0x25, 0x6, 0},
12182 {0x26, 0x4, 0},
12183 {0x27, 0xd, 0},
12184 {0x28, 0xd, 0},
12185 {0x29, 0x30, 0},
12186 {0x2A, 0x32, 0},
12187 {0x2B, 0x8, 0},
12188 {0x2C, 0x1c, 0},
12189 {0x2D, 0x2, 0},
12190 {0x2E, 0x4, 0},
12191 {0x2F, 0x7f, 0},
12192 {0x30, 0x27, 0},
12193 {0x31, 0, 1},
12194 {0x32, 0, 1},
12195 {0x33, 0, 1},
12196 {0x34, 0, 0},
12197 {0x35, 0x20, 0},
12198 {0x36, 0x18, 0},
12199 {0x37, 0x7, 0},
12200 {0x38, 0x66, 0},
12201 {0x39, 0x66, 0},
12202 {0x3C, 0xff, 0},
12203 {0x3D, 0xff, 0},
12204 {0x40, 0x16, 0},
12205 {0x41, 0x7, 0},
12206 {0x45, 0x3, 0},
12207 {0x46, 0x1, 0},
12208 {0x47, 0x7, 0},
12209 {0x4B, 0x66, 0},
12210 {0x4C, 0x66, 0},
12211 {0x4D, 0, 0},
12212 {0x4E, 0x4, 0},
12213 {0x4F, 0xc, 0},
12214 {0x50, 0, 0},
12215 {0x51, 0x70, 1},
12216 {0x56, 0x7, 0},
12217 {0x57, 0, 0},
12218 {0x58, 0, 0},
12219 {0x59, 0x88, 1},
12220 {0x5A, 0, 0},
12221 {0x5B, 0x1f, 0},
12222 {0x5C, 0x20, 1},
12223 {0x5D, 0x1, 0},
12224 {0x5E, 0x30, 0},
12225 {0x5F, 0x70, 0},
12226 {0x60, 0, 0},
12227 {0x61, 0, 0},
12228 {0x62, 0x33, 1},
12229 {0x63, 0xf, 1},
12230 {0x64, 0xf, 1},
12231 {0x65, 0, 0},
12232 {0x66, 0x11, 0},
12233 {0x80, 0x3c, 0},
12234 {0x81, 0x1, 1},
12235 {0x82, 0xa, 0},
12236 {0x85, 0, 0},
12237 {0x86, 0x40, 0},
12238 {0x87, 0x40, 0},
12239 {0x88, 0x88, 0},
12240 {0x89, 0x10, 0},
12241 {0x8A, 0xf0, 0},
12242 {0x8B, 0x10, 0},
12243 {0x8C, 0xf0, 0},
12244 {0x8F, 0x10, 0},
12245 {0x90, 0x55, 0},
12246 {0x91, 0x3f, 1},
12247 {0x92, 0x36, 1},
12248 {0x93, 0, 0},
12249 {0x94, 0, 0},
12250 {0x95, 0, 0},
12251 {0x96, 0x87, 0},
12252 {0x97, 0x11, 0},
12253 {0x98, 0, 0},
12254 {0x99, 0x33, 0},
12255 {0x9A, 0x88, 0},
12256 {0xA1, 0x20, 1},
12257 {0xA2, 0x3f, 0},
12258 {0xA3, 0x44, 0},
12259 {0xA4, 0x8c, 0},
12260 {0xA5, 0x6c, 0},
12261 {0xA6, 0x22, 0},
12262 {0xA7, 0xbe, 0},
12263 {0xA8, 0x55, 0},
12264 {0xAA, 0xc, 0},
12265 {0xAB, 0xaa, 0},
12266 {0xAC, 0x2, 0},
12267 {0xAD, 0, 0},
12268 {0xAE, 0x10, 0},
12269 {0xAF, 0x1, 0},
12270 {0xB0, 0, 0},
12271 {0xB1, 0, 0},
12272 {0xB2, 0x80, 0},
12273 {0xB3, 0x60, 0},
12274 {0xB4, 0x44, 0},
12275 {0xB5, 0x55, 0},
12276 {0xB6, 0x1, 0},
12277 {0xB7, 0x55, 0},
12278 {0xB8, 0x1, 0},
12279 {0xB9, 0x5, 0},
12280 {0xBA, 0x55, 0},
12281 {0xBB, 0x55, 0},
12282 {0xC3, 0, 0},
12283 {0xC4, 0, 0},
12284 {0xC5, 0, 0},
12285 {0xC6, 0, 0},
12286 {0xC7, 0, 0},
12287 {0xC8, 0, 0},
12288 {0xC9, 0x1, 1},
12289 {0xCA, 0, 0},
12290 {0xCB, 0, 0},
12291 {0xCD, 0, 0},
12292 {0xCE, 0x5e, 0},
12293 {0xCF, 0xc, 0},
12294 {0xD0, 0xc, 0},
12295 {0xD1, 0xc, 0},
12296 {0xD2, 0, 0},
12297 {0xD3, 0x2b, 0},
12298 {0xD4, 0xc, 0},
12299 {0xD5, 0, 0},
12300 {0xD6, 0x70, 1},
12301 {0xDB, 0x7, 0},
12302 {0xDC, 0, 0},
12303 {0xDD, 0, 0},
12304 {0xDE, 0x88, 1},
12305 {0xDF, 0, 0},
12306 {0xE0, 0x1f, 0},
12307 {0xE1, 0x20, 1},
12308 {0xE2, 0x1, 0},
12309 {0xE3, 0x30, 0},
12310 {0xE4, 0x70, 0},
12311 {0xE5, 0, 0},
12312 {0xE6, 0, 0},
12313 {0xE7, 0x33, 0},
12314 {0xE8, 0xf, 1},
12315 {0xE9, 0xf, 1},
12316 {0xEA, 0, 0},
12317 {0xEB, 0x11, 0},
12318 {0x105, 0x3c, 0},
12319 {0x106, 0x1, 1},
12320 {0x107, 0xa, 0},
12321 {0x10A, 0, 0},
12322 {0x10B, 0x40, 0},
12323 {0x10C, 0x40, 0},
12324 {0x10D, 0x88, 0},
12325 {0x10E, 0x10, 0},
12326 {0x10F, 0xf0, 0},
12327 {0x110, 0x10, 0},
12328 {0x111, 0xf0, 0},
12329 {0x114, 0x10, 0},
12330 {0x115, 0x55, 0},
12331 {0x116, 0x3f, 1},
12332 {0x117, 0x36, 1},
12333 {0x118, 0, 0},
12334 {0x119, 0, 0},
12335 {0x11A, 0, 0},
12336 {0x11B, 0x87, 0},
12337 {0x11C, 0x11, 0},
12338 {0x11D, 0, 0},
12339 {0x11E, 0x33, 0},
12340 {0x11F, 0x88, 0},
12341 {0x126, 0x20, 1},
12342 {0x127, 0x3f, 0},
12343 {0x128, 0x44, 0},
12344 {0x129, 0x8c, 0},
12345 {0x12A, 0x6c, 0},
12346 {0x12B, 0x22, 0},
12347 {0x12C, 0xbe, 0},
12348 {0x12D, 0x55, 0},
12349 {0x12F, 0xc, 0},
12350 {0x130, 0xaa, 0},
12351 {0x131, 0x2, 0},
12352 {0x132, 0, 0},
12353 {0x133, 0x10, 0},
12354 {0x134, 0x1, 0},
12355 {0x135, 0, 0},
12356 {0x136, 0, 0},
12357 {0x137, 0x80, 0},
12358 {0x138, 0x60, 0},
12359 {0x139, 0x44, 0},
12360 {0x13A, 0x55, 0},
12361 {0x13B, 0x1, 0},
12362 {0x13C, 0x55, 0},
12363 {0x13D, 0x1, 0},
12364 {0x13E, 0x5, 0},
12365 {0x13F, 0x55, 0},
12366 {0x140, 0x55, 0},
12367 {0x148, 0, 0},
12368 {0x149, 0, 0},
12369 {0x14A, 0, 0},
12370 {0x14B, 0, 0},
12371 {0x14C, 0, 0},
12372 {0x14D, 0, 0},
12373 {0x14E, 0x1, 1},
12374 {0x14F, 0, 0},
12375 {0x150, 0, 0},
12376 {0x154, 0xc, 0},
12377 {0x155, 0xc, 0},
12378 {0x156, 0xc, 0},
12379 {0x157, 0, 0},
12380 {0x158, 0x2b, 0},
12381 {0x159, 0x84, 0},
12382 {0x15A, 0x15, 0},
12383 {0x15B, 0xf, 0},
12384 {0x15C, 0, 0},
12385 {0x15D, 0, 0},
12386 {0x15E, 0, 1},
12387 {0x15F, 0, 1},
12388 {0x160, 0, 1},
12389 {0x161, 0, 1},
12390 {0x162, 0, 1},
12391 {0x163, 0, 1},
12392 {0x164, 0, 0},
12393 {0x165, 0, 0},
12394 {0x166, 0, 0},
12395 {0x167, 0, 0},
12396 {0x168, 0, 0},
12397 {0x169, 0, 0},
12398 {0x16A, 0, 1},
12399 {0x16B, 0, 1},
12400 {0x16C, 0, 1},
12401 {0x16D, 0, 0},
12402 {0x170, 0, 0},
12403 {0x171, 0x77, 0},
12404 {0x172, 0x77, 0},
12405 {0x173, 0x77, 0},
12406 {0x174, 0x77, 0},
12407 {0x175, 0, 0},
12408 {0x176, 0x3, 0},
12409 {0x177, 0x37, 0},
12410 {0x178, 0x3, 0},
12411 {0x179, 0, 0},
12412 {0x17B, 0x21, 0},
12413 {0x17C, 0, 0},
12414 {0x17D, 0xaa, 0},
12415 {0x17E, 0, 0},
12416 {0x190, 0, 0},
12417 {0x191, 0x77, 0},
12418 {0x192, 0x77, 0},
12419 {0x193, 0x77, 0},
12420 {0x194, 0x77, 0},
12421 {0x195, 0, 0},
12422 {0x196, 0x3, 0},
12423 {0x197, 0x37, 0},
12424 {0x198, 0x3, 0},
12425 {0x199, 0, 0},
12426 {0x19B, 0x21, 0},
12427 {0x19C, 0, 0},
12428 {0x19D, 0xaa, 0},
12429 {0x19E, 0, 0},
12430 {0x1A1, 0x2, 0},
12431 {0x1A2, 0xf, 0},
12432 {0x1A3, 0xf, 0},
12433 {0x1A4, 0, 1},
12434 {0x1A5, 0, 1},
12435 {0x1A6, 0, 1},
12436 {0x1A7, 0x2, 0},
12437 {0x1A8, 0xf, 0},
12438 {0x1A9, 0xf, 0},
12439 {0x1AA, 0, 1},
12440 {0x1AB, 0, 1},
12441 {0x1AC, 0, 1},
12442 {0x1AD, 0x84, 0},
12443 {0x1AE, 0x60, 0},
12444 {0x1AF, 0x47, 0},
12445 {0x1B0, 0x47, 0},
12446 {0x1B1, 0, 0},
12447 {0x1B2, 0, 0},
12448 {0x1B3, 0, 0},
12449 {0x1B4, 0, 0},
12450 {0x1B5, 0, 0},
12451 {0x1B6, 0, 0},
12452 {0x1B7, 0xc, 1},
12453 {0x1B8, 0, 0},
12454 {0x1B9, 0, 0},
12455 {0x1BA, 0, 0},
12456 {0x1BB, 0, 0},
12457 {0x1BC, 0, 0},
12458 {0x1BD, 0, 0},
12459 {0x1BE, 0, 0},
12460 {0x1BF, 0, 0},
12461 {0x1C0, 0, 0},
12462 {0x1C1, 0x1, 1},
12463 {0x1C2, 0x80, 1},
12464 {0x1C3, 0, 0},
12465 {0x1C4, 0, 0},
12466 {0x1C5, 0, 0},
12467 {0x1C6, 0, 0},
12468 {0x1C7, 0, 0},
12469 {0x1C8, 0, 0},
12470 {0x1C9, 0, 0},
12471 {0x1CA, 0, 0},
12472 {0xFFFF, 0, 0}
12473 };
12474
12475 static struct radio_20xx_regs regs_2057_rev7[] = {
12476 {0x00, 0, 1},
12477 {0x01, 0x57, 1},
12478 {0x02, 0x20, 1},
12479 {0x03, 0x1f, 0},
12480 {0x04, 0x4, 0},
12481 {0x05, 0x2, 0},
12482 {0x06, 0x1, 0},
12483 {0x07, 0x1, 0},
12484 {0x08, 0x1, 0},
12485 {0x09, 0x69, 0},
12486 {0x0A, 0x66, 0},
12487 {0x0B, 0x6, 0},
12488 {0x0C, 0x18, 0},
12489 {0x0D, 0x3, 0},
12490 {0x0E, 0x20, 0},
12491 {0x0F, 0x20, 0},
12492 {0x10, 0, 0},
12493 {0x11, 0x7c, 0},
12494 {0x12, 0x42, 0},
12495 {0x13, 0xbd, 0},
12496 {0x14, 0x7, 0},
12497 {0x15, 0x87, 0},
12498 {0x16, 0x8, 0},
12499 {0x17, 0x17, 0},
12500 {0x18, 0x7, 0},
12501 {0x19, 0, 0},
12502 {0x1A, 0x2, 0},
12503 {0x1B, 0x13, 0},
12504 {0x1C, 0x3e, 0},
12505 {0x1D, 0x3e, 0},
12506 {0x1E, 0x96, 0},
12507 {0x1F, 0x4, 0},
12508 {0x20, 0, 0},
12509 {0x21, 0, 0},
12510 {0x22, 0x17, 0},
12511 {0x23, 0x6, 0},
12512 {0x24, 0x1, 0},
12513 {0x25, 0x6, 0},
12514 {0x26, 0x4, 0},
12515 {0x27, 0xd, 0},
12516 {0x28, 0xd, 0},
12517 {0x29, 0x30, 0},
12518 {0x2A, 0x32, 0},
12519 {0x2B, 0x8, 0},
12520 {0x2C, 0x1c, 0},
12521 {0x2D, 0x2, 0},
12522 {0x2E, 0x4, 0},
12523 {0x2F, 0x7f, 0},
12524 {0x30, 0x27, 0},
12525 {0x31, 0, 1},
12526 {0x32, 0, 1},
12527 {0x33, 0, 1},
12528 {0x34, 0, 0},
12529 {0x35, 0x20, 0},
12530 {0x36, 0x18, 0},
12531 {0x37, 0x7, 0},
12532 {0x38, 0x66, 0},
12533 {0x39, 0x66, 0},
12534 {0x3A, 0x66, 0},
12535 {0x3B, 0x66, 0},
12536 {0x3C, 0xff, 0},
12537 {0x3D, 0xff, 0},
12538 {0x3E, 0xff, 0},
12539 {0x3F, 0xff, 0},
12540 {0x40, 0x16, 0},
12541 {0x41, 0x7, 0},
12542 {0x42, 0x19, 0},
12543 {0x43, 0x7, 0},
12544 {0x44, 0x6, 0},
12545 {0x45, 0x3, 0},
12546 {0x46, 0x1, 0},
12547 {0x47, 0x7, 0},
12548 {0x48, 0x33, 0},
12549 {0x49, 0x5, 0},
12550 {0x4A, 0x77, 0},
12551 {0x4B, 0x66, 0},
12552 {0x4C, 0x66, 0},
12553 {0x4D, 0, 0},
12554 {0x4E, 0x4, 0},
12555 {0x4F, 0xc, 0},
12556 {0x50, 0, 0},
12557 {0x51, 0x70, 1},
12558 {0x56, 0x7, 0},
12559 {0x57, 0, 0},
12560 {0x58, 0, 0},
12561 {0x59, 0x88, 1},
12562 {0x5A, 0, 0},
12563 {0x5B, 0x1f, 0},
12564 {0x5C, 0x20, 1},
12565 {0x5D, 0x1, 0},
12566 {0x5E, 0x30, 0},
12567 {0x5F, 0x70, 0},
12568 {0x60, 0, 0},
12569 {0x61, 0, 0},
12570 {0x62, 0x33, 1},
12571 {0x63, 0xf, 1},
12572 {0x64, 0x13, 1},
12573 {0x65, 0, 0},
12574 {0x66, 0xee, 1},
12575 {0x69, 0, 0},
12576 {0x6A, 0x7e, 0},
12577 {0x6B, 0x3f, 0},
12578 {0x6C, 0x7f, 0},
12579 {0x6D, 0x78, 0},
12580 {0x6E, 0x58, 1},
12581 {0x6F, 0x88, 0},
12582 {0x70, 0x8, 0},
12583 {0x71, 0xf, 0},
12584 {0x72, 0xbc, 0},
12585 {0x73, 0x8, 0},
12586 {0x74, 0x60, 0},
12587 {0x75, 0x13, 1},
12588 {0x76, 0x70, 0},
12589 {0x77, 0, 0},
12590 {0x78, 0, 0},
12591 {0x79, 0, 0},
12592 {0x7A, 0x33, 0},
12593 {0x7B, 0x13, 1},
12594 {0x7C, 0x14, 1},
12595 {0x7D, 0xee, 1},
12596 {0x80, 0x3c, 0},
12597 {0x81, 0x1, 1},
12598 {0x82, 0xa, 0},
12599 {0x83, 0x9d, 0},
12600 {0x84, 0xa, 0},
12601 {0x85, 0, 0},
12602 {0x86, 0x40, 0},
12603 {0x87, 0x40, 0},
12604 {0x88, 0x88, 0},
12605 {0x89, 0x10, 0},
12606 {0x8A, 0xf0, 0},
12607 {0x8B, 0x10, 0},
12608 {0x8C, 0xf0, 0},
12609 {0x8D, 0, 0},
12610 {0x8E, 0, 0},
12611 {0x8F, 0x10, 0},
12612 {0x90, 0x55, 0},
12613 {0x91, 0x3f, 1},
12614 {0x92, 0x36, 1},
12615 {0x93, 0, 0},
12616 {0x94, 0, 0},
12617 {0x95, 0, 0},
12618 {0x96, 0x87, 0},
12619 {0x97, 0x11, 0},
12620 {0x98, 0, 0},
12621 {0x99, 0x33, 0},
12622 {0x9A, 0x88, 0},
12623 {0x9B, 0, 0},
12624 {0x9C, 0x87, 0},
12625 {0x9D, 0x11, 0},
12626 {0x9E, 0, 0},
12627 {0x9F, 0x33, 0},
12628 {0xA0, 0x88, 0},
12629 {0xA1, 0x20, 1},
12630 {0xA2, 0x3f, 0},
12631 {0xA3, 0x44, 0},
12632 {0xA4, 0x8c, 0},
12633 {0xA5, 0x6c, 0},
12634 {0xA6, 0x22, 0},
12635 {0xA7, 0xbe, 0},
12636 {0xA8, 0x55, 0},
12637 {0xAA, 0xc, 0},
12638 {0xAB, 0xaa, 0},
12639 {0xAC, 0x2, 0},
12640 {0xAD, 0, 0},
12641 {0xAE, 0x10, 0},
12642 {0xAF, 0x1, 0},
12643 {0xB0, 0, 0},
12644 {0xB1, 0, 0},
12645 {0xB2, 0x80, 0},
12646 {0xB3, 0x60, 0},
12647 {0xB4, 0x44, 0},
12648 {0xB5, 0x55, 0},
12649 {0xB6, 0x1, 0},
12650 {0xB7, 0x55, 0},
12651 {0xB8, 0x1, 0},
12652 {0xB9, 0x5, 0},
12653 {0xBA, 0x55, 0},
12654 {0xBB, 0x55, 0},
12655 {0xC1, 0, 0},
12656 {0xC2, 0, 0},
12657 {0xC3, 0, 0},
12658 {0xC4, 0, 0},
12659 {0xC5, 0, 0},
12660 {0xC6, 0, 0},
12661 {0xC7, 0, 0},
12662 {0xC8, 0, 0},
12663 {0xC9, 0, 0},
12664 {0xCA, 0, 0},
12665 {0xCB, 0, 0},
12666 {0xCC, 0, 0},
12667 {0xCD, 0, 0},
12668 {0xCE, 0x5e, 0},
12669 {0xCF, 0xc, 0},
12670 {0xD0, 0xc, 0},
12671 {0xD1, 0xc, 0},
12672 {0xD2, 0, 0},
12673 {0xD3, 0x2b, 0},
12674 {0xD4, 0xc, 0},
12675 {0xD5, 0, 0},
12676 {0xD6, 0x70, 1},
12677 {0xDB, 0x7, 0},
12678 {0xDC, 0, 0},
12679 {0xDD, 0, 0},
12680 {0xDE, 0x88, 1},
12681 {0xDF, 0, 0},
12682 {0xE0, 0x1f, 0},
12683 {0xE1, 0x20, 1},
12684 {0xE2, 0x1, 0},
12685 {0xE3, 0x30, 0},
12686 {0xE4, 0x70, 0},
12687 {0xE5, 0, 0},
12688 {0xE6, 0, 0},
12689 {0xE7, 0x33, 0},
12690 {0xE8, 0xf, 1},
12691 {0xE9, 0x13, 1},
12692 {0xEA, 0, 0},
12693 {0xEB, 0xee, 1},
12694 {0xEE, 0, 0},
12695 {0xEF, 0x7e, 0},
12696 {0xF0, 0x3f, 0},
12697 {0xF1, 0x7f, 0},
12698 {0xF2, 0x78, 0},
12699 {0xF3, 0x58, 1},
12700 {0xF4, 0x88, 0},
12701 {0xF5, 0x8, 0},
12702 {0xF6, 0xf, 0},
12703 {0xF7, 0xbc, 0},
12704 {0xF8, 0x8, 0},
12705 {0xF9, 0x60, 0},
12706 {0xFA, 0x13, 1},
12707 {0xFB, 0x70, 0},
12708 {0xFC, 0, 0},
12709 {0xFD, 0, 0},
12710 {0xFE, 0, 0},
12711 {0xFF, 0x33, 0},
12712 {0x100, 0x13, 1},
12713 {0x101, 0x14, 1},
12714 {0x102, 0xee, 1},
12715 {0x105, 0x3c, 0},
12716 {0x106, 0x1, 1},
12717 {0x107, 0xa, 0},
12718 {0x108, 0x9d, 0},
12719 {0x109, 0xa, 0},
12720 {0x10A, 0, 0},
12721 {0x10B, 0x40, 0},
12722 {0x10C, 0x40, 0},
12723 {0x10D, 0x88, 0},
12724 {0x10E, 0x10, 0},
12725 {0x10F, 0xf0, 0},
12726 {0x110, 0x10, 0},
12727 {0x111, 0xf0, 0},
12728 {0x112, 0, 0},
12729 {0x113, 0, 0},
12730 {0x114, 0x10, 0},
12731 {0x115, 0x55, 0},
12732 {0x116, 0x3f, 1},
12733 {0x117, 0x36, 1},
12734 {0x118, 0, 0},
12735 {0x119, 0, 0},
12736 {0x11A, 0, 0},
12737 {0x11B, 0x87, 0},
12738 {0x11C, 0x11, 0},
12739 {0x11D, 0, 0},
12740 {0x11E, 0x33, 0},
12741 {0x11F, 0x88, 0},
12742 {0x120, 0, 0},
12743 {0x121, 0x87, 0},
12744 {0x122, 0x11, 0},
12745 {0x123, 0, 0},
12746 {0x124, 0x33, 0},
12747 {0x125, 0x88, 0},
12748 {0x126, 0x20, 1},
12749 {0x127, 0x3f, 0},
12750 {0x128, 0x44, 0},
12751 {0x129, 0x8c, 0},
12752 {0x12A, 0x6c, 0},
12753 {0x12B, 0x22, 0},
12754 {0x12C, 0xbe, 0},
12755 {0x12D, 0x55, 0},
12756 {0x12F, 0xc, 0},
12757 {0x130, 0xaa, 0},
12758 {0x131, 0x2, 0},
12759 {0x132, 0, 0},
12760 {0x133, 0x10, 0},
12761 {0x134, 0x1, 0},
12762 {0x135, 0, 0},
12763 {0x136, 0, 0},
12764 {0x137, 0x80, 0},
12765 {0x138, 0x60, 0},
12766 {0x139, 0x44, 0},
12767 {0x13A, 0x55, 0},
12768 {0x13B, 0x1, 0},
12769 {0x13C, 0x55, 0},
12770 {0x13D, 0x1, 0},
12771 {0x13E, 0x5, 0},
12772 {0x13F, 0x55, 0},
12773 {0x140, 0x55, 0},
12774 {0x146, 0, 0},
12775 {0x147, 0, 0},
12776 {0x148, 0, 0},
12777 {0x149, 0, 0},
12778 {0x14A, 0, 0},
12779 {0x14B, 0, 0},
12780 {0x14C, 0, 0},
12781 {0x14D, 0, 0},
12782 {0x14E, 0, 0},
12783 {0x14F, 0, 0},
12784 {0x150, 0, 0},
12785 {0x151, 0, 0},
12786 {0x154, 0xc, 0},
12787 {0x155, 0xc, 0},
12788 {0x156, 0xc, 0},
12789 {0x157, 0, 0},
12790 {0x158, 0x2b, 0},
12791 {0x159, 0x84, 0},
12792 {0x15A, 0x15, 0},
12793 {0x15B, 0xf, 0},
12794 {0x15C, 0, 0},
12795 {0x15D, 0, 0},
12796 {0x15E, 0, 1},
12797 {0x15F, 0, 1},
12798 {0x160, 0, 1},
12799 {0x161, 0, 1},
12800 {0x162, 0, 1},
12801 {0x163, 0, 1},
12802 {0x164, 0, 0},
12803 {0x165, 0, 0},
12804 {0x166, 0, 0},
12805 {0x167, 0, 0},
12806 {0x168, 0, 0},
12807 {0x169, 0, 0},
12808 {0x16A, 0, 1},
12809 {0x16B, 0, 1},
12810 {0x16C, 0, 1},
12811 {0x16D, 0, 0},
12812 {0x170, 0, 0},
12813 {0x171, 0x77, 0},
12814 {0x172, 0x77, 0},
12815 {0x173, 0x77, 0},
12816 {0x174, 0x77, 0},
12817 {0x175, 0, 0},
12818 {0x176, 0x3, 0},
12819 {0x177, 0x37, 0},
12820 {0x178, 0x3, 0},
12821 {0x179, 0, 0},
12822 {0x17A, 0x21, 0},
12823 {0x17B, 0x21, 0},
12824 {0x17C, 0, 0},
12825 {0x17D, 0xaa, 0},
12826 {0x17E, 0, 0},
12827 {0x17F, 0xaa, 0},
12828 {0x180, 0, 0},
12829 {0x190, 0, 0},
12830 {0x191, 0x77, 0},
12831 {0x192, 0x77, 0},
12832 {0x193, 0x77, 0},
12833 {0x194, 0x77, 0},
12834 {0x195, 0, 0},
12835 {0x196, 0x3, 0},
12836 {0x197, 0x37, 0},
12837 {0x198, 0x3, 0},
12838 {0x199, 0, 0},
12839 {0x19A, 0x21, 0},
12840 {0x19B, 0x21, 0},
12841 {0x19C, 0, 0},
12842 {0x19D, 0xaa, 0},
12843 {0x19E, 0, 0},
12844 {0x19F, 0xaa, 0},
12845 {0x1A0, 0, 0},
12846 {0x1A1, 0x2, 0},
12847 {0x1A2, 0xf, 0},
12848 {0x1A3, 0xf, 0},
12849 {0x1A4, 0, 1},
12850 {0x1A5, 0, 1},
12851 {0x1A6, 0, 1},
12852 {0x1A7, 0x2, 0},
12853 {0x1A8, 0xf, 0},
12854 {0x1A9, 0xf, 0},
12855 {0x1AA, 0, 1},
12856 {0x1AB, 0, 1},
12857 {0x1AC, 0, 1},
12858 {0x1AD, 0x84, 0},
12859 {0x1AE, 0x60, 0},
12860 {0x1AF, 0x47, 0},
12861 {0x1B0, 0x47, 0},
12862 {0x1B1, 0, 0},
12863 {0x1B2, 0, 0},
12864 {0x1B3, 0, 0},
12865 {0x1B4, 0, 0},
12866 {0x1B5, 0, 0},
12867 {0x1B6, 0, 0},
12868 {0x1B7, 0x5, 1},
12869 {0x1B8, 0, 0},
12870 {0x1B9, 0, 0},
12871 {0x1BA, 0, 0},
12872 {0x1BB, 0, 0},
12873 {0x1BC, 0, 0},
12874 {0x1BD, 0, 0},
12875 {0x1BE, 0, 0},
12876 {0x1BF, 0, 0},
12877 {0x1C0, 0, 0},
12878 {0x1C1, 0, 0},
12879 {0x1C2, 0xa0, 1},
12880 {0x1C3, 0, 0},
12881 {0x1C4, 0, 0},
12882 {0x1C5, 0, 0},
12883 {0x1C6, 0, 0},
12884 {0x1C7, 0, 0},
12885 {0x1C8, 0, 0},
12886 {0x1C9, 0, 0},
12887 {0x1CA, 0, 0},
12888 {0xFFFF, 0, 0}
12889 };
12890
12891 static struct radio_20xx_regs regs_2057_rev8[] = {
12892 {0x00, 0x8, 1},
12893 {0x01, 0x57, 1},
12894 {0x02, 0x20, 1},
12895 {0x03, 0x1f, 0},
12896 {0x04, 0x4, 0},
12897 {0x05, 0x2, 0},
12898 {0x06, 0x1, 0},
12899 {0x07, 0x1, 0},
12900 {0x08, 0x1, 0},
12901 {0x09, 0x69, 0},
12902 {0x0A, 0x66, 0},
12903 {0x0B, 0x6, 0},
12904 {0x0C, 0x18, 0},
12905 {0x0D, 0x3, 0},
12906 {0x0E, 0x20, 0},
12907 {0x0F, 0x20, 0},
12908 {0x10, 0, 0},
12909 {0x11, 0x7c, 0},
12910 {0x12, 0x42, 0},
12911 {0x13, 0xbd, 0},
12912 {0x14, 0x7, 0},
12913 {0x15, 0x87, 0},
12914 {0x16, 0x8, 0},
12915 {0x17, 0x17, 0},
12916 {0x18, 0x7, 0},
12917 {0x19, 0, 0},
12918 {0x1A, 0x2, 0},
12919 {0x1B, 0x13, 0},
12920 {0x1C, 0x3e, 0},
12921 {0x1D, 0x3e, 0},
12922 {0x1E, 0x96, 0},
12923 {0x1F, 0x4, 0},
12924 {0x20, 0, 0},
12925 {0x21, 0, 0},
12926 {0x22, 0x17, 0},
12927 {0x23, 0x6, 0},
12928 {0x24, 0x1, 0},
12929 {0x25, 0x6, 0},
12930 {0x26, 0x4, 0},
12931 {0x27, 0xd, 0},
12932 {0x28, 0xd, 0},
12933 {0x29, 0x30, 0},
12934 {0x2A, 0x32, 0},
12935 {0x2B, 0x8, 0},
12936 {0x2C, 0x1c, 0},
12937 {0x2D, 0x2, 0},
12938 {0x2E, 0x4, 0},
12939 {0x2F, 0x7f, 0},
12940 {0x30, 0x27, 0},
12941 {0x31, 0, 1},
12942 {0x32, 0, 1},
12943 {0x33, 0, 1},
12944 {0x34, 0, 0},
12945 {0x35, 0x20, 0},
12946 {0x36, 0x18, 0},
12947 {0x37, 0x7, 0},
12948 {0x38, 0x66, 0},
12949 {0x39, 0x66, 0},
12950 {0x3A, 0x66, 0},
12951 {0x3B, 0x66, 0},
12952 {0x3C, 0xff, 0},
12953 {0x3D, 0xff, 0},
12954 {0x3E, 0xff, 0},
12955 {0x3F, 0xff, 0},
12956 {0x40, 0x16, 0},
12957 {0x41, 0x7, 0},
12958 {0x42, 0x19, 0},
12959 {0x43, 0x7, 0},
12960 {0x44, 0x6, 0},
12961 {0x45, 0x3, 0},
12962 {0x46, 0x1, 0},
12963 {0x47, 0x7, 0},
12964 {0x48, 0x33, 0},
12965 {0x49, 0x5, 0},
12966 {0x4A, 0x77, 0},
12967 {0x4B, 0x66, 0},
12968 {0x4C, 0x66, 0},
12969 {0x4D, 0, 0},
12970 {0x4E, 0x4, 0},
12971 {0x4F, 0xc, 0},
12972 {0x50, 0, 0},
12973 {0x51, 0x70, 1},
12974 {0x56, 0x7, 0},
12975 {0x57, 0, 0},
12976 {0x58, 0, 0},
12977 {0x59, 0x88, 1},
12978 {0x5A, 0, 0},
12979 {0x5B, 0x1f, 0},
12980 {0x5C, 0x20, 1},
12981 {0x5D, 0x1, 0},
12982 {0x5E, 0x30, 0},
12983 {0x5F, 0x70, 0},
12984 {0x60, 0, 0},
12985 {0x61, 0, 0},
12986 {0x62, 0x33, 1},
12987 {0x63, 0xf, 1},
12988 {0x64, 0xf, 1},
12989 {0x65, 0, 0},
12990 {0x66, 0x11, 0},
12991 {0x69, 0, 0},
12992 {0x6A, 0x7e, 0},
12993 {0x6B, 0x3f, 0},
12994 {0x6C, 0x7f, 0},
12995 {0x6D, 0x78, 0},
12996 {0x6E, 0x58, 1},
12997 {0x6F, 0x88, 0},
12998 {0x70, 0x8, 0},
12999 {0x71, 0xf, 0},
13000 {0x72, 0xbc, 0},
13001 {0x73, 0x8, 0},
13002 {0x74, 0x60, 0},
13003 {0x75, 0x13, 1},
13004 {0x76, 0x70, 0},
13005 {0x77, 0, 0},
13006 {0x78, 0, 0},
13007 {0x79, 0, 0},
13008 {0x7A, 0x33, 0},
13009 {0x7B, 0x13, 1},
13010 {0x7C, 0xf, 1},
13011 {0x7D, 0xee, 1},
13012 {0x80, 0x3c, 0},
13013 {0x81, 0x1, 1},
13014 {0x82, 0xa, 0},
13015 {0x83, 0x9d, 0},
13016 {0x84, 0xa, 0},
13017 {0x85, 0, 0},
13018 {0x86, 0x40, 0},
13019 {0x87, 0x40, 0},
13020 {0x88, 0x88, 0},
13021 {0x89, 0x10, 0},
13022 {0x8A, 0xf0, 0},
13023 {0x8B, 0x10, 0},
13024 {0x8C, 0xf0, 0},
13025 {0x8D, 0, 0},
13026 {0x8E, 0, 0},
13027 {0x8F, 0x10, 0},
13028 {0x90, 0x55, 0},
13029 {0x91, 0x3f, 1},
13030 {0x92, 0x36, 1},
13031 {0x93, 0, 0},
13032 {0x94, 0, 0},
13033 {0x95, 0, 0},
13034 {0x96, 0x87, 0},
13035 {0x97, 0x11, 0},
13036 {0x98, 0, 0},
13037 {0x99, 0x33, 0},
13038 {0x9A, 0x88, 0},
13039 {0x9B, 0, 0},
13040 {0x9C, 0x87, 0},
13041 {0x9D, 0x11, 0},
13042 {0x9E, 0, 0},
13043 {0x9F, 0x33, 0},
13044 {0xA0, 0x88, 0},
13045 {0xA1, 0x20, 1},
13046 {0xA2, 0x3f, 0},
13047 {0xA3, 0x44, 0},
13048 {0xA4, 0x8c, 0},
13049 {0xA5, 0x6c, 0},
13050 {0xA6, 0x22, 0},
13051 {0xA7, 0xbe, 0},
13052 {0xA8, 0x55, 0},
13053 {0xAA, 0xc, 0},
13054 {0xAB, 0xaa, 0},
13055 {0xAC, 0x2, 0},
13056 {0xAD, 0, 0},
13057 {0xAE, 0x10, 0},
13058 {0xAF, 0x1, 0},
13059 {0xB0, 0, 0},
13060 {0xB1, 0, 0},
13061 {0xB2, 0x80, 0},
13062 {0xB3, 0x60, 0},
13063 {0xB4, 0x44, 0},
13064 {0xB5, 0x55, 0},
13065 {0xB6, 0x1, 0},
13066 {0xB7, 0x55, 0},
13067 {0xB8, 0x1, 0},
13068 {0xB9, 0x5, 0},
13069 {0xBA, 0x55, 0},
13070 {0xBB, 0x55, 0},
13071 {0xC1, 0, 0},
13072 {0xC2, 0, 0},
13073 {0xC3, 0, 0},
13074 {0xC4, 0, 0},
13075 {0xC5, 0, 0},
13076 {0xC6, 0, 0},
13077 {0xC7, 0, 0},
13078 {0xC8, 0, 0},
13079 {0xC9, 0x1, 1},
13080 {0xCA, 0, 0},
13081 {0xCB, 0, 0},
13082 {0xCC, 0, 0},
13083 {0xCD, 0, 0},
13084 {0xCE, 0x5e, 0},
13085 {0xCF, 0xc, 0},
13086 {0xD0, 0xc, 0},
13087 {0xD1, 0xc, 0},
13088 {0xD2, 0, 0},
13089 {0xD3, 0x2b, 0},
13090 {0xD4, 0xc, 0},
13091 {0xD5, 0, 0},
13092 {0xD6, 0x70, 1},
13093 {0xDB, 0x7, 0},
13094 {0xDC, 0, 0},
13095 {0xDD, 0, 0},
13096 {0xDE, 0x88, 1},
13097 {0xDF, 0, 0},
13098 {0xE0, 0x1f, 0},
13099 {0xE1, 0x20, 1},
13100 {0xE2, 0x1, 0},
13101 {0xE3, 0x30, 0},
13102 {0xE4, 0x70, 0},
13103 {0xE5, 0, 0},
13104 {0xE6, 0, 0},
13105 {0xE7, 0x33, 0},
13106 {0xE8, 0xf, 1},
13107 {0xE9, 0xf, 1},
13108 {0xEA, 0, 0},
13109 {0xEB, 0x11, 0},
13110 {0xEE, 0, 0},
13111 {0xEF, 0x7e, 0},
13112 {0xF0, 0x3f, 0},
13113 {0xF1, 0x7f, 0},
13114 {0xF2, 0x78, 0},
13115 {0xF3, 0x58, 1},
13116 {0xF4, 0x88, 0},
13117 {0xF5, 0x8, 0},
13118 {0xF6, 0xf, 0},
13119 {0xF7, 0xbc, 0},
13120 {0xF8, 0x8, 0},
13121 {0xF9, 0x60, 0},
13122 {0xFA, 0x13, 1},
13123 {0xFB, 0x70, 0},
13124 {0xFC, 0, 0},
13125 {0xFD, 0, 0},
13126 {0xFE, 0, 0},
13127 {0xFF, 0x33, 0},
13128 {0x100, 0x13, 1},
13129 {0x101, 0xf, 1},
13130 {0x102, 0xee, 1},
13131 {0x105, 0x3c, 0},
13132 {0x106, 0x1, 1},
13133 {0x107, 0xa, 0},
13134 {0x108, 0x9d, 0},
13135 {0x109, 0xa, 0},
13136 {0x10A, 0, 0},
13137 {0x10B, 0x40, 0},
13138 {0x10C, 0x40, 0},
13139 {0x10D, 0x88, 0},
13140 {0x10E, 0x10, 0},
13141 {0x10F, 0xf0, 0},
13142 {0x110, 0x10, 0},
13143 {0x111, 0xf0, 0},
13144 {0x112, 0, 0},
13145 {0x113, 0, 0},
13146 {0x114, 0x10, 0},
13147 {0x115, 0x55, 0},
13148 {0x116, 0x3f, 1},
13149 {0x117, 0x36, 1},
13150 {0x118, 0, 0},
13151 {0x119, 0, 0},
13152 {0x11A, 0, 0},
13153 {0x11B, 0x87, 0},
13154 {0x11C, 0x11, 0},
13155 {0x11D, 0, 0},
13156 {0x11E, 0x33, 0},
13157 {0x11F, 0x88, 0},
13158 {0x120, 0, 0},
13159 {0x121, 0x87, 0},
13160 {0x122, 0x11, 0},
13161 {0x123, 0, 0},
13162 {0x124, 0x33, 0},
13163 {0x125, 0x88, 0},
13164 {0x126, 0x20, 1},
13165 {0x127, 0x3f, 0},
13166 {0x128, 0x44, 0},
13167 {0x129, 0x8c, 0},
13168 {0x12A, 0x6c, 0},
13169 {0x12B, 0x22, 0},
13170 {0x12C, 0xbe, 0},
13171 {0x12D, 0x55, 0},
13172 {0x12F, 0xc, 0},
13173 {0x130, 0xaa, 0},
13174 {0x131, 0x2, 0},
13175 {0x132, 0, 0},
13176 {0x133, 0x10, 0},
13177 {0x134, 0x1, 0},
13178 {0x135, 0, 0},
13179 {0x136, 0, 0},
13180 {0x137, 0x80, 0},
13181 {0x138, 0x60, 0},
13182 {0x139, 0x44, 0},
13183 {0x13A, 0x55, 0},
13184 {0x13B, 0x1, 0},
13185 {0x13C, 0x55, 0},
13186 {0x13D, 0x1, 0},
13187 {0x13E, 0x5, 0},
13188 {0x13F, 0x55, 0},
13189 {0x140, 0x55, 0},
13190 {0x146, 0, 0},
13191 {0x147, 0, 0},
13192 {0x148, 0, 0},
13193 {0x149, 0, 0},
13194 {0x14A, 0, 0},
13195 {0x14B, 0, 0},
13196 {0x14C, 0, 0},
13197 {0x14D, 0, 0},
13198 {0x14E, 0x1, 1},
13199 {0x14F, 0, 0},
13200 {0x150, 0, 0},
13201 {0x151, 0, 0},
13202 {0x154, 0xc, 0},
13203 {0x155, 0xc, 0},
13204 {0x156, 0xc, 0},
13205 {0x157, 0, 0},
13206 {0x158, 0x2b, 0},
13207 {0x159, 0x84, 0},
13208 {0x15A, 0x15, 0},
13209 {0x15B, 0xf, 0},
13210 {0x15C, 0, 0},
13211 {0x15D, 0, 0},
13212 {0x15E, 0, 1},
13213 {0x15F, 0, 1},
13214 {0x160, 0, 1},
13215 {0x161, 0, 1},
13216 {0x162, 0, 1},
13217 {0x163, 0, 1},
13218 {0x164, 0, 0},
13219 {0x165, 0, 0},
13220 {0x166, 0, 0},
13221 {0x167, 0, 0},
13222 {0x168, 0, 0},
13223 {0x169, 0, 0},
13224 {0x16A, 0, 1},
13225 {0x16B, 0, 1},
13226 {0x16C, 0, 1},
13227 {0x16D, 0, 0},
13228 {0x170, 0, 0},
13229 {0x171, 0x77, 0},
13230 {0x172, 0x77, 0},
13231 {0x173, 0x77, 0},
13232 {0x174, 0x77, 0},
13233 {0x175, 0, 0},
13234 {0x176, 0x3, 0},
13235 {0x177, 0x37, 0},
13236 {0x178, 0x3, 0},
13237 {0x179, 0, 0},
13238 {0x17A, 0x21, 0},
13239 {0x17B, 0x21, 0},
13240 {0x17C, 0, 0},
13241 {0x17D, 0xaa, 0},
13242 {0x17E, 0, 0},
13243 {0x17F, 0xaa, 0},
13244 {0x180, 0, 0},
13245 {0x190, 0, 0},
13246 {0x191, 0x77, 0},
13247 {0x192, 0x77, 0},
13248 {0x193, 0x77, 0},
13249 {0x194, 0x77, 0},
13250 {0x195, 0, 0},
13251 {0x196, 0x3, 0},
13252 {0x197, 0x37, 0},
13253 {0x198, 0x3, 0},
13254 {0x199, 0, 0},
13255 {0x19A, 0x21, 0},
13256 {0x19B, 0x21, 0},
13257 {0x19C, 0, 0},
13258 {0x19D, 0xaa, 0},
13259 {0x19E, 0, 0},
13260 {0x19F, 0xaa, 0},
13261 {0x1A0, 0, 0},
13262 {0x1A1, 0x2, 0},
13263 {0x1A2, 0xf, 0},
13264 {0x1A3, 0xf, 0},
13265 {0x1A4, 0, 1},
13266 {0x1A5, 0, 1},
13267 {0x1A6, 0, 1},
13268 {0x1A7, 0x2, 0},
13269 {0x1A8, 0xf, 0},
13270 {0x1A9, 0xf, 0},
13271 {0x1AA, 0, 1},
13272 {0x1AB, 0, 1},
13273 {0x1AC, 0, 1},
13274 {0x1AD, 0x84, 0},
13275 {0x1AE, 0x60, 0},
13276 {0x1AF, 0x47, 0},
13277 {0x1B0, 0x47, 0},
13278 {0x1B1, 0, 0},
13279 {0x1B2, 0, 0},
13280 {0x1B3, 0, 0},
13281 {0x1B4, 0, 0},
13282 {0x1B5, 0, 0},
13283 {0x1B6, 0, 0},
13284 {0x1B7, 0x5, 1},
13285 {0x1B8, 0, 0},
13286 {0x1B9, 0, 0},
13287 {0x1BA, 0, 0},
13288 {0x1BB, 0, 0},
13289 {0x1BC, 0, 0},
13290 {0x1BD, 0, 0},
13291 {0x1BE, 0, 0},
13292 {0x1BF, 0, 0},
13293 {0x1C0, 0, 0},
13294 {0x1C1, 0, 0},
13295 {0x1C2, 0xa0, 1},
13296 {0x1C3, 0, 0},
13297 {0x1C4, 0, 0},
13298 {0x1C5, 0, 0},
13299 {0x1C6, 0, 0},
13300 {0x1C7, 0, 0},
13301 {0x1C8, 0, 0},
13302 {0x1C9, 0, 0},
13303 {0x1CA, 0, 0},
13304 {0xFFFF, 0, 0}
13305 };
13306
13307 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13308
13309 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13310 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13311
13312 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13313 {
13314 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13315 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13316 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13317 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13318 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13319 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13320 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13321 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13322 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13323 },
13324 {
13325 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13326 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13327 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13328 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13329 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13330 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13331 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13332 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13333 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13334 }
13335 };
13336
13337 static const u32 nphy_tpc_txgain[] = {
13338 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13339 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13340 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13341 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13342 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13343 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13344 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13345 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13346 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13347 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13348 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13349 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13350 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13351 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13352 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13353 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13354 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13355 0x03902942, 0x03902844, 0x03902842, 0x03902744,
13356 0x03902742, 0x03902644, 0x03902642, 0x03902544,
13357 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13358 0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13359 0x03802842, 0x03802744, 0x03802742, 0x03802644,
13360 0x03802642, 0x03802544, 0x03802542, 0x03802444,
13361 0x03802442, 0x03802344, 0x03802342, 0x03802244,
13362 0x03802242, 0x03802144, 0x03802142, 0x03802044,
13363 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13364 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13365 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13366 0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13367 0x03801842, 0x03801744, 0x03801742, 0x03801644,
13368 0x03801642, 0x03801544, 0x03801542, 0x03801444,
13369 0x03801442, 0x03801344, 0x03801342, 0x00002b00
13370 };
13371
13372 static const u16 nphy_tpc_loscale[] = {
13373 256, 256, 271, 271, 287, 256, 256, 271,
13374 271, 287, 287, 304, 304, 256, 256, 271,
13375 271, 287, 287, 304, 304, 322, 322, 341,
13376 341, 362, 362, 383, 383, 256, 256, 271,
13377 271, 287, 287, 304, 304, 322, 322, 256,
13378 256, 271, 271, 287, 287, 304, 304, 322,
13379 322, 341, 341, 362, 362, 256, 256, 271,
13380 271, 287, 287, 304, 304, 322, 322, 256,
13381 256, 271, 271, 287, 287, 304, 304, 322,
13382 322, 341, 341, 362, 362, 256, 256, 271,
13383 271, 287, 287, 304, 304, 322, 322, 341,
13384 341, 362, 362, 383, 383, 406, 406, 430,
13385 430, 455, 455, 482, 482, 511, 511, 541,
13386 541, 573, 573, 607, 607, 643, 643, 681,
13387 681, 722, 722, 764, 764, 810, 810, 858,
13388 858, 908, 908, 962, 962, 1019, 1019, 256
13389 };
13390
13391 static u32 nphy_tpc_txgain_ipa[] = {
13392 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13393 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13394 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13395 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13396 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13397 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13398 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13399 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13400 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13401 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13402 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13403 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13404 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13405 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13406 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13407 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13408 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13409 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13410 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13411 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13412 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13413 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13414 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13415 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13416 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13417 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13418 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13419 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13420 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13421 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13422 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13423 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13424 };
13425
13426 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13427 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13428 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13429 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13430 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13431 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13432 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13433 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13434 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13435 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13436 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13437 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13438 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13439 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13440 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13441 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13442 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13443 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13444 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13445 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13446 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13447 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13448 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13449 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13450 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13451 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13452 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13453 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13454 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13455 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13456 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13457 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13458 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13459 };
13460
13461 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13462 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13463 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13464 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13465 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13466 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13467 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13468 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13469 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13470 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13471 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13472 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13473 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13474 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13475 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13476 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13477 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13478 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13479 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13480 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13481 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13482 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13483 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13484 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13485 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13486 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13487 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13488 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13489 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13490 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13491 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13492 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13493 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13494 };
13495
13496 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13497 0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13498 0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13499 0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13500 0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13501 0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13502 0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13503 0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13504 0x70470028, 0x70470026, 0x70470024, 0x70470022,
13505 0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13506 0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13507 0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13508 0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13509 0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13510 0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13511 0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13512 0x70170019, 0x70170018, 0x70170016, 0x70170015,
13513 0x70170014, 0x70170013, 0x70170012, 0x70170010,
13514 0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13515 0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13516 0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13517 0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13518 0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13519 0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13520 0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13521 0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13522 0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13523 0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13524 0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13525 0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13526 0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13527 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13528 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13529 };
13530
13531 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13532 0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13533 0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13534 0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13535 0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13536 0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13537 0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13538 0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13539 0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13540 0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13541 0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13542 0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13543 0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13544 0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13545 0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13546 0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13547 0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13548 0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13549 0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13550 0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13551 0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13552 0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13553 0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13554 0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13555 0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13556 0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13557 0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13558 0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13559 0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13560 0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13561 0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13562 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13563 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13564 };
13565
13566 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13567 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13568 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13569 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13570 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13571 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13572 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13573 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13574 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13575 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13576 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13577 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13578 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13579 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13580 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13581 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13582 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13583 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13584 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13585 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13586 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13587 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13588 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13589 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13590 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13591 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13592 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13593 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
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 };
13600
13601 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13602 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13603 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13604 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13605 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13606 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13607 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13608 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13609 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13610 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13611 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13612 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13613 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13614 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13615 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13616 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13617 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13618 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13619 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13620 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13621 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13622 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13623 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13624 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13625 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13626 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13627 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13628 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
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 };
13635
13636 static u32 nphy_tpc_txgain_ipa_5g[] = {
13637 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13638 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13639 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13640 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13641 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13642 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13643 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13644 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13645 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13646 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13647 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13648 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13649 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13650 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13651 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13652 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13653 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13654 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13655 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13656 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13657 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13658 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13659 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13660 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13661 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13662 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13663 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13664 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13665 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13666 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13667 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13668 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13669 };
13670
13671 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13672 0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13673 0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13674 0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13675 0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13676 0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13677 0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13678 0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13679 0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13680 0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13681 0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13682 0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13683 0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13684 0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13685 0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13686 0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13687 0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13688 0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13689 0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13690 0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13691 0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13692 0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13693 0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13694 0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13695 0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13696 0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13697 0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13698 0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13699 0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13700 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13701 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13702 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13703 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13704 };
13705
13706 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13707 0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13708 0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13709 0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13710 0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13711 0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13712 0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13713 0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13714 0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13715 0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13716 0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13717 0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13718 0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13719 0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13720 0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13721 0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13722 0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13723 0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13724 0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13725 0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13726 0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13727 0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13728 0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13729 0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13730 0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13731 0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13732 0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13733 0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13734 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13735 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13736 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13737 0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13738 0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13739 };
13740
13741 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13742 -114, -108, -98, -91, -84, -78, -70, -62,
13743 -54, -46, -39, -31, -23, -15, -8, 0
13744 };
13745
13746 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13747 -100, -95, -89, -83, -77, -70, -63, -56,
13748 -48, -41, -33, -25, -19, -12, -6, 0
13749 };
13750
13751 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13752 -159, -113, -86, -72, -62, -54, -48, -43,
13753 -39, -35, -31, -28, -25, -23, -20, -18,
13754 -17, -15, -13, -11, -10, -8, -7, -6,
13755 -5, -4, -3, -3, -2, -1, -1, 0
13756 };
13757
13758 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13759 -109, -109, -82, -68, -58, -50, -44, -39,
13760 -35, -31, -28, -26, -23, -21, -19, -17,
13761 -16, -14, -13, -11, -10, -9, -8, -7,
13762 -5, -5, -4, -3, -2, -1, -1, 0
13763 };
13764
13765 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13766 -122, -122, -95, -80, -69, -61, -54, -49,
13767 -43, -39, -35, -32, -28, -26, -23, -21,
13768 -18, -16, -15, -13, -11, -10, -8, -7,
13769 -6, -5, -4, -3, -2, -1, -1, 0
13770 };
13771
13772 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13773 -107, -101, -92, -85, -78, -71, -62, -55,
13774 -47, -39, -32, -24, -19, -12, -6, 0
13775 };
13776
13777 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13778 -110, -104, -95, -88, -81, -74, -66, -58,
13779 -50, -44, -36, -28, -23, -15, -8, 0
13780 };
13781
13782 static u8 pad_gain_codes_used_2057rev5[] = {
13783 20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13784 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13785 };
13786
13787 static u8 pad_gain_codes_used_2057rev7[] = {
13788 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13789 5, 4, 3, 2, 1
13790 };
13791
13792 static u8 pad_all_gain_codes_2057[] = {
13793 31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13794 21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13795 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13796 1, 0
13797 };
13798
13799 static u8 pga_all_gain_codes_2057[] = {
13800 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13801 };
13802
13803 static u32 nphy_papd_scaltbl[] = {
13804 0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13805 0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13806 0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13807 0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13808 0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13809 0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13810 0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13811 0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13812 0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13813 0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13814 0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13815 0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13816 0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13817 0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13818 0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13819 0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13820 };
13821
13822 static u32 nphy_tpc_txgain_rev3[] = {
13823 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13824 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13825 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13826 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13827 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13828 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13829 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13830 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13831 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13832 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13833 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13834 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13835 0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13836 0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13837 0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13838 0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13839 0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13840 0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13841 0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13842 0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13843 0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13844 0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13845 0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13846 0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13847 0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13848 0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13849 0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13850 0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13851 0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13852 0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13853 0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13854 0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13855 };
13856
13857 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13858 0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13859 0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13860 0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13861 0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13862 0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13863 0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13864 0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13865 0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13866 0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13867 0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13868 0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13869 0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13870 0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13871 0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13872 0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13873 0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13874 0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13875 0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13876 0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13877 0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13878 0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13879 0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13880 0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13881 0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13882 0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13883 0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13884 0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13885 0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13886 0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13887 0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13888 0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13889 0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13890 };
13891
13892 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13893 0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13894 0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13895 0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13896 0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13897 0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13898 0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13899 0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13900 0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13901 0x80290031, 0x80210039, 0x80210036, 0x80210033,
13902 0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13903 0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13904 0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13905 0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13906 0x80110027, 0x80110024, 0x80110022, 0x80110020,
13907 0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13908 0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13909 0x80090029, 0x80090027, 0x80090025, 0x80090023,
13910 0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13911 0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13912 0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13913 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13914 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13915 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13916 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13917 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13918 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13919 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13920 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13921 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13922 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13924 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13925 };
13926
13927 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13928 0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13929 0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13930 0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13931 0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13932 0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13933 0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13934 0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13935 0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13936 0x10290031, 0x10210039, 0x10210036, 0x10210033,
13937 0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13938 0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13939 0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13940 0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13941 0x10110027, 0x10110024, 0x10110022, 0x10110020,
13942 0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13943 0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13944 0x10090029, 0x10090027, 0x10090025, 0x10090023,
13945 0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13946 0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13947 0x10090015, 0x10090013, 0x10090012, 0x10090011,
13948 0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13949 0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13950 0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13951 0x10090008, 0x10090008, 0x10090007, 0x10090007,
13952 0x10090007, 0x10090006, 0x10090006, 0x10090005,
13953 0x10090005, 0x10090005, 0x10090005, 0x10090004,
13954 0x10090004, 0x10090004, 0x10090004, 0x10090003,
13955 0x10090003, 0x10090003, 0x10090003, 0x10090003,
13956 0x10090003, 0x10090002, 0x10090002, 0x10090002,
13957 0x10090002, 0x10090002, 0x10090002, 0x10090002,
13958 0x10090002, 0x10090002, 0x10090001, 0x10090001,
13959 0x10090001, 0x10090001, 0x10090001, 0x10090001
13960 };
13961
13962 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13963 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13964 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13965 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13966 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13967 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13968 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13969 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13970 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13971 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13972 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13973 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13974 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13975 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13976 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13977 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13978 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13979 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13980 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13981 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13982 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13983 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13984 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13985 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13986 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13987 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13988 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13989 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13990 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13991 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13992 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13993 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
13994 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
13995 };
13996
13997 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
13998 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
13999 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14000 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14001 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14002 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14003 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14004 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14005 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14006 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14007 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14008 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14009 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14010 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14011 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14012 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14013 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14014 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14015 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14016 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14017 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14018 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14019 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14020 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14021 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14022 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14023 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14024 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14025 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14026 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14027 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14028 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14029 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14030 };
14031
14032 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14033 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14034 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14035 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14036 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14037 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14038 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14039 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14040 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14041 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14042 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14043 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14044 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14045 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14046 0x09620039, 0x09620037, 0x09620035, 0x09620033,
14047 0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14048 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14049 0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14050 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14051 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14052 0x06620039, 0x06620037, 0x06620035, 0x06620033,
14053 0x05620046, 0x05620044, 0x05620042, 0x05620040,
14054 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14055 0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14056 0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14057 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14058 0x03620038, 0x03620037, 0x03620035, 0x03620033,
14059 0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14060 0x02620046, 0x02620044, 0x02620043, 0x02620042,
14061 0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14062 0x01620043, 0x01620042, 0x01620041, 0x01620040,
14063 0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14064 0x0062003b, 0x00620039, 0x00620037, 0x00620035
14065 };
14066
14067 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14068 0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14069 0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14070 0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14071 0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14072 0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14073 0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14074 0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14075 0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14076 0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14077 0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14078 0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14079 0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14080 0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14081 0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14082 0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14083 0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14084 0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14085 0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14086 0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14087 0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14088 0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14089 0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14090 0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14091 0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14092 0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14093 0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14094 0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14095 0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14096 0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14097 0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14098 0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14099 0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14100 };
14101
14102 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14103 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14104 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14105 0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14106 };
14107 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14108 0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14109 };
14110
wlc_phy_bist_check_phy(struct brcms_phy_pub * pih)14111 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14112 {
14113 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
14114 u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14115
14116 if (NREV_GE(pi->pubpi.phy_rev, 16))
14117 return true;
14118
14119 phybist0 = read_phy_reg(pi, 0x0e);
14120 phybist1 = read_phy_reg(pi, 0x0f);
14121 phybist2 = read_phy_reg(pi, 0xea);
14122 phybist3 = read_phy_reg(pi, 0xeb);
14123 phybist4 = read_phy_reg(pi, 0x156);
14124
14125 if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14126 (phybist3 == 0) && (phybist4 == 0))
14127 return true;
14128
14129 return false;
14130 }
14131
wlc_phy_bphy_init_nphy(struct brcms_phy * pi)14132 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14133 {
14134 u16 addr, val;
14135
14136 val = 0x1e1f;
14137 for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14138 addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14139 write_phy_reg(pi, addr, val);
14140 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14141 val = 0x3e3f;
14142 else
14143 val -= 0x0202;
14144 }
14145
14146 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14147 }
14148
14149 void
wlc_phy_table_write_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,const void * data)14150 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14151 u32 width, const void *data)
14152 {
14153 struct phytbl_info tbl;
14154
14155 tbl.tbl_id = id;
14156 tbl.tbl_len = len;
14157 tbl.tbl_offset = offset;
14158 tbl.tbl_width = width;
14159 tbl.tbl_ptr = data;
14160 wlc_phy_write_table_nphy(pi, &tbl);
14161 }
14162
14163 void
wlc_phy_table_read_nphy(struct brcms_phy * pi,u32 id,u32 len,u32 offset,u32 width,void * data)14164 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14165 u32 width, void *data)
14166 {
14167 struct phytbl_info tbl;
14168
14169 tbl.tbl_id = id;
14170 tbl.tbl_len = len;
14171 tbl.tbl_offset = offset;
14172 tbl.tbl_width = width;
14173 tbl.tbl_ptr = data;
14174 wlc_phy_read_table_nphy(pi, &tbl);
14175 }
14176
14177 static void
wlc_phy_static_table_download_nphy(struct brcms_phy * pi)14178 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14179 {
14180 uint idx;
14181
14182 if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14183 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14184 wlc_phy_write_table_nphy(pi,
14185 &mimophytbl_info_rev16[idx]);
14186 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14187 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14188 wlc_phy_write_table_nphy(pi,
14189 &mimophytbl_info_rev7[idx]);
14190 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14191 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14192 wlc_phy_write_table_nphy(pi,
14193 &mimophytbl_info_rev3[idx]);
14194 } else {
14195 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14196 wlc_phy_write_table_nphy(pi,
14197 &mimophytbl_info_rev0[idx]);
14198 }
14199 }
14200
wlc_phy_tbl_init_nphy(struct brcms_phy * pi)14201 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14202 {
14203 uint idx = 0;
14204 u8 antswctrllut;
14205
14206 if (pi->phy_init_por)
14207 wlc_phy_static_table_download_nphy(pi);
14208
14209 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14210
14211 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14212 pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14213 antswctrllut;
14214
14215 switch (antswctrllut) {
14216 case 0:
14217
14218 break;
14219
14220 case 1:
14221
14222 if (pi->aa2g == 7)
14223 wlc_phy_table_write_nphy(
14224 pi,
14225 NPHY_TBL_ID_ANTSWCTRLLUT,
14226 2, 0x21, 8,
14227 &ant_sw_ctrl_tbl_rev8_2o3[0]);
14228 else
14229 wlc_phy_table_write_nphy(
14230 pi,
14231 NPHY_TBL_ID_ANTSWCTRLLUT,
14232 2, 0x21, 8,
14233 &ant_sw_ctrl_tbl_rev8
14234 [0]);
14235
14236 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14237 2, 0x25, 8,
14238 &ant_sw_ctrl_tbl_rev8[2]);
14239 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14240 2, 0x29, 8,
14241 &ant_sw_ctrl_tbl_rev8[4]);
14242 break;
14243
14244 case 2:
14245
14246 wlc_phy_table_write_nphy(
14247 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248 2, 0x1, 8,
14249 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14250 wlc_phy_table_write_nphy(
14251 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14252 2, 0x5, 8,
14253 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14254 wlc_phy_table_write_nphy(
14255 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14256 2, 0x9, 8,
14257 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14258
14259 wlc_phy_table_write_nphy(
14260 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14261 2, 0x21, 8,
14262 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14263 wlc_phy_table_write_nphy(
14264 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14265 2, 0x25, 8,
14266 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14267 wlc_phy_table_write_nphy(
14268 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14269 2, 0x29, 8,
14270 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14271 break;
14272
14273 default:
14274 break;
14275 }
14276
14277 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14278 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14279
14280 if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14281 antswctrllut =
14282 CHSPEC_IS2G(pi->radio_chanspec) ?
14283 pi->srom_fem2g.antswctrllut :
14284 pi->srom_fem5g.antswctrllut;
14285 switch (antswctrllut) {
14286 case 0:
14287 wlc_phy_write_table_nphy(
14288 pi,
14289 &mimophytbl_info_rev3_volatile
14290 [idx]);
14291 break;
14292 case 1:
14293 wlc_phy_write_table_nphy(
14294 pi,
14295 &mimophytbl_info_rev3_volatile1
14296 [idx]);
14297 break;
14298 case 2:
14299 wlc_phy_write_table_nphy(
14300 pi,
14301 &mimophytbl_info_rev3_volatile2
14302 [idx]);
14303 break;
14304 case 3:
14305 wlc_phy_write_table_nphy(
14306 pi,
14307 &mimophytbl_info_rev3_volatile3
14308 [idx]);
14309 break;
14310 default:
14311 break;
14312 }
14313 } else {
14314 wlc_phy_write_table_nphy(
14315 pi,
14316 &mimophytbl_info_rev3_volatile[idx]);
14317 }
14318 }
14319 } else {
14320 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14321 wlc_phy_write_table_nphy(pi,
14322 &mimophytbl_info_rev0_volatile
14323 [idx]);
14324 }
14325 }
14326
14327 static void
wlc_phy_write_txmacreg_nphy(struct brcms_phy * pi,u16 holdoff,u16 delay)14328 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14329 {
14330 write_phy_reg(pi, 0x77, holdoff);
14331 write_phy_reg(pi, 0xb4, delay);
14332 }
14333
wlc_phy_nphy_tkip_rifs_war(struct brcms_phy * pi,u8 rifs)14334 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14335 {
14336 u16 holdoff, delay;
14337
14338 if (rifs) {
14339
14340 holdoff = 0x10;
14341 delay = 0x258;
14342 } else {
14343
14344 holdoff = 0x15;
14345 delay = 0x320;
14346 }
14347
14348 wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14349
14350 if (pi->sh && (pi->sh->_rifs_phy != rifs))
14351 pi->sh->_rifs_phy = rifs;
14352 }
14353
wlc_phy_txpwrctrl_config_nphy(struct brcms_phy * pi)14354 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14355 {
14356
14357 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14358 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14359 pi->phy_5g_pwrgain = true;
14360 return;
14361 }
14362
14363 pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14364 pi->phy_5g_pwrgain = false;
14365
14366 if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14367 NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14368 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14369 else if ((pi->sh->sromrev >= 4)
14370 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14371 pi->phy_5g_pwrgain = true;
14372 }
14373
wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy * pi)14374 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14375 {
14376 u16 bw40po, cddpo, stbcpo, bwduppo;
14377 uint band_num;
14378 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14379
14380 if (pi->sh->sromrev >= 9)
14381 return;
14382
14383 bw40po = sprom->bw40po;
14384 pi->bw402gpo = bw40po & 0xf;
14385 pi->bw405gpo = (bw40po & 0xf0) >> 4;
14386 pi->bw405glpo = (bw40po & 0xf00) >> 8;
14387 pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14388
14389 cddpo = sprom->cddpo;
14390 pi->cdd2gpo = cddpo & 0xf;
14391 pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14392 pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14393 pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14394
14395 stbcpo = sprom->stbcpo;
14396 pi->stbc2gpo = stbcpo & 0xf;
14397 pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14398 pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14399 pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14400
14401 bwduppo = sprom->bwduppo;
14402 pi->bwdup2gpo = bwduppo & 0xf;
14403 pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14404 pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14405 pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14406
14407 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14408 band_num++) {
14409 switch (band_num) {
14410 case 0:
14411 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14412 sprom->core_pwr_info[0].maxpwr_2g;
14413 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14414 sprom->core_pwr_info[1].maxpwr_2g;
14415 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14416 sprom->core_pwr_info[0].pa_2g[0];
14417 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14418 sprom->core_pwr_info[1].pa_2g[0];
14419 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14420 sprom->core_pwr_info[0].pa_2g[1];
14421 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14422 sprom->core_pwr_info[1].pa_2g[1];
14423 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14424 sprom->core_pwr_info[0].pa_2g[2];
14425 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14426 sprom->core_pwr_info[1].pa_2g[2];
14427 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14428 sprom->core_pwr_info[0].itssi_2g;
14429 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14430 sprom->core_pwr_info[1].itssi_2g;
14431
14432 pi->cck2gpo = sprom->cck2gpo;
14433
14434 pi->ofdm2gpo = sprom->ofdm2gpo;
14435
14436 pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14437 pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14438 pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14439 pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14440 pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14441 pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14442 pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14443 pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14444 break;
14445 case 1:
14446
14447 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14448 sprom->core_pwr_info[0].maxpwr_5g;
14449 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14450 sprom->core_pwr_info[1].maxpwr_5g;
14451 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14452 sprom->core_pwr_info[0].pa_5g[0];
14453 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14454 sprom->core_pwr_info[1].pa_5g[0];
14455 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14456 sprom->core_pwr_info[0].pa_5g[1];
14457 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14458 sprom->core_pwr_info[1].pa_5g[1];
14459 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14460 sprom->core_pwr_info[0].pa_5g[2];
14461 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14462 sprom->core_pwr_info[1].pa_5g[2];
14463 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14464 sprom->core_pwr_info[0].itssi_5g;
14465 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14466 sprom->core_pwr_info[1].itssi_5g;
14467
14468 pi->ofdm5gpo = sprom->ofdm5gpo;
14469
14470 pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14471 pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14472 pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14473 pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14474 pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14475 pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14476 pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14477 pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14478 break;
14479 case 2:
14480
14481 pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14482 sprom->core_pwr_info[0].maxpwr_5gl;
14483 pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14484 sprom->core_pwr_info[1].maxpwr_5gl;
14485 pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14486 sprom->core_pwr_info[0].pa_5gl[0];
14487 pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14488 sprom->core_pwr_info[1].pa_5gl[0];
14489 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14490 sprom->core_pwr_info[0].pa_5gl[1];
14491 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14492 sprom->core_pwr_info[1].pa_5gl[1];
14493 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14494 sprom->core_pwr_info[0].pa_5gl[2];
14495 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14496 sprom->core_pwr_info[1].pa_5gl[2];
14497 pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14498 pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14499
14500 pi->ofdm5glpo = sprom->ofdm5glpo;
14501
14502 pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14503 pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14504 pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14505 pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14506 pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14507 pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14508 pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14509 pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14510 break;
14511 case 3:
14512
14513 pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14514 sprom->core_pwr_info[0].maxpwr_5gh;
14515 pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14516 sprom->core_pwr_info[1].maxpwr_5gh;
14517 pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14518 sprom->core_pwr_info[0].pa_5gh[0];
14519 pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14520 sprom->core_pwr_info[1].pa_5gh[0];
14521 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14522 sprom->core_pwr_info[0].pa_5gh[1];
14523 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14524 sprom->core_pwr_info[1].pa_5gh[1];
14525 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14526 sprom->core_pwr_info[0].pa_5gh[2];
14527 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14528 sprom->core_pwr_info[1].pa_5gh[2];
14529 pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14530 pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14531
14532 pi->ofdm5ghpo = sprom->ofdm5ghpo;
14533
14534 pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14535 pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14536 pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14537 pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14538 pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14539 pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14540 pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14541 pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14542 break;
14543 }
14544 }
14545
14546 wlc_phy_txpwr_apply_nphy(pi);
14547 }
14548
wlc_phy_txpwr_srom_read_nphy(struct brcms_phy * pi)14549 static void wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14550 {
14551 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14552
14553 pi->antswitch = sprom->antswitch;
14554 pi->aa2g = sprom->ant_available_bg;
14555 pi->aa5g = sprom->ant_available_a;
14556
14557 pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14558 pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14559 pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14560 pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14561 pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14562
14563 pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14564 pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14565 pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14566 pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14567 if (sprom->fem.ghz5.antswlut)
14568 pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14569 else
14570 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14571
14572 wlc_phy_txpower_ipa_upd(pi);
14573
14574 pi->phy_txcore_disable_temp = sprom->tempthresh;
14575 if (pi->phy_txcore_disable_temp == 0)
14576 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14577
14578 pi->phy_tempsense_offset = sprom->tempoffset;
14579 if (pi->phy_tempsense_offset != 0) {
14580 if (pi->phy_tempsense_offset >
14581 (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14582 pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14583 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14584 NPHY_SROM_MINTEMPOFFSET))
14585 pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14586 else
14587 pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14588 }
14589
14590 pi->phy_txcore_enable_temp =
14591 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14592
14593 pi->phycal_tempdelta = sprom->phycal_tempdelta;
14594 if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14595 pi->phycal_tempdelta = 0;
14596
14597 wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14598 }
14599
wlc_phy_attach_nphy(struct brcms_phy * pi)14600 void wlc_phy_attach_nphy(struct brcms_phy *pi)
14601 {
14602 uint i;
14603
14604 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14605 pi->phyhang_avoid = true;
14606
14607 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14608 pi->nphy_gband_spurwar_en = true;
14609 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14610 pi->nphy_aband_spurwar_en = true;
14611 }
14612 if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14613 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14614 pi->nphy_gband_spurwar2_en = true;
14615 }
14616
14617 pi->n_preamble_override = AUTO;
14618 if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14619 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14620
14621 pi->nphy_txrx_chain = AUTO;
14622 pi->phy_scraminit = AUTO;
14623
14624 pi->nphy_rxcalparams = 0x010100B5;
14625
14626 pi->nphy_perical = PHY_PERICAL_MPHASE;
14627 pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14628 pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14629
14630 pi->nphy_gain_boost = true;
14631 pi->nphy_elna_gain_config = false;
14632 pi->radio_is_on = false;
14633
14634 for (i = 0; i < pi->pubpi.phy_corenum; i++)
14635 pi->nphy_txpwrindex[i].index = AUTO;
14636
14637 wlc_phy_txpwrctrl_config_nphy(pi);
14638 if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14639 pi->hwpwrctrl_capable = true;
14640
14641 pi->pi_fptr.init = wlc_phy_init_nphy;
14642 pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14643 pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14644 pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14645
14646 wlc_phy_txpwr_srom_read_nphy(pi);
14647 }
14648
get_rf_pwr_offset(struct brcms_phy * pi,s16 pga_gn,s16 pad_gn)14649 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14650 {
14651 s32 rfpwr_offset = 0;
14652
14653 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14654 if ((pi->pubpi.radiorev == 3) ||
14655 (pi->pubpi.radiorev == 4) ||
14656 (pi->pubpi.radiorev == 6))
14657 rfpwr_offset = (s16)
14658 nphy_papd_padgain_dlt_2g_2057rev3n4
14659 [pad_gn];
14660 else if (pi->pubpi.radiorev == 5)
14661 rfpwr_offset = (s16)
14662 nphy_papd_padgain_dlt_2g_2057rev5
14663 [pad_gn];
14664 else if ((pi->pubpi.radiorev == 7)
14665 || (pi->pubpi.radiorev ==
14666 8))
14667 rfpwr_offset = (s16)
14668 nphy_papd_padgain_dlt_2g_2057rev7
14669 [pad_gn];
14670 } else {
14671 if ((pi->pubpi.radiorev == 3) ||
14672 (pi->pubpi.radiorev == 4) ||
14673 (pi->pubpi.radiorev == 6))
14674 rfpwr_offset = (s16)
14675 nphy_papd_pgagain_dlt_5g_2057
14676 [pga_gn];
14677 else if ((pi->pubpi.radiorev == 7)
14678 || (pi->pubpi.radiorev ==
14679 8))
14680 rfpwr_offset = (s16)
14681 nphy_papd_pgagain_dlt_5g_2057rev7
14682 [pga_gn];
14683 }
14684 return rfpwr_offset;
14685 }
14686
wlc_phy_update_mimoconfig_nphy(struct brcms_phy * pi,s32 preamble)14687 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14688 {
14689 bool gf_preamble = false;
14690 u16 val;
14691
14692 if (preamble == BRCMS_N_PREAMBLE_GF)
14693 gf_preamble = true;
14694
14695 val = read_phy_reg(pi, 0xed);
14696
14697 val |= RX_GF_MM_AUTO;
14698 val &= ~RX_GF_OR_MM;
14699 if (gf_preamble)
14700 val |= RX_GF_OR_MM;
14701
14702 write_phy_reg(pi, 0xed, val);
14703 }
14704
wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy * pi)14705 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14706 {
14707 int j, type;
14708 u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14709
14710 for (type = 0; type < 3; type++) {
14711 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14712 write_phy_reg(pi, addr_offset[type] + j,
14713 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14714 }
14715
14716 if (pi->bw == WL_CHANSPEC_BW_40) {
14717 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14718 write_phy_reg(pi, 0x186 + j,
14719 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14720 } else {
14721 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14722 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14723 write_phy_reg(pi, 0x186 + j,
14724 NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14725 }
14726
14727 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14728 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14729 write_phy_reg(pi, 0x2c5 + j,
14730 NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14731 }
14732 }
14733 }
14734
wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy * pi)14735 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14736 {
14737 int j;
14738
14739 if (pi->bw == WL_CHANSPEC_BW_40) {
14740 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14741 write_phy_reg(pi, 0x195 + j,
14742 NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14743 } else {
14744 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14745 write_phy_reg(pi, 0x186 + j,
14746 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14747 }
14748 }
14749
14750 static void
wlc_phy_set_rfseq_nphy(struct brcms_phy * pi,u8 cmd,const u8 * events,const u8 * dlys,u8 len)14751 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, const u8 *events,
14752 const u8 *dlys, u8 len)
14753 {
14754 u32 t1_offset, t2_offset;
14755 u8 ctr;
14756 u8 end_event =
14757 NREV_GE(pi->pubpi.phy_rev,
14758 3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14759 u8 end_dly = 1;
14760
14761 if (pi->phyhang_avoid)
14762 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14763
14764 t1_offset = cmd << 4;
14765 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14766 events);
14767 t2_offset = t1_offset + 0x080;
14768 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14769 dlys);
14770
14771 for (ctr = len; ctr < 16; ctr++) {
14772 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14773 t1_offset + ctr, 8, &end_event);
14774 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14775 t2_offset + ctr, 8, &end_dly);
14776 }
14777
14778 if (pi->phyhang_avoid)
14779 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14780 }
14781
wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy * pi,u16 offset)14782 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14783 {
14784 u16 lpf_bw_ctl_val = 0;
14785 u16 rx2tx_lpf_rc_lut_offset = 0;
14786
14787 if (offset == 0) {
14788 if (CHSPEC_IS40(pi->radio_chanspec))
14789 rx2tx_lpf_rc_lut_offset = 0x159;
14790 else
14791 rx2tx_lpf_rc_lut_offset = 0x154;
14792 } else {
14793 rx2tx_lpf_rc_lut_offset = offset;
14794 }
14795 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14796 (u32) rx2tx_lpf_rc_lut_offset, 16,
14797 &lpf_bw_ctl_val);
14798
14799 lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14800
14801 return lpf_bw_ctl_val;
14802 }
14803
14804 static void
wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off,u8 override_id)14805 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14806 u8 core_mask, u8 off, u8 override_id)
14807 {
14808 u8 core_num;
14809 u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14810 u8 val_shift = 0;
14811
14812 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14813 en_mask = field;
14814 for (core_num = 0; core_num < 2; core_num++) {
14815 if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14816
14817 switch (field) {
14818 case (0x1 << 2):
14819 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14820 val_addr = (core_num == 0) ? 0x7a :
14821 0x7d;
14822 val_mask = (0x1 << 1);
14823 val_shift = 1;
14824 break;
14825 case (0x1 << 3):
14826 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14827 val_addr = (core_num == 0) ? 0x7a :
14828 0x7d;
14829 val_mask = (0x1 << 2);
14830 val_shift = 2;
14831 break;
14832 case (0x1 << 4):
14833 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14834 val_addr = (core_num == 0) ? 0x7a :
14835 0x7d;
14836 val_mask = (0x1 << 4);
14837 val_shift = 4;
14838 break;
14839 case (0x1 << 5):
14840 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14841 val_addr = (core_num == 0) ? 0x7a :
14842 0x7d;
14843 val_mask = (0x1 << 5);
14844 val_shift = 5;
14845 break;
14846 case (0x1 << 6):
14847 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14848 val_addr = (core_num == 0) ? 0x7a :
14849 0x7d;
14850 val_mask = (0x1 << 6);
14851 val_shift = 6;
14852 break;
14853 case (0x1 << 7):
14854 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14855 val_addr = (core_num == 0) ? 0x7a :
14856 0x7d;
14857 val_mask = (0x1 << 7);
14858 val_shift = 7;
14859 break;
14860 case (0x1 << 10):
14861 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14862 val_addr = (core_num == 0) ? 0xf8 :
14863 0xfa;
14864 val_mask = (0x7 << 4);
14865 val_shift = 4;
14866 break;
14867 case (0x1 << 11):
14868 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14869 val_addr = (core_num == 0) ? 0x7b :
14870 0x7e;
14871 val_mask = (0xffff << 0);
14872 val_shift = 0;
14873 break;
14874 case (0x1 << 12):
14875 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14876 val_addr = (core_num == 0) ? 0x7c :
14877 0x7f;
14878 val_mask = (0xffff << 0);
14879 val_shift = 0;
14880 break;
14881 case (0x3 << 13):
14882 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14883 val_addr = (core_num == 0) ? 0x348 :
14884 0x349;
14885 val_mask = (0xff << 0);
14886 val_shift = 0;
14887 break;
14888 case (0x1 << 13):
14889 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14890 val_addr = (core_num == 0) ? 0x348 :
14891 0x349;
14892 val_mask = (0xf << 0);
14893 val_shift = 0;
14894 break;
14895 default:
14896 addr = 0xffff;
14897 break;
14898 }
14899 } else if (override_id ==
14900 NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14901
14902 switch (field) {
14903 case (0x1 << 1):
14904 en_addr = (core_num == 0) ? 0x342 :
14905 0x343;
14906 val_addr = (core_num == 0) ? 0x340 :
14907 0x341;
14908 val_mask = (0x1 << 1);
14909 val_shift = 1;
14910 break;
14911 case (0x1 << 3):
14912 en_addr = (core_num == 0) ? 0x342 :
14913 0x343;
14914 val_addr = (core_num == 0) ? 0x340 :
14915 0x341;
14916 val_mask = (0x1 << 3);
14917 val_shift = 3;
14918 break;
14919 case (0x1 << 5):
14920 en_addr = (core_num == 0) ? 0x342 :
14921 0x343;
14922 val_addr = (core_num == 0) ? 0x340 :
14923 0x341;
14924 val_mask = (0x1 << 5);
14925 val_shift = 5;
14926 break;
14927 case (0x1 << 4):
14928 en_addr = (core_num == 0) ? 0x342 :
14929 0x343;
14930 val_addr = (core_num == 0) ? 0x340 :
14931 0x341;
14932 val_mask = (0x1 << 4);
14933 val_shift = 4;
14934 break;
14935 case (0x1 << 2):
14936
14937 en_addr = (core_num == 0) ? 0x342 :
14938 0x343;
14939 val_addr = (core_num == 0) ? 0x340 :
14940 0x341;
14941 val_mask = (0x1 << 2);
14942 val_shift = 2;
14943 break;
14944 case (0x1 << 7):
14945
14946 en_addr = (core_num == 0) ? 0x342 :
14947 0x343;
14948 val_addr = (core_num == 0) ? 0x340 :
14949 0x341;
14950 val_mask = (0x7 << 8);
14951 val_shift = 8;
14952 break;
14953 case (0x1 << 11):
14954 en_addr = (core_num == 0) ? 0x342 :
14955 0x343;
14956 val_addr = (core_num == 0) ? 0x340 :
14957 0x341;
14958 val_mask = (0x1 << 14);
14959 val_shift = 14;
14960 break;
14961 case (0x1 << 10):
14962 en_addr = (core_num == 0) ? 0x342 :
14963 0x343;
14964 val_addr = (core_num == 0) ? 0x340 :
14965 0x341;
14966 val_mask = (0x1 << 13);
14967 val_shift = 13;
14968 break;
14969 case (0x1 << 9):
14970 en_addr = (core_num == 0) ? 0x342 :
14971 0x343;
14972 val_addr = (core_num == 0) ? 0x340 :
14973 0x341;
14974 val_mask = (0x1 << 12);
14975 val_shift = 12;
14976 break;
14977 case (0x1 << 8):
14978 en_addr = (core_num == 0) ? 0x342 :
14979 0x343;
14980 val_addr = (core_num == 0) ? 0x340 :
14981 0x341;
14982 val_mask = (0x1 << 11);
14983 val_shift = 11;
14984 break;
14985 case (0x1 << 6):
14986 en_addr = (core_num == 0) ? 0x342 :
14987 0x343;
14988 val_addr = (core_num == 0) ? 0x340 :
14989 0x341;
14990 val_mask = (0x1 << 6);
14991 val_shift = 6;
14992 break;
14993 case (0x1 << 0):
14994 en_addr = (core_num == 0) ? 0x342 :
14995 0x343;
14996 val_addr = (core_num == 0) ? 0x340 :
14997 0x341;
14998 val_mask = (0x1 << 0);
14999 val_shift = 0;
15000 break;
15001 default:
15002 addr = 0xffff;
15003 break;
15004 }
15005 } else if (override_id ==
15006 NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15007
15008 switch (field) {
15009 case (0x1 << 3):
15010 en_addr = (core_num == 0) ? 0x346 :
15011 0x347;
15012 val_addr = (core_num == 0) ? 0x344 :
15013 0x345;
15014 val_mask = (0x1 << 3);
15015 val_shift = 3;
15016 break;
15017 case (0x1 << 1):
15018 en_addr = (core_num == 0) ? 0x346 :
15019 0x347;
15020 val_addr = (core_num == 0) ? 0x344 :
15021 0x345;
15022 val_mask = (0x1 << 1);
15023 val_shift = 1;
15024 break;
15025 case (0x1 << 0):
15026 en_addr = (core_num == 0) ? 0x346 :
15027 0x347;
15028 val_addr = (core_num == 0) ? 0x344 :
15029 0x345;
15030 val_mask = (0x1 << 0);
15031 val_shift = 0;
15032 break;
15033 case (0x1 << 2):
15034 en_addr = (core_num == 0) ? 0x346 :
15035 0x347;
15036 val_addr = (core_num == 0) ? 0x344 :
15037 0x345;
15038 val_mask = (0x1 << 2);
15039 val_shift = 2;
15040 break;
15041 case (0x1 << 4):
15042 en_addr = (core_num == 0) ? 0x346 :
15043 0x347;
15044 val_addr = (core_num == 0) ? 0x344 :
15045 0x345;
15046 val_mask = (0x1 << 4);
15047 val_shift = 4;
15048 break;
15049 default:
15050 addr = 0xffff;
15051 break;
15052 }
15053 }
15054
15055 if (off) {
15056 and_phy_reg(pi, en_addr, ~en_mask);
15057 and_phy_reg(pi, val_addr, ~val_mask);
15058 } else {
15059
15060 if ((core_mask == 0)
15061 || (core_mask & (1 << core_num))) {
15062 or_phy_reg(pi, en_addr, en_mask);
15063
15064 if (addr != 0xffff)
15065 mod_phy_reg(pi, val_addr,
15066 val_mask,
15067 (value <<
15068 val_shift));
15069 }
15070 }
15071 }
15072 }
15073 }
15074
wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy * pi)15075 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15076 {
15077 uint core;
15078 int ctr;
15079 s16 gain_delta[2];
15080 u8 curr_channel;
15081 u16 minmax_gain[2];
15082 u16 regval[4];
15083
15084 if (pi->phyhang_avoid)
15085 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15086
15087 if (pi->nphy_gain_boost) {
15088 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15089
15090 gain_delta[0] = 6;
15091 gain_delta[1] = 6;
15092 } else {
15093
15094 curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15095 gain_delta[0] =
15096 (s16)
15097 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15098 curr_channel) +
15099 nphy_lnagain_est0[1]), 13);
15100 gain_delta[1] =
15101 (s16)
15102 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15103 curr_channel) +
15104 nphy_lnagain_est1[1]), 13);
15105 }
15106 } else {
15107
15108 gain_delta[0] = 0;
15109 gain_delta[1] = 0;
15110 }
15111
15112 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15113 if (pi->nphy_elna_gain_config) {
15114
15115 regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15116 regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15117 regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15118 regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15119 } else {
15120 for (ctr = 0; ctr < 4; ctr++)
15121 regval[ctr] =
15122 nphy_def_lnagains[ctr] +
15123 gain_delta[core];
15124 }
15125 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15126
15127 minmax_gain[core] =
15128 (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15129 }
15130
15131 mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15132 mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15133
15134 if (pi->phyhang_avoid)
15135 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15136 }
15137
15138 static void
wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy * pi,u8 core)15139 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15140 {
15141 if (core == PHY_CORE_0) {
15142 write_phy_reg(pi, 0x38, 0x4);
15143 if (CHSPEC_IS2G(pi->radio_chanspec))
15144 write_phy_reg(pi, 0x37, 0x0060);
15145 else
15146 write_phy_reg(pi, 0x37, 0x1080);
15147 } else if (core == PHY_CORE_1) {
15148 write_phy_reg(pi, 0x2ae, 0x4);
15149 if (CHSPEC_IS2G(pi->radio_chanspec))
15150 write_phy_reg(pi, 0x2ad, 0x0060);
15151 else
15152 write_phy_reg(pi, 0x2ad, 0x1080);
15153 }
15154 }
15155
wlc_phy_war_txchain_upd_nphy(struct brcms_phy * pi,u8 txchain)15156 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15157 {
15158 u8 txchain0, txchain1;
15159
15160 txchain0 = txchain & 0x1;
15161 txchain1 = (txchain & 0x2) >> 1;
15162 if (!txchain0)
15163 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15164
15165 if (!txchain1)
15166 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15167 }
15168
wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy * pi)15169 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15170 {
15171 s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15172 s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15173 s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15174 s8 tia_gainbits[] = {
15175 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15176
15177 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15178 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15179
15180 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15181
15182 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15183 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15184
15185 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15186 lna1_gain_db);
15187 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15188 lna1_gain_db);
15189
15190 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15191 lna2_gain_db);
15192 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15193 lna2_gain_db);
15194
15195 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15196 tia_gain_db);
15197 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15198 tia_gain_db);
15199
15200 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15201 tia_gainbits);
15202 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15203 tia_gainbits);
15204
15205 write_phy_reg(pi, 0x37, 0x74);
15206 write_phy_reg(pi, 0x2ad, 0x74);
15207 write_phy_reg(pi, 0x38, 0x18);
15208 write_phy_reg(pi, 0x2ae, 0x18);
15209
15210 write_phy_reg(pi, 0x2b, 0xe8);
15211 write_phy_reg(pi, 0x41, 0xe8);
15212
15213 if (CHSPEC_IS20(pi->radio_chanspec)) {
15214
15215 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15216 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15217 } else {
15218
15219 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15220 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15221 }
15222 }
15223
wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy * pi)15224 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15225 {
15226 u16 currband;
15227 static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15228 const s8 *lna1_gain_db = NULL;
15229 const s8 *lna1_gain_db_2 = NULL;
15230 const s8 *lna2_gain_db = NULL;
15231 static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15232 const s8 *tia_gain_db;
15233 static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15234 const s8 *tia_gainbits;
15235 static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15236 const u16 *rfseq_init_gain;
15237 u16 init_gaincode;
15238 u16 clip1hi_gaincode;
15239 u16 clip1md_gaincode = 0;
15240 u16 clip1md_gaincode_B;
15241 u16 clip1lo_gaincode;
15242 u16 clip1lo_gaincode_B;
15243 u8 crsminl_th = 0;
15244 u8 crsminu_th;
15245 u16 nbclip_th = 0;
15246 u8 w1clip_th;
15247 u16 freq;
15248 s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15249 u8 chg_nbclip_th = 0;
15250
15251 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15252 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15253
15254 currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15255 if (currband == 0) {
15256
15257 lna1_gain_db = lna1G_gain_db_rev7;
15258
15259 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15260 lna1_gain_db);
15261 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15262 lna1_gain_db);
15263
15264 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15265
15266 if (CHSPEC_IS40(pi->radio_chanspec)) {
15267 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15268 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15269 }
15270
15271 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15272
15273 if (CHSPEC_IS20(pi->radio_chanspec)) {
15274 mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15275 mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15276 }
15277 } else {
15278
15279 init_gaincode = 0x9e;
15280 clip1hi_gaincode = 0x9e;
15281 clip1md_gaincode_B = 0x24;
15282 clip1lo_gaincode = 0x8a;
15283 clip1lo_gaincode_B = 8;
15284 rfseq_init_gain = rfseqA_init_gain_rev7;
15285
15286 tia_gain_db = tiaA_gain_db_rev7;
15287 tia_gainbits = tiaA_gainbits_rev7;
15288
15289 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15290 if (CHSPEC_IS20(pi->radio_chanspec)) {
15291
15292 w1clip_th = 25;
15293 clip1md_gaincode = 0x82;
15294
15295 if ((freq <= 5080) || (freq == 5825)) {
15296
15297 static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15298 static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
15299 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15300
15301 crsminu_th = 0x3e;
15302 lna1_gain_db = lna1A_gain_db_rev7;
15303 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15304 lna2_gain_db = lna2A_gain_db_rev7;
15305 } else if ((freq >= 5500) && (freq <= 5700)) {
15306
15307 static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15308 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15309 static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15310
15311 crsminu_th = 0x45;
15312 clip1md_gaincode_B = 0x14;
15313 nbclip_th = 0xff;
15314 chg_nbclip_th = 1;
15315 lna1_gain_db = lna1A_gain_db_rev7;
15316 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15317 lna2_gain_db = lna2A_gain_db_rev7;
15318 } else {
15319
15320 static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15321 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15322 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15323
15324 crsminu_th = 0x41;
15325 lna1_gain_db = lna1A_gain_db_rev7;
15326 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15327 lna2_gain_db = lna2A_gain_db_rev7;
15328 }
15329
15330 if (freq <= 4920) {
15331 nvar_baseline_offset0 = 5;
15332 nvar_baseline_offset1 = 5;
15333 } else if ((freq > 4920) && (freq <= 5320)) {
15334 nvar_baseline_offset0 = 3;
15335 nvar_baseline_offset1 = 5;
15336 } else if ((freq > 5320) && (freq <= 5700)) {
15337 nvar_baseline_offset0 = 3;
15338 nvar_baseline_offset1 = 2;
15339 } else {
15340 nvar_baseline_offset0 = 4;
15341 nvar_baseline_offset1 = 0;
15342 }
15343 } else {
15344
15345 crsminu_th = 0x3a;
15346 crsminl_th = 0x3a;
15347 w1clip_th = 20;
15348
15349 if ((freq >= 4920) && (freq <= 5320)) {
15350 nvar_baseline_offset0 = 4;
15351 nvar_baseline_offset1 = 5;
15352 } else if ((freq > 5320) && (freq <= 5550)) {
15353 nvar_baseline_offset0 = 4;
15354 nvar_baseline_offset1 = 2;
15355 } else {
15356 nvar_baseline_offset0 = 5;
15357 nvar_baseline_offset1 = 3;
15358 }
15359 }
15360
15361 write_phy_reg(pi, 0x20, init_gaincode);
15362 write_phy_reg(pi, 0x2a7, init_gaincode);
15363
15364 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15365 pi->pubpi.phy_corenum, 0x106, 16,
15366 rfseq_init_gain);
15367
15368 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15369 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15370
15371 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15372 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15373
15374 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15375 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15376 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15377 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15378
15379 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15380 tia_gain_db);
15381 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15382 tia_gain_db);
15383
15384 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15385 tia_gainbits);
15386 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15387 tia_gainbits);
15388
15389 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15390
15391 if (chg_nbclip_th == 1) {
15392 write_phy_reg(pi, 0x2b, nbclip_th);
15393 write_phy_reg(pi, 0x41, nbclip_th);
15394 }
15395
15396 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15397 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15398
15399 mod_phy_reg(pi, 0x2e4,
15400 (0x3f << 0), (nvar_baseline_offset0 << 0));
15401
15402 mod_phy_reg(pi, 0x2e4,
15403 (0x3f << 6), (nvar_baseline_offset1 << 6));
15404
15405 if (CHSPEC_IS20(pi->radio_chanspec)) {
15406
15407 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15408 lna1_gain_db);
15409 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15410 lna1_gain_db_2);
15411
15412 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15413 8, lna2_gain_db);
15414 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15415 8, lna2_gain_db);
15416
15417 write_phy_reg(pi, 0x24, clip1md_gaincode);
15418 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15419 } else {
15420 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15421 }
15422 }
15423 }
15424
wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy * pi)15425 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15426 {
15427 u16 w1th, hpf_code, currband;
15428 int ctr;
15429 u8 rfseq_updategainu_events[] = {
15430 NPHY_RFSEQ_CMD_RX_GAIN,
15431 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15432 NPHY_RFSEQ_CMD_SET_HPF_BW
15433 };
15434 static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15435 static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15436 static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15437 static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15438 static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15439 static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15440 static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15441 static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15442 static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15443 static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15444 const s8 *lna1_gain_db = NULL;
15445 static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15446 static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15447 static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15448 static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15449 static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15450 static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15451 static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15452 static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15453 const s8 *lna2_gain_db = NULL;
15454 static const s8 tiaG_gain_db[] = {
15455 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15456 static const s8 tiaA_gain_db[] = {
15457 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15458 static const s8 tiaA_gain_db_rev4[] = {
15459 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15460 static const s8 tiaA_gain_db_rev5[] = {
15461 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15462 static const s8 tiaA_gain_db_rev6[] = {
15463 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15464 const s8 *tia_gain_db;
15465 static const s8 tiaG_gainbits[] = {
15466 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15467 static const s8 tiaA_gainbits[] = {
15468 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15469 static const s8 tiaA_gainbits_rev4[] = {
15470 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15471 static const s8 tiaA_gainbits_rev5[] = {
15472 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15473 static const s8 tiaA_gainbits_rev6[] = {
15474 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15475 const s8 *tia_gainbits;
15476 static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15477 static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15478 static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15479 static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15480 static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15481 static const u16 rfseqG_init_gain_rev5_elna[] = {
15482 0x013f, 0x013f, 0x013f, 0x013f };
15483 static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15484 static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15485 static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15486 static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15487 static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15488 static const u16 rfseqA_init_gain_rev4_elna[] = {
15489 0x314f, 0x314f, 0x314f, 0x314f };
15490 static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15491 static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15492 const u16 *rfseq_init_gain;
15493 u16 initG_gaincode = 0x627e;
15494 u16 initG_gaincode_rev4 = 0x527e;
15495 u16 initG_gaincode_rev5 = 0x427e;
15496 u16 initG_gaincode_rev5_elna = 0x027e;
15497 u16 initG_gaincode_rev6 = 0x527e;
15498 u16 initG_gaincode_rev6_224B0 = 0x427e;
15499 u16 initG_gaincode_rev6_elna = 0x127e;
15500 u16 initA_gaincode = 0x52de;
15501 u16 initA_gaincode_rev4 = 0x629e;
15502 u16 initA_gaincode_rev4_elna = 0x329e;
15503 u16 initA_gaincode_rev5 = 0x729e;
15504 u16 initA_gaincode_rev6 = 0x729e;
15505 u16 init_gaincode;
15506 u16 clip1hiG_gaincode = 0x107e;
15507 u16 clip1hiG_gaincode_rev4 = 0x007e;
15508 u16 clip1hiG_gaincode_rev5 = 0x1076;
15509 u16 clip1hiG_gaincode_rev6 = 0x007e;
15510 u16 clip1hiA_gaincode = 0x00de;
15511 u16 clip1hiA_gaincode_rev4 = 0x029e;
15512 u16 clip1hiA_gaincode_rev5 = 0x029e;
15513 u16 clip1hiA_gaincode_rev6 = 0x029e;
15514 u16 clip1hi_gaincode;
15515 u16 clip1mdG_gaincode = 0x0066;
15516 u16 clip1mdA_gaincode = 0x00ca;
15517 u16 clip1mdA_gaincode_rev4 = 0x1084;
15518 u16 clip1mdA_gaincode_rev5 = 0x2084;
15519 u16 clip1mdA_gaincode_rev6 = 0x2084;
15520 u16 clip1md_gaincode = 0;
15521 u16 clip1loG_gaincode = 0x0074;
15522 static const u16 clip1loG_gaincode_rev5[] = {
15523 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15524 };
15525 static const u16 clip1loG_gaincode_rev6[] = {
15526 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15527 };
15528 u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15529 u16 clip1loA_gaincode = 0x00cc;
15530 u16 clip1loA_gaincode_rev4 = 0x0086;
15531 u16 clip1loA_gaincode_rev5 = 0x2086;
15532 u16 clip1loA_gaincode_rev6 = 0x2086;
15533 u16 clip1lo_gaincode;
15534 u8 crsminG_th = 0x18;
15535 u8 crsminG_th_rev5 = 0x18;
15536 u8 crsminG_th_rev6 = 0x18;
15537 u8 crsminA_th = 0x1e;
15538 u8 crsminA_th_rev4 = 0x24;
15539 u8 crsminA_th_rev5 = 0x24;
15540 u8 crsminA_th_rev6 = 0x24;
15541 u8 crsmin_th;
15542 u8 crsminlG_th = 0x18;
15543 u8 crsminlG_th_rev5 = 0x18;
15544 u8 crsminlG_th_rev6 = 0x18;
15545 u8 crsminlA_th = 0x1e;
15546 u8 crsminlA_th_rev4 = 0x24;
15547 u8 crsminlA_th_rev5 = 0x24;
15548 u8 crsminlA_th_rev6 = 0x24;
15549 u8 crsminl_th = 0;
15550 u8 crsminuG_th = 0x18;
15551 u8 crsminuG_th_rev5 = 0x18;
15552 u8 crsminuG_th_rev6 = 0x18;
15553 u8 crsminuA_th = 0x1e;
15554 u8 crsminuA_th_rev4 = 0x24;
15555 u8 crsminuA_th_rev5 = 0x24;
15556 u8 crsminuA_th_rev6 = 0x24;
15557 u8 crsminuA_th_rev6_224B0 = 0x2d;
15558 u8 crsminu_th;
15559 u16 nbclipG_th = 0x20d;
15560 u16 nbclipG_th_rev4 = 0x1a1;
15561 u16 nbclipG_th_rev5 = 0x1d0;
15562 u16 nbclipG_th_rev6 = 0x1d0;
15563 u16 nbclipA_th = 0x1a1;
15564 u16 nbclipA_th_rev4 = 0x107;
15565 u16 nbclipA_th_rev5 = 0x0a9;
15566 u16 nbclipA_th_rev6 = 0x0f0;
15567 u16 nbclip_th = 0;
15568 u8 w1clipG_th = 5;
15569 u8 w1clipG_th_rev5 = 9;
15570 u8 w1clipG_th_rev6 = 5;
15571 u8 w1clipA_th = 25, w1clip_th;
15572 u8 rssi_gain_default = 0x50;
15573 u8 rssiG_gain_rev6_224B0 = 0x50;
15574 u8 rssiA_gain_rev5 = 0x90;
15575 u8 rssiA_gain_rev6 = 0x90;
15576 u8 rssi_gain;
15577 u16 regval[21];
15578 u8 triso;
15579
15580 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15581 pi->srom_fem2g.triso;
15582
15583 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15584 if (pi->pubpi.radiorev == 5) {
15585 wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15586 } else if (pi->pubpi.radiorev == 7) {
15587 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15588
15589 mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15590 mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15591
15592 } else if ((pi->pubpi.radiorev == 3)
15593 || (pi->pubpi.radiorev == 8)) {
15594 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15595
15596 if (pi->pubpi.radiorev == 8) {
15597 mod_phy_reg(pi, 0x283,
15598 (0xff << 0), (0x44 << 0));
15599 mod_phy_reg(pi, 0x280,
15600 (0xff << 0), (0x44 << 0));
15601 }
15602 } else {
15603 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15604 }
15605 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15606
15607 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15608
15609 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15610 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15611
15612 currband =
15613 read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15614 if (currband == 0) {
15615 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15616 if (pi->pubpi.radiorev == 11) {
15617 lna1_gain_db = lna1G_gain_db_rev6_224B0;
15618 lna2_gain_db = lna2G_gain_db_rev6_224B0;
15619 rfseq_init_gain =
15620 rfseqG_init_gain_rev6_224B0;
15621 init_gaincode =
15622 initG_gaincode_rev6_224B0;
15623 clip1hi_gaincode =
15624 clip1hiG_gaincode_rev6;
15625 clip1lo_gaincode =
15626 clip1loG_gaincode_rev6_224B0;
15627 nbclip_th = nbclipG_th_rev6;
15628 w1clip_th = w1clipG_th_rev6;
15629 crsmin_th = crsminG_th_rev6;
15630 crsminl_th = crsminlG_th_rev6;
15631 crsminu_th = crsminuG_th_rev6;
15632 rssi_gain = rssiG_gain_rev6_224B0;
15633 } else {
15634 lna1_gain_db = lna1G_gain_db_rev6;
15635 lna2_gain_db = lna2G_gain_db_rev6;
15636 if (pi->sh->boardflags & BFL_EXTLNA) {
15637
15638 rfseq_init_gain =
15639 rfseqG_init_gain_rev6_elna;
15640 init_gaincode =
15641 initG_gaincode_rev6_elna;
15642 } else {
15643 rfseq_init_gain =
15644 rfseqG_init_gain_rev6;
15645 init_gaincode =
15646 initG_gaincode_rev6;
15647 }
15648 clip1hi_gaincode =
15649 clip1hiG_gaincode_rev6;
15650 switch (triso) {
15651 case 0:
15652 clip1lo_gaincode =
15653 clip1loG_gaincode_rev6
15654 [0];
15655 break;
15656 case 1:
15657 clip1lo_gaincode =
15658 clip1loG_gaincode_rev6
15659 [1];
15660 break;
15661 case 2:
15662 clip1lo_gaincode =
15663 clip1loG_gaincode_rev6
15664 [2];
15665 break;
15666 case 3:
15667 default:
15668
15669 clip1lo_gaincode =
15670 clip1loG_gaincode_rev6
15671 [3];
15672 break;
15673 case 4:
15674 clip1lo_gaincode =
15675 clip1loG_gaincode_rev6
15676 [4];
15677 break;
15678 case 5:
15679 clip1lo_gaincode =
15680 clip1loG_gaincode_rev6
15681 [5];
15682 break;
15683 case 6:
15684 clip1lo_gaincode =
15685 clip1loG_gaincode_rev6
15686 [6];
15687 break;
15688 case 7:
15689 clip1lo_gaincode =
15690 clip1loG_gaincode_rev6
15691 [7];
15692 break;
15693 }
15694 nbclip_th = nbclipG_th_rev6;
15695 w1clip_th = w1clipG_th_rev6;
15696 crsmin_th = crsminG_th_rev6;
15697 crsminl_th = crsminlG_th_rev6;
15698 crsminu_th = crsminuG_th_rev6;
15699 rssi_gain = rssi_gain_default;
15700 }
15701 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15702 lna1_gain_db = lna1G_gain_db_rev5;
15703 lna2_gain_db = lna2G_gain_db_rev5;
15704 if (pi->sh->boardflags & BFL_EXTLNA) {
15705
15706 rfseq_init_gain =
15707 rfseqG_init_gain_rev5_elna;
15708 init_gaincode =
15709 initG_gaincode_rev5_elna;
15710 } else {
15711 rfseq_init_gain = rfseqG_init_gain_rev5;
15712 init_gaincode = initG_gaincode_rev5;
15713 }
15714 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15715 switch (triso) {
15716 case 0:
15717 clip1lo_gaincode =
15718 clip1loG_gaincode_rev5[0];
15719 break;
15720 case 1:
15721 clip1lo_gaincode =
15722 clip1loG_gaincode_rev5[1];
15723 break;
15724 case 2:
15725 clip1lo_gaincode =
15726 clip1loG_gaincode_rev5[2];
15727 break;
15728 case 3:
15729
15730 clip1lo_gaincode =
15731 clip1loG_gaincode_rev5[3];
15732 break;
15733 case 4:
15734 clip1lo_gaincode =
15735 clip1loG_gaincode_rev5[4];
15736 break;
15737 case 5:
15738 clip1lo_gaincode =
15739 clip1loG_gaincode_rev5[5];
15740 break;
15741 case 6:
15742 clip1lo_gaincode =
15743 clip1loG_gaincode_rev5[6];
15744 break;
15745 case 7:
15746 clip1lo_gaincode =
15747 clip1loG_gaincode_rev5[7];
15748 break;
15749 default:
15750 clip1lo_gaincode =
15751 clip1loG_gaincode_rev5[3];
15752 break;
15753 }
15754 nbclip_th = nbclipG_th_rev5;
15755 w1clip_th = w1clipG_th_rev5;
15756 crsmin_th = crsminG_th_rev5;
15757 crsminl_th = crsminlG_th_rev5;
15758 crsminu_th = crsminuG_th_rev5;
15759 rssi_gain = rssi_gain_default;
15760 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15761 lna1_gain_db = lna1G_gain_db_rev4;
15762 lna2_gain_db = lna2G_gain_db;
15763 rfseq_init_gain = rfseqG_init_gain_rev4;
15764 init_gaincode = initG_gaincode_rev4;
15765 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15766 clip1lo_gaincode = clip1loG_gaincode;
15767 nbclip_th = nbclipG_th_rev4;
15768 w1clip_th = w1clipG_th;
15769 crsmin_th = crsminG_th;
15770 crsminl_th = crsminlG_th;
15771 crsminu_th = crsminuG_th;
15772 rssi_gain = rssi_gain_default;
15773 } else {
15774 lna1_gain_db = lna1G_gain_db;
15775 lna2_gain_db = lna2G_gain_db;
15776 rfseq_init_gain = rfseqG_init_gain;
15777 init_gaincode = initG_gaincode;
15778 clip1hi_gaincode = clip1hiG_gaincode;
15779 clip1lo_gaincode = clip1loG_gaincode;
15780 nbclip_th = nbclipG_th;
15781 w1clip_th = w1clipG_th;
15782 crsmin_th = crsminG_th;
15783 crsminl_th = crsminlG_th;
15784 crsminu_th = crsminuG_th;
15785 rssi_gain = rssi_gain_default;
15786 }
15787 tia_gain_db = tiaG_gain_db;
15788 tia_gainbits = tiaG_gainbits;
15789 clip1md_gaincode = clip1mdG_gaincode;
15790 } else {
15791 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15792 lna1_gain_db = lna1A_gain_db_rev6;
15793 lna2_gain_db = lna2A_gain_db_rev6;
15794 tia_gain_db = tiaA_gain_db_rev6;
15795 tia_gainbits = tiaA_gainbits_rev6;
15796 rfseq_init_gain = rfseqA_init_gain_rev6;
15797 init_gaincode = initA_gaincode_rev6;
15798 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15799 clip1md_gaincode = clip1mdA_gaincode_rev6;
15800 clip1lo_gaincode = clip1loA_gaincode_rev6;
15801 crsmin_th = crsminA_th_rev6;
15802 crsminl_th = crsminlA_th_rev6;
15803 if ((pi->pubpi.radiorev == 11) &&
15804 (CHSPEC_IS40(pi->radio_chanspec) == 0))
15805 crsminu_th = crsminuA_th_rev6_224B0;
15806 else
15807 crsminu_th = crsminuA_th_rev6;
15808
15809 nbclip_th = nbclipA_th_rev6;
15810 rssi_gain = rssiA_gain_rev6;
15811 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15812 lna1_gain_db = lna1A_gain_db_rev5;
15813 lna2_gain_db = lna2A_gain_db_rev5;
15814 tia_gain_db = tiaA_gain_db_rev5;
15815 tia_gainbits = tiaA_gainbits_rev5;
15816 rfseq_init_gain = rfseqA_init_gain_rev5;
15817 init_gaincode = initA_gaincode_rev5;
15818 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15819 clip1md_gaincode = clip1mdA_gaincode_rev5;
15820 clip1lo_gaincode = clip1loA_gaincode_rev5;
15821 crsmin_th = crsminA_th_rev5;
15822 crsminl_th = crsminlA_th_rev5;
15823 crsminu_th = crsminuA_th_rev5;
15824 nbclip_th = nbclipA_th_rev5;
15825 rssi_gain = rssiA_gain_rev5;
15826 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15827 lna1_gain_db = lna1A_gain_db_rev4;
15828 lna2_gain_db = lna2A_gain_db_rev4;
15829 tia_gain_db = tiaA_gain_db_rev4;
15830 tia_gainbits = tiaA_gainbits_rev4;
15831 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15832
15833 rfseq_init_gain =
15834 rfseqA_init_gain_rev4_elna;
15835 init_gaincode =
15836 initA_gaincode_rev4_elna;
15837 } else {
15838 rfseq_init_gain = rfseqA_init_gain_rev4;
15839 init_gaincode = initA_gaincode_rev4;
15840 }
15841 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15842 clip1md_gaincode = clip1mdA_gaincode_rev4;
15843 clip1lo_gaincode = clip1loA_gaincode_rev4;
15844 crsmin_th = crsminA_th_rev4;
15845 crsminl_th = crsminlA_th_rev4;
15846 crsminu_th = crsminuA_th_rev4;
15847 nbclip_th = nbclipA_th_rev4;
15848 rssi_gain = rssi_gain_default;
15849 } else {
15850 lna1_gain_db = lna1A_gain_db;
15851 lna2_gain_db = lna2A_gain_db;
15852 tia_gain_db = tiaA_gain_db;
15853 tia_gainbits = tiaA_gainbits;
15854 rfseq_init_gain = rfseqA_init_gain;
15855 init_gaincode = initA_gaincode;
15856 clip1hi_gaincode = clip1hiA_gaincode;
15857 clip1md_gaincode = clip1mdA_gaincode;
15858 clip1lo_gaincode = clip1loA_gaincode;
15859 crsmin_th = crsminA_th;
15860 crsminl_th = crsminlA_th;
15861 crsminu_th = crsminuA_th;
15862 nbclip_th = nbclipA_th;
15863 rssi_gain = rssi_gain_default;
15864 }
15865 w1clip_th = w1clipA_th;
15866 }
15867
15868 write_radio_reg(pi,
15869 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15870 RADIO_2056_RX0), 0x17);
15871 write_radio_reg(pi,
15872 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15873 RADIO_2056_RX1), 0x17);
15874
15875 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15876 0xf0);
15877 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15878 0xf0);
15879
15880 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15881 0x0);
15882 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15883 0x0);
15884
15885 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15886 rssi_gain);
15887 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15888 rssi_gain);
15889
15890 write_radio_reg(pi,
15891 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15892 RADIO_2056_RX0), 0x17);
15893 write_radio_reg(pi,
15894 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15895 RADIO_2056_RX1), 0x17);
15896
15897 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15898 0xFF);
15899 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15900 0xFF);
15901
15902 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15903 8, lna1_gain_db);
15904 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15905 8, lna1_gain_db);
15906
15907 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15908 8, lna2_gain_db);
15909 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15910 8, lna2_gain_db);
15911
15912 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15913 8, tia_gain_db);
15914 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15915 8, tia_gain_db);
15916
15917 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15918 8, tia_gainbits);
15919 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15920 8, tia_gainbits);
15921
15922 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15923 8, &lpf_gain_db);
15924 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15925 8, &lpf_gain_db);
15926 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15927 8, &lpf_gainbits);
15928 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15929 8, &lpf_gainbits);
15930
15931 write_phy_reg(pi, 0x20, init_gaincode);
15932 write_phy_reg(pi, 0x2a7, init_gaincode);
15933
15934 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15935 pi->pubpi.phy_corenum, 0x106, 16,
15936 rfseq_init_gain);
15937
15938 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15939 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15940
15941 write_phy_reg(pi, 0x24, clip1md_gaincode);
15942 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15943
15944 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15945 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15946
15947 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15948 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15949 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15950
15951 write_phy_reg(pi, 0x2b, nbclip_th);
15952 write_phy_reg(pi, 0x41, nbclip_th);
15953
15954 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15955 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15956
15957 write_phy_reg(pi, 0x150, 0x809c);
15958
15959 } else {
15960
15961 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15962 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15963
15964 write_phy_reg(pi, 0x2b, 0x84);
15965 write_phy_reg(pi, 0x41, 0x84);
15966
15967 if (CHSPEC_IS20(pi->radio_chanspec)) {
15968 write_phy_reg(pi, 0x6b, 0x2b);
15969 write_phy_reg(pi, 0x6c, 0x2b);
15970 write_phy_reg(pi, 0x6d, 0x9);
15971 write_phy_reg(pi, 0x6e, 0x9);
15972 }
15973
15974 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15975 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15976 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15977
15978 if (CHSPEC_IS20(pi->radio_chanspec)) {
15979 mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15980 mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
15981
15982 mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
15983 mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
15984 }
15985
15986 write_phy_reg(pi, 0x150, 0x809c);
15987
15988 if (pi->nphy_gain_boost)
15989 if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
15990 (CHSPEC_IS40(pi->radio_chanspec)))
15991 hpf_code = 4;
15992 else
15993 hpf_code = 5;
15994 else if (CHSPEC_IS40(pi->radio_chanspec))
15995 hpf_code = 6;
15996 else
15997 hpf_code = 7;
15998
15999 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16000 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16001
16002 for (ctr = 0; ctr < 4; ctr++)
16003 regval[ctr] = (hpf_code << 8) | 0x7c;
16004 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16005
16006 wlc_phy_adjust_lnagaintbl_nphy(pi);
16007
16008 if (pi->nphy_elna_gain_config) {
16009 regval[0] = 0;
16010 regval[1] = 1;
16011 regval[2] = 1;
16012 regval[3] = 1;
16013 wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16014 wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16015
16016 for (ctr = 0; ctr < 4; ctr++)
16017 regval[ctr] = (hpf_code << 8) | 0x74;
16018 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16019 }
16020
16021 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16022 for (ctr = 0; ctr < 21; ctr++)
16023 regval[ctr] = 3 * ctr;
16024 wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16025 wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16026
16027 for (ctr = 0; ctr < 21; ctr++)
16028 regval[ctr] = (u16) ctr;
16029 wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16030 wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16031 }
16032
16033 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16034 rfseq_updategainu_events,
16035 rfseq_updategainu_dlys,
16036 ARRAY_SIZE(rfseq_updategainu_events));
16037
16038 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16039
16040 if (CHSPEC_IS2G(pi->radio_chanspec))
16041 mod_phy_reg(pi,
16042 (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16043 0x7f, 0x4);
16044 }
16045 }
16046
wlc_phy_workarounds_nphy_rev7(struct brcms_phy * pi)16047 static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
16048 {
16049 static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16050 NPHY_REV3_RFSEQ_CMD_NOP,
16051 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16052 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16053 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16054 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16055 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16056 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16057 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16058 NPHY_REV3_RFSEQ_CMD_END
16059 };
16060 static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16061 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16062 static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16063 u32 leg_data_weights;
16064 u8 chan_freq_range = 0;
16065 static const u16 dac_control = 0x0002;
16066 u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16067 u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16068 u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16069 s32 min_nvar_val = 0x18d;
16070 s32 min_nvar_offset_6mbps = 20;
16071 u8 pdetrange;
16072 u16 afectrl_adc_ctrl1_rev7 = 0x20;
16073 u16 afectrl_adc_ctrl2_rev7 = 0x0;
16074 u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16075 u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16076 u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16077 static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16078 static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16079 static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16080 u16 ipalvlshift_3p3_war_en = 0;
16081 u16 rccal_bcap_val, rccal_scap_val;
16082 u16 rccal_tx20_11b_bcap = 0;
16083 u16 rccal_tx20_11b_scap = 0;
16084 u16 rccal_tx20_11n_bcap = 0;
16085 u16 rccal_tx20_11n_scap = 0;
16086 u16 rccal_tx40_11n_bcap = 0;
16087 u16 rccal_tx40_11n_scap = 0;
16088 u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16089 u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16090 u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16091 u16 tx_lpf_bw_ofdm_20mhz = 0;
16092 u16 tx_lpf_bw_ofdm_40mhz = 0;
16093 u16 tx_lpf_bw_11b = 0;
16094 u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16095 u16 txgm_idac_bleed = 0;
16096 bool rccal_ovrd = false;
16097 u16 freq;
16098 int coreNum;
16099
16100
16101 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16102 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16103
16104 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16105 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16106 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16107 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16108 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16109 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16110 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16111 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16112 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16113 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16114 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16115 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16116 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16117 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16118 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16119 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16120 }
16121
16122 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16123 write_phy_reg(pi, 0x23f, 0x1b0);
16124 write_phy_reg(pi, 0x240, 0x1b0);
16125 }
16126
16127 if (NREV_GE(pi->pubpi.phy_rev, 8))
16128 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16129
16130 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16131 &dac_control);
16132 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16133 &dac_control);
16134
16135 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16136 1, 0, 32, &leg_data_weights);
16137 leg_data_weights = leg_data_weights & 0xffffff;
16138 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16139 1, 0, 32, &leg_data_weights);
16140
16141 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16142 2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);
16143 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16144 rfseq_rx2tx_dacbufpu_rev7);
16145
16146 if (PHY_IPA(pi))
16147 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16148 rfseq_rx2tx_events_rev3_ipa,
16149 rfseq_rx2tx_dlys_rev3_ipa,
16150 ARRAY_SIZE
16151 (rfseq_rx2tx_events_rev3_ipa));
16152
16153 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16154 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16155
16156 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16157 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16158 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16159
16160 if (PHY_IPA(pi)) {
16161
16162 if (((pi->pubpi.radiorev == 5)
16163 && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16164 || (pi->pubpi.radiorev == 7)
16165 || (pi->pubpi.radiorev == 8)) {
16166
16167 rccal_bcap_val =
16168 read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16169 rccal_scap_val =
16170 read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16171
16172 rccal_tx20_11b_bcap = rccal_bcap_val;
16173 rccal_tx20_11b_scap = rccal_scap_val;
16174
16175 if ((pi->pubpi.radiorev == 5) &&
16176 (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16177
16178 rccal_tx20_11n_bcap = rccal_bcap_val;
16179 rccal_tx20_11n_scap = rccal_scap_val;
16180 rccal_tx40_11n_bcap = 0xc;
16181 rccal_tx40_11n_scap = 0xc;
16182
16183 rccal_ovrd = true;
16184
16185 } else if ((pi->pubpi.radiorev == 7)
16186 || (pi->pubpi.radiorev == 8)) {
16187
16188 tx_lpf_bw_ofdm_20mhz = 4;
16189 tx_lpf_bw_11b = 1;
16190
16191 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16192 rccal_tx20_11n_bcap = 0xc;
16193 rccal_tx20_11n_scap = 0xc;
16194 rccal_tx40_11n_bcap = 0xa;
16195 rccal_tx40_11n_scap = 0xa;
16196 } else {
16197 rccal_tx20_11n_bcap = 0x14;
16198 rccal_tx20_11n_scap = 0x14;
16199 rccal_tx40_11n_bcap = 0xf;
16200 rccal_tx40_11n_scap = 0xf;
16201 }
16202
16203 rccal_ovrd = true;
16204 }
16205 }
16206
16207 } else {
16208
16209 if (pi->pubpi.radiorev == 5) {
16210
16211 tx_lpf_bw_ofdm_20mhz = 1;
16212 tx_lpf_bw_ofdm_40mhz = 3;
16213
16214 rccal_bcap_val =
16215 read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16216 rccal_scap_val =
16217 read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16218
16219 rccal_tx20_11b_bcap = rccal_bcap_val;
16220 rccal_tx20_11b_scap = rccal_scap_val;
16221
16222 rccal_tx20_11n_bcap = 0x13;
16223 rccal_tx20_11n_scap = 0x11;
16224 rccal_tx40_11n_bcap = 0x13;
16225 rccal_tx40_11n_scap = 0x11;
16226
16227 rccal_ovrd = true;
16228 }
16229 }
16230
16231 if (rccal_ovrd) {
16232
16233 rx2tx_lpf_rc_lut_tx20_11b =
16234 (rccal_tx20_11b_bcap << 8) |
16235 (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
16236 rx2tx_lpf_rc_lut_tx20_11n =
16237 (rccal_tx20_11n_bcap << 8) |
16238 (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
16239 rx2tx_lpf_rc_lut_tx40_11n =
16240 (rccal_tx40_11n_bcap << 8) |
16241 (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
16242
16243 for (coreNum = 0; coreNum <= 1; coreNum++) {
16244 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16245 0x152 + coreNum * 0x10, 16,
16246 &rx2tx_lpf_rc_lut_tx20_11b);
16247 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16248 0x153 + coreNum * 0x10, 16,
16249 &rx2tx_lpf_rc_lut_tx20_11n);
16250 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16251 0x154 + coreNum * 0x10, 16,
16252 &rx2tx_lpf_rc_lut_tx20_11n);
16253 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16254 0x155 + coreNum * 0x10, 16,
16255 &rx2tx_lpf_rc_lut_tx40_11n);
16256 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16257 0x156 + coreNum * 0x10, 16,
16258 &rx2tx_lpf_rc_lut_tx40_11n);
16259 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16260 0x157 + coreNum * 0x10, 16,
16261 &rx2tx_lpf_rc_lut_tx40_11n);
16262 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16263 0x158 + coreNum * 0x10, 16,
16264 &rx2tx_lpf_rc_lut_tx40_11n);
16265 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16266 0x159 + coreNum * 0x10, 16,
16267 &rx2tx_lpf_rc_lut_tx40_11n);
16268 }
16269
16270 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
16271 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16272 }
16273
16274 write_phy_reg(pi, 0x32f, 0x3);
16275
16276 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16277 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,
16278 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16279
16280 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16281 (pi->pubpi.radiorev == 6)) {
16282 if ((pi->sh->sromrev >= 8)
16283 && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16284 ipalvlshift_3p3_war_en = 1;
16285
16286 if (ipalvlshift_3p3_war_en) {
16287 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);
16288 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);
16289 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16290 or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);
16291 or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
16292
16293 ipa2g_mainbias = 0x1f;
16294
16295 ipa2g_casconv = 0x6f;
16296
16297 ipa2g_biasfilt = 0xaa;
16298 } else {
16299
16300 ipa2g_mainbias = 0x2b;
16301
16302 ipa2g_casconv = 0x7f;
16303
16304 ipa2g_biasfilt = 0xee;
16305 }
16306
16307 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16308 for (coreNum = 0; coreNum <= 1; coreNum++) {
16309 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16310 coreNum, IPA2G_IMAIN,
16311 ipa2g_mainbias);
16312 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16313 coreNum, IPA2G_CASCONV,
16314 ipa2g_casconv);
16315 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16316 coreNum,
16317 IPA2G_BIAS_FILTER,
16318 ipa2g_biasfilt);
16319 }
16320 }
16321 }
16322
16323 if (PHY_IPA(pi)) {
16324 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16325 if ((pi->pubpi.radiorev == 3)
16326 || (pi->pubpi.radiorev == 4)
16327 || (pi->pubpi.radiorev == 6))
16328 txgm_idac_bleed = 0x7f;
16329
16330 for (coreNum = 0; coreNum <= 1; coreNum++) {
16331 if (txgm_idac_bleed != 0)
16332 WRITE_RADIO_REG4(pi, RADIO_2057,
16333 CORE, coreNum,
16334 TXGM_IDAC_BLEED,
16335 txgm_idac_bleed);
16336 }
16337
16338 if (pi->pubpi.radiorev == 5) {
16339 for (coreNum = 0; coreNum <= 1; coreNum++) {
16340 WRITE_RADIO_REG4(pi, RADIO_2057,
16341 CORE, coreNum,
16342 IPA2G_CASCONV,
16343 0x13);
16344 WRITE_RADIO_REG4(pi, RADIO_2057,
16345 CORE, coreNum,
16346 IPA2G_IMAIN,
16347 0x1f);
16348 WRITE_RADIO_REG4(pi, RADIO_2057,
16349 CORE, coreNum,
16350 IPA2G_BIAS_FILTER,
16351 0xee);
16352 WRITE_RADIO_REG4(pi, RADIO_2057,
16353 CORE, coreNum,
16354 PAD2G_IDACS,
16355 0x8a);
16356 WRITE_RADIO_REG4(pi, RADIO_2057,
16357 CORE, coreNum,
16358 PAD_BIAS_FILTER_BWS,
16359 0x3e);
16360 }
16361 } else if ((pi->pubpi.radiorev == 7) ||
16362 (pi->pubpi.radiorev == 8)) {
16363
16364 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16365 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16366 0, IPA2G_IMAIN, 0x14);
16367 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16368 1, IPA2G_IMAIN, 0x12);
16369 } else {
16370 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16371 0, IPA2G_IMAIN, 0x16);
16372 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16373 1, IPA2G_IMAIN, 0x16);
16374 }
16375 }
16376
16377 } else {
16378 freq =
16379 CHAN5G_FREQ(CHSPEC_CHANNEL
16380 (pi->radio_chanspec));
16381 if (((freq >= 5180) && (freq <= 5230))
16382 || ((freq >= 5745) && (freq <= 5805))) {
16383 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16384 0, IPA5G_BIAS_FILTER, 0xff);
16385 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16386 1, IPA5G_BIAS_FILTER, 0xff);
16387 }
16388 }
16389 } else {
16390
16391 if (pi->pubpi.radiorev != 5) {
16392 for (coreNum = 0; coreNum <= 1; coreNum++) {
16393 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16394 TXMIX2G_TUNE_BOOST_PU, 0x61);
16395 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16396 TXGM_IDAC_BLEED, 0x70);
16397 }
16398 }
16399 }
16400
16401 if (pi->pubpi.radiorev == 4) {
16402 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16403 &afectrl_adc_ctrl1_rev7);
16404 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16405 &afectrl_adc_ctrl1_rev7);
16406
16407 for (coreNum = 0; coreNum <= 1; coreNum++) {
16408 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16409 AFE_VCM_CAL_MASTER, 0x0);
16410 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16411 AFE_SET_VCM_I, 0x3f);
16412 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16413 AFE_SET_VCM_Q, 0x3f);
16414 }
16415 } else {
16416 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16417 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16418 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16419 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16420
16421 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16422 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16423 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16424 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16425
16426 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16427 &afectrl_adc_ctrl2_rev7);
16428 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16429 &afectrl_adc_ctrl2_rev7);
16430
16431 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16432 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16433 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16434 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16435 }
16436
16437 write_phy_reg(pi, 0x6a, 0x2);
16438
16439 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16440 &min_nvar_offset_6mbps);
16441
16442 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16443 &rfseq_pktgn_lpf_hpc_rev7);
16444
16445 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16446 &rfseq_pktgn_lpf_h_hpc_rev7);
16447
16448 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16449 &rfseq_htpktgn_lpf_hpc_rev7);
16450
16451 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16452 &rfseq_cckpktgn_lpf_hpc_rev7);
16453
16454 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16455 &rfseq_tx2rx_lpf_h_hpc_rev7);
16456
16457 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16458 &rfseq_rx2tx_lpf_h_hpc_rev7);
16459
16460 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16461 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16462 32, &min_nvar_val);
16463 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16464 127, 32, &min_nvar_val);
16465 } else {
16466 min_nvar_val = noise_var_tbl_rev7[3];
16467 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16468 32, &min_nvar_val);
16469
16470 min_nvar_val = noise_var_tbl_rev7[127];
16471 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16472 127, 32, &min_nvar_val);
16473 }
16474
16475 wlc_phy_workarounds_nphy_gainctrl(pi);
16476
16477 pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16478 pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16479
16480 if (pdetrange == 0) {
16481 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16482 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16483 aux_adc_vmid_rev7_core0[3] = 0x70;
16484 aux_adc_vmid_rev7_core1[3] = 0x70;
16485 aux_adc_gain_rev7[3] = 2;
16486 } else {
16487 aux_adc_vmid_rev7_core0[3] = 0x80;
16488 aux_adc_vmid_rev7_core1[3] = 0x80;
16489 aux_adc_gain_rev7[3] = 3;
16490 }
16491 } else if (pdetrange == 1) {
16492 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16493 aux_adc_vmid_rev7_core0[3] = 0x7c;
16494 aux_adc_vmid_rev7_core1[3] = 0x7c;
16495 aux_adc_gain_rev7[3] = 2;
16496 } else {
16497 aux_adc_vmid_rev7_core0[3] = 0x8c;
16498 aux_adc_vmid_rev7_core1[3] = 0x8c;
16499 aux_adc_gain_rev7[3] = 1;
16500 }
16501 } else if (pdetrange == 2) {
16502 if (pi->pubpi.radioid == BCM2057_ID) {
16503 if ((pi->pubpi.radiorev == 5)
16504 || (pi->pubpi.radiorev == 7)
16505 || (pi->pubpi.radiorev == 8)) {
16506 if (chan_freq_range ==
16507 WL_CHAN_FREQ_RANGE_2G) {
16508 aux_adc_vmid_rev7_core0[3] = 0x8c;
16509 aux_adc_vmid_rev7_core1[3] = 0x8c;
16510 aux_adc_gain_rev7[3] = 0;
16511 } else {
16512 aux_adc_vmid_rev7_core0[3] = 0x96;
16513 aux_adc_vmid_rev7_core1[3] = 0x96;
16514 aux_adc_gain_rev7[3] = 0;
16515 }
16516 }
16517 }
16518
16519 } else if (pdetrange == 3) {
16520 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16521 aux_adc_vmid_rev7_core0[3] = 0x89;
16522 aux_adc_vmid_rev7_core1[3] = 0x89;
16523 aux_adc_gain_rev7[3] = 0;
16524 }
16525
16526 } else if (pdetrange == 5) {
16527
16528 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16529 aux_adc_vmid_rev7_core0[3] = 0x80;
16530 aux_adc_vmid_rev7_core1[3] = 0x80;
16531 aux_adc_gain_rev7[3] = 3;
16532 } else {
16533 aux_adc_vmid_rev7_core0[3] = 0x70;
16534 aux_adc_vmid_rev7_core1[3] = 0x70;
16535 aux_adc_gain_rev7[3] = 2;
16536 }
16537 }
16538
16539 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16540 &aux_adc_vmid_rev7_core0);
16541 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16542 &aux_adc_vmid_rev7_core1);
16543 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16544 &aux_adc_gain_rev7);
16545 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16546 &aux_adc_gain_rev7);
16547 }
16548
wlc_phy_workarounds_nphy_rev3(struct brcms_phy * pi)16549 static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi)
16550 {
16551 static const u8 rfseq_tx2rx_events_rev3[] = {
16552 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16553 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16554 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16555 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16556 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16557 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16558 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16559 NPHY_REV3_RFSEQ_CMD_END
16560 };
16561 static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16562 u8 rfseq_rx2tx_events_rev3[] = {
16563 NPHY_REV3_RFSEQ_CMD_NOP,
16564 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16565 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16566 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16567 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16568 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16569 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16570 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16571 NPHY_REV3_RFSEQ_CMD_END
16572 };
16573 u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16574 static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16575 NPHY_REV3_RFSEQ_CMD_NOP,
16576 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16577 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16578 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16579 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16580 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16581 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16582 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16583 NPHY_REV3_RFSEQ_CMD_END
16584 };
16585 static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16586 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16587 s16 alpha0, alpha1, alpha2;
16588 s16 beta0, beta1, beta2;
16589 u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16590 stbc_data_weights;
16591 u8 chan_freq_range = 0;
16592 static const u16 dac_control = 0x0002;
16593 u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16594 u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16595 u16 *aux_adc_vmid;
16596 u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16597 u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16598 u16 *aux_adc_gain;
16599 static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16600 static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16601 s32 min_nvar_val = 0x18d;
16602 u8 pdetrange;
16603 u8 triso;
16604
16605 write_phy_reg(pi, 0x23f, 0x1f8);
16606 write_phy_reg(pi, 0x240, 0x1f8);
16607
16608 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16609 1, 0, 32, &leg_data_weights);
16610 leg_data_weights = leg_data_weights & 0xffffff;
16611 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16612 1, 0, 32, &leg_data_weights);
16613
16614 alpha0 = 293;
16615 alpha1 = 435;
16616 alpha2 = 261;
16617 beta0 = 366;
16618 beta1 = 205;
16619 beta2 = 32;
16620 write_phy_reg(pi, 0x145, alpha0);
16621 write_phy_reg(pi, 0x146, alpha1);
16622 write_phy_reg(pi, 0x147, alpha2);
16623 write_phy_reg(pi, 0x148, beta0);
16624 write_phy_reg(pi, 0x149, beta1);
16625 write_phy_reg(pi, 0x14a, beta2);
16626
16627 write_phy_reg(pi, 0x38, 0xC);
16628 write_phy_reg(pi, 0x2ae, 0xC);
16629
16630 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16631 rfseq_tx2rx_events_rev3,
16632 rfseq_tx2rx_dlys_rev3,
16633 ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16634
16635 if (PHY_IPA(pi))
16636 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16637 rfseq_rx2tx_events_rev3_ipa,
16638 rfseq_rx2tx_dlys_rev3_ipa,
16639 ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
16640
16641 if ((pi->sh->hw_phyrxchain != 0x3) &&
16642 (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16643
16644 if (PHY_IPA(pi)) {
16645 rfseq_rx2tx_dlys_rev3[5] = 59;
16646 rfseq_rx2tx_dlys_rev3[6] = 1;
16647 rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
16648 }
16649
16650 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16651 rfseq_rx2tx_events_rev3,
16652 rfseq_rx2tx_dlys_rev3,
16653 ARRAY_SIZE (rfseq_rx2tx_events_rev3));
16654 }
16655
16656 if (CHSPEC_IS2G(pi->radio_chanspec))
16657 write_phy_reg(pi, 0x6a, 0x2);
16658 else
16659 write_phy_reg(pi, 0x6a, 0x9c40);
16660
16661 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16662
16663 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16664 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16665 32, &min_nvar_val);
16666 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16667 127, 32, &min_nvar_val);
16668 } else {
16669 min_nvar_val = noise_var_tbl_rev3[3];
16670 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16671 32, &min_nvar_val);
16672
16673 min_nvar_val = noise_var_tbl_rev3[127];
16674 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16675 127, 32, &min_nvar_val);
16676 }
16677
16678 wlc_phy_workarounds_nphy_gainctrl(pi);
16679
16680 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16681 &dac_control);
16682 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16683 &dac_control);
16684
16685 pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16686 pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16687
16688 if (pdetrange == 0) {
16689 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16690 aux_adc_vmid = aux_adc_vmid_rev4;
16691 aux_adc_gain = aux_adc_gain_rev4;
16692 } else {
16693 aux_adc_vmid = aux_adc_vmid_rev3;
16694 aux_adc_gain = aux_adc_gain_rev3;
16695 }
16696 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16697 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16698 switch (chan_freq_range) {
16699 case WL_CHAN_FREQ_RANGE_5GL:
16700 aux_adc_vmid[3] = 0x89;
16701 aux_adc_gain[3] = 0;
16702 break;
16703 case WL_CHAN_FREQ_RANGE_5GM:
16704 aux_adc_vmid[3] = 0x89;
16705 aux_adc_gain[3] = 0;
16706 break;
16707 case WL_CHAN_FREQ_RANGE_5GH:
16708 aux_adc_vmid[3] = 0x89;
16709 aux_adc_gain[3] = 0;
16710 break;
16711 default:
16712 break;
16713 }
16714 }
16715 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16716 0x08, 16, aux_adc_vmid);
16717 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16718 0x18, 16, aux_adc_vmid);
16719 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16720 0x0c, 16, aux_adc_gain);
16721 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16722 0x1c, 16, aux_adc_gain);
16723 } else if (pdetrange == 1) {
16724 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16725 0x08, 16, sk_adc_vmid);
16726 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16727 0x18, 16, sk_adc_vmid);
16728 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16729 0x0c, 16, sk_adc_gain);
16730 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16731 0x1c, 16, sk_adc_gain);
16732 } else if (pdetrange == 2) {
16733
16734 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16735 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16736
16737 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16738 chan_freq_range =
16739 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16740 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16741 bcm_adc_vmid[3] = 0x8e;
16742 bcm_adc_gain[3] = 0x03;
16743 } else {
16744 bcm_adc_vmid[3] = 0x94;
16745 bcm_adc_gain[3] = 0x03;
16746 }
16747 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16748 bcm_adc_vmid[3] = 0x84;
16749 bcm_adc_gain[3] = 0x02;
16750 }
16751
16752 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16753 0x08, 16, bcm_adc_vmid);
16754 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16755 0x18, 16, bcm_adc_vmid);
16756 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16757 0x0c, 16, bcm_adc_gain);
16758 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16759 0x1c, 16, bcm_adc_gain);
16760 } else if (pdetrange == 3) {
16761 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16762 if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&
16763 (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16764 u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };
16765 u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
16766
16767 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16768 0x08, 16, auxadc_vmid);
16769 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16770 0x18, 16, auxadc_vmid);
16771 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16772 0x0c, 16, auxadc_gain);
16773 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16774 0x1c, 16, auxadc_gain);
16775 }
16776 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16777 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16778 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16779 u16 Vmid[2], Av[2];
16780
16781 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16782 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16783 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16784 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16785 Av[0] = (pdetrange == 4) ? 2 : 0;
16786 Av[1] = (pdetrange == 4) ? 2 : 0;
16787 } else {
16788 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16789 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16790 Av[0] = (pdetrange == 4) ? 2 : 0;
16791 Av[1] = (pdetrange == 4) ? 2 : 0;
16792 }
16793
16794 bcm_adc_vmid[3] = Vmid[0];
16795 bcm_adc_gain[3] = Av[0];
16796 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16797 0x08, 16, bcm_adc_vmid);
16798 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16799 0x0c, 16, bcm_adc_gain);
16800
16801 bcm_adc_vmid[3] = Vmid[1];
16802 bcm_adc_gain[3] = Av[1];
16803 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16804 0x18, 16, bcm_adc_vmid);
16805 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16806 0x1c, 16, bcm_adc_gain);
16807 }
16808
16809 write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
16810 write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
16811
16812 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
16813 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
16814
16815 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
16816 write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
16817
16818 write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
16819 write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
16820
16821 write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16822 write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16823
16824 write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16825 write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16826
16827 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16828 pi->srom_fem5g.triso : pi->srom_fem2g.triso;
16829 if (triso == 7) {
16830 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16831 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16832 }
16833
16834 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16835
16836 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16837 (CHSPEC_IS5G(pi->radio_chanspec))) ||
16838 (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16839 (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16840 (CHSPEC_IS2G(pi->radio_chanspec)))) {
16841 nss1_data_weights = 0x00088888;
16842 ht_data_weights = 0x00088888;
16843 stbc_data_weights = 0x00088888;
16844 } else {
16845 nss1_data_weights = 0x88888888;
16846 ht_data_weights = 0x88888888;
16847 stbc_data_weights = 0x88888888;
16848 }
16849 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16850 1, 1, 32, &nss1_data_weights);
16851 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16852 1, 2, 32, &ht_data_weights);
16853 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16854 1, 3, 32, &stbc_data_weights);
16855
16856 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16857 if (CHSPEC_IS5G(pi->radio_chanspec)) {
16858 write_radio_reg(pi,
16859 RADIO_2056_TX_GMBB_IDAC |
16860 RADIO_2056_TX0, 0x70);
16861 write_radio_reg(pi,
16862 RADIO_2056_TX_GMBB_IDAC |
16863 RADIO_2056_TX1, 0x70);
16864 }
16865 }
16866
16867 if (!pi->edcrs_threshold_lock) {
16868 write_phy_reg(pi, 0x224, 0x3eb);
16869 write_phy_reg(pi, 0x225, 0x3eb);
16870 write_phy_reg(pi, 0x226, 0x341);
16871 write_phy_reg(pi, 0x227, 0x341);
16872 write_phy_reg(pi, 0x228, 0x42b);
16873 write_phy_reg(pi, 0x229, 0x42b);
16874 write_phy_reg(pi, 0x22a, 0x381);
16875 write_phy_reg(pi, 0x22b, 0x381);
16876 write_phy_reg(pi, 0x22c, 0x42b);
16877 write_phy_reg(pi, 0x22d, 0x42b);
16878 write_phy_reg(pi, 0x22e, 0x381);
16879 write_phy_reg(pi, 0x22f, 0x381);
16880 }
16881
16882 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16883
16884 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
16885 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16886 MHF4_BPHY_TXCORE0,
16887 MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
16888 }
16889 }
16890
wlc_phy_workarounds_nphy_rev1(struct brcms_phy * pi)16891 static void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi)
16892 {
16893 static const u8 rfseq_rx2tx_events[] = {
16894 NPHY_RFSEQ_CMD_NOP,
16895 NPHY_RFSEQ_CMD_RXG_FBW,
16896 NPHY_RFSEQ_CMD_TR_SWITCH,
16897 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16898 NPHY_RFSEQ_CMD_RXPD_TXPD,
16899 NPHY_RFSEQ_CMD_TX_GAIN,
16900 NPHY_RFSEQ_CMD_EXT_PA
16901 };
16902 u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16903 static const u8 rfseq_tx2rx_events[] = {
16904 NPHY_RFSEQ_CMD_NOP,
16905 NPHY_RFSEQ_CMD_EXT_PA,
16906 NPHY_RFSEQ_CMD_TX_GAIN,
16907 NPHY_RFSEQ_CMD_RXPD_TXPD,
16908 NPHY_RFSEQ_CMD_TR_SWITCH,
16909 NPHY_RFSEQ_CMD_RXG_FBW,
16910 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16911 };
16912 static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16913 s16 alpha0, alpha1, alpha2;
16914 s16 beta0, beta1, beta2;
16915 u16 regval;
16916
16917 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16918 (pi->sh->boardtype == 0x8b)) {
16919 uint i;
16920 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16921 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16922 rfseq_rx2tx_dlys[i] = war_dlys[i];
16923 }
16924
16925 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16926 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16927 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16928 } else {
16929 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16930 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16931 }
16932
16933 regval = 0x000a;
16934 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, ®val);
16935 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, ®val);
16936
16937 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16938 regval = 0xcdaa;
16939 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, ®val);
16940 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, ®val);
16941 }
16942
16943 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16944 regval = 0x0000;
16945 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, ®val);
16946 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, ®val);
16947
16948 regval = 0x7aab;
16949 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, ®val);
16950 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, ®val);
16951
16952 regval = 0x0800;
16953 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, ®val);
16954 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, ®val);
16955 }
16956
16957 write_phy_reg(pi, 0xf8, 0x02d8);
16958 write_phy_reg(pi, 0xf9, 0x0301);
16959 write_phy_reg(pi, 0xfa, 0x02d8);
16960 write_phy_reg(pi, 0xfb, 0x0301);
16961
16962 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16963 rfseq_rx2tx_dlys,
16964 ARRAY_SIZE(rfseq_rx2tx_events));
16965
16966 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16967 rfseq_tx2rx_dlys,
16968 ARRAY_SIZE(rfseq_tx2rx_events));
16969
16970 wlc_phy_workarounds_nphy_gainctrl(pi);
16971
16972 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16973
16974 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16975 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16976 MHF3_NPHY_MLADV_WAR,
16977 MHF3_NPHY_MLADV_WAR, BRCM_BAND_ALL);
16978
16979 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16980 write_phy_reg(pi, 0x1e3, 0x0);
16981 write_phy_reg(pi, 0x1e4, 0x0);
16982 }
16983
16984 if (NREV_LT(pi->pubpi.phy_rev, 2))
16985 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
16986
16987 alpha0 = 293;
16988 alpha1 = 435;
16989 alpha2 = 261;
16990 beta0 = 366;
16991 beta1 = 205;
16992 beta2 = 32;
16993 write_phy_reg(pi, 0x145, alpha0);
16994 write_phy_reg(pi, 0x146, alpha1);
16995 write_phy_reg(pi, 0x147, alpha2);
16996 write_phy_reg(pi, 0x148, beta0);
16997 write_phy_reg(pi, 0x149, beta1);
16998 write_phy_reg(pi, 0x14a, beta2);
16999
17000 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17001 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17002
17003 write_phy_reg(pi, 0x192, 0xb5);
17004 write_phy_reg(pi, 0x193, 0xa4);
17005 write_phy_reg(pi, 0x194, 0x0);
17006 }
17007
17008 if (NREV_IS(pi->pubpi.phy_rev, 2))
17009 mod_phy_reg(pi, 0x221,
17010 NPHY_FORCESIG_DECODEGATEDCLKS,
17011 NPHY_FORCESIG_DECODEGATEDCLKS);
17012 }
17013
wlc_phy_workarounds_nphy(struct brcms_phy * pi)17014 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
17015 {
17016 if (CHSPEC_IS5G(pi->radio_chanspec))
17017 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
17018 else
17019 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
17020
17021 if (pi->phyhang_avoid)
17022 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17023
17024 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
17025
17026 if (NREV_GE(pi->pubpi.phy_rev, 7))
17027 wlc_phy_workarounds_nphy_rev7(pi);
17028 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17029 wlc_phy_workarounds_nphy_rev3(pi);
17030 else
17031 wlc_phy_workarounds_nphy_rev1(pi);
17032
17033 if (pi->phyhang_avoid)
17034 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17035 }
17036
wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy * pi)17037 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17038 {
17039 int j, type = 2;
17040 u16 addr_offset = 0x2c5;
17041
17042 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17043 write_phy_reg(pi, addr_offset + j,
17044 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17045 }
17046
wlc_phy_clip_det_nphy(struct brcms_phy * pi,u8 write,u16 * vals)17047 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17048 {
17049
17050 if (write == 0) {
17051 vals[0] = read_phy_reg(pi, 0x2c);
17052 vals[1] = read_phy_reg(pi, 0x42);
17053 } else {
17054 write_phy_reg(pi, 0x2c, vals[0]);
17055 write_phy_reg(pi, 0x42, vals[1]);
17056 }
17057 }
17058
wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy * pi)17059 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17060 {
17061 u8 core;
17062
17063 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17064 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17065 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17066 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17067 TX_SSI_MASTER, 0x5);
17068 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17069 TX_SSI_MUX, 0xe);
17070
17071 if (pi->pubpi.radiorev != 5)
17072 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17073 core, TSSIA, 0);
17074
17075 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17076 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17077 core, TSSIG, 0x1);
17078 else
17079 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17080 core, TSSIG, 0x31);
17081 } else {
17082 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17083 TX_SSI_MASTER, 0x9);
17084 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17085 TX_SSI_MUX, 0xc);
17086 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17087 TSSIG, 0);
17088
17089 if (pi->pubpi.radiorev != 5) {
17090 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17091 WRITE_RADIO_REG3(pi, RADIO_2057,
17092 TX, core,
17093 TSSIA, 0x1);
17094 else
17095 WRITE_RADIO_REG3(pi, RADIO_2057,
17096 TX, core,
17097 TSSIA, 0x31);
17098 }
17099 }
17100 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17101 0);
17102 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17103 0);
17104 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17105 0x3);
17106 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17107 0x0);
17108 }
17109 } else {
17110 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17111 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17112 0x80);
17113 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17114 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17115
17116 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17117 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17118 0x0);
17119 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17120 0x0);
17121 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17122 0x3);
17123 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17124 0x0);
17125 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17126 0x8);
17127 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17128 0x0);
17129 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17130 0x0);
17131
17132 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17133 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17134 TX_SSI_MASTER, 0x5);
17135
17136 if (pi->pubpi.radiorev != 5)
17137 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17138 core, TSSIA, 0x0);
17139 if (NREV_GE(pi->pubpi.phy_rev, 5))
17140 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17141 core, TSSIG, 0x31);
17142 else
17143 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17144 core, TSSIG, 0x11);
17145 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17146 TX_SSI_MUX, 0xe);
17147 } else {
17148 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17149 TX_SSI_MASTER, 0x9);
17150 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17151 TSSIA, 0x31);
17152 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17153 TSSIG, 0x0);
17154 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17155 TX_SSI_MUX, 0xc);
17156 }
17157 }
17158 }
17159 }
17160
17161 static void
wlc_phy_rfctrl_override_nphy(struct brcms_phy * pi,u16 field,u16 value,u8 core_mask,u8 off)17162 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17163 u8 core_mask, u8 off)
17164 {
17165 u8 core_num;
17166 u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17167 0, val_mask = 0;
17168 u8 shift = 0, val_shift = 0;
17169
17170 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17171
17172 en_mask = field;
17173 for (core_num = 0; core_num < 2; core_num++) {
17174
17175 switch (field) {
17176 case (0x1 << 1):
17177 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17178 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17179 val_mask = (0x1 << 0);
17180 val_shift = 0;
17181 break;
17182 case (0x1 << 2):
17183 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17184 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17185 val_mask = (0x1 << 1);
17186 val_shift = 1;
17187 break;
17188 case (0x1 << 3):
17189 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17190 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17191 val_mask = (0x1 << 2);
17192 val_shift = 2;
17193 break;
17194 case (0x1 << 4):
17195 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17196 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17197 val_mask = (0x1 << 4);
17198 val_shift = 4;
17199 break;
17200 case (0x1 << 5):
17201 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17202 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17203 val_mask = (0x1 << 5);
17204 val_shift = 5;
17205 break;
17206 case (0x1 << 6):
17207 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17208 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17209 val_mask = (0x1 << 6);
17210 val_shift = 6;
17211 break;
17212 case (0x1 << 7):
17213 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17214 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17215 val_mask = (0x1 << 7);
17216 val_shift = 7;
17217 break;
17218 case (0x1 << 8):
17219 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17220 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17221 val_mask = (0x7 << 8);
17222 val_shift = 8;
17223 break;
17224 case (0x1 << 11):
17225 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17226 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17227 val_mask = (0x7 << 13);
17228 val_shift = 13;
17229 break;
17230
17231 case (0x1 << 9):
17232 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17233 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17234 val_mask = (0x7 << 0);
17235 val_shift = 0;
17236 break;
17237
17238 case (0x1 << 10):
17239 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17240 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17241 val_mask = (0x7 << 4);
17242 val_shift = 4;
17243 break;
17244
17245 case (0x1 << 12):
17246 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17247 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17248 val_mask = (0xffff << 0);
17249 val_shift = 0;
17250 break;
17251 case (0x1 << 13):
17252 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17253 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17254 val_mask = (0xffff << 0);
17255 val_shift = 0;
17256 break;
17257 case (0x1 << 14):
17258 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17259 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17260 val_mask = (0x3 << 6);
17261 val_shift = 6;
17262 break;
17263 case (0x1 << 0):
17264 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17265 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17266 val_mask = (0x1 << 15);
17267 val_shift = 15;
17268 break;
17269 default:
17270 addr = 0xffff;
17271 break;
17272 }
17273
17274 if (off) {
17275 and_phy_reg(pi, en_addr, ~en_mask);
17276 and_phy_reg(pi, val_addr, ~val_mask);
17277 } else {
17278
17279 if ((core_mask == 0)
17280 || (core_mask & (1 << core_num))) {
17281 or_phy_reg(pi, en_addr, en_mask);
17282
17283 if (addr != 0xffff)
17284 mod_phy_reg(pi, val_addr,
17285 val_mask,
17286 (value <<
17287 val_shift));
17288 }
17289 }
17290 }
17291 } else {
17292
17293 if (off) {
17294 and_phy_reg(pi, 0xec, ~field);
17295 value = 0x0;
17296 } else {
17297 or_phy_reg(pi, 0xec, field);
17298 }
17299
17300 for (core_num = 0; core_num < 2; core_num++) {
17301
17302 switch (field) {
17303 case (0x1 << 1):
17304 case (0x1 << 9):
17305 case (0x1 << 12):
17306 case (0x1 << 13):
17307 case (0x1 << 14):
17308 addr = 0x78;
17309
17310 core_mask = 0x1;
17311 break;
17312 case (0x1 << 2):
17313 case (0x1 << 3):
17314 case (0x1 << 4):
17315 case (0x1 << 5):
17316 case (0x1 << 6):
17317 case (0x1 << 7):
17318 case (0x1 << 8):
17319 addr = (core_num == 0) ? 0x7a : 0x7d;
17320 break;
17321 case (0x1 << 10):
17322 addr = (core_num == 0) ? 0x7b : 0x7e;
17323 break;
17324 case (0x1 << 11):
17325 addr = (core_num == 0) ? 0x7c : 0x7f;
17326 break;
17327 default:
17328 addr = 0xffff;
17329 }
17330
17331 switch (field) {
17332 case (0x1 << 1):
17333 mask = (0x7 << 3);
17334 shift = 3;
17335 break;
17336 case (0x1 << 9):
17337 mask = (0x1 << 2);
17338 shift = 2;
17339 break;
17340 case (0x1 << 12):
17341 mask = (0x1 << 8);
17342 shift = 8;
17343 break;
17344 case (0x1 << 13):
17345 mask = (0x1 << 9);
17346 shift = 9;
17347 break;
17348 case (0x1 << 14):
17349 mask = (0xf << 12);
17350 shift = 12;
17351 break;
17352 case (0x1 << 2):
17353 mask = (0x1 << 0);
17354 shift = 0;
17355 break;
17356 case (0x1 << 3):
17357 mask = (0x1 << 1);
17358 shift = 1;
17359 break;
17360 case (0x1 << 4):
17361 mask = (0x1 << 2);
17362 shift = 2;
17363 break;
17364 case (0x1 << 5):
17365 mask = (0x3 << 4);
17366 shift = 4;
17367 break;
17368 case (0x1 << 6):
17369 mask = (0x3 << 6);
17370 shift = 6;
17371 break;
17372 case (0x1 << 7):
17373 mask = (0x1 << 8);
17374 shift = 8;
17375 break;
17376 case (0x1 << 8):
17377 mask = (0x1 << 9);
17378 shift = 9;
17379 break;
17380 case (0x1 << 10):
17381 mask = 0x1fff;
17382 shift = 0x0;
17383 break;
17384 case (0x1 << 11):
17385 mask = 0x1fff;
17386 shift = 0x0;
17387 break;
17388 default:
17389 mask = 0x0;
17390 shift = 0x0;
17391 break;
17392 }
17393
17394 if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17395 mod_phy_reg(pi, addr, mask, (value << shift));
17396 }
17397
17398 or_phy_reg(pi, 0xec, (0x1 << 0));
17399 or_phy_reg(pi, 0x78, (0x1 << 0));
17400 udelay(1);
17401 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17402 }
17403 }
17404
wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy * pi)17405 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17406 {
17407 s32 rssi_buf[4];
17408 s32 int_val;
17409
17410 if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17411
17412 return;
17413
17414 if (PHY_IPA(pi))
17415 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17416
17417 if (NREV_GE(pi->pubpi.phy_rev, 7))
17418 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17419 0, 0x3, 0,
17420 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17421 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17422 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17423
17424 wlc_phy_stopplayback_nphy(pi);
17425
17426 wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17427
17428 udelay(20);
17429 int_val =
17430 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17431 1);
17432 wlc_phy_stopplayback_nphy(pi);
17433 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17434
17435 if (NREV_GE(pi->pubpi.phy_rev, 7))
17436 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17437 0, 0x3, 1,
17438 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17439 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17440 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17441
17442 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17443
17444 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17445 (u8) ((int_val >> 24) & 0xff);
17446 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17447 (u8) ((int_val >> 24) & 0xff);
17448
17449 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17450 (u8) ((int_val >> 8) & 0xff);
17451 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17452 (u8) ((int_val >> 8) & 0xff);
17453 } else {
17454 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17455 (u8) ((int_val >> 24) & 0xff);
17456
17457 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17458 (u8) ((int_val >> 8) & 0xff);
17459
17460 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17461 (u8) ((int_val >> 16) & 0xff);
17462 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17463 (u8) ((int_val) & 0xff);
17464 }
17465
17466 }
17467
wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy * pi)17468 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17469 {
17470 u8 idx, idx2, i, delta_ind;
17471
17472 for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17473 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17474
17475 for (i = 0; i < 4; i++) {
17476 idx2 = 0;
17477
17478 delta_ind = 0;
17479
17480 switch (i) {
17481 case 0:
17482
17483 if (CHSPEC_IS40(pi->radio_chanspec)
17484 && NPHY_IS_SROM_REINTERPRET) {
17485 idx = TXP_FIRST_MCS_40_SISO;
17486 } else {
17487 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17488 TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17489 delta_ind = 1;
17490 }
17491 break;
17492
17493 case 1:
17494
17495 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17496 TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17497 break;
17498
17499 case 2:
17500
17501 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17502 TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17503 break;
17504
17505 case 3:
17506
17507 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17508 TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17509 break;
17510 }
17511
17512 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17513 pi->tx_power_offset[idx];
17514 idx = idx + delta_ind;
17515 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17516 pi->tx_power_offset[idx];
17517 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17518 pi->tx_power_offset[idx];
17519 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17520 pi->tx_power_offset[idx++];
17521
17522 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17523 pi->tx_power_offset[idx++];
17524 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17525 pi->tx_power_offset[idx];
17526 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17527 pi->tx_power_offset[idx];
17528 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17529 pi->tx_power_offset[idx++];
17530
17531 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17532 pi->tx_power_offset[idx++];
17533 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17534 pi->tx_power_offset[idx];
17535 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17536 pi->tx_power_offset[idx];
17537 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17538 pi->tx_power_offset[idx++];
17539
17540 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17541 pi->tx_power_offset[idx];
17542 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17543 pi->tx_power_offset[idx++];
17544 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17545 pi->tx_power_offset[idx];
17546 idx = idx + 1 - delta_ind;
17547 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17548 pi->tx_power_offset[idx];
17549
17550 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17551 pi->tx_power_offset[idx];
17552 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17553 pi->tx_power_offset[idx];
17554 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17555 pi->tx_power_offset[idx];
17556 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17557 pi->tx_power_offset[idx];
17558 }
17559 }
17560
wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy * pi)17561 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17562 {
17563 u32 idx;
17564 s16 a1[2], b0[2], b1[2];
17565 s8 target_pwr_qtrdbm[2];
17566 s32 num, den, pwr_est;
17567 u8 chan_freq_range;
17568 u8 idle_tssi[2];
17569 u32 tbl_id, tbl_len, tbl_offset;
17570 u32 regval[64];
17571 u8 core;
17572
17573 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17574 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17575 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17576 udelay(1);
17577 }
17578
17579 if (pi->phyhang_avoid)
17580 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17581
17582 or_phy_reg(pi, 0x122, (0x1 << 0));
17583
17584 if (NREV_GE(pi->pubpi.phy_rev, 3))
17585 and_phy_reg(pi, 0x1e7, 0x7fff);
17586 else
17587 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17588
17589 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17590 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17591
17592 if (pi->sh->sromrev < 4) {
17593 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17594 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17595 a1[0] = -424;
17596 a1[1] = -424;
17597 b0[0] = 5612;
17598 b0[1] = 5612;
17599 b1[1] = -1393;
17600 b1[0] = -1393;
17601 } else {
17602
17603 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17604 switch (chan_freq_range) {
17605 case WL_CHAN_FREQ_RANGE_2G:
17606 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17607 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17608 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17609 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17610 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17611 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17612 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17613 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17614 break;
17615 case WL_CHAN_FREQ_RANGE_5GL:
17616 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17617 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17618 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17619 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17620 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17621 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17622 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17623 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17624 break;
17625 case WL_CHAN_FREQ_RANGE_5GM:
17626 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17627 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17628 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17629 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17630 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17631 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17632 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17633 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17634 break;
17635 case WL_CHAN_FREQ_RANGE_5GH:
17636 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17637 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17638 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17639 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17640 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17641 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17642 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17643 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17644 break;
17645 default:
17646 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17647 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17648 a1[0] = -424;
17649 a1[1] = -424;
17650 b0[0] = 5612;
17651 b0[1] = 5612;
17652 b1[1] = -1393;
17653 b1[0] = -1393;
17654 break;
17655 }
17656 }
17657
17658 /* use the provided transmit power */
17659 target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17660 target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17661
17662 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17663 if (pi->srom_fem2g.tssipos)
17664 or_phy_reg(pi, 0x1e9, (0x1 << 14));
17665
17666 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17667 for (core = 0; core <= 1; core++) {
17668 if (PHY_IPA(pi)) {
17669 if (CHSPEC_IS2G(pi->radio_chanspec))
17670 WRITE_RADIO_REG3(pi, RADIO_2057,
17671 TX, core,
17672 TX_SSI_MUX,
17673 0xe);
17674 else
17675 WRITE_RADIO_REG3(pi, RADIO_2057,
17676 TX, core,
17677 TX_SSI_MUX,
17678 0xc);
17679 }
17680 }
17681 } else {
17682 if (PHY_IPA(pi)) {
17683
17684 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17685 RADIO_2056_TX0,
17686 (CHSPEC_IS5G
17687 (pi->radio_chanspec)) ?
17688 0xc : 0xe);
17689 write_radio_reg(pi,
17690 RADIO_2056_TX_TX_SSI_MUX |
17691 RADIO_2056_TX1,
17692 (CHSPEC_IS5G
17693 (pi->radio_chanspec)) ?
17694 0xc : 0xe);
17695 } else {
17696
17697 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17698 RADIO_2056_TX0, 0x11);
17699 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17700 RADIO_2056_TX1, 0x11);
17701 }
17702 }
17703 }
17704
17705 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17706 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17707 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17708 udelay(1);
17709 }
17710
17711 if (NREV_GE(pi->pubpi.phy_rev, 7))
17712 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17713 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17714 else
17715 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17716 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17717
17718 if (NREV_GE(pi->pubpi.phy_rev, 7))
17719 mod_phy_reg(pi, 0x222, (0xff << 0),
17720 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17721 else if (NREV_GT(pi->pubpi.phy_rev, 1))
17722 mod_phy_reg(pi, 0x222, (0xff << 0),
17723 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17724
17725 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17726 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17727
17728 write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17729
17730 write_phy_reg(pi, 0x1e9,
17731 (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17732
17733 write_phy_reg(pi, 0x1ea,
17734 (target_pwr_qtrdbm[0] << 0) |
17735 (target_pwr_qtrdbm[1] << 8));
17736
17737 tbl_len = 64;
17738 tbl_offset = 0;
17739 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17740 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17741
17742 for (idx = 0; idx < tbl_len; idx++) {
17743 num = 8 *
17744 (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17745 den = 32768 + a1[tbl_id - 26] * idx;
17746 pwr_est = max(DIV_ROUND_CLOSEST(4 * num, den), -8);
17747 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17748 if (idx <=
17749 (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17750 pwr_est =
17751 max(pwr_est,
17752 target_pwr_qtrdbm
17753 [tbl_id - 26] + 1);
17754 }
17755 regval[idx] = (u32) pwr_est;
17756 }
17757 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17758 regval);
17759 }
17760
17761 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17762 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17763 pi->adj_pwr_tbl_nphy);
17764 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17765 pi->adj_pwr_tbl_nphy);
17766
17767 if (pi->phyhang_avoid)
17768 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17769 }
17770
wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy * pi)17771 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17772 {
17773 u32 *tx_pwrctrl_tbl = NULL;
17774
17775 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17776 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17777 if ((pi->pubpi.radiorev == 4)
17778 || (pi->pubpi.radiorev == 6))
17779 tx_pwrctrl_tbl =
17780 nphy_tpc_txgain_ipa_2g_2057rev4n6;
17781 else if (pi->pubpi.radiorev == 3)
17782 tx_pwrctrl_tbl =
17783 nphy_tpc_txgain_ipa_2g_2057rev3;
17784 else if (pi->pubpi.radiorev == 5)
17785 tx_pwrctrl_tbl =
17786 nphy_tpc_txgain_ipa_2g_2057rev5;
17787 else if ((pi->pubpi.radiorev == 7)
17788 || (pi->pubpi.radiorev == 8))
17789 tx_pwrctrl_tbl =
17790 nphy_tpc_txgain_ipa_2g_2057rev7;
17791 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17792 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17793 if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17794 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17795 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17796 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17797 } else {
17798 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17799 }
17800 } else {
17801
17802 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17803 if ((pi->pubpi.radiorev == 3) ||
17804 (pi->pubpi.radiorev == 4) ||
17805 (pi->pubpi.radiorev == 6))
17806 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17807 else if ((pi->pubpi.radiorev == 7)
17808 || (pi->pubpi.radiorev == 8))
17809 tx_pwrctrl_tbl =
17810 nphy_tpc_txgain_ipa_5g_2057rev7;
17811 } else {
17812 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17813 }
17814 }
17815
17816 return tx_pwrctrl_tbl;
17817 }
17818
wlc_phy_restore_rssical_nphy(struct brcms_phy * pi)17819 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17820 {
17821 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17822 if (pi->nphy_rssical_chanspec_2G == 0)
17823 return;
17824
17825 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17826 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17827 RADIO_2057_VCM_MASK,
17828 pi->rssical_cache.
17829 rssical_radio_regs_2G[0]);
17830 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17831 RADIO_2057_VCM_MASK,
17832 pi->rssical_cache.
17833 rssical_radio_regs_2G[1]);
17834 } else {
17835 mod_radio_reg(pi,
17836 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17837 RADIO_2056_VCM_MASK,
17838 pi->rssical_cache.
17839 rssical_radio_regs_2G[0]);
17840 mod_radio_reg(pi,
17841 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17842 RADIO_2056_VCM_MASK,
17843 pi->rssical_cache.
17844 rssical_radio_regs_2G[1]);
17845 }
17846
17847 write_phy_reg(pi, 0x1a6,
17848 pi->rssical_cache.rssical_phyregs_2G[0]);
17849 write_phy_reg(pi, 0x1ac,
17850 pi->rssical_cache.rssical_phyregs_2G[1]);
17851 write_phy_reg(pi, 0x1b2,
17852 pi->rssical_cache.rssical_phyregs_2G[2]);
17853 write_phy_reg(pi, 0x1b8,
17854 pi->rssical_cache.rssical_phyregs_2G[3]);
17855 write_phy_reg(pi, 0x1a4,
17856 pi->rssical_cache.rssical_phyregs_2G[4]);
17857 write_phy_reg(pi, 0x1aa,
17858 pi->rssical_cache.rssical_phyregs_2G[5]);
17859 write_phy_reg(pi, 0x1b0,
17860 pi->rssical_cache.rssical_phyregs_2G[6]);
17861 write_phy_reg(pi, 0x1b6,
17862 pi->rssical_cache.rssical_phyregs_2G[7]);
17863 write_phy_reg(pi, 0x1a5,
17864 pi->rssical_cache.rssical_phyregs_2G[8]);
17865 write_phy_reg(pi, 0x1ab,
17866 pi->rssical_cache.rssical_phyregs_2G[9]);
17867 write_phy_reg(pi, 0x1b1,
17868 pi->rssical_cache.rssical_phyregs_2G[10]);
17869 write_phy_reg(pi, 0x1b7,
17870 pi->rssical_cache.rssical_phyregs_2G[11]);
17871
17872 } else {
17873 if (pi->nphy_rssical_chanspec_5G == 0)
17874 return;
17875
17876 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17877 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17878 RADIO_2057_VCM_MASK,
17879 pi->rssical_cache.
17880 rssical_radio_regs_5G[0]);
17881 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17882 RADIO_2057_VCM_MASK,
17883 pi->rssical_cache.
17884 rssical_radio_regs_5G[1]);
17885 } else {
17886 mod_radio_reg(pi,
17887 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17888 RADIO_2056_VCM_MASK,
17889 pi->rssical_cache.
17890 rssical_radio_regs_5G[0]);
17891 mod_radio_reg(pi,
17892 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17893 RADIO_2056_VCM_MASK,
17894 pi->rssical_cache.
17895 rssical_radio_regs_5G[1]);
17896 }
17897
17898 write_phy_reg(pi, 0x1a6,
17899 pi->rssical_cache.rssical_phyregs_5G[0]);
17900 write_phy_reg(pi, 0x1ac,
17901 pi->rssical_cache.rssical_phyregs_5G[1]);
17902 write_phy_reg(pi, 0x1b2,
17903 pi->rssical_cache.rssical_phyregs_5G[2]);
17904 write_phy_reg(pi, 0x1b8,
17905 pi->rssical_cache.rssical_phyregs_5G[3]);
17906 write_phy_reg(pi, 0x1a4,
17907 pi->rssical_cache.rssical_phyregs_5G[4]);
17908 write_phy_reg(pi, 0x1aa,
17909 pi->rssical_cache.rssical_phyregs_5G[5]);
17910 write_phy_reg(pi, 0x1b0,
17911 pi->rssical_cache.rssical_phyregs_5G[6]);
17912 write_phy_reg(pi, 0x1b6,
17913 pi->rssical_cache.rssical_phyregs_5G[7]);
17914 write_phy_reg(pi, 0x1a5,
17915 pi->rssical_cache.rssical_phyregs_5G[8]);
17916 write_phy_reg(pi, 0x1ab,
17917 pi->rssical_cache.rssical_phyregs_5G[9]);
17918 write_phy_reg(pi, 0x1b1,
17919 pi->rssical_cache.rssical_phyregs_5G[10]);
17920 write_phy_reg(pi, 0x1b7,
17921 pi->rssical_cache.rssical_phyregs_5G[11]);
17922 }
17923 }
17924
wlc_phy_internal_cal_txgain_nphy(struct brcms_phy * pi)17925 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
17926 {
17927 u16 txcal_gain[2];
17928
17929 pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
17930 pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
17931 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
17932 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
17933
17934 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17935 txcal_gain);
17936
17937 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17938 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
17939 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
17940 } else {
17941 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
17942 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
17943 }
17944
17945 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17946 txcal_gain);
17947 }
17948
wlc_phy_precal_txgain_nphy(struct brcms_phy * pi)17949 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
17950 {
17951 bool save_bbmult = false;
17952 u8 txcal_index_2057_rev5n7 = 0;
17953 u8 txcal_index_2057_rev3n4n6 = 10;
17954
17955 if (pi->use_int_tx_iqlo_cal_nphy) {
17956 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17957 if ((pi->pubpi.radiorev == 3) ||
17958 (pi->pubpi.radiorev == 4) ||
17959 (pi->pubpi.radiorev == 6)) {
17960
17961 pi->nphy_txcal_pwr_idx[0] =
17962 txcal_index_2057_rev3n4n6;
17963 pi->nphy_txcal_pwr_idx[1] =
17964 txcal_index_2057_rev3n4n6;
17965 wlc_phy_txpwr_index_nphy(
17966 pi, 3,
17967 txcal_index_2057_rev3n4n6,
17968 false);
17969 } else {
17970
17971 pi->nphy_txcal_pwr_idx[0] =
17972 txcal_index_2057_rev5n7;
17973 pi->nphy_txcal_pwr_idx[1] =
17974 txcal_index_2057_rev5n7;
17975 wlc_phy_txpwr_index_nphy(
17976 pi, 3,
17977 txcal_index_2057_rev5n7,
17978 false);
17979 }
17980 save_bbmult = true;
17981
17982 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
17983 wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
17984 if (pi->sh->hw_phytxchain != 3) {
17985 pi->nphy_txcal_pwr_idx[1] =
17986 pi->nphy_txcal_pwr_idx[0];
17987 wlc_phy_txpwr_index_nphy(pi, 3,
17988 pi->
17989 nphy_txcal_pwr_idx[0],
17990 true);
17991 save_bbmult = true;
17992 }
17993
17994 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17995 if (PHY_IPA(pi)) {
17996 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17997 wlc_phy_cal_txgainctrl_nphy(pi, 12,
17998 false);
17999 } else {
18000 pi->nphy_txcal_pwr_idx[0] = 80;
18001 pi->nphy_txcal_pwr_idx[1] = 80;
18002 wlc_phy_txpwr_index_nphy(pi, 3, 80,
18003 false);
18004 save_bbmult = true;
18005 }
18006 } else {
18007 wlc_phy_internal_cal_txgain_nphy(pi);
18008 save_bbmult = true;
18009 }
18010
18011 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18012 if (PHY_IPA(pi)) {
18013 if (CHSPEC_IS2G(pi->radio_chanspec))
18014 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18015 false);
18016 else
18017 wlc_phy_cal_txgainctrl_nphy(pi, 14,
18018 false);
18019 } else {
18020 wlc_phy_internal_cal_txgain_nphy(pi);
18021 save_bbmult = true;
18022 }
18023 }
18024
18025 } else {
18026 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18027 }
18028
18029 if (save_bbmult)
18030 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18031 &pi->nphy_txcal_bbmult);
18032 }
18033
18034 static void
wlc_phy_rfctrlintc_override_nphy(struct brcms_phy * pi,u8 field,u16 value,u8 core_code)18035 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18036 u8 core_code)
18037 {
18038 u16 mask;
18039 u16 val;
18040 u8 core;
18041
18042 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18043 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18044 if (core_code == RADIO_MIMO_CORESEL_CORE1
18045 && core == PHY_CORE_1)
18046 continue;
18047 else if (core_code == RADIO_MIMO_CORESEL_CORE2
18048 && core == PHY_CORE_0)
18049 continue;
18050
18051 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18052
18053 mask = (0x1 << 10);
18054 val = 1 << 10;
18055 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18056 0x92, mask, val);
18057 }
18058
18059 if (field == NPHY_RfctrlIntc_override_OFF) {
18060
18061 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18062 0x92, 0);
18063
18064 wlc_phy_force_rfseq_nphy(pi,
18065 NPHY_RFSEQ_RESET2RX);
18066 } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18067
18068 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18069
18070 mask = (0x1 << 6) | (0x1 << 7);
18071
18072 val = value << 6;
18073 mod_phy_reg(pi,
18074 (core ==
18075 PHY_CORE_0) ? 0x91 : 0x92,
18076 mask, val);
18077
18078 or_phy_reg(pi,
18079 (core ==
18080 PHY_CORE_0) ? 0x91 : 0x92,
18081 (0x1 << 10));
18082
18083 and_phy_reg(pi, 0x2ff, (u16)
18084 0xffff & ~(0x3 << 14));
18085 or_phy_reg(pi, 0x2ff, (0x1 << 13));
18086 or_phy_reg(pi, 0x2ff, (0x1 << 0));
18087 } else {
18088
18089 mask = (0x1 << 6) |
18090 (0x1 << 7) |
18091 (0x1 << 8) | (0x1 << 9);
18092 val = value << 6;
18093 mod_phy_reg(pi,
18094 (core ==
18095 PHY_CORE_0) ? 0x91 : 0x92,
18096 mask, val);
18097
18098 mask = (0x1 << 0);
18099 val = 1 << 0;
18100 mod_phy_reg(pi,
18101 (core ==
18102 PHY_CORE_0) ? 0xe7 : 0xec,
18103 mask, val);
18104
18105 mask = (core == PHY_CORE_0) ?
18106 (0x1 << 0) : (0x1 << 1);
18107 val = 1 << ((core == PHY_CORE_0) ?
18108 0 : 1);
18109 mod_phy_reg(pi, 0x78, mask, val);
18110
18111 SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18112 != 0), 10000);
18113 if (WARN(read_phy_reg(pi, 0x78) & val,
18114 "HW error: override failed"))
18115 return;
18116
18117 mask = (0x1 << 0);
18118 val = 0 << 0;
18119 mod_phy_reg(pi,
18120 (core ==
18121 PHY_CORE_0) ? 0xe7 : 0xec,
18122 mask, val);
18123 }
18124 } else if (field == NPHY_RfctrlIntc_override_PA) {
18125 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18126
18127 mask = (0x1 << 4) | (0x1 << 5);
18128
18129 if (CHSPEC_IS5G(pi->radio_chanspec))
18130 val = value << 5;
18131 else
18132 val = value << 4;
18133
18134 mod_phy_reg(pi,
18135 (core ==
18136 PHY_CORE_0) ? 0x91 : 0x92,
18137 mask, val);
18138
18139 or_phy_reg(pi,
18140 (core ==
18141 PHY_CORE_0) ? 0x91 : 0x92,
18142 (0x1 << 12));
18143 } else {
18144
18145 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18146 mask = (0x1 << 5);
18147 val = value << 5;
18148 } else {
18149 mask = (0x1 << 4);
18150 val = value << 4;
18151 }
18152 mod_phy_reg(pi,
18153 (core ==
18154 PHY_CORE_0) ? 0x91 : 0x92,
18155 mask, val);
18156 }
18157 } else if (field ==
18158 NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18159 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18160 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18161
18162 mask = (0x1 << 0);
18163 val = value << 0;
18164 mod_phy_reg(pi,
18165 (core ==
18166 PHY_CORE_0) ? 0x91
18167 : 0x92, mask, val);
18168
18169 mask = (0x1 << 2);
18170 mod_phy_reg(pi,
18171 (core ==
18172 PHY_CORE_0) ? 0x91
18173 : 0x92, mask, 0);
18174 } else {
18175
18176 mask = (0x1 << 2);
18177 val = value << 2;
18178 mod_phy_reg(pi,
18179 (core ==
18180 PHY_CORE_0) ? 0x91
18181 : 0x92, mask, val);
18182
18183 mask = (0x1 << 0);
18184 mod_phy_reg(pi,
18185 (core ==
18186 PHY_CORE_0) ? 0x91
18187 : 0x92, mask, 0);
18188 }
18189
18190 mask = (0x1 << 11);
18191 val = 1 << 11;
18192 mod_phy_reg(pi,
18193 (core ==
18194 PHY_CORE_0) ? 0x91 : 0x92,
18195 mask, val);
18196 } else {
18197
18198 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18199 mask = (0x1 << 0);
18200 val = value << 0;
18201 } else {
18202 mask = (0x1 << 2);
18203 val = value << 2;
18204 }
18205 mod_phy_reg(pi,
18206 (core ==
18207 PHY_CORE_0) ? 0x91 : 0x92,
18208 mask, val);
18209 }
18210 } else if (field ==
18211 NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18212 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18213 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18214
18215 mask = (0x1 << 1);
18216 val = value << 1;
18217 mod_phy_reg(pi,
18218 (core ==
18219 PHY_CORE_0) ? 0x91
18220 : 0x92, mask, val);
18221
18222 mask = (0x1 << 3);
18223 mod_phy_reg(pi,
18224 (core ==
18225 PHY_CORE_0) ? 0x91
18226 : 0x92, mask, 0);
18227 } else {
18228
18229 mask = (0x1 << 3);
18230 val = value << 3;
18231 mod_phy_reg(pi,
18232 (core ==
18233 PHY_CORE_0) ? 0x91
18234 : 0x92, mask, val);
18235
18236 mask = (0x1 << 1);
18237 mod_phy_reg(pi,
18238 (core ==
18239 PHY_CORE_0) ? 0x91
18240 : 0x92, mask, 0);
18241 }
18242
18243 mask = (0x1 << 11);
18244 val = 1 << 11;
18245 mod_phy_reg(pi,
18246 (core ==
18247 PHY_CORE_0) ? 0x91 : 0x92,
18248 mask, val);
18249 } else {
18250
18251 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18252 mask = (0x1 << 1);
18253 val = value << 1;
18254 } else {
18255 mask = (0x1 << 3);
18256 val = value << 3;
18257 }
18258 mod_phy_reg(pi,
18259 (core ==
18260 PHY_CORE_0) ? 0x91 : 0x92,
18261 mask, val);
18262 }
18263 }
18264 }
18265 }
18266 }
18267
18268 void
wlc_phy_cal_txgainctrl_nphy(struct brcms_phy * pi,s32 dBm_targetpower,bool debug)18269 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18270 bool debug)
18271 {
18272 int gainctrl_loopidx;
18273 uint core;
18274 u16 m0m1, curr_m0m1;
18275 s32 delta_power;
18276 s32 txpwrindex;
18277 s32 qdBm_power[2];
18278 u16 orig_BBConfig;
18279 u16 phy_saveregs[4];
18280 u32 freq_test;
18281 u16 ampl_test = 250;
18282 uint stepsize;
18283 bool phyhang_avoid_state = false;
18284
18285 if (NREV_GE(pi->pubpi.phy_rev, 7))
18286 stepsize = 2;
18287 else
18288 stepsize = 1;
18289
18290 if (CHSPEC_IS40(pi->radio_chanspec))
18291 freq_test = 5000;
18292 else
18293 freq_test = 2500;
18294
18295 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18296 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18297
18298 if (pi->phyhang_avoid)
18299 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18300
18301 phyhang_avoid_state = pi->phyhang_avoid;
18302 pi->phyhang_avoid = false;
18303
18304 phy_saveregs[0] = read_phy_reg(pi, 0x91);
18305 phy_saveregs[1] = read_phy_reg(pi, 0x92);
18306 phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18307 phy_saveregs[3] = read_phy_reg(pi, 0xec);
18308 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18309 RADIO_MIMO_CORESEL_CORE1 |
18310 RADIO_MIMO_CORESEL_CORE2);
18311
18312 if (!debug) {
18313 wlc_phy_rfctrlintc_override_nphy(pi,
18314 NPHY_RfctrlIntc_override_TRSW,
18315 0x2, RADIO_MIMO_CORESEL_CORE1);
18316 wlc_phy_rfctrlintc_override_nphy(pi,
18317 NPHY_RfctrlIntc_override_TRSW,
18318 0x8, RADIO_MIMO_CORESEL_CORE2);
18319 } else {
18320 wlc_phy_rfctrlintc_override_nphy(pi,
18321 NPHY_RfctrlIntc_override_TRSW,
18322 0x1, RADIO_MIMO_CORESEL_CORE1);
18323 wlc_phy_rfctrlintc_override_nphy(pi,
18324 NPHY_RfctrlIntc_override_TRSW,
18325 0x7, RADIO_MIMO_CORESEL_CORE2);
18326 }
18327
18328 orig_BBConfig = read_phy_reg(pi, 0x01);
18329 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18330
18331 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18332
18333 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18334 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18335
18336 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18337 gainctrl_loopidx++) {
18338 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18339 false);
18340
18341 if (core == PHY_CORE_0)
18342 curr_m0m1 = m0m1 & 0xff00;
18343 else
18344 curr_m0m1 = m0m1 & 0x00ff;
18345
18346 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18347 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18348
18349 udelay(50);
18350
18351 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18352 NPHY_CAL_TSSISAMPS);
18353
18354 pi->nphy_bb_mult_save = 0;
18355 wlc_phy_stopplayback_nphy(pi);
18356
18357 delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18358
18359 txpwrindex -= stepsize * delta_power;
18360 if (txpwrindex < 0)
18361 txpwrindex = 0;
18362 else if (txpwrindex > 127)
18363 txpwrindex = 127;
18364
18365 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18366 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18367 (pi->srom_fem5g.extpagain == 3)) {
18368 if (txpwrindex < 30)
18369 txpwrindex = 30;
18370 }
18371 } else {
18372 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18373 (pi->srom_fem2g.extpagain == 3)) {
18374 if (txpwrindex < 50)
18375 txpwrindex = 50;
18376 }
18377 }
18378
18379 wlc_phy_txpwr_index_nphy(pi, (1 << core),
18380 (u8) txpwrindex, true);
18381 }
18382
18383 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18384
18385 if (debug) {
18386 u16 radio_gain;
18387 u16 dbg_m0m1;
18388
18389 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18390
18391 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18392 false);
18393
18394 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18395 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18396
18397 udelay(100);
18398
18399 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18400 NPHY_CAL_TSSISAMPS);
18401
18402 wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18403 &radio_gain);
18404
18405 mdelay(4000);
18406 pi->nphy_bb_mult_save = 0;
18407 wlc_phy_stopplayback_nphy(pi);
18408 }
18409 }
18410
18411 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18412 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18413
18414 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18415
18416 write_phy_reg(pi, 0x01, orig_BBConfig);
18417
18418 write_phy_reg(pi, 0x91, phy_saveregs[0]);
18419 write_phy_reg(pi, 0x92, phy_saveregs[1]);
18420 write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18421 write_phy_reg(pi, 0xec, phy_saveregs[3]);
18422
18423 pi->phyhang_avoid = phyhang_avoid_state;
18424
18425 if (pi->phyhang_avoid)
18426 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18427 }
18428
wlc_phy_savecal_nphy(struct brcms_phy * pi)18429 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18430 {
18431 void *tbl_ptr;
18432 int coreNum;
18433 u16 *txcal_radio_regs = NULL;
18434
18435 if (pi->phyhang_avoid)
18436 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18437
18438 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18439
18440 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18441 &pi->calibration_cache.
18442 rxcal_coeffs_2G);
18443
18444 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18445 txcal_radio_regs =
18446 pi->calibration_cache.txcal_radio_regs_2G;
18447 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18448
18449 pi->calibration_cache.txcal_radio_regs_2G[0] =
18450 read_radio_reg(pi,
18451 RADIO_2056_TX_LOFT_FINE_I |
18452 RADIO_2056_TX0);
18453 pi->calibration_cache.txcal_radio_regs_2G[1] =
18454 read_radio_reg(pi,
18455 RADIO_2056_TX_LOFT_FINE_Q |
18456 RADIO_2056_TX0);
18457 pi->calibration_cache.txcal_radio_regs_2G[2] =
18458 read_radio_reg(pi,
18459 RADIO_2056_TX_LOFT_FINE_I |
18460 RADIO_2056_TX1);
18461 pi->calibration_cache.txcal_radio_regs_2G[3] =
18462 read_radio_reg(pi,
18463 RADIO_2056_TX_LOFT_FINE_Q |
18464 RADIO_2056_TX1);
18465
18466 pi->calibration_cache.txcal_radio_regs_2G[4] =
18467 read_radio_reg(pi,
18468 RADIO_2056_TX_LOFT_COARSE_I |
18469 RADIO_2056_TX0);
18470 pi->calibration_cache.txcal_radio_regs_2G[5] =
18471 read_radio_reg(pi,
18472 RADIO_2056_TX_LOFT_COARSE_Q |
18473 RADIO_2056_TX0);
18474 pi->calibration_cache.txcal_radio_regs_2G[6] =
18475 read_radio_reg(pi,
18476 RADIO_2056_TX_LOFT_COARSE_I |
18477 RADIO_2056_TX1);
18478 pi->calibration_cache.txcal_radio_regs_2G[7] =
18479 read_radio_reg(pi,
18480 RADIO_2056_TX_LOFT_COARSE_Q |
18481 RADIO_2056_TX1);
18482 } else {
18483 pi->calibration_cache.txcal_radio_regs_2G[0] =
18484 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18485 pi->calibration_cache.txcal_radio_regs_2G[1] =
18486 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18487 pi->calibration_cache.txcal_radio_regs_2G[2] =
18488 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18489 pi->calibration_cache.txcal_radio_regs_2G[3] =
18490 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18491 }
18492
18493 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18494 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18495 } else {
18496
18497 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18498 &pi->calibration_cache.
18499 rxcal_coeffs_5G);
18500
18501 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18502 txcal_radio_regs =
18503 pi->calibration_cache.txcal_radio_regs_5G;
18504 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18505
18506 pi->calibration_cache.txcal_radio_regs_5G[0] =
18507 read_radio_reg(pi,
18508 RADIO_2056_TX_LOFT_FINE_I |
18509 RADIO_2056_TX0);
18510 pi->calibration_cache.txcal_radio_regs_5G[1] =
18511 read_radio_reg(pi,
18512 RADIO_2056_TX_LOFT_FINE_Q |
18513 RADIO_2056_TX0);
18514 pi->calibration_cache.txcal_radio_regs_5G[2] =
18515 read_radio_reg(pi,
18516 RADIO_2056_TX_LOFT_FINE_I |
18517 RADIO_2056_TX1);
18518 pi->calibration_cache.txcal_radio_regs_5G[3] =
18519 read_radio_reg(pi,
18520 RADIO_2056_TX_LOFT_FINE_Q |
18521 RADIO_2056_TX1);
18522
18523 pi->calibration_cache.txcal_radio_regs_5G[4] =
18524 read_radio_reg(pi,
18525 RADIO_2056_TX_LOFT_COARSE_I |
18526 RADIO_2056_TX0);
18527 pi->calibration_cache.txcal_radio_regs_5G[5] =
18528 read_radio_reg(pi,
18529 RADIO_2056_TX_LOFT_COARSE_Q |
18530 RADIO_2056_TX0);
18531 pi->calibration_cache.txcal_radio_regs_5G[6] =
18532 read_radio_reg(pi,
18533 RADIO_2056_TX_LOFT_COARSE_I |
18534 RADIO_2056_TX1);
18535 pi->calibration_cache.txcal_radio_regs_5G[7] =
18536 read_radio_reg(pi,
18537 RADIO_2056_TX_LOFT_COARSE_Q |
18538 RADIO_2056_TX1);
18539 } else {
18540 pi->calibration_cache.txcal_radio_regs_5G[0] =
18541 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18542 pi->calibration_cache.txcal_radio_regs_5G[1] =
18543 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18544 pi->calibration_cache.txcal_radio_regs_5G[2] =
18545 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18546 pi->calibration_cache.txcal_radio_regs_5G[3] =
18547 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18548 }
18549
18550 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18551 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18552 }
18553 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18554 for (coreNum = 0; coreNum <= 1; coreNum++) {
18555
18556 txcal_radio_regs[2 * coreNum] =
18557 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18558 LOFT_FINE_I);
18559 txcal_radio_regs[2 * coreNum + 1] =
18560 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18561 LOFT_FINE_Q);
18562
18563 txcal_radio_regs[2 * coreNum + 4] =
18564 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18565 LOFT_COARSE_I);
18566 txcal_radio_regs[2 * coreNum + 5] =
18567 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18568 LOFT_COARSE_Q);
18569 }
18570 }
18571
18572 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18573
18574 if (pi->phyhang_avoid)
18575 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18576 }
18577
wlc_phy_tx_iq_war_nphy(struct brcms_phy * pi)18578 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18579 {
18580 struct nphy_iq_comp tx_comp;
18581
18582 wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18583
18584 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18585 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18586 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18587 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18588 }
18589
wlc_phy_restorecal_nphy(struct brcms_phy * pi)18590 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18591 {
18592 u16 *loft_comp;
18593 u16 txcal_coeffs_bphy[4];
18594 u16 *tbl_ptr;
18595 int coreNum;
18596 u16 *txcal_radio_regs = NULL;
18597
18598 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18599 if (pi->nphy_iqcal_chanspec_2G == 0)
18600 return;
18601
18602 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18603 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18604 } else {
18605 if (pi->nphy_iqcal_chanspec_5G == 0)
18606 return;
18607
18608 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18609 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18610 }
18611
18612 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18613
18614 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18615 txcal_coeffs_bphy[0] = tbl_ptr[0];
18616 txcal_coeffs_bphy[1] = tbl_ptr[1];
18617 txcal_coeffs_bphy[2] = tbl_ptr[2];
18618 txcal_coeffs_bphy[3] = tbl_ptr[3];
18619 } else {
18620 txcal_coeffs_bphy[0] = 0;
18621 txcal_coeffs_bphy[1] = 0;
18622 txcal_coeffs_bphy[2] = 0;
18623 txcal_coeffs_bphy[3] = 0;
18624 }
18625
18626 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18627 txcal_coeffs_bphy);
18628
18629 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18630
18631 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18632
18633 if (NREV_LT(pi->pubpi.phy_rev, 2))
18634 wlc_phy_tx_iq_war_nphy(pi);
18635
18636 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18637 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18638 txcal_radio_regs =
18639 pi->calibration_cache.txcal_radio_regs_2G;
18640 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18641
18642 write_radio_reg(pi,
18643 RADIO_2056_TX_LOFT_FINE_I |
18644 RADIO_2056_TX0,
18645 pi->calibration_cache.
18646 txcal_radio_regs_2G[0]);
18647 write_radio_reg(pi,
18648 RADIO_2056_TX_LOFT_FINE_Q |
18649 RADIO_2056_TX0,
18650 pi->calibration_cache.
18651 txcal_radio_regs_2G[1]);
18652 write_radio_reg(pi,
18653 RADIO_2056_TX_LOFT_FINE_I |
18654 RADIO_2056_TX1,
18655 pi->calibration_cache.
18656 txcal_radio_regs_2G[2]);
18657 write_radio_reg(pi,
18658 RADIO_2056_TX_LOFT_FINE_Q |
18659 RADIO_2056_TX1,
18660 pi->calibration_cache.
18661 txcal_radio_regs_2G[3]);
18662
18663 write_radio_reg(pi,
18664 RADIO_2056_TX_LOFT_COARSE_I |
18665 RADIO_2056_TX0,
18666 pi->calibration_cache.
18667 txcal_radio_regs_2G[4]);
18668 write_radio_reg(pi,
18669 RADIO_2056_TX_LOFT_COARSE_Q |
18670 RADIO_2056_TX0,
18671 pi->calibration_cache.
18672 txcal_radio_regs_2G[5]);
18673 write_radio_reg(pi,
18674 RADIO_2056_TX_LOFT_COARSE_I |
18675 RADIO_2056_TX1,
18676 pi->calibration_cache.
18677 txcal_radio_regs_2G[6]);
18678 write_radio_reg(pi,
18679 RADIO_2056_TX_LOFT_COARSE_Q |
18680 RADIO_2056_TX1,
18681 pi->calibration_cache.
18682 txcal_radio_regs_2G[7]);
18683 } else {
18684 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18685 pi->calibration_cache.
18686 txcal_radio_regs_2G[0]);
18687 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18688 pi->calibration_cache.
18689 txcal_radio_regs_2G[1]);
18690 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18691 pi->calibration_cache.
18692 txcal_radio_regs_2G[2]);
18693 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18694 pi->calibration_cache.
18695 txcal_radio_regs_2G[3]);
18696 }
18697
18698 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18699 &pi->calibration_cache.
18700 rxcal_coeffs_2G);
18701 } else {
18702 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18703 txcal_radio_regs =
18704 pi->calibration_cache.txcal_radio_regs_5G;
18705 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18706
18707 write_radio_reg(pi,
18708 RADIO_2056_TX_LOFT_FINE_I |
18709 RADIO_2056_TX0,
18710 pi->calibration_cache.
18711 txcal_radio_regs_5G[0]);
18712 write_radio_reg(pi,
18713 RADIO_2056_TX_LOFT_FINE_Q |
18714 RADIO_2056_TX0,
18715 pi->calibration_cache.
18716 txcal_radio_regs_5G[1]);
18717 write_radio_reg(pi,
18718 RADIO_2056_TX_LOFT_FINE_I |
18719 RADIO_2056_TX1,
18720 pi->calibration_cache.
18721 txcal_radio_regs_5G[2]);
18722 write_radio_reg(pi,
18723 RADIO_2056_TX_LOFT_FINE_Q |
18724 RADIO_2056_TX1,
18725 pi->calibration_cache.
18726 txcal_radio_regs_5G[3]);
18727
18728 write_radio_reg(pi,
18729 RADIO_2056_TX_LOFT_COARSE_I |
18730 RADIO_2056_TX0,
18731 pi->calibration_cache.
18732 txcal_radio_regs_5G[4]);
18733 write_radio_reg(pi,
18734 RADIO_2056_TX_LOFT_COARSE_Q |
18735 RADIO_2056_TX0,
18736 pi->calibration_cache.
18737 txcal_radio_regs_5G[5]);
18738 write_radio_reg(pi,
18739 RADIO_2056_TX_LOFT_COARSE_I |
18740 RADIO_2056_TX1,
18741 pi->calibration_cache.
18742 txcal_radio_regs_5G[6]);
18743 write_radio_reg(pi,
18744 RADIO_2056_TX_LOFT_COARSE_Q |
18745 RADIO_2056_TX1,
18746 pi->calibration_cache.
18747 txcal_radio_regs_5G[7]);
18748 } else {
18749 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18750 pi->calibration_cache.
18751 txcal_radio_regs_5G[0]);
18752 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18753 pi->calibration_cache.
18754 txcal_radio_regs_5G[1]);
18755 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18756 pi->calibration_cache.
18757 txcal_radio_regs_5G[2]);
18758 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18759 pi->calibration_cache.
18760 txcal_radio_regs_5G[3]);
18761 }
18762
18763 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18764 &pi->calibration_cache.
18765 rxcal_coeffs_5G);
18766 }
18767
18768 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18769 for (coreNum = 0; coreNum <= 1; coreNum++) {
18770
18771 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18772 LOFT_FINE_I,
18773 txcal_radio_regs[2 * coreNum]);
18774 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18775 LOFT_FINE_Q,
18776 txcal_radio_regs[2 * coreNum + 1]);
18777
18778 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18779 LOFT_COARSE_I,
18780 txcal_radio_regs[2 * coreNum + 4]);
18781 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18782 LOFT_COARSE_Q,
18783 txcal_radio_regs[2 * coreNum + 5]);
18784 }
18785 }
18786 }
18787
wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy * pi)18788 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18789 {
18790 u32 idx;
18791 u16 iqloCalbuf[7];
18792 u32 iqcomp, locomp, curr_locomp;
18793 s8 locomp_i, locomp_q;
18794 s8 curr_locomp_i, curr_locomp_q;
18795 u32 tbl_id, tbl_len, tbl_offset;
18796 u32 regval[128];
18797
18798 if (pi->phyhang_avoid)
18799 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18800
18801 wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18802
18803 tbl_len = 128;
18804 tbl_offset = 320;
18805 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18806 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18807 iqcomp =
18808 (tbl_id ==
18809 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18810 (iqloCalbuf[1] & 0x3ff)
18811 : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18812 (iqloCalbuf[3] & 0x3ff);
18813
18814 for (idx = 0; idx < tbl_len; idx++)
18815 regval[idx] = iqcomp;
18816 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18817 regval);
18818 }
18819
18820 tbl_offset = 448;
18821 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18822 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18823
18824 locomp =
18825 (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18826 locomp_i = (s8) ((locomp >> 8) & 0xff);
18827 locomp_q = (s8) ((locomp) & 0xff);
18828 for (idx = 0; idx < tbl_len; idx++) {
18829 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18830 curr_locomp_i = locomp_i;
18831 curr_locomp_q = locomp_q;
18832 } else {
18833 curr_locomp_i = (s8) ((locomp_i *
18834 nphy_tpc_loscale[idx] +
18835 128) >> 8);
18836 curr_locomp_q =
18837 (s8) ((locomp_q *
18838 nphy_tpc_loscale[idx] +
18839 128) >> 8);
18840 }
18841 curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18842 curr_locomp |= (u32) (curr_locomp_q & 0xff);
18843 regval[idx] = curr_locomp;
18844 }
18845 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18846 regval);
18847 }
18848
18849 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18850
18851 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18852 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18853 }
18854
18855 if (pi->phyhang_avoid)
18856 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18857 }
18858
wlc_phy_txlpfbw_nphy(struct brcms_phy * pi)18859 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18860 {
18861 u8 tx_lpf_bw = 0;
18862
18863 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18864 if (CHSPEC_IS40(pi->radio_chanspec))
18865 tx_lpf_bw = 3;
18866 else
18867 tx_lpf_bw = 1;
18868
18869 if (PHY_IPA(pi)) {
18870 if (CHSPEC_IS40(pi->radio_chanspec))
18871 tx_lpf_bw = 5;
18872 else
18873 tx_lpf_bw = 4;
18874 }
18875
18876 write_phy_reg(pi, 0xe8,
18877 (tx_lpf_bw << 0) |
18878 (tx_lpf_bw << 3) |
18879 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18880
18881 if (PHY_IPA(pi)) {
18882
18883 if (CHSPEC_IS40(pi->radio_chanspec))
18884 tx_lpf_bw = 4;
18885 else
18886 tx_lpf_bw = 1;
18887
18888 write_phy_reg(pi, 0xe9,
18889 (tx_lpf_bw << 0) |
18890 (tx_lpf_bw << 3) |
18891 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18892 }
18893 }
18894 }
18895
18896 static void
wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy * pi,u16 reduction_factr)18897 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
18898 {
18899 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18900 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18901 CHSPEC_IS40(pi->radio_chanspec)) {
18902 if (!pi->nphy_anarxlpf_adjusted) {
18903 write_radio_reg(pi,
18904 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18905 RADIO_2056_RX0),
18906 ((pi->nphy_rccal_value +
18907 reduction_factr) | 0x80));
18908
18909 pi->nphy_anarxlpf_adjusted = true;
18910 }
18911 } else {
18912 if (pi->nphy_anarxlpf_adjusted) {
18913 write_radio_reg(pi,
18914 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18915 RADIO_2056_RX0),
18916 (pi->nphy_rccal_value | 0x80));
18917
18918 pi->nphy_anarxlpf_adjusted = false;
18919 }
18920 }
18921 }
18922 }
18923
18924 static void
wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy * pi,int ntones,int * tone_id_buf,u32 * noise_var_buf)18925 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
18926 int *tone_id_buf, u32 *noise_var_buf)
18927 {
18928 int i;
18929 u32 offset;
18930 int tone_id;
18931 int tbllen =
18932 CHSPEC_IS40(pi->radio_chanspec) ?
18933 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
18934
18935 if (pi->nphy_noisevars_adjusted) {
18936 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18937 tone_id = pi->nphy_saved_noisevars.tone_id[i];
18938 offset = (tone_id >= 0) ?
18939 ((tone_id *
18940 2) + 1) : (tbllen + (tone_id * 2) + 1);
18941 wlc_phy_table_write_nphy(
18942 pi, NPHY_TBL_ID_NOISEVAR, 1,
18943 offset, 32,
18944 &pi->nphy_saved_noisevars.min_noise_vars[i]);
18945 }
18946
18947 pi->nphy_saved_noisevars.bufcount = 0;
18948 pi->nphy_noisevars_adjusted = false;
18949 }
18950
18951 if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18952 pi->nphy_saved_noisevars.bufcount = 0;
18953
18954 for (i = 0; i < ntones; i++) {
18955 tone_id = tone_id_buf[i];
18956 offset = (tone_id >= 0) ?
18957 ((tone_id * 2) + 1) :
18958 (tbllen + (tone_id * 2) + 1);
18959 pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18960 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18961 offset, 32,
18962 &pi->nphy_saved_noisevars.
18963 min_noise_vars[i]);
18964 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18965 offset, 32, &noise_var_buf[i]);
18966 pi->nphy_saved_noisevars.bufcount++;
18967 }
18968
18969 pi->nphy_noisevars_adjusted = true;
18970 }
18971 }
18972
wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy * pi,u8 minpwr)18973 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
18974 {
18975 u16 regval;
18976
18977 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18978 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18979 CHSPEC_IS40(pi->radio_chanspec)) {
18980 if (!pi->nphy_crsminpwr_adjusted) {
18981 regval = read_phy_reg(pi, 0x27d);
18982 pi->nphy_crsminpwr[0] = regval & 0xff;
18983 regval &= 0xff00;
18984 regval |= (u16) minpwr;
18985 write_phy_reg(pi, 0x27d, regval);
18986
18987 regval = read_phy_reg(pi, 0x280);
18988 pi->nphy_crsminpwr[1] = regval & 0xff;
18989 regval &= 0xff00;
18990 regval |= (u16) minpwr;
18991 write_phy_reg(pi, 0x280, regval);
18992
18993 regval = read_phy_reg(pi, 0x283);
18994 pi->nphy_crsminpwr[2] = regval & 0xff;
18995 regval &= 0xff00;
18996 regval |= (u16) minpwr;
18997 write_phy_reg(pi, 0x283, regval);
18998
18999 pi->nphy_crsminpwr_adjusted = true;
19000 }
19001 } else {
19002 if (pi->nphy_crsminpwr_adjusted) {
19003 regval = read_phy_reg(pi, 0x27d);
19004 regval &= 0xff00;
19005 regval |= pi->nphy_crsminpwr[0];
19006 write_phy_reg(pi, 0x27d, regval);
19007
19008 regval = read_phy_reg(pi, 0x280);
19009 regval &= 0xff00;
19010 regval |= pi->nphy_crsminpwr[1];
19011 write_phy_reg(pi, 0x280, regval);
19012
19013 regval = read_phy_reg(pi, 0x283);
19014 regval &= 0xff00;
19015 regval |= pi->nphy_crsminpwr[2];
19016 write_phy_reg(pi, 0x283, regval);
19017
19018 pi->nphy_crsminpwr_adjusted = false;
19019 }
19020 }
19021 }
19022 }
19023
wlc_phy_spurwar_nphy(struct brcms_phy * pi)19024 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19025 {
19026 u16 cur_channel = 0;
19027 int nphy_adj_tone_id_buf[] = { 57, 58 };
19028 u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19029 bool isAdjustNoiseVar = false;
19030 uint numTonesAdjust = 0;
19031
19032 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19033 if (pi->phyhang_avoid)
19034 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19035
19036 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19037
19038 if (pi->nphy_gband_spurwar_en) {
19039
19040 wlc_phy_adjust_rx_analpfbw_nphy(
19041 pi,
19042 NPHY_ANARXLPFBW_REDUCTIONFACT);
19043
19044 if (CHSPEC_IS2G(pi->radio_chanspec)) {
19045 if ((cur_channel == 11)
19046 && CHSPEC_IS40(pi->radio_chanspec))
19047 wlc_phy_adjust_min_noisevar_nphy(
19048 pi, 2,
19049 nphy_adj_tone_id_buf,
19050 nphy_adj_noise_var_buf);
19051 else
19052 wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19053 NULL,
19054 NULL);
19055 }
19056
19057 wlc_phy_adjust_crsminpwr_nphy(pi,
19058 NPHY_ADJUSTED_MINCRSPOWER);
19059 }
19060
19061 if ((pi->nphy_gband_spurwar2_en)
19062 && CHSPEC_IS2G(pi->radio_chanspec)) {
19063
19064 if (CHSPEC_IS40(pi->radio_chanspec)) {
19065 switch (cur_channel) {
19066 case 3:
19067 nphy_adj_tone_id_buf[0] = 57;
19068 nphy_adj_tone_id_buf[1] = 58;
19069 nphy_adj_noise_var_buf[0] = 0x22f;
19070 nphy_adj_noise_var_buf[1] = 0x25f;
19071 isAdjustNoiseVar = true;
19072 break;
19073 case 4:
19074 nphy_adj_tone_id_buf[0] = 41;
19075 nphy_adj_tone_id_buf[1] = 42;
19076 nphy_adj_noise_var_buf[0] = 0x22f;
19077 nphy_adj_noise_var_buf[1] = 0x25f;
19078 isAdjustNoiseVar = true;
19079 break;
19080 case 5:
19081 nphy_adj_tone_id_buf[0] = 25;
19082 nphy_adj_tone_id_buf[1] = 26;
19083 nphy_adj_noise_var_buf[0] = 0x24f;
19084 nphy_adj_noise_var_buf[1] = 0x25f;
19085 isAdjustNoiseVar = true;
19086 break;
19087 case 6:
19088 nphy_adj_tone_id_buf[0] = 9;
19089 nphy_adj_tone_id_buf[1] = 10;
19090 nphy_adj_noise_var_buf[0] = 0x22f;
19091 nphy_adj_noise_var_buf[1] = 0x24f;
19092 isAdjustNoiseVar = true;
19093 break;
19094 case 7:
19095 nphy_adj_tone_id_buf[0] = 121;
19096 nphy_adj_tone_id_buf[1] = 122;
19097 nphy_adj_noise_var_buf[0] = 0x18f;
19098 nphy_adj_noise_var_buf[1] = 0x24f;
19099 isAdjustNoiseVar = true;
19100 break;
19101 case 8:
19102 nphy_adj_tone_id_buf[0] = 105;
19103 nphy_adj_tone_id_buf[1] = 106;
19104 nphy_adj_noise_var_buf[0] = 0x22f;
19105 nphy_adj_noise_var_buf[1] = 0x25f;
19106 isAdjustNoiseVar = true;
19107 break;
19108 case 9:
19109 nphy_adj_tone_id_buf[0] = 89;
19110 nphy_adj_tone_id_buf[1] = 90;
19111 nphy_adj_noise_var_buf[0] = 0x22f;
19112 nphy_adj_noise_var_buf[1] = 0x24f;
19113 isAdjustNoiseVar = true;
19114 break;
19115 case 10:
19116 nphy_adj_tone_id_buf[0] = 73;
19117 nphy_adj_tone_id_buf[1] = 74;
19118 nphy_adj_noise_var_buf[0] = 0x22f;
19119 nphy_adj_noise_var_buf[1] = 0x24f;
19120 isAdjustNoiseVar = true;
19121 break;
19122 default:
19123 isAdjustNoiseVar = false;
19124 break;
19125 }
19126 }
19127
19128 if (isAdjustNoiseVar) {
19129 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19130
19131 wlc_phy_adjust_min_noisevar_nphy(
19132 pi,
19133 numTonesAdjust,
19134 nphy_adj_tone_id_buf,
19135 nphy_adj_noise_var_buf);
19136 } else {
19137 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19138 NULL);
19139 }
19140 }
19141
19142 if ((pi->nphy_aband_spurwar_en) &&
19143 (CHSPEC_IS5G(pi->radio_chanspec))) {
19144 switch (cur_channel) {
19145 case 54:
19146 nphy_adj_tone_id_buf[0] = 32;
19147 nphy_adj_noise_var_buf[0] = 0x25f;
19148 break;
19149 case 38:
19150 case 102:
19151 case 118:
19152 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19153 (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19154 nphy_adj_tone_id_buf[0] = 32;
19155 nphy_adj_noise_var_buf[0] = 0x21f;
19156 } else {
19157 nphy_adj_tone_id_buf[0] = 0;
19158 nphy_adj_noise_var_buf[0] = 0x0;
19159 }
19160 break;
19161 case 134:
19162 nphy_adj_tone_id_buf[0] = 32;
19163 nphy_adj_noise_var_buf[0] = 0x21f;
19164 break;
19165 case 151:
19166 nphy_adj_tone_id_buf[0] = 16;
19167 nphy_adj_noise_var_buf[0] = 0x23f;
19168 break;
19169 case 153:
19170 case 161:
19171 nphy_adj_tone_id_buf[0] = 48;
19172 nphy_adj_noise_var_buf[0] = 0x23f;
19173 break;
19174 default:
19175 nphy_adj_tone_id_buf[0] = 0;
19176 nphy_adj_noise_var_buf[0] = 0x0;
19177 break;
19178 }
19179
19180 if (nphy_adj_tone_id_buf[0]
19181 && nphy_adj_noise_var_buf[0])
19182 wlc_phy_adjust_min_noisevar_nphy(
19183 pi, 1,
19184 nphy_adj_tone_id_buf,
19185 nphy_adj_noise_var_buf);
19186 else
19187 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19188 NULL);
19189 }
19190
19191 if (pi->phyhang_avoid)
19192 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19193 }
19194 }
19195
wlc_phy_init_nphy(struct brcms_phy * pi)19196 void wlc_phy_init_nphy(struct brcms_phy *pi)
19197 {
19198 u16 val;
19199 u16 clip1_ths[2];
19200 struct nphy_txgains target_gain;
19201 u8 tx_pwr_ctrl_state;
19202 bool do_nphy_cal = false;
19203 uint core;
19204 u32 d11_clk_ctl_st;
19205 bool do_rssi_cal = false;
19206
19207 core = 0;
19208
19209 if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19210 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19211
19212 if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19213 ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19214 (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19215 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19216 (CHSPEC_IS2G(pi->radio_chanspec)))
19217 bcma_cc_set32(&pi->d11core->bus->drv_cc,
19218 BCMA_CC_CHIPCTL, 0x40);
19219 }
19220
19221 if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19222 bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19223 ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19224
19225 if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19226 CHSPEC_IS40(pi->radio_chanspec)) {
19227
19228 d11_clk_ctl_st = bcma_read32(pi->d11core,
19229 D11REGOFFS(clk_ctl_st));
19230 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19231 ~(CCS_FORCEHT | CCS_HTAREQ));
19232
19233 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19234 d11_clk_ctl_st);
19235 }
19236
19237 pi->use_int_tx_iqlo_cal_nphy =
19238 (PHY_IPA(pi) ||
19239 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19240 (NREV_GE(pi->pubpi.phy_rev, 5)
19241 && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19242
19243 pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19244
19245 pi->nphy_deaf_count = 0;
19246
19247 wlc_phy_tbl_init_nphy(pi);
19248
19249 pi->nphy_crsminpwr_adjusted = false;
19250 pi->nphy_noisevars_adjusted = false;
19251
19252 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19253 write_phy_reg(pi, 0xe7, 0);
19254 write_phy_reg(pi, 0xec, 0);
19255 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19256 write_phy_reg(pi, 0x342, 0);
19257 write_phy_reg(pi, 0x343, 0);
19258 write_phy_reg(pi, 0x346, 0);
19259 write_phy_reg(pi, 0x347, 0);
19260 }
19261 write_phy_reg(pi, 0xe5, 0);
19262 write_phy_reg(pi, 0xe6, 0);
19263 } else {
19264 write_phy_reg(pi, 0xec, 0);
19265 }
19266
19267 write_phy_reg(pi, 0x91, 0);
19268 write_phy_reg(pi, 0x92, 0);
19269 if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19270 write_phy_reg(pi, 0x93, 0);
19271 write_phy_reg(pi, 0x94, 0);
19272 }
19273
19274 and_phy_reg(pi, 0xa1, ~3);
19275
19276 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19277 write_phy_reg(pi, 0x8f, 0);
19278 write_phy_reg(pi, 0xa5, 0);
19279 } else {
19280 write_phy_reg(pi, 0xa5, 0);
19281 }
19282
19283 if (NREV_IS(pi->pubpi.phy_rev, 2))
19284 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19285 else if (NREV_LT(pi->pubpi.phy_rev, 2))
19286 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19287
19288 write_phy_reg(pi, 0x203, 32);
19289 write_phy_reg(pi, 0x201, 32);
19290
19291 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19292 write_phy_reg(pi, 0x20d, 160);
19293 else
19294 write_phy_reg(pi, 0x20d, 184);
19295
19296 write_phy_reg(pi, 0x13a, 200);
19297
19298 write_phy_reg(pi, 0x70, 80);
19299
19300 write_phy_reg(pi, 0x1ff, 48);
19301
19302 if (NREV_LT(pi->pubpi.phy_rev, 8))
19303 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19304
19305 wlc_phy_stf_chain_upd_nphy(pi);
19306
19307 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19308 write_phy_reg(pi, 0x180, 0xaa8);
19309 write_phy_reg(pi, 0x181, 0x9a4);
19310 }
19311
19312 if (PHY_IPA(pi)) {
19313 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19314
19315 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19316 0x29b, (0x1 << 0), (1) << 0);
19317
19318 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19319 0x29c, (0x1ff << 7),
19320 (pi->nphy_papd_epsilon_offset[core]) << 7);
19321
19322 }
19323
19324 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19325 } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19326 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19327 }
19328
19329 wlc_phy_workarounds_nphy(pi);
19330
19331 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19332
19333 val = read_phy_reg(pi, 0x01);
19334 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19335 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19336 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19337
19338 wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19339
19340 wlc_phy_pa_override_nphy(pi, OFF);
19341 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19342 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19343 wlc_phy_pa_override_nphy(pi, ON);
19344
19345 wlc_phy_classifier_nphy(pi, 0, 0);
19346 wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19347
19348 if (CHSPEC_IS2G(pi->radio_chanspec))
19349 wlc_phy_bphy_init_nphy(pi);
19350
19351 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19352 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19353
19354 wlc_phy_txpwr_fixpower_nphy(pi);
19355
19356 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19357
19358 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19359
19360 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19361 u32 *tx_pwrctrl_tbl = NULL;
19362 u16 idx;
19363 s16 pga_gn = 0;
19364 s16 pad_gn = 0;
19365 s32 rfpwr_offset;
19366
19367 if (PHY_IPA(pi)) {
19368 tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19369 } else {
19370 if (CHSPEC_IS5G(pi->radio_chanspec)) {
19371 if (NREV_IS(pi->pubpi.phy_rev, 3))
19372 tx_pwrctrl_tbl =
19373 nphy_tpc_5GHz_txgain_rev3;
19374 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19375 tx_pwrctrl_tbl =
19376 (pi->srom_fem5g.extpagain ==
19377 3) ?
19378 nphy_tpc_5GHz_txgain_HiPwrEPA :
19379 nphy_tpc_5GHz_txgain_rev4;
19380 else
19381 tx_pwrctrl_tbl =
19382 nphy_tpc_5GHz_txgain_rev5;
19383 } else {
19384 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19385 if (pi->pubpi.radiorev == 5)
19386 tx_pwrctrl_tbl =
19387 nphy_tpc_txgain_epa_2057rev5;
19388 else if (pi->pubpi.radiorev == 3)
19389 tx_pwrctrl_tbl =
19390 nphy_tpc_txgain_epa_2057rev3;
19391 } else {
19392 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19393 (pi->srom_fem2g.extpagain == 3))
19394 tx_pwrctrl_tbl =
19395 nphy_tpc_txgain_HiPwrEPA;
19396 else
19397 tx_pwrctrl_tbl =
19398 nphy_tpc_txgain_rev3;
19399 }
19400 }
19401 }
19402
19403 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19404 192, 32, tx_pwrctrl_tbl);
19405 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19406 192, 32, tx_pwrctrl_tbl);
19407
19408 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19409
19410 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19411
19412 for (idx = 0; idx < 128; idx++) {
19413 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19414 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19415 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19416 pad_gn);
19417 wlc_phy_table_write_nphy(
19418 pi,
19419 NPHY_TBL_ID_CORE1TXPWRCTL,
19420 1, 576 + idx, 32,
19421 &rfpwr_offset);
19422 wlc_phy_table_write_nphy(
19423 pi,
19424 NPHY_TBL_ID_CORE2TXPWRCTL,
19425 1, 576 + idx, 32,
19426 &rfpwr_offset);
19427 }
19428 } else {
19429
19430 for (idx = 0; idx < 128; idx++) {
19431 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19432 if (CHSPEC_IS2G(pi->radio_chanspec))
19433 rfpwr_offset = (s16)
19434 nphy_papd_pga_gain_delta_ipa_2g
19435 [pga_gn];
19436 else
19437 rfpwr_offset = (s16)
19438 nphy_papd_pga_gain_delta_ipa_5g
19439 [pga_gn];
19440
19441 wlc_phy_table_write_nphy(
19442 pi,
19443 NPHY_TBL_ID_CORE1TXPWRCTL,
19444 1, 576 + idx, 32,
19445 &rfpwr_offset);
19446 wlc_phy_table_write_nphy(
19447 pi,
19448 NPHY_TBL_ID_CORE2TXPWRCTL,
19449 1, 576 + idx, 32,
19450 &rfpwr_offset);
19451 }
19452
19453 }
19454 } else {
19455
19456 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19457 192, 32, nphy_tpc_txgain);
19458 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19459 192, 32, nphy_tpc_txgain);
19460 }
19461
19462 if (pi->sh->phyrxchain != 0x3)
19463 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19464 pi->sh->phyrxchain);
19465
19466 if (PHY_PERICAL_MPHASE_PENDING(pi))
19467 wlc_phy_cal_perical_mphase_restart(pi);
19468
19469 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19470 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19471 (pi->nphy_rssical_chanspec_2G == 0) :
19472 (pi->nphy_rssical_chanspec_5G == 0);
19473
19474 if (do_rssi_cal)
19475 wlc_phy_rssi_cal_nphy(pi);
19476 else
19477 wlc_phy_restore_rssical_nphy(pi);
19478 } else {
19479 wlc_phy_rssi_cal_nphy(pi);
19480 }
19481
19482 if (!SCAN_RM_IN_PROGRESS(pi))
19483 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19484 (pi->nphy_iqcal_chanspec_2G == 0) :
19485 (pi->nphy_iqcal_chanspec_5G == 0);
19486
19487 if (!pi->do_initcal)
19488 do_nphy_cal = false;
19489
19490 if (do_nphy_cal) {
19491
19492 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19493
19494 if (pi->antsel_type == ANTSEL_2x3)
19495 wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19496 true);
19497
19498 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19499 wlc_phy_rssi_cal_nphy(pi);
19500
19501 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19502 pi->nphy_cal_orig_pwr_idx[0] =
19503 pi->nphy_txpwrindex[PHY_CORE_0]
19504 .
19505 index_internal;
19506 pi->nphy_cal_orig_pwr_idx[1] =
19507 pi->nphy_txpwrindex[PHY_CORE_1]
19508 .
19509 index_internal;
19510
19511 wlc_phy_precal_txgain_nphy(pi);
19512 target_gain =
19513 wlc_phy_get_tx_gain_nphy(pi);
19514 }
19515
19516 if (wlc_phy_cal_txiqlo_nphy
19517 (pi, target_gain, true,
19518 false) == 0) {
19519 if (wlc_phy_cal_rxiq_nphy
19520 (pi, target_gain, 2,
19521 false) == 0)
19522 wlc_phy_savecal_nphy(pi);
19523
19524 }
19525 } else if (pi->mphase_cal_phase_id ==
19526 MPHASE_CAL_STATE_IDLE) {
19527 wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19528 PHY_PERICAL_PHYINIT);
19529 }
19530 } else {
19531 wlc_phy_restorecal_nphy(pi);
19532 }
19533
19534 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19535
19536 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19537
19538 wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19539
19540 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19541
19542 write_phy_reg(pi, 0x70, 50);
19543
19544 wlc_phy_txlpfbw_nphy(pi);
19545
19546 wlc_phy_spurwar_nphy(pi);
19547
19548 }
19549
wlc_phy_resetcca_nphy(struct brcms_phy * pi)19550 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19551 {
19552 u16 val;
19553
19554 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19555
19556 val = read_phy_reg(pi, 0x01);
19557 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19558 udelay(1);
19559 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19560
19561 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19562
19563 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19564 }
19565
wlc_phy_pa_override_nphy(struct brcms_phy * pi,bool en)19566 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19567 {
19568 u16 rfctrlintc_override_val;
19569
19570 if (!en) {
19571
19572 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19573 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19574
19575 if (NREV_GE(pi->pubpi.phy_rev, 7))
19576 rfctrlintc_override_val = 0x1480;
19577 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19578 rfctrlintc_override_val =
19579 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19580 else
19581 rfctrlintc_override_val =
19582 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19583
19584 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19585 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19586 } else {
19587 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19588 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19589 }
19590
19591 }
19592
wlc_phy_stf_chain_upd_nphy(struct brcms_phy * pi)19593 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19594 {
19595
19596 u16 txrx_chain =
19597 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19598 bool CoreActv_override = false;
19599
19600 if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19601 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19602 CoreActv_override = true;
19603
19604 if (NREV_LE(pi->pubpi.phy_rev, 2))
19605 and_phy_reg(pi, 0xa0, ~0x20);
19606 } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19607 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19608 CoreActv_override = true;
19609
19610 if (NREV_LE(pi->pubpi.phy_rev, 2))
19611 or_phy_reg(pi, 0xa0, 0x20);
19612 }
19613
19614 mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19615
19616 if (CoreActv_override) {
19617 pi->nphy_perical = PHY_PERICAL_DISABLE;
19618 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19619 } else {
19620 pi->nphy_perical = PHY_PERICAL_MPHASE;
19621 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19622 }
19623 }
19624
wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub * pih,u8 rxcore_bitmask)19625 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19626 {
19627 u16 regval;
19628 u16 tbl_buf[16];
19629 uint i;
19630 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19631 u16 tbl_opcode;
19632 bool suspend;
19633
19634 pi->sh->phyrxchain = rxcore_bitmask;
19635
19636 if (!pi->sh->clk)
19637 return;
19638
19639 suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19640 MCTL_EN_MAC));
19641 if (!suspend)
19642 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19643
19644 if (pi->phyhang_avoid)
19645 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19646
19647 regval = read_phy_reg(pi, 0xa2);
19648 regval &= ~(0xf << 4);
19649 regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19650 write_phy_reg(pi, 0xa2, regval);
19651
19652 if ((rxcore_bitmask & 0x3) != 0x3) {
19653
19654 write_phy_reg(pi, 0x20e, 1);
19655
19656 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19657 if (pi->rx2tx_biasentry == -1) {
19658 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19659 ARRAY_SIZE(tbl_buf), 80,
19660 16, tbl_buf);
19661
19662 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19663 if (tbl_buf[i] ==
19664 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19665 pi->rx2tx_biasentry = (u8) i;
19666 tbl_opcode =
19667 NPHY_REV3_RFSEQ_CMD_NOP;
19668 wlc_phy_table_write_nphy(
19669 pi,
19670 NPHY_TBL_ID_RFSEQ,
19671 1, i,
19672 16,
19673 &tbl_opcode);
19674 break;
19675 } else if (tbl_buf[i] ==
19676 NPHY_REV3_RFSEQ_CMD_END)
19677 break;
19678 }
19679 }
19680 }
19681 } else {
19682
19683 write_phy_reg(pi, 0x20e, 30);
19684
19685 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19686 if (pi->rx2tx_biasentry != -1) {
19687 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19688 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19689 1, pi->rx2tx_biasentry,
19690 16, &tbl_opcode);
19691 pi->rx2tx_biasentry = -1;
19692 }
19693 }
19694 }
19695
19696 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19697
19698 if (pi->phyhang_avoid)
19699 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19700
19701 if (!suspend)
19702 wlapi_enable_mac(pi->sh->physhim);
19703 }
19704
wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub * pih)19705 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19706 {
19707 u16 regval, rxen_bits;
19708 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19709
19710 regval = read_phy_reg(pi, 0xa2);
19711 rxen_bits = (regval >> 4) & 0xf;
19712
19713 return (u8) rxen_bits;
19714 }
19715
wlc_phy_n_txpower_ipa_ison(struct brcms_phy * pi)19716 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19717 {
19718 return PHY_IPA(pi);
19719 }
19720
wlc_phy_cal_init_nphy(struct brcms_phy * pi)19721 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19722 {
19723 }
19724
wlc_phy_radio_preinit_205x(struct brcms_phy * pi)19725 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19726 {
19727
19728 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19729 and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19730
19731 or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19732 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19733
19734 }
19735
wlc_phy_radio_init_2057(struct brcms_phy * pi)19736 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19737 {
19738 struct radio_20xx_regs *regs_2057_ptr = NULL;
19739
19740 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19741 regs_2057_ptr = regs_2057_rev4;
19742 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19743 || NREV_IS(pi->pubpi.phy_rev, 9)) {
19744 switch (pi->pubpi.radiorev) {
19745 case 5:
19746
19747 if (NREV_IS(pi->pubpi.phy_rev, 8))
19748 regs_2057_ptr = regs_2057_rev5;
19749 else if (NREV_IS(pi->pubpi.phy_rev, 9))
19750 regs_2057_ptr = regs_2057_rev5v1;
19751 break;
19752
19753 case 7:
19754
19755 regs_2057_ptr = regs_2057_rev7;
19756 break;
19757
19758 case 8:
19759
19760 regs_2057_ptr = regs_2057_rev8;
19761 break;
19762
19763 default:
19764 break;
19765 }
19766 }
19767
19768 wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19769 }
19770
wlc_phy_radio205x_rcal(struct brcms_phy * pi)19771 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19772 {
19773 u16 rcal_reg = 0;
19774 int i;
19775
19776 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19777
19778 if (pi->pubpi.radiorev == 5) {
19779
19780 and_phy_reg(pi, 0x342, ~(0x1 << 1));
19781
19782 udelay(10);
19783
19784 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19785 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19786 0x1);
19787 }
19788 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19789
19790 udelay(10);
19791
19792 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19793
19794 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19795 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19796 if (rcal_reg & 0x1)
19797 break;
19798
19799 udelay(100);
19800 }
19801
19802 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19803 "HW error: radio calib2"))
19804 return 0;
19805
19806 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19807
19808 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19809
19810 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19811 if (pi->pubpi.radiorev == 5) {
19812
19813 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19814 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19815 0x0);
19816 }
19817
19818 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19819
19820 mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19821 rcal_reg);
19822 mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19823 rcal_reg << 2);
19824 }
19825
19826 } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19827 u16 savereg;
19828
19829 savereg =
19830 read_radio_reg(
19831 pi,
19832 RADIO_2056_SYN_PLL_MAST2 |
19833 RADIO_2056_SYN);
19834 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19835 savereg | 0x7);
19836 udelay(10);
19837
19838 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19839 0x1);
19840 udelay(10);
19841
19842 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19843 0x9);
19844
19845 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19846 rcal_reg = read_radio_reg(
19847 pi,
19848 RADIO_2056_SYN_RCAL_CODE_OUT |
19849 RADIO_2056_SYN);
19850 if (rcal_reg & 0x80)
19851 break;
19852
19853 udelay(100);
19854 }
19855
19856 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19857 "HW error: radio calib3"))
19858 return 0;
19859
19860 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19861 0x1);
19862
19863 rcal_reg =
19864 read_radio_reg(pi,
19865 RADIO_2056_SYN_RCAL_CODE_OUT |
19866 RADIO_2056_SYN);
19867
19868 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19869 0x0);
19870
19871 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19872 savereg);
19873
19874 return rcal_reg & 0x1f;
19875 }
19876 return rcal_reg & 0x3e;
19877 }
19878
wlc_phy_radio2057_rccal(struct brcms_phy * pi)19879 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19880 {
19881 u16 rccal_valid;
19882 int i;
19883 bool chip43226_6362A0;
19884
19885 chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19886 || (pi->pubpi.radiorev == 4)
19887 || (pi->pubpi.radiorev == 6));
19888
19889 rccal_valid = 0;
19890 if (chip43226_6362A0) {
19891 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19892 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19893 } else {
19894 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19895
19896 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19897 }
19898 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19899 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19900
19901 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19902 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19903 if (rccal_valid & 0x2)
19904 break;
19905
19906 udelay(500);
19907 }
19908
19909 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19910
19911 rccal_valid = 0;
19912 if (chip43226_6362A0) {
19913 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19914 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19915 } else {
19916 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19917
19918 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19919 }
19920 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19921 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19922
19923 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19924 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19925 if (rccal_valid & 0x2)
19926 break;
19927
19928 udelay(500);
19929 }
19930
19931 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19932
19933 rccal_valid = 0;
19934 if (chip43226_6362A0) {
19935 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19936
19937 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19938 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19939 } else {
19940 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19941 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19942 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19943 }
19944 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19945
19946 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19947 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19948 if (rccal_valid & 0x2)
19949 break;
19950
19951 udelay(500);
19952 }
19953
19954 if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19955 return 0;
19956
19957 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19958
19959 return rccal_valid;
19960 }
19961
wlc_phy_radio_postinit_2057(struct brcms_phy * pi)19962 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19963 {
19964
19965 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19966
19967 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19968 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19969 mdelay(2);
19970 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19971 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19972
19973 if (pi->phy_init_por) {
19974 wlc_phy_radio205x_rcal(pi);
19975 wlc_phy_radio2057_rccal(pi);
19976 }
19977
19978 mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19979 }
19980
wlc_phy_radio_init_2056(struct brcms_phy * pi)19981 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
19982 {
19983 const struct radio_regs *regs_SYN_2056_ptr = NULL;
19984 const struct radio_regs *regs_TX_2056_ptr = NULL;
19985 const struct radio_regs *regs_RX_2056_ptr = NULL;
19986
19987 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19988 regs_SYN_2056_ptr = regs_SYN_2056;
19989 regs_TX_2056_ptr = regs_TX_2056;
19990 regs_RX_2056_ptr = regs_RX_2056;
19991 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
19992 regs_SYN_2056_ptr = regs_SYN_2056_A1;
19993 regs_TX_2056_ptr = regs_TX_2056_A1;
19994 regs_RX_2056_ptr = regs_RX_2056_A1;
19995 } else {
19996 switch (pi->pubpi.radiorev) {
19997 case 5:
19998 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
19999 regs_TX_2056_ptr = regs_TX_2056_rev5;
20000 regs_RX_2056_ptr = regs_RX_2056_rev5;
20001 break;
20002
20003 case 6:
20004 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20005 regs_TX_2056_ptr = regs_TX_2056_rev6;
20006 regs_RX_2056_ptr = regs_RX_2056_rev6;
20007 break;
20008
20009 case 7:
20010 case 9:
20011 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20012 regs_TX_2056_ptr = regs_TX_2056_rev7;
20013 regs_RX_2056_ptr = regs_RX_2056_rev7;
20014 break;
20015
20016 case 8:
20017 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20018 regs_TX_2056_ptr = regs_TX_2056_rev8;
20019 regs_RX_2056_ptr = regs_RX_2056_rev8;
20020 break;
20021
20022 case 11:
20023 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20024 regs_TX_2056_ptr = regs_TX_2056_rev11;
20025 regs_RX_2056_ptr = regs_RX_2056_rev11;
20026 break;
20027
20028 default:
20029 return;
20030 }
20031 }
20032
20033 wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20034
20035 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20036
20037 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20038
20039 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20040
20041 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20042 }
20043
wlc_phy_radio_postinit_2056(struct brcms_phy * pi)20044 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20045 {
20046 mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20047
20048 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20049 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20050 udelay(1000);
20051 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20052
20053 if ((pi->sh->boardflags2 & BFL2_LEGACY)
20054 || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20055 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20056 else
20057 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20058
20059 mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20060
20061 if (pi->phy_init_por)
20062 wlc_phy_radio205x_rcal(pi);
20063 }
20064
wlc_phy_radio_preinit_2055(struct brcms_phy * pi)20065 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20066 {
20067
20068 and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20069 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20070
20071 or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20072 }
20073
wlc_phy_radio_init_2055(struct brcms_phy * pi)20074 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20075 {
20076 wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20077 }
20078
wlc_phy_radio_postinit_2055(struct brcms_phy * pi)20079 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20080 {
20081
20082 and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20083 ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20084
20085 if (((pi->sh->sromrev >= 4)
20086 && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20087 || ((pi->sh->sromrev < 4))) {
20088 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20089 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20090 }
20091
20092 mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20093 write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20094
20095 and_radio_reg(pi, RADIO_2055_CAL_MISC,
20096 ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20097
20098 or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20099
20100 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20101
20102 udelay(1000);
20103
20104 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20105
20106 SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20107 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20108
20109 if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20110 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20111 "HW error: radio calibration1\n"))
20112 return;
20113
20114 and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20115 ~(RADIO_2055_CAL_LPO_ENABLE));
20116
20117 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20118
20119 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20120 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20121
20122 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20123 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20124
20125 mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20126 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20127 mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20128 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20129 if (pi->nphy_gain_boost) {
20130 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20131 ~(RADIO_2055_GAINBST_DISABLE));
20132 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20133 ~(RADIO_2055_GAINBST_DISABLE));
20134 } else {
20135 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20136 RADIO_2055_GAINBST_DISABLE);
20137 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20138 RADIO_2055_GAINBST_DISABLE);
20139 }
20140
20141 udelay(2);
20142 }
20143
wlc_phy_switch_radio_nphy(struct brcms_phy * pi,bool on)20144 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20145 {
20146 if (on) {
20147 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20148 if (!pi->radio_is_on) {
20149 wlc_phy_radio_preinit_205x(pi);
20150 wlc_phy_radio_init_2057(pi);
20151 wlc_phy_radio_postinit_2057(pi);
20152 }
20153
20154 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20155 pi->radio_chanspec);
20156 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20157 wlc_phy_radio_preinit_205x(pi);
20158 wlc_phy_radio_init_2056(pi);
20159 wlc_phy_radio_postinit_2056(pi);
20160
20161 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20162 pi->radio_chanspec);
20163 } else {
20164 wlc_phy_radio_preinit_2055(pi);
20165 wlc_phy_radio_init_2055(pi);
20166 wlc_phy_radio_postinit_2055(pi);
20167 }
20168
20169 pi->radio_is_on = true;
20170
20171 } else {
20172
20173 if (NREV_GE(pi->pubpi.phy_rev, 3)
20174 && NREV_LT(pi->pubpi.phy_rev, 7)) {
20175 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20176 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20177
20178 write_radio_reg(pi,
20179 RADIO_2056_TX_PADA_BOOST_TUNE |
20180 RADIO_2056_TX0, 0);
20181 write_radio_reg(pi,
20182 RADIO_2056_TX_PADG_BOOST_TUNE |
20183 RADIO_2056_TX0, 0);
20184 write_radio_reg(pi,
20185 RADIO_2056_TX_PGAA_BOOST_TUNE |
20186 RADIO_2056_TX0, 0);
20187 write_radio_reg(pi,
20188 RADIO_2056_TX_PGAG_BOOST_TUNE |
20189 RADIO_2056_TX0, 0);
20190 mod_radio_reg(pi,
20191 RADIO_2056_TX_MIXA_BOOST_TUNE |
20192 RADIO_2056_TX0, 0xf0, 0);
20193 write_radio_reg(pi,
20194 RADIO_2056_TX_MIXG_BOOST_TUNE |
20195 RADIO_2056_TX0, 0);
20196
20197 write_radio_reg(pi,
20198 RADIO_2056_TX_PADA_BOOST_TUNE |
20199 RADIO_2056_TX1, 0);
20200 write_radio_reg(pi,
20201 RADIO_2056_TX_PADG_BOOST_TUNE |
20202 RADIO_2056_TX1, 0);
20203 write_radio_reg(pi,
20204 RADIO_2056_TX_PGAA_BOOST_TUNE |
20205 RADIO_2056_TX1, 0);
20206 write_radio_reg(pi,
20207 RADIO_2056_TX_PGAG_BOOST_TUNE |
20208 RADIO_2056_TX1, 0);
20209 mod_radio_reg(pi,
20210 RADIO_2056_TX_MIXA_BOOST_TUNE |
20211 RADIO_2056_TX1, 0xf0, 0);
20212 write_radio_reg(pi,
20213 RADIO_2056_TX_MIXG_BOOST_TUNE |
20214 RADIO_2056_TX1, 0);
20215
20216 pi->radio_is_on = false;
20217 }
20218
20219 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20220 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20221 pi->radio_is_on = false;
20222 }
20223
20224 }
20225 }
20226
20227 static bool
wlc_phy_chan2freq_nphy(struct brcms_phy * pi,uint channel,int * f,const struct chan_info_nphy_radio2057 ** t0,const struct chan_info_nphy_radio205x ** t1,const struct chan_info_nphy_radio2057_rev5 ** t2,const struct chan_info_nphy_2055 ** t3)20228 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20229 const struct chan_info_nphy_radio2057 **t0,
20230 const struct chan_info_nphy_radio205x **t1,
20231 const struct chan_info_nphy_radio2057_rev5 **t2,
20232 const struct chan_info_nphy_2055 **t3)
20233 {
20234 uint i;
20235 const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20236 const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20237 const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20238 u32 tbl_len = 0;
20239
20240 int freq = 0;
20241
20242 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20243
20244 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20245
20246 chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20247 tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20248
20249 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20250 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20251 switch (pi->pubpi.radiorev) {
20252
20253 case 5:
20254
20255 if (pi->pubpi.radiover == 0x0) {
20256
20257 chan_info_tbl_p_2 =
20258 chan_info_nphyrev8_2057_rev5;
20259 tbl_len = ARRAY_SIZE(
20260 chan_info_nphyrev8_2057_rev5);
20261
20262 } else if (pi->pubpi.radiover == 0x1) {
20263
20264 chan_info_tbl_p_2 =
20265 chan_info_nphyrev9_2057_rev5v1;
20266 tbl_len = ARRAY_SIZE(
20267 chan_info_nphyrev9_2057_rev5v1);
20268
20269 }
20270 break;
20271
20272 case 7:
20273 chan_info_tbl_p_0 =
20274 chan_info_nphyrev8_2057_rev7;
20275 tbl_len = ARRAY_SIZE(
20276 chan_info_nphyrev8_2057_rev7);
20277 break;
20278
20279 case 8:
20280 chan_info_tbl_p_0 =
20281 chan_info_nphyrev8_2057_rev8;
20282 tbl_len = ARRAY_SIZE(
20283 chan_info_nphyrev8_2057_rev8);
20284 break;
20285
20286 default:
20287 break;
20288 }
20289 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20290
20291 chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20292 tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20293 } else {
20294 goto fail;
20295 }
20296
20297 for (i = 0; i < tbl_len; i++) {
20298 if (pi->pubpi.radiorev == 5) {
20299
20300 if (chan_info_tbl_p_2[i].chan == channel)
20301 break;
20302 } else {
20303
20304 if (chan_info_tbl_p_0[i].chan == channel)
20305 break;
20306 }
20307 }
20308
20309 if (i >= tbl_len)
20310 goto fail;
20311
20312 if (pi->pubpi.radiorev == 5) {
20313 *t2 = &chan_info_tbl_p_2[i];
20314 freq = chan_info_tbl_p_2[i].freq;
20315 } else {
20316 *t0 = &chan_info_tbl_p_0[i];
20317 freq = chan_info_tbl_p_0[i].freq;
20318 }
20319
20320 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20321 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20322 chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20323 tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20324 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20325 chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20326 tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20327 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20328 || NREV_IS(pi->pubpi.phy_rev, 6)) {
20329 switch (pi->pubpi.radiorev) {
20330 case 5:
20331 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20332 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20333 break;
20334 case 6:
20335 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20336 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20337 break;
20338 case 7:
20339 case 9:
20340 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20341 tbl_len =
20342 ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20343 break;
20344 case 8:
20345 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20346 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20347 break;
20348 case 11:
20349 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20350 tbl_len = ARRAY_SIZE(
20351 chan_info_nphyrev6_2056v11);
20352 break;
20353 default:
20354 break;
20355 }
20356 }
20357
20358 for (i = 0; i < tbl_len; i++) {
20359 if (chan_info_tbl_p_1[i].chan == channel)
20360 break;
20361 }
20362
20363 if (i >= tbl_len)
20364 goto fail;
20365
20366 *t1 = &chan_info_tbl_p_1[i];
20367 freq = chan_info_tbl_p_1[i].freq;
20368
20369 } else {
20370 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20371 if (chan_info_nphy_2055[i].chan == channel)
20372 break;
20373
20374 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20375 goto fail;
20376
20377 *t3 = &chan_info_nphy_2055[i];
20378 freq = chan_info_nphy_2055[i].freq;
20379 }
20380
20381 *f = freq;
20382 return true;
20383
20384 fail:
20385 *f = WL_CHAN_FREQ_RANGE_2G;
20386 return false;
20387 }
20388
wlc_phy_get_chan_freq_range_nphy(struct brcms_phy * pi,uint channel)20389 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20390 {
20391 int freq;
20392 const struct chan_info_nphy_radio2057 *t0 = NULL;
20393 const struct chan_info_nphy_radio205x *t1 = NULL;
20394 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20395 const struct chan_info_nphy_2055 *t3 = NULL;
20396
20397 if (channel == 0)
20398 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20399
20400 wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20401
20402 if (CHSPEC_IS2G(pi->radio_chanspec))
20403 return WL_CHAN_FREQ_RANGE_2G;
20404
20405 if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20406 return WL_CHAN_FREQ_RANGE_5GL;
20407 else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20408 return WL_CHAN_FREQ_RANGE_5GM;
20409 else
20410 return WL_CHAN_FREQ_RANGE_5GH;
20411 }
20412
20413 static void
wlc_phy_chanspec_radio2055_setup(struct brcms_phy * pi,const struct chan_info_nphy_2055 * ci)20414 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20415 const struct chan_info_nphy_2055 *ci)
20416 {
20417
20418 write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20419 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20420 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20421 write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20422
20423 BRCMS_PHY_WAR_PR51571(pi);
20424
20425 write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20426 write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20427 write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20428 write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20429
20430 BRCMS_PHY_WAR_PR51571(pi);
20431
20432 write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20433 write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20434 write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20435 write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20436
20437 BRCMS_PHY_WAR_PR51571(pi);
20438
20439 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20440 ci->RF_core1_lgbuf_a_tune);
20441 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20442 ci->RF_core1_lgbuf_g_tune);
20443 write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20444 write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20445 ci->RF_core1_tx_pga_pad_tn);
20446
20447 BRCMS_PHY_WAR_PR51571(pi);
20448
20449 write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20450 ci->RF_core1_tx_mx_bgtrim);
20451 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20452 ci->RF_core2_lgbuf_a_tune);
20453 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20454 ci->RF_core2_lgbuf_g_tune);
20455 write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20456
20457 BRCMS_PHY_WAR_PR51571(pi);
20458
20459 write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20460 ci->RF_core2_tx_pga_pad_tn);
20461 write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20462 ci->RF_core2_tx_mx_bgtrim);
20463
20464 udelay(50);
20465
20466 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20467 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20468
20469 BRCMS_PHY_WAR_PR51571(pi);
20470
20471 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20472
20473 udelay(300);
20474 }
20475
20476 static void
wlc_phy_chanspec_radio2056_setup(struct brcms_phy * pi,const struct chan_info_nphy_radio205x * ci)20477 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20478 const struct chan_info_nphy_radio205x *ci)
20479 {
20480 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20481
20482 write_radio_reg(pi,
20483 RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20484 ci->RF_SYN_pll_vcocal1);
20485 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20486 ci->RF_SYN_pll_vcocal2);
20487 write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20488 ci->RF_SYN_pll_refdiv);
20489 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20490 ci->RF_SYN_pll_mmd2);
20491 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20492 ci->RF_SYN_pll_mmd1);
20493 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20494 ci->RF_SYN_pll_loopfilter1);
20495 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20496 ci->RF_SYN_pll_loopfilter2);
20497 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20498 ci->RF_SYN_pll_loopfilter3);
20499 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20500 ci->RF_SYN_pll_loopfilter4);
20501 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20502 ci->RF_SYN_pll_loopfilter5);
20503 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20504 ci->RF_SYN_reserved_addr27);
20505 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20506 ci->RF_SYN_reserved_addr28);
20507 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20508 ci->RF_SYN_reserved_addr29);
20509 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20510 ci->RF_SYN_logen_VCOBUF1);
20511 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20512 ci->RF_SYN_logen_MIXER2);
20513 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20514 ci->RF_SYN_logen_BUF3);
20515 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20516 ci->RF_SYN_logen_BUF4);
20517
20518 write_radio_reg(pi,
20519 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20520 ci->RF_RX0_lnaa_tune);
20521 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20522 ci->RF_RX0_lnag_tune);
20523 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20524 ci->RF_TX0_intpaa_boost_tune);
20525 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20526 ci->RF_TX0_intpag_boost_tune);
20527 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20528 ci->RF_TX0_pada_boost_tune);
20529 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20530 ci->RF_TX0_padg_boost_tune);
20531 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20532 ci->RF_TX0_pgaa_boost_tune);
20533 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20534 ci->RF_TX0_pgag_boost_tune);
20535 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20536 ci->RF_TX0_mixa_boost_tune);
20537 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20538 ci->RF_TX0_mixg_boost_tune);
20539
20540 write_radio_reg(pi,
20541 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20542 ci->RF_RX1_lnaa_tune);
20543 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20544 ci->RF_RX1_lnag_tune);
20545 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20546 ci->RF_TX1_intpaa_boost_tune);
20547 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20548 ci->RF_TX1_intpag_boost_tune);
20549 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20550 ci->RF_TX1_pada_boost_tune);
20551 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20552 ci->RF_TX1_padg_boost_tune);
20553 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20554 ci->RF_TX1_pgaa_boost_tune);
20555 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20556 ci->RF_TX1_pgag_boost_tune);
20557 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20558 ci->RF_TX1_mixa_boost_tune);
20559 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20560 ci->RF_TX1_mixg_boost_tune);
20561
20562 if (NREV_IS(pi->pubpi.phy_rev, 3))
20563 regs_SYN_2056_ptr = regs_SYN_2056;
20564 else if (NREV_IS(pi->pubpi.phy_rev, 4))
20565 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20566 else {
20567 switch (pi->pubpi.radiorev) {
20568 case 5:
20569 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20570 break;
20571 case 6:
20572 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20573 break;
20574 case 7:
20575 case 9:
20576 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20577 break;
20578 case 8:
20579 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20580 break;
20581 case 11:
20582 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20583 break;
20584 }
20585 }
20586 if (CHSPEC_IS2G(pi->radio_chanspec))
20587 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20588 RADIO_2056_SYN,
20589 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20590 else
20591 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20592 RADIO_2056_SYN,
20593 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20594
20595 if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20596 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20597 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20598 RADIO_2056_SYN, 0x1f);
20599 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20600 RADIO_2056_SYN, 0x1f);
20601
20602 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20603 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20604 write_radio_reg(pi,
20605 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20606 RADIO_2056_SYN, 0x14);
20607 write_radio_reg(pi,
20608 RADIO_2056_SYN_PLL_CP2 |
20609 RADIO_2056_SYN, 0x00);
20610 } else {
20611 write_radio_reg(pi,
20612 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20613 RADIO_2056_SYN, 0xb);
20614 write_radio_reg(pi,
20615 RADIO_2056_SYN_PLL_CP2 |
20616 RADIO_2056_SYN, 0x14);
20617 }
20618 }
20619 }
20620
20621 if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20622 (CHSPEC_IS2G(pi->radio_chanspec))) {
20623 write_radio_reg(pi,
20624 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20625 0x1f);
20626 write_radio_reg(pi,
20627 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20628 0x1f);
20629 write_radio_reg(pi,
20630 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20631 0xb);
20632 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20633 0x20);
20634 }
20635
20636 if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20637 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20638 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20639 RADIO_2056_SYN, 0x1f);
20640 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20641 RADIO_2056_SYN, 0x1f);
20642 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20643 RADIO_2056_SYN, 0x5);
20644 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20645 RADIO_2056_SYN, 0xc);
20646 }
20647 }
20648
20649 if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20650 u16 pag_boost_tune;
20651 u16 padg_boost_tune;
20652 u16 pgag_boost_tune;
20653 u16 mixg_boost_tune;
20654 u16 bias, cascbias;
20655 uint core;
20656
20657 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20658
20659 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20660
20661 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20662 PADG_IDAC, 0xcc);
20663
20664 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20665 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20666 bias = 0x40;
20667 cascbias = 0x45;
20668 pag_boost_tune = 0x5;
20669 pgag_boost_tune = 0x33;
20670 padg_boost_tune = 0x77;
20671 mixg_boost_tune = 0x55;
20672 } else {
20673 bias = 0x25;
20674 cascbias = 0x20;
20675
20676 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20677 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20678 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20679 bias = 0x2a;
20680 cascbias = 0x38;
20681 }
20682
20683 pag_boost_tune = 0x4;
20684 pgag_boost_tune = 0x03;
20685 padg_boost_tune = 0x77;
20686 mixg_boost_tune = 0x65;
20687 }
20688
20689 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20690 INTPAG_IMAIN_STAT, bias);
20691 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20692 INTPAG_IAUX_STAT, bias);
20693 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20694 INTPAG_CASCBIAS, cascbias);
20695
20696 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20697 INTPAG_BOOST_TUNE,
20698 pag_boost_tune);
20699 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20700 PGAG_BOOST_TUNE,
20701 pgag_boost_tune);
20702 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20703 PADG_BOOST_TUNE,
20704 padg_boost_tune);
20705 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20706 MIXG_BOOST_TUNE,
20707 mixg_boost_tune);
20708 } else {
20709
20710 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20711 0x40 : 0x20;
20712
20713 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20714 INTPAG_IMAIN_STAT, bias);
20715 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20716 INTPAG_IAUX_STAT, bias);
20717 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20718 INTPAG_CASCBIAS, 0x30);
20719 }
20720 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20721 0xee);
20722 }
20723 }
20724
20725 if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20726 && CHSPEC_IS5G(pi->radio_chanspec)) {
20727 u16 paa_boost_tune;
20728 u16 pada_boost_tune;
20729 u16 pgaa_boost_tune;
20730 u16 mixa_boost_tune;
20731 u16 freq, pabias, cascbias;
20732 uint core;
20733
20734 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20735
20736 if (freq < 5150) {
20737
20738 paa_boost_tune = 0xa;
20739 pada_boost_tune = 0x77;
20740 pgaa_boost_tune = 0xf;
20741 mixa_boost_tune = 0xf;
20742 } else if (freq < 5340) {
20743
20744 paa_boost_tune = 0x8;
20745 pada_boost_tune = 0x77;
20746 pgaa_boost_tune = 0xfb;
20747 mixa_boost_tune = 0xf;
20748 } else if (freq < 5650) {
20749
20750 paa_boost_tune = 0x0;
20751 pada_boost_tune = 0x77;
20752 pgaa_boost_tune = 0xb;
20753 mixa_boost_tune = 0xf;
20754 } else {
20755
20756 paa_boost_tune = 0x0;
20757 pada_boost_tune = 0x77;
20758 if (freq != 5825)
20759 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20760 else
20761 pgaa_boost_tune = 6;
20762
20763 mixa_boost_tune = 0xf;
20764 }
20765
20766 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20767 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20768 INTPAA_BOOST_TUNE, paa_boost_tune);
20769 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20770 PADA_BOOST_TUNE, pada_boost_tune);
20771 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20772 PGAA_BOOST_TUNE, pgaa_boost_tune);
20773 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20774 MIXA_BOOST_TUNE, mixa_boost_tune);
20775
20776 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20777 TXSPARE1, 0x30);
20778 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20779 PA_SPARE2, 0xee);
20780
20781 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20782 PADA_CASCBIAS, 0x3);
20783
20784 cascbias = 0x30;
20785
20786 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20787 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20788 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20789 cascbias = 0x35;
20790
20791 pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20792
20793 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20794 INTPAA_IAUX_STAT, pabias);
20795 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20796 INTPAA_IMAIN_STAT, pabias);
20797 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20798 INTPAA_CASCBIAS, cascbias);
20799 }
20800 }
20801
20802 udelay(50);
20803
20804 wlc_phy_radio205x_vcocal_nphy(pi);
20805 }
20806
wlc_phy_radio205x_vcocal_nphy(struct brcms_phy * pi)20807 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20808 {
20809 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20810 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20811 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20812 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20813 (1 << 2));
20814 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20815 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20816 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20817 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20818 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20819 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20820 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20821 }
20822
20823 udelay(300);
20824 }
20825
20826 static void
wlc_phy_chanspec_radio2057_setup(struct brcms_phy * pi,const struct chan_info_nphy_radio2057 * ci,const struct chan_info_nphy_radio2057_rev5 * ci2)20827 wlc_phy_chanspec_radio2057_setup(
20828 struct brcms_phy *pi,
20829 const struct chan_info_nphy_radio2057 *ci,
20830 const struct chan_info_nphy_radio2057_rev5 *
20831 ci2)
20832 {
20833 int coreNum;
20834 u16 txmix2g_tune_boost_pu = 0;
20835 u16 pad2g_tune_pus = 0;
20836
20837 if (pi->pubpi.radiorev == 5) {
20838
20839 write_radio_reg(pi,
20840 RADIO_2057_VCOCAL_COUNTVAL0,
20841 ci2->RF_vcocal_countval0);
20842 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20843 ci2->RF_vcocal_countval1);
20844 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20845 ci2->RF_rfpll_refmaster_sparextalsize);
20846 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20847 ci2->RF_rfpll_loopfilter_r1);
20848 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20849 ci2->RF_rfpll_loopfilter_c2);
20850 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20851 ci2->RF_rfpll_loopfilter_c1);
20852 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20853 ci2->RF_cp_kpd_idac);
20854 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20855 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20856 write_radio_reg(pi,
20857 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20858 write_radio_reg(pi,
20859 RADIO_2057_LOGEN_MX2G_TUNE,
20860 ci2->RF_logen_mx2g_tune);
20861 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20862 ci2->RF_logen_indbuf2g_tune);
20863
20864 write_radio_reg(pi,
20865 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20866 ci2->RF_txmix2g_tune_boost_pu_core0);
20867 write_radio_reg(pi,
20868 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20869 ci2->RF_pad2g_tune_pus_core0);
20870 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20871 ci2->RF_lna2g_tune_core0);
20872
20873 write_radio_reg(pi,
20874 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20875 ci2->RF_txmix2g_tune_boost_pu_core1);
20876 write_radio_reg(pi,
20877 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20878 ci2->RF_pad2g_tune_pus_core1);
20879 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20880 ci2->RF_lna2g_tune_core1);
20881
20882 } else {
20883
20884 write_radio_reg(pi,
20885 RADIO_2057_VCOCAL_COUNTVAL0,
20886 ci->RF_vcocal_countval0);
20887 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20888 ci->RF_vcocal_countval1);
20889 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20890 ci->RF_rfpll_refmaster_sparextalsize);
20891 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20892 ci->RF_rfpll_loopfilter_r1);
20893 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20894 ci->RF_rfpll_loopfilter_c2);
20895 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20896 ci->RF_rfpll_loopfilter_c1);
20897 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20898 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20899 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20900 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20901 write_radio_reg(pi,
20902 RADIO_2057_LOGEN_MX2G_TUNE,
20903 ci->RF_logen_mx2g_tune);
20904 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20905 ci->RF_logen_mx5g_tune);
20906 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20907 ci->RF_logen_indbuf2g_tune);
20908 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20909 ci->RF_logen_indbuf5g_tune);
20910
20911 write_radio_reg(pi,
20912 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20913 ci->RF_txmix2g_tune_boost_pu_core0);
20914 write_radio_reg(pi,
20915 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20916 ci->RF_pad2g_tune_pus_core0);
20917 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20918 ci->RF_pga_boost_tune_core0);
20919 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20920 ci->RF_txmix5g_boost_tune_core0);
20921 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20922 ci->RF_pad5g_tune_misc_pus_core0);
20923 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20924 ci->RF_lna2g_tune_core0);
20925 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20926 ci->RF_lna5g_tune_core0);
20927
20928 write_radio_reg(pi,
20929 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20930 ci->RF_txmix2g_tune_boost_pu_core1);
20931 write_radio_reg(pi,
20932 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20933 ci->RF_pad2g_tune_pus_core1);
20934 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20935 ci->RF_pga_boost_tune_core1);
20936 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20937 ci->RF_txmix5g_boost_tune_core1);
20938 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20939 ci->RF_pad5g_tune_misc_pus_core1);
20940 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20941 ci->RF_lna2g_tune_core1);
20942 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20943 ci->RF_lna5g_tune_core1);
20944 }
20945
20946 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20947
20948 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20949 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20950 0x3f);
20951 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20952 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20953 0x8);
20954 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20955 0x8);
20956 } else {
20957 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20958 0x1f);
20959 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20960 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20961 0x8);
20962 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20963 0x8);
20964 }
20965 } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20966 (pi->pubpi.radiorev == 8)) {
20967
20968 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20969 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20970 0x1b);
20971 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20972 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20973 0xa);
20974 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20975 0xa);
20976 } else {
20977 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20978 0x1f);
20979 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20980 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20981 0x8);
20982 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20983 0x8);
20984 }
20985
20986 }
20987
20988 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20989 if (PHY_IPA(pi)) {
20990 if (pi->pubpi.radiorev == 3)
20991 txmix2g_tune_boost_pu = 0x6b;
20992
20993 if (pi->pubpi.radiorev == 5)
20994 pad2g_tune_pus = 0x73;
20995
20996 } else {
20997 if (pi->pubpi.radiorev != 5) {
20998 pad2g_tune_pus = 0x3;
20999
21000 txmix2g_tune_boost_pu = 0x61;
21001 }
21002 }
21003
21004 for (coreNum = 0; coreNum <= 1; coreNum++) {
21005
21006 if (txmix2g_tune_boost_pu != 0)
21007 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21008 TXMIX2G_TUNE_BOOST_PU,
21009 txmix2g_tune_boost_pu);
21010
21011 if (pad2g_tune_pus != 0)
21012 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21013 PAD2G_TUNE_PUS,
21014 pad2g_tune_pus);
21015 }
21016 }
21017
21018 udelay(50);
21019
21020 wlc_phy_radio205x_vcocal_nphy(pi);
21021 }
21022
21023 static void
wlc_phy_chanspec_nphy_setup(struct brcms_phy * pi,u16 chanspec,const struct nphy_sfo_cfg * ci)21024 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21025 const struct nphy_sfo_cfg *ci)
21026 {
21027 u16 val;
21028
21029 val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21030 if (CHSPEC_IS5G(chanspec) && !val) {
21031
21032 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21033 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21034 (val | MAC_PHY_FORCE_CLK));
21035
21036 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21037 (BBCFG_RESETCCA | BBCFG_RESETRX));
21038
21039 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21040
21041 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21042 } else if (!CHSPEC_IS5G(chanspec) && val) {
21043
21044 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21045
21046 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21047 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21048 (val | MAC_PHY_FORCE_CLK));
21049
21050 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21051 0xffff & ~(BBCFG_RESETCCA | BBCFG_RESETRX));
21052
21053 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21054 }
21055
21056 write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21057 write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21058 write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21059
21060 write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21061 write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21062 write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21063
21064 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21065 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21066
21067 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21068 } else {
21069 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21070 NPHY_ClassifierCtrl_ofdm_en);
21071
21072 if (CHSPEC_IS2G(chanspec))
21073 and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21074 }
21075
21076 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21077 wlc_phy_txpwr_fixpower_nphy(pi);
21078
21079 if (NREV_LT(pi->pubpi.phy_rev, 3))
21080 wlc_phy_adjust_lnagaintbl_nphy(pi);
21081
21082 wlc_phy_txlpfbw_nphy(pi);
21083
21084 if (NREV_GE(pi->pubpi.phy_rev, 3)
21085 && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21086 u8 spuravoid = 0;
21087
21088 val = CHSPEC_CHANNEL(chanspec);
21089 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21090 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21091 if ((val == 13) || (val == 14) || (val == 153))
21092 spuravoid = 1;
21093 } else if (((val >= 5) && (val <= 8)) || (val == 13)
21094 || (val == 14)) {
21095 spuravoid = 1;
21096 }
21097 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21098 if (val == 54)
21099 spuravoid = 1;
21100 } else if (pi->nphy_aband_spurwar_en &&
21101 ((val == 38) || (val == 102) || (val == 118))) {
21102 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21103 && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21104 spuravoid = 0;
21105 } else {
21106 spuravoid = 1;
21107 }
21108 }
21109
21110 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21111 spuravoid = 1;
21112
21113 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21114 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21115 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21116 spuravoid);
21117 } else {
21118 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21119 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21120 spuravoid);
21121 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21122 }
21123
21124 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21125 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21126 if (spuravoid == 1) {
21127 bcma_write16(pi->d11core,
21128 D11REGOFFS(tsf_clk_frac_l),
21129 0x5341);
21130 bcma_write16(pi->d11core,
21131 D11REGOFFS(tsf_clk_frac_h), 0x8);
21132 } else {
21133 bcma_write16(pi->d11core,
21134 D11REGOFFS(tsf_clk_frac_l),
21135 0x8889);
21136 bcma_write16(pi->d11core,
21137 D11REGOFFS(tsf_clk_frac_h), 0x8);
21138 }
21139 }
21140
21141 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21142 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21143 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21144
21145 mod_phy_reg(pi, 0x01, (0x1 << 15),
21146 ((spuravoid > 0) ? (0x1 << 15) : 0));
21147
21148 wlc_phy_resetcca_nphy(pi);
21149
21150 pi->phy_isspuravoid = (spuravoid > 0);
21151 }
21152
21153 if (NREV_LT(pi->pubpi.phy_rev, 7))
21154 write_phy_reg(pi, 0x17e, 0x3830);
21155
21156 wlc_phy_spurwar_nphy(pi);
21157 }
21158
wlc_phy_chanspec_set_nphy(struct brcms_phy * pi,u16 chanspec)21159 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21160 {
21161 int freq;
21162 const struct chan_info_nphy_radio2057 *t0 = NULL;
21163 const struct chan_info_nphy_radio205x *t1 = NULL;
21164 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21165 const struct chan_info_nphy_2055 *t3 = NULL;
21166
21167 if (!wlc_phy_chan2freq_nphy
21168 (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21169 return;
21170
21171 wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21172
21173 if (CHSPEC_BW(chanspec) != pi->bw)
21174 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21175
21176 if (CHSPEC_IS40(chanspec)) {
21177 if (CHSPEC_SB_UPPER(chanspec)) {
21178 or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21179 if (NREV_GE(pi->pubpi.phy_rev, 7))
21180 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21181 } else {
21182 and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21183 if (NREV_GE(pi->pubpi.phy_rev, 7))
21184 and_phy_reg(pi, 0x310,
21185 (~PRIM_SEL_UP20 & 0xffff));
21186 }
21187 }
21188
21189 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21190 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21191
21192 if ((pi->pubpi.radiorev <= 4)
21193 || (pi->pubpi.radiorev == 6)) {
21194 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21195 0x2,
21196 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21197 : 0));
21198 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21199 0x2,
21200 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21201 : 0));
21202 }
21203
21204 wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21205 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21206 (pi->pubpi.radiorev == 5) ?
21207 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21208 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21209
21210 } else {
21211
21212 mod_radio_reg(pi,
21213 RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21214 0x4,
21215 (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21216 wlc_phy_chanspec_radio2056_setup(pi, t1);
21217
21218 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21219 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21220 }
21221
21222 } else {
21223
21224 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21225 (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21226 : (0x05 << 4)));
21227
21228 wlc_phy_chanspec_radio2055_setup(pi, t3);
21229 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21230 (const struct nphy_sfo_cfg *)
21231 &(t3->PHY_BW1a));
21232 }
21233
21234 }
21235
wlc_phy_antsel_init(struct brcms_phy_pub * ppi,bool lut_init)21236 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21237 {
21238 struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21239 u16 mask = 0xfc00;
21240 u32 mc = 0;
21241
21242 if (NREV_GE(pi->pubpi.phy_rev, 7))
21243 return;
21244
21245 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21246 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21247
21248 if (!lut_init)
21249 return;
21250
21251 if (pi->srom_fem2g.antswctrllut == 0) {
21252 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21253 1, 0x02, 16, &v0);
21254 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21255 1, 0x03, 16, &v1);
21256 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21257 1, 0x08, 16, &v2);
21258 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21259 1, 0x0C, 16, &v3);
21260 }
21261
21262 if (pi->srom_fem5g.antswctrllut == 0) {
21263 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21264 1, 0x12, 16, &v0);
21265 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21266 1, 0x13, 16, &v1);
21267 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21268 1, 0x18, 16, &v2);
21269 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21270 1, 0x1C, 16, &v3);
21271 }
21272 } else {
21273
21274 write_phy_reg(pi, 0xc8, 0x0);
21275 write_phy_reg(pi, 0xc9, 0x0);
21276
21277 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21278
21279 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21280 mc &= ~MCTL_GPOUT_SEL_MASK;
21281 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21282
21283 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21284
21285 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out),
21286 0xffff & ~mask);
21287
21288 if (lut_init) {
21289 write_phy_reg(pi, 0xf8, 0x02d8);
21290 write_phy_reg(pi, 0xf9, 0x0301);
21291 write_phy_reg(pi, 0xfa, 0x02d8);
21292 write_phy_reg(pi, 0xfb, 0x0301);
21293 }
21294 }
21295 }
21296
wlc_phy_classifier_nphy(struct brcms_phy * pi,u16 mask,u16 val)21297 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21298 {
21299 u16 curr_ctl, new_ctl;
21300 bool suspended = false;
21301
21302 if (D11REV_IS(pi->sh->corerev, 16)) {
21303 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21304 MCTL_EN_MAC) ? false : true;
21305 if (!suspended)
21306 wlapi_suspend_mac_and_wait(pi->sh->physhim);
21307 }
21308
21309 curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21310
21311 new_ctl = (curr_ctl & (~mask)) | (val & mask);
21312
21313 mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21314
21315 if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21316 wlapi_enable_mac(pi->sh->physhim);
21317
21318 return new_ctl;
21319 }
21320
wlc_phy_force_rfseq_nphy(struct brcms_phy * pi,u8 cmd)21321 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21322 {
21323 u16 trigger_mask, status_mask;
21324 u16 orig_RfseqCoreActv;
21325
21326 switch (cmd) {
21327 case NPHY_RFSEQ_RX2TX:
21328 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21329 status_mask = NPHY_RfseqStatus_rx2tx;
21330 break;
21331 case NPHY_RFSEQ_TX2RX:
21332 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21333 status_mask = NPHY_RfseqStatus_tx2rx;
21334 break;
21335 case NPHY_RFSEQ_RESET2RX:
21336 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21337 status_mask = NPHY_RfseqStatus_reset2rx;
21338 break;
21339 case NPHY_RFSEQ_UPDATEGAINH:
21340 trigger_mask = NPHY_RfseqTrigger_updategainh;
21341 status_mask = NPHY_RfseqStatus_updategainh;
21342 break;
21343 case NPHY_RFSEQ_UPDATEGAINL:
21344 trigger_mask = NPHY_RfseqTrigger_updategainl;
21345 status_mask = NPHY_RfseqStatus_updategainl;
21346 break;
21347 case NPHY_RFSEQ_UPDATEGAINU:
21348 trigger_mask = NPHY_RfseqTrigger_updategainu;
21349 status_mask = NPHY_RfseqStatus_updategainu;
21350 break;
21351 default:
21352 return;
21353 }
21354
21355 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21356 or_phy_reg(pi, 0xa1,
21357 (NPHY_RfseqMode_CoreActv_override |
21358 NPHY_RfseqMode_Trigger_override));
21359 or_phy_reg(pi, 0xa3, trigger_mask);
21360 SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21361 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21362 WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21363 }
21364
21365 static void
wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy * pi,u16 cmd,u16 value,u8 core_mask,u8 off)21366 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21367 u8 core_mask, u8 off)
21368 {
21369 u16 rfmxgain = 0, lpfgain = 0;
21370 u16 tgain = 0;
21371
21372 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21373
21374 switch (cmd) {
21375 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21376 wlc_phy_rfctrl_override_nphy_rev7(
21377 pi, (0x1 << 5),
21378 value, core_mask, off,
21379 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21380 wlc_phy_rfctrl_override_nphy_rev7(
21381 pi, (0x1 << 4), value,
21382 core_mask, off,
21383 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21384 wlc_phy_rfctrl_override_nphy_rev7(
21385 pi, (0x1 << 3), value,
21386 core_mask, off,
21387 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21388 break;
21389 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21390 wlc_phy_rfctrl_override_nphy_rev7(
21391 pi, (0x1 << 2),
21392 value, core_mask, off,
21393 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21394 wlc_phy_rfctrl_override_nphy_rev7(
21395 pi, (0x1 << 1), value,
21396 core_mask, off,
21397 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21398 wlc_phy_rfctrl_override_nphy_rev7(
21399 pi, (0x1 << 0), value,
21400 core_mask, off,
21401 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21402 wlc_phy_rfctrl_override_nphy_rev7(
21403 pi, (0x1 << 1), value,
21404 core_mask, off,
21405 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21406 wlc_phy_rfctrl_override_nphy_rev7(
21407 pi, (0x1 << 11), 0,
21408 core_mask, off,
21409 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21410 break;
21411 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21412 wlc_phy_rfctrl_override_nphy_rev7(
21413 pi, (0x1 << 2),
21414 value, core_mask, off,
21415 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21416 wlc_phy_rfctrl_override_nphy_rev7(
21417 pi, (0x1 << 1), value,
21418 core_mask, off,
21419 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21420 wlc_phy_rfctrl_override_nphy_rev7(
21421 pi, (0x1 << 0), value,
21422 core_mask, off,
21423 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21424 wlc_phy_rfctrl_override_nphy_rev7(
21425 pi, (0x1 << 2), value,
21426 core_mask, off,
21427 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21428 wlc_phy_rfctrl_override_nphy_rev7(
21429 pi, (0x1 << 11), 1,
21430 core_mask, off,
21431 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21432 break;
21433 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21434 rfmxgain = value & 0x000ff;
21435 lpfgain = value & 0x0ff00;
21436 lpfgain = lpfgain >> 8;
21437
21438 wlc_phy_rfctrl_override_nphy_rev7(
21439 pi, (0x1 << 11),
21440 rfmxgain, core_mask,
21441 off,
21442 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21443 wlc_phy_rfctrl_override_nphy_rev7(
21444 pi, (0x3 << 13),
21445 lpfgain, core_mask,
21446 off,
21447 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21448 break;
21449 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21450 tgain = value & 0x7fff;
21451 lpfgain = value & 0x8000;
21452 lpfgain = lpfgain >> 14;
21453
21454 wlc_phy_rfctrl_override_nphy_rev7(
21455 pi, (0x1 << 12),
21456 tgain, core_mask, off,
21457 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21458 wlc_phy_rfctrl_override_nphy_rev7(
21459 pi, (0x1 << 13),
21460 lpfgain, core_mask,
21461 off,
21462 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21463 break;
21464 }
21465 }
21466 }
21467
21468 static void
wlc_phy_scale_offset_rssi_nphy(struct brcms_phy * pi,u16 scale,s8 offset,u8 coresel,u8 rail,u8 rssi_type)21469 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21470 u8 coresel, u8 rail, u8 rssi_type)
21471 {
21472 u16 valuetostuff;
21473
21474 offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21475 NPHY_RSSICAL_MAXREAD : offset;
21476 offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21477 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21478
21479 valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21480
21481 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21482 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21483 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21484 write_phy_reg(pi, 0x1a6, valuetostuff);
21485
21486 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21487 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21488 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21489 write_phy_reg(pi, 0x1ac, valuetostuff);
21490
21491 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21492 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21493 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21494 write_phy_reg(pi, 0x1b2, valuetostuff);
21495
21496 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21497 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21498 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21499 write_phy_reg(pi, 0x1b8, valuetostuff);
21500
21501 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21502 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21503 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21504 write_phy_reg(pi, 0x1a4, valuetostuff);
21505
21506 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21507 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21508 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21509 write_phy_reg(pi, 0x1aa, valuetostuff);
21510
21511 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21512 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21513 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21514 write_phy_reg(pi, 0x1b0, valuetostuff);
21515
21516 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21517 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21518 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21519 write_phy_reg(pi, 0x1b6, valuetostuff);
21520
21521 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21522 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21523 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21524 write_phy_reg(pi, 0x1a5, valuetostuff);
21525 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21526 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21527 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21528 write_phy_reg(pi, 0x1ab, valuetostuff);
21529
21530 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21531 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21532 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21533 write_phy_reg(pi, 0x1b1, valuetostuff);
21534
21535 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21536 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21537 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21538 write_phy_reg(pi, 0x1b7, valuetostuff);
21539
21540 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21541 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21542 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21543 write_phy_reg(pi, 0x1a7, valuetostuff);
21544 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21545 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21546 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21547 write_phy_reg(pi, 0x1ad, valuetostuff);
21548 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21549 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21550 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21551 write_phy_reg(pi, 0x1b3, valuetostuff);
21552 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21553 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21554 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21555 write_phy_reg(pi, 0x1b9, valuetostuff);
21556
21557 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21558 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21559 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21560 write_phy_reg(pi, 0x1a8, valuetostuff);
21561
21562 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21563 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21564 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21565 write_phy_reg(pi, 0x1ae, valuetostuff);
21566
21567 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21568 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21569 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21570 write_phy_reg(pi, 0x1b4, valuetostuff);
21571
21572 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21573 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21574 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21575 write_phy_reg(pi, 0x1ba, valuetostuff);
21576
21577 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21578 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21579 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21580 write_phy_reg(pi, 0x1a9, valuetostuff);
21581 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21582 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21583 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21584 write_phy_reg(pi, 0x1b5, valuetostuff);
21585
21586 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21587 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21588 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21589 write_phy_reg(pi, 0x1af, valuetostuff);
21590
21591 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21592 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21593 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21594 write_phy_reg(pi, 0x1bb, valuetostuff);
21595 }
21596
brcms_phy_wr_tx_mux(struct brcms_phy * pi,u8 core)21597 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21598 {
21599 if (PHY_IPA(pi)) {
21600 if (NREV_GE(pi->pubpi.phy_rev, 7))
21601 write_radio_reg(pi,
21602 ((core == PHY_CORE_0) ?
21603 RADIO_2057_TX0_TX_SSI_MUX :
21604 RADIO_2057_TX1_TX_SSI_MUX),
21605 (CHSPEC_IS5G(pi->radio_chanspec) ?
21606 0xc : 0xe));
21607 else
21608 write_radio_reg(pi,
21609 RADIO_2056_TX_TX_SSI_MUX |
21610 ((core == PHY_CORE_0) ?
21611 RADIO_2056_TX0 : RADIO_2056_TX1),
21612 (CHSPEC_IS5G(pi->radio_chanspec) ?
21613 0xc : 0xe));
21614 } else {
21615 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21616 write_radio_reg(pi,
21617 ((core == PHY_CORE_0) ?
21618 RADIO_2057_TX0_TX_SSI_MUX :
21619 RADIO_2057_TX1_TX_SSI_MUX),
21620 0x11);
21621
21622 if (pi->pubpi.radioid == BCM2057_ID)
21623 write_radio_reg(pi,
21624 RADIO_2057_IQTEST_SEL_PU, 0x1);
21625
21626 } else {
21627 write_radio_reg(pi,
21628 RADIO_2056_TX_TX_SSI_MUX |
21629 ((core == PHY_CORE_0) ?
21630 RADIO_2056_TX0 : RADIO_2056_TX1),
21631 0x11);
21632 }
21633 }
21634 }
21635
wlc_phy_rssisel_nphy(struct brcms_phy * pi,u8 core_code,u8 rssi_type)21636 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21637 {
21638 u16 mask, val;
21639 u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21640 startseq;
21641 u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21642 rfctrlovr_trigger_val;
21643 u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21644 u16 rfctrlcmd_val, rfctrlovr_val;
21645 u8 core;
21646
21647 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21648 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21649 mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21650 mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21651
21652 mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21653 mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21654
21655 mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21656 mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21657
21658 mask = (0x1 << 2) |
21659 (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21660 mod_phy_reg(pi, 0xf9, mask, 0);
21661 mod_phy_reg(pi, 0xfb, mask, 0);
21662
21663 } else {
21664 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21665 if (core_code == RADIO_MIMO_CORESEL_CORE1
21666 && core == PHY_CORE_1)
21667 continue;
21668 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21669 && core == PHY_CORE_0)
21670 continue;
21671
21672 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21673 0x8f : 0xa5, (0x1 << 9), 1 << 9);
21674
21675 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21676 rssi_type == NPHY_RSSI_SEL_W2 ||
21677 rssi_type == NPHY_RSSI_SEL_NB) {
21678 mod_phy_reg(pi,
21679 (core ==
21680 PHY_CORE_0) ? 0xa6 : 0xa7,
21681 (0x3 << 8), 0);
21682
21683 mask = (0x1 << 2) |
21684 (0x1 << 3) |
21685 (0x1 << 4) | (0x1 << 5);
21686 mod_phy_reg(pi,
21687 (core ==
21688 PHY_CORE_0) ? 0xf9 : 0xfb,
21689 mask, 0);
21690
21691 if (rssi_type == NPHY_RSSI_SEL_W1) {
21692 if (CHSPEC_IS5G(
21693 pi->radio_chanspec)) {
21694 mask = (0x1 << 2);
21695 val = 1 << 2;
21696 } else {
21697 mask = (0x1 << 3);
21698 val = 1 << 3;
21699 }
21700 } else if (rssi_type ==
21701 NPHY_RSSI_SEL_W2) {
21702 mask = (0x1 << 4);
21703 val = 1 << 4;
21704 } else {
21705 mask = (0x1 << 5);
21706 val = 1 << 5;
21707 }
21708 mod_phy_reg(pi,
21709 (core ==
21710 PHY_CORE_0) ? 0xf9 : 0xfb,
21711 mask, val);
21712
21713 mask = (0x1 << 5);
21714 val = 1 << 5;
21715 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21716 0xe5 : 0xe6, mask, val);
21717 } else {
21718 if (rssi_type == NPHY_RSSI_SEL_TBD) {
21719 mask = (0x3 << 8);
21720 val = 1 << 8;
21721 mod_phy_reg(pi,
21722 (core ==
21723 PHY_CORE_0) ? 0xa6
21724 : 0xa7, mask, val);
21725 mask = (0x3 << 10);
21726 val = 1 << 10;
21727 mod_phy_reg(pi,
21728 (core ==
21729 PHY_CORE_0) ? 0xa6
21730 : 0xa7, mask, val);
21731 } else if (rssi_type ==
21732 NPHY_RSSI_SEL_IQ) {
21733 mask = (0x3 << 8);
21734 val = 2 << 8;
21735 mod_phy_reg(pi,
21736 (core ==
21737 PHY_CORE_0) ? 0xa6
21738 : 0xa7, mask, val);
21739 mask = (0x3 << 10);
21740 val = 2 << 10;
21741 mod_phy_reg(pi,
21742 (core ==
21743 PHY_CORE_0) ? 0xa6
21744 : 0xa7, mask, val);
21745 } else {
21746 mask = (0x3 << 8);
21747 val = 3 << 8;
21748 mod_phy_reg(pi,
21749 (core ==
21750 PHY_CORE_0) ? 0xa6
21751 : 0xa7, mask, val);
21752 mask = (0x3 << 10);
21753 val = 3 << 10;
21754 mod_phy_reg(pi,
21755 (core ==
21756 PHY_CORE_0) ? 0xa6
21757 : 0xa7, mask, val);
21758 brcms_phy_wr_tx_mux(pi, core);
21759 afectrlovr_rssi_val = 1 << 9;
21760 mod_phy_reg(pi,
21761 (core ==
21762 PHY_CORE_0) ? 0x8f
21763 : 0xa5, (0x1 << 9),
21764 afectrlovr_rssi_val);
21765 }
21766 }
21767 }
21768 }
21769 } else {
21770
21771 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21772 (rssi_type == NPHY_RSSI_SEL_W2) ||
21773 (rssi_type == NPHY_RSSI_SEL_NB))
21774 val = 0x0;
21775 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21776 val = 0x1;
21777 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21778 val = 0x2;
21779 else
21780 val = 0x3;
21781
21782 mask = ((0x3 << 12) | (0x3 << 14));
21783 val = (val << 12) | (val << 14);
21784 mod_phy_reg(pi, 0xa6, mask, val);
21785 mod_phy_reg(pi, 0xa7, mask, val);
21786
21787 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21788 (rssi_type == NPHY_RSSI_SEL_W2) ||
21789 (rssi_type == NPHY_RSSI_SEL_NB)) {
21790 if (rssi_type == NPHY_RSSI_SEL_W1)
21791 val = 0x1;
21792 if (rssi_type == NPHY_RSSI_SEL_W2)
21793 val = 0x2;
21794 if (rssi_type == NPHY_RSSI_SEL_NB)
21795 val = 0x3;
21796
21797 mask = (0x3 << 4);
21798 val = (val << 4);
21799 mod_phy_reg(pi, 0x7a, mask, val);
21800 mod_phy_reg(pi, 0x7d, mask, val);
21801 }
21802
21803 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21804 afectrlovr_rssi_val = 0;
21805 rfctrlcmd_rxen_val = 0;
21806 rfctrlcmd_coresel_val = 0;
21807 rfctrlovr_rssi_val = 0;
21808 rfctrlovr_rxen_val = 0;
21809 rfctrlovr_coresel_val = 0;
21810 rfctrlovr_trigger_val = 0;
21811 startseq = 0;
21812 } else {
21813 afectrlovr_rssi_val = 1;
21814 rfctrlcmd_rxen_val = 1;
21815 rfctrlcmd_coresel_val = core_code;
21816 rfctrlovr_rssi_val = 1;
21817 rfctrlovr_rxen_val = 1;
21818 rfctrlovr_coresel_val = 1;
21819 rfctrlovr_trigger_val = 1;
21820 startseq = 1;
21821 }
21822
21823 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21824 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21825 12) | (afectrlovr_rssi_val << 13);
21826 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21827 afectrlovr_rssi_val);
21828
21829 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21830 (rssi_type == NPHY_RSSI_SEL_W2) ||
21831 (rssi_type == NPHY_RSSI_SEL_NB)) {
21832 rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21833 rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21834 (rfctrlcmd_coresel_val << 3);
21835
21836 rfctrlovr_mask = ((0x1 << 5) |
21837 (0x1 << 12) |
21838 (0x1 << 1) | (0x1 << 0));
21839 rfctrlovr_val = (rfctrlovr_rssi_val <<
21840 5) |
21841 (rfctrlovr_rxen_val << 12) |
21842 (rfctrlovr_coresel_val << 1) |
21843 (rfctrlovr_trigger_val << 0);
21844
21845 mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21846 mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21847
21848 mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21849 udelay(20);
21850
21851 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21852 }
21853 }
21854 }
21855
21856 int
wlc_phy_poll_rssi_nphy(struct brcms_phy * pi,u8 rssi_type,s32 * rssi_buf,u8 nsamps)21857 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21858 u8 nsamps)
21859 {
21860 s16 rssi0, rssi1;
21861 u16 afectrlCore1_save = 0;
21862 u16 afectrlCore2_save = 0;
21863 u16 afectrlOverride1_save = 0;
21864 u16 afectrlOverride2_save = 0;
21865 u16 rfctrlOverrideAux0_save = 0;
21866 u16 rfctrlOverrideAux1_save = 0;
21867 u16 rfctrlMiscReg1_save = 0;
21868 u16 rfctrlMiscReg2_save = 0;
21869 u16 rfctrlcmd_save = 0;
21870 u16 rfctrloverride_save = 0;
21871 u16 rfctrlrssiothers1_save = 0;
21872 u16 rfctrlrssiothers2_save = 0;
21873 s8 tmp_buf[4];
21874 u8 ctr = 0, samp = 0;
21875 s32 rssi_out_val;
21876 u16 gpiosel_orig;
21877
21878 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21879 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21880 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21881 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21882 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21883 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21884 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21885 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21886 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21887 } else {
21888 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21889 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21890 rfctrloverride_save = read_phy_reg(pi, 0xec);
21891 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21892 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21893 }
21894
21895 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21896
21897 gpiosel_orig = read_phy_reg(pi, 0xca);
21898 if (NREV_LT(pi->pubpi.phy_rev, 2))
21899 write_phy_reg(pi, 0xca, 5);
21900
21901 for (ctr = 0; ctr < 4; ctr++)
21902 rssi_buf[ctr] = 0;
21903
21904 for (samp = 0; samp < nsamps; samp++) {
21905 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21906 rssi0 = read_phy_reg(pi, 0x1c9);
21907 rssi1 = read_phy_reg(pi, 0x1ca);
21908 } else {
21909 rssi0 = read_phy_reg(pi, 0x219);
21910 rssi1 = read_phy_reg(pi, 0x21a);
21911 }
21912
21913 ctr = 0;
21914 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21915 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21916 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21917 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21918
21919 for (ctr = 0; ctr < 4; ctr++)
21920 rssi_buf[ctr] += tmp_buf[ctr];
21921
21922 }
21923
21924 rssi_out_val = rssi_buf[3] & 0xff;
21925 rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21926 rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21927 rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21928
21929 if (NREV_LT(pi->pubpi.phy_rev, 2))
21930 write_phy_reg(pi, 0xca, gpiosel_orig);
21931
21932 write_phy_reg(pi, 0xa6, afectrlCore1_save);
21933 write_phy_reg(pi, 0xa7, afectrlCore2_save);
21934 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21935 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21936 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21937 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21938 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21939 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21940 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21941 } else {
21942 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21943 write_phy_reg(pi, 0x78, rfctrlcmd_save);
21944 write_phy_reg(pi, 0xec, rfctrloverride_save);
21945 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21946 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21947 }
21948
21949 return rssi_out_val;
21950 }
21951
wlc_phy_tempsense_nphy(struct brcms_phy * pi)21952 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21953 {
21954 u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21955 u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21956 u16 pwrdet_rxtx_core1_save;
21957 u16 pwrdet_rxtx_core2_save;
21958 u16 afectrlCore1_save;
21959 u16 afectrlCore2_save;
21960 u16 afectrlOverride_save;
21961 u16 afectrlOverride2_save;
21962 u16 pd_pll_ts_save;
21963 u16 gpioSel_save;
21964 s32 radio_temp[4];
21965 s32 radio_temp2[4];
21966 u16 syn_tempprocsense_save;
21967 s16 offset = 0;
21968
21969 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21970 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21971 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21972 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21973 s32 auxADC_Vl;
21974 u16 RfctrlOverride5_save, RfctrlOverride6_save;
21975 u16 RfctrlMiscReg5_save;
21976 u16 RSSIMultCoef0QPowerDet_save;
21977 u16 tempsense_Rcal;
21978
21979 syn_tempprocsense_save =
21980 read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
21981
21982 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21983 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21984 afectrlOverride_save = read_phy_reg(pi, 0x8f);
21985 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21986 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
21987 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
21988 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
21989 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
21990 read_phy_reg(pi, 0x345); /* RfctrlMiscReg6_save */
21991
21992 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
21993 &auxADC_Vmid_save);
21994 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
21995 &auxADC_Av_save);
21996 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
21997 &auxADC_rssi_ctrlL_save);
21998 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
21999 &auxADC_rssi_ctrlH_save);
22000
22001 write_phy_reg(pi, 0x1ae, 0x0);
22002
22003 auxADC_rssi_ctrlL = 0x0;
22004 auxADC_rssi_ctrlH = 0x20;
22005 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22006 &auxADC_rssi_ctrlL);
22007 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22008 &auxADC_rssi_ctrlH);
22009
22010 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22011
22012 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22013 tempsense_Rcal | 0x01);
22014
22015 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22016 1, 0, 0,
22017 NPHY_REV7_RFCTRLOVERRIDE_ID2);
22018 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22019 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22020 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22021 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22022
22023 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22024 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22025 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22026 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22027 udelay(5);
22028 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22029 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22030 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22031 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22032 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22033 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22034 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22035 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22036 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22037 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22038
22039 auxADC_Vmid = 0xA3;
22040 auxADC_Av = 0x0;
22041 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22042 &auxADC_Vmid);
22043 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22044 &auxADC_Av);
22045
22046 udelay(3);
22047
22048 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22049 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22050 tempsense_Rcal | 0x03);
22051
22052 udelay(5);
22053 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22054
22055 auxADC_Av = 0x7;
22056 if (radio_temp[1] + radio_temp2[1] < -30) {
22057 auxADC_Vmid = 0x45;
22058 auxADC_Vl = 263;
22059 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22060 auxADC_Vmid = 0x200;
22061 auxADC_Vl = 467;
22062 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22063 auxADC_Vmid = 0x266;
22064 auxADC_Vl = 634;
22065 } else {
22066 auxADC_Vmid = 0x2D5;
22067 auxADC_Vl = 816;
22068 }
22069
22070 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22071 &auxADC_Vmid);
22072 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22073 &auxADC_Av);
22074
22075 udelay(3);
22076
22077 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22078 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22079 tempsense_Rcal | 0x01);
22080
22081 udelay(5);
22082 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22083
22084 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22085 syn_tempprocsense_save);
22086
22087 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22088 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22089 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22090 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22091 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22092 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22093 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22094 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22095 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22096
22097 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22098 &auxADC_Vmid_save);
22099 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22100 &auxADC_Av_save);
22101 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22102 &auxADC_rssi_ctrlL_save);
22103 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22104 &auxADC_rssi_ctrlH_save);
22105
22106 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22107 radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22108 + 88 * (auxADC_Vl) - 27111 +
22109 128) / 256;
22110 } else {
22111 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22112 + 82 * (auxADC_Vl) - 28861 +
22113 128) / 256;
22114 }
22115
22116 offset = (s16) pi->phy_tempsense_offset;
22117
22118 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22119 syn_tempprocsense_save =
22120 read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22121
22122 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22123 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22124 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22125 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22126 gpioSel_save = read_phy_reg(pi, 0xca);
22127
22128 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22129
22130 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22131 if (NREV_LT(pi->pubpi.phy_rev, 7))
22132 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22133
22134 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22135 if (NREV_GE(pi->pubpi.phy_rev, 7))
22136 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22137 else
22138 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22139
22140 radio_temp[0] =
22141 (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22142
22143 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22144 syn_tempprocsense_save);
22145
22146 write_phy_reg(pi, 0xca, gpioSel_save);
22147 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22148 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22149 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22150 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22151
22152 offset = (s16) pi->phy_tempsense_offset;
22153 } else {
22154
22155 pwrdet_rxtx_core1_save =
22156 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22157 pwrdet_rxtx_core2_save =
22158 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22159 core1_txrf_iqcal1_save =
22160 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22161 core1_txrf_iqcal2_save =
22162 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22163 core2_txrf_iqcal1_save =
22164 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22165 core2_txrf_iqcal2_save =
22166 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22167 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22168
22169 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22170 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22171 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22172 gpioSel_save = read_phy_reg(pi, 0xca);
22173
22174 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22175 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22176 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22177 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22178 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22179 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22180 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22181
22182 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22183 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22184
22185 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22186 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22187
22188 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22189 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22190
22191 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22192 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22193 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22194 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22195
22196 radio_temp[0] =
22197 (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22198 radio_temp[3]);
22199
22200 radio_temp[0] =
22201 (radio_temp[0] +
22202 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22203
22204 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22205
22206 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22207 pwrdet_rxtx_core1_save);
22208 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22209 pwrdet_rxtx_core2_save);
22210 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22211 core1_txrf_iqcal1_save);
22212 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22213 core2_txrf_iqcal1_save);
22214 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22215 core1_txrf_iqcal2_save);
22216 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22217 core2_txrf_iqcal2_save);
22218 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22219
22220 write_phy_reg(pi, 0xca, gpioSel_save);
22221 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22222 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22223 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22224 }
22225
22226 return (s16) radio_temp[0] + offset;
22227 }
22228
22229 static void
wlc_phy_set_rssi_2055_vcm(struct brcms_phy * pi,u8 rssi_type,u8 * vcm_buf)22230 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22231 {
22232 u8 core;
22233
22234 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22235 if (rssi_type == NPHY_RSSI_SEL_NB) {
22236 if (core == PHY_CORE_0) {
22237 mod_radio_reg(pi,
22238 RADIO_2055_CORE1_B0_NBRSSI_VCM,
22239 RADIO_2055_NBRSSI_VCM_I_MASK,
22240 vcm_buf[2 *
22241 core] <<
22242 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22243 mod_radio_reg(pi,
22244 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22245 RADIO_2055_NBRSSI_VCM_Q_MASK,
22246 vcm_buf[2 * core +
22247 1] <<
22248 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22249 } else {
22250 mod_radio_reg(pi,
22251 RADIO_2055_CORE2_B0_NBRSSI_VCM,
22252 RADIO_2055_NBRSSI_VCM_I_MASK,
22253 vcm_buf[2 *
22254 core] <<
22255 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22256 mod_radio_reg(pi,
22257 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22258 RADIO_2055_NBRSSI_VCM_Q_MASK,
22259 vcm_buf[2 * core +
22260 1] <<
22261 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22262 }
22263 } else {
22264 if (core == PHY_CORE_0)
22265 mod_radio_reg(pi,
22266 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22267 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22268 vcm_buf[2 *
22269 core] <<
22270 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22271 else
22272 mod_radio_reg(pi,
22273 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22274 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22275 vcm_buf[2 *
22276 core] <<
22277 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22278 }
22279 }
22280 }
22281
wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy * pi)22282 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22283 {
22284 u16 classif_state;
22285 u16 clip_state[2];
22286 u16 clip_off[] = { 0xffff, 0xffff };
22287 s32 target_code;
22288 u8 vcm, min_vcm;
22289 u8 vcm_final = 0;
22290 u8 result_idx;
22291 s32 poll_results[8][4] = {
22292 {0, 0, 0, 0},
22293 {0, 0, 0, 0},
22294 {0, 0, 0, 0},
22295 {0, 0, 0, 0},
22296 {0, 0, 0, 0},
22297 {0, 0, 0, 0},
22298 {0, 0, 0, 0},
22299 {0, 0, 0, 0}
22300 };
22301 s32 poll_result_core[4] = { 0, 0, 0, 0 };
22302 s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22303 s32 fine_digital_offset[4];
22304 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22305 s32 min_poll;
22306 u8 vcm_level_max;
22307 u8 core;
22308 u8 wb_cnt;
22309 u8 rssi_type;
22310 u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22311 u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22312 u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22313 u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22314 u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22315 u16 NPHY_RfctrlCmd_save;
22316 u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22317 u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22318 u8 rxcore_state;
22319 u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22320 u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22321 u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22322 u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22323
22324 NPHY_REV7_RfctrlOverride3_save =
22325 NPHY_REV7_RfctrlOverride4_save =
22326 NPHY_REV7_RfctrlOverride5_save =
22327 NPHY_REV7_RfctrlOverride6_save =
22328 NPHY_REV7_RfctrlMiscReg3_save =
22329 NPHY_REV7_RfctrlMiscReg4_save =
22330 NPHY_REV7_RfctrlMiscReg5_save =
22331 NPHY_REV7_RfctrlMiscReg6_save = 0;
22332
22333 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22334 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22335 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22336 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22337
22338 NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22339 NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22340 NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22341 NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22342 NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22343 NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22344 NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22345 NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22346 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22347 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22348 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22349 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22350 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22351 }
22352 NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22353 NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22354 NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22355 NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22356 NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22357 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22358 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22359 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22360 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22361 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22362 }
22363 NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22364 NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22365
22366 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22367 RADIO_MIMO_CORESEL_ALLRXTX);
22368 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22369 RADIO_MIMO_CORESEL_ALLRXTX);
22370
22371 if (NREV_GE(pi->pubpi.phy_rev, 7))
22372 wlc_phy_rfctrl_override_1tomany_nphy(
22373 pi,
22374 NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22375 0, 0, 0);
22376 else
22377 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22378
22379 if (NREV_GE(pi->pubpi.phy_rev, 7))
22380 wlc_phy_rfctrl_override_1tomany_nphy(
22381 pi,
22382 NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22383 1, 0, 0);
22384 else
22385 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22386
22387 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22388 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22389 1, 0, 0,
22390 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22391 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22392 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22393 } else {
22394 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22395 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22396 }
22397
22398 if (CHSPEC_IS5G(pi->radio_chanspec)) {
22399 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22400 wlc_phy_rfctrl_override_nphy_rev7(
22401 pi, (0x1 << 5),
22402 0, 0, 0,
22403 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22404 wlc_phy_rfctrl_override_nphy_rev7(
22405 pi, (0x1 << 4), 1, 0,
22406 0,
22407 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22408 } else {
22409 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22410 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22411 }
22412
22413 } else {
22414 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22415 wlc_phy_rfctrl_override_nphy_rev7(
22416 pi, (0x1 << 4),
22417 0, 0, 0,
22418 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22419 wlc_phy_rfctrl_override_nphy_rev7(
22420 pi, (0x1 << 5), 1, 0,
22421 0,
22422 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22423 } else {
22424 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22425 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22426 }
22427 }
22428
22429 rxcore_state = wlc_phy_rxcore_getstate_nphy(
22430 (struct brcms_phy_pub *) pi);
22431
22432 vcm_level_max = 8;
22433
22434 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22435
22436 if ((rxcore_state & (1 << core)) == 0)
22437 continue;
22438
22439 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22440 core ==
22441 PHY_CORE_0 ?
22442 RADIO_MIMO_CORESEL_CORE1 :
22443 RADIO_MIMO_CORESEL_CORE2,
22444 NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22445 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22446 core ==
22447 PHY_CORE_0 ?
22448 RADIO_MIMO_CORESEL_CORE1 :
22449 RADIO_MIMO_CORESEL_CORE2,
22450 NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22451
22452 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22453 if (NREV_GE(pi->pubpi.phy_rev, 7))
22454 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22455 RADIO_2057_NB_MASTER_CORE0 :
22456 RADIO_2057_NB_MASTER_CORE1,
22457 RADIO_2057_VCM_MASK, vcm);
22458 else
22459 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22460 ((core ==
22461 PHY_CORE_0) ? RADIO_2056_RX0 :
22462 RADIO_2056_RX1),
22463 RADIO_2056_VCM_MASK,
22464 vcm << RADIO_2056_RSSI_VCM_SHIFT);
22465
22466 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22467 &poll_results[vcm][0],
22468 NPHY_RSSICAL_NPOLL);
22469 }
22470
22471 for (result_idx = 0; result_idx < 4; result_idx++) {
22472 if ((core == result_idx / 2) &&
22473 (result_idx % 2 == 0)) {
22474
22475 min_d = NPHY_RSSICAL_MAXD;
22476 min_vcm = 0;
22477 min_poll =
22478 NPHY_RSSICAL_MAXREAD *
22479 NPHY_RSSICAL_NPOLL + 1;
22480 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22481 curr_d =
22482 poll_results[vcm][result_idx] *
22483 poll_results[vcm][result_idx] +
22484 poll_results[vcm][result_idx +
22485 1] *
22486 poll_results[vcm][result_idx +
22487 1];
22488 if (curr_d < min_d) {
22489 min_d = curr_d;
22490 min_vcm = vcm;
22491 }
22492 if (poll_results[vcm][result_idx] <
22493 min_poll)
22494 min_poll =
22495 poll_results[vcm]
22496 [result_idx];
22497 }
22498 vcm_final = min_vcm;
22499 poll_results_min[result_idx] = min_poll;
22500 }
22501 }
22502
22503 if (NREV_GE(pi->pubpi.phy_rev, 7))
22504 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22505 RADIO_2057_NB_MASTER_CORE0 :
22506 RADIO_2057_NB_MASTER_CORE1,
22507 RADIO_2057_VCM_MASK, vcm_final);
22508 else
22509 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22510 ((core ==
22511 PHY_CORE_0) ? RADIO_2056_RX0 :
22512 RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22513 vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22514
22515 for (result_idx = 0; result_idx < 4; result_idx++) {
22516 if (core == result_idx / 2) {
22517 fine_digital_offset[result_idx] =
22518 (NPHY_RSSICAL_NB_TARGET *
22519 NPHY_RSSICAL_NPOLL) -
22520 poll_results[vcm_final][result_idx];
22521 if (fine_digital_offset[result_idx] < 0) {
22522 fine_digital_offset[result_idx] =
22523 abs(fine_digital_offset
22524 [result_idx]);
22525 fine_digital_offset[result_idx] +=
22526 (NPHY_RSSICAL_NPOLL / 2);
22527 fine_digital_offset[result_idx] /=
22528 NPHY_RSSICAL_NPOLL;
22529 fine_digital_offset[result_idx] =
22530 -fine_digital_offset[
22531 result_idx];
22532 } else {
22533 fine_digital_offset[result_idx] +=
22534 (NPHY_RSSICAL_NPOLL / 2);
22535 fine_digital_offset[result_idx] /=
22536 NPHY_RSSICAL_NPOLL;
22537 }
22538
22539 if (poll_results_min[result_idx] ==
22540 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22541 fine_digital_offset[result_idx] =
22542 (NPHY_RSSICAL_NB_TARGET -
22543 NPHY_RSSICAL_MAXREAD - 1);
22544
22545 wlc_phy_scale_offset_rssi_nphy(
22546 pi, 0x0,
22547 (s8)
22548 fine_digital_offset
22549 [result_idx],
22550 (result_idx / 2 == 0) ?
22551 RADIO_MIMO_CORESEL_CORE1 :
22552 RADIO_MIMO_CORESEL_CORE2,
22553 (result_idx % 2 == 0) ?
22554 NPHY_RAIL_I : NPHY_RAIL_Q,
22555 NPHY_RSSI_SEL_NB);
22556 }
22557 }
22558
22559 }
22560
22561 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22562
22563 if ((rxcore_state & (1 << core)) == 0)
22564 continue;
22565
22566 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22567 if (wb_cnt == 0) {
22568 rssi_type = NPHY_RSSI_SEL_W1;
22569 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22570 } else {
22571 rssi_type = NPHY_RSSI_SEL_W2;
22572 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22573 }
22574
22575 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22576 core ==
22577 PHY_CORE_0 ?
22578 RADIO_MIMO_CORESEL_CORE1
22579 :
22580 RADIO_MIMO_CORESEL_CORE2,
22581 NPHY_RAIL_I, rssi_type);
22582 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22583 core ==
22584 PHY_CORE_0 ?
22585 RADIO_MIMO_CORESEL_CORE1
22586 :
22587 RADIO_MIMO_CORESEL_CORE2,
22588 NPHY_RAIL_Q, rssi_type);
22589
22590 wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22591 NPHY_RSSICAL_NPOLL);
22592
22593 for (result_idx = 0; result_idx < 4; result_idx++) {
22594 if (core == result_idx / 2) {
22595 fine_digital_offset[result_idx] =
22596 (target_code *
22597 NPHY_RSSICAL_NPOLL) -
22598 poll_result_core[result_idx];
22599 if (fine_digital_offset[result_idx] <
22600 0) {
22601 fine_digital_offset[result_idx]
22602 = abs(
22603 fine_digital_offset
22604 [result_idx]);
22605 fine_digital_offset[result_idx]
22606 += (NPHY_RSSICAL_NPOLL
22607 / 2);
22608 fine_digital_offset[result_idx]
22609 /= NPHY_RSSICAL_NPOLL;
22610 fine_digital_offset[result_idx]
22611 = -fine_digital_offset
22612 [result_idx];
22613 } else {
22614 fine_digital_offset[result_idx]
22615 += (NPHY_RSSICAL_NPOLL
22616 / 2);
22617 fine_digital_offset[result_idx]
22618 /= NPHY_RSSICAL_NPOLL;
22619 }
22620
22621 wlc_phy_scale_offset_rssi_nphy(
22622 pi, 0x0,
22623 (s8)
22624 fine_digital_offset
22625 [core *
22626 2],
22627 (core == PHY_CORE_0) ?
22628 RADIO_MIMO_CORESEL_CORE1 :
22629 RADIO_MIMO_CORESEL_CORE2,
22630 (result_idx % 2 == 0) ?
22631 NPHY_RAIL_I :
22632 NPHY_RAIL_Q,
22633 rssi_type);
22634 }
22635 }
22636
22637 }
22638 }
22639
22640 write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22641 write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22642
22643 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22644
22645 mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22646 mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22647 mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22648
22649 mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22650 mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22651 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22652
22653 write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22654 write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22655 write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22656 write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22657 write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22658 write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22659 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22660 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22661 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22662 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22663 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22664 }
22665 write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22666 write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22667 write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22668 write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22669 write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22670 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22671 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22672 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22673 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22674 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22675 }
22676 write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22677 write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22678
22679 if (CHSPEC_IS2G(pi->radio_chanspec)) {
22680 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22681 pi->rssical_cache.rssical_radio_regs_2G[0] =
22682 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22683 pi->rssical_cache.rssical_radio_regs_2G[1] =
22684 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22685 } else {
22686 pi->rssical_cache.rssical_radio_regs_2G[0] =
22687 read_radio_reg(pi,
22688 RADIO_2056_RX_RSSI_MISC |
22689 RADIO_2056_RX0);
22690 pi->rssical_cache.rssical_radio_regs_2G[1] =
22691 read_radio_reg(pi,
22692 RADIO_2056_RX_RSSI_MISC |
22693 RADIO_2056_RX1);
22694 }
22695
22696 pi->rssical_cache.rssical_phyregs_2G[0] =
22697 read_phy_reg(pi, 0x1a6);
22698 pi->rssical_cache.rssical_phyregs_2G[1] =
22699 read_phy_reg(pi, 0x1ac);
22700 pi->rssical_cache.rssical_phyregs_2G[2] =
22701 read_phy_reg(pi, 0x1b2);
22702 pi->rssical_cache.rssical_phyregs_2G[3] =
22703 read_phy_reg(pi, 0x1b8);
22704 pi->rssical_cache.rssical_phyregs_2G[4] =
22705 read_phy_reg(pi, 0x1a4);
22706 pi->rssical_cache.rssical_phyregs_2G[5] =
22707 read_phy_reg(pi, 0x1aa);
22708 pi->rssical_cache.rssical_phyregs_2G[6] =
22709 read_phy_reg(pi, 0x1b0);
22710 pi->rssical_cache.rssical_phyregs_2G[7] =
22711 read_phy_reg(pi, 0x1b6);
22712 pi->rssical_cache.rssical_phyregs_2G[8] =
22713 read_phy_reg(pi, 0x1a5);
22714 pi->rssical_cache.rssical_phyregs_2G[9] =
22715 read_phy_reg(pi, 0x1ab);
22716 pi->rssical_cache.rssical_phyregs_2G[10] =
22717 read_phy_reg(pi, 0x1b1);
22718 pi->rssical_cache.rssical_phyregs_2G[11] =
22719 read_phy_reg(pi, 0x1b7);
22720
22721 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22722 } else {
22723 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22724 pi->rssical_cache.rssical_radio_regs_5G[0] =
22725 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22726 pi->rssical_cache.rssical_radio_regs_5G[1] =
22727 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22728 } else {
22729 pi->rssical_cache.rssical_radio_regs_5G[0] =
22730 read_radio_reg(pi,
22731 RADIO_2056_RX_RSSI_MISC |
22732 RADIO_2056_RX0);
22733 pi->rssical_cache.rssical_radio_regs_5G[1] =
22734 read_radio_reg(pi,
22735 RADIO_2056_RX_RSSI_MISC |
22736 RADIO_2056_RX1);
22737 }
22738
22739 pi->rssical_cache.rssical_phyregs_5G[0] =
22740 read_phy_reg(pi, 0x1a6);
22741 pi->rssical_cache.rssical_phyregs_5G[1] =
22742 read_phy_reg(pi, 0x1ac);
22743 pi->rssical_cache.rssical_phyregs_5G[2] =
22744 read_phy_reg(pi, 0x1b2);
22745 pi->rssical_cache.rssical_phyregs_5G[3] =
22746 read_phy_reg(pi, 0x1b8);
22747 pi->rssical_cache.rssical_phyregs_5G[4] =
22748 read_phy_reg(pi, 0x1a4);
22749 pi->rssical_cache.rssical_phyregs_5G[5] =
22750 read_phy_reg(pi, 0x1aa);
22751 pi->rssical_cache.rssical_phyregs_5G[6] =
22752 read_phy_reg(pi, 0x1b0);
22753 pi->rssical_cache.rssical_phyregs_5G[7] =
22754 read_phy_reg(pi, 0x1b6);
22755 pi->rssical_cache.rssical_phyregs_5G[8] =
22756 read_phy_reg(pi, 0x1a5);
22757 pi->rssical_cache.rssical_phyregs_5G[9] =
22758 read_phy_reg(pi, 0x1ab);
22759 pi->rssical_cache.rssical_phyregs_5G[10] =
22760 read_phy_reg(pi, 0x1b1);
22761 pi->rssical_cache.rssical_phyregs_5G[11] =
22762 read_phy_reg(pi, 0x1b7);
22763
22764 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22765 }
22766
22767 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22768 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22769 }
22770
wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy * pi,u8 rssi_type)22771 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22772 {
22773 s32 target_code;
22774 u16 classif_state;
22775 u16 clip_state[2];
22776 u16 rssi_ctrl_state[2], pd_state[2];
22777 u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22778 u16 rfctrlintc_override_val;
22779 u16 clip_off[] = { 0xffff, 0xffff };
22780 u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22781 u8 vcm, min_vcm, vcm_tmp[4];
22782 u8 vcm_final[4] = { 0, 0, 0, 0 };
22783 u8 result_idx, ctr;
22784 s32 poll_results[4][4] = {
22785 {0, 0, 0, 0},
22786 {0, 0, 0, 0},
22787 {0, 0, 0, 0},
22788 {0, 0, 0, 0}
22789 };
22790 s32 poll_miniq[4][2] = {
22791 {0, 0},
22792 {0, 0},
22793 {0, 0},
22794 {0, 0}
22795 };
22796 s32 min_d, curr_d;
22797 s32 fine_digital_offset[4];
22798 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22799 s32 min_poll;
22800
22801 switch (rssi_type) {
22802 case NPHY_RSSI_SEL_NB:
22803 target_code = NPHY_RSSICAL_NB_TARGET;
22804 break;
22805 case NPHY_RSSI_SEL_W1:
22806 target_code = NPHY_RSSICAL_W1_TARGET;
22807 break;
22808 case NPHY_RSSI_SEL_W2:
22809 target_code = NPHY_RSSICAL_W2_TARGET;
22810 break;
22811 default:
22812 return;
22813 }
22814
22815 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22816 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22817 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22818 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22819
22820 rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22821 rfctrlintc_override_val =
22822 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22823
22824 rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22825 rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22826 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22827 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22828
22829 rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22830 rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22831 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22832 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22833
22834 pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22835 RADIO_2055_WBRSSI_G2_PD;
22836 pd_state[0] =
22837 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22838 pd_state[1] =
22839 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22840 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22841 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22842 rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22843 RADIO_2055_WBRSSI_G2_SEL;
22844 rssi_ctrl_state[0] =
22845 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22846 rssi_ctrl_state[1] =
22847 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22848 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22849
22850 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22851 NPHY_RAIL_I, rssi_type);
22852 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22853 NPHY_RAIL_Q, rssi_type);
22854
22855 for (vcm = 0; vcm < 4; vcm++) {
22856
22857 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22858 if (rssi_type != NPHY_RSSI_SEL_W2)
22859 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22860
22861 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22862 NPHY_RSSICAL_NPOLL);
22863
22864 if ((rssi_type == NPHY_RSSI_SEL_W1)
22865 || (rssi_type == NPHY_RSSI_SEL_W2)) {
22866 for (ctr = 0; ctr < 2; ctr++)
22867 poll_miniq[vcm][ctr] =
22868 min(poll_results[vcm][ctr * 2 + 0],
22869 poll_results[vcm][ctr * 2 + 1]);
22870 }
22871 }
22872
22873 for (result_idx = 0; result_idx < 4; result_idx++) {
22874 min_d = NPHY_RSSICAL_MAXD;
22875 min_vcm = 0;
22876 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22877 for (vcm = 0; vcm < 4; vcm++) {
22878 curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22879 poll_results[vcm][result_idx] :
22880 poll_miniq[vcm][result_idx / 2]) -
22881 (target_code * NPHY_RSSICAL_NPOLL));
22882 if (curr_d < min_d) {
22883 min_d = curr_d;
22884 min_vcm = vcm;
22885 }
22886 if (poll_results[vcm][result_idx] < min_poll)
22887 min_poll = poll_results[vcm][result_idx];
22888 }
22889 vcm_final[result_idx] = min_vcm;
22890 poll_results_min[result_idx] = min_poll;
22891 }
22892
22893 if (rssi_type != NPHY_RSSI_SEL_W2)
22894 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22895
22896 for (result_idx = 0; result_idx < 4; result_idx++) {
22897 fine_digital_offset[result_idx] =
22898 (target_code * NPHY_RSSICAL_NPOLL) -
22899 poll_results[vcm_final[result_idx]][result_idx];
22900 if (fine_digital_offset[result_idx] < 0) {
22901 fine_digital_offset[result_idx] =
22902 abs(fine_digital_offset[result_idx]);
22903 fine_digital_offset[result_idx] +=
22904 (NPHY_RSSICAL_NPOLL / 2);
22905 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22906 fine_digital_offset[result_idx] =
22907 -fine_digital_offset[result_idx];
22908 } else {
22909 fine_digital_offset[result_idx] +=
22910 (NPHY_RSSICAL_NPOLL / 2);
22911 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22912 }
22913
22914 if (poll_results_min[result_idx] ==
22915 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22916 fine_digital_offset[result_idx] =
22917 (target_code - NPHY_RSSICAL_MAXREAD - 1);
22918
22919 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22920 (s8)
22921 fine_digital_offset[result_idx],
22922 (result_idx / 2 ==
22923 0) ? RADIO_MIMO_CORESEL_CORE1 :
22924 RADIO_MIMO_CORESEL_CORE2,
22925 (result_idx % 2 ==
22926 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22927 rssi_type);
22928 }
22929
22930 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22931 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22932 if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22933 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22934 NPHY_RSSI_SEL_NB);
22935 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22936 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22937 NPHY_RSSI_SEL_W1);
22938 else /* RADIO_2055_WBRSSI_G2_SEL */
22939 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22940 NPHY_RSSI_SEL_W2);
22941 if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22942 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22943 NPHY_RSSI_SEL_NB);
22944 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22945 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22946 NPHY_RSSI_SEL_W1);
22947 else /* RADIO_2055_WBRSSI_G1_SEL */
22948 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22949 NPHY_RSSI_SEL_W2);
22950 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22951
22952 write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22953 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22954 write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22955 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22956
22957 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22958 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22959
22960 wlc_phy_resetcca_nphy(pi);
22961 }
22962
wlc_phy_rssi_cal_nphy(struct brcms_phy * pi)22963 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22964 {
22965 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22966 wlc_phy_rssi_cal_nphy_rev3(pi);
22967 } else {
22968 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22969 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22970 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22971 }
22972 }
22973
22974 int
wlc_phy_rssi_compute_nphy(struct brcms_phy * pi,struct d11rxhdr * rxh)22975 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22976 {
22977 s16 rxpwr, rxpwr0, rxpwr1;
22978 s16 phyRx2_l;
22979
22980 rxpwr = 0;
22981 rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
22982 rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
22983
22984 if (rxpwr0 > 127)
22985 rxpwr0 -= 256;
22986 if (rxpwr1 > 127)
22987 rxpwr1 -= 256;
22988
22989 phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
22990 if (phyRx2_l > 127)
22991 phyRx2_l -= 256;
22992
22993 if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
22994 rxpwr0 = rxpwr1;
22995 rxpwr1 = phyRx2_l;
22996 }
22997
22998 if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
22999 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23000 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23001 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23002 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23003 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23004
23005 return rxpwr;
23006 }
23007
23008 static void
wlc_phy_loadsampletable_nphy(struct brcms_phy * pi,struct cordic_iq * tone_buf,u16 num_samps)23009 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23010 u16 num_samps)
23011 {
23012 u16 t;
23013 u32 *data_buf = NULL;
23014
23015 data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
23016 if (data_buf == NULL)
23017 return;
23018
23019 if (pi->phyhang_avoid)
23020 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23021
23022 for (t = 0; t < num_samps; t++)
23023 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23024 (((unsigned int)tone_buf[t].q) & 0x3ff);
23025 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23026 data_buf);
23027
23028 kfree(data_buf);
23029
23030 if (pi->phyhang_avoid)
23031 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23032 }
23033
23034 static u16
wlc_phy_gen_load_samples_nphy(struct brcms_phy * pi,u32 f_kHz,u16 max_val,u8 dac_test_mode)23035 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23036 u8 dac_test_mode)
23037 {
23038 u8 phy_bw, is_phybw40;
23039 u16 num_samps, t, spur;
23040 s32 theta = 0, rot = 0;
23041 u32 tbl_len;
23042 struct cordic_iq *tone_buf = NULL;
23043
23044 is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23045 phy_bw = (is_phybw40 == 1) ? 40 : 20;
23046 tbl_len = (phy_bw << 3);
23047
23048 if (dac_test_mode == 1) {
23049 spur = read_phy_reg(pi, 0x01);
23050 spur = (spur >> 15) & 1;
23051 phy_bw = (spur == 1) ? 82 : 80;
23052 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23053
23054 tbl_len = (phy_bw << 1);
23055 }
23056
23057 tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23058 GFP_ATOMIC);
23059 if (tone_buf == NULL)
23060 return 0;
23061
23062 num_samps = (u16) tbl_len;
23063 rot = ((f_kHz * 36) / phy_bw) / 100;
23064 theta = 0;
23065
23066 for (t = 0; t < num_samps; t++) {
23067
23068 tone_buf[t] = cordic_calc_iq(theta);
23069
23070 theta += rot;
23071
23072 tone_buf[t].q = (s32)CORDIC_FLOAT(tone_buf[t].q * max_val);
23073 tone_buf[t].i = (s32)CORDIC_FLOAT(tone_buf[t].i * max_val);
23074 }
23075
23076 wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23077
23078 kfree(tone_buf);
23079
23080 return num_samps;
23081 }
23082
23083 static void
wlc_phy_runsamples_nphy(struct brcms_phy * pi,u16 num_samps,u16 loops,u16 wait,u8 iqmode,u8 dac_test_mode,bool modify_bbmult)23084 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23085 u16 wait, u8 iqmode, u8 dac_test_mode,
23086 bool modify_bbmult)
23087 {
23088 u16 bb_mult;
23089 u8 phy_bw, sample_cmd;
23090 u16 orig_RfseqCoreActv;
23091 u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4;
23092
23093 if (pi->phyhang_avoid)
23094 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23095
23096 phy_bw = 20;
23097 if (CHSPEC_IS40(pi->radio_chanspec))
23098 phy_bw = 40;
23099
23100 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23101
23102 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23103 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23104 if (!(lpf_bw_ctl_override3 | lpf_bw_ctl_override4)) {
23105 wlc_phy_rfctrl_override_nphy_rev7(
23106 pi,
23107 (0x1 << 7),
23108 wlc_phy_read_lpf_bw_ctl_nphy
23109 (pi,
23110 0), 0, 0,
23111 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23112
23113 pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23114 }
23115 read_phy_reg(pi, 0x340); /* lpf_bw_ctl_miscreg3 */
23116 read_phy_reg(pi, 0x341); /* lpf_bw_ctl_miscreg4 */
23117 }
23118
23119 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23120
23121 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23122 &bb_mult);
23123 pi->nphy_bb_mult_save =
23124 BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23125 }
23126
23127 if (modify_bbmult) {
23128 bb_mult = (phy_bw == 20) ? 100 : 71;
23129 bb_mult = (bb_mult << 8) + bb_mult;
23130 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23131 &bb_mult);
23132 }
23133
23134 if (pi->phyhang_avoid)
23135 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23136
23137 write_phy_reg(pi, 0xc6, num_samps - 1);
23138
23139 if (loops != 0xffff)
23140 write_phy_reg(pi, 0xc4, loops - 1);
23141 else
23142 write_phy_reg(pi, 0xc4, loops);
23143
23144 write_phy_reg(pi, 0xc5, wait);
23145
23146 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23147 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23148 if (iqmode) {
23149
23150 and_phy_reg(pi, 0xc2, 0x7FFF);
23151
23152 or_phy_reg(pi, 0xc2, 0x8000);
23153 } else {
23154
23155 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23156 write_phy_reg(pi, 0xc3, sample_cmd);
23157 }
23158
23159 SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23160
23161 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23162 }
23163
23164 int
wlc_phy_tx_tone_nphy(struct brcms_phy * pi,u32 f_kHz,u16 max_val,u8 iqmode,u8 dac_test_mode,bool modify_bbmult)23165 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23166 u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23167 {
23168 u16 num_samps;
23169 u16 loops = 0xffff;
23170 u16 wait = 0;
23171
23172 num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23173 dac_test_mode);
23174 if (num_samps == 0)
23175 return -EBADE;
23176
23177 wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23178 dac_test_mode, modify_bbmult);
23179
23180 return 0;
23181 }
23182
wlc_phy_stopplayback_nphy(struct brcms_phy * pi)23183 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23184 {
23185 u16 playback_status;
23186 u16 bb_mult;
23187
23188 if (pi->phyhang_avoid)
23189 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23190
23191 playback_status = read_phy_reg(pi, 0xc7);
23192 if (playback_status & 0x1)
23193 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23194 else if (playback_status & 0x2)
23195 and_phy_reg(pi, 0xc2,
23196 0xffff & ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23197
23198 and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23199
23200 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23201
23202 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23203 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23204 &bb_mult);
23205
23206 pi->nphy_bb_mult_save = 0;
23207 }
23208
23209 if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23210 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23211 wlc_phy_rfctrl_override_nphy_rev7(
23212 pi,
23213 (0x1 << 7),
23214 0, 0, 1,
23215 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23216 pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23217 }
23218 }
23219
23220 if (pi->phyhang_avoid)
23221 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23222 }
23223
brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy * pi)23224 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23225 {
23226 u32 *tx_pwrctrl_tbl = NULL;
23227 uint phyrev = pi->pubpi.phy_rev;
23228
23229 if (PHY_IPA(pi)) {
23230 tx_pwrctrl_tbl =
23231 wlc_phy_get_ipa_gaintbl_nphy(pi);
23232 } else {
23233 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23234 if (NREV_IS(phyrev, 3))
23235 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23236 else if (NREV_IS(phyrev, 4))
23237 tx_pwrctrl_tbl =
23238 (pi->srom_fem5g.extpagain == 3) ?
23239 nphy_tpc_5GHz_txgain_HiPwrEPA :
23240 nphy_tpc_5GHz_txgain_rev4;
23241 else
23242 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23243 } else {
23244 if (NREV_GE(phyrev, 7)) {
23245 if (pi->pubpi.radiorev == 3)
23246 tx_pwrctrl_tbl =
23247 nphy_tpc_txgain_epa_2057rev3;
23248 else if (pi->pubpi.radiorev == 5)
23249 tx_pwrctrl_tbl =
23250 nphy_tpc_txgain_epa_2057rev5;
23251 } else {
23252 if (NREV_GE(phyrev, 5) &&
23253 (pi->srom_fem2g.extpagain == 3))
23254 tx_pwrctrl_tbl =
23255 nphy_tpc_txgain_HiPwrEPA;
23256 else
23257 tx_pwrctrl_tbl =
23258 nphy_tpc_txgain_rev3;
23259 }
23260 }
23261 }
23262 return tx_pwrctrl_tbl;
23263 }
23264
wlc_phy_get_tx_gain_nphy(struct brcms_phy * pi)23265 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23266 {
23267 u16 base_idx[2], curr_gain[2];
23268 u8 core_no;
23269 struct nphy_txgains target_gain;
23270 u32 *tx_pwrctrl_tbl = NULL;
23271
23272 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23273 if (pi->phyhang_avoid)
23274 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23275
23276 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23277 curr_gain);
23278
23279 if (pi->phyhang_avoid)
23280 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23281
23282 for (core_no = 0; core_no < 2; core_no++) {
23283 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23284 target_gain.ipa[core_no] =
23285 curr_gain[core_no] & 0x0007;
23286 target_gain.pad[core_no] =
23287 ((curr_gain[core_no] & 0x00F8) >> 3);
23288 target_gain.pga[core_no] =
23289 ((curr_gain[core_no] & 0x0F00) >> 8);
23290 target_gain.txgm[core_no] =
23291 ((curr_gain[core_no] & 0x7000) >> 12);
23292 target_gain.txlpf[core_no] =
23293 ((curr_gain[core_no] & 0x8000) >> 15);
23294 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23295 target_gain.ipa[core_no] =
23296 curr_gain[core_no] & 0x000F;
23297 target_gain.pad[core_no] =
23298 ((curr_gain[core_no] & 0x00F0) >> 4);
23299 target_gain.pga[core_no] =
23300 ((curr_gain[core_no] & 0x0F00) >> 8);
23301 target_gain.txgm[core_no] =
23302 ((curr_gain[core_no] & 0x7000) >> 12);
23303 } else {
23304 target_gain.ipa[core_no] =
23305 curr_gain[core_no] & 0x0003;
23306 target_gain.pad[core_no] =
23307 ((curr_gain[core_no] & 0x000C) >> 2);
23308 target_gain.pga[core_no] =
23309 ((curr_gain[core_no] & 0x0070) >> 4);
23310 target_gain.txgm[core_no] =
23311 ((curr_gain[core_no] & 0x0380) >> 7);
23312 }
23313 }
23314 } else {
23315 uint phyrev = pi->pubpi.phy_rev;
23316
23317 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23318 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23319 for (core_no = 0; core_no < 2; core_no++) {
23320 if (NREV_GE(phyrev, 3)) {
23321 tx_pwrctrl_tbl =
23322 brcms_phy_get_tx_pwrctrl_tbl(pi);
23323 if (NREV_GE(phyrev, 7)) {
23324 target_gain.ipa[core_no] =
23325 (tx_pwrctrl_tbl
23326 [base_idx[core_no]]
23327 >> 16) & 0x7;
23328 target_gain.pad[core_no] =
23329 (tx_pwrctrl_tbl
23330 [base_idx[core_no]]
23331 >> 19) & 0x1f;
23332 target_gain.pga[core_no] =
23333 (tx_pwrctrl_tbl
23334 [base_idx[core_no]]
23335 >> 24) & 0xf;
23336 target_gain.txgm[core_no] =
23337 (tx_pwrctrl_tbl
23338 [base_idx[core_no]]
23339 >> 28) & 0x7;
23340 target_gain.txlpf[core_no] =
23341 (tx_pwrctrl_tbl
23342 [base_idx[core_no]]
23343 >> 31) & 0x1;
23344 } else {
23345 target_gain.ipa[core_no] =
23346 (tx_pwrctrl_tbl
23347 [base_idx[core_no]]
23348 >> 16) & 0xf;
23349 target_gain.pad[core_no] =
23350 (tx_pwrctrl_tbl
23351 [base_idx[core_no]]
23352 >> 20) & 0xf;
23353 target_gain.pga[core_no] =
23354 (tx_pwrctrl_tbl
23355 [base_idx[core_no]]
23356 >> 24) & 0xf;
23357 target_gain.txgm[core_no] =
23358 (tx_pwrctrl_tbl
23359 [base_idx[core_no]]
23360 >> 28) & 0x7;
23361 }
23362 } else {
23363 target_gain.ipa[core_no] =
23364 (nphy_tpc_txgain[base_idx[core_no]] >>
23365 16) & 0x3;
23366 target_gain.pad[core_no] =
23367 (nphy_tpc_txgain[base_idx[core_no]] >>
23368 18) & 0x3;
23369 target_gain.pga[core_no] =
23370 (nphy_tpc_txgain[base_idx[core_no]] >>
23371 20) & 0x7;
23372 target_gain.txgm[core_no] =
23373 (nphy_tpc_txgain[base_idx[core_no]] >>
23374 23) & 0x7;
23375 }
23376 }
23377 }
23378
23379 return target_gain;
23380 }
23381
23382 static void
wlc_phy_iqcal_gainparams_nphy(struct brcms_phy * pi,u16 core_no,struct nphy_txgains target_gain,struct nphy_iqcal_params * params)23383 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23384 struct nphy_txgains target_gain,
23385 struct nphy_iqcal_params *params)
23386 {
23387 u8 k;
23388 u16 gain_index;
23389 u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23390
23391 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23392 if (NREV_GE(pi->pubpi.phy_rev, 7))
23393 params->txlpf = target_gain.txlpf[core_no];
23394
23395 params->txgm = target_gain.txgm[core_no];
23396 params->pga = target_gain.pga[core_no];
23397 params->pad = target_gain.pad[core_no];
23398 params->ipa = target_gain.ipa[core_no];
23399 if (NREV_GE(pi->pubpi.phy_rev, 7))
23400 params->cal_gain =
23401 ((params->txlpf << 15) | (params->txgm << 12) |
23402 (params->pga << 8) |
23403 (params->pad << 3) | (params->ipa));
23404 else
23405 params->cal_gain =
23406 ((params->txgm << 12) | (params->pga << 8) |
23407 (params->pad << 4) | (params->ipa));
23408
23409 params->ncorr[0] = 0x79;
23410 params->ncorr[1] = 0x79;
23411 params->ncorr[2] = 0x79;
23412 params->ncorr[3] = 0x79;
23413 params->ncorr[4] = 0x79;
23414 } else {
23415
23416 gain_index = ((target_gain.pad[core_no] << 0) |
23417 (target_gain.pga[core_no] << 4) |
23418 (target_gain.txgm[core_no] << 8));
23419
23420 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23421 if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23422 gain_index)
23423 break;
23424 }
23425
23426 if (WARN_ON(k == NPHY_IQCAL_NUMGAINS))
23427 return;
23428
23429 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23430 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23431 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23432 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23433 (params->pad << 2));
23434 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23435 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23436 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23437 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23438 }
23439 }
23440
wlc_phy_txcal_radio_setup_nphy(struct brcms_phy * pi)23441 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23442 {
23443 u16 jtag_core, core;
23444
23445 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23446
23447 for (core = 0; core <= 1; core++) {
23448
23449 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23450 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23451 TX_SSI_MASTER);
23452
23453 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23454 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23455 IQCAL_VCM_HG);
23456
23457 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23458 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23459 IQCAL_IDAC);
23460
23461 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23462 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23463 TSSI_VCM);
23464
23465 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23466
23467 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23468 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23469 TX_SSI_MUX);
23470
23471 if (pi->pubpi.radiorev != 5)
23472 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23473 READ_RADIO_REG3(pi, RADIO_2057, TX,
23474 core,
23475 TSSIA);
23476
23477 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23478 READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23479
23480 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23481 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23482 TSSI_MISC1);
23483
23484 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23485 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23486 TX_SSI_MASTER, 0x0a);
23487 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23488 IQCAL_VCM_HG, 0x43);
23489 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23490 IQCAL_IDAC, 0x55);
23491 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23492 TSSI_VCM, 0x00);
23493 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23494 TSSIG, 0x00);
23495 if (pi->use_int_tx_iqlo_cal_nphy) {
23496 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23497 core, TX_SSI_MUX, 0x4);
23498 if (!(pi->
23499 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23500 WRITE_RADIO_REG3(pi, RADIO_2057,
23501 TX, core,
23502 TSSIA, 0x31);
23503 else
23504 WRITE_RADIO_REG3(pi, RADIO_2057,
23505 TX, core,
23506 TSSIA, 0x21);
23507 }
23508 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23509 TSSI_MISC1, 0x00);
23510 } else {
23511 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23512 TX_SSI_MASTER, 0x06);
23513 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23514 IQCAL_VCM_HG, 0x43);
23515 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23516 IQCAL_IDAC, 0x55);
23517 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23518 TSSI_VCM, 0x00);
23519
23520 if (pi->pubpi.radiorev != 5)
23521 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23522 core, TSSIA, 0x00);
23523 if (pi->use_int_tx_iqlo_cal_nphy) {
23524 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23525 core, TX_SSI_MUX,
23526 0x06);
23527 if (!(pi->
23528 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23529 WRITE_RADIO_REG3(pi, RADIO_2057,
23530 TX, core,
23531 TSSIG, 0x31);
23532 else
23533 WRITE_RADIO_REG3(pi, RADIO_2057,
23534 TX, core,
23535 TSSIG, 0x21);
23536 }
23537 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23538 TSSI_MISC1, 0x00);
23539 }
23540 }
23541 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23542
23543 for (core = 0; core <= 1; core++) {
23544 jtag_core =
23545 (core ==
23546 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23547
23548 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23549 read_radio_reg(pi,
23550 RADIO_2056_TX_TX_SSI_MASTER |
23551 jtag_core);
23552
23553 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23554 read_radio_reg(pi,
23555 RADIO_2056_TX_IQCAL_VCM_HG |
23556 jtag_core);
23557
23558 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23559 read_radio_reg(pi,
23560 RADIO_2056_TX_IQCAL_IDAC |
23561 jtag_core);
23562
23563 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23564 read_radio_reg(
23565 pi,
23566 RADIO_2056_TX_TSSI_VCM |
23567 jtag_core);
23568
23569 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23570 read_radio_reg(pi,
23571 RADIO_2056_TX_TX_AMP_DET |
23572 jtag_core);
23573
23574 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23575 read_radio_reg(pi,
23576 RADIO_2056_TX_TX_SSI_MUX |
23577 jtag_core);
23578
23579 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23580 read_radio_reg(pi,
23581 RADIO_2056_TX_TSSIA | jtag_core);
23582
23583 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23584 read_radio_reg(pi,
23585 RADIO_2056_TX_TSSIG | jtag_core);
23586
23587 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23588 read_radio_reg(pi,
23589 RADIO_2056_TX_TSSI_MISC1 |
23590 jtag_core);
23591
23592 pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23593 read_radio_reg(pi,
23594 RADIO_2056_TX_TSSI_MISC2 |
23595 jtag_core);
23596
23597 pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23598 read_radio_reg(pi,
23599 RADIO_2056_TX_TSSI_MISC3 |
23600 jtag_core);
23601
23602 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23603 write_radio_reg(pi,
23604 RADIO_2056_TX_TX_SSI_MASTER |
23605 jtag_core, 0x0a);
23606 write_radio_reg(pi,
23607 RADIO_2056_TX_IQCAL_VCM_HG |
23608 jtag_core, 0x40);
23609 write_radio_reg(pi,
23610 RADIO_2056_TX_IQCAL_IDAC |
23611 jtag_core, 0x55);
23612 write_radio_reg(pi,
23613 RADIO_2056_TX_TSSI_VCM |
23614 jtag_core, 0x00);
23615 write_radio_reg(pi,
23616 RADIO_2056_TX_TX_AMP_DET |
23617 jtag_core, 0x00);
23618
23619 if (PHY_IPA(pi)) {
23620 write_radio_reg(
23621 pi,
23622 RADIO_2056_TX_TX_SSI_MUX
23623 | jtag_core, 0x4);
23624 write_radio_reg(pi,
23625 RADIO_2056_TX_TSSIA |
23626 jtag_core, 0x1);
23627 } else {
23628 write_radio_reg(
23629 pi,
23630 RADIO_2056_TX_TX_SSI_MUX
23631 | jtag_core, 0x00);
23632 write_radio_reg(pi,
23633 RADIO_2056_TX_TSSIA |
23634 jtag_core, 0x2f);
23635 }
23636 write_radio_reg(pi,
23637 RADIO_2056_TX_TSSIG | jtag_core,
23638 0x00);
23639 write_radio_reg(pi,
23640 RADIO_2056_TX_TSSI_MISC1 |
23641 jtag_core, 0x00);
23642
23643 write_radio_reg(pi,
23644 RADIO_2056_TX_TSSI_MISC2 |
23645 jtag_core, 0x00);
23646 write_radio_reg(pi,
23647 RADIO_2056_TX_TSSI_MISC3 |
23648 jtag_core, 0x00);
23649 } else {
23650 write_radio_reg(pi,
23651 RADIO_2056_TX_TX_SSI_MASTER |
23652 jtag_core, 0x06);
23653 write_radio_reg(pi,
23654 RADIO_2056_TX_IQCAL_VCM_HG |
23655 jtag_core, 0x40);
23656 write_radio_reg(pi,
23657 RADIO_2056_TX_IQCAL_IDAC |
23658 jtag_core, 0x55);
23659 write_radio_reg(pi,
23660 RADIO_2056_TX_TSSI_VCM |
23661 jtag_core, 0x00);
23662 write_radio_reg(pi,
23663 RADIO_2056_TX_TX_AMP_DET |
23664 jtag_core, 0x00);
23665 write_radio_reg(pi,
23666 RADIO_2056_TX_TSSIA | jtag_core,
23667 0x00);
23668
23669 if (PHY_IPA(pi)) {
23670
23671 write_radio_reg(
23672 pi,
23673 RADIO_2056_TX_TX_SSI_MUX
23674 | jtag_core, 0x06);
23675 if (NREV_LT(pi->pubpi.phy_rev, 5))
23676 write_radio_reg(
23677 pi,
23678 RADIO_2056_TX_TSSIG
23679 | jtag_core,
23680 0x11);
23681 else
23682 write_radio_reg(
23683 pi,
23684 RADIO_2056_TX_TSSIG
23685 | jtag_core,
23686 0x1);
23687 } else {
23688 write_radio_reg(
23689 pi,
23690 RADIO_2056_TX_TX_SSI_MUX
23691 | jtag_core, 0x00);
23692 write_radio_reg(pi,
23693 RADIO_2056_TX_TSSIG |
23694 jtag_core, 0x20);
23695 }
23696
23697 write_radio_reg(pi,
23698 RADIO_2056_TX_TSSI_MISC1 |
23699 jtag_core, 0x00);
23700 write_radio_reg(pi,
23701 RADIO_2056_TX_TSSI_MISC2 |
23702 jtag_core, 0x00);
23703 write_radio_reg(pi,
23704 RADIO_2056_TX_TSSI_MISC3 |
23705 jtag_core, 0x00);
23706 }
23707 }
23708 } else {
23709
23710 pi->tx_rx_cal_radio_saveregs[0] =
23711 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23712 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23713 pi->tx_rx_cal_radio_saveregs[1] =
23714 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23715 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23716
23717 pi->tx_rx_cal_radio_saveregs[2] =
23718 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23719 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23720 pi->tx_rx_cal_radio_saveregs[3] =
23721 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23722 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23723
23724 pi->tx_rx_cal_radio_saveregs[4] =
23725 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23726 pi->tx_rx_cal_radio_saveregs[5] =
23727 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23728
23729 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23730 0) {
23731
23732 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23733 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23734 } else {
23735
23736 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23737 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23738 }
23739
23740 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23741
23742 or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23743 or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23744 } else {
23745
23746 and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23747 and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23748 }
23749 }
23750 }
23751
wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy * pi)23752 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23753 {
23754 u16 jtag_core, core;
23755
23756 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23757 for (core = 0; core <= 1; core++) {
23758
23759 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23760 TX_SSI_MASTER,
23761 pi->
23762 tx_rx_cal_radio_saveregs[(core * 11) +
23763 0]);
23764
23765 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23766 pi->
23767 tx_rx_cal_radio_saveregs[(core * 11) +
23768 1]);
23769
23770 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23771 pi->
23772 tx_rx_cal_radio_saveregs[(core * 11) +
23773 2]);
23774
23775 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23776 pi->
23777 tx_rx_cal_radio_saveregs[(core * 11) +
23778 3]);
23779
23780 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23781 pi->
23782 tx_rx_cal_radio_saveregs[(core * 11) +
23783 5]);
23784
23785 if (pi->pubpi.radiorev != 5)
23786 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23787 TSSIA,
23788 pi->tx_rx_cal_radio_saveregs
23789 [(core * 11) + 6]);
23790
23791 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23792 pi->
23793 tx_rx_cal_radio_saveregs[(core * 11) +
23794 7]);
23795
23796 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23797 pi->
23798 tx_rx_cal_radio_saveregs[(core * 11) +
23799 8]);
23800 }
23801 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23802 for (core = 0; core <= 1; core++) {
23803 jtag_core = (core == PHY_CORE_0) ?
23804 RADIO_2056_TX0 : RADIO_2056_TX1;
23805
23806 write_radio_reg(pi,
23807 RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23808 pi->
23809 tx_rx_cal_radio_saveregs[(core * 11) +
23810 0]);
23811
23812 write_radio_reg(pi,
23813 RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23814 pi->
23815 tx_rx_cal_radio_saveregs[(core * 11) +
23816 1]);
23817
23818 write_radio_reg(pi,
23819 RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23820 pi->
23821 tx_rx_cal_radio_saveregs[(core * 11) +
23822 2]);
23823
23824 write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23825 pi->
23826 tx_rx_cal_radio_saveregs[(core * 11) +
23827 3]);
23828
23829 write_radio_reg(pi,
23830 RADIO_2056_TX_TX_AMP_DET | jtag_core,
23831 pi->
23832 tx_rx_cal_radio_saveregs[(core * 11) +
23833 4]);
23834
23835 write_radio_reg(pi,
23836 RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23837 pi->
23838 tx_rx_cal_radio_saveregs[(core * 11) +
23839 5]);
23840
23841 write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23842 pi->
23843 tx_rx_cal_radio_saveregs[(core * 11) +
23844 6]);
23845
23846 write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23847 pi->
23848 tx_rx_cal_radio_saveregs[(core * 11) +
23849 7]);
23850
23851 write_radio_reg(pi,
23852 RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23853 pi->
23854 tx_rx_cal_radio_saveregs[(core * 11) +
23855 8]);
23856
23857 write_radio_reg(pi,
23858 RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23859 pi->
23860 tx_rx_cal_radio_saveregs[(core * 11) +
23861 9]);
23862
23863 write_radio_reg(pi,
23864 RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23865 pi->
23866 tx_rx_cal_radio_saveregs[(core * 11) +
23867 10]);
23868 }
23869 } else {
23870
23871 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23872 pi->tx_rx_cal_radio_saveregs[0]);
23873 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23874 pi->tx_rx_cal_radio_saveregs[1]);
23875 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23876 pi->tx_rx_cal_radio_saveregs[2]);
23877 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23878 pi->tx_rx_cal_radio_saveregs[3]);
23879 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23880 pi->tx_rx_cal_radio_saveregs[4]);
23881 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23882 pi->tx_rx_cal_radio_saveregs[5]);
23883 }
23884 }
23885
wlc_phy_txcal_physetup_nphy(struct brcms_phy * pi)23886 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23887 {
23888 u16 val, mask;
23889
23890 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23891 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23892 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23893
23894 mask = ((0x3 << 8) | (0x3 << 10));
23895 val = (0x2 << 8);
23896 val |= (0x2 << 10);
23897 mod_phy_reg(pi, 0xa6, mask, val);
23898 mod_phy_reg(pi, 0xa7, mask, val);
23899
23900 val = read_phy_reg(pi, 0x8f);
23901 pi->tx_rx_cal_phy_saveregs[2] = val;
23902 val |= ((0x1 << 9) | (0x1 << 10));
23903 write_phy_reg(pi, 0x8f, val);
23904
23905 val = read_phy_reg(pi, 0xa5);
23906 pi->tx_rx_cal_phy_saveregs[3] = val;
23907 val |= ((0x1 << 9) | (0x1 << 10));
23908 write_phy_reg(pi, 0xa5, val);
23909
23910 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23911 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23912
23913 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23914 &val);
23915 pi->tx_rx_cal_phy_saveregs[5] = val;
23916 val = 0;
23917 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23918 &val);
23919
23920 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23921 &val);
23922 pi->tx_rx_cal_phy_saveregs[6] = val;
23923 val = 0;
23924 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23925 &val);
23926
23927 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23928 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23929
23930 if (!(pi->use_int_tx_iqlo_cal_nphy))
23931 wlc_phy_rfctrlintc_override_nphy(
23932 pi,
23933 NPHY_RfctrlIntc_override_PA,
23934 1,
23935 RADIO_MIMO_CORESEL_CORE1
23936 |
23937 RADIO_MIMO_CORESEL_CORE2);
23938 else
23939 wlc_phy_rfctrlintc_override_nphy(
23940 pi,
23941 NPHY_RfctrlIntc_override_PA,
23942 0,
23943 RADIO_MIMO_CORESEL_CORE1
23944 |
23945 RADIO_MIMO_CORESEL_CORE2);
23946
23947 wlc_phy_rfctrlintc_override_nphy(pi,
23948 NPHY_RfctrlIntc_override_TRSW,
23949 0x2, RADIO_MIMO_CORESEL_CORE1);
23950 wlc_phy_rfctrlintc_override_nphy(pi,
23951 NPHY_RfctrlIntc_override_TRSW,
23952 0x8, RADIO_MIMO_CORESEL_CORE2);
23953
23954 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23955 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23956 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23957 0x29b, (0x1 << 0), (0) << 0);
23958
23959 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23960 0x29b, (0x1 << 0), (0) << 0);
23961
23962 if (NREV_IS(pi->pubpi.phy_rev, 7)
23963 || NREV_GE(pi->pubpi.phy_rev, 8))
23964 wlc_phy_rfctrl_override_nphy_rev7(
23965 pi, (0x1 << 7),
23966 wlc_phy_read_lpf_bw_ctl_nphy
23967 (pi,
23968 0), 0, 0,
23969 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23970
23971 if (pi->use_int_tx_iqlo_cal_nphy
23972 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
23973
23974 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
23975
23976 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
23977 1 << 4);
23978
23979 if (CHSPEC_IS2G(pi->radio_chanspec)) {
23980 mod_radio_reg(
23981 pi,
23982 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
23983 1, 0);
23984 mod_radio_reg(
23985 pi,
23986 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
23987 1, 0);
23988 } else {
23989 mod_radio_reg(
23990 pi,
23991 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
23992 1, 0);
23993 mod_radio_reg(
23994 pi,
23995 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
23996 1, 0);
23997 }
23998 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
23999 wlc_phy_rfctrl_override_nphy_rev7(
24000 pi,
24001 (0x1 << 3), 0,
24002 0x3, 0,
24003 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24004 }
24005 }
24006 } else {
24007 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24008 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24009
24010 mask = ((0x3 << 12) | (0x3 << 14));
24011 val = (0x2 << 12);
24012 val |= (0x2 << 14);
24013 mod_phy_reg(pi, 0xa6, mask, val);
24014 mod_phy_reg(pi, 0xa7, mask, val);
24015
24016 val = read_phy_reg(pi, 0xa5);
24017 pi->tx_rx_cal_phy_saveregs[2] = val;
24018 val |= ((0x1 << 12) | (0x1 << 13));
24019 write_phy_reg(pi, 0xa5, val);
24020
24021 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24022 &val);
24023 pi->tx_rx_cal_phy_saveregs[3] = val;
24024 val |= 0x2000;
24025 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24026 &val);
24027
24028 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24029 &val);
24030 pi->tx_rx_cal_phy_saveregs[4] = val;
24031 val |= 0x2000;
24032 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24033 &val);
24034
24035 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24036 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24037 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24038 write_phy_reg(pi, 0x91, val);
24039 write_phy_reg(pi, 0x92, val);
24040 }
24041 }
24042
wlc_phy_txcal_phycleanup_nphy(struct brcms_phy * pi)24043 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24044 {
24045 u16 mask;
24046
24047 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24048 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24049 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24050 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24051 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24052 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24053
24054 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24055 &pi->tx_rx_cal_phy_saveregs[5]);
24056 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24057 &pi->tx_rx_cal_phy_saveregs[6]);
24058
24059 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24060 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24061
24062 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24063 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24064
24065 if (NREV_IS(pi->pubpi.phy_rev, 7)
24066 || NREV_GE(pi->pubpi.phy_rev, 8))
24067 wlc_phy_rfctrl_override_nphy_rev7(
24068 pi, (0x1 << 7), 0, 0,
24069 1,
24070 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24071
24072 wlc_phy_resetcca_nphy(pi);
24073
24074 if (pi->use_int_tx_iqlo_cal_nphy
24075 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24076
24077 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24078 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24079 mod_radio_reg(
24080 pi,
24081 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24082 1, 1);
24083 mod_radio_reg(
24084 pi,
24085 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24086 1, 1);
24087 } else {
24088 mod_radio_reg(
24089 pi,
24090 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24091 1, 1);
24092 mod_radio_reg(
24093 pi,
24094 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24095 1, 1);
24096 }
24097
24098 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24099 0);
24100 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24101 wlc_phy_rfctrl_override_nphy_rev7(
24102 pi,
24103 (0x1 << 3), 0,
24104 0x3, 1,
24105 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24106 }
24107 }
24108 } else {
24109 mask = ((0x3 << 12) | (0x3 << 14));
24110 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24111 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24112 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24113
24114 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24115 &pi->tx_rx_cal_phy_saveregs[3]);
24116
24117 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24118 &pi->tx_rx_cal_phy_saveregs[4]);
24119
24120 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24121 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24122 }
24123 }
24124
24125 void
wlc_phy_est_tonepwr_nphy(struct brcms_phy * pi,s32 * qdBm_pwrbuf,u8 num_samps)24126 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24127 {
24128 u16 tssi_reg;
24129 s32 temp, pwrindex[2];
24130 s32 idle_tssi[2];
24131 s32 rssi_buf[4];
24132 s32 tssival[2];
24133 u8 tssi_type;
24134
24135 tssi_reg = read_phy_reg(pi, 0x1e9);
24136
24137 temp = (s32) (tssi_reg & 0x3f);
24138 idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24139
24140 temp = (s32) ((tssi_reg >> 8) & 0x3f);
24141 idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24142
24143 tssi_type =
24144 CHSPEC_IS5G(pi->radio_chanspec) ?
24145 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24146
24147 wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24148
24149 tssival[0] = rssi_buf[0] / ((s32) num_samps);
24150 tssival[1] = rssi_buf[2] / ((s32) num_samps);
24151
24152 pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24153 pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24154
24155 if (pwrindex[0] < 0)
24156 pwrindex[0] = 0;
24157 else if (pwrindex[0] > 63)
24158 pwrindex[0] = 63;
24159
24160 if (pwrindex[1] < 0)
24161 pwrindex[1] = 0;
24162 else if (pwrindex[1] > 63)
24163 pwrindex[1] = 63;
24164
24165 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24166 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24167 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24168 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24169 }
24170
wlc_phy_update_txcal_ladder_nphy(struct brcms_phy * pi,u16 core)24171 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24172 {
24173 int index;
24174 u32 bbmult_scale;
24175 u16 bbmult;
24176 u16 tblentry;
24177
24178 static const struct nphy_txiqcal_ladder ladder_lo[] = {
24179 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24180 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24181 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24182 };
24183
24184 static const struct nphy_txiqcal_ladder ladder_iq[] = {
24185 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24186 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24187 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24188 };
24189
24190 bbmult = (core == PHY_CORE_0) ?
24191 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24192 (pi->nphy_txcal_bbmult & 0xff);
24193
24194 for (index = 0; index < 18; index++) {
24195 bbmult_scale = ladder_lo[index].percent * bbmult;
24196 bbmult_scale /= 100;
24197
24198 tblentry =
24199 ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24200 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24201 &tblentry);
24202
24203 bbmult_scale = ladder_iq[index].percent * bbmult;
24204 bbmult_scale /= 100;
24205
24206 tblentry =
24207 ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24208 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24209 16, &tblentry);
24210 }
24211 }
24212
wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy * pi,u8 core)24213 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24214 {
24215 u16 tmp;
24216 tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24217
24218 tmp = (tmp & (0x7f << 8)) >> 8;
24219 return (u8) tmp;
24220 }
24221
24222 static void
wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy * pi,u8 idx0,u8 idx1)24223 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24224 {
24225 mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24226
24227 if (NREV_GT(pi->pubpi.phy_rev, 1))
24228 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24229 }
24230
wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy * pi)24231 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24232 {
24233 u16 m0m1;
24234
24235 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24236
24237 return m0m1;
24238 }
24239
wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy * pi,u8 m0,u8 m1)24240 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24241 {
24242 u16 m0m1 = (u16) ((m0 << 8) | m1);
24243
24244 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24245 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24246 }
24247
24248 static void
wlc_phy_papd_cal_setup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state,u8 core)24249 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24250 struct nphy_papd_restore_state *state, u8 core)
24251 {
24252 s32 tone_freq;
24253 u8 off_core;
24254 u16 mixgain = 0;
24255
24256 off_core = core ^ 0x1;
24257 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24258
24259 if (NREV_IS(pi->pubpi.phy_rev, 7)
24260 || NREV_GE(pi->pubpi.phy_rev, 8))
24261 wlc_phy_rfctrl_override_nphy_rev7(
24262 pi, (0x1 << 7),
24263 wlc_phy_read_lpf_bw_ctl_nphy
24264 (pi,
24265 0), 0, 0,
24266 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24267
24268 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24269 if (pi->pubpi.radiorev == 5)
24270 mixgain = (core == 0) ? 0x20 : 0x00;
24271 else if ((pi->pubpi.radiorev == 7)
24272 || (pi->pubpi.radiorev == 8))
24273 mixgain = 0x00;
24274 else if ((pi->pubpi.radiorev <= 4)
24275 || (pi->pubpi.radiorev == 6))
24276 mixgain = 0x00;
24277 } else {
24278 if ((pi->pubpi.radiorev == 4) ||
24279 (pi->pubpi.radiorev == 6))
24280 mixgain = 0x50;
24281 else if ((pi->pubpi.radiorev == 3)
24282 || (pi->pubpi.radiorev == 7)
24283 || (pi->pubpi.radiorev == 8))
24284 mixgain = 0x0;
24285 }
24286
24287 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24288 mixgain, (1 << core), 0,
24289 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24290
24291 wlc_phy_rfctrl_override_1tomany_nphy(
24292 pi,
24293 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24294 1, (1 << core), 0);
24295 wlc_phy_rfctrl_override_1tomany_nphy(
24296 pi,
24297 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24298 0, (1 << off_core), 0);
24299
24300 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24301 0, 0x3, 0,
24302 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24303 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24304 (1 << core), 0,
24305 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24306 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24307 (1 << core), 0,
24308 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24309 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24310 (1 << core), 0,
24311 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24312 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24313 (1 << core), 0,
24314 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24315 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24316 (1 << core), 0,
24317 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24318 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24319 (1 << core), 0,
24320 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24321 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24322 (1 << core), 0,
24323 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24324
24325 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24326 0, (1 << core), 0,
24327 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24328 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24329 (1 << core), 0,
24330 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24331
24332 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24333 0xa6 : 0xa7);
24334 state->afeoverride[core] =
24335 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24336 state->afectrl[off_core] =
24337 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24338 state->afeoverride[off_core] =
24339 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24340
24341 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24342 (0x1 << 2), 0);
24343 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24344 0xa5), (0x1 << 2), (0x1 << 2));
24345
24346 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24347 (0x1 << 2), (0x1 << 2));
24348 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24349 0x8f), (0x1 << 2), (0x1 << 2));
24350
24351 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24352 state->pwrup[core] =
24353 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24354 TXRXCOUPLE_2G_PWRUP);
24355 state->atten[core] =
24356 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24357 TXRXCOUPLE_2G_ATTEN);
24358 state->pwrup[off_core] =
24359 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24360 TXRXCOUPLE_2G_PWRUP);
24361 state->atten[off_core] =
24362 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24363 TXRXCOUPLE_2G_ATTEN);
24364
24365 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24366 TXRXCOUPLE_2G_PWRUP, 0xc);
24367
24368 if ((pi->pubpi.radiorev == 3) ||
24369 (pi->pubpi.radiorev == 4) ||
24370 (pi->pubpi.radiorev == 6))
24371 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24372 TXRXCOUPLE_2G_ATTEN, 0xf0);
24373 else if (pi->pubpi.radiorev == 5)
24374 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24375 TXRXCOUPLE_2G_ATTEN,
24376 (core == 0) ? 0xf7 : 0xf2);
24377 else if ((pi->pubpi.radiorev == 7)
24378 || (pi->pubpi.radiorev == 8))
24379 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24380 TXRXCOUPLE_2G_ATTEN, 0xf0);
24381
24382 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24383 TXRXCOUPLE_2G_PWRUP, 0x0);
24384 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24385 TXRXCOUPLE_2G_ATTEN, 0xff);
24386 } else {
24387 state->pwrup[core] =
24388 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24389 TXRXCOUPLE_5G_PWRUP);
24390 state->atten[core] =
24391 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24392 TXRXCOUPLE_5G_ATTEN);
24393 state->pwrup[off_core] =
24394 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24395 TXRXCOUPLE_5G_PWRUP);
24396 state->atten[off_core] =
24397 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24398 TXRXCOUPLE_5G_ATTEN);
24399
24400 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24401 TXRXCOUPLE_5G_PWRUP, 0xc);
24402
24403 if ((pi->pubpi.radiorev == 7)
24404 || (pi->pubpi.radiorev == 8))
24405 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24406 TXRXCOUPLE_5G_ATTEN, 0xf4);
24407
24408 else
24409 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24410 TXRXCOUPLE_5G_ATTEN, 0xf0);
24411
24412 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24413 TXRXCOUPLE_5G_PWRUP, 0x0);
24414 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24415 TXRXCOUPLE_5G_ATTEN, 0xff);
24416 }
24417
24418 tone_freq = 4000;
24419
24420 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24421
24422 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24423 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24424
24425 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24426 0x2a4, (0x1 << 13), (1) << 13);
24427
24428 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24429 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24430
24431 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24432 0x2a4, (0x1 << 13), (0) << 13);
24433
24434 } else {
24435
24436 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24437
24438 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24439
24440 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24441
24442 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24443 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24444
24445 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24446 0xa6 : 0xa7);
24447 state->afeoverride[core] =
24448 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24449
24450 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24451 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24452 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24453 0xa5),
24454 (0x1 << 0) |
24455 (0x1 << 1) |
24456 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24457
24458 state->vga_master[core] =
24459 READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24460 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24461 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24462 state->fbmix[core] =
24463 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24464 TXFBMIX_G);
24465 state->intpa_master[core] =
24466 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24467 INTPAG_MASTER);
24468
24469 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24470 0x03);
24471 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24472 INTPAG_MASTER, 0x04);
24473 } else {
24474 state->fbmix[core] =
24475 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24476 TXFBMIX_A);
24477 state->intpa_master[core] =
24478 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24479 INTPAA_MASTER);
24480
24481 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24482 0x03);
24483 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24484 INTPAA_MASTER, 0x04);
24485
24486 }
24487
24488 tone_freq = 4000;
24489
24490 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24491
24492 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24493 0x29b, (0x1 << 0), (1) << 0);
24494
24495 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24496 0x29b, (0x1 << 0), (0) << 0);
24497
24498 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24499 }
24500 }
24501
24502 static void
wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy * pi,struct nphy_papd_restore_state * state)24503 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24504 struct nphy_papd_restore_state *state)
24505 {
24506 u8 core;
24507
24508 wlc_phy_stopplayback_nphy(pi);
24509
24510 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24511
24512 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24513
24514 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24515 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24516 TXRXCOUPLE_2G_PWRUP, 0);
24517 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24518 TXRXCOUPLE_2G_ATTEN,
24519 state->atten[core]);
24520 } else {
24521 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24522 TXRXCOUPLE_5G_PWRUP, 0);
24523 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24524 TXRXCOUPLE_5G_ATTEN,
24525 state->atten[core]);
24526 }
24527 }
24528
24529 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24530 wlc_phy_rfctrl_override_nphy_rev7(
24531 pi, (0x1 << 2),
24532 1, 0x3, 0,
24533 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24534 else
24535 wlc_phy_rfctrl_override_nphy_rev7(
24536 pi, (0x1 << 2),
24537 0, 0x3, 1,
24538 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24539
24540 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24541 0, 0x3, 1,
24542 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24543 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24544 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24545 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24546 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24547 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24548 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24549 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24550 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24551 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24552 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24553 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24554 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24555 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24556 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24557 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24558 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24559 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24560 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24561 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24562 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24563 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24564 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24565 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24566 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24567 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24568 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24569 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24570 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24571 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24572 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24573
24574 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24575
24576 write_phy_reg(pi, (core == PHY_CORE_0) ?
24577 0xa6 : 0xa7, state->afectrl[core]);
24578 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24579 0xa5, state->afeoverride[core]);
24580 }
24581
24582 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24583 (state->mm & 0xff));
24584
24585 if (NREV_IS(pi->pubpi.phy_rev, 7)
24586 || NREV_GE(pi->pubpi.phy_rev, 8))
24587 wlc_phy_rfctrl_override_nphy_rev7(
24588 pi, (0x1 << 7), 0, 0,
24589 1,
24590 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24591 } else {
24592 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24593 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24594 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24595
24596 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24597 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24598
24599 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24600
24601 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24602 state->vga_master[core]);
24603 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24604 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24605 TXFBMIX_G, state->fbmix[core]);
24606 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24607 INTPAG_MASTER,
24608 state->intpa_master[core]);
24609 } else {
24610 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24611 TXFBMIX_A, state->fbmix[core]);
24612 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24613 INTPAA_MASTER,
24614 state->intpa_master[core]);
24615 }
24616
24617 write_phy_reg(pi, (core == PHY_CORE_0) ?
24618 0xa6 : 0xa7, state->afectrl[core]);
24619 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24620 0xa5, state->afeoverride[core]);
24621 }
24622
24623 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24624 (state->mm & 0xff));
24625
24626 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24627 }
24628 }
24629
24630 static void
wlc_phy_a1_nphy(struct brcms_phy * pi,u8 core,u32 winsz,u32 start,u32 end)24631 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24632 u32 end)
24633 {
24634 u32 *buf, *src, *dst, sz;
24635
24636 sz = end - start + 1;
24637
24638 buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24639 if (NULL == buf)
24640 return;
24641
24642 src = buf;
24643 dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24644
24645 wlc_phy_table_read_nphy(pi,
24646 (core ==
24647 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24648 NPHY_TBL_ID_EPSILONTBL1),
24649 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24650
24651 do {
24652 u32 phy_a1, phy_a2;
24653 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24654
24655 phy_a1 = end - min(end, (winsz >> 1));
24656 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24657 end + (winsz >> 1));
24658 phy_a3 = phy_a2 - phy_a1 + 1;
24659 phy_a6 = 0;
24660 phy_a7 = 0;
24661
24662 do {
24663 wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24664 &phy_a5);
24665 phy_a6 += phy_a4;
24666 phy_a7 += phy_a5;
24667 } while (phy_a2-- != phy_a1);
24668
24669 phy_a6 /= phy_a3;
24670 phy_a7 /= phy_a3;
24671 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24672 } while (end-- != start);
24673
24674 wlc_phy_table_write_nphy(pi,
24675 (core ==
24676 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24677 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24678
24679 kfree(buf);
24680 }
24681
24682 static void
wlc_phy_a2_nphy(struct brcms_phy * pi,struct nphy_ipa_txcalgains * txgains,enum phy_cal_mode cal_mode,u8 core)24683 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24684 enum phy_cal_mode cal_mode, u8 core)
24685 {
24686 u16 phy_a1, phy_a2, phy_a3;
24687 u16 phy_a4, phy_a5;
24688 u8 phy_a7, m[2];
24689 u32 phy_a8 = 0;
24690 struct nphy_txgains phy_a9;
24691
24692 if (NREV_LT(pi->pubpi.phy_rev, 3))
24693 return;
24694
24695 phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24696
24697 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24698
24699 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24700
24701 if (CHSPEC_IS2G(pi->radio_chanspec))
24702 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24703 (phy_a9.txgm[core] << 12) |
24704 (phy_a9.pga[core] << 8) |
24705 (txgains->gains.pad[core] << 3) |
24706 (phy_a9.ipa[core]));
24707 else
24708 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24709 (phy_a9.txgm[core] << 12) |
24710 (txgains->gains.pga[core] << 8) |
24711 (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24712
24713 wlc_phy_rfctrl_override_1tomany_nphy(
24714 pi,
24715 NPHY_REV7_RfctrlOverride_cmd_txgain,
24716 phy_a5, (1 << core), 0);
24717
24718 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24719 if ((pi->pubpi.radiorev <= 4)
24720 || (pi->pubpi.radiorev == 6))
24721 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24722 60 : 79;
24723 else
24724 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24725 45 : 64;
24726 } else {
24727 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24728 }
24729
24730 m[phy_a7] = 0;
24731 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24732
24733 phy_a2 = 63;
24734
24735 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24736 if ((pi->pubpi.radiorev == 4)
24737 || (pi->pubpi.radiorev == 6)) {
24738 phy_a1 = 30;
24739 phy_a3 = 30;
24740 } else {
24741 phy_a1 = 25;
24742 phy_a3 = 25;
24743 }
24744 } else {
24745 if ((pi->pubpi.radiorev == 5)
24746 || (pi->pubpi.radiorev == 7)
24747 || (pi->pubpi.radiorev == 8)) {
24748 phy_a1 = 25;
24749 phy_a3 = 25;
24750 } else {
24751 phy_a1 = 35;
24752 phy_a3 = 35;
24753 }
24754 }
24755
24756 if (cal_mode == CAL_GCTRL) {
24757 if ((pi->pubpi.radiorev == 5)
24758 && (CHSPEC_IS2G(pi->radio_chanspec)))
24759 phy_a1 = 55;
24760 else if (((pi->pubpi.radiorev == 7) &&
24761 (CHSPEC_IS2G(pi->radio_chanspec))) ||
24762 ((pi->pubpi.radiorev == 8) &&
24763 (CHSPEC_IS2G(pi->radio_chanspec))))
24764 phy_a1 = 60;
24765 else
24766 phy_a1 = 63;
24767
24768 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24769
24770 phy_a1 = 35;
24771 phy_a3 = 35;
24772 }
24773
24774 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24775 0x29b, (0x1 << 0), (1) << 0);
24776
24777 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24778 0x29b, (0x1 << 0), (0) << 0);
24779
24780 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24781 0x2a4, (0x1 << 13), (1) << 13);
24782
24783 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24784 0x2a4, (0x1 << 13), (0) << 13);
24785
24786 write_phy_reg(pi, 0x2a1, 0x80);
24787 write_phy_reg(pi, 0x2a2, 0x100);
24788
24789 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24790 0x2a4, (0x7 << 4), (11) << 4);
24791
24792 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24793 0x2a4, (0x7 << 8), (11) << 8);
24794
24795 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24796 0x2a4, (0x7 << 0), (0x3) << 0);
24797
24798 write_phy_reg(pi, 0x2e5, 0x20);
24799
24800 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24801
24802 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24803
24804 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24805
24806 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24807 1, ((core == 0) ? 1 : 2), 0,
24808 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24809 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24810 0, ((core == 0) ? 2 : 1), 0,
24811 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24812
24813 write_phy_reg(pi, 0x2be, 1);
24814 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24815
24816 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24817 0, 0x3, 0,
24818 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24819
24820 wlc_phy_table_write_nphy(pi,
24821 (core ==
24822 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24823 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24824 32, &phy_a8);
24825
24826 if (cal_mode != CAL_GCTRL) {
24827 if (CHSPEC_IS5G(pi->radio_chanspec))
24828 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24829 }
24830
24831 wlc_phy_rfctrl_override_1tomany_nphy(
24832 pi,
24833 NPHY_REV7_RfctrlOverride_cmd_txgain,
24834 phy_a5, (1 << core), 1);
24835
24836 } else {
24837
24838 if (txgains) {
24839 if (txgains->useindex) {
24840 phy_a4 = 15 - ((txgains->index) >> 3);
24841 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24842 if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24843 pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24844 phy_a5 = 0x10f7 | (phy_a4 << 8);
24845 } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24846 phy_a5 = 0x00f7 | (phy_a4 << 8);
24847 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24848 phy_a5 = 0x10f7 | (phy_a4 << 8);
24849 } else {
24850 phy_a5 = 0x50f7 | (phy_a4 << 8);
24851 }
24852 } else {
24853 phy_a5 = 0x70f7 | (phy_a4 << 8);
24854 }
24855 wlc_phy_rfctrl_override_nphy(pi,
24856 (0x1 << 13),
24857 phy_a5,
24858 (1 << core), 0);
24859 } else {
24860 wlc_phy_rfctrl_override_nphy(pi,
24861 (0x1 << 13),
24862 0x5bf7,
24863 (1 << core), 0);
24864 }
24865 }
24866
24867 if (CHSPEC_IS2G(pi->radio_chanspec))
24868 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24869 else
24870 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24871
24872 m[phy_a7] = 0;
24873 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24874
24875 phy_a2 = 63;
24876
24877 if (cal_mode == CAL_FULL) {
24878 phy_a1 = 25;
24879 phy_a3 = 25;
24880 } else if (cal_mode == CAL_SOFT) {
24881 phy_a1 = 25;
24882 phy_a3 = 25;
24883 } else if (cal_mode == CAL_GCTRL) {
24884 phy_a1 = 63;
24885 phy_a3 = 25;
24886 } else {
24887
24888 phy_a1 = 25;
24889 phy_a3 = 25;
24890 }
24891
24892 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24893 0x29b, (0x1 << 0), (1) << 0);
24894
24895 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24896 0x29b, (0x1 << 0), (0) << 0);
24897
24898 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24899 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24900 0x2a4, (0x1 << 13), (1) << 13);
24901
24902 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24903 0x2a4, (0x1 << 13), (0) << 13);
24904
24905 write_phy_reg(pi, 0x2a1, 0x20);
24906 write_phy_reg(pi, 0x2a2, 0x60);
24907
24908 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24909 0x2a4, (0xf << 4), (9) << 4);
24910
24911 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24912 0x2a4, (0xf << 8), (9) << 8);
24913
24914 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24915 0x2a4, (0xf << 0), (0x2) << 0);
24916
24917 write_phy_reg(pi, 0x2e5, 0x20);
24918 } else {
24919 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24920 0x2a4, (0x1 << 11), (1) << 11);
24921
24922 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24923 0x2a4, (0x1 << 11), (0) << 11);
24924
24925 write_phy_reg(pi, 0x2a1, 0x80);
24926 write_phy_reg(pi, 0x2a2, 0x600);
24927
24928 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24929 0x2a4, (0x7 << 4), (0) << 4);
24930
24931 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24932 0x2a4, (0x7 << 8), (0) << 8);
24933
24934 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24935 0x2a4, (0x7 << 0), (0x3) << 0);
24936
24937 mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24938
24939 }
24940
24941 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24942
24943 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24944
24945 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24946
24947 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24948
24949 write_phy_reg(pi, 0x2be, 1);
24950 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24951
24952 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24953
24954 wlc_phy_table_write_nphy(pi,
24955 (core ==
24956 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24957 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24958 32, &phy_a8);
24959
24960 if (cal_mode != CAL_GCTRL)
24961 wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24962 }
24963 }
24964
wlc_phy_a3_nphy(struct brcms_phy * pi,u8 start_gain,u8 core)24965 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
24966 {
24967 int phy_a1;
24968 int phy_a2;
24969 bool phy_a3;
24970 struct nphy_ipa_txcalgains phy_a4;
24971 bool phy_a5 = false;
24972 bool phy_a6 = true;
24973 s32 phy_a7, phy_a8;
24974 u32 phy_a9;
24975 int phy_a10;
24976 int phy_a12;
24977 u8 phy_a13 = 0;
24978 u8 phy_a14;
24979 u8 *phy_a15 = NULL;
24980
24981 phy_a4.useindex = true;
24982 phy_a12 = start_gain;
24983
24984 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24985
24986 phy_a2 = 20;
24987 phy_a1 = 1;
24988
24989 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24990 if (pi->pubpi.radiorev == 5) {
24991
24992 phy_a15 = pad_gain_codes_used_2057rev5;
24993 phy_a13 =
24994 ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
24995
24996 } else if ((pi->pubpi.radiorev == 7)
24997 || (pi->pubpi.radiorev == 8)) {
24998
24999 phy_a15 = pad_gain_codes_used_2057rev7;
25000 phy_a13 =
25001 ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25002
25003 } else {
25004
25005 phy_a15 = pad_all_gain_codes_2057;
25006 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25007 1;
25008 }
25009
25010 } else {
25011
25012 phy_a15 = pga_all_gain_codes_2057;
25013 phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25014 }
25015
25016 phy_a14 = 0;
25017
25018 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25019 if (CHSPEC_IS2G(pi->radio_chanspec))
25020 phy_a4.gains.pad[core] =
25021 (u16) phy_a15[phy_a12];
25022 else
25023 phy_a4.gains.pga[core] =
25024 (u16) phy_a15[phy_a12];
25025
25026 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25027
25028 wlc_phy_table_read_nphy(pi,
25029 (core ==
25030 PHY_CORE_0 ?
25031 NPHY_TBL_ID_EPSILONTBL0 :
25032 NPHY_TBL_ID_EPSILONTBL1), 1,
25033 63, 32, &phy_a9);
25034
25035 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25036
25037 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25038 (phy_a8 == 4095) || (phy_a8 == -4096));
25039
25040 if (!phy_a6 && (phy_a3 != phy_a5)) {
25041 if (!phy_a3)
25042 phy_a12 -= (u8) phy_a1;
25043 break;
25044 }
25045
25046 if (phy_a3)
25047 phy_a12 += (u8) phy_a1;
25048 else
25049 phy_a12 -= (u8) phy_a1;
25050
25051 if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25052 if (phy_a12 < phy_a14)
25053 phy_a12 = phy_a14;
25054 else
25055 phy_a12 = phy_a13;
25056 break;
25057 }
25058
25059 phy_a6 = false;
25060 phy_a5 = phy_a3;
25061 }
25062
25063 } else {
25064 phy_a2 = 10;
25065 phy_a1 = 8;
25066 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25067 phy_a4.index = (u8) phy_a12;
25068 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25069
25070 wlc_phy_table_read_nphy(pi,
25071 (core ==
25072 PHY_CORE_0 ?
25073 NPHY_TBL_ID_EPSILONTBL0 :
25074 NPHY_TBL_ID_EPSILONTBL1), 1,
25075 63, 32, &phy_a9);
25076
25077 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25078
25079 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25080 (phy_a8 == 4095) || (phy_a8 == -4096));
25081
25082 if (!phy_a6 && (phy_a3 != phy_a5)) {
25083 if (!phy_a3)
25084 phy_a12 -= (u8) phy_a1;
25085 break;
25086 }
25087
25088 if (phy_a3)
25089 phy_a12 += (u8) phy_a1;
25090 else
25091 phy_a12 -= (u8) phy_a1;
25092
25093 if ((phy_a12 < 0) || (phy_a12 > 127)) {
25094 if (phy_a12 < 0)
25095 phy_a12 = 0;
25096 else
25097 phy_a12 = 127;
25098 break;
25099 }
25100
25101 phy_a6 = false;
25102 phy_a5 = phy_a3;
25103 }
25104
25105 }
25106
25107 if (NREV_GE(pi->pubpi.phy_rev, 7))
25108 return (u8) phy_a15[phy_a12];
25109 else
25110 return (u8) phy_a12;
25111
25112 }
25113
wlc_phy_a4(struct brcms_phy * pi,bool full_cal)25114 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25115 {
25116 struct nphy_ipa_txcalgains phy_b1[2];
25117 struct nphy_papd_restore_state phy_b2;
25118 bool phy_b3;
25119 u8 phy_b4;
25120 u8 phy_b5;
25121 s16 phy_b6, phy_b7, phy_b8;
25122 u16 phy_b9;
25123 s16 phy_b10, phy_b11, phy_b12;
25124
25125 phy_b11 = 0;
25126 phy_b12 = 0;
25127 phy_b7 = 0;
25128 phy_b8 = 0;
25129 phy_b6 = 0;
25130
25131 if (pi->nphy_papd_skip == 1)
25132 return;
25133
25134 phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25135 MCTL_EN_MAC));
25136 if (!phy_b3)
25137 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25138
25139 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25140
25141 pi->nphy_force_papd_cal = false;
25142
25143 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25144 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25145 wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25146
25147 pi->nphy_papd_last_cal = pi->sh->now;
25148 pi->nphy_papd_recal_counter++;
25149
25150 phy_b4 = pi->nphy_txpwrctrl;
25151 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25152
25153 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25154 nphy_papd_scaltbl);
25155 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25156 nphy_papd_scaltbl);
25157
25158 phy_b9 = read_phy_reg(pi, 0x01);
25159 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25160
25161 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25162 s32 i, val = 0;
25163 for (i = 0; i < 64; i++)
25164 wlc_phy_table_write_nphy(pi,
25165 ((phy_b5 ==
25166 PHY_CORE_0) ?
25167 NPHY_TBL_ID_EPSILONTBL0 :
25168 NPHY_TBL_ID_EPSILONTBL1), 1,
25169 i, 32, &val);
25170 }
25171
25172 wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25173
25174 phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25175 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25176 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25177
25178 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25179 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25180 if ((pi->pubpi.radiorev == 3)
25181 || (pi->pubpi.radiorev == 4)
25182 || (pi->pubpi.radiorev == 6)) {
25183 pi->nphy_papd_cal_gain_index[phy_b5] =
25184 23;
25185 } else if (pi->pubpi.radiorev == 5) {
25186 pi->nphy_papd_cal_gain_index[phy_b5] =
25187 0;
25188 pi->nphy_papd_cal_gain_index[phy_b5] =
25189 wlc_phy_a3_nphy(
25190 pi,
25191 pi->
25192 nphy_papd_cal_gain_index
25193 [phy_b5],
25194 phy_b5);
25195
25196 } else if ((pi->pubpi.radiorev == 7)
25197 || (pi->pubpi.radiorev == 8)) {
25198
25199 pi->nphy_papd_cal_gain_index[phy_b5] =
25200 0;
25201 pi->nphy_papd_cal_gain_index[phy_b5] =
25202 wlc_phy_a3_nphy(
25203 pi,
25204 pi->
25205 nphy_papd_cal_gain_index
25206 [phy_b5],
25207 phy_b5);
25208
25209 }
25210
25211 phy_b1[phy_b5].gains.pad[phy_b5] =
25212 pi->nphy_papd_cal_gain_index[phy_b5];
25213
25214 } else {
25215 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25216 pi->nphy_papd_cal_gain_index[phy_b5] =
25217 wlc_phy_a3_nphy(
25218 pi,
25219 pi->
25220 nphy_papd_cal_gain_index
25221 [phy_b5], phy_b5);
25222 phy_b1[phy_b5].gains.pga[phy_b5] =
25223 pi->nphy_papd_cal_gain_index[phy_b5];
25224 }
25225 } else {
25226 phy_b1[phy_b5].useindex = true;
25227 phy_b1[phy_b5].index = 16;
25228 phy_b1[phy_b5].index =
25229 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25230 phy_b5);
25231
25232 pi->nphy_papd_cal_gain_index[phy_b5] =
25233 15 - ((phy_b1[phy_b5].index) >> 3);
25234 }
25235
25236 switch (pi->nphy_papd_cal_type) {
25237 case 0:
25238 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25239 break;
25240 case 1:
25241 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25242 break;
25243 }
25244
25245 if (NREV_GE(pi->pubpi.phy_rev, 7))
25246 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25247 }
25248
25249 if (NREV_LT(pi->pubpi.phy_rev, 7))
25250 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25251
25252 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25253 int eps_offset = 0;
25254
25255 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25256 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25257 if (pi->pubpi.radiorev == 3)
25258 eps_offset = -2;
25259 else if (pi->pubpi.radiorev == 5)
25260 eps_offset = 3;
25261 else
25262 eps_offset = -1;
25263 } else {
25264 eps_offset = 2;
25265 }
25266
25267 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25268 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25269 phy_b10 = 0;
25270 if ((pi->pubpi.radiorev == 3) ||
25271 (pi->pubpi.radiorev == 4) ||
25272 (pi->pubpi.radiorev == 6)) {
25273 phy_b12 = -(
25274 nphy_papd_padgain_dlt_2g_2057rev3n4
25275 [phy_b8] + 1) / 2;
25276 phy_b10 = -1;
25277 } else if (pi->pubpi.radiorev == 5) {
25278 phy_b12 = -(
25279 nphy_papd_padgain_dlt_2g_2057rev5
25280 [phy_b8] + 1) / 2;
25281 } else if ((pi->pubpi.radiorev == 7) ||
25282 (pi->pubpi.radiorev == 8)) {
25283 phy_b12 = -(
25284 nphy_papd_padgain_dlt_2g_2057rev7
25285 [phy_b8] + 1) / 2;
25286 }
25287 } else {
25288 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25289 if ((pi->pubpi.radiorev == 3) ||
25290 (pi->pubpi.radiorev == 4) ||
25291 (pi->pubpi.radiorev == 6))
25292 phy_b11 =
25293 -(nphy_papd_pgagain_dlt_5g_2057
25294 [phy_b7]
25295 + 1) / 2;
25296 else if ((pi->pubpi.radiorev == 7)
25297 || (pi->pubpi.radiorev == 8))
25298 phy_b11 = -(
25299 nphy_papd_pgagain_dlt_5g_2057rev7
25300 [phy_b7] + 1) / 2;
25301
25302 phy_b10 = -9;
25303 }
25304
25305 if (CHSPEC_IS2G(pi->radio_chanspec))
25306 phy_b6 =
25307 -60 + 27 + eps_offset + phy_b12 +
25308 phy_b10;
25309 else
25310 phy_b6 =
25311 -60 + 27 + eps_offset + phy_b11 +
25312 phy_b10;
25313
25314 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25315 0x29c, (0x1ff << 7), (phy_b6) << 7);
25316
25317 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25318 } else {
25319 if (NREV_LT(pi->pubpi.phy_rev, 5))
25320 eps_offset = 4;
25321 else
25322 eps_offset = 2;
25323
25324 phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25325
25326 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25327 phy_b11 =
25328 -(nphy_papd_pga_gain_delta_ipa_2g[
25329 phy_b7] +
25330 1) / 2;
25331 phy_b10 = 0;
25332 } else {
25333 phy_b11 =
25334 -(nphy_papd_pga_gain_delta_ipa_5g[
25335 phy_b7] +
25336 1) / 2;
25337 phy_b10 = -9;
25338 }
25339
25340 phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25341
25342 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25343 0x29c, (0x1ff << 7), (phy_b6) << 7);
25344
25345 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25346 }
25347 }
25348
25349 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25350 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25351
25352 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25353 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25354
25355 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25356 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25357 0x2a4, (0x1 << 13), (0) << 13);
25358
25359 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25360 0x2a4, (0x1 << 13), (0) << 13);
25361
25362 } else {
25363 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25364 0x2a4, (0x1 << 11), (0) << 11);
25365
25366 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25367 0x2a4, (0x1 << 11), (0) << 11);
25368
25369 }
25370 pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25371
25372 write_phy_reg(pi, 0x01, phy_b9);
25373
25374 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25375
25376 wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25377 if (phy_b4 == PHY_TPC_HW_OFF) {
25378 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25379 (s8) (pi->nphy_txpwrindex[0].
25380 index_internal), false);
25381 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25382 (s8) (pi->nphy_txpwrindex[1].
25383 index_internal), false);
25384 }
25385
25386 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25387
25388 if (!phy_b3)
25389 wlapi_enable_mac(pi->sh->physhim);
25390 }
25391
wlc_phy_cal_perical_nphy_run(struct brcms_phy * pi,u8 caltype)25392 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25393 {
25394 struct nphy_txgains target_gain;
25395 u8 tx_pwr_ctrl_state;
25396 bool fullcal = true;
25397 bool restore_tx_gain = false;
25398 bool mphase;
25399
25400 if (PHY_MUTED(pi))
25401 return;
25402
25403 if (caltype == PHY_PERICAL_AUTO)
25404 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25405 else if (caltype == PHY_PERICAL_PARTIAL)
25406 fullcal = false;
25407
25408 if (pi->cal_type_override != PHY_PERICAL_AUTO)
25409 fullcal =
25410 (pi->cal_type_override ==
25411 PHY_PERICAL_FULL) ? true : false;
25412
25413 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT) {
25414 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25415 wlc_phy_cal_perical_mphase_restart(pi);
25416 }
25417
25418 if (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)
25419 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25420
25421 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25422
25423 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25424
25425 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25426 (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25427 pi->nphy_cal_orig_pwr_idx[0] =
25428 (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25429 pi->nphy_cal_orig_pwr_idx[1] =
25430 (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25431
25432 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25433 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25434 0x110, 16,
25435 pi->nphy_cal_orig_tx_gain);
25436 } else {
25437 pi->nphy_cal_orig_tx_gain[0] = 0;
25438 pi->nphy_cal_orig_tx_gain[1] = 0;
25439 }
25440 }
25441 target_gain = wlc_phy_get_tx_gain_nphy(pi);
25442 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25443 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25444
25445 if (pi->antsel_type == ANTSEL_2x3)
25446 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25447
25448 mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25449 if (!mphase) {
25450
25451 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25452 wlc_phy_precal_txgain_nphy(pi);
25453 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25454 restore_tx_gain = true;
25455
25456 target_gain = pi->nphy_cal_target_gain;
25457 }
25458 if (0 ==
25459 wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25460 mphase)) {
25461 if (PHY_IPA(pi))
25462 wlc_phy_a4(pi, true);
25463
25464 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25465 wlapi_enable_mac(pi->sh->physhim);
25466 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25467 10000);
25468 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25469 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25470
25471 if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25472 (pi->first_cal_after_assoc ||
25473 (pi->cal_type_override ==
25474 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25475 wlc_phy_savecal_nphy(pi);
25476
25477 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25478
25479 pi->nphy_perical_last = pi->sh->now;
25480 }
25481 }
25482 if (caltype != PHY_PERICAL_AUTO)
25483 wlc_phy_rssi_cal_nphy(pi);
25484
25485 if (pi->first_cal_after_assoc
25486 || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25487 pi->first_cal_after_assoc = false;
25488 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25489 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25490 }
25491
25492 if (NREV_GE(pi->pubpi.phy_rev, 3))
25493 wlc_phy_radio205x_vcocal_nphy(pi);
25494 } else {
25495 switch (pi->mphase_cal_phase_id) {
25496 case MPHASE_CAL_STATE_INIT:
25497 pi->nphy_perical_last = pi->sh->now;
25498 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25499
25500 if (NREV_GE(pi->pubpi.phy_rev, 3))
25501 wlc_phy_precal_txgain_nphy(pi);
25502
25503 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25504 pi->mphase_cal_phase_id++;
25505 break;
25506
25507 case MPHASE_CAL_STATE_TXPHASE0:
25508 case MPHASE_CAL_STATE_TXPHASE1:
25509 case MPHASE_CAL_STATE_TXPHASE2:
25510 case MPHASE_CAL_STATE_TXPHASE3:
25511 case MPHASE_CAL_STATE_TXPHASE4:
25512 case MPHASE_CAL_STATE_TXPHASE5:
25513 if ((pi->radar_percal_mask & 0x10) != 0)
25514 pi->nphy_rxcal_active = true;
25515
25516 if (wlc_phy_cal_txiqlo_nphy
25517 (pi, pi->nphy_cal_target_gain, fullcal,
25518 true) != 0) {
25519
25520 wlc_phy_cal_perical_mphase_reset(pi);
25521 break;
25522 }
25523
25524 if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25525 (pi->mphase_cal_phase_id ==
25526 MPHASE_CAL_STATE_TXPHASE4))
25527 pi->mphase_cal_phase_id += 2;
25528 else
25529 pi->mphase_cal_phase_id++;
25530 break;
25531
25532 case MPHASE_CAL_STATE_PAPDCAL:
25533 if ((pi->radar_percal_mask & 0x2) != 0)
25534 pi->nphy_rxcal_active = true;
25535
25536 if (PHY_IPA(pi))
25537 wlc_phy_a4(pi, true);
25538
25539 pi->mphase_cal_phase_id++;
25540 break;
25541
25542 case MPHASE_CAL_STATE_RXCAL:
25543 if ((pi->radar_percal_mask & 0x1) != 0)
25544 pi->nphy_rxcal_active = true;
25545 if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25546 (pi->first_cal_after_assoc ||
25547 (pi->cal_type_override ==
25548 PHY_PERICAL_FULL)) ? 2 : 0,
25549 false) == 0)
25550 wlc_phy_savecal_nphy(pi);
25551
25552 pi->mphase_cal_phase_id++;
25553 break;
25554
25555 case MPHASE_CAL_STATE_RSSICAL:
25556 if ((pi->radar_percal_mask & 0x4) != 0)
25557 pi->nphy_rxcal_active = true;
25558 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25559 wlc_phy_rssi_cal_nphy(pi);
25560
25561 if (NREV_GE(pi->pubpi.phy_rev, 3))
25562 wlc_phy_radio205x_vcocal_nphy(pi);
25563
25564 restore_tx_gain = true;
25565
25566 if (pi->first_cal_after_assoc)
25567 pi->mphase_cal_phase_id++;
25568 else
25569 wlc_phy_cal_perical_mphase_reset(pi);
25570
25571 break;
25572
25573 case MPHASE_CAL_STATE_IDLETSSI:
25574 if ((pi->radar_percal_mask & 0x8) != 0)
25575 pi->nphy_rxcal_active = true;
25576
25577 if (pi->first_cal_after_assoc) {
25578 pi->first_cal_after_assoc = false;
25579 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25580 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25581 }
25582
25583 wlc_phy_cal_perical_mphase_reset(pi);
25584 break;
25585
25586 default:
25587 wlc_phy_cal_perical_mphase_reset(pi);
25588 break;
25589 }
25590 }
25591
25592 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25593 if (restore_tx_gain) {
25594 if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25595
25596 wlc_phy_txpwr_index_nphy(pi, 1,
25597 pi->
25598 nphy_cal_orig_pwr_idx
25599 [0], false);
25600 wlc_phy_txpwr_index_nphy(pi, 2,
25601 pi->
25602 nphy_cal_orig_pwr_idx
25603 [1], false);
25604
25605 pi->nphy_txpwrindex[0].index = -1;
25606 pi->nphy_txpwrindex[1].index = -1;
25607 } else {
25608 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25609 (s8) (pi->
25610 nphy_txpwrindex
25611 [0].
25612 index_internal),
25613 false);
25614 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25615 (s8) (pi->
25616 nphy_txpwrindex
25617 [1].
25618 index_internal),
25619 false);
25620 }
25621 }
25622 }
25623
25624 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25625 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25626 wlapi_enable_mac(pi->sh->physhim);
25627 }
25628
25629 int
wlc_phy_cal_txiqlo_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,bool fullcal,bool mphase)25630 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25631 bool fullcal, bool mphase)
25632 {
25633 u16 val;
25634 u16 tbl_buf[11];
25635 u8 cal_cnt;
25636 u16 cal_cmd;
25637 u8 num_cals, max_cal_cmds;
25638 u16 core_no, cal_type;
25639 u16 diq_start = 0;
25640 u8 phy_bw;
25641 u16 max_val;
25642 u16 tone_freq;
25643 u16 gain_save[2];
25644 u16 cal_gain[2];
25645 struct nphy_iqcal_params cal_params[2];
25646 u32 tbl_len;
25647 const void *tbl_ptr;
25648 bool ladder_updated[2];
25649 u8 mphase_cal_lastphase = 0;
25650 int bcmerror = 0;
25651 bool phyhang_avoid_state = false;
25652
25653 static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25654 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25655 0x1902,
25656 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25657 0x6407
25658 };
25659
25660 static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25661 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25662 0x3200,
25663 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25664 0x6407
25665 };
25666
25667 static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25668 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25669 0x1202,
25670 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25671 0x4707
25672 };
25673
25674 static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25675 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25676 0x2300,
25677 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25678 0x4707
25679 };
25680
25681 static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
25682 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25683 0x0000
25684 };
25685
25686 static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25687 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25688 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25689 };
25690
25691 static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25692 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25693 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25694 };
25695
25696 static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25697 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25698 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25699 0x0000
25700 };
25701
25702 static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25703 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25704 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25705 };
25706
25707 static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25708 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25709 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25710 };
25711
25712 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25713
25714 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25715 phyhang_avoid_state = pi->phyhang_avoid;
25716 pi->phyhang_avoid = false;
25717 }
25718
25719 if (CHSPEC_IS40(pi->radio_chanspec))
25720 phy_bw = 40;
25721 else
25722 phy_bw = 20;
25723
25724 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25725
25726 for (core_no = 0; core_no <= 1; core_no++) {
25727 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25728 &cal_params[core_no]);
25729 cal_gain[core_no] = cal_params[core_no].cal_gain;
25730 }
25731
25732 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25733
25734 wlc_phy_txcal_radio_setup_nphy(pi);
25735
25736 wlc_phy_txcal_physetup_nphy(pi);
25737
25738 ladder_updated[0] = ladder_updated[1] = false;
25739 if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25740 (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25741 && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25742
25743 if (phy_bw == 40) {
25744 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25745 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25746 } else {
25747 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25748 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25749 }
25750 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25751 16, tbl_ptr);
25752
25753 if (phy_bw == 40) {
25754 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25755 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25756 } else {
25757 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25758 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25759 }
25760 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25761 16, tbl_ptr);
25762 }
25763
25764 if (NREV_GE(pi->pubpi.phy_rev, 7))
25765 write_phy_reg(pi, 0xc2, 0x8ad9);
25766 else
25767 write_phy_reg(pi, 0xc2, 0x8aa9);
25768
25769 max_val = 250;
25770 tone_freq = (phy_bw == 20) ? 2500 : 5000;
25771
25772 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25773 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25774 bcmerror = 0;
25775 } else {
25776 bcmerror =
25777 wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25778 false);
25779 }
25780
25781 if (bcmerror == 0) {
25782
25783 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25784 tbl_ptr = pi->mphase_txcal_bestcoeffs;
25785 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25786 if (NREV_LT(pi->pubpi.phy_rev, 3))
25787 tbl_len -= 2;
25788 } else {
25789 if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25790
25791 tbl_ptr = pi->nphy_txiqlocal_bestc;
25792 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25793 if (NREV_LT(pi->pubpi.phy_rev, 3))
25794 tbl_len -= 2;
25795 } else {
25796
25797 fullcal = true;
25798
25799 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25800 tbl_ptr =
25801 tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25802 tbl_len = ARRAY_SIZE(
25803 tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25804 } else {
25805 tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25806 tbl_len = ARRAY_SIZE(
25807 tbl_tx_iqlo_cal_startcoefs);
25808 }
25809 }
25810 }
25811 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25812 16, tbl_ptr);
25813
25814 if (fullcal) {
25815 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25816 ARRAY_SIZE(
25817 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25818 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25819 } else {
25820 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25821 ARRAY_SIZE(
25822 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25823 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25824 }
25825
25826 if (mphase) {
25827 cal_cnt = pi->mphase_txcal_cmdidx;
25828 if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25829 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25830 else
25831 num_cals = max_cal_cmds;
25832 } else {
25833 cal_cnt = 0;
25834 num_cals = max_cal_cmds;
25835 }
25836
25837 for (; cal_cnt < num_cals; cal_cnt++) {
25838
25839 if (fullcal) {
25840 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25841 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25842 [cal_cnt] :
25843 tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25844 } else {
25845 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25846 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25847 cal_cnt]
25848 : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25849 }
25850
25851 core_no = ((cal_cmd & 0x3000) >> 12);
25852 cal_type = ((cal_cmd & 0x0F00) >> 8);
25853
25854 if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25855 (NREV_IS(pi->pubpi.phy_rev, 5) &&
25856 PHY_IPA(pi)
25857 && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25858 if (!ladder_updated[core_no]) {
25859 wlc_phy_update_txcal_ladder_nphy(
25860 pi,
25861 core_no);
25862 ladder_updated[core_no] = true;
25863 }
25864 }
25865
25866 val =
25867 (cal_params[core_no].
25868 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25869 write_phy_reg(pi, 0xc1, val);
25870
25871 if ((cal_type == 1) || (cal_type == 3)
25872 || (cal_type == 4)) {
25873
25874 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25875 1, 69 + core_no, 16,
25876 tbl_buf);
25877
25878 diq_start = tbl_buf[0];
25879
25880 tbl_buf[0] = 0;
25881 wlc_phy_table_write_nphy(pi,
25882 NPHY_TBL_ID_IQLOCAL, 1,
25883 69 + core_no, 16,
25884 tbl_buf);
25885 }
25886
25887 write_phy_reg(pi, 0xc0, cal_cmd);
25888
25889 SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25890 20000);
25891 if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25892 "HW error: txiq calib"))
25893 return -EIO;
25894
25895 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25896 tbl_len, 96, 16, tbl_buf);
25897 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25898 tbl_len, 64, 16, tbl_buf);
25899
25900 if ((cal_type == 1) || (cal_type == 3)
25901 || (cal_type == 4)) {
25902
25903 tbl_buf[0] = diq_start;
25904
25905 }
25906
25907 }
25908
25909 if (mphase) {
25910 pi->mphase_txcal_cmdidx = num_cals;
25911 if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25912 pi->mphase_txcal_cmdidx = 0;
25913 }
25914
25915 mphase_cal_lastphase =
25916 (NREV_LE(pi->pubpi.phy_rev, 2)) ?
25917 MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25918
25919 if (!mphase
25920 || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25921
25922 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25923 16, tbl_buf);
25924 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25925 16, tbl_buf);
25926
25927 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25928
25929 tbl_buf[0] = 0;
25930 tbl_buf[1] = 0;
25931 tbl_buf[2] = 0;
25932 tbl_buf[3] = 0;
25933
25934 }
25935 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25936 16, tbl_buf);
25937
25938 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25939 16, tbl_buf);
25940 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25941 16, tbl_buf);
25942
25943 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25944 16, tbl_buf);
25945
25946 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25947 if (NREV_LT(pi->pubpi.phy_rev, 3))
25948 tbl_len -= 2;
25949
25950 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25951 tbl_len, 96, 16,
25952 pi->nphy_txiqlocal_bestc);
25953
25954 pi->nphy_txiqlocal_coeffsvalid = true;
25955 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25956 } else {
25957 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25958 if (NREV_LT(pi->pubpi.phy_rev, 3))
25959 tbl_len -= 2;
25960
25961 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25962 tbl_len, 96, 16,
25963 pi->mphase_txcal_bestcoeffs);
25964 }
25965
25966 wlc_phy_stopplayback_nphy(pi);
25967
25968 write_phy_reg(pi, 0xc2, 0x0000);
25969
25970 }
25971
25972 wlc_phy_txcal_phycleanup_nphy(pi);
25973
25974 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
25975 gain_save);
25976
25977 wlc_phy_txcal_radio_cleanup_nphy(pi);
25978
25979 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25980 if (!mphase
25981 || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
25982 wlc_phy_tx_iq_war_nphy(pi);
25983 }
25984
25985 if (NREV_GE(pi->pubpi.phy_rev, 4))
25986 pi->phyhang_avoid = phyhang_avoid_state;
25987
25988 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25989
25990 return bcmerror;
25991 }
25992
wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy * pi)25993 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
25994 {
25995 u16 tbl_buf[7];
25996
25997 if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
25998 (pi->nphy_txiqlocal_coeffsvalid)) {
25999 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26000 ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26001
26002 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26003 (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26004 (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26005 (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26006
26007 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26008 16, pi->nphy_txiqlocal_bestc);
26009
26010 tbl_buf[0] = 0;
26011 tbl_buf[1] = 0;
26012 tbl_buf[2] = 0;
26013 tbl_buf[3] = 0;
26014 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26015 16, tbl_buf);
26016
26017 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26018 16,
26019 &pi->nphy_txiqlocal_bestc[5]);
26020
26021 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26022 16,
26023 &pi->nphy_txiqlocal_bestc[5]);
26024 }
26025 }
26026 }
26027
26028 void
wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy * pi,u8 write,struct nphy_iq_comp * pcomp)26029 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26030 struct nphy_iq_comp *pcomp)
26031 {
26032 if (write) {
26033 write_phy_reg(pi, 0x9a, pcomp->a0);
26034 write_phy_reg(pi, 0x9b, pcomp->b0);
26035 write_phy_reg(pi, 0x9c, pcomp->a1);
26036 write_phy_reg(pi, 0x9d, pcomp->b1);
26037 } else {
26038 pcomp->a0 = read_phy_reg(pi, 0x9a);
26039 pcomp->b0 = read_phy_reg(pi, 0x9b);
26040 pcomp->a1 = read_phy_reg(pi, 0x9c);
26041 pcomp->b1 = read_phy_reg(pi, 0x9d);
26042 }
26043 }
26044
26045 void
wlc_phy_rx_iq_est_nphy(struct brcms_phy * pi,struct phy_iq_est * est,u16 num_samps,u8 wait_time,u8 wait_for_crs)26046 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26047 u16 num_samps, u8 wait_time, u8 wait_for_crs)
26048 {
26049 u8 core;
26050
26051 write_phy_reg(pi, 0x12b, num_samps);
26052 mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26053 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26054 (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26055
26056 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26057
26058 SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26059 10000);
26060 if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26061 "HW error: rxiq est"))
26062 return;
26063
26064 if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26065 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26066 est[core].i_pwr =
26067 (read_phy_reg(pi,
26068 NPHY_IqestipwrAccHi(core)) << 16)
26069 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26070 est[core].q_pwr =
26071 (read_phy_reg(pi,
26072 NPHY_IqestqpwrAccHi(core)) << 16)
26073 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26074 est[core].iq_prod =
26075 (read_phy_reg(pi,
26076 NPHY_IqestIqAccHi(core)) << 16) |
26077 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26078 }
26079 }
26080 }
26081
26082 #define CAL_RETRY_CNT 2
wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy * pi,u8 core_mask)26083 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26084 {
26085 u8 curr_core;
26086 struct phy_iq_est est[PHY_CORE_MAX];
26087 struct nphy_iq_comp old_comp, new_comp;
26088 s32 iq = 0;
26089 u32 ii = 0, qq = 0;
26090 s16 iq_nbits, qq_nbits, brsh, arsh;
26091 s32 a, b, temp;
26092 int bcmerror = 0;
26093 uint cal_retry = 0;
26094
26095 if (core_mask == 0x0)
26096 return;
26097
26098 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26099 new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26100 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26101
26102 cal_try:
26103 wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26104
26105 new_comp = old_comp;
26106
26107 for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26108
26109 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26110 iq = est[curr_core].iq_prod;
26111 ii = est[curr_core].i_pwr;
26112 qq = est[curr_core].q_pwr;
26113 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26114 iq = est[curr_core].iq_prod;
26115 ii = est[curr_core].i_pwr;
26116 qq = est[curr_core].q_pwr;
26117 } else {
26118 continue;
26119 }
26120
26121 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26122 bcmerror = -EBADE;
26123 break;
26124 }
26125
26126 iq_nbits = wlc_phy_nbits(iq);
26127 qq_nbits = wlc_phy_nbits(qq);
26128
26129 arsh = 10 - (30 - iq_nbits);
26130 if (arsh >= 0) {
26131 a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26132 temp = (s32) (ii >> arsh);
26133 if (temp == 0) {
26134 bcmerror = -EBADE;
26135 break;
26136 }
26137 } else {
26138 a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26139 temp = (s32) (ii << -arsh);
26140 if (temp == 0) {
26141 bcmerror = -EBADE;
26142 break;
26143 }
26144 }
26145
26146 a /= temp;
26147
26148 brsh = qq_nbits - 31 + 20;
26149 if (brsh >= 0) {
26150 b = (qq << (31 - qq_nbits));
26151 temp = (s32) (ii >> brsh);
26152 if (temp == 0) {
26153 bcmerror = -EBADE;
26154 break;
26155 }
26156 } else {
26157 b = (qq << (31 - qq_nbits));
26158 temp = (s32) (ii << -brsh);
26159 if (temp == 0) {
26160 bcmerror = -EBADE;
26161 break;
26162 }
26163 }
26164 b /= temp;
26165 b -= a * a;
26166 b = (s32) int_sqrt((unsigned long) b);
26167 b -= (1 << 10);
26168
26169 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26170 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26171 new_comp.a0 = (s16) a & 0x3ff;
26172 new_comp.b0 = (s16) b & 0x3ff;
26173 } else {
26174
26175 new_comp.a0 = (s16) b & 0x3ff;
26176 new_comp.b0 = (s16) a & 0x3ff;
26177 }
26178 }
26179 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26180 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26181 new_comp.a1 = (s16) a & 0x3ff;
26182 new_comp.b1 = (s16) b & 0x3ff;
26183 } else {
26184
26185 new_comp.a1 = (s16) b & 0x3ff;
26186 new_comp.b1 = (s16) a & 0x3ff;
26187 }
26188 }
26189 }
26190
26191 if (bcmerror != 0) {
26192 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26193
26194 if (cal_retry < CAL_RETRY_CNT) {
26195 cal_retry++;
26196 goto cal_try;
26197 }
26198
26199 new_comp = old_comp;
26200 }
26201
26202 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26203 }
26204
wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy * pi,u8 rx_core)26205 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26206 {
26207 u16 offtune_val;
26208 u16 bias_g = 0;
26209 u16 bias_a = 0;
26210
26211 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26212 if (rx_core == PHY_CORE_0) {
26213 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26214 pi->tx_rx_cal_radio_saveregs[0] =
26215 read_radio_reg(pi,
26216 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26217 pi->tx_rx_cal_radio_saveregs[1] =
26218 read_radio_reg(pi,
26219 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26220
26221 write_radio_reg(pi,
26222 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26223 0x3);
26224 write_radio_reg(pi,
26225 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26226 0xaf);
26227
26228 } else {
26229 pi->tx_rx_cal_radio_saveregs[0] =
26230 read_radio_reg(pi,
26231 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26232 pi->tx_rx_cal_radio_saveregs[1] =
26233 read_radio_reg(pi,
26234 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26235
26236 write_radio_reg(
26237 pi,
26238 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26239 0x3);
26240 write_radio_reg(
26241 pi,
26242 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26243 0x7f);
26244 }
26245
26246 } else {
26247 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26248 pi->tx_rx_cal_radio_saveregs[0] =
26249 read_radio_reg(pi,
26250 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26251 pi->tx_rx_cal_radio_saveregs[1] =
26252 read_radio_reg(pi,
26253 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26254
26255 write_radio_reg(
26256 pi,
26257 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26258 0x3);
26259 write_radio_reg(
26260 pi,
26261 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26262 0xaf);
26263
26264 } else {
26265 pi->tx_rx_cal_radio_saveregs[0] =
26266 read_radio_reg(pi,
26267 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26268 pi->tx_rx_cal_radio_saveregs[1] =
26269 read_radio_reg(pi,
26270 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26271
26272 write_radio_reg(pi,
26273 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26274 0x3);
26275 write_radio_reg(pi,
26276 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26277 0x7f);
26278 }
26279 }
26280
26281 } else {
26282 if (rx_core == PHY_CORE_0) {
26283 pi->tx_rx_cal_radio_saveregs[0] =
26284 read_radio_reg(pi,
26285 RADIO_2056_TX_RXIQCAL_TXMUX |
26286 RADIO_2056_TX1);
26287 pi->tx_rx_cal_radio_saveregs[1] =
26288 read_radio_reg(pi,
26289 RADIO_2056_RX_RXIQCAL_RXMUX |
26290 RADIO_2056_RX0);
26291
26292 if (pi->pubpi.radiorev >= 5) {
26293 pi->tx_rx_cal_radio_saveregs[2] =
26294 read_radio_reg(pi,
26295 RADIO_2056_RX_RXSPARE2 |
26296 RADIO_2056_RX0);
26297 pi->tx_rx_cal_radio_saveregs[3] =
26298 read_radio_reg(pi,
26299 RADIO_2056_TX_TXSPARE2 |
26300 RADIO_2056_TX1);
26301 }
26302
26303 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26304
26305 if (pi->pubpi.radiorev >= 5) {
26306 pi->tx_rx_cal_radio_saveregs[4] =
26307 read_radio_reg(pi,
26308 RADIO_2056_RX_LNAA_MASTER
26309 | RADIO_2056_RX0);
26310
26311 write_radio_reg(
26312 pi,
26313 RADIO_2056_RX_LNAA_MASTER
26314 | RADIO_2056_RX0, 0x40);
26315
26316 write_radio_reg(pi,
26317 RADIO_2056_TX_TXSPARE2 |
26318 RADIO_2056_TX1, bias_a);
26319
26320 write_radio_reg(pi,
26321 RADIO_2056_RX_RXSPARE2 |
26322 RADIO_2056_RX0, bias_a);
26323 } else {
26324 pi->tx_rx_cal_radio_saveregs[4] =
26325 read_radio_reg(pi,
26326 RADIO_2056_RX_LNAA_TUNE
26327 | RADIO_2056_RX0);
26328
26329 offtune_val =
26330 (pi->tx_rx_cal_radio_saveregs
26331 [2] & 0xF0) >> 8;
26332 offtune_val =
26333 (offtune_val <= 0x7) ? 0xF : 0;
26334
26335 mod_radio_reg(pi,
26336 RADIO_2056_RX_LNAA_TUNE |
26337 RADIO_2056_RX0, 0xF0,
26338 (offtune_val << 8));
26339 }
26340
26341 write_radio_reg(pi,
26342 RADIO_2056_TX_RXIQCAL_TXMUX |
26343 RADIO_2056_TX1, 0x9);
26344 write_radio_reg(pi,
26345 RADIO_2056_RX_RXIQCAL_RXMUX |
26346 RADIO_2056_RX0, 0x9);
26347 } else {
26348 if (pi->pubpi.radiorev >= 5) {
26349 pi->tx_rx_cal_radio_saveregs[4] =
26350 read_radio_reg(
26351 pi,
26352 RADIO_2056_RX_LNAG_MASTER
26353 | RADIO_2056_RX0);
26354
26355 write_radio_reg(
26356 pi,
26357 RADIO_2056_RX_LNAG_MASTER
26358 | RADIO_2056_RX0, 0x40);
26359
26360 write_radio_reg(
26361 pi,
26362 RADIO_2056_TX_TXSPARE2
26363 |
26364 RADIO_2056_TX1, bias_g);
26365
26366 write_radio_reg(
26367 pi,
26368 RADIO_2056_RX_RXSPARE2
26369 |
26370 RADIO_2056_RX0, bias_g);
26371
26372 } else {
26373 pi->tx_rx_cal_radio_saveregs[4] =
26374 read_radio_reg(
26375 pi,
26376 RADIO_2056_RX_LNAG_TUNE
26377 | RADIO_2056_RX0);
26378
26379 offtune_val =
26380 (pi->
26381 tx_rx_cal_radio_saveregs[2] &
26382 0xF0) >> 8;
26383 offtune_val =
26384 (offtune_val <= 0x7) ? 0xF : 0;
26385
26386 mod_radio_reg(pi,
26387 RADIO_2056_RX_LNAG_TUNE |
26388 RADIO_2056_RX0, 0xF0,
26389 (offtune_val << 8));
26390 }
26391
26392 write_radio_reg(pi,
26393 RADIO_2056_TX_RXIQCAL_TXMUX |
26394 RADIO_2056_TX1, 0x6);
26395 write_radio_reg(pi,
26396 RADIO_2056_RX_RXIQCAL_RXMUX |
26397 RADIO_2056_RX0, 0x6);
26398 }
26399
26400 } else {
26401 pi->tx_rx_cal_radio_saveregs[0] =
26402 read_radio_reg(pi,
26403 RADIO_2056_TX_RXIQCAL_TXMUX |
26404 RADIO_2056_TX0);
26405 pi->tx_rx_cal_radio_saveregs[1] =
26406 read_radio_reg(pi,
26407 RADIO_2056_RX_RXIQCAL_RXMUX |
26408 RADIO_2056_RX1);
26409
26410 if (pi->pubpi.radiorev >= 5) {
26411 pi->tx_rx_cal_radio_saveregs[2] =
26412 read_radio_reg(pi,
26413 RADIO_2056_RX_RXSPARE2 |
26414 RADIO_2056_RX1);
26415 pi->tx_rx_cal_radio_saveregs[3] =
26416 read_radio_reg(pi,
26417 RADIO_2056_TX_TXSPARE2 |
26418 RADIO_2056_TX0);
26419 }
26420
26421 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26422
26423 if (pi->pubpi.radiorev >= 5) {
26424 pi->tx_rx_cal_radio_saveregs[4] =
26425 read_radio_reg(
26426 pi,
26427 RADIO_2056_RX_LNAA_MASTER
26428 | RADIO_2056_RX1);
26429
26430 write_radio_reg(
26431 pi,
26432 RADIO_2056_RX_LNAA_MASTER |
26433 RADIO_2056_RX1, 0x40);
26434
26435 write_radio_reg(
26436 pi,
26437 RADIO_2056_TX_TXSPARE2
26438 |
26439 RADIO_2056_TX0, bias_a);
26440
26441 write_radio_reg(
26442 pi,
26443 RADIO_2056_RX_RXSPARE2
26444 |
26445 RADIO_2056_RX1, bias_a);
26446 } else {
26447 pi->tx_rx_cal_radio_saveregs[4] =
26448 read_radio_reg(
26449 pi,
26450 RADIO_2056_RX_LNAA_TUNE
26451 | RADIO_2056_RX1);
26452
26453 offtune_val =
26454 (pi->
26455 tx_rx_cal_radio_saveregs[2] &
26456 0xF0) >> 8;
26457 offtune_val =
26458 (offtune_val <= 0x7) ? 0xF : 0;
26459
26460 mod_radio_reg(pi,
26461 RADIO_2056_RX_LNAA_TUNE |
26462 RADIO_2056_RX1, 0xF0,
26463 (offtune_val << 8));
26464 }
26465
26466 write_radio_reg(pi,
26467 RADIO_2056_TX_RXIQCAL_TXMUX |
26468 RADIO_2056_TX0, 0x9);
26469 write_radio_reg(pi,
26470 RADIO_2056_RX_RXIQCAL_RXMUX |
26471 RADIO_2056_RX1, 0x9);
26472 } else {
26473 if (pi->pubpi.radiorev >= 5) {
26474 pi->tx_rx_cal_radio_saveregs[4] =
26475 read_radio_reg(
26476 pi,
26477 RADIO_2056_RX_LNAG_MASTER
26478 | RADIO_2056_RX1);
26479
26480 write_radio_reg(
26481 pi,
26482 RADIO_2056_RX_LNAG_MASTER
26483 | RADIO_2056_RX1, 0x40);
26484
26485 write_radio_reg(
26486 pi,
26487 RADIO_2056_TX_TXSPARE2
26488 |
26489 RADIO_2056_TX0, bias_g);
26490
26491 write_radio_reg(
26492 pi,
26493 RADIO_2056_RX_RXSPARE2
26494 |
26495 RADIO_2056_RX1, bias_g);
26496 } else {
26497 pi->tx_rx_cal_radio_saveregs[4] =
26498 read_radio_reg(
26499 pi,
26500 RADIO_2056_RX_LNAG_TUNE
26501 | RADIO_2056_RX1);
26502
26503 offtune_val =
26504 (pi->
26505 tx_rx_cal_radio_saveregs[2] &
26506 0xF0) >> 8;
26507 offtune_val =
26508 (offtune_val <= 0x7) ? 0xF : 0;
26509
26510 mod_radio_reg(pi,
26511 RADIO_2056_RX_LNAG_TUNE |
26512 RADIO_2056_RX1, 0xF0,
26513 (offtune_val << 8));
26514 }
26515
26516 write_radio_reg(pi,
26517 RADIO_2056_TX_RXIQCAL_TXMUX |
26518 RADIO_2056_TX0, 0x6);
26519 write_radio_reg(pi,
26520 RADIO_2056_RX_RXIQCAL_RXMUX |
26521 RADIO_2056_RX1, 0x6);
26522 }
26523 }
26524 }
26525 }
26526
wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy * pi,u8 rx_core)26527 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26528 {
26529 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26530 if (rx_core == PHY_CORE_0) {
26531 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26532 write_radio_reg(
26533 pi,
26534 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26535 pi->
26536 tx_rx_cal_radio_saveregs[0]);
26537 write_radio_reg(
26538 pi,
26539 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26540 pi->
26541 tx_rx_cal_radio_saveregs[1]);
26542
26543 } else {
26544 write_radio_reg(
26545 pi,
26546 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26547 pi->
26548 tx_rx_cal_radio_saveregs[0]);
26549 write_radio_reg(
26550 pi,
26551 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26552 pi->
26553 tx_rx_cal_radio_saveregs[1]);
26554 }
26555
26556 } else {
26557 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26558 write_radio_reg(
26559 pi,
26560 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26561 pi->
26562 tx_rx_cal_radio_saveregs[0]);
26563 write_radio_reg(
26564 pi,
26565 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26566 pi->
26567 tx_rx_cal_radio_saveregs[1]);
26568
26569 } else {
26570 write_radio_reg(
26571 pi,
26572 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26573 pi->
26574 tx_rx_cal_radio_saveregs[0]);
26575 write_radio_reg(
26576 pi,
26577 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26578 pi->
26579 tx_rx_cal_radio_saveregs[1]);
26580 }
26581 }
26582
26583 } else {
26584 if (rx_core == PHY_CORE_0) {
26585 write_radio_reg(pi,
26586 RADIO_2056_TX_RXIQCAL_TXMUX |
26587 RADIO_2056_TX1,
26588 pi->tx_rx_cal_radio_saveregs[0]);
26589
26590 write_radio_reg(pi,
26591 RADIO_2056_RX_RXIQCAL_RXMUX |
26592 RADIO_2056_RX0,
26593 pi->tx_rx_cal_radio_saveregs[1]);
26594
26595 if (pi->pubpi.radiorev >= 5) {
26596 write_radio_reg(pi,
26597 RADIO_2056_RX_RXSPARE2 |
26598 RADIO_2056_RX0,
26599 pi->
26600 tx_rx_cal_radio_saveregs[2]);
26601
26602 write_radio_reg(pi,
26603 RADIO_2056_TX_TXSPARE2 |
26604 RADIO_2056_TX1,
26605 pi->
26606 tx_rx_cal_radio_saveregs[3]);
26607 }
26608
26609 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26610 if (pi->pubpi.radiorev >= 5)
26611 write_radio_reg(
26612 pi,
26613 RADIO_2056_RX_LNAA_MASTER
26614 | RADIO_2056_RX0,
26615 pi->
26616 tx_rx_cal_radio_saveregs
26617 [4]);
26618 else
26619 write_radio_reg(
26620 pi,
26621 RADIO_2056_RX_LNAA_TUNE
26622 | RADIO_2056_RX0,
26623 pi->
26624 tx_rx_cal_radio_saveregs
26625 [4]);
26626 } else {
26627 if (pi->pubpi.radiorev >= 5)
26628 write_radio_reg(
26629 pi,
26630 RADIO_2056_RX_LNAG_MASTER
26631 | RADIO_2056_RX0,
26632 pi->
26633 tx_rx_cal_radio_saveregs
26634 [4]);
26635 else
26636 write_radio_reg(
26637 pi,
26638 RADIO_2056_RX_LNAG_TUNE
26639 | RADIO_2056_RX0,
26640 pi->
26641 tx_rx_cal_radio_saveregs
26642 [4]);
26643 }
26644
26645 } else {
26646 write_radio_reg(pi,
26647 RADIO_2056_TX_RXIQCAL_TXMUX |
26648 RADIO_2056_TX0,
26649 pi->tx_rx_cal_radio_saveregs[0]);
26650
26651 write_radio_reg(pi,
26652 RADIO_2056_RX_RXIQCAL_RXMUX |
26653 RADIO_2056_RX1,
26654 pi->tx_rx_cal_radio_saveregs[1]);
26655
26656 if (pi->pubpi.radiorev >= 5) {
26657 write_radio_reg(pi,
26658 RADIO_2056_RX_RXSPARE2 |
26659 RADIO_2056_RX1,
26660 pi->
26661 tx_rx_cal_radio_saveregs[2]);
26662
26663 write_radio_reg(pi,
26664 RADIO_2056_TX_TXSPARE2 |
26665 RADIO_2056_TX0,
26666 pi->
26667 tx_rx_cal_radio_saveregs[3]);
26668 }
26669
26670 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26671 if (pi->pubpi.radiorev >= 5)
26672 write_radio_reg(
26673 pi,
26674 RADIO_2056_RX_LNAA_MASTER
26675 | RADIO_2056_RX1,
26676 pi->
26677 tx_rx_cal_radio_saveregs
26678 [4]);
26679 else
26680 write_radio_reg(
26681 pi,
26682 RADIO_2056_RX_LNAA_TUNE
26683 | RADIO_2056_RX1,
26684 pi->
26685 tx_rx_cal_radio_saveregs
26686 [4]);
26687 } else {
26688 if (pi->pubpi.radiorev >= 5)
26689 write_radio_reg(
26690 pi,
26691 RADIO_2056_RX_LNAG_MASTER
26692 | RADIO_2056_RX1,
26693 pi->
26694 tx_rx_cal_radio_saveregs
26695 [4]);
26696 else
26697 write_radio_reg(
26698 pi,
26699 RADIO_2056_RX_LNAG_TUNE
26700 | RADIO_2056_RX1,
26701 pi->
26702 tx_rx_cal_radio_saveregs
26703 [4]);
26704 }
26705 }
26706 }
26707 }
26708
wlc_phy_rxcal_physetup_nphy(struct brcms_phy * pi,u8 rx_core)26709 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26710 {
26711 u8 tx_core;
26712 u16 rx_antval, tx_antval;
26713
26714 if (NREV_GE(pi->pubpi.phy_rev, 7))
26715 tx_core = rx_core;
26716 else
26717 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26718
26719 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26720 pi->tx_rx_cal_phy_saveregs[1] =
26721 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26722 pi->tx_rx_cal_phy_saveregs[2] =
26723 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26724 pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26725 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26726 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26727 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26728 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26729 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26730 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26731 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26732 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26733 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26734 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26735 }
26736
26737 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26738 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26739 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26740 0x29b, (0x1 << 0), (0) << 0);
26741
26742 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26743 0x29b, (0x1 << 0), (0) << 0);
26744
26745 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26746
26747 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26748
26749 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26750
26751 } else {
26752
26753 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26754 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26755 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26756 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26757 }
26758
26759 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26760 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26761 (0x1 << 2), (0x1 << 2));
26762 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26763 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26764 (0x1 << 0) | (0x1 << 1), 0);
26765 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26766 0x8f : 0xa5,
26767 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26768 }
26769
26770 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26771 RADIO_MIMO_CORESEL_CORE1 |
26772 RADIO_MIMO_CORESEL_CORE2);
26773
26774 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26775 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26776 0, 0, 0,
26777 NPHY_REV7_RFCTRLOVERRIDE_ID0);
26778 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26779 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26780 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26781 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26782 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26783 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26784 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26785 NPHY_REV7_RFCTRLOVERRIDE_ID2);
26786 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26787 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26788 if (CHSPEC_IS40(pi->radio_chanspec))
26789 wlc_phy_rfctrl_override_nphy_rev7(
26790 pi,
26791 (0x1 << 7),
26792 2, 0, 0,
26793 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26794 else
26795 wlc_phy_rfctrl_override_nphy_rev7(
26796 pi,
26797 (0x1 << 7),
26798 0, 0, 0,
26799 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26800
26801 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26802 0, 0, 0,
26803 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26804 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26805 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26806 } else {
26807 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26808 }
26809
26810 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26811
26812 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26813
26814 wlc_phy_rfctrlintc_override_nphy(pi,
26815 NPHY_RfctrlIntc_override_TRSW,
26816 0x1, rx_core + 1);
26817 } else {
26818
26819 if (rx_core == PHY_CORE_0) {
26820 rx_antval = 0x1;
26821 tx_antval = 0x8;
26822 } else {
26823 rx_antval = 0x4;
26824 tx_antval = 0x2;
26825 }
26826
26827 wlc_phy_rfctrlintc_override_nphy(pi,
26828 NPHY_RfctrlIntc_override_TRSW,
26829 rx_antval, rx_core + 1);
26830 wlc_phy_rfctrlintc_override_nphy(pi,
26831 NPHY_RfctrlIntc_override_TRSW,
26832 tx_antval, tx_core + 1);
26833 }
26834 }
26835
wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy * pi,u8 rx_core)26836 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26837 {
26838
26839 write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26840 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26841 pi->tx_rx_cal_phy_saveregs[1]);
26842 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26843 pi->tx_rx_cal_phy_saveregs[2]);
26844 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26845 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26846
26847 write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26848 write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26849 write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26850 write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26851 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26852 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26853 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26854 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26855 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26856 }
26857
26858 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26859 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26860 }
26861
26862 static void
wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)26863 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26864 u16 *rxgain, u8 cal_type)
26865 {
26866
26867 u16 num_samps;
26868 struct phy_iq_est est[PHY_CORE_MAX];
26869 u8 tx_core;
26870 struct nphy_iq_comp save_comp, zero_comp;
26871 u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26872 thresh_pwr = 10000;
26873 s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26874 bool gainctrl_done = false;
26875 u8 mix_tia_gain = 3;
26876 s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26877 s8 curr_gaintbl_index = 3;
26878 u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26879 const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26880 u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26881 int fine_gain_idx;
26882 s8 txpwrindex;
26883 u16 nphy_rxcal_txgain[2];
26884
26885 if (NREV_GE(pi->pubpi.phy_rev, 7))
26886 tx_core = rx_core;
26887 else
26888 tx_core = 1 - rx_core;
26889
26890 num_samps = 1024;
26891 desired_log2_pwr = 13;
26892
26893 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26894 zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26895 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26896
26897 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26898 if (NREV_GE(pi->pubpi.phy_rev, 7))
26899 mix_tia_gain = 3;
26900 else if (NREV_GE(pi->pubpi.phy_rev, 4))
26901 mix_tia_gain = 4;
26902 else
26903 mix_tia_gain = 6;
26904 if (NREV_GE(pi->pubpi.phy_rev, 7))
26905 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26906 else
26907 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26908 } else {
26909 if (NREV_GE(pi->pubpi.phy_rev, 7))
26910 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26911 else
26912 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26913 }
26914
26915 do {
26916
26917 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26918 0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26919 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26920 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26921 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26922 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26923 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26924
26925 if (NREV_GE(pi->pubpi.phy_rev, 7))
26926 wlc_phy_rfctrl_override_1tomany_nphy(
26927 pi,
26928 NPHY_REV7_RfctrlOverride_cmd_rxgain,
26929 ((lpf_biq1 << 12) |
26930 (lpf_biq0 << 8) |
26931 (mix_tia_gain << 4) | (lna2 << 2)
26932 | lna1), 0x3, 0);
26933 else
26934 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26935 ((hpvga << 12) |
26936 (lpf_biq1 << 10) |
26937 (lpf_biq0 << 8) |
26938 (mix_tia_gain << 4) |
26939 (lna2 << 2) | lna1), 0x3,
26940 0);
26941
26942 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26943
26944 if (txpwrindex == -1) {
26945 nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26946 nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26947 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26948 2, 0x110, 16,
26949 nphy_rxcal_txgain);
26950 } else {
26951 wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26952 false);
26953 }
26954
26955 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26956 NPHY_RXCAL_TONEFREQ_40MHz :
26957 NPHY_RXCAL_TONEFREQ_20MHz,
26958 NPHY_RXCAL_TONEAMP, 0, cal_type, false);
26959
26960 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
26961 i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr, num_samps);
26962 q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr, num_samps);
26963 curr_pwr = i_pwr + q_pwr;
26964
26965 switch (gainctrl_dirn) {
26966 case NPHY_RXCAL_GAIN_INIT:
26967 if (curr_pwr > thresh_pwr) {
26968 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
26969 prev_gaintbl_index = curr_gaintbl_index;
26970 curr_gaintbl_index--;
26971 } else {
26972 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
26973 prev_gaintbl_index = curr_gaintbl_index;
26974 curr_gaintbl_index++;
26975 }
26976 break;
26977
26978 case NPHY_RXCAL_GAIN_UP:
26979 if (curr_pwr > thresh_pwr) {
26980 gainctrl_done = true;
26981 optim_pwr = prev_pwr;
26982 optim_gaintbl_index = prev_gaintbl_index;
26983 } else {
26984 prev_gaintbl_index = curr_gaintbl_index;
26985 curr_gaintbl_index++;
26986 }
26987 break;
26988
26989 case NPHY_RXCAL_GAIN_DOWN:
26990 if (curr_pwr > thresh_pwr) {
26991 prev_gaintbl_index = curr_gaintbl_index;
26992 curr_gaintbl_index--;
26993 } else {
26994 gainctrl_done = true;
26995 optim_pwr = curr_pwr;
26996 optim_gaintbl_index = curr_gaintbl_index;
26997 }
26998 break;
26999
27000 default:
27001 break;
27002 }
27003
27004 if ((curr_gaintbl_index < 0) ||
27005 (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27006 gainctrl_done = true;
27007 optim_pwr = curr_pwr;
27008 optim_gaintbl_index = prev_gaintbl_index;
27009 } else {
27010 prev_pwr = curr_pwr;
27011 }
27012
27013 wlc_phy_stopplayback_nphy(pi);
27014 } while (!gainctrl_done);
27015
27016 hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27017 lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27018 lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27019 lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27020 lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27021 txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27022
27023 actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27024 delta_pwr = desired_log2_pwr - actual_log2_pwr;
27025
27026 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27027 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27028
27029 if (fine_gain_idx + (int)lpf_biq0 > 10)
27030 lpf_biq1 = 10 - lpf_biq0;
27031 else
27032 lpf_biq1 = (u16) max(fine_gain_idx, 0);
27033
27034 wlc_phy_rfctrl_override_1tomany_nphy(
27035 pi,
27036 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27037 ((lpf_biq1 << 12) |
27038 (lpf_biq0 << 8) |
27039 (mix_tia_gain << 4) |
27040 (lna2 << 2) | lna1), 0x3,
27041 0);
27042 } else {
27043 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27044 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27045 ((hpvga << 12) |
27046 (lpf_biq1 << 10) |
27047 (lpf_biq0 << 8) |
27048 (mix_tia_gain << 4) |
27049 (lna2 << 2) |
27050 lna1), 0x3, 0);
27051 }
27052
27053 if (rxgain != NULL) {
27054 *rxgain++ = lna1;
27055 *rxgain++ = lna2;
27056 *rxgain++ = mix_tia_gain;
27057 *rxgain++ = lpf_biq0;
27058 *rxgain++ = lpf_biq1;
27059 *rxgain = hpvga;
27060 }
27061
27062 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27063 }
27064
27065 static void
wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy * pi,u8 rx_core,u16 * rxgain,u8 cal_type)27066 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27067 u8 cal_type)
27068 {
27069 wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27070 }
27071
27072 static u8
wlc_phy_rc_sweep_nphy(struct brcms_phy * pi,u8 core_idx,u8 loopback_type)27073 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27074 {
27075 u32 target_bws[2] = { 9500, 21000 };
27076 u32 ref_tones[2] = { 3000, 6000 };
27077 u32 target_bw, ref_tone;
27078
27079 u32 target_pwr_ratios[2] = { 28606, 18468 };
27080 u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27081
27082 u16 start_rccal_ovr_val = 128;
27083 u16 txlpf_rccal_lpc_ovr_val = 128;
27084 u16 rxlpf_rccal_hpc_ovr_val = 159;
27085
27086 u16 orig_txlpf_rccal_lpc_ovr_val;
27087 u16 orig_rxlpf_rccal_hpc_ovr_val;
27088 u16 radio_addr_offset_rx;
27089 u16 radio_addr_offset_tx;
27090 u16 orig_dcBypass;
27091 u16 orig_RxStrnFilt40Num[6];
27092 u16 orig_RxStrnFilt40Den[4];
27093 u16 orig_rfctrloverride[2];
27094 u16 orig_rfctrlauxreg[2];
27095 u16 orig_rfctrlrssiothers;
27096 u16 tx_lpf_bw = 4;
27097
27098 u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27099 u16 lpf_hpc = 7, hpvga_hpc = 7;
27100
27101 s8 rccal_stepsize;
27102 u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27103 u32 ref_iq_vals = 0, target_iq_vals = 0;
27104 u16 num_samps, log_num_samps = 10;
27105 struct phy_iq_est est[PHY_CORE_MAX];
27106
27107 if (NREV_GE(pi->pubpi.phy_rev, 7))
27108 return 0;
27109
27110 num_samps = (1 << log_num_samps);
27111
27112 if (CHSPEC_IS40(pi->radio_chanspec)) {
27113 target_bw = target_bws[1];
27114 target_pwr_ratio = target_pwr_ratios[1];
27115 ref_tone = ref_tones[1];
27116 rx_lpf_bw = rx_lpf_bws[1];
27117 } else {
27118 target_bw = target_bws[0];
27119 target_pwr_ratio = target_pwr_ratios[0];
27120 ref_tone = ref_tones[0];
27121 rx_lpf_bw = rx_lpf_bws[0];
27122 }
27123
27124 if (core_idx == 0) {
27125 radio_addr_offset_rx = RADIO_2056_RX0;
27126 radio_addr_offset_tx =
27127 (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27128 } else {
27129 radio_addr_offset_rx = RADIO_2056_RX1;
27130 radio_addr_offset_tx =
27131 (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27132 }
27133
27134 orig_txlpf_rccal_lpc_ovr_val =
27135 read_radio_reg(pi,
27136 (RADIO_2056_TX_TXLPF_RCCAL |
27137 radio_addr_offset_tx));
27138 orig_rxlpf_rccal_hpc_ovr_val =
27139 read_radio_reg(pi,
27140 (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27141 radio_addr_offset_rx));
27142
27143 orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27144
27145 orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27146 orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27147 orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27148 orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27149 orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27150 orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27151 orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27152 orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27153 orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27154 orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27155
27156 orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27157 orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27158 orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27159 orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27160 orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27161
27162 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27163 txlpf_rccal_lpc_ovr_val);
27164
27165 write_radio_reg(pi,
27166 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27167 rxlpf_rccal_hpc_ovr_val);
27168
27169 mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27170
27171 write_phy_reg(pi, 0x267, 0x02d4);
27172 write_phy_reg(pi, 0x268, 0x0000);
27173 write_phy_reg(pi, 0x269, 0x0000);
27174 write_phy_reg(pi, 0x26a, 0x0000);
27175 write_phy_reg(pi, 0x26b, 0x0000);
27176 write_phy_reg(pi, 0x26c, 0x02d4);
27177 write_phy_reg(pi, 0x26d, 0x0000);
27178 write_phy_reg(pi, 0x26e, 0x0000);
27179 write_phy_reg(pi, 0x26f, 0x0000);
27180 write_phy_reg(pi, 0x270, 0x0000);
27181
27182 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27183 or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27184 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27185 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27186
27187 mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27188 (0x7 << 10), (tx_lpf_bw << 10));
27189 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27190 (0x7 << 0), (hpvga_hpc << 0));
27191 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27192 (0x7 << 4), (lpf_hpc << 4));
27193 mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27194 (0x7 << 8), (rx_lpf_bw << 8));
27195
27196 rccal_stepsize = 16;
27197 rccal_val = start_rccal_ovr_val + rccal_stepsize;
27198
27199 while (rccal_stepsize >= 0) {
27200 write_radio_reg(pi,
27201 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27202 radio_addr_offset_rx), rccal_val);
27203
27204 if (rccal_stepsize == 16) {
27205
27206 wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27207 0, 1, false);
27208 udelay(2);
27209
27210 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27211
27212 if (core_idx == 0)
27213 ref_iq_vals =
27214 max_t(u32, (est[0].i_pwr +
27215 est[0].q_pwr) >>
27216 (log_num_samps + 1),
27217 1);
27218 else
27219 ref_iq_vals =
27220 max_t(u32, (est[1].i_pwr +
27221 est[1].q_pwr) >>
27222 (log_num_samps + 1),
27223 1);
27224
27225 wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27226 0, 1, false);
27227 udelay(2);
27228 }
27229
27230 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27231
27232 if (core_idx == 0)
27233 target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27234 (log_num_samps + 1);
27235 else
27236 target_iq_vals =
27237 (est[1].i_pwr +
27238 est[1].q_pwr) >> (log_num_samps + 1);
27239
27240 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27241
27242 if (rccal_stepsize == 0)
27243 rccal_stepsize--;
27244 else if (rccal_stepsize == 1) {
27245 last_rccal_val = rccal_val;
27246 rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27247 last_pwr_ratio = pwr_ratio;
27248 rccal_stepsize--;
27249 } else {
27250 rccal_stepsize = (rccal_stepsize >> 1);
27251 rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27252 rccal_stepsize : (-rccal_stepsize));
27253 }
27254
27255 if (rccal_stepsize == -1) {
27256 best_rccal_val =
27257 (abs((int)last_pwr_ratio -
27258 (int)target_pwr_ratio) <
27259 abs((int)pwr_ratio -
27260 (int)target_pwr_ratio)) ? last_rccal_val :
27261 rccal_val;
27262
27263 if (CHSPEC_IS40(pi->radio_chanspec)) {
27264 if ((best_rccal_val > 140)
27265 || (best_rccal_val < 135))
27266 best_rccal_val = 138;
27267 } else {
27268 if ((best_rccal_val > 142)
27269 || (best_rccal_val < 137))
27270 best_rccal_val = 140;
27271 }
27272
27273 write_radio_reg(pi,
27274 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27275 radio_addr_offset_rx), best_rccal_val);
27276 }
27277 }
27278
27279 wlc_phy_stopplayback_nphy(pi);
27280
27281 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27282 orig_txlpf_rccal_lpc_ovr_val);
27283 write_radio_reg(pi,
27284 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27285 orig_rxlpf_rccal_hpc_ovr_val);
27286
27287 mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27288
27289 write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27290 write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27291 write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27292 write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27293 write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27294 write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27295 write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27296 write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27297 write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27298 write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27299
27300 write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27301 write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27302 write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27303 write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27304 write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27305
27306 pi->nphy_anarxlpf_adjusted = false;
27307
27308 return best_rccal_val - 0x80;
27309 }
27310
27311 #define WAIT_FOR_SCOPE 4000
wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy * pi,struct nphy_txgains target_gain,u8 cal_type,bool debug)27312 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27313 struct nphy_txgains target_gain,
27314 u8 cal_type, bool debug)
27315 {
27316 u16 orig_BBConfig;
27317 u8 core_no, rx_core;
27318 u8 best_rccal[2];
27319 u16 gain_save[2];
27320 u16 cal_gain[2];
27321 struct nphy_iqcal_params cal_params[2];
27322 u8 rxcore_state;
27323 s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27324 s8 txlpf_idac;
27325 bool phyhang_avoid_state = false;
27326 bool skip_rxiqcal = false;
27327
27328 orig_BBConfig = read_phy_reg(pi, 0x01);
27329 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27330
27331 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27332
27333 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27334 phyhang_avoid_state = pi->phyhang_avoid;
27335 pi->phyhang_avoid = false;
27336 }
27337
27338 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27339
27340 for (core_no = 0; core_no <= 1; core_no++) {
27341 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27342 &cal_params[core_no]);
27343 cal_gain[core_no] = cal_params[core_no].cal_gain;
27344 }
27345
27346 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27347
27348 rxcore_state = wlc_phy_rxcore_getstate_nphy(
27349 (struct brcms_phy_pub *) pi);
27350
27351 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27352
27353 skip_rxiqcal =
27354 ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27355
27356 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27357
27358 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27359
27360 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27361
27362 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27363
27364 wlc_phy_tx_tone_nphy(pi,
27365 (CHSPEC_IS40(
27366 pi->radio_chanspec)) ?
27367 NPHY_RXCAL_TONEFREQ_40MHz :
27368 NPHY_RXCAL_TONEFREQ_20MHz,
27369 NPHY_RXCAL_TONEAMP, 0, cal_type,
27370 false);
27371
27372 if (debug)
27373 mdelay(WAIT_FOR_SCOPE);
27374
27375 wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27376 wlc_phy_stopplayback_nphy(pi);
27377 }
27378
27379 if (((cal_type == 1) || (cal_type == 2))
27380 && NREV_LT(pi->pubpi.phy_rev, 7)) {
27381
27382 if (rx_core == PHY_CORE_1) {
27383
27384 if (rxcore_state == 1)
27385 wlc_phy_rxcore_setstate_nphy(
27386 (struct brcms_phy_pub *) pi, 3);
27387
27388 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27389 1);
27390
27391 best_rccal[rx_core] =
27392 wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27393 pi->nphy_rccal_value = best_rccal[rx_core];
27394
27395 if (rxcore_state == 1)
27396 wlc_phy_rxcore_setstate_nphy(
27397 (struct brcms_phy_pub *) pi,
27398 rxcore_state);
27399 }
27400 }
27401
27402 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27403
27404 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27405 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27406 }
27407
27408 if ((cal_type == 1) || (cal_type == 2)) {
27409
27410 best_rccal[0] = best_rccal[1];
27411 write_radio_reg(pi,
27412 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27413 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27414
27415 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27416 rxlpf_rccal_hpc =
27417 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27418 txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27419
27420 if (PHY_IPA(pi)) {
27421 txlpf_rccal_lpc +=
27422 (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27423 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27424 0x0e : 0x13;
27425 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27426 TXLPF_IDAC_4, txlpf_idac);
27427 }
27428
27429 rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27430 0);
27431 txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27432 0);
27433
27434 write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27435 ((rx_core ==
27436 PHY_CORE_0) ? RADIO_2056_RX0 :
27437 RADIO_2056_RX1)),
27438 (rxlpf_rccal_hpc | 0x80));
27439
27440 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27441 ((rx_core ==
27442 PHY_CORE_0) ? RADIO_2056_TX0 :
27443 RADIO_2056_TX1)),
27444 (txlpf_rccal_lpc | 0x80));
27445 }
27446 }
27447
27448 write_phy_reg(pi, 0x01, orig_BBConfig);
27449
27450 wlc_phy_resetcca_nphy(pi);
27451
27452 if (NREV_GE(pi->pubpi.phy_rev, 7))
27453 wlc_phy_rfctrl_override_1tomany_nphy(
27454 pi,
27455 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27456 0, 0x3, 1);
27457 else
27458 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27459
27460 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27461
27462 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27463 gain_save);
27464
27465 if (NREV_GE(pi->pubpi.phy_rev, 4))
27466 pi->phyhang_avoid = phyhang_avoid_state;
27467
27468 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27469
27470 return 0;
27471 }
27472
27473 static int
wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy * pi,struct nphy_txgains target_gain,bool debug)27474 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27475 struct nphy_txgains target_gain, bool debug)
27476 {
27477 struct phy_iq_est est[PHY_CORE_MAX];
27478 u8 core_num, rx_core, tx_core;
27479 u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27480 u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27481 u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27482 s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27483 s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27484 u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27485 u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27486 u16 num_samps;
27487 u32 i_pwr, q_pwr, tot_pwr[3];
27488 u8 gain_pass, use_hpf_num;
27489 u16 mask, val1, val2;
27490 u16 core_no;
27491 u16 gain_save[2];
27492 u16 cal_gain[2];
27493 struct nphy_iqcal_params cal_params[2];
27494 u8 phy_bw;
27495 int bcmerror = 0;
27496 bool first_playtone = true;
27497
27498 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27499
27500 if (NREV_LT(pi->pubpi.phy_rev, 2))
27501 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27502
27503 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27504
27505 for (core_no = 0; core_no <= 1; core_no++) {
27506 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27507 &cal_params[core_no]);
27508 cal_gain[core_no] = cal_params[core_no].cal_gain;
27509 }
27510
27511 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27512
27513 num_samps = 1024;
27514 desired_log2_pwr = 13;
27515
27516 for (core_num = 0; core_num < 2; core_num++) {
27517
27518 rx_core = core_num;
27519 tx_core = 1 - core_num;
27520
27521 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27522 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27523 0xa6 : 0xa7);
27524 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27525 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27526 0x91 : 0x92);
27527 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27528 0x91 : 0x92);
27529
27530 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27531 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27532
27533 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27534 ((0x1 << 1) | (0x1 << 2)));
27535 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27536
27537 if (((pi->nphy_rxcalparams) & 0xff000000))
27538 write_phy_reg(pi,
27539 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27540 (CHSPEC_IS5G(pi->radio_chanspec) ?
27541 0x140 : 0x110));
27542 else
27543 write_phy_reg(pi,
27544 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27545 (CHSPEC_IS5G(pi->radio_chanspec) ?
27546 0x180 : 0x120));
27547
27548 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27549 (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27550 0x114));
27551
27552 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27553 if (rx_core == PHY_CORE_0) {
27554 val1 = RADIO_2055_COUPLE_RX_MASK;
27555 val2 = RADIO_2055_COUPLE_TX_MASK;
27556 } else {
27557 val1 = RADIO_2055_COUPLE_TX_MASK;
27558 val2 = RADIO_2055_COUPLE_RX_MASK;
27559 }
27560
27561 if ((pi->nphy_rxcalparams & 0x10000)) {
27562 mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27563 val1);
27564 mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27565 val2);
27566 }
27567
27568 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27569
27570 if (debug)
27571 mdelay(WAIT_FOR_SCOPE);
27572
27573 if (gain_pass < 3) {
27574 curr_lna = lna_vals[gain_pass];
27575 curr_hpf1 = hpf1_vals[gain_pass];
27576 curr_hpf2 = hpf2_vals[gain_pass];
27577 } else {
27578
27579 if (tot_pwr[1] > 10000) {
27580 curr_lna = lna_vals[2];
27581 curr_hpf1 = hpf1_vals[2];
27582 curr_hpf2 = hpf2_vals[2];
27583 use_hpf_num = 1;
27584 curr_hpf = curr_hpf1;
27585 actual_log2_pwr =
27586 wlc_phy_nbits(tot_pwr[2]);
27587 } else {
27588 if (tot_pwr[0] > 10000) {
27589 curr_lna = lna_vals[1];
27590 curr_hpf1 = hpf1_vals[1];
27591 curr_hpf2 = hpf2_vals[1];
27592 use_hpf_num = 1;
27593 curr_hpf = curr_hpf1;
27594 actual_log2_pwr =
27595 wlc_phy_nbits(
27596 tot_pwr[1]);
27597 } else {
27598 curr_lna = lna_vals[0];
27599 curr_hpf1 = hpf1_vals[0];
27600 curr_hpf2 = hpf2_vals[0];
27601 use_hpf_num = 2;
27602 curr_hpf = curr_hpf2;
27603 actual_log2_pwr =
27604 wlc_phy_nbits(
27605 tot_pwr[0]);
27606 }
27607 }
27608
27609 hpf_change = desired_log2_pwr - actual_log2_pwr;
27610 curr_hpf += hpf_change;
27611 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27612 if (use_hpf_num == 1)
27613 curr_hpf1 = curr_hpf;
27614 else
27615 curr_hpf2 = curr_hpf;
27616 }
27617
27618 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27619 ((curr_hpf2 << 8) |
27620 (curr_hpf1 << 4) |
27621 (curr_lna << 2)), 0x3, 0);
27622 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27623
27624 wlc_phy_stopplayback_nphy(pi);
27625
27626 if (first_playtone) {
27627 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27628 (u16) (pi->nphy_rxcalparams &
27629 0xffff), 0, 0, true);
27630 first_playtone = false;
27631 } else {
27632 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27633 40 : 20;
27634 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27635 0, 0, 0, true);
27636 }
27637
27638 if (bcmerror == 0) {
27639 if (gain_pass < 3) {
27640
27641 wlc_phy_rx_iq_est_nphy(pi, est,
27642 num_samps, 32,
27643 0);
27644 i_pwr = DIV_ROUND_CLOSEST(est[rx_core].i_pwr,
27645 num_samps);
27646 q_pwr = DIV_ROUND_CLOSEST(est[rx_core].q_pwr,
27647 num_samps);
27648 tot_pwr[gain_pass] = i_pwr + q_pwr;
27649 } else {
27650
27651 wlc_phy_calc_rx_iq_comp_nphy(pi,
27652 (1 <<
27653 rx_core));
27654 }
27655
27656 wlc_phy_stopplayback_nphy(pi);
27657 }
27658
27659 if (bcmerror != 0)
27660 break;
27661 }
27662
27663 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27664 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27665
27666 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27667 0x92, orig_RfctrlIntcTx);
27668 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27669 0x92, orig_RfctrlIntcRx);
27670 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27671 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27672 0xa7, orig_AfectrlCore);
27673 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27674
27675 if (bcmerror != 0)
27676 break;
27677 }
27678
27679 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27680 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27681
27682 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27683 gain_save);
27684
27685 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27686
27687 return bcmerror;
27688 }
27689
27690 int
wlc_phy_cal_rxiq_nphy(struct brcms_phy * pi,struct nphy_txgains target_gain,u8 cal_type,bool debug)27691 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27692 u8 cal_type, bool debug)
27693 {
27694 if (NREV_GE(pi->pubpi.phy_rev, 7))
27695 cal_type = 0;
27696
27697 if (NREV_GE(pi->pubpi.phy_rev, 3))
27698 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27699 debug);
27700 else
27701 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27702 }
27703
wlc_phy_txpwr_fixpower_nphy(struct brcms_phy * pi)27704 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27705 {
27706 uint core;
27707 u32 txgain;
27708 u16 rad_gain, dac_gain, bbmult, m1m2;
27709 u8 txpi[2], chan_freq_range;
27710 s32 rfpwr_offset;
27711
27712 if (pi->phyhang_avoid)
27713 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27714
27715 if (pi->sh->sromrev < 4) {
27716 txpi[0] = txpi[1] = 72;
27717 } else {
27718
27719 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27720 switch (chan_freq_range) {
27721 case WL_CHAN_FREQ_RANGE_2G:
27722 case WL_CHAN_FREQ_RANGE_5GL:
27723 case WL_CHAN_FREQ_RANGE_5GM:
27724 case WL_CHAN_FREQ_RANGE_5GH:
27725 txpi[0] = 0;
27726 txpi[1] = 0;
27727 break;
27728 default:
27729 txpi[0] = txpi[1] = 91;
27730 break;
27731 }
27732 }
27733
27734 if (NREV_GE(pi->pubpi.phy_rev, 7))
27735 txpi[0] = txpi[1] = 30;
27736 else if (NREV_GE(pi->pubpi.phy_rev, 3))
27737 txpi[0] = txpi[1] = 40;
27738
27739 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27740
27741 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27742 (txpi[1] < 40) || (txpi[1] > 100))
27743 txpi[0] = txpi[1] = 91;
27744 }
27745
27746 pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27747 pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27748 pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27749 pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27750
27751 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27752 uint phyrev = pi->pubpi.phy_rev;
27753
27754 if (NREV_GE(phyrev, 3)) {
27755 if (PHY_IPA(pi)) {
27756 u32 *tx_gaintbl =
27757 wlc_phy_get_ipa_gaintbl_nphy(pi);
27758 txgain = tx_gaintbl[txpi[core]];
27759 } else {
27760 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27761 if (NREV_IS(phyrev, 3)) {
27762 txgain =
27763 nphy_tpc_5GHz_txgain_rev3
27764 [txpi[core]];
27765 } else if (NREV_IS(phyrev, 4)) {
27766 txgain = (
27767 pi->srom_fem5g.extpagain ==
27768 3) ?
27769 nphy_tpc_5GHz_txgain_HiPwrEPA
27770 [txpi[core]] :
27771 nphy_tpc_5GHz_txgain_rev4
27772 [txpi[core]];
27773 } else {
27774 txgain =
27775 nphy_tpc_5GHz_txgain_rev5
27776 [txpi[core]];
27777 }
27778 } else {
27779 if (NREV_GE(phyrev, 5) &&
27780 (pi->srom_fem2g.extpagain == 3)) {
27781 txgain =
27782 nphy_tpc_txgain_HiPwrEPA
27783 [txpi[core]];
27784 } else {
27785 txgain = nphy_tpc_txgain_rev3
27786 [txpi[core]];
27787 }
27788 }
27789 }
27790 } else {
27791 txgain = nphy_tpc_txgain[txpi[core]];
27792 }
27793
27794 if (NREV_GE(phyrev, 3))
27795 rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27796 else
27797 rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27798
27799 if (NREV_GE(phyrev, 7))
27800 dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27801 else
27802 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27803
27804 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27805
27806 if (NREV_GE(phyrev, 3))
27807 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27808 0xa5), (0x1 << 8), (0x1 << 8));
27809 else
27810 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27811
27812 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27813
27814 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27815 &rad_gain);
27816
27817 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27818 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27819 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27820 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27821
27822 if (PHY_IPA(pi)) {
27823 wlc_phy_table_read_nphy(pi,
27824 (core ==
27825 PHY_CORE_0 ?
27826 NPHY_TBL_ID_CORE1TXPWRCTL :
27827 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27828 576 + txpi[core], 32,
27829 &rfpwr_offset);
27830
27831 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27832 0x29b, (0x1ff << 4),
27833 ((s16) rfpwr_offset) << 4);
27834
27835 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27836 0x29b, (0x1 << 2), (1) << 2);
27837
27838 }
27839 }
27840
27841 and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27842
27843 if (pi->phyhang_avoid)
27844 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27845 }
27846
27847 static void
wlc_phy_txpwr_nphy_srom_convert(u8 * srom_max,u16 * pwr_offset,u8 tmp_max_pwr,u8 rate_start,u8 rate_end)27848 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27849 u8 tmp_max_pwr, u8 rate_start,
27850 u8 rate_end)
27851 {
27852 u8 rate;
27853 u8 word_num, nibble_num;
27854 u8 tmp_nibble;
27855
27856 for (rate = rate_start; rate <= rate_end; rate++) {
27857 word_num = (rate - rate_start) >> 2;
27858 nibble_num = (rate - rate_start) & 0x3;
27859 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27860
27861 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27862 }
27863 }
27864
27865 static void
wlc_phy_txpwr_nphy_po_apply(u8 * srom_max,u8 pwr_offset,u8 rate_start,u8 rate_end)27866 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27867 u8 rate_start, u8 rate_end)
27868 {
27869 u8 rate;
27870
27871 for (rate = rate_start; rate <= rate_end; rate++)
27872 srom_max[rate] -= 2 * pwr_offset;
27873 }
27874
27875 void
wlc_phy_ofdm_to_mcs_powers_nphy(u8 * power,u8 rate_mcs_start,u8 rate_mcs_end,u8 rate_ofdm_start)27876 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27877 u8 rate_mcs_end, u8 rate_ofdm_start)
27878 {
27879 u8 rate1, rate2;
27880
27881 rate2 = rate_ofdm_start;
27882 for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27883 power[rate1] = power[rate2];
27884 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27885 }
27886 power[rate_mcs_end] = power[rate_mcs_end - 1];
27887 }
27888
27889 void
wlc_phy_mcs_to_ofdm_powers_nphy(u8 * power,u8 rate_ofdm_start,u8 rate_ofdm_end,u8 rate_mcs_start)27890 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27891 u8 rate_ofdm_end, u8 rate_mcs_start)
27892 {
27893 u8 rate1, rate2;
27894
27895 for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27896 rate1 <= rate_ofdm_end; rate1++, rate2++) {
27897 power[rate1] = power[rate2];
27898 if (rate1 == rate_ofdm_start)
27899 power[++rate1] = power[rate2];
27900 }
27901 }
27902
wlc_phy_txpwr_apply_nphy(struct brcms_phy * pi)27903 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27904 {
27905 uint rate1, rate2, band_num;
27906 u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27907 u8 tmp_max_pwr = 0;
27908 u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27909 u8 *tx_srom_max_rate = NULL;
27910
27911 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27912 band_num++) {
27913 switch (band_num) {
27914 case 0:
27915
27916 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27917 pi->nphy_pwrctrl_info[1].max_pwr_2g);
27918
27919 pwr_offsets1[0] = pi->cck2gpo;
27920 wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27921 pwr_offsets1,
27922 tmp_max_pwr,
27923 TXP_FIRST_CCK,
27924 TXP_LAST_CCK);
27925
27926 pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27927 pwr_offsets1[1] =
27928 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27929
27930 pwr_offsets2 = pi->mcs2gpo;
27931
27932 tmp_cddpo = pi->cdd2gpo;
27933 tmp_stbcpo = pi->stbc2gpo;
27934 tmp_bw40po = pi->bw402gpo;
27935
27936 tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27937 break;
27938 case 1:
27939
27940 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27941 pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27942
27943 pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27944 pwr_offsets1[1] =
27945 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27946
27947 pwr_offsets2 = pi->mcs5gpo;
27948
27949 tmp_cddpo = pi->cdd5gpo;
27950 tmp_stbcpo = pi->stbc5gpo;
27951 tmp_bw40po = pi->bw405gpo;
27952
27953 tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27954 break;
27955 case 2:
27956
27957 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
27958 pi->nphy_pwrctrl_info[1].max_pwr_5gl);
27959
27960 pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
27961 pwr_offsets1[1] =
27962 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
27963
27964 pwr_offsets2 = pi->mcs5glpo;
27965
27966 tmp_cddpo = pi->cdd5glpo;
27967 tmp_stbcpo = pi->stbc5glpo;
27968 tmp_bw40po = pi->bw405glpo;
27969
27970 tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
27971 break;
27972 case 3:
27973
27974 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
27975 pi->nphy_pwrctrl_info[1].max_pwr_5gh);
27976
27977 pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
27978 pwr_offsets1[1] =
27979 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
27980
27981 pwr_offsets2 = pi->mcs5ghpo;
27982
27983 tmp_cddpo = pi->cdd5ghpo;
27984 tmp_stbcpo = pi->stbc5ghpo;
27985 tmp_bw40po = pi->bw405ghpo;
27986
27987 tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
27988 break;
27989 }
27990
27991 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
27992 tmp_max_pwr, TXP_FIRST_OFDM,
27993 TXP_LAST_OFDM);
27994
27995 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
27996 TXP_FIRST_MCS_20_SISO,
27997 TXP_LAST_MCS_20_SISO,
27998 TXP_FIRST_OFDM);
27999
28000 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28001 tmp_max_pwr,
28002 TXP_FIRST_MCS_20_CDD,
28003 TXP_LAST_MCS_20_CDD);
28004
28005 if (NREV_GE(pi->pubpi.phy_rev, 3))
28006 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28007 TXP_FIRST_MCS_20_CDD,
28008 TXP_LAST_MCS_20_CDD);
28009
28010 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28011 TXP_FIRST_OFDM_20_CDD,
28012 TXP_LAST_OFDM_20_CDD,
28013 TXP_FIRST_MCS_20_CDD);
28014
28015 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28016 tmp_max_pwr,
28017 TXP_FIRST_MCS_20_STBC,
28018 TXP_LAST_MCS_20_STBC);
28019
28020 if (NREV_GE(pi->pubpi.phy_rev, 3))
28021 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28022 tmp_stbcpo,
28023 TXP_FIRST_MCS_20_STBC,
28024 TXP_LAST_MCS_20_STBC);
28025
28026 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28027 &pwr_offsets2[2], tmp_max_pwr,
28028 TXP_FIRST_MCS_20_SDM,
28029 TXP_LAST_MCS_20_SDM);
28030
28031 if (NPHY_IS_SROM_REINTERPRET) {
28032
28033 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28034 &pwr_offsets2[4],
28035 tmp_max_pwr,
28036 TXP_FIRST_MCS_40_SISO,
28037 TXP_LAST_MCS_40_SISO);
28038
28039 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28040 TXP_FIRST_OFDM_40_SISO,
28041 TXP_LAST_OFDM_40_SISO,
28042 TXP_FIRST_MCS_40_SISO);
28043
28044 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28045 &pwr_offsets2[4],
28046 tmp_max_pwr,
28047 TXP_FIRST_MCS_40_CDD,
28048 TXP_LAST_MCS_40_CDD);
28049
28050 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28051 TXP_FIRST_MCS_40_CDD,
28052 TXP_LAST_MCS_40_CDD);
28053
28054 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28055 TXP_FIRST_OFDM_40_CDD,
28056 TXP_LAST_OFDM_40_CDD,
28057 TXP_FIRST_MCS_40_CDD);
28058
28059 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28060 &pwr_offsets2[4],
28061 tmp_max_pwr,
28062 TXP_FIRST_MCS_40_STBC,
28063 TXP_LAST_MCS_40_STBC);
28064
28065 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28066 tmp_stbcpo,
28067 TXP_FIRST_MCS_40_STBC,
28068 TXP_LAST_MCS_40_STBC);
28069
28070 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28071 &pwr_offsets2[6],
28072 tmp_max_pwr,
28073 TXP_FIRST_MCS_40_SDM,
28074 TXP_LAST_MCS_40_SDM);
28075 } else {
28076
28077 for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28078 TXP_FIRST_OFDM;
28079 rate1 <= TXP_LAST_MCS_40_SDM;
28080 rate1++, rate2++)
28081 tx_srom_max_rate[rate1] =
28082 tx_srom_max_rate[rate2];
28083 }
28084
28085 if (NREV_GE(pi->pubpi.phy_rev, 3))
28086 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28087 tmp_bw40po,
28088 TXP_FIRST_OFDM_40_SISO,
28089 TXP_LAST_MCS_40_SDM);
28090
28091 tx_srom_max_rate[TXP_MCS_32] =
28092 tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28093 }
28094
28095 return;
28096 }
28097
wlc_phy_txpower_recalc_target_nphy(struct brcms_phy * pi)28098 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28099 {
28100 u8 tx_pwr_ctrl_state;
28101 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28102 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28103
28104 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28105
28106 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28107 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28108 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28109 udelay(1);
28110 }
28111
28112 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28113
28114 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28115 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28116 }
28117
wlc_phy_txpwr_ison_nphy(struct brcms_phy * pi)28118 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28119 {
28120 return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28121 (0x1 << 14) | (0x1 << 13));
28122 }
28123
wlc_phy_txpwr_idx_get_nphy(struct brcms_phy * pi)28124 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28125 {
28126 u16 tmp;
28127 u16 pwr_idx[2];
28128
28129 if (wlc_phy_txpwr_ison_nphy(pi)) {
28130 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28131 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28132
28133 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28134 } else {
28135 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28136 << 8) |
28137 (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28138 }
28139
28140 return tmp;
28141 }
28142
wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy * pi)28143 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28144 {
28145 if (PHY_IPA(pi)
28146 && (pi->nphy_force_papd_cal
28147 || (wlc_phy_txpwr_ison_nphy(pi)
28148 &&
28149 (((u32)
28150 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28151 pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28152 || ((u32)
28153 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28154 pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28155 wlc_phy_a4(pi, true);
28156 }
28157
wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy * pi,u8 ctrl_type)28158 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28159 {
28160 u16 mask = 0, val = 0, ishw = 0;
28161 u8 ctr;
28162 uint core;
28163 u32 tbl_offset;
28164 u32 tbl_len;
28165 u16 regval[84];
28166
28167 if (pi->phyhang_avoid)
28168 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28169
28170 switch (ctrl_type) {
28171 case PHY_TPC_HW_OFF:
28172 case PHY_TPC_HW_ON:
28173 pi->nphy_txpwrctrl = ctrl_type;
28174 break;
28175 default:
28176 break;
28177 }
28178
28179 if (ctrl_type == PHY_TPC_HW_OFF) {
28180 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28181
28182 if (wlc_phy_txpwr_ison_nphy(pi)) {
28183 for (core = 0; core < pi->pubpi.phy_corenum;
28184 core++)
28185 pi->nphy_txpwr_idx[core] =
28186 wlc_phy_txpwr_idx_cur_get_nphy(
28187 pi,
28188 (u8) core);
28189 }
28190
28191 }
28192
28193 tbl_len = 84;
28194 tbl_offset = 64;
28195 for (ctr = 0; ctr < tbl_len; ctr++)
28196 regval[ctr] = 0;
28197 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28198 regval);
28199 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28200 regval);
28201
28202 if (NREV_GE(pi->pubpi.phy_rev, 3))
28203 and_phy_reg(pi, 0x1e7,
28204 0xffff & ~((0x1 << 15) |
28205 (0x1 << 14) |
28206 (0x1 << 13)));
28207 else
28208 and_phy_reg(pi, 0x1e7,
28209 (u16) (~((0x1 << 14) | (0x1 << 13))));
28210
28211 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28212 or_phy_reg(pi, 0x8f, (0x1 << 8));
28213 or_phy_reg(pi, 0xa5, (0x1 << 8));
28214 } else {
28215 or_phy_reg(pi, 0xa5, (0x1 << 14));
28216 }
28217
28218 if (NREV_IS(pi->pubpi.phy_rev, 2))
28219 mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28220 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28221 mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28222
28223 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28224 pi->bw == WL_CHANSPEC_BW_40)
28225 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28226 MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28227
28228 } else {
28229
28230 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28231 8, pi->adj_pwr_tbl_nphy);
28232 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28233 8, pi->adj_pwr_tbl_nphy);
28234
28235 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28236 mask = (0x1 << 14) | (0x1 << 13);
28237 val = (ishw << 14) | (ishw << 13);
28238
28239 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28240 mask |= (0x1 << 15);
28241 val |= (ishw << 15);
28242 }
28243
28244 mod_phy_reg(pi, 0x1e7, mask, val);
28245
28246 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28247 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28248 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28249 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28250 } else {
28251 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28252 if (NREV_GT(pi->pubpi.phy_rev, 1))
28253 mod_phy_reg(pi, 0x222,
28254 (0xff << 0), 0x64);
28255 }
28256 }
28257
28258 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28259 if ((pi->nphy_txpwr_idx[0] != 128)
28260 && (pi->nphy_txpwr_idx[1] != 128))
28261 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28262 pi->
28263 nphy_txpwr_idx
28264 [0],
28265 pi->
28266 nphy_txpwr_idx
28267 [1]);
28268 }
28269
28270 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28271 and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28272 and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28273 } else {
28274 and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28275 }
28276
28277 if (NREV_IS(pi->pubpi.phy_rev, 2))
28278 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28279 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28280 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28281
28282 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28283 pi->bw == WL_CHANSPEC_BW_40)
28284 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28285 0x0, BRCM_BAND_ALL);
28286
28287 if (PHY_IPA(pi)) {
28288 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28289 0x29b, (0x1 << 2), (0) << 2);
28290
28291 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28292 0x29b, (0x1 << 2), (0) << 2);
28293
28294 }
28295
28296 }
28297
28298 if (pi->phyhang_avoid)
28299 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28300 }
28301
28302 void
wlc_phy_txpwr_index_nphy(struct brcms_phy * pi,u8 core_mask,s8 txpwrindex,bool restore_cals)28303 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28304 bool restore_cals)
28305 {
28306 u8 core, txpwrctl_tbl;
28307 u16 tx_ind0, iq_ind0, lo_ind0;
28308 u16 m1m2;
28309 u32 txgain;
28310 u16 rad_gain, dac_gain;
28311 u8 bbmult;
28312 u32 iqcomp;
28313 u16 iqcomp_a, iqcomp_b;
28314 u32 locomp;
28315 u16 tmpval;
28316 u8 tx_pwr_ctrl_state;
28317 s32 rfpwr_offset;
28318 u16 regval[2];
28319
28320 if (pi->phyhang_avoid)
28321 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28322
28323 tx_ind0 = 192;
28324 iq_ind0 = 320;
28325 lo_ind0 = 448;
28326
28327 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28328
28329 if ((core_mask & (1 << core)) == 0)
28330 continue;
28331
28332 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28333
28334 if (txpwrindex < 0) {
28335 if (pi->nphy_txpwrindex[core].index < 0)
28336 continue;
28337
28338 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28339 mod_phy_reg(pi, 0x8f,
28340 (0x1 << 8),
28341 pi->nphy_txpwrindex[core].
28342 AfectrlOverride);
28343 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28344 pi->nphy_txpwrindex[core].
28345 AfectrlOverride);
28346 } else {
28347 mod_phy_reg(pi, 0xa5,
28348 (0x1 << 14),
28349 pi->nphy_txpwrindex[core].
28350 AfectrlOverride);
28351 }
28352
28353 write_phy_reg(pi, (core == PHY_CORE_0) ?
28354 0xaa : 0xab,
28355 pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28356
28357 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28358 &pi->nphy_txpwrindex[core].
28359 rad_gain);
28360
28361 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28362 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28363 m1m2 |= ((core == PHY_CORE_0) ?
28364 (pi->nphy_txpwrindex[core].bbmult << 8) :
28365 (pi->nphy_txpwrindex[core].bbmult << 0));
28366 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28367
28368 if (restore_cals) {
28369 wlc_phy_table_write_nphy(
28370 pi, 15, 2, (80 + 2 * core), 16,
28371 &pi->nphy_txpwrindex[core].iqcomp_a);
28372 wlc_phy_table_write_nphy(
28373 pi, 15, 1, (85 + core), 16,
28374 &pi->nphy_txpwrindex[core].locomp);
28375 wlc_phy_table_write_nphy(
28376 pi, 15, 1, (93 + core), 16,
28377 &pi->nphy_txpwrindex[core].locomp);
28378 }
28379
28380 wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28381
28382 pi->nphy_txpwrindex[core].index_internal =
28383 pi->nphy_txpwrindex[core].index_internal_save;
28384 } else {
28385
28386 if (pi->nphy_txpwrindex[core].index < 0) {
28387
28388 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28389 mod_phy_reg(pi, 0x8f,
28390 (0x1 << 8),
28391 pi->nphy_txpwrindex[core].
28392 AfectrlOverride);
28393 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28394 pi->nphy_txpwrindex[core].
28395 AfectrlOverride);
28396 } else {
28397 pi->nphy_txpwrindex[core].
28398 AfectrlOverride =
28399 read_phy_reg(pi, 0xa5);
28400 }
28401
28402 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28403 read_phy_reg(pi, (core == PHY_CORE_0) ?
28404 0xaa : 0xab);
28405
28406 wlc_phy_table_read_nphy(pi, 7, 1,
28407 (0x110 + core), 16,
28408 &pi->
28409 nphy_txpwrindex[core].
28410 rad_gain);
28411
28412 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28413 &tmpval);
28414 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28415 tmpval &= 0xff;
28416 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28417
28418 wlc_phy_table_read_nphy(pi, 15, 2,
28419 (80 + 2 * core), 16,
28420 &pi->
28421 nphy_txpwrindex[core].
28422 iqcomp_a);
28423
28424 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28425 16,
28426 &pi->
28427 nphy_txpwrindex[core].
28428 locomp);
28429
28430 pi->nphy_txpwrindex[core].index_internal_save =
28431 pi->nphy_txpwrindex[core].
28432 index_internal;
28433 }
28434
28435 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28436 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28437
28438 if (NREV_IS(pi->pubpi.phy_rev, 1))
28439 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28440
28441 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28442 (tx_ind0 + txpwrindex), 32,
28443 &txgain);
28444
28445 if (NREV_GE(pi->pubpi.phy_rev, 3))
28446 rad_gain = (txgain >> 16) &
28447 ((1 << (32 - 16 + 1)) - 1);
28448 else
28449 rad_gain = (txgain >> 16) &
28450 ((1 << (28 - 16 + 1)) - 1);
28451
28452 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28453 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28454
28455 if (NREV_GE(pi->pubpi.phy_rev, 3))
28456 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28457 0xa5), (0x1 << 8), (0x1 << 8));
28458 else
28459 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28460
28461 write_phy_reg(pi, (core == PHY_CORE_0) ?
28462 0xaa : 0xab, dac_gain);
28463
28464 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28465 &rad_gain);
28466
28467 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28468 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28469 m1m2 |= ((core == PHY_CORE_0) ?
28470 (bbmult << 8) : (bbmult << 0));
28471
28472 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28473
28474 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28475 (iq_ind0 + txpwrindex), 32,
28476 &iqcomp);
28477 iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28478 iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28479
28480 if (restore_cals) {
28481 regval[0] = (u16) iqcomp_a;
28482 regval[1] = (u16) iqcomp_b;
28483 wlc_phy_table_write_nphy(pi, 15, 2,
28484 (80 + 2 * core), 16,
28485 regval);
28486 }
28487
28488 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28489 (lo_ind0 + txpwrindex), 32,
28490 &locomp);
28491 if (restore_cals)
28492 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28493 16, &locomp);
28494
28495 if (NREV_IS(pi->pubpi.phy_rev, 1))
28496 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28497
28498 if (PHY_IPA(pi)) {
28499 wlc_phy_table_read_nphy(pi,
28500 (core == PHY_CORE_0 ?
28501 NPHY_TBL_ID_CORE1TXPWRCTL :
28502 NPHY_TBL_ID_CORE2TXPWRCTL),
28503 1, 576 + txpwrindex, 32,
28504 &rfpwr_offset);
28505
28506 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28507 0x29b, (0x1ff << 4),
28508 ((s16) rfpwr_offset) << 4);
28509
28510 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28511 0x29b, (0x1 << 2), (1) << 2);
28512
28513 }
28514
28515 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28516 }
28517
28518 pi->nphy_txpwrindex[core].index = txpwrindex;
28519 }
28520
28521 if (pi->phyhang_avoid)
28522 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28523 }
28524
28525 void
wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy * pi,uint chan,u8 * max_pwr,u8 txp_rate_idx)28526 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28527 u8 txp_rate_idx)
28528 {
28529 u8 chan_freq_range;
28530
28531 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28532 switch (chan_freq_range) {
28533 case WL_CHAN_FREQ_RANGE_2G:
28534 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28535 break;
28536 case WL_CHAN_FREQ_RANGE_5GM:
28537 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28538 break;
28539 case WL_CHAN_FREQ_RANGE_5GL:
28540 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28541 break;
28542 case WL_CHAN_FREQ_RANGE_5GH:
28543 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28544 break;
28545 default:
28546 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28547 break;
28548 }
28549
28550 return;
28551 }
28552
wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy * pi,bool enable)28553 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28554 {
28555 u16 clip_off[] = { 0xffff, 0xffff };
28556
28557 if (enable) {
28558 if (pi->nphy_deaf_count == 0) {
28559 pi->classifier_state =
28560 wlc_phy_classifier_nphy(pi, 0, 0);
28561 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28562 wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28563 wlc_phy_clip_det_nphy(pi, 1, clip_off);
28564 }
28565
28566 pi->nphy_deaf_count++;
28567
28568 wlc_phy_resetcca_nphy(pi);
28569
28570 } else {
28571 pi->nphy_deaf_count--;
28572
28573 if (pi->nphy_deaf_count == 0) {
28574 wlc_phy_classifier_nphy(pi, (0x7 << 0),
28575 pi->classifier_state);
28576 wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28577 }
28578 }
28579 }
28580
wlc_nphy_deaf_mode(struct brcms_phy * pi,bool mode)28581 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28582 {
28583 wlapi_suspend_mac_and_wait(pi->sh->physhim);
28584
28585 if (mode) {
28586 if (pi->nphy_deaf_count == 0)
28587 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28588 } else if (pi->nphy_deaf_count > 0) {
28589 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28590 }
28591
28592 wlapi_enable_mac(pi->sh->physhim);
28593 }
28594