812b6e38526e3252bc1e720a70c51ee8d502232c
[deliverable/linux.git] / drivers / net / wireless / brcm80211 / brcmsmac / phy / phy_n.c
1 /*
2 * Copyright (c) 2010 Broadcom Corporation
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18
19 #include <linux/kernel.h>
20 #include <linux/delay.h>
21 #include <linux/cordic.h>
22
23 #include <brcm_hw_ids.h>
24 #include <aiutils.h>
25 #include <chipcommon.h>
26 #include <pmu.h>
27 #include <d11.h>
28 #include <phy_shim.h>
29 #include "phy_int.h"
30 #include "phy_hal.h"
31 #include "phy_radio.h"
32 #include "phyreg_n.h"
33 #include "phytbl_n.h"
34 #include "soc.h"
35
36 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
37 read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
38 ((core == PHY_CORE_0) ? \
39 radio_type##_##jspace##0 : \
40 radio_type##_##jspace##1))
41
42 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
43 write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
44 ((core == PHY_CORE_0) ? \
45 radio_type##_##jspace##0 : \
46 radio_type##_##jspace##1), value)
47
48 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
49 write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
50
51 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
52 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53 radio_type##_##jspace##0##_##reg_name : \
54 radio_type##_##jspace##1##_##reg_name))
55
56 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
57 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
58 radio_type##_##jspace##0##_##reg_name : \
59 radio_type##_##jspace##1##_##reg_name), \
60 value)
61
62 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
63 read_radio_reg(pi, ((core == PHY_CORE_0) ? \
64 radio_type##_##reg_name##_##jspace##0 : \
65 radio_type##_##reg_name##_##jspace##1))
66
67 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
68 write_radio_reg(pi, ((core == PHY_CORE_0) ? \
69 radio_type##_##reg_name##_##jspace##0 : \
70 radio_type##_##reg_name##_##jspace##1), \
71 value)
72
73 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
74 #define NPHY_ACI_CHANNEL_DELTA 5
75 #define NPHY_ACI_CHANNEL_SKIP 4
76 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
77 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
78 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
79 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
80 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
81 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
82
83 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
84
85 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
86
87 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
88
89 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
90
91 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
92
93 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
94
95 #define NPHY_NOISE_NOASSOC_ENTER_TH 400
96
97 #define NPHY_NOISE_ASSOC_ENTER_TH 400
98
99 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH 400
100
101 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
102 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
103
104 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
105
106 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
107
108 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
109
110 #define NPHY_RSSICAL_MAXREAD 31
111
112 #define NPHY_RSSICAL_NPOLL 8
113 #define NPHY_RSSICAL_MAXD (1<<20)
114 #define NPHY_MIN_RXIQ_PWR 2
115
116 #define NPHY_RSSICAL_W1_TARGET 25
117 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
118 #define NPHY_RSSICAL_NB_TARGET 0
119
120 #define NPHY_RSSICAL_W1_TARGET_REV3 29
121 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
122
123 #define NPHY_CALSANITY_RSSI_NB_MAX_POS 9
124 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
125 #define NPHY_CALSANITY_RSSI_W1_MAX_POS 12
126 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
127 NPHY_RSSICAL_MAXREAD)
128 #define NPHY_CALSANITY_RSSI_W2_MAX_POS NPHY_CALSANITY_RSSI_W1_MAX_POS
129 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
130 NPHY_RSSICAL_MAXREAD)
131 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
132 #define NPHY_RSSI_NB_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
133 ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
134 #define NPHY_RSSI_W1_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
135 ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
136 #define NPHY_RSSI_W2_VIOL(x) (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
137 ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
138
139 #define NPHY_IQCAL_NUMGAINS 9
140 #define NPHY_N_GCTL 0x66
141
142 #define NPHY_PAPD_EPS_TBL_SIZE 64
143 #define NPHY_PAPD_SCL_TBL_SIZE 64
144 #define NPHY_NUM_DIG_FILT_COEFFS 15
145
146 #define NPHY_PAPD_COMP_OFF 0
147 #define NPHY_PAPD_COMP_ON 1
148
149 #define NPHY_SROM_TEMPSHIFT 32
150 #define NPHY_SROM_MAXTEMPOFFSET 16
151 #define NPHY_SROM_MINTEMPOFFSET -16
152
153 #define NPHY_CAL_MAXTEMPDELTA 64
154
155 #define NPHY_NOISEVAR_TBLLEN40 256
156 #define NPHY_NOISEVAR_TBLLEN20 128
157
158 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
159
160 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
161
162 /* 5357 Chip specific ChipControl register bits */
163 #define CCTRL5357_EXTPA (1<<14) /* extPA in ChipControl 1, bit 14 */
164 #define CCTRL5357_ANT_MUX_2o3 (1<<15) /* 2o3 in ChipControl 1, bit 15 */
165
166 #define NPHY_CAL_TSSISAMPS 64
167 #define NPHY_TEST_TONE_FREQ_40MHz 4000
168 #define NPHY_TEST_TONE_FREQ_20MHz 2500
169
170 #define MAX_205x_RCAL_WAITLOOPS 10000
171
172 #define NPHY_RXCAL_TONEAMP 181
173 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
174 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
175
176 #define TXFILT_SHAPING_OFDM20 0
177 #define TXFILT_SHAPING_OFDM40 1
178 #define TXFILT_SHAPING_CCK 2
179 #define TXFILT_DEFAULT_OFDM20 3
180 #define TXFILT_DEFAULT_OFDM40 4
181
182 struct nphy_iqcal_params {
183 u16 txlpf;
184 u16 txgm;
185 u16 pga;
186 u16 pad;
187 u16 ipa;
188 u16 cal_gain;
189 u16 ncorr[5];
190 };
191
192 struct nphy_txiqcal_ladder {
193 u8 percent;
194 u8 g_env;
195 };
196
197 struct nphy_ipa_txcalgains {
198 struct nphy_txgains gains;
199 bool useindex;
200 u8 index;
201 };
202
203 struct nphy_papd_restore_state {
204 u16 fbmix[2];
205 u16 vga_master[2];
206 u16 intpa_master[2];
207 u16 afectrl[2];
208 u16 afeoverride[2];
209 u16 pwrup[2];
210 u16 atten[2];
211 u16 mm;
212 };
213
214 struct nphy_ipa_txrxgain {
215 u16 hpvga;
216 u16 lpf_biq1;
217 u16 lpf_biq0;
218 u16 lna2;
219 u16 lna1;
220 s8 txpwrindex;
221 };
222
223 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
224
225 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
226 {0, 0, 0, 0, 0, 100},
227 {0, 0, 0, 0, 0, 50},
228 {0, 0, 0, 0, 0, -1},
229 {0, 0, 0, 3, 0, -1},
230 {0, 0, 3, 3, 0, -1},
231 {0, 2, 3, 3, 0, -1}
232 };
233
234 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
235 {0, 0, 0, 0, 0, 128},
236 {0, 0, 0, 0, 0, 70},
237 {0, 0, 0, 0, 0, 20},
238 {0, 0, 0, 3, 0, 20},
239 {0, 0, 3, 3, 0, 20},
240 {0, 2, 3, 3, 0, 20}
241 };
242
243 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
244 {0, 0, 0, 0, 0, 100},
245 {0, 0, 0, 0, 0, 50},
246 {0, 0, 0, 0, 0, -1},
247 {0, 0, 0, 3, 0, -1},
248 {0, 0, 3, 3, 0, -1},
249 {0, 0, 5, 3, 0, -1}
250 };
251
252 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
253 {0, 0, 0, 0, 0, 10},
254 {0, 0, 0, 1, 0, 10},
255 {0, 0, 1, 2, 0, 10},
256 {0, 0, 1, 3, 0, 10},
257 {0, 0, 4, 3, 0, 10},
258 {0, 0, 6, 3, 0, 10}
259 };
260
261 enum {
262 NPHY_RXCAL_GAIN_INIT = 0,
263 NPHY_RXCAL_GAIN_UP,
264 NPHY_RXCAL_GAIN_DOWN
265 };
266
267 #define wlc_phy_get_papd_nphy(pi) \
268 (read_phy_reg((pi), 0x1e7) & \
269 ((0x1 << 15) | \
270 (0x1 << 14) | \
271 (0x1 << 13)))
272
273 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
274 {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
275 230, -44, 230, 201, -191, 201},
276 {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
277 26, 34, -32, 34},
278 {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
279 121, -73, 121, 91, 124, 91},
280 {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
281 151, 301, 151, 602, -752, 602},
282 {-92, 58, -96, 49, -104, 44, 17, 35, 17,
283 12, 25, 12, 13, 27, 13},
284 {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
285 230, -44, 230, 201, -191, 201},
286 {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
287 0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
288 };
289
290 struct chan_info_nphy_2055 {
291 u16 chan;
292 u16 freq;
293 uint unknown;
294 u8 RF_pll_ref;
295 u8 RF_rf_pll_mod1;
296 u8 RF_rf_pll_mod0;
297 u8 RF_vco_cap_tail;
298 u8 RF_vco_cal1;
299 u8 RF_vco_cal2;
300 u8 RF_pll_lf_c1;
301 u8 RF_pll_lf_r1;
302 u8 RF_pll_lf_c2;
303 u8 RF_lgbuf_cen_buf;
304 u8 RF_lgen_tune1;
305 u8 RF_lgen_tune2;
306 u8 RF_core1_lgbuf_a_tune;
307 u8 RF_core1_lgbuf_g_tune;
308 u8 RF_core1_rxrf_reg1;
309 u8 RF_core1_tx_pga_pad_tn;
310 u8 RF_core1_tx_mx_bgtrim;
311 u8 RF_core2_lgbuf_a_tune;
312 u8 RF_core2_lgbuf_g_tune;
313 u8 RF_core2_rxrf_reg1;
314 u8 RF_core2_tx_pga_pad_tn;
315 u8 RF_core2_tx_mx_bgtrim;
316 u16 PHY_BW1a;
317 u16 PHY_BW2;
318 u16 PHY_BW3;
319 u16 PHY_BW4;
320 u16 PHY_BW5;
321 u16 PHY_BW6;
322 };
323
324 struct chan_info_nphy_radio205x {
325 u16 chan;
326 u16 freq;
327 u8 RF_SYN_pll_vcocal1;
328 u8 RF_SYN_pll_vcocal2;
329 u8 RF_SYN_pll_refdiv;
330 u8 RF_SYN_pll_mmd2;
331 u8 RF_SYN_pll_mmd1;
332 u8 RF_SYN_pll_loopfilter1;
333 u8 RF_SYN_pll_loopfilter2;
334 u8 RF_SYN_pll_loopfilter3;
335 u8 RF_SYN_pll_loopfilter4;
336 u8 RF_SYN_pll_loopfilter5;
337 u8 RF_SYN_reserved_addr27;
338 u8 RF_SYN_reserved_addr28;
339 u8 RF_SYN_reserved_addr29;
340 u8 RF_SYN_logen_VCOBUF1;
341 u8 RF_SYN_logen_MIXER2;
342 u8 RF_SYN_logen_BUF3;
343 u8 RF_SYN_logen_BUF4;
344 u8 RF_RX0_lnaa_tune;
345 u8 RF_RX0_lnag_tune;
346 u8 RF_TX0_intpaa_boost_tune;
347 u8 RF_TX0_intpag_boost_tune;
348 u8 RF_TX0_pada_boost_tune;
349 u8 RF_TX0_padg_boost_tune;
350 u8 RF_TX0_pgaa_boost_tune;
351 u8 RF_TX0_pgag_boost_tune;
352 u8 RF_TX0_mixa_boost_tune;
353 u8 RF_TX0_mixg_boost_tune;
354 u8 RF_RX1_lnaa_tune;
355 u8 RF_RX1_lnag_tune;
356 u8 RF_TX1_intpaa_boost_tune;
357 u8 RF_TX1_intpag_boost_tune;
358 u8 RF_TX1_pada_boost_tune;
359 u8 RF_TX1_padg_boost_tune;
360 u8 RF_TX1_pgaa_boost_tune;
361 u8 RF_TX1_pgag_boost_tune;
362 u8 RF_TX1_mixa_boost_tune;
363 u8 RF_TX1_mixg_boost_tune;
364 u16 PHY_BW1a;
365 u16 PHY_BW2;
366 u16 PHY_BW3;
367 u16 PHY_BW4;
368 u16 PHY_BW5;
369 u16 PHY_BW6;
370 };
371
372 struct chan_info_nphy_radio2057 {
373 u16 chan;
374 u16 freq;
375 u8 RF_vcocal_countval0;
376 u8 RF_vcocal_countval1;
377 u8 RF_rfpll_refmaster_sparextalsize;
378 u8 RF_rfpll_loopfilter_r1;
379 u8 RF_rfpll_loopfilter_c2;
380 u8 RF_rfpll_loopfilter_c1;
381 u8 RF_cp_kpd_idac;
382 u8 RF_rfpll_mmd0;
383 u8 RF_rfpll_mmd1;
384 u8 RF_vcobuf_tune;
385 u8 RF_logen_mx2g_tune;
386 u8 RF_logen_mx5g_tune;
387 u8 RF_logen_indbuf2g_tune;
388 u8 RF_logen_indbuf5g_tune;
389 u8 RF_txmix2g_tune_boost_pu_core0;
390 u8 RF_pad2g_tune_pus_core0;
391 u8 RF_pga_boost_tune_core0;
392 u8 RF_txmix5g_boost_tune_core0;
393 u8 RF_pad5g_tune_misc_pus_core0;
394 u8 RF_lna2g_tune_core0;
395 u8 RF_lna5g_tune_core0;
396 u8 RF_txmix2g_tune_boost_pu_core1;
397 u8 RF_pad2g_tune_pus_core1;
398 u8 RF_pga_boost_tune_core1;
399 u8 RF_txmix5g_boost_tune_core1;
400 u8 RF_pad5g_tune_misc_pus_core1;
401 u8 RF_lna2g_tune_core1;
402 u8 RF_lna5g_tune_core1;
403 u16 PHY_BW1a;
404 u16 PHY_BW2;
405 u16 PHY_BW3;
406 u16 PHY_BW4;
407 u16 PHY_BW5;
408 u16 PHY_BW6;
409 };
410
411 struct chan_info_nphy_radio2057_rev5 {
412 u16 chan;
413 u16 freq;
414 u8 RF_vcocal_countval0;
415 u8 RF_vcocal_countval1;
416 u8 RF_rfpll_refmaster_sparextalsize;
417 u8 RF_rfpll_loopfilter_r1;
418 u8 RF_rfpll_loopfilter_c2;
419 u8 RF_rfpll_loopfilter_c1;
420 u8 RF_cp_kpd_idac;
421 u8 RF_rfpll_mmd0;
422 u8 RF_rfpll_mmd1;
423 u8 RF_vcobuf_tune;
424 u8 RF_logen_mx2g_tune;
425 u8 RF_logen_indbuf2g_tune;
426 u8 RF_txmix2g_tune_boost_pu_core0;
427 u8 RF_pad2g_tune_pus_core0;
428 u8 RF_lna2g_tune_core0;
429 u8 RF_txmix2g_tune_boost_pu_core1;
430 u8 RF_pad2g_tune_pus_core1;
431 u8 RF_lna2g_tune_core1;
432 u16 PHY_BW1a;
433 u16 PHY_BW2;
434 u16 PHY_BW3;
435 u16 PHY_BW4;
436 u16 PHY_BW5;
437 u16 PHY_BW6;
438 };
439
440 struct nphy_sfo_cfg {
441 u16 PHY_BW1a;
442 u16 PHY_BW2;
443 u16 PHY_BW3;
444 u16 PHY_BW4;
445 u16 PHY_BW5;
446 u16 PHY_BW6;
447 };
448
449 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
450 {
451 184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
452 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453 0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
454 {
455 186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
456 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457 0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
458 {
459 188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
460 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461 0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
462 {
463 190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
464 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465 0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
466 {
467 192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
468 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469 0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
470 {
471 194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
472 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473 0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
474 {
475 196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
476 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
477 0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
478 {
479 198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
480 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
481 0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
482 {
483 200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
484 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
485 0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
486 {
487 202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
488 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
489 0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
490 {
491 204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
492 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
493 0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
494 {
495 206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
496 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
497 0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
498 {
499 208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
500 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
501 0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
502 {
503 210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
504 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
505 0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
506 {
507 212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
508 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
509 0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
510 {
511 214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
512 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
513 0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
514 {
515 216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
516 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
517 0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
518 {
519 218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
520 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
521 0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
522 {
523 220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
524 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
525 0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
526 {
527 222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
528 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
529 0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
530 {
531 224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
532 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
533 0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
534 {
535 226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
536 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
537 0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
538 {
539 228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
540 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
541 0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
542 {
543 32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
544 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
545 0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
546 {
547 34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
548 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
549 0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
550 {
551 36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
552 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
553 0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
554 {
555 38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
556 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
557 0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
558 {
559 40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
560 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
561 0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
562 {
563 42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
564 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
565 0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
566 {
567 44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
568 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
569 0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
570 {
571 46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
572 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
573 0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
574 {
575 48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
576 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
577 0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
578 {
579 50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
580 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
581 0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
582 {
583 52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
584 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
585 0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
586 {
587 54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
588 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
589 0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
590 {
591 56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
592 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
593 0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
594 {
595 58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
596 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
597 0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
598 {
599 60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
600 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
601 0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
602 {
603 62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
604 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
605 0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
606 {
607 64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
608 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
609 0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
610 {
611 66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
612 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
613 0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
614 {
615 68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
616 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
617 0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
618 {
619 70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
620 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
621 0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
622 {
623 72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
624 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
625 0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
626 {
627 74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
628 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
629 0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
630 {
631 76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
632 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
633 0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
634 {
635 78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
636 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
637 0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
638 {
639 80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
640 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
641 0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
642 {
643 82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
644 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
645 0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
646 {
647 84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
648 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
649 0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
650 {
651 86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
652 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
653 0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
654 {
655 88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
656 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
657 0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
658 {
659 90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
660 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
661 0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
662 {
663 92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
664 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
665 0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
666 {
667 94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
668 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
669 0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
670 {
671 96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
672 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
673 0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
674 {
675 98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
676 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
677 0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
678 {
679 100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
680 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
681 0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
682 {
683 102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
684 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
685 0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
686 {
687 104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
688 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
689 0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
690 {
691 106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
692 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
693 0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
694 {
695 108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
696 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
697 0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
698 {
699 110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
700 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
701 0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
702 {
703 112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
704 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
705 0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
706 {
707 114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
708 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
709 0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
710 {
711 116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
712 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
713 0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
714 {
715 118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
716 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
717 0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
718 {
719 120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
720 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
721 0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
722 {
723 122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
724 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
725 0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
726 {
727 124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
728 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
729 0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
730 {
731 126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
732 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
733 0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
734 {
735 128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
736 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737 0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
738 {
739 130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
740 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741 0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
742 {
743 132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
744 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745 0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
746 {
747 134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
748 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749 0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
750 {
751 136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
752 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753 0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
754 {
755 138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
756 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757 0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
758 {
759 140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
760 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761 0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
762 {
763 142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
764 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765 0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
766 {
767 144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
768 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769 0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
770 {
771 145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
772 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773 0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
774 {
775 146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
776 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777 0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
778 {
779 147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
780 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781 0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
782 {
783 148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
784 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785 0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
786 {
787 149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
788 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789 0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
790 {
791 150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
792 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793 0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
794 {
795 151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
796 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797 0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
798 {
799 152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
800 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801 0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
802 {
803 153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
804 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805 0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
806 {
807 154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
808 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809 0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
810 {
811 155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
812 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813 0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
814 {
815 156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
816 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817 0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
818 {
819 157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
820 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821 0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
822 {
823 158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
824 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825 0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
826 {
827 159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
828 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829 0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
830 {
831 160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
832 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833 0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
834 {
835 161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
836 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837 0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
838 {
839 162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
840 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841 0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
842 {
843 163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
844 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845 0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
846 {
847 164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
848 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849 0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
850 {
851 165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
852 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853 0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
854 {
855 166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
856 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857 0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
858 {
859 168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
860 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
861 0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
862 {
863 170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
864 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
865 0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
866 {
867 172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
868 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
869 0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
870 {
871 174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
872 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
873 0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
874 {
875 176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
876 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
877 0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
878 {
879 178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
880 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
881 0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
882 {
883 180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
884 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
885 0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
886 {
887 182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
888 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
889 0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
890 {
891 1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
892 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
893 0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
894 {
895 2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
896 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
897 0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
898 {
899 3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
900 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
901 0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
902 {
903 4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
904 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
905 0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
906 {
907 5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
908 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
909 0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
910 {
911 6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
912 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
913 0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
914 {
915 7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
916 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
917 0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
918 {
919 8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
920 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
921 0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
922 {
923 9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
924 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
925 0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
926 {
927 10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
928 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
929 0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
930 {
931 11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
932 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
933 0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
934 {
935 12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
936 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
937 0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
938 {
939 13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
940 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
941 0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
942 {
943 14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
944 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
945 0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
946 };
947
948 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
949 {
950 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
951 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
952 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
953 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
954 {
955 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
956 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
957 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
958 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
959 {
960 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
961 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
962 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
963 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
964 {
965 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
966 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
967 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
968 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
969 {
970 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
971 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
972 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
973 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
974 {
975 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
976 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
977 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
978 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
979 {
980 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
981 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
982 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
983 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
984 {
985 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
986 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
987 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
988 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
989 {
990 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
991 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
992 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
993 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
994 {
995 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
996 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
997 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
998 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
999 {
1000 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1001 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1002 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1003 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1004 {
1005 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1006 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1007 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1008 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1009 {
1010 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1011 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1012 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1013 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1014 {
1015 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1016 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1017 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1018 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1019 {
1020 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1021 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1022 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1023 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1024 {
1025 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1026 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1027 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1028 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1029 {
1030 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1031 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1032 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1033 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1034 {
1035 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1036 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1037 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1038 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1039 {
1040 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1041 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1042 0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1043 0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1044 {
1045 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1046 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1047 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1048 0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1049 {
1050 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1051 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1052 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1053 0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1054 {
1055 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1056 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1057 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1058 0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1059 {
1060 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1061 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1062 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1063 0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1064 {
1065 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1066 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1067 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1068 0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1069 {
1070 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1071 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1072 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1073 0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1074 {
1075 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1076 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1077 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1078 0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1079 {
1080 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1081 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1082 0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1083 0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1084 {
1085 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1086 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1087 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1088 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1089 {
1090 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1091 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1092 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1093 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1094 {
1095 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1096 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1097 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1098 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1099 {
1100 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1101 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1102 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1103 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1104 {
1105 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1106 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1107 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1108 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1109 {
1110 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1111 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1112 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1113 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1114 {
1115 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1116 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1117 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1118 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1119 {
1120 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1121 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1122 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1123 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1124 {
1125 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1126 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1127 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1128 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1129 {
1130 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1131 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1132 0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1133 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1134 {
1135 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1136 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1137 0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1138 0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1139 {
1140 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1141 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1142 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1143 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1144 {
1145 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1146 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1147 0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1148 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1149 {
1150 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1151 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1152 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1153 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1154 {
1155 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1156 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1157 0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1158 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1159 {
1160 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1161 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1162 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1163 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1164 {
1165 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1166 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1167 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1168 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1169 {
1170 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1171 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1172 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1173 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1174 {
1175 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1176 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1177 0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1178 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1179 {
1180 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1181 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1182 0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1183 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1184 {
1185 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1186 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1187 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1188 0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1189 {
1190 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1191 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1192 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1193 0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1194 {
1195 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1196 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1197 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1198 0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1199 {
1200 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1201 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1202 0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1203 0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1204 {
1205 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1206 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1207 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1208 0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1209 {
1210 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1211 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1212 0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1213 0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1214 {
1215 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1216 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1217 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1218 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1219 {
1220 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1221 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1222 0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1223 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1224 {
1225 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1226 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1227 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1228 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1229 {
1230 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1231 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1232 0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1233 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1234 {
1235 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1236 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1237 0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1238 0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1239 {
1240 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1241 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1242 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1243 0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1244 {
1245 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1246 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1247 0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1248 0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1249 {
1250 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1251 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1252 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1253 0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1254 {
1255 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1256 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1257 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1258 0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1259 {
1260 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1261 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1262 0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1263 0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1264 {
1265 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1266 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1267 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1268 0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1269 {
1270 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1271 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1272 0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1273 0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1274 {
1275 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1276 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1277 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1278 0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1279 {
1280 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1281 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1282 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1283 0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1284 {
1285 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1286 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1287 0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1288 0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1289 {
1290 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1291 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1292 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1293 0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1294 {
1295 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1296 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1297 0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1298 0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1299 {
1300 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1301 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1302 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1303 0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1304 {
1305 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1306 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1307 0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1308 0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1309 {
1310 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1311 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1312 0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1313 0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1314 {
1315 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1316 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1317 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1318 0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1319 {
1320 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1321 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1322 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1323 0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1324 {
1325 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1326 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1327 0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1328 0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1329 {
1330 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1331 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1332 0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1333 0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1334 {
1335 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1336 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1337 0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1338 0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1339 {
1340 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1341 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1342 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1343 0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1344 {
1345 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1346 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1347 0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1348 0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1349 {
1350 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1351 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1352 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1353 0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1354 {
1355 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1356 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1357 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1358 0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1359 {
1360 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1361 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1362 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1363 0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1364 {
1365 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1366 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1367 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1368 0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1369 {
1370 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1371 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1372 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1373 0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1374 {
1375 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1376 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1377 0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1378 0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1379 {
1380 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1381 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1382 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1383 0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1384 {
1385 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1386 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1387 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1388 0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1389 {
1390 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1391 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1392 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1393 0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1394 {
1395 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1396 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1397 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1398 0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1399 {
1400 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1401 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1402 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1403 0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1404 {
1405 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1406 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1407 0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1408 0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1409 {
1410 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1411 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1412 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1413 0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1414 {
1415 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1416 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1417 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1418 0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1419 {
1420 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1421 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1422 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1423 0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1424 {
1425 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1426 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1427 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1428 0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1429 {
1430 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1431 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1432 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1433 0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1434 {
1435 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1436 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1437 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1438 0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1439 {
1440 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1441 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1442 0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1443 0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1444 {
1445 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1446 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1447 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1448 0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1449 {
1450 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1451 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1452 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1453 0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1454 {
1455 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1456 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1457 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1458 0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1459 {
1460 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1461 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1462 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1463 0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1464 {
1465 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1466 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1467 0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1468 0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1469 {
1470 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1471 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1472 0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1473 0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1474 {
1475 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1476 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1477 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1478 0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1479 {
1480 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1481 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1482 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1483 0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1484 {
1485 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1486 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1487 0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1488 0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1489 {
1490 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1491 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1492 0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1493 0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1494 {
1495 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1496 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1497 0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1498 0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1499 {
1500 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1501 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1502 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1503 0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1504 {
1505 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1506 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1507 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1508 0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1509 {
1510 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1511 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1512 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1513 0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1514 {
1515 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1516 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1517 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1518 0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1519 {
1520 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1521 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1522 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1523 0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1524 {
1525 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1526 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1527 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1528 0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1529 {
1530 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1531 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1532 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1533 0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1534 {
1535 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1536 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1537 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1538 0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1539 {
1540 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1541 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1542 0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1543 0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1544 {
1545 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1546 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1547 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1548 0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1549 {
1550 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1551 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1552 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1553 0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1554 {
1555 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1556 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1557 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1558 0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1559 {
1560 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1561 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1562 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1563 0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1564 {
1565 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1566 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1567 0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1568 0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1569 };
1570
1571 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1572 {
1573 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1574 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1575 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1576 0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1577 {
1578 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1579 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1580 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1581 0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1582 {
1583 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1584 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1585 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1586 0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1587 {
1588 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1589 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1590 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1591 0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1592 {
1593 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1594 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1595 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1596 0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1597 {
1598 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1599 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1600 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1601 0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1602 {
1603 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1604 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1605 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1606 0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1607 {
1608 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1609 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1610 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1611 0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1612 {
1613 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1614 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1615 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1616 0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1617 {
1618 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1619 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1620 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1621 0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1622 {
1623 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1624 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1625 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1626 0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1627 {
1628 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1629 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1630 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1631 0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1632 {
1633 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1634 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1635 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1636 0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1637 {
1638 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1639 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1640 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1641 0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1642 {
1643 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1644 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1645 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1646 0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1647 {
1648 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1649 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1650 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1651 0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1652 {
1653 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1654 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1655 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1656 0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1657 {
1658 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1659 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1660 0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1661 0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1662 {
1663 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1664 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1665 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1666 0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1667 {
1668 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1669 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1670 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1671 0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1672 {
1673 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1674 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1675 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1676 0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1677 {
1678 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1679 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1680 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1681 0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1682 {
1683 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1684 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1685 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1686 0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1687 {
1688 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1689 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1690 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1691 0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1692 {
1693 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1694 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1695 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1696 0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1697 {
1698 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1699 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1700 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1701 0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1702 {
1703 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1704 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1705 0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1706 0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1707 {
1708 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1709 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1710 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1711 0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1712 {
1713 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1714 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1715 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1716 0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1717 {
1718 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1719 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1720 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1721 0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1722 {
1723 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1724 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1725 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1726 0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1727 {
1728 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1729 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1730 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1731 0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1732 {
1733 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1734 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1735 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1736 0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1737 {
1738 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1739 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1740 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1741 0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1742 {
1743 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1744 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1745 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1746 0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1747 {
1748 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1749 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1750 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1751 0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1752 {
1753 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1754 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1755 0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1756 0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1757 {
1758 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1759 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1760 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1761 0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1762 {
1763 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1764 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1765 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1766 0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1767 {
1768 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1769 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1770 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1771 0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1772 {
1773 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1774 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1775 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1776 0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1777 {
1778 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1779 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1780 0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1781 0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1782 {
1783 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1784 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1785 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1786 0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1787 {
1788 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1789 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1790 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1791 0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1792 {
1793 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1794 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1795 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1796 0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1797 {
1798 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1799 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1800 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1801 0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1802 {
1803 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1804 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1805 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1806 0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1807 {
1808 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1809 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1810 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1811 0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1812 {
1813 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1814 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1815 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1816 0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1817 {
1818 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1819 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1820 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1821 0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1822 {
1823 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1824 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1825 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1826 0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1827 {
1828 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1829 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1830 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1831 0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1832 {
1833 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1834 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1835 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1836 0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1837 {
1838 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1839 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1840 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1841 0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1842 {
1843 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1844 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1845 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1846 0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1847 {
1848 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1849 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1850 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1851 0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1852 {
1853 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1854 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1855 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1856 0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1857 {
1858 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1859 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1860 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1861 0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1862 {
1863 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1864 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1865 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1866 0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1867 {
1868 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1869 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1870 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1871 0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1872 {
1873 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1874 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1875 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1876 0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1877 {
1878 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1879 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1880 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1881 0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1882 {
1883 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1884 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1885 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1886 0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1887 {
1888 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1889 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1890 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1891 0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1892 {
1893 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1894 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1895 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1896 0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1897 {
1898 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1899 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1900 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1901 0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1902 {
1903 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1904 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1905 0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1906 0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1907 {
1908 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1909 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1910 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1911 0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1912 {
1913 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1914 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1915 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1916 0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1917 {
1918 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1919 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1920 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1921 0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1922 {
1923 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1924 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1925 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1926 0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1927 {
1928 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1929 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1930 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1931 0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1932 {
1933 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1934 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1935 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1936 0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1937 {
1938 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1939 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1940 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1941 0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1942 {
1943 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1944 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1945 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1946 0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1947 {
1948 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1949 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1950 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1951 0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1952 {
1953 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1954 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1955 0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1956 0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1957 {
1958 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1959 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1960 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1961 0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1962 {
1963 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1964 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1965 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1966 0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1967 {
1968 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1969 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1970 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1971 0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1972 {
1973 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1974 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1975 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1976 0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1977 {
1978 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1979 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1980 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1981 0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1982 {
1983 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1984 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1985 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1986 0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1987 {
1988 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1989 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1990 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1991 0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1992 {
1993 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1994 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1995 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1996 0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1997 {
1998 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1999 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
2000 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2001 0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2002 {
2003 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2004 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2005 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2006 0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2007 {
2008 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2009 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2010 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2011 0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2012 {
2013 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2014 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2015 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2016 0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2017 {
2018 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2019 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2020 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2021 0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2022 {
2023 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2024 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2025 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2026 0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2027 {
2028 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2029 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2030 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2031 0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2032 {
2033 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2034 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2035 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2036 0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2037 {
2038 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2039 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2040 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2041 0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2042 {
2043 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2044 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2045 0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2046 0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2047 {
2048 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2049 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2050 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2051 0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2052 {
2053 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2054 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2055 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2056 0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2057 {
2058 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2059 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2060 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2061 0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2062 {
2063 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2064 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2065 0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2066 0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2067 {
2068 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2069 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2070 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2071 0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2072 {
2073 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2074 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2075 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2076 0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2077 {
2078 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2079 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2080 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2081 0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2082 {
2083 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2084 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2085 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2086 0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2087 {
2088 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2089 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2090 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2091 0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2092 {
2093 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2094 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2095 0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2096 0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2097 {
2098 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2099 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2100 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2101 0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2102 {
2103 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2104 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2105 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2106 0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2107 {
2108 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2109 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2110 0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2111 0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2112 {
2113 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2114 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2115 0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2116 0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2117 {
2118 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2119 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2120 0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2121 0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2122 {
2123 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2124 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2125 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2126 0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2127 {
2128 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2129 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2130 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2131 0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2132 {
2133 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2134 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2135 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2136 0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2137 {
2138 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2139 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2140 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2141 0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2142 {
2143 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2144 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2145 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2146 0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2147 {
2148 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2149 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2150 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2151 0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2152 {
2153 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2154 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2155 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2156 0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2157 {
2158 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2159 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2160 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2161 0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2162 {
2163 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2164 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2165 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2166 0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2167 {
2168 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2169 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2170 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2171 0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2172 {
2173 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2174 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2175 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2176 0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2177 {
2178 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2179 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2180 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2181 0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2182 {
2183 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2184 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2185 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2186 0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2187 {
2188 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2189 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2190 0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2191 0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2192 };
2193
2194 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2195 {
2196 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2197 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2198 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2199 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2200 {
2201 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2202 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2203 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2204 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2205 {
2206 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2207 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2208 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2209 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2210 {
2211 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2212 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2213 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2214 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2215 {
2216 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2217 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2218 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2219 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2220 {
2221 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2222 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2223 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2224 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2225 {
2226 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2227 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2228 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2229 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2230 {
2231 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2232 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2233 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2234 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2235 {
2236 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2237 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2238 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2239 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2240 {
2241 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2242 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2243 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2244 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2245 {
2246 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2247 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2248 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2249 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2250 {
2251 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2252 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2253 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2254 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2255 {
2256 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2257 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2258 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2259 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2260 {
2261 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2262 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2263 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2264 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2265 {
2266 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2267 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2268 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2269 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2270 {
2271 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2272 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2273 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2274 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2275 {
2276 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2277 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2278 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2279 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2280 {
2281 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2282 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2283 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2284 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2285 {
2286 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2287 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2288 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2289 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2290 {
2291 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2292 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2293 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2294 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2295 {
2296 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2297 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2298 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2299 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2300 {
2301 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2302 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2303 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2304 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2305 {
2306 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2307 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2308 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2309 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2310 {
2311 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2312 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2313 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2314 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2315 {
2316 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2317 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2318 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2319 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2320 {
2321 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2322 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2323 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2324 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2325 {
2326 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2327 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2328 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2329 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2330 {
2331 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2332 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2333 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2334 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2335 {
2336 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2337 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2338 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2339 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2340 {
2341 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2342 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2343 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2344 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2345 {
2346 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2347 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2348 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2349 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2350 {
2351 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2352 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2353 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2354 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2355 {
2356 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2357 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2358 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2359 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2360 {
2361 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2362 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2363 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2364 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2365 {
2366 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2367 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2368 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2369 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2370 {
2371 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2372 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2373 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2374 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2375 {
2376 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2377 0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2378 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2379 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2380 {
2381 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2382 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2383 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2384 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2385 {
2386 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2387 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2388 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2389 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2390 {
2391 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2392 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2393 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2394 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2395 {
2396 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2397 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2398 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2399 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2400 {
2401 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2402 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2403 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2404 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2405 {
2406 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2407 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2408 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2409 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2410 {
2411 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2412 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2413 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2414 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2415 {
2416 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2417 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2418 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2419 0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2420 {
2421 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2422 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2423 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2424 0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2425 {
2426 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2427 0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2428 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2429 0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2430 {
2431 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2432 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2433 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2434 0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2435 {
2436 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2437 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2438 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2439 0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2440 {
2441 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2442 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2443 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2444 0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2445 {
2446 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2447 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2448 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2449 0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2450 {
2451 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2452 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2453 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2454 0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2455 {
2456 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2457 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2458 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2459 0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2460 {
2461 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2462 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2463 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2464 0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2465 {
2466 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2467 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2468 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2469 0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2470 {
2471 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2472 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2473 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2474 0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2475 {
2476 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2477 0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2478 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2479 0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2480 {
2481 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2482 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2483 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2484 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2485 {
2486 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2487 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2488 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2489 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2490 {
2491 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2492 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2493 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2494 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2495 {
2496 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2497 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2498 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2499 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2500 {
2501 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2502 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2503 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2504 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2505 {
2506 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2507 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2508 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2509 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2510 {
2511 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2512 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2513 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2514 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2515 {
2516 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2517 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2518 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2519 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2520 {
2521 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2522 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2523 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2524 0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2525 {
2526 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2527 0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2528 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2529 0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2530 {
2531 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2532 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2533 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2534 0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2535 {
2536 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2537 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2538 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2539 0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2540 {
2541 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2542 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2543 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2544 0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2545 {
2546 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2547 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2548 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2549 0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2550 {
2551 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2552 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2553 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2554 0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2555 {
2556 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2557 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2558 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2559 0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2560 {
2561 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2562 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2563 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2564 0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2565 {
2566 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2567 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2568 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2569 0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2570 {
2571 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2572 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2573 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2574 0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2575 {
2576 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2577 0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2578 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2579 0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2580 {
2581 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2582 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2583 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2584 0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2585 {
2586 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2587 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2588 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2589 0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2590 {
2591 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2592 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2593 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2594 0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2595 {
2596 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2597 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2598 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2599 0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2600 {
2601 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2602 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2603 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2604 0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2605 {
2606 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2607 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2608 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2609 0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2610 {
2611 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2612 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2613 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2614 0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2615 {
2616 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2617 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2618 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2619 0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2620 {
2621 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2622 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2623 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2624 0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2625 {
2626 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2627 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2628 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2629 0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2630 {
2631 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2632 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2633 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2634 0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2635 {
2636 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2637 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2638 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2639 0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2640 {
2641 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2642 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2643 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2644 0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2645 {
2646 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2647 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2648 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2649 0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2650 {
2651 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2652 0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2653 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2654 0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2655 {
2656 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2657 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2658 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2659 0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2660 {
2661 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2662 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2663 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2664 0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2665 {
2666 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2667 0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2668 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2669 0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2670 {
2671 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2672 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2673 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2674 0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2675 {
2676 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2677 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2678 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2679 0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2680 {
2681 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2682 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2683 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2684 0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2685 {
2686 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2687 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2688 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2689 0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2690 {
2691 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2692 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2693 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2694 0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2695 {
2696 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2697 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2698 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2699 0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2700 {
2701 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2702 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2703 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2704 0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2705 {
2706 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2707 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2708 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2709 0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2710 {
2711 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2712 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2713 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2714 0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2715 {
2716 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2717 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2718 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2719 0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2720 {
2721 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2722 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2723 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2724 0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2725 {
2726 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2727 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2728 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2729 0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2730 {
2731 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2732 0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2733 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2734 0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2735 {
2736 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2737 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2738 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2739 0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2740 {
2741 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2742 0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2743 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2744 0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2745 {
2746 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2747 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2748 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2749 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2750 {
2751 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2752 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2753 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2754 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2755 {
2756 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2757 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2758 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2759 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2760 {
2761 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2762 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2763 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2764 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2765 {
2766 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2767 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2768 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2769 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2770 {
2771 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2772 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2773 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2774 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2775 {
2776 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2777 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2778 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2779 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2780 {
2781 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2782 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2783 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2784 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2785 {
2786 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2787 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2788 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2789 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2790 {
2791 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2792 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2793 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2794 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2795 {
2796 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2797 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2798 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2799 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2800 {
2801 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2802 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2803 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2804 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2805 {
2806 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2807 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2808 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2809 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2810 {
2811 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2812 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2813 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2814 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2815 };
2816
2817 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2818 {
2819 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2820 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2821 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2822 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2823 {
2824 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2825 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2826 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2827 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2828 {
2829 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2830 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2831 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2832 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2833 {
2834 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2835 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2836 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2837 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2838 {
2839 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2840 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2841 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2842 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2843 {
2844 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2845 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2846 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2847 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2848 {
2849 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2850 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2851 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2852 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2853 {
2854 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2855 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2856 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2857 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2858 {
2859 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2860 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2861 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2862 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2863 {
2864 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2865 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2866 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2867 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2868 {
2869 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2870 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2871 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2872 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2873 {
2874 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2875 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2876 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2877 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2878 {
2879 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2880 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2881 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2882 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2883 {
2884 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2885 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2886 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2887 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2888 {
2889 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2890 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2891 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2892 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2893 {
2894 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2895 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2896 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2897 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2898 {
2899 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2900 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2901 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2902 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2903 {
2904 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2905 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2906 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2907 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2908 {
2909 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2910 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2911 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2912 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2913 {
2914 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2915 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2916 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2917 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2918 {
2919 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2920 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2921 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2922 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2923 {
2924 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2925 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2926 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2927 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2928 {
2929 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2930 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2931 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2932 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2933 {
2934 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2935 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2936 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2937 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2938 {
2939 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2940 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2941 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2942 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2943 {
2944 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2945 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2946 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2947 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2948 {
2949 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2950 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2951 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2952 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2953 {
2954 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2955 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2956 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2957 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2958 {
2959 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2960 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2961 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2962 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2963 {
2964 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2965 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2966 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2967 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2968 {
2969 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2970 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2971 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2972 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2973 {
2974 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2975 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2976 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2977 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2978 {
2979 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2980 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2981 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2982 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2983 {
2984 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2985 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2986 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2987 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2988 {
2989 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2990 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2991 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2992 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2993 {
2994 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2995 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2996 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2997 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2998 {
2999 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3000 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3001 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3002 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3003 {
3004 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3005 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3006 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3007 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3008 {
3009 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3010 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3011 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3012 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3013 {
3014 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3015 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3016 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3017 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3018 {
3019 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3020 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3021 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3022 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3023 {
3024 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3025 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3026 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3027 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3028 {
3029 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3030 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3031 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3032 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3033 {
3034 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3035 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3036 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3037 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3038 {
3039 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3040 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3041 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3042 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3043 {
3044 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3045 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3046 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3047 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3048 {
3049 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3050 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3051 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3052 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3053 {
3054 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3055 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3056 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3057 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3058 {
3059 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3060 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3061 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3062 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3063 {
3064 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3065 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3066 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3067 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3068 {
3069 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3070 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3071 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3072 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3073 {
3074 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3075 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3076 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3077 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3078 {
3079 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3080 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3081 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3082 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3083 {
3084 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3085 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3086 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3087 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3088 {
3089 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3090 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3091 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3092 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3093 {
3094 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3095 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3096 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3097 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3098 {
3099 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3100 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3101 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3102 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3103 {
3104 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3105 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3106 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3107 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3108 {
3109 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3110 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3111 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3112 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3113 {
3114 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3115 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3116 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3117 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3118 {
3119 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3120 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3121 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3122 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3123 {
3124 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3125 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3126 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3127 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3128 {
3129 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3130 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3131 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3132 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3133 {
3134 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3135 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3136 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3137 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3138 {
3139 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3140 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3141 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3142 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3143 {
3144 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3145 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3146 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3147 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3148 {
3149 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3150 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3151 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3152 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3153 {
3154 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3155 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3156 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3157 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3158 {
3159 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3160 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3161 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3162 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3163 {
3164 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3165 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3166 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3167 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3168 {
3169 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3170 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3171 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3172 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3173 {
3174 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3175 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3176 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3177 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3178 {
3179 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3180 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3181 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3182 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3183 {
3184 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3185 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3186 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3187 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3188 {
3189 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3190 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3191 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3192 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3193 {
3194 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3195 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3196 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3197 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3198 {
3199 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3200 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3201 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3202 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3203 {
3204 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3205 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3206 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3207 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3208 {
3209 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3210 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3211 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3212 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3213 {
3214 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3215 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3216 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3217 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3218 {
3219 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3220 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3221 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3222 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3223 {
3224 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3225 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3226 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3227 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3228 {
3229 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3230 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3231 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3232 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3233 {
3234 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3235 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3236 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3237 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3238 {
3239 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3240 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3241 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3242 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3243 {
3244 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3245 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3246 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3247 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3248 {
3249 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3250 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3251 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3252 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3253 {
3254 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3255 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3256 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3257 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3258 {
3259 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3260 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3261 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3262 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3263 {
3264 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3265 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3266 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3267 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3268 {
3269 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3270 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3271 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3272 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3273 {
3274 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3275 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3276 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3277 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3278 {
3279 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3280 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3281 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3282 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3283 {
3284 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3285 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3286 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3287 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3288 {
3289 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3290 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3291 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3292 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3293 {
3294 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3295 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3296 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3297 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3298 {
3299 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3300 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3301 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3302 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3303 {
3304 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3305 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3306 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3307 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3308 {
3309 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3310 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3311 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3312 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3313 {
3314 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3315 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3316 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3317 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3318 {
3319 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3320 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3321 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3322 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3323 {
3324 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3325 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3326 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3327 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3328 {
3329 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3330 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3331 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3332 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3333 {
3334 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3335 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3336 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3337 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3338 {
3339 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3340 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3341 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3342 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3343 {
3344 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3345 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3346 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3347 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3348 {
3349 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3350 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3351 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3352 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3353 {
3354 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3355 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3356 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3357 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3358 {
3359 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3360 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3361 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3362 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3363 {
3364 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3365 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3366 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3367 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3368 {
3369 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3370 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3371 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3372 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3373 {
3374 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3375 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3376 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3377 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3378 {
3379 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3380 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3381 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3382 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3383 {
3384 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3385 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3386 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3387 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3388 {
3389 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3390 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3391 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3392 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3393 {
3394 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3395 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3396 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3397 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3398 {
3399 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3400 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3401 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3402 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3403 {
3404 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3405 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3406 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3407 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3408 {
3409 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3410 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3411 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3412 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3413 {
3414 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3415 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3416 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3417 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3418 {
3419 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3420 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3421 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3422 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3423 {
3424 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3425 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3426 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3427 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3428 {
3429 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3430 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3431 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3432 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3433 {
3434 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3435 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3436 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3437 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3438 };
3439
3440 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3441 {
3442 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3443 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3444 0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3445 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3446 {
3447 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3448 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3449 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3450 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3451 {
3452 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3453 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3454 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3455 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3456 {
3457 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3458 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3459 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3460 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3461 {
3462 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3463 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3464 0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3465 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3466 {
3467 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3468 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3469 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3470 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3471 {
3472 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3473 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3474 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3475 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3476 {
3477 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3478 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3479 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3480 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3481 {
3482 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3483 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3484 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3485 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3486 {
3487 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3488 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3489 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3490 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3491 {
3492 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3493 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3494 0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3495 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3496 {
3497 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3498 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3499 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3500 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3501 {
3502 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3503 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3504 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3505 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3506 {
3507 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3508 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3509 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3510 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3511 {
3512 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3513 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3514 0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3515 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3516 {
3517 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3518 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3519 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3520 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3521 {
3522 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3523 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3524 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3525 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3526 {
3527 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3528 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3529 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3530 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3531 {
3532 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3533 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3534 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3535 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3536 {
3537 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3538 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3539 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3540 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3541 {
3542 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3543 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3544 0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3545 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3546 {
3547 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3548 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3549 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3550 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3551 {
3552 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3553 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3554 0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3555 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3556 {
3557 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3558 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3559 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3560 0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3561 {
3562 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3563 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3564 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3565 0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3566 {
3567 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3568 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3569 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3570 0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3571 {
3572 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3573 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3574 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3575 0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3576 {
3577 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3578 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3579 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3580 0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3581 {
3582 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3583 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3584 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3585 0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3586 {
3587 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3588 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3589 0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3590 0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3591 {
3592 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3593 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3594 0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3595 0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3596 {
3597 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3598 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3599 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3600 0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3601 {
3602 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3603 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3604 0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3605 0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3606 {
3607 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3608 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3609 0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3610 0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3611 {
3612 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3613 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3614 0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3615 0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3616 {
3617 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3618 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3619 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3620 0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3621 {
3622 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3623 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3624 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3625 0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3626 {
3627 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3628 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3629 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3630 0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3631 {
3632 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3633 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3634 0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3635 0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3636 {
3637 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3638 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3639 0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3640 0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3641 {
3642 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3643 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3644 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3645 0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3646 {
3647 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3648 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3649 0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3650 0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3651 {
3652 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3653 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3654 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3655 0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3656 {
3657 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3658 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3659 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3660 0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3661 {
3662 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3663 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3664 0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3665 0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3666 {
3667 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3668 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3669 0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3670 0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3671 {
3672 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3673 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3674 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3675 0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3676 {
3677 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3678 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3679 0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3680 0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3681 {
3682 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3683 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3684 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3685 0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3686 {
3687 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3688 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3689 0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3690 0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3691 {
3692 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3693 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3694 0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3695 0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3696 {
3697 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3698 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3699 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3700 0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3701 {
3702 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3703 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3704 0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3705 0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3706 {
3707 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3708 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3709 0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3710 0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3711 {
3712 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3713 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3714 0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3715 0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3716 {
3717 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3718 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3719 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3720 0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3721 {
3722 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3723 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3724 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3725 0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3726 {
3727 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3728 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3729 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3730 0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3731 {
3732 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3733 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3734 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3735 0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3736 {
3737 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3738 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3739 0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3740 0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3741 {
3742 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3743 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3744 0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3745 0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3746 {
3747 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3748 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3749 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3750 0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3751 {
3752 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3753 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3754 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3755 0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3756 {
3757 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3758 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3759 0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3760 0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3761 {
3762 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3763 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3764 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3765 0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3766 {
3767 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3768 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3769 0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3770 0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3771 {
3772 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3773 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3774 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3775 0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3776 {
3777 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3778 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3779 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3780 0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3781 {
3782 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3783 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3784 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3785 0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3786 {
3787 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3788 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3789 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3790 0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3791 {
3792 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3793 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3794 0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3795 0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3796 {
3797 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3798 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3799 0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3800 0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3801 {
3802 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3803 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3804 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3805 0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3806 {
3807 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3808 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3809 0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3810 0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3811 {
3812 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3813 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3814 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3815 0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3816 {
3817 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3818 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3819 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3820 0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3821 {
3822 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3823 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3824 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3825 0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3826 {
3827 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3828 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3829 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3830 0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3831 {
3832 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3833 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3834 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3835 0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3836 {
3837 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3838 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3839 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3840 0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3841 {
3842 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3843 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3844 0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3845 0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3846 {
3847 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3848 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3849 0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3850 0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3851 {
3852 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3853 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3854 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3855 0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3856 {
3857 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3858 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3859 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3860 0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3861 {
3862 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3863 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3864 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3865 0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3866 {
3867 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3868 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3869 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3870 0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3871 {
3872 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3873 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3874 0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3875 0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3876 {
3877 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3878 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3879 0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3880 0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3881 {
3882 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3883 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3884 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3885 0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3886 {
3887 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3888 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3889 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3890 0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3891 {
3892 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3893 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3894 0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3895 0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3896 {
3897 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3898 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3899 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3900 0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3901 {
3902 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3903 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3904 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3905 0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3906 {
3907 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3908 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3909 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3910 0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3911 {
3912 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3913 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3914 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3915 0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3916 {
3917 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3918 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3919 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3920 0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3921 {
3922 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3923 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3924 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3925 0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3926 {
3927 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3928 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3929 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3930 0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3931 {
3932 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3933 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3934 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3935 0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3936 {
3937 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3938 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3939 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3940 0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3941 {
3942 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3943 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3944 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3945 0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3946 {
3947 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3948 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3949 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3950 0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3951 {
3952 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3953 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3954 0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3955 0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3956 {
3957 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3958 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3959 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3960 0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3961 {
3962 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3963 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3964 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3965 0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3966 {
3967 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3968 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3969 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3970 0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3971 {
3972 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3973 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3974 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3975 0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3976 {
3977 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3978 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3979 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3980 0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3981 {
3982 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3983 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3984 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3985 0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3986 {
3987 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3988 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3989 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3990 0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3991 {
3992 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3993 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3994 0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3995 0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3996 {
3997 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3998 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3999 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4000 0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4001 {
4002 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4003 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4004 0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4005 0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4006 {
4007 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4008 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4009 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4010 0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4011 {
4012 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4013 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4014 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4015 0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4016 {
4017 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4018 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4019 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4020 0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4021 {
4022 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4023 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4024 0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4025 0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4026 {
4027 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4028 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4029 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4030 0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4031 {
4032 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4033 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4034 0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4035 0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4036 {
4037 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4038 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4039 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4040 0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4041 {
4042 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4043 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4044 0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4045 0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4046 {
4047 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4048 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4049 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4050 0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4051 {
4052 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4053 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4054 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4055 0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4056 {
4057 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4058 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4059 0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4060 0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4061 };
4062
4063 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4064 {
4065 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4066 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4067 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4068 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4069 {
4070 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4071 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4072 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4073 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4074 {
4075 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4076 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4077 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4078 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4079 {
4080 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4081 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4082 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4083 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4084 {
4085 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4086 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4087 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4088 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4089 {
4090 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4091 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4092 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4093 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4094 {
4095 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4096 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4097 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4098 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4099 {
4100 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4101 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4102 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4103 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4104 {
4105 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4106 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4107 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4108 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4109 {
4110 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4111 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4112 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4113 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4114 {
4115 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4116 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4117 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4118 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4119 {
4120 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4121 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4122 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4123 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4124 {
4125 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4126 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4127 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4128 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4129 {
4130 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4131 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4132 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4133 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4134 {
4135 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4136 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4137 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4138 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4139 {
4140 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4141 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4142 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4143 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4144 {
4145 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4146 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4147 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4148 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4149 {
4150 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4151 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4152 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4153 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4154 {
4155 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4156 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4157 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4158 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4159 {
4160 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4161 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4162 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4163 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4164 {
4165 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4166 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4167 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4168 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4169 {
4170 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4171 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4172 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4173 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4174 {
4175 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4176 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4177 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4178 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4179 {
4180 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4181 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4182 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4183 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4184 {
4185 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4186 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4187 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4188 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4189 {
4190 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4191 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4192 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4193 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4194 {
4195 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4196 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4197 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4198 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4199 {
4200 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4201 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4202 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4203 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4204 {
4205 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4206 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4207 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4208 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4209 {
4210 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4211 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4212 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4213 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4214 {
4215 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4216 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4217 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4218 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4219 {
4220 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4221 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4222 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4223 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4224 {
4225 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4226 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4227 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4228 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4229 {
4230 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4231 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4232 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4233 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4234 {
4235 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4236 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4237 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4238 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4239 {
4240 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4241 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4242 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4243 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4244 {
4245 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4246 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4247 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4248 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4249 {
4250 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4251 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4252 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4253 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4254 {
4255 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4256 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4257 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4258 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4259 {
4260 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4261 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4262 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4263 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4264 {
4265 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4266 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4267 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4268 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4269 {
4270 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4271 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4272 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4273 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4274 {
4275 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4276 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4277 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4278 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4279 {
4280 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4281 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4282 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4283 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4284 {
4285 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4286 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4287 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4288 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4289 {
4290 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4291 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4292 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4293 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4294 {
4295 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4296 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4297 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4298 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4299 {
4300 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4301 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4302 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4303 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4304 {
4305 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4306 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4307 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4308 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4309 {
4310 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4311 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4312 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4313 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4314 {
4315 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4316 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4317 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4318 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4319 {
4320 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4321 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4322 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4323 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4324 {
4325 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4326 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4327 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4328 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4329 {
4330 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4331 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4332 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4333 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4334 {
4335 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4336 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4337 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4338 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4339 {
4340 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4341 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4342 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4343 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4344 {
4345 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4346 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4347 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4348 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4349 {
4350 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4351 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4352 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4353 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4354 {
4355 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4356 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4357 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4358 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4359 {
4360 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4361 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4362 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4363 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4364 {
4365 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4366 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4367 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4368 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4369 {
4370 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4371 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4372 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4373 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4374 {
4375 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4376 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4377 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4378 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4379 {
4380 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4381 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4382 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4383 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4384 {
4385 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4386 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4387 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4388 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4389 {
4390 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4391 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4392 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4393 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4394 {
4395 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4396 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4397 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4398 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4399 {
4400 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4401 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4402 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4403 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4404 {
4405 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4406 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4407 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4408 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4409 {
4410 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4411 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4412 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4413 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4414 {
4415 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4416 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4417 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4418 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4419 {
4420 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4421 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4422 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4423 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4424 {
4425 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4426 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4427 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4428 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4429 {
4430 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4431 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4432 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4433 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4434 {
4435 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4436 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4437 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4438 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4439 {
4440 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4441 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4442 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4443 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4444 {
4445 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4446 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4447 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4448 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4449 {
4450 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4451 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4452 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4453 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4454 {
4455 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4456 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4457 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4458 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4459 {
4460 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4461 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4462 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4463 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4464 {
4465 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4466 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4467 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4468 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4469 {
4470 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4471 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4472 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4473 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4474 {
4475 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4476 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4477 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4478 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4479 {
4480 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4481 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4482 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4483 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4484 {
4485 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4486 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4487 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4488 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4489 {
4490 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4491 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4492 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4493 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4494 {
4495 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4496 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4497 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4498 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4499 {
4500 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4501 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4502 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4503 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4504 {
4505 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4506 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4507 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4508 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4509 {
4510 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4511 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4512 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4513 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4514 {
4515 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4516 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4517 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4518 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4519 {
4520 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4521 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4522 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4523 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4524 {
4525 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4526 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4527 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4528 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4529 {
4530 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4531 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4532 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4533 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4534 {
4535 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4536 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4537 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4538 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4539 {
4540 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4541 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4542 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4543 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4544 {
4545 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4546 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4547 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4548 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4549 {
4550 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4551 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4552 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4553 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4554 {
4555 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4556 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4557 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4558 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4559 {
4560 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4561 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4562 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4563 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4564 {
4565 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4566 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4567 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4568 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4569 {
4570 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4571 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4572 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4573 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4574 {
4575 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4576 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4577 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4578 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4579 {
4580 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4581 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4582 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4583 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4584 {
4585 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4586 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4587 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4588 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4589 {
4590 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4591 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4592 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4593 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4594 {
4595 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4596 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4597 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4598 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4599 {
4600 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4601 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4602 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4603 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4604 {
4605 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4606 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4607 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4608 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4609 {
4610 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4611 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4612 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4613 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4614 {
4615 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4616 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4617 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4618 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4619 {
4620 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4621 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4622 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4623 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4624 {
4625 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4626 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4627 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4628 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4629 {
4630 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4631 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4632 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4633 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4634 {
4635 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4636 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4637 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4638 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4639 {
4640 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4641 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4642 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4643 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4644 {
4645 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4646 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4647 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4648 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4649 {
4650 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4651 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4652 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4653 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4654 {
4655 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4656 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4657 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4658 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4659 {
4660 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4661 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4662 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4663 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4664 {
4665 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4666 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4667 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4668 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4669 {
4670 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4671 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4672 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4673 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4674 {
4675 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4676 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4677 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4678 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4679 {
4680 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4681 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4682 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4683 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4684 };
4685
4686 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4687 {
4688 184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4689 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4690 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4691 0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4692 {
4693 186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4694 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4695 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4696 0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4697 {
4698 188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4699 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4700 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4701 0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4702 {
4703 190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4704 0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4705 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4706 0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4707 {
4708 192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4709 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4710 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4711 0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4712 {
4713 194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4714 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4715 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4716 0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4717 {
4718 196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4719 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4720 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4721 0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4722 {
4723 198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4724 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4725 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4726 0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4727 {
4728 200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4729 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4730 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4731 0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4732 {
4733 202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4734 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4735 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4736 0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4737 {
4738 204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4739 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4740 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4741 0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4742 {
4743 206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4744 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4745 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4746 0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4747 {
4748 208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4749 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4750 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4751 0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4752 {
4753 210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4754 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4755 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4756 0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4757 {
4758 212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4759 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4760 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4761 0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4762 {
4763 214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4764 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4765 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4766 0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4767 {
4768 216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4769 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4770 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4771 0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4772 {
4773 218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4774 0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4775 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4776 0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4777 {
4778 220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4779 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4780 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4781 0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4782 {
4783 222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4784 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4785 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4786 0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4787 {
4788 224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4789 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4790 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4791 0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4792 {
4793 226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4794 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4795 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4796 0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4797 {
4798 228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4799 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4800 0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4801 0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4802 {
4803 32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4804 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4805 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4806 0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4807 {
4808 34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4809 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4810 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4811 0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4812 {
4813 36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4814 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4815 0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4816 0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4817 {
4818 38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4819 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4820 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4821 0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4822 {
4823 40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4824 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4825 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4826 0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4827 {
4828 42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4829 0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4830 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4831 0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4832 {
4833 44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4834 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4835 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4836 0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4837 {
4838 46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4839 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4840 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4841 0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4842 {
4843 48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4844 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4845 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4846 0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4847 {
4848 50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4849 0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4850 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4851 0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4852 {
4853 52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4854 0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4855 0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4856 0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4857 {
4858 54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4859 0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4860 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4861 0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4862 {
4863 56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4864 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4865 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4866 0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4867 {
4868 58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4869 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4870 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4871 0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4872 {
4873 60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4874 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4875 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4876 0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4877 {
4878 62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4879 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4880 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4881 0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4882 {
4883 64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4884 0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4885 0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4886 0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4887 {
4888 66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4889 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4890 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4891 0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4892 {
4893 68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4894 0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4895 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4896 0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4897 {
4898 70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4899 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4900 0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4901 0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4902 {
4903 72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4904 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4905 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4906 0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4907 {
4908 74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4909 0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4910 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4911 0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4912 {
4913 76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4914 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4915 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4916 0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4917 {
4918 78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4919 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4920 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4921 0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4922 {
4923 80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4924 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4925 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4926 0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4927 {
4928 82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4929 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4930 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4931 0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4932 {
4933 84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4934 0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4935 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4936 0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4937 {
4938 86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4939 0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4940 0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4941 0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4942 {
4943 88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4944 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4945 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4946 0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4947 {
4948 90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4949 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4950 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4951 0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4952 {
4953 92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4954 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4955 0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4956 0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4957 {
4958 94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4959 0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4960 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4961 0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4962 {
4963 96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4964 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4965 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4966 0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4967 {
4968 98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4969 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4970 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4971 0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4972 {
4973 100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4974 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4975 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4976 0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4977 {
4978 102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4979 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4980 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4981 0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4982 {
4983 104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4984 0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4985 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4986 0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4987 {
4988 106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4989 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4990 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4991 0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4992 {
4993 108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4994 0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4995 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4996 0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4997 {
4998 110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4999 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5000 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5001 0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5002 {
5003 112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5004 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5005 0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5006 0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5007 {
5008 114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5009 0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5010 0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5011 0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5012 {
5013 116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5014 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5015 0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5016 0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5017 {
5018 118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5019 0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5020 0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5021 0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5022 {
5023 120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5024 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5025 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5026 0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5027 {
5028 122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5029 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5030 0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5031 0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5032 {
5033 124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5034 0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5035 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5036 0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5037 {
5038 126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5039 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5040 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5041 0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5042 {
5043 128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5044 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5045 0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5046 0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5047 {
5048 130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5049 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5050 0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5051 0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5052 {
5053 132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5054 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5055 0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5056 0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5057 {
5058 134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5059 0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5060 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5061 0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5062 {
5063 136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5064 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5065 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5066 0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5067 {
5068 138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5069 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5070 0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5071 0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5072 {
5073 140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5074 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5075 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5076 0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5077 {
5078 142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5079 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5080 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5081 0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5082 {
5083 144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5084 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5085 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5086 0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5087 {
5088 145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5089 0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5090 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5091 0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5092 {
5093 146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5094 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5095 0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5096 0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5097 {
5098 147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5099 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5100 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5101 0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5102 {
5103 148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5104 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5105 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5106 0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5107 {
5108 149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5109 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5110 0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5111 0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5112 {
5113 150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5114 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5115 0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5116 0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5117 {
5118 151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5119 0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5120 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5121 0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5122 {
5123 152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5124 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5125 0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5126 0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5127 {
5128 153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5129 0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5130 0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5131 0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5132 {
5133 154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5134 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5135 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5136 0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5137 {
5138 155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5139 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5140 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5141 0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5142 {
5143 156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5144 0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5145 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5146 0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5147 {
5148 157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5149 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5150 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5151 0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5152 {
5153 158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5154 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5155 0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5156 0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5157 {
5158 159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5159 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5160 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5161 0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5162 {
5163 160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5164 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5165 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5166 0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5167 {
5168 161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5169 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5170 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5171 0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5172 {
5173 162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5174 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5175 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5176 0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5177 {
5178 163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5179 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5180 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5181 0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5182 {
5183 164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5184 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5185 0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5186 0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5187 {
5188 165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5189 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5190 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5191 0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5192 {
5193 166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5194 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5195 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5196 0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5197 {
5198 168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5199 0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5200 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5201 0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5202 {
5203 170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5204 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5205 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5206 0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5207 {
5208 172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5209 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5210 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5211 0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5212 {
5213 174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5214 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5215 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5216 0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5217 {
5218 176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5219 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5220 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5221 0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5222 {
5223 178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5224 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5225 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5226 0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5227 {
5228 180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5229 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5230 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5231 0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5232 {
5233 182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5234 0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5235 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5236 0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5237 {
5238 1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5239 0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5240 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5241 0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5242 {
5243 2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5244 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5245 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5246 0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5247 {
5248 3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5249 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5250 0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5251 0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5252 {
5253 4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5254 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5255 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5256 0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5257 {
5258 5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5259 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5260 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5261 0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5262 {
5263 6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5264 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5265 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5266 0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5267 {
5268 7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5269 0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5270 0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5271 0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5272 {
5273 8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5274 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5275 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5276 0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5277 {
5278 9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5279 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5280 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5281 0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5282 {
5283 10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5284 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5285 0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5286 0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5287 {
5288 11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5289 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5290 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5291 0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5292 {
5293 12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5294 0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5295 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5296 0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5297 {
5298 13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5299 0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5300 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5301 0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5302 {
5303 14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5304 0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5305 0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5306 0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5307 };
5308
5309 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5310 {
5311 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5312 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5313 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5314 0x0215,
5315 0x0216,
5316 },
5317 {
5318 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5319 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5320 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5321 0x0214,
5322 0x0215,
5323 },
5324 {
5325 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5326 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5327 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5328 0x0213,
5329 0x0214,
5330 },
5331 {
5332 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5333 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5334 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5335 0x0212,
5336 0x0213,
5337 },
5338 {
5339 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5340 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5341 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5342 0x0211,
5343 0x0212,
5344 },
5345 {
5346 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5347 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5348 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5349 0x020f,
5350 0x0211,
5351 },
5352 {
5353 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5354 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5355 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5356 0x020e,
5357 0x020f,
5358 },
5359 {
5360 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5361 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5362 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5363 0x020d,
5364 0x020e,
5365 },
5366 {
5367 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5368 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5369 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5370 0x020c,
5371 0x020d,
5372 },
5373 {
5374 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5375 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5376 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5377 0x020b,
5378 0x020c,
5379 },
5380 {
5381 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5382 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5383 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5384 0x020a,
5385 0x020b,
5386 },
5387 {
5388 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5389 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5390 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5391 0x0209,
5392 0x020a,
5393 },
5394 {
5395 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5396 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5397 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5398 0x0208,
5399 0x0209,
5400 },
5401 {
5402 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5403 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5404 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5405 0x0207,
5406 0x0208,
5407 },
5408 {
5409 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5410 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5411 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5412 0x0206,
5413 0x0207,
5414 },
5415 {
5416 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5417 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5418 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5419 0x0205,
5420 0x0206,
5421 },
5422 {
5423 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5424 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5425 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5426 0x0204,
5427 0x0205,
5428 },
5429 {
5430 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5431 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5432 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5433 0x0203,
5434 0x0204,
5435 },
5436 {
5437 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5438 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5439 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5440 0x0202,
5441 0x0203,
5442 },
5443 {
5444 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5445 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5446 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5447 0x0201,
5448 0x0202,
5449 },
5450 {
5451 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5452 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5453 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5454 0x0200,
5455 0x0201,
5456 },
5457 {
5458 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5459 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5460 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5461 0x01ff,
5462 0x0200,
5463 },
5464 {
5465 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5466 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5467 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5468 0x01fe,
5469 0x01ff,
5470 },
5471 {
5472 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5473 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5474 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5475 0x01fc,
5476 0x01fd,
5477 },
5478 {
5479 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5480 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5481 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5482 0x01fb,
5483 0x01fc,
5484 },
5485 {
5486 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5487 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5488 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5489 0x01fa,
5490 0x01fb,
5491 },
5492 {
5493 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5494 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5495 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5496 0x01f9,
5497 0x01fa,
5498 },
5499 {
5500 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5501 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5502 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5503 0x01f8,
5504 0x01f9,
5505 },
5506 {
5507 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5508 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5509 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5510 0x01f7,
5511 0x01f8,
5512 },
5513 {
5514 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5515 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5516 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5517 0x01f6,
5518 0x01f7,
5519 },
5520 {
5521 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5522 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5523 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5524 0x01f5,
5525 0x01f6,
5526 },
5527 {
5528 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5529 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5530 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5531 0x01f4,
5532 0x01f5,
5533 },
5534 {
5535 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5536 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5537 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5538 0x01f3,
5539 0x01f4,
5540 },
5541 {
5542 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5543 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5544 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5545 0x01f2,
5546 0x01f3,
5547 },
5548 {
5549 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5550 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5551 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5552 0x01f1,
5553 0x01f2,
5554 },
5555 {
5556 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5557 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5558 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5559 0x01f0,
5560 0x01f1,
5561 },
5562 {
5563 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5564 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5565 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5566 0x01f0,
5567 0x01f0,
5568 },
5569 {
5570 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5571 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5572 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5573 0x01ef,
5574 0x01f0,
5575 },
5576 {
5577 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5578 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5579 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5580 0x01ee,
5581 0x01ef,
5582 },
5583 {
5584 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5585 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5586 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5587 0x01ed,
5588 0x01ee,
5589 },
5590 {
5591 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5592 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5593 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5594 0x01ec,
5595 0x01ed,
5596 },
5597 {
5598 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5599 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5600 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5601 0x01eb,
5602 0x01ec,
5603 },
5604 {
5605 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5606 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5607 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5608 0x01ea,
5609 0x01eb,
5610 },
5611 {
5612 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5613 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5614 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5615 0x01e9,
5616 0x01ea,
5617 },
5618 {
5619 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5620 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5621 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5622 0x01e8,
5623 0x01e9,
5624 },
5625 {
5626 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5627 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5628 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5629 0x01e7,
5630 0x01e8,
5631 },
5632 {
5633 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5634 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5635 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5636 0x01e6,
5637 0x01e7,
5638 },
5639 {
5640 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5641 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5642 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5643 0x01e5,
5644 0x01e6,
5645 },
5646 {
5647 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5648 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5649 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5650 0x01e5,
5651 0x01e5,
5652 },
5653 {
5654 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5655 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5656 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5657 0x01e4,
5658 0x01e5,
5659 },
5660 {
5661 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5662 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5663 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5664 0x01e3,
5665 0x01e4,
5666 },
5667 {
5668 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5669 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5670 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5671 0x01e2,
5672 0x01e3,
5673 },
5674 {
5675 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5676 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5677 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5678 0x01e1,
5679 0x01e2,
5680 },
5681 {
5682 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5683 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5684 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5685 0x01e0,
5686 0x01e1,
5687 },
5688 {
5689 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5690 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5691 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5692 0x01df,
5693 0x01e0,
5694 },
5695 {
5696 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5697 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5698 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5699 0x01de,
5700 0x01df,
5701 },
5702 {
5703 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5704 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5705 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5706 0x01dd,
5707 0x01de,
5708 },
5709 {
5710 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5711 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5712 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5713 0x01dd,
5714 0x01dd,
5715 },
5716 {
5717 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5718 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5719 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5720 0x01dc,
5721 0x01dd,
5722 },
5723 {
5724 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5725 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5726 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5727 0x01db,
5728 0x01dc,
5729 },
5730 {
5731 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5732 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5733 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5734 0x01da,
5735 0x01db,
5736 },
5737 {
5738 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5739 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5740 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5741 0x01d9,
5742 0x01da,
5743 },
5744 {
5745 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5746 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5747 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5748 0x01d8,
5749 0x01d9,
5750 },
5751 {
5752 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5753 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5754 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5755 0x01d7,
5756 0x01d8,
5757 },
5758 {
5759 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5760 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5761 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5762 0x01d7,
5763 0x01d7,
5764 },
5765 {
5766 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5767 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5768 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5769 0x01d6,
5770 0x01d7,
5771 },
5772 {
5773 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5774 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5775 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5776 0x01d5,
5777 0x01d6,
5778 },
5779 {
5780 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5781 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5782 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5783 0x01d4,
5784 0x01d5,
5785 },
5786 {
5787 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5788 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5789 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5790 0x01d3,
5791 0x01d4,
5792 },
5793 {
5794 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5795 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5796 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5797 0x01d2,
5798 0x01d3,
5799 },
5800 {
5801 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5802 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5803 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5804 0x01d2,
5805 0x01d2,
5806 },
5807 {
5808 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5809 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5810 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5811 0x01d1,
5812 0x01d2,
5813 },
5814 {
5815 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5816 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5817 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5818 0x01d0,
5819 0x01d1,
5820 },
5821 {
5822 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5823 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5824 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5825 0x01cf,
5826 0x01d0,
5827 },
5828 {
5829 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5830 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5831 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5832 0x01ce,
5833 0x01cf,
5834 },
5835 {
5836 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5837 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5838 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5839 0x01ce,
5840 0x01ce,
5841 },
5842 {
5843 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5844 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5845 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5846 0x01cd,
5847 0x01ce,
5848 },
5849 {
5850 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5851 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5852 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5853 0x01cc,
5854 0x01cd,
5855 },
5856 {
5857 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5858 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5859 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5860 0x01cb,
5861 0x01cc,
5862 },
5863 {
5864 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5865 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5866 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5867 0x01ca,
5868 0x01cb,
5869 },
5870 {
5871 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5872 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5873 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5874 0x01ca,
5875 0x01cb,
5876 },
5877 {
5878 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5879 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5880 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5881 0x01c9,
5882 0x01ca,
5883 },
5884 {
5885 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5886 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5887 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5888 0x01c9,
5889 0x01ca,
5890 },
5891 {
5892 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5893 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5894 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5895 0x01c9,
5896 0x01c9,
5897 },
5898 {
5899 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5900 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5901 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5902 0x01c8,
5903 0x01c9,
5904 },
5905 {
5906 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5907 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5908 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5909 0x01c8,
5910 0x01c9,
5911 },
5912 {
5913 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5914 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5915 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5916 0x01c8,
5917 0x01c8,
5918 },
5919 {
5920 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5921 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5922 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5923 0x01c7,
5924 0x01c8,
5925 },
5926 {
5927 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5928 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5929 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5930 0x01c7,
5931 0x01c8,
5932 },
5933 {
5934 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5935 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5936 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5937 0x01c6,
5938 0x01c7,
5939 },
5940 {
5941 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5942 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5943 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5944 0x01c6,
5945 0x01c7,
5946 },
5947 {
5948 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5949 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5950 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5951 0x01c6,
5952 0x01c6,
5953 },
5954 {
5955 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5956 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5957 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5958 0x01c5,
5959 0x01c6,
5960 },
5961 {
5962 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5963 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5964 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5965 0x01c5,
5966 0x01c6,
5967 },
5968 {
5969 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5970 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5971 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5972 0x01c4,
5973 0x01c5,
5974 },
5975 {
5976 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5977 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5978 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5979 0x01c4,
5980 0x01c5,
5981 },
5982 {
5983 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5984 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5985 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5986 0x01c4,
5987 0x01c4,
5988 },
5989 {
5990 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5991 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5992 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5993 0x01c3,
5994 0x01c4,
5995 },
5996 {
5997 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5998 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5999 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6000 0x01c3,
6001 0x01c4,
6002 },
6003 {
6004 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6005 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6006 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6007 0x01c2,
6008 0x01c3,
6009 },
6010 {
6011 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6012 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6013 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6014 0x01c2,
6015 0x01c3,
6016 },
6017 {
6018 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6019 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6020 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6021 0x01c2,
6022 0x01c2,
6023 },
6024 {
6025 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6026 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6027 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6028 0x01c1,
6029 0x01c2,
6030 },
6031 {
6032 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6033 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6034 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6035 0x01c0,
6036 0x01c1,
6037 },
6038 {
6039 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6040 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6041 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6042 0x01bf,
6043 0x01c0,
6044 },
6045 {
6046 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6047 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6048 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6049 0x01bf,
6050 0x01bf,
6051 },
6052 {
6053 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6054 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6055 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6056 0x01be,
6057 0x01bf,
6058 },
6059 {
6060 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6061 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6062 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6063 0x01bd,
6064 0x01be,
6065 },
6066 {
6067 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6068 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6069 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6070 0x01bc,
6071 0x01bd,
6072 },
6073 {
6074 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6075 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6076 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6077 0x043f,
6078 0x0443,
6079 },
6080 {
6081 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6082 0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6083 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6084 0x043d,
6085 0x0441,
6086 },
6087 {
6088 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6089 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6090 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6091 0x043a,
6092 0x043f,
6093 },
6094 {
6095 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6096 0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6097 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6098 0x0438,
6099 0x043d,
6100 },
6101 {
6102 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6103 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6104 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6105 0x0436,
6106 0x043a,
6107 },
6108 {
6109 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6110 0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6111 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6112 0x0434,
6113 0x0438,
6114 },
6115 {
6116 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6117 0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6118 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6119 0x0431,
6120 0x0436,
6121 },
6122 {
6123 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6124 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6125 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6126 0x042f,
6127 0x0434,
6128 },
6129 {
6130 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6131 0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6132 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6133 0x042d,
6134 0x0431,
6135 },
6136 {
6137 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6138 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6139 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6140 0x042b,
6141 0x042f,
6142 },
6143 {
6144 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6145 0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6146 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6147 0x0429,
6148 0x042d,
6149 },
6150 {
6151 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6152 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6153 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6154 0x0427,
6155 0x042b,
6156 },
6157 {
6158 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6159 0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6160 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6161 0x0424,
6162 0x0429,
6163 },
6164 {
6165 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6166 0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6167 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6168 0x041f,
6169 0x0424}
6170 };
6171
6172 static const struct chan_info_nphy_radio2057_rev5
6173 chan_info_nphyrev8_2057_rev5[] = {
6174 {
6175 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6176 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6177 0x043a, 0x043f, 0x0443},
6178 {
6179 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6180 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6181 0x0438, 0x043d, 0x0441},
6182 {
6183 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6184 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6185 0x0436, 0x043a, 0x043f},
6186 {
6187 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6188 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6189 0x0434, 0x0438, 0x043d},
6190 {
6191 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6192 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6193 0x0431, 0x0436, 0x043a},
6194 {
6195 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6196 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6197 0x042f, 0x0434, 0x0438},
6198 {
6199 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6200 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6201 0x042d, 0x0431, 0x0436},
6202 {
6203 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6204 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6205 0x042b, 0x042f, 0x0434},
6206 {
6207 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6208 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6209 0x0429, 0x042d, 0x0431},
6210 {
6211 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6212 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6213 0x0427, 0x042b, 0x042f},
6214 {
6215 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6216 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6217 0x0424, 0x0429, 0x042d},
6218 {
6219 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6220 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6221 0x0422, 0x0427, 0x042b},
6222 {
6223 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6224 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6225 0x0420, 0x0424, 0x0429},
6226 {
6227 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6228 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6229 0x041b, 0x041f, 0x0424}
6230 };
6231
6232 static const struct chan_info_nphy_radio2057_rev5
6233 chan_info_nphyrev9_2057_rev5v1[] = {
6234 {
6235 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6236 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6237 0x043a, 0x043f, 0x0443},
6238 {
6239 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6240 0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6241 0x0438, 0x043d, 0x0441},
6242 {
6243 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6244 0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6245 0x0436, 0x043a, 0x043f},
6246 {
6247 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6248 0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6249 0x0434, 0x0438, 0x043d},
6250 {
6251 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6252 0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6253 0x0431, 0x0436, 0x043a},
6254 {
6255 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6256 0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6257 0x042f, 0x0434, 0x0438},
6258 {
6259 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6260 0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6261 0x042d, 0x0431, 0x0436},
6262 {
6263 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6264 0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6265 0x042b, 0x042f, 0x0434},
6266 {
6267 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6268 0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6269 0x0429, 0x042d, 0x0431},
6270 {
6271 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6272 0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6273 0x0427, 0x042b, 0x042f},
6274 {
6275 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6276 0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6277 0x0424, 0x0429, 0x042d},
6278 {
6279 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6280 0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6281 0x0422, 0x0427, 0x042b},
6282 {
6283 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6284 0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6285 0x0420, 0x0424, 0x0429},
6286 {
6287 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6288 0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6289 0x041b, 0x041f, 0x0424}
6290 };
6291
6292 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6293 {
6294 184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6295 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6297 0x0215,
6298 0x0216},
6299 {
6300 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6301 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6303 0x0214,
6304 0x0215},
6305 {
6306 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6307 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6308 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6309 0x0213,
6310 0x0214},
6311 {
6312 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6313 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6314 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6315 0x0212,
6316 0x0213},
6317 {
6318 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6319 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6320 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6321 0x0211,
6322 0x0212},
6323 {
6324 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6325 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6326 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6327 0x020f,
6328 0x0211},
6329 {
6330 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6331 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6332 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6333 0x020e,
6334 0x020f},
6335 {
6336 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6337 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6338 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6339 0x020d,
6340 0x020e},
6341 {
6342 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6343 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6345 0x020c,
6346 0x020d},
6347 {
6348 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6349 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6351 0x020b,
6352 0x020c},
6353 {
6354 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6355 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6357 0x020a,
6358 0x020b},
6359 {
6360 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6361 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6363 0x0209,
6364 0x020a},
6365 {
6366 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6367 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6368 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6369 0x0208,
6370 0x0209},
6371 {
6372 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6373 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6374 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6375 0x0207,
6376 0x0208},
6377 {
6378 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6379 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6380 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6381 0x0206,
6382 0x0207},
6383 {
6384 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6385 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6386 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6387 0x0205,
6388 0x0206},
6389 {
6390 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6391 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6392 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6393 0x0204,
6394 0x0205},
6395 {
6396 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6397 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6398 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6399 0x0203,
6400 0x0204},
6401 {
6402 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6403 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6405 0x0202,
6406 0x0203},
6407 {
6408 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6409 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6411 0x0201,
6412 0x0202},
6413 {
6414 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6415 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6417 0x0200,
6418 0x0201},
6419 {
6420 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6421 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6422 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6423 0x01ff,
6424 0x0200},
6425 {
6426 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6427 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6428 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6429 0x01fe,
6430 0x01ff},
6431 {
6432 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6433 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6434 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6435 0x01fc,
6436 0x01fd},
6437 {
6438 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6439 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6440 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6441 0x01fb,
6442 0x01fc},
6443 {
6444 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6445 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6446 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6447 0x01fa,
6448 0x01fb},
6449 {
6450 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6451 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6452 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6453 0x01f9,
6454 0x01fa},
6455 {
6456 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6457 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6459 0x01f8,
6460 0x01f9},
6461 {
6462 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6463 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6465 0x01f7,
6466 0x01f8},
6467 {
6468 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6469 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6471 0x01f6,
6472 0x01f7},
6473 {
6474 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6475 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6477 0x01f5,
6478 0x01f6},
6479 {
6480 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6481 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6482 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6483 0x01f4,
6484 0x01f5},
6485 {
6486 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6487 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6488 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6489 0x01f3,
6490 0x01f4},
6491 {
6492 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6493 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6494 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6495 0x01f2,
6496 0x01f3},
6497 {
6498 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6499 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6500 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6501 0x01f1,
6502 0x01f2},
6503 {
6504 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6505 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6506 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6507 0x01f0,
6508 0x01f1},
6509 {
6510 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6511 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6512 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6513 0x01f0,
6514 0x01f0},
6515 {
6516 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6517 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6519 0x01ef,
6520 0x01f0},
6521 {
6522 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6523 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6525 0x01ee,
6526 0x01ef},
6527 {
6528 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6529 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6531 0x01ed,
6532 0x01ee},
6533 {
6534 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6535 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6537 0x01ec,
6538 0x01ed},
6539 {
6540 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6541 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6542 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6543 0x01eb,
6544 0x01ec},
6545 {
6546 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6547 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6548 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6549 0x01ea,
6550 0x01eb},
6551 {
6552 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6553 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6554 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6555 0x01e9,
6556 0x01ea},
6557 {
6558 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6559 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6560 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6561 0x01e8,
6562 0x01e9},
6563 {
6564 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6565 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6566 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6567 0x01e7,
6568 0x01e8},
6569 {
6570 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6571 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6572 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6573 0x01e6,
6574 0x01e7},
6575 {
6576 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6577 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6579 0x01e5,
6580 0x01e6},
6581 {
6582 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6583 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6585 0x01e5,
6586 0x01e5},
6587 {
6588 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6589 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6591 0x01e4,
6592 0x01e5},
6593 {
6594 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6595 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6597 0x01e3,
6598 0x01e4},
6599 {
6600 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6601 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6602 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6603 0x01e2,
6604 0x01e3},
6605 {
6606 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6607 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6608 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6609 0x01e1,
6610 0x01e2},
6611 {
6612 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6613 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6614 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6615 0x01e0,
6616 0x01e1},
6617 {
6618 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6619 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6620 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6621 0x01df,
6622 0x01e0},
6623 {
6624 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6625 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6626 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6627 0x01de,
6628 0x01df},
6629 {
6630 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6631 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6632 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6633 0x01dd,
6634 0x01de},
6635 {
6636 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6637 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6639 0x01dd,
6640 0x01dd},
6641 {
6642 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6643 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6645 0x01dc,
6646 0x01dd},
6647 {
6648 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6649 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6651 0x01db,
6652 0x01dc},
6653 {
6654 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6655 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6657 0x01da,
6658 0x01db},
6659 {
6660 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6661 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6662 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6663 0x01d9,
6664 0x01da},
6665 {
6666 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6667 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6668 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6669 0x01d8,
6670 0x01d9},
6671 {
6672 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6673 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6674 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6675 0x01d7,
6676 0x01d8},
6677 {
6678 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6679 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6680 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6681 0x01d7,
6682 0x01d7},
6683 {
6684 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6685 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6686 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6687 0x01d6,
6688 0x01d7},
6689 {
6690 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6691 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6692 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6693 0x01d5,
6694 0x01d6},
6695 {
6696 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6697 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6698 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6699 0x01d4,
6700 0x01d5},
6701 {
6702 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6703 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6704 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6705 0x01d3,
6706 0x01d4},
6707 {
6708 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6709 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6710 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6711 0x01d2,
6712 0x01d3},
6713 {
6714 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6715 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6716 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6717 0x01d2,
6718 0x01d2},
6719 {
6720 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6721 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6722 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6723 0x01d1,
6724 0x01d2},
6725 {
6726 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6727 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6728 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6729 0x01d0,
6730 0x01d1},
6731 {
6732 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6733 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6734 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6735 0x01cf,
6736 0x01d0},
6737 {
6738 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6739 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6740 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6741 0x01ce,
6742 0x01cf},
6743 {
6744 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6745 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6746 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6747 0x01ce,
6748 0x01ce},
6749 {
6750 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6751 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6752 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6753 0x01cd,
6754 0x01ce},
6755 {
6756 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6757 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6759 0x01cc,
6760 0x01cd},
6761 {
6762 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6763 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6765 0x01cb,
6766 0x01cc},
6767 {
6768 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6769 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6770 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6771 0x01ca,
6772 0x01cb},
6773 {
6774 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6775 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6776 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6777 0x01ca,
6778 0x01cb},
6779 {
6780 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6781 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6782 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6783 0x01c9,
6784 0x01ca},
6785 {
6786 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6787 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6788 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6789 0x01c9,
6790 0x01ca},
6791 {
6792 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6793 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6794 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6795 0x01c9,
6796 0x01c9},
6797 {
6798 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6799 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6800 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6801 0x01c8,
6802 0x01c9},
6803 {
6804 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6805 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6807 0x01c8,
6808 0x01c9},
6809 {
6810 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6811 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6813 0x01c8,
6814 0x01c8},
6815 {
6816 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6817 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6819 0x01c7,
6820 0x01c8},
6821 {
6822 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6823 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6825 0x01c7,
6826 0x01c8},
6827 {
6828 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6829 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6830 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6831 0x01c6,
6832 0x01c7},
6833 {
6834 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6835 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6836 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6837 0x01c6,
6838 0x01c7},
6839 {
6840 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6841 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6842 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6843 0x01c6,
6844 0x01c6},
6845 {
6846 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6847 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6848 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6849 0x01c5,
6850 0x01c6},
6851 {
6852 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6853 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6854 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6855 0x01c5,
6856 0x01c6},
6857 {
6858 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6859 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6860 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6861 0x01c4,
6862 0x01c5},
6863 {
6864 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6865 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6866 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6867 0x01c4,
6868 0x01c5},
6869 {
6870 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6871 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6873 0x01c4,
6874 0x01c4},
6875 {
6876 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6877 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6879 0x01c3,
6880 0x01c4},
6881 {
6882 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6883 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6885 0x01c3,
6886 0x01c4},
6887 {
6888 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6889 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6891 0x01c2,
6892 0x01c3},
6893 {
6894 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6895 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6897 0x01c2,
6898 0x01c3},
6899 {
6900 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6901 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6903 0x01c2,
6904 0x01c2},
6905 {
6906 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6907 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6909 0x01c1,
6910 0x01c2},
6911 {
6912 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6913 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6914 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6915 0x01c0,
6916 0x01c1},
6917 {
6918 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6919 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6920 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6921 0x01bf,
6922 0x01c0},
6923 {
6924 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6925 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6926 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6927 0x01bf,
6928 0x01bf},
6929 {
6930 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6931 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6932 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6933 0x01be,
6934 0x01bf},
6935 {
6936 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6937 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6938 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6939 0x01bd,
6940 0x01be},
6941 {
6942 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6943 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6944 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6945 0x01bc,
6946 0x01bd},
6947 {
6948 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6949 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6951 0x043f,
6952 0x0443},
6953 {
6954 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6955 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6957 0x043d,
6958 0x0441},
6959 {
6960 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6961 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6963 0x043a,
6964 0x043f},
6965 {
6966 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6967 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6969 0x0438,
6970 0x043d},
6971 {
6972 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6973 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6975 0x0436,
6976 0x043a},
6977 {
6978 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6979 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6981 0x0434,
6982 0x0438},
6983 {
6984 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6985 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6987 0x0431,
6988 0x0436},
6989 {
6990 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6991 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6992 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6993 0x042f,
6994 0x0434},
6995 {
6996 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6997 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6998 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6999 0x042d,
7000 0x0431},
7001 {
7002 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7003 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7004 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7005 0x042b,
7006 0x042f},
7007 {
7008 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7009 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7010 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7011 0x0429,
7012 0x042d},
7013 {
7014 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7015 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7016 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7017 0x0427,
7018 0x042b},
7019 {
7020 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7021 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7022 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7023 0x0424,
7024 0x0429},
7025 {
7026 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7027 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7028 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7029 0x041f,
7030 0x0424}
7031 };
7032
7033 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7034 {
7035 186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7036 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7038 0x0214,
7039 0x0215},
7040 {
7041 188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7042 0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7043 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7044 0x0213,
7045 0x0214},
7046 {
7047 190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7048 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7049 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7050 0x0212,
7051 0x0213},
7052 {
7053 192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7054 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7055 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7056 0x0211,
7057 0x0212},
7058 {
7059 194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7060 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7061 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7062 0x020f,
7063 0x0211},
7064 {
7065 196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7066 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7067 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7068 0x020e,
7069 0x020f},
7070 {
7071 198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7072 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7073 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7074 0x020d,
7075 0x020e},
7076 {
7077 200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7078 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7080 0x020c,
7081 0x020d},
7082 {
7083 202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7084 0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7086 0x020b,
7087 0x020c},
7088 {
7089 204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7090 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7092 0x020a,
7093 0x020b},
7094 {
7095 206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7096 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7098 0x0209,
7099 0x020a},
7100 {
7101 208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7102 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7103 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7104 0x0208,
7105 0x0209},
7106 {
7107 210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7108 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7109 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7110 0x0207,
7111 0x0208},
7112 {
7113 212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7114 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7115 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7116 0x0206,
7117 0x0207},
7118 {
7119 214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7120 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7121 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7122 0x0205,
7123 0x0206},
7124 {
7125 216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7126 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7127 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7128 0x0204,
7129 0x0205},
7130 {
7131 218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7132 0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7133 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7134 0x0203,
7135 0x0204},
7136 {
7137 220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7138 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7140 0x0202,
7141 0x0203},
7142 {
7143 222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7144 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7146 0x0201,
7147 0x0202},
7148 {
7149 224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7150 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7152 0x0200,
7153 0x0201},
7154 {
7155 226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7156 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7157 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7158 0x01ff,
7159 0x0200},
7160 {
7161 228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7162 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7163 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7164 0x01fe,
7165 0x01ff},
7166 {
7167 32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7168 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7169 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7170 0x01fc,
7171 0x01fd},
7172 {
7173 34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7174 0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7175 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7176 0x01fb,
7177 0x01fc},
7178 {
7179 36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7180 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7181 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7182 0x01fa,
7183 0x01fb},
7184 {
7185 38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7186 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7187 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7188 0x01f9,
7189 0x01fa},
7190 {
7191 40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7192 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7194 0x01f8,
7195 0x01f9},
7196 {
7197 42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7198 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7200 0x01f7,
7201 0x01f8},
7202 {
7203 44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7204 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7206 0x01f6,
7207 0x01f7},
7208 {
7209 46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7210 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7212 0x01f5,
7213 0x01f6},
7214 {
7215 48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7216 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7217 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7218 0x01f4,
7219 0x01f5},
7220 {
7221 50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7222 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7223 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7224 0x01f3,
7225 0x01f4},
7226 {
7227 52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7228 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7229 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7230 0x01f2,
7231 0x01f3},
7232 {
7233 54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7234 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7235 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7236 0x01f1,
7237 0x01f2},
7238 {
7239 56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7240 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7241 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7242 0x01f0,
7243 0x01f1},
7244 {
7245 58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7246 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7247 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7248 0x01f0,
7249 0x01f0},
7250 {
7251 60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7252 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7254 0x01ef,
7255 0x01f0},
7256 {
7257 62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7258 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7260 0x01ee,
7261 0x01ef},
7262 {
7263 64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7264 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7266 0x01ed,
7267 0x01ee},
7268 {
7269 66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7270 0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7272 0x01ec,
7273 0x01ed},
7274 {
7275 68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7276 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7277 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7278 0x01eb,
7279 0x01ec},
7280 {
7281 70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7282 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7283 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7284 0x01ea,
7285 0x01eb},
7286 {
7287 72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7288 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7289 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7290 0x01e9,
7291 0x01ea},
7292 {
7293 74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7294 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7295 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7296 0x01e8,
7297 0x01e9},
7298 {
7299 76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7300 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7301 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7302 0x01e7,
7303 0x01e8},
7304 {
7305 78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7306 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7307 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7308 0x01e6,
7309 0x01e7},
7310 {
7311 80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7312 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7314 0x01e5,
7315 0x01e6},
7316 {
7317 82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7318 0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7320 0x01e5,
7321 0x01e5},
7322 {
7323 84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7324 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7326 0x01e4,
7327 0x01e5},
7328 {
7329 86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7330 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7332 0x01e3,
7333 0x01e4},
7334 {
7335 88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7336 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7337 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7338 0x01e2,
7339 0x01e3},
7340 {
7341 90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7342 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7343 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7344 0x01e1,
7345 0x01e2},
7346 {
7347 92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7348 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7349 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7350 0x01e0,
7351 0x01e1},
7352 {
7353 94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7354 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7355 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7356 0x01df,
7357 0x01e0},
7358 {
7359 96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7360 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7361 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7362 0x01de,
7363 0x01df},
7364 {
7365 98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7366 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7367 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7368 0x01dd,
7369 0x01de},
7370 {
7371 100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7372 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7374 0x01dd,
7375 0x01dd},
7376 {
7377 102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7378 0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7380 0x01dc,
7381 0x01dd},
7382 {
7383 104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7384 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7386 0x01db,
7387 0x01dc},
7388 {
7389 106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7390 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7392 0x01da,
7393 0x01db},
7394 {
7395 108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7396 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7397 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7398 0x01d9,
7399 0x01da},
7400 {
7401 110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7402 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7403 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7404 0x01d8,
7405 0x01d9},
7406 {
7407 112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7408 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7409 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7410 0x01d7,
7411 0x01d8},
7412 {
7413 114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7414 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7415 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7416 0x01d7,
7417 0x01d7},
7418 {
7419 116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7420 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7421 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7422 0x01d6,
7423 0x01d7},
7424 {
7425 118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7426 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7427 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7428 0x01d5,
7429 0x01d6},
7430 {
7431 120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7432 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7433 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7434 0x01d4,
7435 0x01d5},
7436 {
7437 122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7438 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7439 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7440 0x01d3,
7441 0x01d4},
7442 {
7443 124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7444 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7445 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7446 0x01d2,
7447 0x01d3},
7448 {
7449 126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7450 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7451 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7452 0x01d2,
7453 0x01d2},
7454 {
7455 128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7456 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7457 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7458 0x01d1,
7459 0x01d2},
7460 {
7461 130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7462 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7463 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7464 0x01d0,
7465 0x01d1},
7466 {
7467 132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7468 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7469 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7470 0x01cf,
7471 0x01d0},
7472 {
7473 134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7474 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7475 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7476 0x01ce,
7477 0x01cf},
7478 {
7479 136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7480 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7481 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7482 0x01ce,
7483 0x01ce},
7484 {
7485 138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7486 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7487 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7488 0x01cd,
7489 0x01ce},
7490 {
7491 140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7492 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7494 0x01cc,
7495 0x01cd},
7496 {
7497 142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7498 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7500 0x01cb,
7501 0x01cc},
7502 {
7503 144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7504 0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7505 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7506 0x01ca,
7507 0x01cb},
7508 {
7509 145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7510 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7511 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7512 0x01ca,
7513 0x01cb},
7514 {
7515 146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7516 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7517 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7518 0x01c9,
7519 0x01ca},
7520 {
7521 147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7522 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7523 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7524 0x01c9,
7525 0x01ca},
7526 {
7527 148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7528 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7529 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7530 0x01c9,
7531 0x01c9},
7532 {
7533 149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7534 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7535 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7536 0x01c8,
7537 0x01c9},
7538 {
7539 150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7540 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7542 0x01c8,
7543 0x01c9},
7544 {
7545 151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7546 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7548 0x01c8,
7549 0x01c8},
7550 {
7551 152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7552 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7554 0x01c7,
7555 0x01c8},
7556 {
7557 153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7558 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7560 0x01c7,
7561 0x01c8},
7562 {
7563 154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7564 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7565 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7566 0x01c6,
7567 0x01c7},
7568 {
7569 155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7570 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7571 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7572 0x01c6,
7573 0x01c7},
7574 {
7575 156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7576 0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7577 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7578 0x01c6,
7579 0x01c6},
7580 {
7581 157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7582 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7583 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7584 0x01c5,
7585 0x01c6},
7586 {
7587 158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7588 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7589 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7590 0x01c5,
7591 0x01c6},
7592 {
7593 159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7594 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7595 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7596 0x01c4,
7597 0x01c5},
7598 {
7599 160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7600 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7601 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7602 0x01c4,
7603 0x01c5},
7604 {
7605 161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7606 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7608 0x01c4,
7609 0x01c4},
7610 {
7611 162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7612 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7614 0x01c3,
7615 0x01c4},
7616 {
7617 163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7618 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7620 0x01c3,
7621 0x01c4},
7622 {
7623 164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7624 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7626 0x01c2,
7627 0x01c3},
7628 {
7629 165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7630 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7632 0x01c2,
7633 0x01c3},
7634 {
7635 166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7636 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7638 0x01c2,
7639 0x01c2},
7640 {
7641 168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7642 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7644 0x01c1,
7645 0x01c2},
7646 {
7647 170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7648 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7649 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7650 0x01c0,
7651 0x01c1},
7652 {
7653 172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7654 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7655 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7656 0x01bf,
7657 0x01c0},
7658 {
7659 174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7660 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7661 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7662 0x01bf,
7663 0x01bf},
7664 {
7665 176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7666 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7667 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7668 0x01be,
7669 0x01bf},
7670 {
7671 178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7672 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7673 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7674 0x01bd,
7675 0x01be},
7676 {
7677 180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7678 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7679 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7680 0x01bc,
7681 0x01bd},
7682 {
7683 1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7684 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7686 0x043f,
7687 0x0443},
7688 {
7689 2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7690 0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7692 0x043d,
7693 0x0441},
7694 {
7695 3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7696 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7698 0x043a,
7699 0x043f},
7700 {
7701 4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7702 0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7704 0x0438,
7705 0x043d},
7706 {
7707 5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7708 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7710 0x0436,
7711 0x043a},
7712 {
7713 6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7714 0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7716 0x0434,
7717 0x0438},
7718 {
7719 7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7720 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7722 0x0431,
7723 0x0436},
7724 {
7725 8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7726 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7727 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7728 0x042f,
7729 0x0434},
7730 {
7731 9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7732 0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7733 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7734 0x042d,
7735 0x0431},
7736 {
7737 10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7738 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7739 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7740 0x042b,
7741 0x042f},
7742 {
7743 11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7744 0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7745 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7746 0x0429,
7747 0x042d},
7748 {
7749 12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7750 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7751 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7752 0x0427,
7753 0x042b},
7754 {
7755 13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7756 0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7757 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7758 0x0424,
7759 0x0429},
7760 {
7761 14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7762 0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7763 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7764 0x041f,
7765 0x0424}
7766 };
7767
7768 static struct radio_regs regs_2055[] = {
7769 {0x02, 0x80, 0x80, 0, 0},
7770 {0x03, 0, 0, 0, 0},
7771 {0x04, 0x27, 0x27, 0, 0},
7772 {0x05, 0, 0, 0, 0},
7773 {0x06, 0x27, 0x27, 0, 0},
7774 {0x07, 0x7f, 0x7f, 1, 1},
7775 {0x08, 0x7, 0x7, 1, 1},
7776 {0x09, 0x7f, 0x7f, 1, 1},
7777 {0x0A, 0x7, 0x7, 1, 1},
7778 {0x0B, 0x15, 0x15, 0, 0},
7779 {0x0C, 0x15, 0x15, 0, 0},
7780 {0x0D, 0x4f, 0x4f, 1, 1},
7781 {0x0E, 0x5, 0x5, 1, 1},
7782 {0x0F, 0x4f, 0x4f, 1, 1},
7783 {0x10, 0x5, 0x5, 1, 1},
7784 {0x11, 0xd0, 0xd0, 0, 0},
7785 {0x12, 0x2, 0x2, 0, 0},
7786 {0x13, 0, 0, 0, 0},
7787 {0x14, 0x40, 0x40, 0, 0},
7788 {0x15, 0, 0, 0, 0},
7789 {0x16, 0, 0, 0, 0},
7790 {0x17, 0, 0, 0, 0},
7791 {0x18, 0, 0, 0, 0},
7792 {0x19, 0, 0, 0, 0},
7793 {0x1A, 0, 0, 0, 0},
7794 {0x1B, 0, 0, 0, 0},
7795 {0x1C, 0, 0, 0, 0},
7796 {0x1D, 0xc0, 0xc0, 0, 0},
7797 {0x1E, 0xff, 0xff, 0, 0},
7798 {0x1F, 0xc0, 0xc0, 0, 0},
7799 {0x20, 0xff, 0xff, 0, 0},
7800 {0x21, 0xc0, 0xc0, 0, 0},
7801 {0x22, 0, 0, 0, 0},
7802 {0x23, 0x2c, 0x2c, 0, 0},
7803 {0x24, 0, 0, 0, 0},
7804 {0x25, 0, 0, 0, 0},
7805 {0x26, 0, 0, 0, 0},
7806 {0x27, 0, 0, 0, 0},
7807 {0x28, 0, 0, 0, 0},
7808 {0x29, 0, 0, 0, 0},
7809 {0x2A, 0, 0, 0, 0},
7810 {0x2B, 0, 0, 0, 0},
7811 {0x2C, 0, 0, 0, 0},
7812 {0x2D, 0xa4, 0xa4, 0, 0},
7813 {0x2E, 0x38, 0x38, 0, 0},
7814 {0x2F, 0, 0, 0, 0},
7815 {0x30, 0x4, 0x4, 1, 1},
7816 {0x31, 0, 0, 0, 0},
7817 {0x32, 0xa, 0xa, 0, 0},
7818 {0x33, 0x87, 0x87, 0, 0},
7819 {0x34, 0x9, 0x9, 0, 0},
7820 {0x35, 0x70, 0x70, 0, 0},
7821 {0x36, 0x11, 0x11, 0, 0},
7822 {0x37, 0x18, 0x18, 1, 1},
7823 {0x38, 0x6, 0x6, 0, 0},
7824 {0x39, 0x4, 0x4, 1, 1},
7825 {0x3A, 0x6, 0x6, 0, 0},
7826 {0x3B, 0x9e, 0x9e, 0, 0},
7827 {0x3C, 0x9, 0x9, 0, 0},
7828 {0x3D, 0xc8, 0xc8, 1, 1},
7829 {0x3E, 0x88, 0x88, 0, 0},
7830 {0x3F, 0, 0, 0, 0},
7831 {0x40, 0, 0, 0, 0},
7832 {0x41, 0, 0, 0, 0},
7833 {0x42, 0x1, 0x1, 0, 0},
7834 {0x43, 0x2, 0x2, 0, 0},
7835 {0x44, 0x96, 0x96, 0, 0},
7836 {0x45, 0x3e, 0x3e, 0, 0},
7837 {0x46, 0x3e, 0x3e, 0, 0},
7838 {0x47, 0x13, 0x13, 0, 0},
7839 {0x48, 0x2, 0x2, 0, 0},
7840 {0x49, 0x15, 0x15, 0, 0},
7841 {0x4A, 0x7, 0x7, 0, 0},
7842 {0x4B, 0, 0, 0, 0},
7843 {0x4C, 0, 0, 0, 0},
7844 {0x4D, 0, 0, 0, 0},
7845 {0x4E, 0, 0, 0, 0},
7846 {0x4F, 0, 0, 0, 0},
7847 {0x50, 0x8, 0x8, 0, 0},
7848 {0x51, 0x8, 0x8, 0, 0},
7849 {0x52, 0x6, 0x6, 0, 0},
7850 {0x53, 0x84, 0x84, 1, 1},
7851 {0x54, 0xc3, 0xc3, 0, 0},
7852 {0x55, 0x8f, 0x8f, 0, 0},
7853 {0x56, 0xff, 0xff, 0, 0},
7854 {0x57, 0xff, 0xff, 0, 0},
7855 {0x58, 0x88, 0x88, 0, 0},
7856 {0x59, 0x88, 0x88, 0, 0},
7857 {0x5A, 0, 0, 0, 0},
7858 {0x5B, 0xcc, 0xcc, 0, 0},
7859 {0x5C, 0x6, 0x6, 0, 0},
7860 {0x5D, 0x80, 0x80, 0, 0},
7861 {0x5E, 0x80, 0x80, 0, 0},
7862 {0x5F, 0xf8, 0xf8, 0, 0},
7863 {0x60, 0x88, 0x88, 0, 0},
7864 {0x61, 0x88, 0x88, 0, 0},
7865 {0x62, 0x88, 0x8, 1, 1},
7866 {0x63, 0x88, 0x88, 0, 0},
7867 {0x64, 0, 0, 0, 0},
7868 {0x65, 0x1, 0x1, 1, 1},
7869 {0x66, 0x8a, 0x8a, 0, 0},
7870 {0x67, 0x8, 0x8, 0, 0},
7871 {0x68, 0x83, 0x83, 0, 0},
7872 {0x69, 0x6, 0x6, 0, 0},
7873 {0x6A, 0xa0, 0xa0, 0, 0},
7874 {0x6B, 0xa, 0xa, 0, 0},
7875 {0x6C, 0x87, 0x87, 1, 1},
7876 {0x6D, 0x2a, 0x2a, 0, 0},
7877 {0x6E, 0x2a, 0x2a, 0, 0},
7878 {0x6F, 0x2a, 0x2a, 0, 0},
7879 {0x70, 0x2a, 0x2a, 0, 0},
7880 {0x71, 0x18, 0x18, 0, 0},
7881 {0x72, 0x6a, 0x6a, 1, 1},
7882 {0x73, 0xab, 0xab, 1, 1},
7883 {0x74, 0x13, 0x13, 1, 1},
7884 {0x75, 0xc1, 0xc1, 1, 1},
7885 {0x76, 0xaa, 0xaa, 1, 1},
7886 {0x77, 0x87, 0x87, 1, 1},
7887 {0x78, 0, 0, 0, 0},
7888 {0x79, 0x6, 0x6, 0, 0},
7889 {0x7A, 0x7, 0x7, 0, 0},
7890 {0x7B, 0x7, 0x7, 0, 0},
7891 {0x7C, 0x15, 0x15, 0, 0},
7892 {0x7D, 0x55, 0x55, 0, 0},
7893 {0x7E, 0x97, 0x97, 1, 1},
7894 {0x7F, 0x8, 0x8, 0, 0},
7895 {0x80, 0x14, 0x14, 1, 1},
7896 {0x81, 0x33, 0x33, 0, 0},
7897 {0x82, 0x88, 0x88, 0, 0},
7898 {0x83, 0x6, 0x6, 0, 0},
7899 {0x84, 0x3, 0x3, 1, 1},
7900 {0x85, 0xa, 0xa, 0, 0},
7901 {0x86, 0x3, 0x3, 1, 1},
7902 {0x87, 0x2a, 0x2a, 0, 0},
7903 {0x88, 0xa4, 0xa4, 0, 0},
7904 {0x89, 0x18, 0x18, 0, 0},
7905 {0x8A, 0x28, 0x28, 0, 0},
7906 {0x8B, 0, 0, 0, 0},
7907 {0x8C, 0x4a, 0x4a, 0, 0},
7908 {0x8D, 0, 0, 0, 0},
7909 {0x8E, 0xf8, 0xf8, 0, 0},
7910 {0x8F, 0x88, 0x88, 0, 0},
7911 {0x90, 0x88, 0x88, 0, 0},
7912 {0x91, 0x88, 0x8, 1, 1},
7913 {0x92, 0x88, 0x88, 0, 0},
7914 {0x93, 0, 0, 0, 0},
7915 {0x94, 0x1, 0x1, 1, 1},
7916 {0x95, 0x8a, 0x8a, 0, 0},
7917 {0x96, 0x8, 0x8, 0, 0},
7918 {0x97, 0x83, 0x83, 0, 0},
7919 {0x98, 0x6, 0x6, 0, 0},
7920 {0x99, 0xa0, 0xa0, 0, 0},
7921 {0x9A, 0xa, 0xa, 0, 0},
7922 {0x9B, 0x87, 0x87, 1, 1},
7923 {0x9C, 0x2a, 0x2a, 0, 0},
7924 {0x9D, 0x2a, 0x2a, 0, 0},
7925 {0x9E, 0x2a, 0x2a, 0, 0},
7926 {0x9F, 0x2a, 0x2a, 0, 0},
7927 {0xA0, 0x18, 0x18, 0, 0},
7928 {0xA1, 0x6a, 0x6a, 1, 1},
7929 {0xA2, 0xab, 0xab, 1, 1},
7930 {0xA3, 0x13, 0x13, 1, 1},
7931 {0xA4, 0xc1, 0xc1, 1, 1},
7932 {0xA5, 0xaa, 0xaa, 1, 1},
7933 {0xA6, 0x87, 0x87, 1, 1},
7934 {0xA7, 0, 0, 0, 0},
7935 {0xA8, 0x6, 0x6, 0, 0},
7936 {0xA9, 0x7, 0x7, 0, 0},
7937 {0xAA, 0x7, 0x7, 0, 0},
7938 {0xAB, 0x15, 0x15, 0, 0},
7939 {0xAC, 0x55, 0x55, 0, 0},
7940 {0xAD, 0x97, 0x97, 1, 1},
7941 {0xAE, 0x8, 0x8, 0, 0},
7942 {0xAF, 0x14, 0x14, 1, 1},
7943 {0xB0, 0x33, 0x33, 0, 0},
7944 {0xB1, 0x88, 0x88, 0, 0},
7945 {0xB2, 0x6, 0x6, 0, 0},
7946 {0xB3, 0x3, 0x3, 1, 1},
7947 {0xB4, 0xa, 0xa, 0, 0},
7948 {0xB5, 0x3, 0x3, 1, 1},
7949 {0xB6, 0x2a, 0x2a, 0, 0},
7950 {0xB7, 0xa4, 0xa4, 0, 0},
7951 {0xB8, 0x18, 0x18, 0, 0},
7952 {0xB9, 0x28, 0x28, 0, 0},
7953 {0xBA, 0, 0, 0, 0},
7954 {0xBB, 0x4a, 0x4a, 0, 0},
7955 {0xBC, 0, 0, 0, 0},
7956 {0xBD, 0x71, 0x71, 0, 0},
7957 {0xBE, 0x72, 0x72, 0, 0},
7958 {0xBF, 0x73, 0x73, 0, 0},
7959 {0xC0, 0x74, 0x74, 0, 0},
7960 {0xC1, 0x75, 0x75, 0, 0},
7961 {0xC2, 0x76, 0x76, 0, 0},
7962 {0xC3, 0x77, 0x77, 0, 0},
7963 {0xC4, 0x78, 0x78, 0, 0},
7964 {0xC5, 0x79, 0x79, 0, 0},
7965 {0xC6, 0x7a, 0x7a, 0, 0},
7966 {0xC7, 0, 0, 0, 0},
7967 {0xC8, 0, 0, 0, 0},
7968 {0xC9, 0, 0, 0, 0},
7969 {0xCA, 0, 0, 0, 0},
7970 {0xCB, 0, 0, 0, 0},
7971 {0xCC, 0, 0, 0, 0},
7972 {0xCD, 0, 0, 0, 0},
7973 {0xCE, 0x6, 0x6, 0, 0},
7974 {0xCF, 0, 0, 0, 0},
7975 {0xD0, 0, 0, 0, 0},
7976 {0xD1, 0x18, 0x18, 0, 0},
7977 {0xD2, 0x88, 0x88, 0, 0},
7978 {0xD3, 0, 0, 0, 0},
7979 {0xD4, 0, 0, 0, 0},
7980 {0xD5, 0, 0, 0, 0},
7981 {0xD6, 0, 0, 0, 0},
7982 {0xD7, 0, 0, 0, 0},
7983 {0xD8, 0, 0, 0, 0},
7984 {0xD9, 0, 0, 0, 0},
7985 {0xDA, 0x6, 0x6, 0, 0},
7986 {0xDB, 0, 0, 0, 0},
7987 {0xDC, 0, 0, 0, 0},
7988 {0xDD, 0x18, 0x18, 0, 0},
7989 {0xDE, 0x88, 0x88, 0, 0},
7990 {0xDF, 0, 0, 0, 0},
7991 {0xE0, 0, 0, 0, 0},
7992 {0xE1, 0, 0, 0, 0},
7993 {0xE2, 0, 0, 0, 0},
7994 {0xFFFF, 0, 0, 0, 0},
7995 };
7996
7997 static struct radio_regs regs_SYN_2056[] = {
7998 {0x02, 0, 0, 0, 0},
7999 {0x03, 0, 0, 0, 0},
8000 {0x04, 0, 0, 0, 0},
8001 {0x05, 0, 0, 0, 0},
8002 {0x06, 0, 0, 0, 0},
8003 {0x07, 0, 0, 0, 0},
8004 {0x08, 0, 0, 0, 0},
8005 {0x09, 0x1, 0x1, 0, 0},
8006 {0x0A, 0, 0, 0, 0},
8007 {0x0B, 0, 0, 0, 0},
8008 {0x0C, 0, 0, 0, 0},
8009 {0x0D, 0, 0, 0, 0},
8010 {0x0E, 0, 0, 0, 0},
8011 {0x0F, 0, 0, 0, 0},
8012 {0x10, 0, 0, 0, 0},
8013 {0x11, 0, 0, 0, 0},
8014 {0x12, 0, 0, 0, 0},
8015 {0x13, 0, 0, 0, 0},
8016 {0x14, 0, 0, 0, 0},
8017 {0x15, 0, 0, 0, 0},
8018 {0x16, 0, 0, 0, 0},
8019 {0x17, 0, 0, 0, 0},
8020 {0x18, 0, 0, 0, 0},
8021 {0x19, 0, 0, 0, 0},
8022 {0x1A, 0, 0, 0, 0},
8023 {0x1B, 0, 0, 0, 0},
8024 {0x1C, 0, 0, 0, 0},
8025 {0x1D, 0, 0, 0, 0},
8026 {0x1E, 0, 0, 0, 0},
8027 {0x1F, 0, 0, 0, 0},
8028 {0x20, 0, 0, 0, 0},
8029 {0x21, 0, 0, 0, 0},
8030 {0x22, 0x60, 0x60, 0, 0},
8031 {0x23, 0x6, 0x6, 0, 0},
8032 {0x24, 0xc, 0xc, 0, 0},
8033 {0x25, 0, 0, 0, 0},
8034 {0x26, 0, 0, 0, 0},
8035 {0x27, 0, 0, 0, 0},
8036 {0x28, 0x1, 0x1, 0, 0},
8037 {0x29, 0, 0, 0, 0},
8038 {0x2A, 0, 0, 0, 0},
8039 {0x2B, 0, 0, 0, 0},
8040 {0x2C, 0, 0, 0, 0},
8041 {0x2D, 0, 0, 0, 0},
8042 {0x2E, 0xd, 0xd, 0, 0},
8043 {0x2F, 0x1f, 0x1f, 0, 0},
8044 {0x30, 0x15, 0x15, 0, 0},
8045 {0x31, 0xf, 0xf, 0, 0},
8046 {0x32, 0, 0, 0, 0},
8047 {0x33, 0, 0, 0, 0},
8048 {0x34, 0, 0, 0, 0},
8049 {0x35, 0, 0, 0, 0},
8050 {0x36, 0, 0, 0, 0},
8051 {0x37, 0, 0, 0, 0},
8052 {0x38, 0, 0, 0, 0},
8053 {0x39, 0, 0, 0, 0},
8054 {0x3A, 0, 0, 0, 0},
8055 {0x3B, 0, 0, 0, 0},
8056 {0x3C, 0x13, 0x13, 0, 0},
8057 {0x3D, 0xf, 0xf, 0, 0},
8058 {0x3E, 0x18, 0x18, 0, 0},
8059 {0x3F, 0, 0, 0, 0},
8060 {0x40, 0, 0, 0, 0},
8061 {0x41, 0x20, 0x20, 0, 0},
8062 {0x42, 0x20, 0x20, 0, 0},
8063 {0x43, 0, 0, 0, 0},
8064 {0x44, 0x77, 0x77, 0, 0},
8065 {0x45, 0x7, 0x7, 0, 0},
8066 {0x46, 0x1, 0x1, 0, 0},
8067 {0x47, 0x4, 0x4, 0, 0},
8068 {0x48, 0xf, 0xf, 0, 0},
8069 {0x49, 0x30, 0x30, 0, 0},
8070 {0x4A, 0x32, 0x32, 0, 0},
8071 {0x4B, 0xd, 0xd, 0, 0},
8072 {0x4C, 0xd, 0xd, 0, 0},
8073 {0x4D, 0x4, 0x4, 0, 0},
8074 {0x4E, 0x6, 0x6, 0, 0},
8075 {0x4F, 0x1, 0x1, 0, 0},
8076 {0x50, 0x1c, 0x1c, 0, 0},
8077 {0x51, 0x2, 0x2, 0, 0},
8078 {0x52, 0x2, 0x2, 0, 0},
8079 {0x53, 0xf7, 0xf7, 1, 1},
8080 {0x54, 0xb4, 0xb4, 0, 0},
8081 {0x55, 0xd2, 0xd2, 0, 0},
8082 {0x56, 0, 0, 0, 0},
8083 {0x57, 0, 0, 0, 0},
8084 {0x58, 0x4, 0x4, 0, 0},
8085 {0x59, 0x96, 0x96, 0, 0},
8086 {0x5A, 0x3e, 0x3e, 0, 0},
8087 {0x5B, 0x3e, 0x3e, 0, 0},
8088 {0x5C, 0x13, 0x13, 0, 0},
8089 {0x5D, 0x2, 0x2, 0, 0},
8090 {0x5E, 0, 0, 0, 0},
8091 {0x5F, 0x7, 0x7, 0, 0},
8092 {0x60, 0x7, 0x7, 1, 1},
8093 {0x61, 0x8, 0x8, 0, 0},
8094 {0x62, 0x3, 0x3, 0, 0},
8095 {0x63, 0, 0, 0, 0},
8096 {0x64, 0, 0, 0, 0},
8097 {0x65, 0, 0, 0, 0},
8098 {0x66, 0, 0, 0, 0},
8099 {0x67, 0, 0, 0, 0},
8100 {0x68, 0x40, 0x40, 0, 0},
8101 {0x69, 0, 0, 0, 0},
8102 {0x6A, 0, 0, 0, 0},
8103 {0x6B, 0, 0, 0, 0},
8104 {0x6C, 0, 0, 0, 0},
8105 {0x6D, 0x1, 0x1, 0, 0},
8106 {0x6E, 0, 0, 0, 0},
8107 {0x6F, 0, 0, 0, 0},
8108 {0x70, 0x60, 0x60, 0, 0},
8109 {0x71, 0x66, 0x66, 0, 0},
8110 {0x72, 0xc, 0xc, 0, 0},
8111 {0x73, 0x66, 0x66, 0, 0},
8112 {0x74, 0x8f, 0x8f, 1, 1},
8113 {0x75, 0, 0, 0, 0},
8114 {0x76, 0xcc, 0xcc, 0, 0},
8115 {0x77, 0x1, 0x1, 0, 0},
8116 {0x78, 0x66, 0x66, 0, 0},
8117 {0x79, 0x66, 0x66, 0, 0},
8118 {0x7A, 0, 0, 0, 0},
8119 {0x7B, 0, 0, 0, 0},
8120 {0x7C, 0, 0, 0, 0},
8121 {0x7D, 0, 0, 0, 0},
8122 {0x7E, 0, 0, 0, 0},
8123 {0x7F, 0, 0, 0, 0},
8124 {0x80, 0, 0, 0, 0},
8125 {0x81, 0, 0, 0, 0},
8126 {0x82, 0, 0, 0, 0},
8127 {0x83, 0, 0, 0, 0},
8128 {0x84, 0, 0, 0, 0},
8129 {0x85, 0xff, 0xff, 0, 0},
8130 {0x86, 0, 0, 0, 0},
8131 {0x87, 0, 0, 0, 0},
8132 {0x88, 0, 0, 0, 0},
8133 {0x89, 0, 0, 0, 0},
8134 {0x8A, 0, 0, 0, 0},
8135 {0x8B, 0, 0, 0, 0},
8136 {0x8C, 0, 0, 0, 0},
8137 {0x8D, 0, 0, 0, 0},
8138 {0x8E, 0, 0, 0, 0},
8139 {0x8F, 0, 0, 0, 0},
8140 {0x90, 0, 0, 0, 0},
8141 {0x91, 0, 0, 0, 0},
8142 {0x92, 0, 0, 0, 0},
8143 {0x93, 0, 0, 0, 0},
8144 {0x94, 0, 0, 0, 0},
8145 {0x95, 0, 0, 0, 0},
8146 {0x96, 0, 0, 0, 0},
8147 {0x97, 0, 0, 0, 0},
8148 {0x98, 0, 0, 0, 0},
8149 {0x99, 0, 0, 0, 0},
8150 {0x9A, 0, 0, 0, 0},
8151 {0x9B, 0, 0, 0, 0},
8152 {0x9C, 0, 0, 0, 0},
8153 {0x9D, 0, 0, 0, 0},
8154 {0x9E, 0, 0, 0, 0},
8155 {0x9F, 0x6, 0x6, 0, 0},
8156 {0xA0, 0x66, 0x66, 0, 0},
8157 {0xA1, 0x66, 0x66, 0, 0},
8158 {0xA2, 0x66, 0x66, 0, 0},
8159 {0xA3, 0x66, 0x66, 0, 0},
8160 {0xA4, 0x66, 0x66, 0, 0},
8161 {0xA5, 0x66, 0x66, 0, 0},
8162 {0xA6, 0x66, 0x66, 0, 0},
8163 {0xA7, 0x66, 0x66, 0, 0},
8164 {0xA8, 0x66, 0x66, 0, 0},
8165 {0xA9, 0x66, 0x66, 0, 0},
8166 {0xAA, 0x66, 0x66, 0, 0},
8167 {0xAB, 0x66, 0x66, 0, 0},
8168 {0xAC, 0x66, 0x66, 0, 0},
8169 {0xAD, 0x66, 0x66, 0, 0},
8170 {0xAE, 0x66, 0x66, 0, 0},
8171 {0xAF, 0x66, 0x66, 0, 0},
8172 {0xB0, 0x66, 0x66, 0, 0},
8173 {0xB1, 0x66, 0x66, 0, 0},
8174 {0xB2, 0x66, 0x66, 0, 0},
8175 {0xB3, 0xa, 0xa, 0, 0},
8176 {0xB4, 0, 0, 0, 0},
8177 {0xB5, 0, 0, 0, 0},
8178 {0xB6, 0, 0, 0, 0},
8179 {0xFFFF, 0, 0, 0, 0}
8180 };
8181
8182 static struct radio_regs regs_TX_2056[] = {
8183 {0x02, 0, 0, 0, 0},
8184 {0x03, 0, 0, 0, 0},
8185 {0x04, 0, 0, 0, 0},
8186 {0x05, 0, 0, 0, 0},
8187 {0x06, 0, 0, 0, 0},
8188 {0x07, 0, 0, 0, 0},
8189 {0x08, 0, 0, 0, 0},
8190 {0x09, 0, 0, 0, 0},
8191 {0x0A, 0, 0, 0, 0},
8192 {0x0B, 0, 0, 0, 0},
8193 {0x0C, 0, 0, 0, 0},
8194 {0x0D, 0, 0, 0, 0},
8195 {0x0E, 0, 0, 0, 0},
8196 {0x0F, 0, 0, 0, 0},
8197 {0x10, 0, 0, 0, 0},
8198 {0x11, 0, 0, 0, 0},
8199 {0x12, 0, 0, 0, 0},
8200 {0x13, 0, 0, 0, 0},
8201 {0x14, 0, 0, 0, 0},
8202 {0x15, 0, 0, 0, 0},
8203 {0x16, 0, 0, 0, 0},
8204 {0x17, 0, 0, 0, 0},
8205 {0x18, 0, 0, 0, 0},
8206 {0x19, 0, 0, 0, 0},
8207 {0x1A, 0, 0, 0, 0},
8208 {0x1B, 0, 0, 0, 0},
8209 {0x1C, 0, 0, 0, 0},
8210 {0x1D, 0, 0, 0, 0},
8211 {0x1E, 0, 0, 0, 0},
8212 {0x1F, 0, 0, 0, 0},
8213 {0x20, 0, 0, 0, 0},
8214 {0x21, 0x88, 0x88, 0, 0},
8215 {0x22, 0x88, 0x88, 0, 0},
8216 {0x23, 0x88, 0x88, 0, 0},
8217 {0x24, 0x88, 0x88, 0, 0},
8218 {0x25, 0xc, 0xc, 0, 0},
8219 {0x26, 0, 0, 0, 0},
8220 {0x27, 0x3, 0x3, 0, 0},
8221 {0x28, 0, 0, 0, 0},
8222 {0x29, 0x3, 0x3, 0, 0},
8223 {0x2A, 0x37, 0x37, 0, 0},
8224 {0x2B, 0x3, 0x3, 0, 0},
8225 {0x2C, 0, 0, 0, 0},
8226 {0x2D, 0, 0, 0, 0},
8227 {0x2E, 0x1, 0x1, 0, 0},
8228 {0x2F, 0x1, 0x1, 0, 0},
8229 {0x30, 0, 0, 0, 0},
8230 {0x31, 0, 0, 0, 0},
8231 {0x32, 0, 0, 0, 0},
8232 {0x33, 0x11, 0x11, 0, 0},
8233 {0x34, 0x11, 0x11, 0, 0},
8234 {0x35, 0, 0, 0, 0},
8235 {0x36, 0, 0, 0, 0},
8236 {0x37, 0x3, 0x3, 0, 0},
8237 {0x38, 0xf, 0xf, 0, 0},
8238 {0x39, 0, 0, 0, 0},
8239 {0x3A, 0x2d, 0x2d, 0, 0},
8240 {0x3B, 0, 0, 0, 0},
8241 {0x3C, 0x6e, 0x6e, 0, 0},
8242 {0x3D, 0xf0, 0xf0, 1, 1},
8243 {0x3E, 0, 0, 0, 0},
8244 {0x3F, 0, 0, 0, 0},
8245 {0x40, 0, 0, 0, 0},
8246 {0x41, 0x3, 0x3, 0, 0},
8247 {0x42, 0x3, 0x3, 0, 0},
8248 {0x43, 0, 0, 0, 0},
8249 {0x44, 0x1e, 0x1e, 0, 0},
8250 {0x45, 0, 0, 0, 0},
8251 {0x46, 0x6e, 0x6e, 0, 0},
8252 {0x47, 0xf0, 0xf0, 1, 1},
8253 {0x48, 0, 0, 0, 0},
8254 {0x49, 0x2, 0x2, 0, 0},
8255 {0x4A, 0xff, 0xff, 1, 1},
8256 {0x4B, 0xc, 0xc, 0, 0},
8257 {0x4C, 0, 0, 0, 0},
8258 {0x4D, 0x38, 0x38, 0, 0},
8259 {0x4E, 0x70, 0x70, 1, 1},
8260 {0x4F, 0x2, 0x2, 0, 0},
8261 {0x50, 0x88, 0x88, 0, 0},
8262 {0x51, 0xc, 0xc, 0, 0},
8263 {0x52, 0, 0, 0, 0},
8264 {0x53, 0x8, 0x8, 0, 0},
8265 {0x54, 0x70, 0x70, 1, 1},
8266 {0x55, 0x2, 0x2, 0, 0},
8267 {0x56, 0xff, 0xff, 1, 1},
8268 {0x57, 0, 0, 0, 0},
8269 {0x58, 0x83, 0x83, 0, 0},
8270 {0x59, 0x77, 0x77, 1, 1},
8271 {0x5A, 0, 0, 0, 0},
8272 {0x5B, 0x2, 0x2, 0, 0},
8273 {0x5C, 0x88, 0x88, 0, 0},
8274 {0x5D, 0, 0, 0, 0},
8275 {0x5E, 0x8, 0x8, 0, 0},
8276 {0x5F, 0x77, 0x77, 1, 1},
8277 {0x60, 0x1, 0x1, 0, 0},
8278 {0x61, 0, 0, 0, 0},
8279 {0x62, 0x7, 0x7, 0, 0},
8280 {0x63, 0, 0, 0, 0},
8281 {0x64, 0x7, 0x7, 0, 0},
8282 {0x65, 0, 0, 0, 0},
8283 {0x66, 0, 0, 0, 0},
8284 {0x67, 0x74, 0x74, 1, 1},
8285 {0x68, 0, 0, 0, 0},
8286 {0x69, 0xa, 0xa, 0, 0},
8287 {0x6A, 0, 0, 0, 0},
8288 {0x6B, 0, 0, 0, 0},
8289 {0x6C, 0, 0, 0, 0},
8290 {0x6D, 0, 0, 0, 0},
8291 {0x6E, 0, 0, 0, 0},
8292 {0x6F, 0, 0, 0, 0},
8293 {0x70, 0, 0, 0, 0},
8294 {0x71, 0x2, 0x2, 0, 0},
8295 {0x72, 0, 0, 0, 0},
8296 {0x73, 0, 0, 0, 0},
8297 {0x74, 0xe, 0xe, 0, 0},
8298 {0x75, 0xe, 0xe, 0, 0},
8299 {0x76, 0xe, 0xe, 0, 0},
8300 {0x77, 0x13, 0x13, 0, 0},
8301 {0x78, 0x13, 0x13, 0, 0},
8302 {0x79, 0x1b, 0x1b, 0, 0},
8303 {0x7A, 0x1b, 0x1b, 0, 0},
8304 {0x7B, 0x55, 0x55, 0, 0},
8305 {0x7C, 0x5b, 0x5b, 0, 0},
8306 {0x7D, 0, 0, 0, 0},
8307 {0x7E, 0, 0, 0, 0},
8308 {0x7F, 0, 0, 0, 0},
8309 {0x80, 0, 0, 0, 0},
8310 {0x81, 0, 0, 0, 0},
8311 {0x82, 0, 0, 0, 0},
8312 {0x83, 0, 0, 0, 0},
8313 {0x84, 0, 0, 0, 0},
8314 {0x85, 0, 0, 0, 0},
8315 {0x86, 0, 0, 0, 0},
8316 {0x87, 0, 0, 0, 0},
8317 {0x88, 0, 0, 0, 0},
8318 {0x89, 0, 0, 0, 0},
8319 {0x8A, 0, 0, 0, 0},
8320 {0x8B, 0, 0, 0, 0},
8321 {0x8C, 0, 0, 0, 0},
8322 {0x8D, 0, 0, 0, 0},
8323 {0x8E, 0, 0, 0, 0},
8324 {0x8F, 0, 0, 0, 0},
8325 {0x90, 0, 0, 0, 0},
8326 {0x91, 0, 0, 0, 0},
8327 {0x92, 0, 0, 0, 0},
8328 {0xFFFF, 0, 0, 0, 0}
8329 };
8330
8331 static struct radio_regs regs_RX_2056[] = {
8332 {0x02, 0, 0, 0, 0},
8333 {0x03, 0, 0, 0, 0},
8334 {0x04, 0, 0, 0, 0},
8335 {0x05, 0, 0, 0, 0},
8336 {0x06, 0, 0, 0, 0},
8337 {0x07, 0, 0, 0, 0},
8338 {0x08, 0, 0, 0, 0},
8339 {0x09, 0, 0, 0, 0},
8340 {0x0A, 0, 0, 0, 0},
8341 {0x0B, 0, 0, 0, 0},
8342 {0x0C, 0, 0, 0, 0},
8343 {0x0D, 0, 0, 0, 0},
8344 {0x0E, 0, 0, 0, 0},
8345 {0x0F, 0, 0, 0, 0},
8346 {0x10, 0, 0, 0, 0},
8347 {0x11, 0, 0, 0, 0},
8348 {0x12, 0, 0, 0, 0},
8349 {0x13, 0, 0, 0, 0},
8350 {0x14, 0, 0, 0, 0},
8351 {0x15, 0, 0, 0, 0},
8352 {0x16, 0, 0, 0, 0},
8353 {0x17, 0, 0, 0, 0},
8354 {0x18, 0, 0, 0, 0},
8355 {0x19, 0, 0, 0, 0},
8356 {0x1A, 0, 0, 0, 0},
8357 {0x1B, 0, 0, 0, 0},
8358 {0x1C, 0, 0, 0, 0},
8359 {0x1D, 0, 0, 0, 0},
8360 {0x1E, 0, 0, 0, 0},
8361 {0x1F, 0, 0, 0, 0},
8362 {0x20, 0x3, 0x3, 0, 0},
8363 {0x21, 0, 0, 0, 0},
8364 {0x22, 0, 0, 0, 0},
8365 {0x23, 0x90, 0x90, 0, 0},
8366 {0x24, 0x55, 0x55, 0, 0},
8367 {0x25, 0x15, 0x15, 0, 0},
8368 {0x26, 0x5, 0x5, 0, 0},
8369 {0x27, 0x15, 0x15, 0, 0},
8370 {0x28, 0x5, 0x5, 0, 0},
8371 {0x29, 0x20, 0x20, 0, 0},
8372 {0x2A, 0x11, 0x11, 0, 0},
8373 {0x2B, 0x90, 0x90, 0, 0},
8374 {0x2C, 0, 0, 0, 0},
8375 {0x2D, 0x88, 0x88, 0, 0},
8376 {0x2E, 0x32, 0x32, 0, 0},
8377 {0x2F, 0x77, 0x77, 0, 0},
8378 {0x30, 0x17, 0x17, 1, 1},
8379 {0x31, 0xff, 0xff, 1, 1},
8380 {0x32, 0x20, 0x20, 0, 0},
8381 {0x33, 0, 0, 0, 0},
8382 {0x34, 0x88, 0x88, 0, 0},
8383 {0x35, 0x32, 0x32, 0, 0},
8384 {0x36, 0x77, 0x77, 0, 0},
8385 {0x37, 0x17, 0x17, 1, 1},
8386 {0x38, 0xf0, 0xf0, 1, 1},
8387 {0x39, 0x20, 0x20, 0, 0},
8388 {0x3A, 0x8, 0x8, 0, 0},
8389 {0x3B, 0x99, 0x99, 0, 0},
8390 {0x3C, 0, 0, 0, 0},
8391 {0x3D, 0x44, 0x44, 1, 1},
8392 {0x3E, 0, 0, 0, 0},
8393 {0x3F, 0x44, 0x44, 0, 0},
8394 {0x40, 0xf, 0xf, 1, 1},
8395 {0x41, 0x6, 0x6, 0, 0},
8396 {0x42, 0x4, 0x4, 0, 0},
8397 {0x43, 0x50, 0x50, 1, 1},
8398 {0x44, 0x8, 0x8, 0, 0},
8399 {0x45, 0x99, 0x99, 0, 0},
8400 {0x46, 0, 0, 0, 0},
8401 {0x47, 0x11, 0x11, 0, 0},
8402 {0x48, 0, 0, 0, 0},
8403 {0x49, 0x44, 0x44, 0, 0},
8404 {0x4A, 0x7, 0x7, 0, 0},
8405 {0x4B, 0x6, 0x6, 0, 0},
8406 {0x4C, 0x4, 0x4, 0, 0},
8407 {0x4D, 0, 0, 0, 0},
8408 {0x4E, 0, 0, 0, 0},
8409 {0x4F, 0x66, 0x66, 0, 0},
8410 {0x50, 0x66, 0x66, 0, 0},
8411 {0x51, 0x57, 0x57, 0, 0},
8412 {0x52, 0x57, 0x57, 0, 0},
8413 {0x53, 0x44, 0x44, 0, 0},
8414 {0x54, 0, 0, 0, 0},
8415 {0x55, 0, 0, 0, 0},
8416 {0x56, 0x8, 0x8, 0, 0},
8417 {0x57, 0x8, 0x8, 0, 0},
8418 {0x58, 0x7, 0x7, 0, 0},
8419 {0x59, 0x22, 0x22, 0, 0},
8420 {0x5A, 0x22, 0x22, 0, 0},
8421 {0x5B, 0x2, 0x2, 0, 0},
8422 {0x5C, 0x23, 0x23, 0, 0},
8423 {0x5D, 0x7, 0x7, 0, 0},
8424 {0x5E, 0x55, 0x55, 0, 0},
8425 {0x5F, 0x23, 0x23, 0, 0},
8426 {0x60, 0x41, 0x41, 0, 0},
8427 {0x61, 0x1, 0x1, 0, 0},
8428 {0x62, 0xa, 0xa, 0, 0},
8429 {0x63, 0, 0, 0, 0},
8430 {0x64, 0, 0, 0, 0},
8431 {0x65, 0, 0, 0, 0},
8432 {0x66, 0, 0, 0, 0},
8433 {0x67, 0, 0, 0, 0},
8434 {0x68, 0, 0, 0, 0},
8435 {0x69, 0, 0, 0, 0},
8436 {0x6A, 0, 0, 0, 0},
8437 {0x6B, 0xc, 0xc, 0, 0},
8438 {0x6C, 0, 0, 0, 0},
8439 {0x6D, 0, 0, 0, 0},
8440 {0x6E, 0, 0, 0, 0},
8441 {0x6F, 0, 0, 0, 0},
8442 {0x70, 0, 0, 0, 0},
8443 {0x71, 0, 0, 0, 0},
8444 {0x72, 0x22, 0x22, 0, 0},
8445 {0x73, 0x22, 0x22, 0, 0},
8446 {0x74, 0x2, 0x2, 0, 0},
8447 {0x75, 0xa, 0xa, 0, 0},
8448 {0x76, 0x1, 0x1, 0, 0},
8449 {0x77, 0x22, 0x22, 0, 0},
8450 {0x78, 0x30, 0x30, 0, 0},
8451 {0x79, 0, 0, 0, 0},
8452 {0x7A, 0, 0, 0, 0},
8453 {0x7B, 0, 0, 0, 0},
8454 {0x7C, 0, 0, 0, 0},
8455 {0x7D, 0, 0, 0, 0},
8456 {0x7E, 0, 0, 0, 0},
8457 {0x7F, 0, 0, 0, 0},
8458 {0x80, 0, 0, 0, 0},
8459 {0x81, 0, 0, 0, 0},
8460 {0x82, 0, 0, 0, 0},
8461 {0x83, 0, 0, 0, 0},
8462 {0x84, 0, 0, 0, 0},
8463 {0x85, 0, 0, 0, 0},
8464 {0x86, 0, 0, 0, 0},
8465 {0x87, 0, 0, 0, 0},
8466 {0x88, 0, 0, 0, 0},
8467 {0x89, 0, 0, 0, 0},
8468 {0x8A, 0, 0, 0, 0},
8469 {0x8B, 0, 0, 0, 0},
8470 {0x8C, 0, 0, 0, 0},
8471 {0x8D, 0, 0, 0, 0},
8472 {0x8E, 0, 0, 0, 0},
8473 {0x8F, 0, 0, 0, 0},
8474 {0x90, 0, 0, 0, 0},
8475 {0x91, 0, 0, 0, 0},
8476 {0x92, 0, 0, 0, 0},
8477 {0x93, 0, 0, 0, 0},
8478 {0x94, 0, 0, 0, 0},
8479 {0xFFFF, 0, 0, 0, 0}
8480 };
8481
8482 static struct radio_regs regs_SYN_2056_A1[] = {
8483 {0x02, 0, 0, 0, 0},
8484 {0x03, 0, 0, 0, 0},
8485 {0x04, 0, 0, 0, 0},
8486 {0x05, 0, 0, 0, 0},
8487 {0x06, 0, 0, 0, 0},
8488 {0x07, 0, 0, 0, 0},
8489 {0x08, 0, 0, 0, 0},
8490 {0x09, 0x1, 0x1, 0, 0},
8491 {0x0A, 0, 0, 0, 0},
8492 {0x0B, 0, 0, 0, 0},
8493 {0x0C, 0, 0, 0, 0},
8494 {0x0D, 0, 0, 0, 0},
8495 {0x0E, 0, 0, 0, 0},
8496 {0x0F, 0, 0, 0, 0},
8497 {0x10, 0, 0, 0, 0},
8498 {0x11, 0, 0, 0, 0},
8499 {0x12, 0, 0, 0, 0},
8500 {0x13, 0, 0, 0, 0},
8501 {0x14, 0, 0, 0, 0},
8502 {0x15, 0, 0, 0, 0},
8503 {0x16, 0, 0, 0, 0},
8504 {0x17, 0, 0, 0, 0},
8505 {0x18, 0, 0, 0, 0},
8506 {0x19, 0, 0, 0, 0},
8507 {0x1A, 0, 0, 0, 0},
8508 {0x1B, 0, 0, 0, 0},
8509 {0x1C, 0, 0, 0, 0},
8510 {0x1D, 0, 0, 0, 0},
8511 {0x1E, 0, 0, 0, 0},
8512 {0x1F, 0, 0, 0, 0},
8513 {0x20, 0, 0, 0, 0},
8514 {0x21, 0, 0, 0, 0},
8515 {0x22, 0x60, 0x60, 0, 0},
8516 {0x23, 0x6, 0x6, 0, 0},
8517 {0x24, 0xc, 0xc, 0, 0},
8518 {0x25, 0, 0, 0, 0},
8519 {0x26, 0, 0, 0, 0},
8520 {0x27, 0, 0, 0, 0},
8521 {0x28, 0x1, 0x1, 0, 0},
8522 {0x29, 0, 0, 0, 0},
8523 {0x2A, 0, 0, 0, 0},
8524 {0x2B, 0, 0, 0, 0},
8525 {0x2C, 0, 0, 0, 0},
8526 {0x2D, 0, 0, 0, 0},
8527 {0x2E, 0xd, 0xd, 0, 0},
8528 {0x2F, 0x1f, 0x1f, 0, 0},
8529 {0x30, 0x15, 0x15, 0, 0},
8530 {0x31, 0xf, 0xf, 0, 0},
8531 {0x32, 0, 0, 0, 0},
8532 {0x33, 0, 0, 0, 0},
8533 {0x34, 0, 0, 0, 0},
8534 {0x35, 0, 0, 0, 0},
8535 {0x36, 0, 0, 0, 0},
8536 {0x37, 0, 0, 0, 0},
8537 {0x38, 0, 0, 0, 0},
8538 {0x39, 0, 0, 0, 0},
8539 {0x3A, 0, 0, 0, 0},
8540 {0x3B, 0, 0, 0, 0},
8541 {0x3C, 0x13, 0x13, 0, 0},
8542 {0x3D, 0xf, 0xf, 0, 0},
8543 {0x3E, 0x18, 0x18, 0, 0},
8544 {0x3F, 0, 0, 0, 0},
8545 {0x40, 0, 0, 0, 0},
8546 {0x41, 0x20, 0x20, 0, 0},
8547 {0x42, 0x20, 0x20, 0, 0},
8548 {0x43, 0, 0, 0, 0},
8549 {0x44, 0x77, 0x77, 0, 0},
8550 {0x45, 0x7, 0x7, 0, 0},
8551 {0x46, 0x1, 0x1, 0, 0},
8552 {0x47, 0x4, 0x4, 0, 0},
8553 {0x48, 0xf, 0xf, 0, 0},
8554 {0x49, 0x30, 0x30, 0, 0},
8555 {0x4A, 0x32, 0x32, 0, 0},
8556 {0x4B, 0xd, 0xd, 0, 0},
8557 {0x4C, 0xd, 0xd, 0, 0},
8558 {0x4D, 0x4, 0x4, 0, 0},
8559 {0x4E, 0x6, 0x6, 0, 0},
8560 {0x4F, 0x1, 0x1, 0, 0},
8561 {0x50, 0x1c, 0x1c, 0, 0},
8562 {0x51, 0x2, 0x2, 0, 0},
8563 {0x52, 0x2, 0x2, 0, 0},
8564 {0x53, 0xf7, 0xf7, 1, 1},
8565 {0x54, 0xb4, 0xb4, 0, 0},
8566 {0x55, 0xd2, 0xd2, 0, 0},
8567 {0x56, 0, 0, 0, 0},
8568 {0x57, 0, 0, 0, 0},
8569 {0x58, 0x4, 0x4, 0, 0},
8570 {0x59, 0x96, 0x96, 0, 0},
8571 {0x5A, 0x3e, 0x3e, 0, 0},
8572 {0x5B, 0x3e, 0x3e, 0, 0},
8573 {0x5C, 0x13, 0x13, 0, 0},
8574 {0x5D, 0x2, 0x2, 0, 0},
8575 {0x5E, 0, 0, 0, 0},
8576 {0x5F, 0x7, 0x7, 0, 0},
8577 {0x60, 0x7, 0x7, 1, 1},
8578 {0x61, 0x8, 0x8, 0, 0},
8579 {0x62, 0x3, 0x3, 0, 0},
8580 {0x63, 0, 0, 0, 0},
8581 {0x64, 0, 0, 0, 0},
8582 {0x65, 0, 0, 0, 0},
8583 {0x66, 0, 0, 0, 0},
8584 {0x67, 0, 0, 0, 0},
8585 {0x68, 0x40, 0x40, 0, 0},
8586 {0x69, 0, 0, 0, 0},
8587 {0x6A, 0, 0, 0, 0},
8588 {0x6B, 0, 0, 0, 0},
8589 {0x6C, 0, 0, 0, 0},
8590 {0x6D, 0x1, 0x1, 0, 0},
8591 {0x6E, 0, 0, 0, 0},
8592 {0x6F, 0, 0, 0, 0},
8593 {0x70, 0x60, 0x60, 0, 0},
8594 {0x71, 0x66, 0x66, 0, 0},
8595 {0x72, 0xc, 0xc, 0, 0},
8596 {0x73, 0x66, 0x66, 0, 0},
8597 {0x74, 0x8f, 0x8f, 1, 1},
8598 {0x75, 0, 0, 0, 0},
8599 {0x76, 0xcc, 0xcc, 0, 0},
8600 {0x77, 0x1, 0x1, 0, 0},
8601 {0x78, 0x66, 0x66, 0, 0},
8602 {0x79, 0x66, 0x66, 0, 0},
8603 {0x7A, 0, 0, 0, 0},
8604 {0x7B, 0, 0, 0, 0},
8605 {0x7C, 0, 0, 0, 0},
8606 {0x7D, 0, 0, 0, 0},
8607 {0x7E, 0, 0, 0, 0},
8608 {0x7F, 0, 0, 0, 0},
8609 {0x80, 0, 0, 0, 0},
8610 {0x81, 0, 0, 0, 0},
8611 {0x82, 0, 0, 0, 0},
8612 {0x83, 0, 0, 0, 0},
8613 {0x84, 0, 0, 0, 0},
8614 {0x85, 0xff, 0xff, 0, 0},
8615 {0x86, 0, 0, 0, 0},
8616 {0x87, 0, 0, 0, 0},
8617 {0x88, 0, 0, 0, 0},
8618 {0x89, 0, 0, 0, 0},
8619 {0x8A, 0, 0, 0, 0},
8620 {0x8B, 0, 0, 0, 0},
8621 {0x8C, 0, 0, 0, 0},
8622 {0x8D, 0, 0, 0, 0},
8623 {0x8E, 0, 0, 0, 0},
8624 {0x8F, 0, 0, 0, 0},
8625 {0x90, 0, 0, 0, 0},
8626 {0x91, 0, 0, 0, 0},
8627 {0x92, 0, 0, 0, 0},
8628 {0x93, 0, 0, 0, 0},
8629 {0x94, 0, 0, 0, 0},
8630 {0x95, 0, 0, 0, 0},
8631 {0x96, 0, 0, 0, 0},
8632 {0x97, 0, 0, 0, 0},
8633 {0x98, 0, 0, 0, 0},
8634 {0x99, 0, 0, 0, 0},
8635 {0x9A, 0, 0, 0, 0},
8636 {0x9B, 0, 0, 0, 0},
8637 {0x9C, 0, 0, 0, 0},
8638 {0x9D, 0, 0, 0, 0},
8639 {0x9E, 0, 0, 0, 0},
8640 {0x9F, 0x6, 0x6, 0, 0},
8641 {0xA0, 0x66, 0x66, 0, 0},
8642 {0xA1, 0x66, 0x66, 0, 0},
8643 {0xA2, 0x66, 0x66, 0, 0},
8644 {0xA3, 0x66, 0x66, 0, 0},
8645 {0xA4, 0x66, 0x66, 0, 0},
8646 {0xA5, 0x66, 0x66, 0, 0},
8647 {0xA6, 0x66, 0x66, 0, 0},
8648 {0xA7, 0x66, 0x66, 0, 0},
8649 {0xA8, 0x66, 0x66, 0, 0},
8650 {0xA9, 0x66, 0x66, 0, 0},
8651 {0xAA, 0x66, 0x66, 0, 0},
8652 {0xAB, 0x66, 0x66, 0, 0},
8653 {0xAC, 0x66, 0x66, 0, 0},
8654 {0xAD, 0x66, 0x66, 0, 0},
8655 {0xAE, 0x66, 0x66, 0, 0},
8656 {0xAF, 0x66, 0x66, 0, 0},
8657 {0xB0, 0x66, 0x66, 0, 0},
8658 {0xB1, 0x66, 0x66, 0, 0},
8659 {0xB2, 0x66, 0x66, 0, 0},
8660 {0xB3, 0xa, 0xa, 0, 0},
8661 {0xB4, 0, 0, 0, 0},
8662 {0xB5, 0, 0, 0, 0},
8663 {0xB6, 0, 0, 0, 0},
8664 {0xFFFF, 0, 0, 0, 0}
8665 };
8666
8667 static struct radio_regs regs_TX_2056_A1[] = {
8668 {0x02, 0, 0, 0, 0},
8669 {0x03, 0, 0, 0, 0},
8670 {0x04, 0, 0, 0, 0},
8671 {0x05, 0, 0, 0, 0},
8672 {0x06, 0, 0, 0, 0},
8673 {0x07, 0, 0, 0, 0},
8674 {0x08, 0, 0, 0, 0},
8675 {0x09, 0, 0, 0, 0},
8676 {0x0A, 0, 0, 0, 0},
8677 {0x0B, 0, 0, 0, 0},
8678 {0x0C, 0, 0, 0, 0},
8679 {0x0D, 0, 0, 0, 0},
8680 {0x0E, 0, 0, 0, 0},
8681 {0x0F, 0, 0, 0, 0},
8682 {0x10, 0, 0, 0, 0},
8683 {0x11, 0, 0, 0, 0},
8684 {0x12, 0, 0, 0, 0},
8685 {0x13, 0, 0, 0, 0},
8686 {0x14, 0, 0, 0, 0},
8687 {0x15, 0, 0, 0, 0},
8688 {0x16, 0, 0, 0, 0},
8689 {0x17, 0, 0, 0, 0},
8690 {0x18, 0, 0, 0, 0},
8691 {0x19, 0, 0, 0, 0},
8692 {0x1A, 0, 0, 0, 0},
8693 {0x1B, 0, 0, 0, 0},
8694 {0x1C, 0, 0, 0, 0},
8695 {0x1D, 0, 0, 0, 0},
8696 {0x1E, 0, 0, 0, 0},
8697 {0x1F, 0, 0, 0, 0},
8698 {0x20, 0, 0, 0, 0},
8699 {0x21, 0x88, 0x88, 0, 0},
8700 {0x22, 0x88, 0x88, 0, 0},
8701 {0x23, 0x88, 0x88, 0, 0},
8702 {0x24, 0x88, 0x88, 0, 0},
8703 {0x25, 0xc, 0xc, 0, 0},
8704 {0x26, 0, 0, 0, 0},
8705 {0x27, 0x3, 0x3, 0, 0},
8706 {0x28, 0, 0, 0, 0},
8707 {0x29, 0x3, 0x3, 0, 0},
8708 {0x2A, 0x37, 0x37, 0, 0},
8709 {0x2B, 0x3, 0x3, 0, 0},
8710 {0x2C, 0, 0, 0, 0},
8711 {0x2D, 0, 0, 0, 0},
8712 {0x2E, 0x1, 0x1, 0, 0},
8713 {0x2F, 0x1, 0x1, 0, 0},
8714 {0x30, 0, 0, 0, 0},
8715 {0x31, 0, 0, 0, 0},
8716 {0x32, 0, 0, 0, 0},
8717 {0x33, 0x11, 0x11, 0, 0},
8718 {0x34, 0x11, 0x11, 0, 0},
8719 {0x35, 0, 0, 0, 0},
8720 {0x36, 0, 0, 0, 0},
8721 {0x37, 0x3, 0x3, 0, 0},
8722 {0x38, 0xf, 0xf, 0, 0},
8723 {0x39, 0, 0, 0, 0},
8724 {0x3A, 0x2d, 0x2d, 0, 0},
8725 {0x3B, 0, 0, 0, 0},
8726 {0x3C, 0x6e, 0x6e, 0, 0},
8727 {0x3D, 0xf0, 0xf0, 1, 1},
8728 {0x3E, 0, 0, 0, 0},
8729 {0x3F, 0, 0, 0, 0},
8730 {0x40, 0, 0, 0, 0},
8731 {0x41, 0x3, 0x3, 0, 0},
8732 {0x42, 0x3, 0x3, 0, 0},
8733 {0x43, 0, 0, 0, 0},
8734 {0x44, 0x1e, 0x1e, 0, 0},
8735 {0x45, 0, 0, 0, 0},
8736 {0x46, 0x6e, 0x6e, 0, 0},
8737 {0x47, 0xf0, 0xf0, 1, 1},
8738 {0x48, 0, 0, 0, 0},
8739 {0x49, 0x2, 0x2, 0, 0},
8740 {0x4A, 0xff, 0xff, 1, 1},
8741 {0x4B, 0xc, 0xc, 0, 0},
8742 {0x4C, 0, 0, 0, 0},
8743 {0x4D, 0x38, 0x38, 0, 0},
8744 {0x4E, 0x70, 0x70, 1, 1},
8745 {0x4F, 0x2, 0x2, 0, 0},
8746 {0x50, 0x88, 0x88, 0, 0},
8747 {0x51, 0xc, 0xc, 0, 0},
8748 {0x52, 0, 0, 0, 0},
8749 {0x53, 0x8, 0x8, 0, 0},
8750 {0x54, 0x70, 0x70, 1, 1},
8751 {0x55, 0x2, 0x2, 0, 0},
8752 {0x56, 0xff, 0xff, 1, 1},
8753 {0x57, 0, 0, 0, 0},
8754 {0x58, 0x83, 0x83, 0, 0},
8755 {0x59, 0x77, 0x77, 1, 1},
8756 {0x5A, 0, 0, 0, 0},
8757 {0x5B, 0x2, 0x2, 0, 0},
8758 {0x5C, 0x88, 0x88, 0, 0},
8759 {0x5D, 0, 0, 0, 0},
8760 {0x5E, 0x8, 0x8, 0, 0},
8761 {0x5F, 0x77, 0x77, 1, 1},
8762 {0x60, 0x1, 0x1, 0, 0},
8763 {0x61, 0, 0, 0, 0},
8764 {0x62, 0x7, 0x7, 0, 0},
8765 {0x63, 0, 0, 0, 0},
8766 {0x64, 0x7, 0x7, 0, 0},
8767 {0x65, 0, 0, 0, 0},
8768 {0x66, 0, 0, 0, 0},
8769 {0x67, 0x72, 0x72, 1, 1},
8770 {0x68, 0, 0, 0, 0},
8771 {0x69, 0xa, 0xa, 0, 0},
8772 {0x6A, 0, 0, 0, 0},
8773 {0x6B, 0, 0, 0, 0},
8774 {0x6C, 0, 0, 0, 0},
8775 {0x6D, 0, 0, 0, 0},
8776 {0x6E, 0, 0, 0, 0},
8777 {0x6F, 0, 0, 0, 0},
8778 {0x70, 0, 0, 0, 0},
8779 {0x71, 0x2, 0x2, 0, 0},
8780 {0x72, 0, 0, 0, 0},
8781 {0x73, 0, 0, 0, 0},
8782 {0x74, 0xe, 0xe, 0, 0},
8783 {0x75, 0xe, 0xe, 0, 0},
8784 {0x76, 0xe, 0xe, 0, 0},
8785 {0x77, 0x13, 0x13, 0, 0},
8786 {0x78, 0x13, 0x13, 0, 0},
8787 {0x79, 0x1b, 0x1b, 0, 0},
8788 {0x7A, 0x1b, 0x1b, 0, 0},
8789 {0x7B, 0x55, 0x55, 0, 0},
8790 {0x7C, 0x5b, 0x5b, 0, 0},
8791 {0x7D, 0, 0, 0, 0},
8792 {0x7E, 0, 0, 0, 0},
8793 {0x7F, 0, 0, 0, 0},
8794 {0x80, 0, 0, 0, 0},
8795 {0x81, 0, 0, 0, 0},
8796 {0x82, 0, 0, 0, 0},
8797 {0x83, 0, 0, 0, 0},
8798 {0x84, 0, 0, 0, 0},
8799 {0x85, 0, 0, 0, 0},
8800 {0x86, 0, 0, 0, 0},
8801 {0x87, 0, 0, 0, 0},
8802 {0x88, 0, 0, 0, 0},
8803 {0x89, 0, 0, 0, 0},
8804 {0x8A, 0, 0, 0, 0},
8805 {0x8B, 0, 0, 0, 0},
8806 {0x8C, 0, 0, 0, 0},
8807 {0x8D, 0, 0, 0, 0},
8808 {0x8E, 0, 0, 0, 0},
8809 {0x8F, 0, 0, 0, 0},
8810 {0x90, 0, 0, 0, 0},
8811 {0x91, 0, 0, 0, 0},
8812 {0x92, 0, 0, 0, 0},
8813 {0xFFFF, 0, 0, 0, 0}
8814 };
8815
8816 static struct radio_regs regs_RX_2056_A1[] = {
8817 {0x02, 0, 0, 0, 0},
8818 {0x03, 0, 0, 0, 0},
8819 {0x04, 0, 0, 0, 0},
8820 {0x05, 0, 0, 0, 0},
8821 {0x06, 0, 0, 0, 0},
8822 {0x07, 0, 0, 0, 0},
8823 {0x08, 0, 0, 0, 0},
8824 {0x09, 0, 0, 0, 0},
8825 {0x0A, 0, 0, 0, 0},
8826 {0x0B, 0, 0, 0, 0},
8827 {0x0C, 0, 0, 0, 0},
8828 {0x0D, 0, 0, 0, 0},
8829 {0x0E, 0, 0, 0, 0},
8830 {0x0F, 0, 0, 0, 0},
8831 {0x10, 0, 0, 0, 0},
8832 {0x11, 0, 0, 0, 0},
8833 {0x12, 0, 0, 0, 0},
8834 {0x13, 0, 0, 0, 0},
8835 {0x14, 0, 0, 0, 0},
8836 {0x15, 0, 0, 0, 0},
8837 {0x16, 0, 0, 0, 0},
8838 {0x17, 0, 0, 0, 0},
8839 {0x18, 0, 0, 0, 0},
8840 {0x19, 0, 0, 0, 0},
8841 {0x1A, 0, 0, 0, 0},
8842 {0x1B, 0, 0, 0, 0},
8843 {0x1C, 0, 0, 0, 0},
8844 {0x1D, 0, 0, 0, 0},
8845 {0x1E, 0, 0, 0, 0},
8846 {0x1F, 0, 0, 0, 0},
8847 {0x20, 0x3, 0x3, 0, 0},
8848 {0x21, 0, 0, 0, 0},
8849 {0x22, 0, 0, 0, 0},
8850 {0x23, 0x90, 0x90, 0, 0},
8851 {0x24, 0x55, 0x55, 0, 0},
8852 {0x25, 0x15, 0x15, 0, 0},
8853 {0x26, 0x5, 0x5, 0, 0},
8854 {0x27, 0x15, 0x15, 0, 0},
8855 {0x28, 0x5, 0x5, 0, 0},
8856 {0x29, 0x20, 0x20, 0, 0},
8857 {0x2A, 0x11, 0x11, 0, 0},
8858 {0x2B, 0x90, 0x90, 0, 0},
8859 {0x2C, 0, 0, 0, 0},
8860 {0x2D, 0x88, 0x88, 0, 0},
8861 {0x2E, 0x32, 0x32, 0, 0},
8862 {0x2F, 0x77, 0x77, 0, 0},
8863 {0x30, 0x17, 0x17, 1, 1},
8864 {0x31, 0xff, 0xff, 1, 1},
8865 {0x32, 0x20, 0x20, 0, 0},
8866 {0x33, 0, 0, 0, 0},
8867 {0x34, 0x88, 0x88, 0, 0},
8868 {0x35, 0x32, 0x32, 0, 0},
8869 {0x36, 0x77, 0x77, 0, 0},
8870 {0x37, 0x17, 0x17, 1, 1},
8871 {0x38, 0xf0, 0xf0, 1, 1},
8872 {0x39, 0x20, 0x20, 0, 0},
8873 {0x3A, 0x8, 0x8, 0, 0},
8874 {0x3B, 0x55, 0x55, 1, 1},
8875 {0x3C, 0, 0, 0, 0},
8876 {0x3D, 0x44, 0x44, 1, 1},
8877 {0x3E, 0, 0, 0, 0},
8878 {0x3F, 0x44, 0x44, 0, 0},
8879 {0x40, 0xf, 0xf, 1, 1},
8880 {0x41, 0x6, 0x6, 0, 0},
8881 {0x42, 0x4, 0x4, 0, 0},
8882 {0x43, 0x50, 0x50, 1, 1},
8883 {0x44, 0x8, 0x8, 0, 0},
8884 {0x45, 0x55, 0x55, 1, 1},
8885 {0x46, 0, 0, 0, 0},
8886 {0x47, 0x11, 0x11, 0, 0},
8887 {0x48, 0, 0, 0, 0},
8888 {0x49, 0x44, 0x44, 0, 0},
8889 {0x4A, 0x7, 0x7, 0, 0},
8890 {0x4B, 0x6, 0x6, 0, 0},
8891 {0x4C, 0x4, 0x4, 0, 0},
8892 {0x4D, 0, 0, 0, 0},
8893 {0x4E, 0, 0, 0, 0},
8894 {0x4F, 0x26, 0x26, 1, 1},
8895 {0x50, 0x26, 0x26, 1, 1},
8896 {0x51, 0xf, 0xf, 1, 1},
8897 {0x52, 0xf, 0xf, 1, 1},
8898 {0x53, 0x44, 0x44, 0, 0},
8899 {0x54, 0, 0, 0, 0},
8900 {0x55, 0, 0, 0, 0},
8901 {0x56, 0x8, 0x8, 0, 0},
8902 {0x57, 0x8, 0x8, 0, 0},
8903 {0x58, 0x7, 0x7, 0, 0},
8904 {0x59, 0x22, 0x22, 0, 0},
8905 {0x5A, 0x22, 0x22, 0, 0},
8906 {0x5B, 0x2, 0x2, 0, 0},
8907 {0x5C, 0x2f, 0x2f, 1, 1},
8908 {0x5D, 0x7, 0x7, 0, 0},
8909 {0x5E, 0x55, 0x55, 0, 0},
8910 {0x5F, 0x23, 0x23, 0, 0},
8911 {0x60, 0x41, 0x41, 0, 0},
8912 {0x61, 0x1, 0x1, 0, 0},
8913 {0x62, 0xa, 0xa, 0, 0},
8914 {0x63, 0, 0, 0, 0},
8915 {0x64, 0, 0, 0, 0},
8916 {0x65, 0, 0, 0, 0},
8917 {0x66, 0, 0, 0, 0},
8918 {0x67, 0, 0, 0, 0},
8919 {0x68, 0, 0, 0, 0},
8920 {0x69, 0, 0, 0, 0},
8921 {0x6A, 0, 0, 0, 0},
8922 {0x6B, 0xc, 0xc, 0, 0},
8923 {0x6C, 0, 0, 0, 0},
8924 {0x6D, 0, 0, 0, 0},
8925 {0x6E, 0, 0, 0, 0},
8926 {0x6F, 0, 0, 0, 0},
8927 {0x70, 0, 0, 0, 0},
8928 {0x71, 0, 0, 0, 0},
8929 {0x72, 0x22, 0x22, 0, 0},
8930 {0x73, 0x22, 0x22, 0, 0},
8931 {0x74, 0, 0, 1, 1},
8932 {0x75, 0xa, 0xa, 0, 0},
8933 {0x76, 0x1, 0x1, 0, 0},
8934 {0x77, 0x22, 0x22, 0, 0},
8935 {0x78, 0x30, 0x30, 0, 0},
8936 {0x79, 0, 0, 0, 0},
8937 {0x7A, 0, 0, 0, 0},
8938 {0x7B, 0, 0, 0, 0},
8939 {0x7C, 0, 0, 0, 0},
8940 {0x7D, 0, 0, 0, 0},
8941 {0x7E, 0, 0, 0, 0},
8942 {0x7F, 0, 0, 0, 0},
8943 {0x80, 0, 0, 0, 0},
8944 {0x81, 0, 0, 0, 0},
8945 {0x82, 0, 0, 0, 0},
8946 {0x83, 0, 0, 0, 0},
8947 {0x84, 0, 0, 0, 0},
8948 {0x85, 0, 0, 0, 0},
8949 {0x86, 0, 0, 0, 0},
8950 {0x87, 0, 0, 0, 0},
8951 {0x88, 0, 0, 0, 0},
8952 {0x89, 0, 0, 0, 0},
8953 {0x8A, 0, 0, 0, 0},
8954 {0x8B, 0, 0, 0, 0},
8955 {0x8C, 0, 0, 0, 0},
8956 {0x8D, 0, 0, 0, 0},
8957 {0x8E, 0, 0, 0, 0},
8958 {0x8F, 0, 0, 0, 0},
8959 {0x90, 0, 0, 0, 0},
8960 {0x91, 0, 0, 0, 0},
8961 {0x92, 0, 0, 0, 0},
8962 {0x93, 0, 0, 0, 0},
8963 {0x94, 0, 0, 0, 0},
8964 {0xFFFF, 0, 0, 0, 0}
8965 };
8966
8967 static struct radio_regs regs_SYN_2056_rev5[] = {
8968 {0x02, 0, 0, 0, 0},
8969 {0x03, 0, 0, 0, 0},
8970 {0x04, 0, 0, 0, 0},
8971 {0x05, 0, 0, 0, 0},
8972 {0x06, 0, 0, 0, 0},
8973 {0x07, 0, 0, 0, 0},
8974 {0x08, 0, 0, 0, 0},
8975 {0x09, 0x1, 0x1, 0, 0},
8976 {0x0A, 0, 0, 0, 0},
8977 {0x0B, 0, 0, 0, 0},
8978 {0x0C, 0, 0, 0, 0},
8979 {0x0D, 0, 0, 0, 0},
8980 {0x0E, 0, 0, 0, 0},
8981 {0x0F, 0, 0, 0, 0},
8982 {0x10, 0, 0, 0, 0},
8983 {0x11, 0, 0, 0, 0},
8984 {0x12, 0, 0, 0, 0},
8985 {0x13, 0, 0, 0, 0},
8986 {0x14, 0, 0, 0, 0},
8987 {0x15, 0, 0, 0, 0},
8988 {0x16, 0, 0, 0, 0},
8989 {0x17, 0, 0, 0, 0},
8990 {0x18, 0, 0, 0, 0},
8991 {0x19, 0, 0, 0, 0},
8992 {0x1A, 0, 0, 0, 0},
8993 {0x1B, 0, 0, 0, 0},
8994 {0x1C, 0, 0, 0, 0},
8995 {0x1D, 0, 0, 0, 0},
8996 {0x1E, 0, 0, 0, 0},
8997 {0x1F, 0, 0, 0, 0},
8998 {0x20, 0, 0, 0, 0},
8999 {0x21, 0, 0, 0, 0},
9000 {0x22, 0x60, 0x60, 0, 0},
9001 {0x23, 0x6, 0x6, 0, 0},
9002 {0x24, 0xc, 0xc, 0, 0},
9003 {0x25, 0, 0, 0, 0},
9004 {0x26, 0, 0, 0, 0},
9005 {0x27, 0, 0, 0, 0},
9006 {0x28, 0x1, 0x1, 0, 0},
9007 {0x29, 0, 0, 0, 0},
9008 {0x2A, 0, 0, 0, 0},
9009 {0x2B, 0, 0, 0, 0},
9010 {0x2C, 0, 0, 0, 0},
9011 {0x2D, 0, 0, 0, 0},
9012 {0x2E, 0, 0, 0, 0},
9013 {0x2F, 0x1f, 0x1f, 0, 0},
9014 {0x30, 0x15, 0x15, 0, 0},
9015 {0x31, 0xf, 0xf, 0, 0},
9016 {0x32, 0, 0, 0, 0},
9017 {0x33, 0, 0, 0, 0},
9018 {0x34, 0, 0, 0, 0},
9019 {0x35, 0, 0, 0, 0},
9020 {0x36, 0, 0, 0, 0},
9021 {0x37, 0, 0, 0, 0},
9022 {0x38, 0, 0, 0, 0},
9023 {0x39, 0, 0, 0, 0},
9024 {0x3A, 0, 0, 0, 0},
9025 {0x3B, 0, 0, 0, 0},
9026 {0x3C, 0x13, 0x13, 0, 0},
9027 {0x3D, 0xf, 0xf, 0, 0},
9028 {0x3E, 0x18, 0x18, 0, 0},
9029 {0x3F, 0, 0, 0, 0},
9030 {0x40, 0, 0, 0, 0},
9031 {0x41, 0x20, 0x20, 0, 0},
9032 {0x42, 0x20, 0x20, 0, 0},
9033 {0x43, 0, 0, 0, 0},
9034 {0x44, 0x77, 0x77, 0, 0},
9035 {0x45, 0x7, 0x7, 0, 0},
9036 {0x46, 0x1, 0x1, 0, 0},
9037 {0x47, 0x4, 0x4, 0, 0},
9038 {0x48, 0xf, 0xf, 0, 0},
9039 {0x49, 0x30, 0x30, 0, 0},
9040 {0x4A, 0x32, 0x32, 0, 0},
9041 {0x4B, 0xd, 0xd, 0, 0},
9042 {0x4C, 0xd, 0xd, 0, 0},
9043 {0x4D, 0x4, 0x4, 0, 0},
9044 {0x4E, 0x6, 0x6, 0, 0},
9045 {0x4F, 0x1, 0x1, 0, 0},
9046 {0x50, 0x1c, 0x1c, 0, 0},
9047 {0x51, 0x2, 0x2, 0, 0},
9048 {0x52, 0x2, 0x2, 0, 0},
9049 {0x53, 0xf7, 0xf7, 1, 1},
9050 {0x54, 0xb4, 0xb4, 0, 0},
9051 {0x55, 0xd2, 0xd2, 0, 0},
9052 {0x56, 0, 0, 0, 0},
9053 {0x57, 0, 0, 0, 0},
9054 {0x58, 0x4, 0x4, 0, 0},
9055 {0x59, 0x96, 0x96, 0, 0},
9056 {0x5A, 0x3e, 0x3e, 0, 0},
9057 {0x5B, 0x3e, 0x3e, 0, 0},
9058 {0x5C, 0x13, 0x13, 0, 0},
9059 {0x5D, 0x2, 0x2, 0, 0},
9060 {0x5E, 0, 0, 0, 0},
9061 {0x5F, 0x7, 0x7, 0, 0},
9062 {0x60, 0x7, 0x7, 1, 1},
9063 {0x61, 0x8, 0x8, 0, 0},
9064 {0x62, 0x3, 0x3, 0, 0},
9065 {0x63, 0, 0, 0, 0},
9066 {0x64, 0, 0, 0, 0},
9067 {0x65, 0, 0, 0, 0},
9068 {0x66, 0, 0, 0, 0},
9069 {0x67, 0, 0, 0, 0},
9070 {0x68, 0x40, 0x40, 0, 0},
9071 {0x69, 0, 0, 0, 0},
9072 {0x6A, 0, 0, 0, 0},
9073 {0x6B, 0, 0, 0, 0},
9074 {0x6C, 0, 0, 0, 0},
9075 {0x6D, 0x1, 0x1, 0, 0},
9076 {0x6E, 0, 0, 0, 0},
9077 {0x6F, 0, 0, 0, 0},
9078 {0x70, 0x60, 0x60, 0, 0},
9079 {0x71, 0x66, 0x66, 0, 0},
9080 {0x72, 0xc, 0xc, 0, 0},
9081 {0x73, 0x66, 0x66, 0, 0},
9082 {0x74, 0x8f, 0x8f, 1, 1},
9083 {0x75, 0, 0, 0, 0},
9084 {0x76, 0xcc, 0xcc, 0, 0},
9085 {0x77, 0x1, 0x1, 0, 0},
9086 {0x78, 0x66, 0x66, 0, 0},
9087 {0x79, 0x66, 0x66, 0, 0},
9088 {0x7A, 0, 0, 0, 0},
9089 {0x7B, 0, 0, 0, 0},
9090 {0x7C, 0, 0, 0, 0},
9091 {0x7D, 0, 0, 0, 0},
9092 {0x7E, 0, 0, 0, 0},
9093 {0x7F, 0, 0, 0, 0},
9094 {0x80, 0, 0, 0, 0},
9095 {0x81, 0, 0, 0, 0},
9096 {0x82, 0, 0, 0, 0},
9097 {0x83, 0, 0, 0, 0},
9098 {0x84, 0, 0, 0, 0},
9099 {0x85, 0xff, 0xff, 0, 0},
9100 {0x86, 0, 0, 0, 0},
9101 {0x87, 0, 0, 0, 0},
9102 {0x88, 0, 0, 0, 0},
9103 {0x89, 0, 0, 0, 0},
9104 {0x8A, 0, 0, 0, 0},
9105 {0x8B, 0, 0, 0, 0},
9106 {0x8C, 0, 0, 0, 0},
9107 {0x8D, 0, 0, 0, 0},
9108 {0x8E, 0, 0, 0, 0},
9109 {0x8F, 0, 0, 0, 0},
9110 {0x90, 0, 0, 0, 0},
9111 {0x91, 0, 0, 0, 0},
9112 {0x92, 0, 0, 0, 0},
9113 {0x93, 0, 0, 0, 0},
9114 {0x94, 0, 0, 0, 0},
9115 {0x95, 0, 0, 0, 0},
9116 {0x96, 0, 0, 0, 0},
9117 {0x97, 0, 0, 0, 0},
9118 {0x98, 0, 0, 0, 0},
9119 {0x99, 0, 0, 0, 0},
9120 {0x9A, 0, 0, 0, 0},
9121 {0x9B, 0, 0, 0, 0},
9122 {0x9C, 0, 0, 0, 0},
9123 {0x9D, 0, 0, 0, 0},
9124 {0x9E, 0, 0, 0, 0},
9125 {0x9F, 0x6, 0x6, 0, 0},
9126 {0xA0, 0x66, 0x66, 0, 0},
9127 {0xA1, 0x66, 0x66, 0, 0},
9128 {0xA2, 0x66, 0x66, 0, 0},
9129 {0xA3, 0x66, 0x66, 0, 0},
9130 {0xA4, 0x66, 0x66, 0, 0},
9131 {0xA5, 0x66, 0x66, 0, 0},
9132 {0xA6, 0x66, 0x66, 0, 0},
9133 {0xA7, 0x66, 0x66, 0, 0},
9134 {0xA8, 0x66, 0x66, 0, 0},
9135 {0xA9, 0x66, 0x66, 0, 0},
9136 {0xAA, 0x66, 0x66, 0, 0},
9137 {0xAB, 0x66, 0x66, 0, 0},
9138 {0xAC, 0x66, 0x66, 0, 0},
9139 {0xAD, 0x66, 0x66, 0, 0},
9140 {0xAE, 0x66, 0x66, 0, 0},
9141 {0xAF, 0x66, 0x66, 0, 0},
9142 {0xB0, 0x66, 0x66, 0, 0},
9143 {0xB1, 0x66, 0x66, 0, 0},
9144 {0xB2, 0x66, 0x66, 0, 0},
9145 {0xB3, 0xa, 0xa, 0, 0},
9146 {0xB4, 0, 0, 0, 0},
9147 {0xB5, 0, 0, 0, 0},
9148 {0xB6, 0, 0, 0, 0},
9149 {0xFFFF, 0, 0, 0, 0}
9150 };
9151
9152 static struct radio_regs regs_TX_2056_rev5[] = {
9153 {0x02, 0, 0, 0, 0},
9154 {0x03, 0, 0, 0, 0},
9155 {0x04, 0, 0, 0, 0},
9156 {0x05, 0, 0, 0, 0},
9157 {0x06, 0, 0, 0, 0},
9158 {0x07, 0, 0, 0, 0},
9159 {0x08, 0, 0, 0, 0},
9160 {0x09, 0, 0, 0, 0},
9161 {0x0A, 0, 0, 0, 0},
9162 {0x0B, 0, 0, 0, 0},
9163 {0x0C, 0, 0, 0, 0},
9164 {0x0D, 0, 0, 0, 0},
9165 {0x0E, 0, 0, 0, 0},
9166 {0x0F, 0, 0, 0, 0},
9167 {0x10, 0, 0, 0, 0},
9168 {0x11, 0, 0, 0, 0},
9169 {0x12, 0, 0, 0, 0},
9170 {0x13, 0, 0, 0, 0},
9171 {0x14, 0, 0, 0, 0},
9172 {0x15, 0, 0, 0, 0},
9173 {0x16, 0, 0, 0, 0},
9174 {0x17, 0, 0, 0, 0},
9175 {0x18, 0, 0, 0, 0},
9176 {0x19, 0, 0, 0, 0},
9177 {0x1A, 0, 0, 0, 0},
9178 {0x1B, 0, 0, 0, 0},
9179 {0x1C, 0, 0, 0, 0},
9180 {0x1D, 0, 0, 0, 0},
9181 {0x1E, 0, 0, 0, 0},
9182 {0x1F, 0, 0, 0, 0},
9183 {0x20, 0, 0, 0, 0},
9184 {0x21, 0x88, 0x88, 0, 0},
9185 {0x22, 0x88, 0x88, 0, 0},
9186 {0x23, 0x88, 0x88, 0, 0},
9187 {0x24, 0x88, 0x88, 0, 0},
9188 {0x25, 0xc, 0xc, 0, 0},
9189 {0x26, 0, 0, 0, 0},
9190 {0x27, 0x3, 0x3, 0, 0},
9191 {0x28, 0, 0, 0, 0},
9192 {0x29, 0x3, 0x3, 0, 0},
9193 {0x2A, 0x37, 0x37, 0, 0},
9194 {0x2B, 0x3, 0x3, 0, 0},
9195 {0x2C, 0, 0, 0, 0},
9196 {0x2D, 0, 0, 0, 0},
9197 {0x2E, 0x1, 0x1, 0, 0},
9198 {0x2F, 0x1, 0x1, 0, 0},
9199 {0x30, 0, 0, 0, 0},
9200 {0x31, 0, 0, 0, 0},
9201 {0x32, 0, 0, 0, 0},
9202 {0x33, 0x11, 0x11, 0, 0},
9203 {0x34, 0x11, 0x11, 0, 0},
9204 {0x35, 0, 0, 0, 0},
9205 {0x36, 0, 0, 0, 0},
9206 {0x37, 0x3, 0x3, 0, 0},
9207 {0x38, 0xf, 0xf, 0, 0},
9208 {0x39, 0, 0, 0, 0},
9209 {0x3A, 0x2d, 0x2d, 0, 0},
9210 {0x3B, 0, 0, 0, 0},
9211 {0x3C, 0x6e, 0x6e, 0, 0},
9212 {0x3D, 0xf0, 0xf0, 1, 1},
9213 {0x3E, 0, 0, 0, 0},
9214 {0x3F, 0, 0, 0, 0},
9215 {0x40, 0, 0, 0, 0},
9216 {0x41, 0x3, 0x3, 0, 0},
9217 {0x42, 0x3, 0x3, 0, 0},
9218 {0x43, 0, 0, 0, 0},
9219 {0x44, 0x1e, 0x1e, 0, 0},
9220 {0x45, 0, 0, 0, 0},
9221 {0x46, 0x6e, 0x6e, 0, 0},
9222 {0x47, 0xf0, 0xf0, 1, 1},
9223 {0x48, 0, 0, 0, 0},
9224 {0x49, 0x2, 0x2, 0, 0},
9225 {0x4A, 0xff, 0xff, 1, 1},
9226 {0x4B, 0xc, 0xc, 0, 0},
9227 {0x4C, 0, 0, 0, 0},
9228 {0x4D, 0x38, 0x38, 0, 0},
9229 {0x4E, 0x70, 0x70, 1, 1},
9230 {0x4F, 0x2, 0x2, 0, 0},
9231 {0x50, 0x88, 0x88, 0, 0},
9232 {0x51, 0xc, 0xc, 0, 0},
9233 {0x52, 0, 0, 0, 0},
9234 {0x53, 0x8, 0x8, 0, 0},
9235 {0x54, 0x70, 0x70, 1, 1},
9236 {0x55, 0x2, 0x2, 0, 0},
9237 {0x56, 0xff, 0xff, 1, 1},
9238 {0x57, 0, 0, 0, 0},
9239 {0x58, 0x83, 0x83, 0, 0},
9240 {0x59, 0x77, 0x77, 1, 1},
9241 {0x5A, 0, 0, 0, 0},
9242 {0x5B, 0x2, 0x2, 0, 0},
9243 {0x5C, 0x88, 0x88, 0, 0},
9244 {0x5D, 0, 0, 0, 0},
9245 {0x5E, 0x8, 0x8, 0, 0},
9246 {0x5F, 0x77, 0x77, 1, 1},
9247 {0x60, 0x1, 0x1, 0, 0},
9248 {0x61, 0, 0, 0, 0},
9249 {0x62, 0x7, 0x7, 0, 0},
9250 {0x63, 0, 0, 0, 0},
9251 {0x64, 0x7, 0x7, 0, 0},
9252 {0x65, 0, 0, 0, 0},
9253 {0x66, 0, 0, 0, 0},
9254 {0x67, 0, 0, 1, 1},
9255 {0x68, 0, 0, 0, 0},
9256 {0x69, 0xa, 0xa, 0, 0},
9257 {0x6A, 0, 0, 0, 0},
9258 {0x6B, 0, 0, 0, 0},
9259 {0x6C, 0, 0, 0, 0},
9260 {0x6D, 0, 0, 0, 0},
9261 {0x6E, 0, 0, 0, 0},
9262 {0x6F, 0, 0, 0, 0},
9263 {0x70, 0, 0, 0, 0},
9264 {0x71, 0x2, 0x2, 0, 0},
9265 {0x72, 0, 0, 0, 0},
9266 {0x73, 0, 0, 0, 0},
9267 {0x74, 0xe, 0xe, 0, 0},
9268 {0x75, 0xe, 0xe, 0, 0},
9269 {0x76, 0xe, 0xe, 0, 0},
9270 {0x77, 0x13, 0x13, 0, 0},
9271 {0x78, 0x13, 0x13, 0, 0},
9272 {0x79, 0x1b, 0x1b, 0, 0},
9273 {0x7A, 0x1b, 0x1b, 0, 0},
9274 {0x7B, 0x55, 0x55, 0, 0},
9275 {0x7C, 0x5b, 0x5b, 0, 0},
9276 {0x7D, 0, 0, 0, 0},
9277 {0x7E, 0, 0, 0, 0},
9278 {0x7F, 0, 0, 0, 0},
9279 {0x80, 0, 0, 0, 0},
9280 {0x81, 0, 0, 0, 0},
9281 {0x82, 0, 0, 0, 0},
9282 {0x83, 0, 0, 0, 0},
9283 {0x84, 0, 0, 0, 0},
9284 {0x85, 0, 0, 0, 0},
9285 {0x86, 0, 0, 0, 0},
9286 {0x87, 0, 0, 0, 0},
9287 {0x88, 0, 0, 0, 0},
9288 {0x89, 0, 0, 0, 0},
9289 {0x8A, 0, 0, 0, 0},
9290 {0x8B, 0, 0, 0, 0},
9291 {0x8C, 0, 0, 0, 0},
9292 {0x8D, 0, 0, 0, 0},
9293 {0x8E, 0, 0, 0, 0},
9294 {0x8F, 0, 0, 0, 0},
9295 {0x90, 0, 0, 0, 0},
9296 {0x91, 0, 0, 0, 0},
9297 {0x92, 0, 0, 0, 0},
9298 {0x93, 0x70, 0x70, 0, 0},
9299 {0x94, 0x70, 0x70, 0, 0},
9300 {0x95, 0x71, 0x71, 1, 1},
9301 {0x96, 0x71, 0x71, 1, 1},
9302 {0x97, 0x72, 0x72, 1, 1},
9303 {0x98, 0x73, 0x73, 1, 1},
9304 {0x99, 0x74, 0x74, 1, 1},
9305 {0x9A, 0x75, 0x75, 1, 1},
9306 {0xFFFF, 0, 0, 0, 0}
9307 };
9308
9309 static struct radio_regs regs_RX_2056_rev5[] = {
9310 {0x02, 0, 0, 0, 0},
9311 {0x03, 0, 0, 0, 0},
9312 {0x04, 0, 0, 0, 0},
9313 {0x05, 0, 0, 0, 0},
9314 {0x06, 0, 0, 0, 0},
9315 {0x07, 0, 0, 0, 0},
9316 {0x08, 0, 0, 0, 0},
9317 {0x09, 0, 0, 0, 0},
9318 {0x0A, 0, 0, 0, 0},
9319 {0x0B, 0, 0, 0, 0},
9320 {0x0C, 0, 0, 0, 0},
9321 {0x0D, 0, 0, 0, 0},
9322 {0x0E, 0, 0, 0, 0},
9323 {0x0F, 0, 0, 0, 0},
9324 {0x10, 0, 0, 0, 0},
9325 {0x11, 0, 0, 0, 0},
9326 {0x12, 0, 0, 0, 0},
9327 {0x13, 0, 0, 0, 0},
9328 {0x14, 0, 0, 0, 0},
9329 {0x15, 0, 0, 0, 0},
9330 {0x16, 0, 0, 0, 0},
9331 {0x17, 0, 0, 0, 0},
9332 {0x18, 0, 0, 0, 0},
9333 {0x19, 0, 0, 0, 0},
9334 {0x1A, 0, 0, 0, 0},
9335 {0x1B, 0, 0, 0, 0},
9336 {0x1C, 0, 0, 0, 0},
9337 {0x1D, 0, 0, 0, 0},
9338 {0x1E, 0, 0, 0, 0},
9339 {0x1F, 0, 0, 0, 0},
9340 {0x20, 0x3, 0x3, 0, 0},
9341 {0x21, 0, 0, 0, 0},
9342 {0x22, 0, 0, 0, 0},
9343 {0x23, 0x90, 0x90, 0, 0},
9344 {0x24, 0x55, 0x55, 0, 0},
9345 {0x25, 0x15, 0x15, 0, 0},
9346 {0x26, 0x5, 0x5, 0, 0},
9347 {0x27, 0x15, 0x15, 0, 0},
9348 {0x28, 0x5, 0x5, 0, 0},
9349 {0x29, 0x20, 0x20, 0, 0},
9350 {0x2A, 0x11, 0x11, 0, 0},
9351 {0x2B, 0x90, 0x90, 0, 0},
9352 {0x2C, 0, 0, 0, 0},
9353 {0x2D, 0x88, 0x88, 0, 0},
9354 {0x2E, 0x32, 0x32, 0, 0},
9355 {0x2F, 0x77, 0x77, 0, 0},
9356 {0x30, 0x17, 0x17, 1, 1},
9357 {0x31, 0xff, 0xff, 1, 1},
9358 {0x32, 0x20, 0x20, 0, 0},
9359 {0x33, 0, 0, 0, 0},
9360 {0x34, 0x88, 0x88, 0, 0},
9361 {0x35, 0x32, 0x32, 0, 0},
9362 {0x36, 0x77, 0x77, 0, 0},
9363 {0x37, 0x17, 0x17, 1, 1},
9364 {0x38, 0xf0, 0xf0, 1, 1},
9365 {0x39, 0x20, 0x20, 0, 0},
9366 {0x3A, 0x8, 0x8, 0, 0},
9367 {0x3B, 0x55, 0x55, 1, 1},
9368 {0x3C, 0, 0, 0, 0},
9369 {0x3D, 0x88, 0x88, 1, 1},
9370 {0x3E, 0, 0, 0, 0},
9371 {0x3F, 0, 0, 1, 1},
9372 {0x40, 0x7, 0x7, 1, 1},
9373 {0x41, 0x6, 0x6, 0, 0},
9374 {0x42, 0x4, 0x4, 0, 0},
9375 {0x43, 0, 0, 0, 0},
9376 {0x44, 0x8, 0x8, 0, 0},
9377 {0x45, 0x55, 0x55, 1, 1},
9378 {0x46, 0, 0, 0, 0},
9379 {0x47, 0x11, 0x11, 0, 0},
9380 {0x48, 0, 0, 0, 0},
9381 {0x49, 0, 0, 1, 1},
9382 {0x4A, 0x7, 0x7, 0, 0},
9383 {0x4B, 0x6, 0x6, 0, 0},
9384 {0x4C, 0x4, 0x4, 0, 0},
9385 {0x4D, 0, 0, 0, 0},
9386 {0x4E, 0, 0, 0, 0},
9387 {0x4F, 0x26, 0x26, 1, 1},
9388 {0x50, 0x26, 0x26, 1, 1},
9389 {0x51, 0xf, 0xf, 1, 1},
9390 {0x52, 0xf, 0xf, 1, 1},
9391 {0x53, 0x44, 0x44, 0, 0},
9392 {0x54, 0, 0, 0, 0},
9393 {0x55, 0, 0, 0, 0},
9394 {0x56, 0x8, 0x8, 0, 0},
9395 {0x57, 0x8, 0x8, 0, 0},
9396 {0x58, 0x7, 0x7, 0, 0},
9397 {0x59, 0x22, 0x22, 0, 0},
9398 {0x5A, 0x22, 0x22, 0, 0},
9399 {0x5B, 0x2, 0x2, 0, 0},
9400 {0x5C, 0x4, 0x4, 1, 1},
9401 {0x5D, 0x7, 0x7, 0, 0},
9402 {0x5E, 0x55, 0x55, 0, 0},
9403 {0x5F, 0x23, 0x23, 0, 0},
9404 {0x60, 0x41, 0x41, 0, 0},
9405 {0x61, 0x1, 0x1, 0, 0},
9406 {0x62, 0xa, 0xa, 0, 0},
9407 {0x63, 0, 0, 0, 0},
9408 {0x64, 0, 0, 0, 0},
9409 {0x65, 0, 0, 0, 0},
9410 {0x66, 0, 0, 0, 0},
9411 {0x67, 0, 0, 0, 0},
9412 {0x68, 0, 0, 0, 0},
9413 {0x69, 0, 0, 0, 0},
9414 {0x6A, 0, 0, 0, 0},
9415 {0x6B, 0xc, 0xc, 0, 0},
9416 {0x6C, 0, 0, 0, 0},
9417 {0x6D, 0, 0, 0, 0},
9418 {0x6E, 0, 0, 0, 0},
9419 {0x6F, 0, 0, 0, 0},
9420 {0x70, 0, 0, 0, 0},
9421 {0x71, 0, 0, 0, 0},
9422 {0x72, 0x22, 0x22, 0, 0},
9423 {0x73, 0x22, 0x22, 0, 0},
9424 {0x74, 0, 0, 1, 1},
9425 {0x75, 0xa, 0xa, 0, 0},
9426 {0x76, 0x1, 0x1, 0, 0},
9427 {0x77, 0x22, 0x22, 0, 0},
9428 {0x78, 0x30, 0x30, 0, 0},
9429 {0x79, 0, 0, 0, 0},
9430 {0x7A, 0, 0, 0, 0},
9431 {0x7B, 0, 0, 0, 0},
9432 {0x7C, 0, 0, 0, 0},
9433 {0x7D, 0, 0, 0, 0},
9434 {0x7E, 0, 0, 0, 0},
9435 {0x7F, 0, 0, 0, 0},
9436 {0x80, 0, 0, 0, 0},
9437 {0x81, 0, 0, 0, 0},
9438 {0x82, 0, 0, 0, 0},
9439 {0x83, 0, 0, 0, 0},
9440 {0x84, 0, 0, 0, 0},
9441 {0x85, 0, 0, 0, 0},
9442 {0x86, 0, 0, 0, 0},
9443 {0x87, 0, 0, 0, 0},
9444 {0x88, 0, 0, 0, 0},
9445 {0x89, 0, 0, 0, 0},
9446 {0x8A, 0, 0, 0, 0},
9447 {0x8B, 0, 0, 0, 0},
9448 {0x8C, 0, 0, 0, 0},
9449 {0x8D, 0, 0, 0, 0},
9450 {0x8E, 0, 0, 0, 0},
9451 {0x8F, 0, 0, 0, 0},
9452 {0x90, 0, 0, 0, 0},
9453 {0x91, 0, 0, 0, 0},
9454 {0x92, 0, 0, 0, 0},
9455 {0x93, 0, 0, 0, 0},
9456 {0x94, 0, 0, 0, 0},
9457 {0xFFFF, 0, 0, 0, 0}
9458 };
9459
9460 static struct radio_regs regs_SYN_2056_rev6[] = {
9461 {0x02, 0, 0, 0, 0},
9462 {0x03, 0, 0, 0, 0},
9463 {0x04, 0, 0, 0, 0},
9464 {0x05, 0, 0, 0, 0},
9465 {0x06, 0, 0, 0, 0},
9466 {0x07, 0, 0, 0, 0},
9467 {0x08, 0, 0, 0, 0},
9468 {0x09, 0x1, 0x1, 0, 0},
9469 {0x0A, 0, 0, 0, 0},
9470 {0x0B, 0, 0, 0, 0},
9471 {0x0C, 0, 0, 0, 0},
9472 {0x0D, 0, 0, 0, 0},
9473 {0x0E, 0, 0, 0, 0},
9474 {0x0F, 0, 0, 0, 0},
9475 {0x10, 0, 0, 0, 0},
9476 {0x11, 0, 0, 0, 0},
9477 {0x12, 0, 0, 0, 0},
9478 {0x13, 0, 0, 0, 0},
9479 {0x14, 0, 0, 0, 0},
9480 {0x15, 0, 0, 0, 0},
9481 {0x16, 0, 0, 0, 0},
9482 {0x17, 0, 0, 0, 0},
9483 {0x18, 0, 0, 0, 0},
9484 {0x19, 0, 0, 0, 0},
9485 {0x1A, 0, 0, 0, 0},
9486 {0x1B, 0, 0, 0, 0},
9487 {0x1C, 0, 0, 0, 0},
9488 {0x1D, 0, 0, 0, 0},
9489 {0x1E, 0, 0, 0, 0},
9490 {0x1F, 0, 0, 0, 0},
9491 {0x20, 0, 0, 0, 0},
9492 {0x21, 0, 0, 0, 0},
9493 {0x22, 0x60, 0x60, 0, 0},
9494 {0x23, 0x6, 0x6, 0, 0},
9495 {0x24, 0xc, 0xc, 0, 0},
9496 {0x25, 0, 0, 0, 0},
9497 {0x26, 0, 0, 0, 0},
9498 {0x27, 0, 0, 0, 0},
9499 {0x28, 0x1, 0x1, 0, 0},
9500 {0x29, 0, 0, 0, 0},
9501 {0x2A, 0, 0, 0, 0},
9502 {0x2B, 0, 0, 0, 0},
9503 {0x2C, 0, 0, 0, 0},
9504 {0x2D, 0, 0, 0, 0},
9505 {0x2E, 0, 0, 0, 0},
9506 {0x2F, 0x1f, 0x1f, 0, 0},
9507 {0x30, 0x15, 0x15, 0, 0},
9508 {0x31, 0xf, 0xf, 0, 0},
9509 {0x32, 0, 0, 0, 0},
9510 {0x33, 0, 0, 0, 0},
9511 {0x34, 0, 0, 0, 0},
9512 {0x35, 0, 0, 0, 0},
9513 {0x36, 0, 0, 0, 0},
9514 {0x37, 0, 0, 0, 0},
9515 {0x38, 0, 0, 0, 0},
9516 {0x39, 0, 0, 0, 0},
9517 {0x3A, 0, 0, 0, 0},
9518 {0x3B, 0, 0, 0, 0},
9519 {0x3C, 0x13, 0x13, 0, 0},
9520 {0x3D, 0xf, 0xf, 0, 0},
9521 {0x3E, 0x18, 0x18, 0, 0},
9522 {0x3F, 0, 0, 0, 0},
9523 {0x40, 0, 0, 0, 0},
9524 {0x41, 0x20, 0x20, 0, 0},
9525 {0x42, 0x20, 0x20, 0, 0},
9526 {0x43, 0, 0, 0, 0},
9527 {0x44, 0x77, 0x77, 0, 0},
9528 {0x45, 0x7, 0x7, 0, 0},
9529 {0x46, 0x1, 0x1, 0, 0},
9530 {0x47, 0x4, 0x4, 0, 0},
9531 {0x48, 0xf, 0xf, 0, 0},
9532 {0x49, 0x30, 0x30, 0, 0},
9533 {0x4A, 0x32, 0x32, 0, 0},
9534 {0x4B, 0xd, 0xd, 0, 0},
9535 {0x4C, 0xd, 0xd, 0, 0},
9536 {0x4D, 0x4, 0x4, 0, 0},
9537 {0x4E, 0x6, 0x6, 0, 0},
9538 {0x4F, 0x1, 0x1, 0, 0},
9539 {0x50, 0x1c, 0x1c, 0, 0},
9540 {0x51, 0x2, 0x2, 0, 0},
9541 {0x52, 0x2, 0x2, 0, 0},
9542 {0x53, 0xf7, 0xf7, 1, 1},
9543 {0x54, 0xb4, 0xb4, 0, 0},
9544 {0x55, 0xd2, 0xd2, 0, 0},
9545 {0x56, 0, 0, 0, 0},
9546 {0x57, 0, 0, 0, 0},
9547 {0x58, 0x4, 0x4, 0, 0},
9548 {0x59, 0x96, 0x96, 0, 0},
9549 {0x5A, 0x3e, 0x3e, 0, 0},
9550 {0x5B, 0x3e, 0x3e, 0, 0},
9551 {0x5C, 0x13, 0x13, 0, 0},
9552 {0x5D, 0x2, 0x2, 0, 0},
9553 {0x5E, 0, 0, 0, 0},
9554 {0x5F, 0x7, 0x7, 0, 0},
9555 {0x60, 0x7, 0x7, 1, 1},
9556 {0x61, 0x8, 0x8, 0, 0},
9557 {0x62, 0x3, 0x3, 0, 0},
9558 {0x63, 0, 0, 0, 0},
9559 {0x64, 0, 0, 0, 0},
9560 {0x65, 0, 0, 0, 0},
9561 {0x66, 0, 0, 0, 0},
9562 {0x67, 0, 0, 0, 0},
9563 {0x68, 0x40, 0x40, 0, 0},
9564 {0x69, 0, 0, 0, 0},
9565 {0x6A, 0, 0, 0, 0},
9566 {0x6B, 0, 0, 0, 0},
9567 {0x6C, 0, 0, 0, 0},
9568 {0x6D, 0x1, 0x1, 0, 0},
9569 {0x6E, 0, 0, 0, 0},
9570 {0x6F, 0, 0, 0, 0},
9571 {0x70, 0x60, 0x60, 0, 0},
9572 {0x71, 0x66, 0x66, 0, 0},
9573 {0x72, 0xc, 0xc, 0, 0},
9574 {0x73, 0x66, 0x66, 0, 0},
9575 {0x74, 0x8f, 0x8f, 1, 1},
9576 {0x75, 0, 0, 0, 0},
9577 {0x76, 0xcc, 0xcc, 0, 0},
9578 {0x77, 0x1, 0x1, 0, 0},
9579 {0x78, 0x66, 0x66, 0, 0},
9580 {0x79, 0x66, 0x66, 0, 0},
9581 {0x7A, 0, 0, 0, 0},
9582 {0x7B, 0, 0, 0, 0},
9583 {0x7C, 0, 0, 0, 0},
9584 {0x7D, 0, 0, 0, 0},
9585 {0x7E, 0, 0, 0, 0},
9586 {0x7F, 0, 0, 0, 0},
9587 {0x80, 0, 0, 0, 0},
9588 {0x81, 0, 0, 0, 0},
9589 {0x82, 0, 0, 0, 0},
9590 {0x83, 0, 0, 0, 0},
9591 {0x84, 0, 0, 0, 0},
9592 {0x85, 0xff, 0xff, 0, 0},
9593 {0x86, 0, 0, 0, 0},
9594 {0x87, 0, 0, 0, 0},
9595 {0x88, 0, 0, 0, 0},
9596 {0x89, 0, 0, 0, 0},
9597 {0x8A, 0, 0, 0, 0},
9598 {0x8B, 0, 0, 0, 0},
9599 {0x8C, 0, 0, 0, 0},
9600 {0x8D, 0, 0, 0, 0},
9601 {0x8E, 0, 0, 0, 0},
9602 {0x8F, 0, 0, 0, 0},
9603 {0x90, 0, 0, 0, 0},
9604 {0x91, 0, 0, 0, 0},
9605 {0x92, 0, 0, 0, 0},
9606 {0x93, 0, 0, 0, 0},
9607 {0x94, 0, 0, 0, 0},
9608 {0x95, 0, 0, 0, 0},
9609 {0x96, 0, 0, 0, 0},
9610 {0x97, 0, 0, 0, 0},
9611 {0x98, 0, 0, 0, 0},
9612 {0x99, 0, 0, 0, 0},
9613 {0x9A, 0, 0, 0, 0},
9614 {0x9B, 0, 0, 0, 0},
9615 {0x9C, 0, 0, 0, 0},
9616 {0x9D, 0, 0, 0, 0},
9617 {0x9E, 0, 0, 0, 0},
9618 {0x9F, 0x6, 0x6, 0, 0},
9619 {0xA0, 0x66, 0x66, 0, 0},
9620 {0xA1, 0x66, 0x66, 0, 0},
9621 {0xA2, 0x66, 0x66, 0, 0},
9622 {0xA3, 0x66, 0x66, 0, 0},
9623 {0xA4, 0x66, 0x66, 0, 0},
9624 {0xA5, 0x66, 0x66, 0, 0},
9625 {0xA6, 0x66, 0x66, 0, 0},
9626 {0xA7, 0x66, 0x66, 0, 0},
9627 {0xA8, 0x66, 0x66, 0, 0},
9628 {0xA9, 0x66, 0x66, 0, 0},
9629 {0xAA, 0x66, 0x66, 0, 0},
9630 {0xAB, 0x66, 0x66, 0, 0},
9631 {0xAC, 0x66, 0x66, 0, 0},
9632 {0xAD, 0x66, 0x66, 0, 0},
9633 {0xAE, 0x66, 0x66, 0, 0},
9634 {0xAF, 0x66, 0x66, 0, 0},
9635 {0xB0, 0x66, 0x66, 0, 0},
9636 {0xB1, 0x66, 0x66, 0, 0},
9637 {0xB2, 0x66, 0x66, 0, 0},
9638 {0xB3, 0xa, 0xa, 0, 0},
9639 {0xB4, 0, 0, 0, 0},
9640 {0xB5, 0, 0, 0, 0},
9641 {0xB6, 0, 0, 0, 0},
9642 {0xFFFF, 0, 0, 0, 0}
9643 };
9644
9645 static struct radio_regs regs_TX_2056_rev6[] = {
9646 {0x02, 0, 0, 0, 0},
9647 {0x03, 0, 0, 0, 0},
9648 {0x04, 0, 0, 0, 0},
9649 {0x05, 0, 0, 0, 0},
9650 {0x06, 0, 0, 0, 0},
9651 {0x07, 0, 0, 0, 0},
9652 {0x08, 0, 0, 0, 0},
9653 {0x09, 0, 0, 0, 0},
9654 {0x0A, 0, 0, 0, 0},
9655 {0x0B, 0, 0, 0, 0},
9656 {0x0C, 0, 0, 0, 0},
9657 {0x0D, 0, 0, 0, 0},
9658 {0x0E, 0, 0, 0, 0},
9659 {0x0F, 0, 0, 0, 0},
9660 {0x10, 0, 0, 0, 0},
9661 {0x11, 0, 0, 0, 0},
9662 {0x12, 0, 0, 0, 0},
9663 {0x13, 0, 0, 0, 0},
9664 {0x14, 0, 0, 0, 0},
9665 {0x15, 0, 0, 0, 0},
9666 {0x16, 0, 0, 0, 0},
9667 {0x17, 0, 0, 0, 0},
9668 {0x18, 0, 0, 0, 0},
9669 {0x19, 0, 0, 0, 0},
9670 {0x1A, 0, 0, 0, 0},
9671 {0x1B, 0, 0, 0, 0},
9672 {0x1C, 0, 0, 0, 0},
9673 {0x1D, 0, 0, 0, 0},
9674 {0x1E, 0, 0, 0, 0},
9675 {0x1F, 0, 0, 0, 0},
9676 {0x20, 0, 0, 0, 0},
9677 {0x21, 0x88, 0x88, 0, 0},
9678 {0x22, 0x88, 0x88, 0, 0},
9679 {0x23, 0x88, 0x88, 0, 0},
9680 {0x24, 0x88, 0x88, 0, 0},
9681 {0x25, 0xc, 0xc, 0, 0},
9682 {0x26, 0, 0, 0, 0},
9683 {0x27, 0x3, 0x3, 0, 0},
9684 {0x28, 0, 0, 0, 0},
9685 {0x29, 0x3, 0x3, 0, 0},
9686 {0x2A, 0x37, 0x37, 0, 0},
9687 {0x2B, 0x3, 0x3, 0, 0},
9688 {0x2C, 0, 0, 0, 0},
9689 {0x2D, 0, 0, 0, 0},
9690 {0x2E, 0x1, 0x1, 0, 0},
9691 {0x2F, 0x1, 0x1, 0, 0},
9692 {0x30, 0, 0, 0, 0},
9693 {0x31, 0, 0, 0, 0},
9694 {0x32, 0, 0, 0, 0},
9695 {0x33, 0x11, 0x11, 0, 0},
9696 {0x34, 0xee, 0xee, 1, 1},
9697 {0x35, 0, 0, 0, 0},
9698 {0x36, 0, 0, 0, 0},
9699 {0x37, 0x3, 0x3, 0, 0},
9700 {0x38, 0x50, 0x50, 1, 1},
9701 {0x39, 0, 0, 0, 0},
9702 {0x3A, 0x50, 0x50, 1, 1},
9703 {0x3B, 0, 0, 0, 0},
9704 {0x3C, 0x6e, 0x6e, 0, 0},
9705 {0x3D, 0xf0, 0xf0, 1, 1},
9706 {0x3E, 0, 0, 0, 0},
9707 {0x3F, 0, 0, 0, 0},
9708 {0x40, 0, 0, 0, 0},
9709 {0x41, 0x3, 0x3, 0, 0},
9710 {0x42, 0x3, 0x3, 0, 0},
9711 {0x43, 0, 0, 0, 0},
9712 {0x44, 0x1e, 0x1e, 0, 0},
9713 {0x45, 0, 0, 0, 0},
9714 {0x46, 0x6e, 0x6e, 0, 0},
9715 {0x47, 0xf0, 0xf0, 1, 1},
9716 {0x48, 0, 0, 0, 0},
9717 {0x49, 0x2, 0x2, 0, 0},
9718 {0x4A, 0xff, 0xff, 1, 1},
9719 {0x4B, 0xc, 0xc, 0, 0},
9720 {0x4C, 0, 0, 0, 0},
9721 {0x4D, 0x38, 0x38, 0, 0},
9722 {0x4E, 0x70, 0x70, 1, 1},
9723 {0x4F, 0x2, 0x2, 0, 0},
9724 {0x50, 0x88, 0x88, 0, 0},
9725 {0x51, 0xc, 0xc, 0, 0},
9726 {0x52, 0, 0, 0, 0},
9727 {0x53, 0x8, 0x8, 0, 0},
9728 {0x54, 0x70, 0x70, 1, 1},
9729 {0x55, 0x2, 0x2, 0, 0},
9730 {0x56, 0xff, 0xff, 1, 1},
9731 {0x57, 0, 0, 0, 0},
9732 {0x58, 0x83, 0x83, 0, 0},
9733 {0x59, 0x77, 0x77, 1, 1},
9734 {0x5A, 0, 0, 0, 0},
9735 {0x5B, 0x2, 0x2, 0, 0},
9736 {0x5C, 0x88, 0x88, 0, 0},
9737 {0x5D, 0, 0, 0, 0},
9738 {0x5E, 0x8, 0x8, 0, 0},
9739 {0x5F, 0x77, 0x77, 1, 1},
9740 {0x60, 0x1, 0x1, 0, 0},
9741 {0x61, 0, 0, 0, 0},
9742 {0x62, 0x7, 0x7, 0, 0},
9743 {0x63, 0, 0, 0, 0},
9744 {0x64, 0x7, 0x7, 0, 0},
9745 {0x65, 0, 0, 0, 0},
9746 {0x66, 0, 0, 0, 0},
9747 {0x67, 0, 0, 1, 1},
9748 {0x68, 0, 0, 0, 0},
9749 {0x69, 0xa, 0xa, 0, 0},
9750 {0x6A, 0, 0, 0, 0},
9751 {0x6B, 0, 0, 0, 0},
9752 {0x6C, 0, 0, 0, 0},
9753 {0x6D, 0, 0, 0, 0},
9754 {0x6E, 0, 0, 0, 0},
9755 {0x6F, 0, 0, 0, 0},
9756 {0x70, 0, 0, 0, 0},
9757 {0x71, 0x2, 0x2, 0, 0},
9758 {0x72, 0, 0, 0, 0},
9759 {0x73, 0, 0, 0, 0},
9760 {0x74, 0xe, 0xe, 0, 0},
9761 {0x75, 0xe, 0xe, 0, 0},
9762 {0x76, 0xe, 0xe, 0, 0},
9763 {0x77, 0x13, 0x13, 0, 0},
9764 {0x78, 0x13, 0x13, 0, 0},
9765 {0x79, 0x1b, 0x1b, 0, 0},
9766 {0x7A, 0x1b, 0x1b, 0, 0},
9767 {0x7B, 0x55, 0x55, 0, 0},
9768 {0x7C, 0x5b, 0x5b, 0, 0},
9769 {0x7D, 0x30, 0x30, 1, 1},
9770 {0x7E, 0, 0, 0, 0},
9771 {0x7F, 0, 0, 0, 0},
9772 {0x80, 0, 0, 0, 0},
9773 {0x81, 0, 0, 0, 0},
9774 {0x82, 0, 0, 0, 0},
9775 {0x83, 0, 0, 0, 0},
9776 {0x84, 0, 0, 0, 0},
9777 {0x85, 0, 0, 0, 0},
9778 {0x86, 0, 0, 0, 0},
9779 {0x87, 0, 0, 0, 0},
9780 {0x88, 0, 0, 0, 0},
9781 {0x89, 0, 0, 0, 0},
9782 {0x8A, 0, 0, 0, 0},
9783 {0x8B, 0, 0, 0, 0},
9784 {0x8C, 0, 0, 0, 0},
9785 {0x8D, 0, 0, 0, 0},
9786 {0x8E, 0, 0, 0, 0},
9787 {0x8F, 0, 0, 0, 0},
9788 {0x90, 0, 0, 0, 0},
9789 {0x91, 0, 0, 0, 0},
9790 {0x92, 0, 0, 0, 0},
9791 {0x93, 0x70, 0x70, 0, 0},
9792 {0x94, 0x70, 0x70, 0, 0},
9793 {0x95, 0x70, 0x70, 0, 0},
9794 {0x96, 0x70, 0x70, 0, 0},
9795 {0x97, 0x70, 0x70, 0, 0},
9796 {0x98, 0x70, 0x70, 0, 0},
9797 {0x99, 0x70, 0x70, 0, 0},
9798 {0x9A, 0x70, 0x70, 0, 0},
9799 {0xFFFF, 0, 0, 0, 0}
9800 };
9801
9802 static struct radio_regs regs_RX_2056_rev6[] = {
9803 {0x02, 0, 0, 0, 0},
9804 {0x03, 0, 0, 0, 0},
9805 {0x04, 0, 0, 0, 0},
9806 {0x05, 0, 0, 0, 0},
9807 {0x06, 0, 0, 0, 0},
9808 {0x07, 0, 0, 0, 0},
9809 {0x08, 0, 0, 0, 0},
9810 {0x09, 0, 0, 0, 0},
9811 {0x0A, 0, 0, 0, 0},
9812 {0x0B, 0, 0, 0, 0},
9813 {0x0C, 0, 0, 0, 0},
9814 {0x0D, 0, 0, 0, 0},
9815 {0x0E, 0, 0, 0, 0},
9816 {0x0F, 0, 0, 0, 0},
9817 {0x10, 0, 0, 0, 0},
9818 {0x11, 0, 0, 0, 0},
9819 {0x12, 0, 0, 0, 0},
9820 {0x13, 0, 0, 0, 0},
9821 {0x14, 0, 0, 0, 0},
9822 {0x15, 0, 0, 0, 0},
9823 {0x16, 0, 0, 0, 0},
9824 {0x17, 0, 0, 0, 0},
9825 {0x18, 0, 0, 0, 0},
9826 {0x19, 0, 0, 0, 0},
9827 {0x1A, 0, 0, 0, 0},
9828 {0x1B, 0, 0, 0, 0},
9829 {0x1C, 0, 0, 0, 0},
9830 {0x1D, 0, 0, 0, 0},
9831 {0x1E, 0, 0, 0, 0},
9832 {0x1F, 0, 0, 0, 0},
9833 {0x20, 0x3, 0x3, 0, 0},
9834 {0x21, 0, 0, 0, 0},
9835 {0x22, 0, 0, 0, 0},
9836 {0x23, 0x90, 0x90, 0, 0},
9837 {0x24, 0x55, 0x55, 0, 0},
9838 {0x25, 0x15, 0x15, 0, 0},
9839 {0x26, 0x5, 0x5, 0, 0},
9840 {0x27, 0x15, 0x15, 0, 0},
9841 {0x28, 0x5, 0x5, 0, 0},
9842 {0x29, 0x20, 0x20, 0, 0},
9843 {0x2A, 0x11, 0x11, 0, 0},
9844 {0x2B, 0x90, 0x90, 0, 0},
9845 {0x2C, 0, 0, 0, 0},
9846 {0x2D, 0x88, 0x88, 0, 0},
9847 {0x2E, 0x32, 0x32, 0, 0},
9848 {0x2F, 0x77, 0x77, 0, 0},
9849 {0x30, 0x17, 0x17, 1, 1},
9850 {0x31, 0xff, 0xff, 1, 1},
9851 {0x32, 0x20, 0x20, 0, 0},
9852 {0x33, 0, 0, 0, 0},
9853 {0x34, 0x88, 0x88, 0, 0},
9854 {0x35, 0x32, 0x32, 0, 0},
9855 {0x36, 0x77, 0x77, 0, 0},
9856 {0x37, 0x17, 0x17, 1, 1},
9857 {0x38, 0xf0, 0xf0, 1, 1},
9858 {0x39, 0x20, 0x20, 0, 0},
9859 {0x3A, 0x8, 0x8, 0, 0},
9860 {0x3B, 0x55, 0x55, 1, 1},
9861 {0x3C, 0, 0, 0, 0},
9862 {0x3D, 0x88, 0x88, 1, 1},
9863 {0x3E, 0, 0, 0, 0},
9864 {0x3F, 0x44, 0x44, 0, 0},
9865 {0x40, 0x7, 0x7, 1, 1},
9866 {0x41, 0x6, 0x6, 0, 0},
9867 {0x42, 0x4, 0x4, 0, 0},
9868 {0x43, 0, 0, 0, 0},
9869 {0x44, 0x8, 0x8, 0, 0},
9870 {0x45, 0x55, 0x55, 1, 1},
9871 {0x46, 0, 0, 0, 0},
9872 {0x47, 0x11, 0x11, 0, 0},
9873 {0x48, 0, 0, 0, 0},
9874 {0x49, 0x44, 0x44, 0, 0},
9875 {0x4A, 0x7, 0x7, 0, 0},
9876 {0x4B, 0x6, 0x6, 0, 0},
9877 {0x4C, 0x4, 0x4, 0, 0},
9878 {0x4D, 0, 0, 0, 0},
9879 {0x4E, 0, 0, 0, 0},
9880 {0x4F, 0x26, 0x26, 1, 1},
9881 {0x50, 0x26, 0x26, 1, 1},
9882 {0x51, 0xf, 0xf, 1, 1},
9883 {0x52, 0xf, 0xf, 1, 1},
9884 {0x53, 0x44, 0x44, 0, 0},
9885 {0x54, 0, 0, 0, 0},
9886 {0x55, 0, 0, 0, 0},
9887 {0x56, 0x8, 0x8, 0, 0},
9888 {0x57, 0x8, 0x8, 0, 0},
9889 {0x58, 0x7, 0x7, 0, 0},
9890 {0x59, 0x22, 0x22, 0, 0},
9891 {0x5A, 0x22, 0x22, 0, 0},
9892 {0x5B, 0x2, 0x2, 0, 0},
9893 {0x5C, 0x4, 0x4, 1, 1},
9894 {0x5D, 0x7, 0x7, 0, 0},
9895 {0x5E, 0x55, 0x55, 0, 0},
9896 {0x5F, 0x23, 0x23, 0, 0},
9897 {0x60, 0x41, 0x41, 0, 0},
9898 {0x61, 0x1, 0x1, 0, 0},
9899 {0x62, 0xa, 0xa, 0, 0},
9900 {0x63, 0, 0, 0, 0},
9901 {0x64, 0, 0, 0, 0},
9902 {0x65, 0, 0, 0, 0},
9903 {0x66, 0, 0, 0, 0},
9904 {0x67, 0, 0, 0, 0},
9905 {0x68, 0, 0, 0, 0},
9906 {0x69, 0, 0, 0, 0},
9907 {0x6A, 0, 0, 0, 0},
9908 {0x6B, 0xc, 0xc, 0, 0},
9909 {0x6C, 0, 0, 0, 0},
9910 {0x6D, 0, 0, 0, 0},
9911 {0x6E, 0, 0, 0, 0},
9912 {0x6F, 0, 0, 0, 0},
9913 {0x70, 0, 0, 0, 0},
9914 {0x71, 0, 0, 0, 0},
9915 {0x72, 0x22, 0x22, 0, 0},
9916 {0x73, 0x22, 0x22, 0, 0},
9917 {0x74, 0, 0, 1, 1},
9918 {0x75, 0xa, 0xa, 0, 0},
9919 {0x76, 0x1, 0x1, 0, 0},
9920 {0x77, 0x22, 0x22, 0, 0},
9921 {0x78, 0x30, 0x30, 0, 0},
9922 {0x79, 0, 0, 0, 0},
9923 {0x7A, 0, 0, 0, 0},
9924 {0x7B, 0, 0, 0, 0},
9925 {0x7C, 0, 0, 0, 0},
9926 {0x7D, 0x5, 0x5, 1, 1},
9927 {0x7E, 0, 0, 0, 0},
9928 {0x7F, 0, 0, 0, 0},
9929 {0x80, 0, 0, 0, 0},
9930 {0x81, 0, 0, 0, 0},
9931 {0x82, 0, 0, 0, 0},
9932 {0x83, 0, 0, 0, 0},
9933 {0x84, 0, 0, 0, 0},
9934 {0x85, 0, 0, 0, 0},
9935 {0x86, 0, 0, 0, 0},
9936 {0x87, 0, 0, 0, 0},
9937 {0x88, 0, 0, 0, 0},
9938 {0x89, 0, 0, 0, 0},
9939 {0x8A, 0, 0, 0, 0},
9940 {0x8B, 0, 0, 0, 0},
9941 {0x8C, 0, 0, 0, 0},
9942 {0x8D, 0, 0, 0, 0},
9943 {0x8E, 0, 0, 0, 0},
9944 {0x8F, 0, 0, 0, 0},
9945 {0x90, 0, 0, 0, 0},
9946 {0x91, 0, 0, 0, 0},
9947 {0x92, 0, 0, 0, 0},
9948 {0x93, 0, 0, 0, 0},
9949 {0x94, 0, 0, 0, 0},
9950 {0xFFFF, 0, 0, 0, 0}
9951 };
9952
9953 static struct radio_regs regs_SYN_2056_rev7[] = {
9954 {0x02, 0, 0, 0, 0},
9955 {0x03, 0, 0, 0, 0},
9956 {0x04, 0, 0, 0, 0},
9957 {0x05, 0, 0, 0, 0},
9958 {0x06, 0, 0, 0, 0},
9959 {0x07, 0, 0, 0, 0},
9960 {0x08, 0, 0, 0, 0},
9961 {0x09, 0x1, 0x1, 0, 0},
9962 {0x0A, 0, 0, 0, 0},
9963 {0x0B, 0, 0, 0, 0},
9964 {0x0C, 0, 0, 0, 0},
9965 {0x0D, 0, 0, 0, 0},
9966 {0x0E, 0, 0, 0, 0},
9967 {0x0F, 0, 0, 0, 0},
9968 {0x10, 0, 0, 0, 0},
9969 {0x11, 0, 0, 0, 0},
9970 {0x12, 0, 0, 0, 0},
9971 {0x13, 0, 0, 0, 0},
9972 {0x14, 0, 0, 0, 0},
9973 {0x15, 0, 0, 0, 0},
9974 {0x16, 0, 0, 0, 0},
9975 {0x17, 0, 0, 0, 0},
9976 {0x18, 0, 0, 0, 0},
9977 {0x19, 0, 0, 0, 0},
9978 {0x1A, 0, 0, 0, 0},
9979 {0x1B, 0, 0, 0, 0},
9980 {0x1C, 0, 0, 0, 0},
9981 {0x1D, 0, 0, 0, 0},
9982 {0x1E, 0, 0, 0, 0},
9983 {0x1F, 0, 0, 0, 0},
9984 {0x20, 0, 0, 0, 0},
9985 {0x21, 0, 0, 0, 0},
9986 {0x22, 0x60, 0x60, 0, 0},
9987 {0x23, 0x6, 0x6, 0, 0},
9988 {0x24, 0xc, 0xc, 0, 0},
9989 {0x25, 0, 0, 0, 0},
9990 {0x26, 0, 0, 0, 0},
9991 {0x27, 0, 0, 0, 0},
9992 {0x28, 0x1, 0x1, 0, 0},
9993 {0x29, 0, 0, 0, 0},
9994 {0x2A, 0, 0, 0, 0},
9995 {0x2B, 0, 0, 0, 0},
9996 {0x2C, 0, 0, 0, 0},
9997 {0x2D, 0, 0, 0, 0},
9998 {0x2E, 0, 0, 0, 0},
9999 {0x2F, 0x1f, 0x1f, 0, 0},
10000 {0x30, 0x15, 0x15, 0, 0},
10001 {0x31, 0xf, 0xf, 0, 0},
10002 {0x32, 0, 0, 0, 0},
10003 {0x33, 0, 0, 0, 0},
10004 {0x34, 0, 0, 0, 0},
10005 {0x35, 0, 0, 0, 0},
10006 {0x36, 0, 0, 0, 0},
10007 {0x37, 0, 0, 0, 0},
10008 {0x38, 0, 0, 0, 0},
10009 {0x39, 0, 0, 0, 0},
10010 {0x3A, 0, 0, 0, 0},
10011 {0x3B, 0, 0, 0, 0},
10012 {0x3C, 0x13, 0x13, 0, 0},
10013 {0x3D, 0xf, 0xf, 0, 0},
10014 {0x3E, 0x18, 0x18, 0, 0},
10015 {0x3F, 0, 0, 0, 0},
10016 {0x40, 0, 0, 0, 0},
10017 {0x41, 0x20, 0x20, 0, 0},
10018 {0x42, 0x20, 0x20, 0, 0},
10019 {0x43, 0, 0, 0, 0},
10020 {0x44, 0x77, 0x77, 0, 0},
10021 {0x45, 0x7, 0x7, 0, 0},
10022 {0x46, 0x1, 0x1, 0, 0},
10023 {0x47, 0x4, 0x4, 0, 0},
10024 {0x48, 0xf, 0xf, 0, 0},
10025 {0x49, 0x30, 0x30, 0, 0},
10026 {0x4A, 0x32, 0x32, 0, 0},
10027 {0x4B, 0xd, 0xd, 0, 0},
10028 {0x4C, 0xd, 0xd, 0, 0},
10029 {0x4D, 0x4, 0x4, 0, 0},
10030 {0x4E, 0x6, 0x6, 0, 0},
10031 {0x4F, 0x1, 0x1, 0, 0},
10032 {0x50, 0x1c, 0x1c, 0, 0},
10033 {0x51, 0x2, 0x2, 0, 0},
10034 {0x52, 0x2, 0x2, 0, 0},
10035 {0x53, 0xf7, 0xf7, 1, 1},
10036 {0x54, 0xb4, 0xb4, 0, 0},
10037 {0x55, 0xd2, 0xd2, 0, 0},
10038 {0x56, 0, 0, 0, 0},
10039 {0x57, 0, 0, 0, 0},
10040 {0x58, 0x4, 0x4, 0, 0},
10041 {0x59, 0x96, 0x96, 0, 0},
10042 {0x5A, 0x3e, 0x3e, 0, 0},
10043 {0x5B, 0x3e, 0x3e, 0, 0},
10044 {0x5C, 0x13, 0x13, 0, 0},
10045 {0x5D, 0x2, 0x2, 0, 0},
10046 {0x5E, 0, 0, 0, 0},
10047 {0x5F, 0x7, 0x7, 0, 0},
10048 {0x60, 0x7, 0x7, 1, 1},
10049 {0x61, 0x8, 0x8, 0, 0},
10050 {0x62, 0x3, 0x3, 0, 0},
10051 {0x63, 0, 0, 0, 0},
10052 {0x64, 0, 0, 0, 0},
10053 {0x65, 0, 0, 0, 0},
10054 {0x66, 0, 0, 0, 0},
10055 {0x67, 0, 0, 0, 0},
10056 {0x68, 0x40, 0x40, 0, 0},
10057 {0x69, 0, 0, 0, 0},
10058 {0x6A, 0, 0, 0, 0},
10059 {0x6B, 0, 0, 0, 0},
10060 {0x6C, 0, 0, 0, 0},
10061 {0x6D, 0x1, 0x1, 0, 0},
10062 {0x6E, 0, 0, 0, 0},
10063 {0x6F, 0, 0, 0, 0},
10064 {0x70, 0x60, 0x60, 0, 0},
10065 {0x71, 0x66, 0x66, 0, 0},
10066 {0x72, 0xc, 0xc, 0, 0},
10067 {0x73, 0x66, 0x66, 0, 0},
10068 {0x74, 0x8f, 0x8f, 1, 1},
10069 {0x75, 0, 0, 0, 0},
10070 {0x76, 0xcc, 0xcc, 0, 0},
10071 {0x77, 0x1, 0x1, 0, 0},
10072 {0x78, 0x66, 0x66, 0, 0},
10073 {0x79, 0x66, 0x66, 0, 0},
10074 {0x7A, 0, 0, 0, 0},
10075 {0x7B, 0, 0, 0, 0},
10076 {0x7C, 0, 0, 0, 0},
10077 {0x7D, 0, 0, 0, 0},
10078 {0x7E, 0, 0, 0, 0},
10079 {0x7F, 0, 0, 0, 0},
10080 {0x80, 0, 0, 0, 0},
10081 {0x81, 0, 0, 0, 0},
10082 {0x82, 0, 0, 0, 0},
10083 {0x83, 0, 0, 0, 0},
10084 {0x84, 0, 0, 0, 0},
10085 {0x85, 0xff, 0xff, 0, 0},
10086 {0x86, 0, 0, 0, 0},
10087 {0x87, 0, 0, 0, 0},
10088 {0x88, 0, 0, 0, 0},
10089 {0x89, 0, 0, 0, 0},
10090 {0x8A, 0, 0, 0, 0},
10091 {0x8B, 0, 0, 0, 0},
10092 {0x8C, 0, 0, 0, 0},
10093 {0x8D, 0, 0, 0, 0},
10094 {0x8E, 0, 0, 0, 0},
10095 {0x8F, 0, 0, 0, 0},
10096 {0x90, 0, 0, 0, 0},
10097 {0x91, 0, 0, 0, 0},
10098 {0x92, 0, 0, 0, 0},
10099 {0x93, 0, 0, 0, 0},
10100 {0x94, 0, 0, 0, 0},
10101 {0x95, 0, 0, 0, 0},
10102 {0x96, 0, 0, 0, 0},
10103 {0x97, 0, 0, 0, 0},
10104 {0x98, 0, 0, 0, 0},
10105 {0x99, 0, 0, 0, 0},
10106 {0x9A, 0, 0, 0, 0},
10107 {0x9B, 0, 0, 0, 0},
10108 {0x9C, 0, 0, 0, 0},
10109 {0x9D, 0, 0, 0, 0},
10110 {0x9E, 0, 0, 0, 0},
10111 {0x9F, 0x6, 0x6, 0, 0},
10112 {0xA0, 0x66, 0x66, 0, 0},
10113 {0xA1, 0x66, 0x66, 0, 0},
10114 {0xA2, 0x66, 0x66, 0, 0},
10115 {0xA3, 0x66, 0x66, 0, 0},
10116 {0xA4, 0x66, 0x66, 0, 0},
10117 {0xA5, 0x66, 0x66, 0, 0},
10118 {0xA6, 0x66, 0x66, 0, 0},
10119 {0xA7, 0x66, 0x66, 0, 0},
10120 {0xA8, 0x66, 0x66, 0, 0},
10121 {0xA9, 0x66, 0x66, 0, 0},
10122 {0xAA, 0x66, 0x66, 0, 0},
10123 {0xAB, 0x66, 0x66, 0, 0},
10124 {0xAC, 0x66, 0x66, 0, 0},
10125 {0xAD, 0x66, 0x66, 0, 0},
10126 {0xAE, 0x66, 0x66, 0, 0},
10127 {0xAF, 0x66, 0x66, 0, 0},
10128 {0xB0, 0x66, 0x66, 0, 0},
10129 {0xB1, 0x66, 0x66, 0, 0},
10130 {0xB2, 0x66, 0x66, 0, 0},
10131 {0xB3, 0xa, 0xa, 0, 0},
10132 {0xB4, 0, 0, 0, 0},
10133 {0xB5, 0, 0, 0, 0},
10134 {0xB6, 0, 0, 0, 0},
10135 {0xFFFF, 0, 0, 0, 0},
10136 };
10137
10138 static struct radio_regs regs_TX_2056_rev7[] = {
10139 {0x02, 0, 0, 0, 0},
10140 {0x03, 0, 0, 0, 0},
10141 {0x04, 0, 0, 0, 0},
10142 {0x05, 0, 0, 0, 0},
10143 {0x06, 0, 0, 0, 0},
10144 {0x07, 0, 0, 0, 0},
10145 {0x08, 0, 0, 0, 0},
10146 {0x09, 0, 0, 0, 0},
10147 {0x0A, 0, 0, 0, 0},
10148 {0x0B, 0, 0, 0, 0},
10149 {0x0C, 0, 0, 0, 0},
10150 {0x0D, 0, 0, 0, 0},
10151 {0x0E, 0, 0, 0, 0},
10152 {0x0F, 0, 0, 0, 0},
10153 {0x10, 0, 0, 0, 0},
10154 {0x11, 0, 0, 0, 0},
10155 {0x12, 0, 0, 0, 0},
10156 {0x13, 0, 0, 0, 0},
10157 {0x14, 0, 0, 0, 0},
10158 {0x15, 0, 0, 0, 0},
10159 {0x16, 0, 0, 0, 0},
10160 {0x17, 0, 0, 0, 0},
10161 {0x18, 0, 0, 0, 0},
10162 {0x19, 0, 0, 0, 0},
10163 {0x1A, 0, 0, 0, 0},
10164 {0x1B, 0, 0, 0, 0},
10165 {0x1C, 0, 0, 0, 0},
10166 {0x1D, 0, 0, 0, 0},
10167 {0x1E, 0, 0, 0, 0},
10168 {0x1F, 0, 0, 0, 0},
10169 {0x20, 0, 0, 0, 0},
10170 {0x21, 0x88, 0x88, 0, 0},
10171 {0x22, 0x88, 0x88, 0, 0},
10172 {0x23, 0x88, 0x88, 0, 0},
10173 {0x24, 0x88, 0x88, 0, 0},
10174 {0x25, 0xc, 0xc, 0, 0},
10175 {0x26, 0, 0, 0, 0},
10176 {0x27, 0x3, 0x3, 0, 0},
10177 {0x28, 0, 0, 0, 0},
10178 {0x29, 0x3, 0x3, 0, 0},
10179 {0x2A, 0x37, 0x37, 0, 0},
10180 {0x2B, 0x3, 0x3, 0, 0},
10181 {0x2C, 0, 0, 0, 0},
10182 {0x2D, 0, 0, 0, 0},
10183 {0x2E, 0x1, 0x1, 0, 0},
10184 {0x2F, 0x1, 0x1, 0, 0},
10185 {0x30, 0, 0, 0, 0},
10186 {0x31, 0, 0, 0, 0},
10187 {0x32, 0, 0, 0, 0},
10188 {0x33, 0x11, 0x11, 0, 0},
10189 {0x34, 0xee, 0xee, 1, 1},
10190 {0x35, 0, 0, 0, 0},
10191 {0x36, 0, 0, 0, 0},
10192 {0x37, 0x3, 0x3, 0, 0},
10193 {0x38, 0x50, 0x50, 1, 1},
10194 {0x39, 0, 0, 0, 0},
10195 {0x3A, 0x50, 0x50, 1, 1},
10196 {0x3B, 0, 0, 0, 0},
10197 {0x3C, 0x6e, 0x6e, 0, 0},
10198 {0x3D, 0xf0, 0xf0, 1, 1},
10199 {0x3E, 0, 0, 0, 0},
10200 {0x3F, 0, 0, 0, 0},
10201 {0x40, 0, 0, 0, 0},
10202 {0x41, 0x3, 0x3, 0, 0},
10203 {0x42, 0x3, 0x3, 0, 0},
10204 {0x43, 0, 0, 0, 0},
10205 {0x44, 0x1e, 0x1e, 0, 0},
10206 {0x45, 0, 0, 0, 0},
10207 {0x46, 0x6e, 0x6e, 0, 0},
10208 {0x47, 0xf0, 0xf0, 1, 1},
10209 {0x48, 0, 0, 0, 0},
10210 {0x49, 0x2, 0x2, 0, 0},
10211 {0x4A, 0xff, 0xff, 1, 1},
10212 {0x4B, 0xc, 0xc, 0, 0},
10213 {0x4C, 0, 0, 0, 0},
10214 {0x4D, 0x38, 0x38, 0, 0},
10215 {0x4E, 0x70, 0x70, 1, 1},
10216 {0x4F, 0x2, 0x2, 0, 0},
10217 {0x50, 0x88, 0x88, 0, 0},
10218 {0x51, 0xc, 0xc, 0, 0},
10219 {0x52, 0, 0, 0, 0},
10220 {0x53, 0x8, 0x8, 0, 0},
10221 {0x54, 0x70, 0x70, 1, 1},
10222 {0x55, 0x2, 0x2, 0, 0},
10223 {0x56, 0xff, 0xff, 1, 1},
10224 {0x57, 0, 0, 0, 0},
10225 {0x58, 0x83, 0x83, 0, 0},
10226 {0x59, 0x77, 0x77, 1, 1},
10227 {0x5A, 0, 0, 0, 0},
10228 {0x5B, 0x2, 0x2, 0, 0},
10229 {0x5C, 0x88, 0x88, 0, 0},
10230 {0x5D, 0, 0, 0, 0},
10231 {0x5E, 0x8, 0x8, 0, 0},
10232 {0x5F, 0x77, 0x77, 1, 1},
10233 {0x60, 0x1, 0x1, 0, 0},
10234 {0x61, 0, 0, 0, 0},
10235 {0x62, 0x7, 0x7, 0, 0},
10236 {0x63, 0, 0, 0, 0},
10237 {0x64, 0x7, 0x7, 0, 0},
10238 {0x65, 0, 0, 0, 0},
10239 {0x66, 0, 0, 0, 0},
10240 {0x67, 0, 0, 1, 1},
10241 {0x68, 0, 0, 0, 0},
10242 {0x69, 0xa, 0xa, 0, 0},
10243 {0x6A, 0, 0, 0, 0},
10244 {0x6B, 0, 0, 0, 0},
10245 {0x6C, 0, 0, 0, 0},
10246 {0x6D, 0, 0, 0, 0},
10247 {0x6E, 0, 0, 0, 0},
10248 {0x6F, 0, 0, 0, 0},
10249 {0x70, 0, 0, 0, 0},
10250 {0x71, 0x2, 0x2, 0, 0},
10251 {0x72, 0, 0, 0, 0},
10252 {0x73, 0, 0, 0, 0},
10253 {0x74, 0xe, 0xe, 0, 0},
10254 {0x75, 0xe, 0xe, 0, 0},
10255 {0x76, 0xe, 0xe, 0, 0},
10256 {0x77, 0x13, 0x13, 0, 0},
10257 {0x78, 0x13, 0x13, 0, 0},
10258 {0x79, 0x1b, 0x1b, 0, 0},
10259 {0x7A, 0x1b, 0x1b, 0, 0},
10260 {0x7B, 0x55, 0x55, 0, 0},
10261 {0x7C, 0x5b, 0x5b, 0, 0},
10262 {0x7D, 0x30, 0x30, 1, 1},
10263 {0x7E, 0, 0, 0, 0},
10264 {0x7F, 0, 0, 0, 0},
10265 {0x80, 0, 0, 0, 0},
10266 {0x81, 0, 0, 0, 0},
10267 {0x82, 0, 0, 0, 0},
10268 {0x83, 0, 0, 0, 0},
10269 {0x84, 0, 0, 0, 0},
10270 {0x85, 0, 0, 0, 0},
10271 {0x86, 0, 0, 0, 0},
10272 {0x87, 0, 0, 0, 0},
10273 {0x88, 0, 0, 0, 0},
10274 {0x89, 0, 0, 0, 0},
10275 {0x8A, 0, 0, 0, 0},
10276 {0x8B, 0, 0, 0, 0},
10277 {0x8C, 0, 0, 0, 0},
10278 {0x8D, 0, 0, 0, 0},
10279 {0x8E, 0, 0, 0, 0},
10280 {0x8F, 0, 0, 0, 0},
10281 {0x90, 0, 0, 0, 0},
10282 {0x91, 0, 0, 0, 0},
10283 {0x92, 0, 0, 0, 0},
10284 {0x93, 0x70, 0x70, 0, 0},
10285 {0x94, 0x70, 0x70, 0, 0},
10286 {0x95, 0x71, 0x71, 1, 1},
10287 {0x96, 0x71, 0x71, 1, 1},
10288 {0x97, 0x72, 0x72, 1, 1},
10289 {0x98, 0x73, 0x73, 1, 1},
10290 {0x99, 0x74, 0x74, 1, 1},
10291 {0x9A, 0x75, 0x75, 1, 1},
10292 {0xFFFF, 0, 0, 0, 0},
10293 };
10294
10295 static struct radio_regs regs_RX_2056_rev7[] = {
10296 {0x02, 0, 0, 0, 0},
10297 {0x03, 0, 0, 0, 0},
10298 {0x04, 0, 0, 0, 0},
10299 {0x05, 0, 0, 0, 0},
10300 {0x06, 0, 0, 0, 0},
10301 {0x07, 0, 0, 0, 0},
10302 {0x08, 0, 0, 0, 0},
10303 {0x09, 0, 0, 0, 0},
10304 {0x0A, 0, 0, 0, 0},
10305 {0x0B, 0, 0, 0, 0},
10306 {0x0C, 0, 0, 0, 0},
10307 {0x0D, 0, 0, 0, 0},
10308 {0x0E, 0, 0, 0, 0},
10309 {0x0F, 0, 0, 0, 0},
10310 {0x10, 0, 0, 0, 0},
10311 {0x11, 0, 0, 0, 0},
10312 {0x12, 0, 0, 0, 0},
10313 {0x13, 0, 0, 0, 0},
10314 {0x14, 0, 0, 0, 0},
10315 {0x15, 0, 0, 0, 0},
10316 {0x16, 0, 0, 0, 0},
10317 {0x17, 0, 0, 0, 0},
10318 {0x18, 0, 0, 0, 0},
10319 {0x19, 0, 0, 0, 0},
10320 {0x1A, 0, 0, 0, 0},
10321 {0x1B, 0, 0, 0, 0},
10322 {0x1C, 0, 0, 0, 0},
10323 {0x1D, 0, 0, 0, 0},
10324 {0x1E, 0, 0, 0, 0},
10325 {0x1F, 0, 0, 0, 0},
10326 {0x20, 0x3, 0x3, 0, 0},
10327 {0x21, 0, 0, 0, 0},
10328 {0x22, 0, 0, 0, 0},
10329 {0x23, 0x90, 0x90, 0, 0},
10330 {0x24, 0x55, 0x55, 0, 0},
10331 {0x25, 0x15, 0x15, 0, 0},
10332 {0x26, 0x5, 0x5, 0, 0},
10333 {0x27, 0x15, 0x15, 0, 0},
10334 {0x28, 0x5, 0x5, 0, 0},
10335 {0x29, 0x20, 0x20, 0, 0},
10336 {0x2A, 0x11, 0x11, 0, 0},
10337 {0x2B, 0x90, 0x90, 0, 0},
10338 {0x2C, 0, 0, 0, 0},
10339 {0x2D, 0x88, 0x88, 0, 0},
10340 {0x2E, 0x32, 0x32, 0, 0},
10341 {0x2F, 0x77, 0x77, 0, 0},
10342 {0x30, 0x17, 0x17, 1, 1},
10343 {0x31, 0xff, 0xff, 1, 1},
10344 {0x32, 0x20, 0x20, 0, 0},
10345 {0x33, 0, 0, 0, 0},
10346 {0x34, 0x88, 0x88, 0, 0},
10347 {0x35, 0x32, 0x32, 0, 0},
10348 {0x36, 0x77, 0x77, 0, 0},
10349 {0x37, 0x17, 0x17, 1, 1},
10350 {0x38, 0xf0, 0xf0, 1, 1},
10351 {0x39, 0x20, 0x20, 0, 0},
10352 {0x3A, 0x8, 0x8, 0, 0},
10353 {0x3B, 0x55, 0x55, 1, 1},
10354 {0x3C, 0, 0, 0, 0},
10355 {0x3D, 0x88, 0x88, 1, 1},
10356 {0x3E, 0, 0, 0, 0},
10357 {0x3F, 0, 0, 1, 1},
10358 {0x40, 0x7, 0x7, 1, 1},
10359 {0x41, 0x6, 0x6, 0, 0},
10360 {0x42, 0x4, 0x4, 0, 0},
10361 {0x43, 0, 0, 0, 0},
10362 {0x44, 0x8, 0x8, 0, 0},
10363 {0x45, 0x55, 0x55, 1, 1},
10364 {0x46, 0, 0, 0, 0},
10365 {0x47, 0x11, 0x11, 0, 0},
10366 {0x48, 0, 0, 0, 0},
10367 {0x49, 0, 0, 1, 1},
10368 {0x4A, 0x7, 0x7, 0, 0},
10369 {0x4B, 0x6, 0x6, 0, 0},
10370 {0x4C, 0x4, 0x4, 0, 0},
10371 {0x4D, 0, 0, 0, 0},
10372 {0x4E, 0, 0, 0, 0},
10373 {0x4F, 0x26, 0x26, 1, 1},
10374 {0x50, 0x26, 0x26, 1, 1},
10375 {0x51, 0xf, 0xf, 1, 1},
10376 {0x52, 0xf, 0xf, 1, 1},
10377 {0x53, 0x44, 0x44, 0, 0},
10378 {0x54, 0, 0, 0, 0},
10379 {0x55, 0, 0, 0, 0},
10380 {0x56, 0x8, 0x8, 0, 0},
10381 {0x57, 0x8, 0x8, 0, 0},
10382 {0x58, 0x7, 0x7, 0, 0},
10383 {0x59, 0x22, 0x22, 0, 0},
10384 {0x5A, 0x22, 0x22, 0, 0},
10385 {0x5B, 0x2, 0x2, 0, 0},
10386 {0x5C, 0x4, 0x4, 1, 1},
10387 {0x5D, 0x7, 0x7, 0, 0},
10388 {0x5E, 0x55, 0x55, 0, 0},
10389 {0x5F, 0x23, 0x23, 0, 0},
10390 {0x60, 0x41, 0x41, 0, 0},
10391 {0x61, 0x1, 0x1, 0, 0},
10392 {0x62, 0xa, 0xa, 0, 0},
10393 {0x63, 0, 0, 0, 0},
10394 {0x64, 0, 0, 0, 0},
10395 {0x65, 0, 0, 0, 0},
10396 {0x66, 0, 0, 0, 0},
10397 {0x67, 0, 0, 0, 0},
10398 {0x68, 0, 0, 0, 0},
10399 {0x69, 0, 0, 0, 0},
10400 {0x6A, 0, 0, 0, 0},
10401 {0x6B, 0xc, 0xc, 0, 0},
10402 {0x6C, 0, 0, 0, 0},
10403 {0x6D, 0, 0, 0, 0},
10404 {0x6E, 0, 0, 0, 0},
10405 {0x6F, 0, 0, 0, 0},
10406 {0x70, 0, 0, 0, 0},
10407 {0x71, 0, 0, 0, 0},
10408 {0x72, 0x22, 0x22, 0, 0},
10409 {0x73, 0x22, 0x22, 0, 0},
10410 {0x74, 0, 0, 1, 1},
10411 {0x75, 0xa, 0xa, 0, 0},
10412 {0x76, 0x1, 0x1, 0, 0},
10413 {0x77, 0x22, 0x22, 0, 0},
10414 {0x78, 0x30, 0x30, 0, 0},
10415 {0x79, 0, 0, 0, 0},
10416 {0x7A, 0, 0, 0, 0},
10417 {0x7B, 0, 0, 0, 0},
10418 {0x7C, 0, 0, 0, 0},
10419 {0x7D, 0, 0, 0, 0},
10420 {0x7E, 0, 0, 0, 0},
10421 {0x7F, 0, 0, 0, 0},
10422 {0x80, 0, 0, 0, 0},
10423 {0x81, 0, 0, 0, 0},
10424 {0x82, 0, 0, 0, 0},
10425 {0x83, 0, 0, 0, 0},
10426 {0x84, 0, 0, 0, 0},
10427 {0x85, 0, 0, 0, 0},
10428 {0x86, 0, 0, 0, 0},
10429 {0x87, 0, 0, 0, 0},
10430 {0x88, 0, 0, 0, 0},
10431 {0x89, 0, 0, 0, 0},
10432 {0x8A, 0, 0, 0, 0},
10433 {0x8B, 0, 0, 0, 0},
10434 {0x8C, 0, 0, 0, 0},
10435 {0x8D, 0, 0, 0, 0},
10436 {0x8E, 0, 0, 0, 0},
10437 {0x8F, 0, 0, 0, 0},
10438 {0x90, 0, 0, 0, 0},
10439 {0x91, 0, 0, 0, 0},
10440 {0x92, 0, 0, 0, 0},
10441 {0x93, 0, 0, 0, 0},
10442 {0x94, 0, 0, 0, 0},
10443 {0xFFFF, 0, 0, 0, 0},
10444 };
10445
10446 static struct radio_regs regs_SYN_2056_rev8[] = {
10447 {0x02, 0, 0, 0, 0},
10448 {0x03, 0, 0, 0, 0},
10449 {0x04, 0, 0, 0, 0},
10450 {0x05, 0, 0, 0, 0},
10451 {0x06, 0, 0, 0, 0},
10452 {0x07, 0, 0, 0, 0},
10453 {0x08, 0, 0, 0, 0},
10454 {0x09, 0x1, 0x1, 0, 0},
10455 {0x0A, 0, 0, 0, 0},
10456 {0x0B, 0, 0, 0, 0},
10457 {0x0C, 0, 0, 0, 0},
10458 {0x0D, 0, 0, 0, 0},
10459 {0x0E, 0, 0, 0, 0},
10460 {0x0F, 0, 0, 0, 0},
10461 {0x10, 0, 0, 0, 0},
10462 {0x11, 0, 0, 0, 0},
10463 {0x12, 0, 0, 0, 0},
10464 {0x13, 0, 0, 0, 0},
10465 {0x14, 0, 0, 0, 0},
10466 {0x15, 0, 0, 0, 0},
10467 {0x16, 0, 0, 0, 0},
10468 {0x17, 0, 0, 0, 0},
10469 {0x18, 0, 0, 0, 0},
10470 {0x19, 0, 0, 0, 0},
10471 {0x1A, 0, 0, 0, 0},
10472 {0x1B, 0, 0, 0, 0},
10473 {0x1C, 0, 0, 0, 0},
10474 {0x1D, 0, 0, 0, 0},
10475 {0x1E, 0, 0, 0, 0},
10476 {0x1F, 0, 0, 0, 0},
10477 {0x20, 0, 0, 0, 0},
10478 {0x21, 0, 0, 0, 0},
10479 {0x22, 0x60, 0x60, 0, 0},
10480 {0x23, 0x6, 0x6, 0, 0},
10481 {0x24, 0xc, 0xc, 0, 0},
10482 {0x25, 0, 0, 0, 0},
10483 {0x26, 0, 0, 0, 0},
10484 {0x27, 0, 0, 0, 0},
10485 {0x28, 0x1, 0x1, 0, 0},
10486 {0x29, 0, 0, 0, 0},
10487 {0x2A, 0, 0, 0, 0},
10488 {0x2B, 0, 0, 0, 0},
10489 {0x2C, 0, 0, 0, 0},
10490 {0x2D, 0, 0, 0, 0},
10491 {0x2E, 0, 0, 0, 0},
10492 {0x2F, 0x1f, 0x1f, 0, 0},
10493 {0x30, 0x15, 0x15, 0, 0},
10494 {0x31, 0xf, 0xf, 0, 0},
10495 {0x32, 0, 0, 0, 0},
10496 {0x33, 0, 0, 0, 0},
10497 {0x34, 0, 0, 0, 0},
10498 {0x35, 0, 0, 0, 0},
10499 {0x36, 0, 0, 0, 0},
10500 {0x37, 0, 0, 0, 0},
10501 {0x38, 0, 0, 0, 0},
10502 {0x39, 0, 0, 0, 0},
10503 {0x3A, 0, 0, 0, 0},
10504 {0x3B, 0, 0, 0, 0},
10505 {0x3C, 0x13, 0x13, 0, 0},
10506 {0x3D, 0xf, 0xf, 0, 0},
10507 {0x3E, 0x18, 0x18, 0, 0},
10508 {0x3F, 0, 0, 0, 0},
10509 {0x40, 0, 0, 0, 0},
10510 {0x41, 0x20, 0x20, 0, 0},
10511 {0x42, 0x20, 0x20, 0, 0},
10512 {0x43, 0, 0, 0, 0},
10513 {0x44, 0x77, 0x77, 0, 0},
10514 {0x45, 0x7, 0x7, 0, 0},
10515 {0x46, 0x1, 0x1, 0, 0},
10516 {0x47, 0x4, 0x4, 0, 0},
10517 {0x48, 0xf, 0xf, 0, 0},
10518 {0x49, 0x30, 0x30, 0, 0},
10519 {0x4A, 0x32, 0x32, 0, 0},
10520 {0x4B, 0xd, 0xd, 0, 0},
10521 {0x4C, 0xd, 0xd, 0, 0},
10522 {0x4D, 0x4, 0x4, 0, 0},
10523 {0x4E, 0x6, 0x6, 0, 0},
10524 {0x4F, 0x1, 0x1, 0, 0},
10525 {0x50, 0x1c, 0x1c, 0, 0},
10526 {0x51, 0x2, 0x2, 0, 0},
10527 {0x52, 0x2, 0x2, 0, 0},
10528 {0x53, 0xf7, 0xf7, 1, 1},
10529 {0x54, 0xb4, 0xb4, 0, 0},
10530 {0x55, 0xd2, 0xd2, 0, 0},
10531 {0x56, 0, 0, 0, 0},
10532 {0x57, 0, 0, 0, 0},
10533 {0x58, 0x4, 0x4, 0, 0},
10534 {0x59, 0x96, 0x96, 0, 0},
10535 {0x5A, 0x3e, 0x3e, 0, 0},
10536 {0x5B, 0x3e, 0x3e, 0, 0},
10537 {0x5C, 0x13, 0x13, 0, 0},
10538 {0x5D, 0x2, 0x2, 0, 0},
10539 {0x5E, 0, 0, 0, 0},
10540 {0x5F, 0x7, 0x7, 0, 0},
10541 {0x60, 0x7, 0x7, 1, 1},
10542 {0x61, 0x8, 0x8, 0, 0},
10543 {0x62, 0x3, 0x3, 0, 0},
10544 {0x63, 0, 0, 0, 0},
10545 {0x64, 0, 0, 0, 0},
10546 {0x65, 0, 0, 0, 0},
10547 {0x66, 0, 0, 0, 0},
10548 {0x67, 0, 0, 0, 0},
10549 {0x68, 0x40, 0x40, 0, 0},
10550 {0x69, 0, 0, 0, 0},
10551 {0x6A, 0, 0, 0, 0},
10552 {0x6B, 0, 0, 0, 0},
10553 {0x6C, 0, 0, 0, 0},
10554 {0x6D, 0x1, 0x1, 0, 0},
10555 {0x6E, 0, 0, 0, 0},
10556 {0x6F, 0, 0, 0, 0},
10557 {0x70, 0x60, 0x60, 0, 0},
10558 {0x71, 0x66, 0x66, 0, 0},
10559 {0x72, 0xc, 0xc, 0, 0},
10560 {0x73, 0x66, 0x66, 0, 0},
10561 {0x74, 0x8f, 0x8f, 1, 1},
10562 {0x75, 0, 0, 0, 0},
10563 {0x76, 0xcc, 0xcc, 0, 0},
10564 {0x77, 0x1, 0x1, 0, 0},
10565 {0x78, 0x66, 0x66, 0, 0},
10566 {0x79, 0x66, 0x66, 0, 0},
10567 {0x7A, 0, 0, 0, 0},
10568 {0x7B, 0, 0, 0, 0},
10569 {0x7C, 0, 0, 0, 0},
10570 {0x7D, 0, 0, 0, 0},
10571 {0x7E, 0, 0, 0, 0},
10572 {0x7F, 0, 0, 0, 0},
10573 {0x80, 0, 0, 0, 0},
10574 {0x81, 0, 0, 0, 0},
10575 {0x82, 0, 0, 0, 0},
10576 {0x83, 0, 0, 0, 0},
10577 {0x84, 0, 0, 0, 0},
10578 {0x85, 0xff, 0xff, 0, 0},
10579 {0x86, 0, 0, 0, 0},
10580 {0x87, 0, 0, 0, 0},
10581 {0x88, 0, 0, 0, 0},
10582 {0x89, 0, 0, 0, 0},
10583 {0x8A, 0, 0, 0, 0},
10584 {0x8B, 0, 0, 0, 0},
10585 {0x8C, 0, 0, 0, 0},
10586 {0x8D, 0, 0, 0, 0},
10587 {0x8E, 0, 0, 0, 0},
10588 {0x8F, 0, 0, 0, 0},
10589 {0x90, 0, 0, 0, 0},
10590 {0x91, 0, 0, 0, 0},
10591 {0x92, 0, 0, 0, 0},
10592 {0x93, 0, 0, 0, 0},
10593 {0x94, 0, 0, 0, 0},
10594 {0x95, 0, 0, 0, 0},
10595 {0x96, 0, 0, 0, 0},
10596 {0x97, 0, 0, 0, 0},
10597 {0x98, 0, 0, 0, 0},
10598 {0x99, 0, 0, 0, 0},
10599 {0x9A, 0, 0, 0, 0},
10600 {0x9B, 0, 0, 0, 0},
10601 {0x9C, 0, 0, 0, 0},
10602 {0x9D, 0, 0, 0, 0},
10603 {0x9E, 0, 0, 0, 0},
10604 {0x9F, 0x6, 0x6, 0, 0},
10605 {0xA0, 0x66, 0x66, 0, 0},
10606 {0xA1, 0x66, 0x66, 0, 0},
10607 {0xA2, 0x66, 0x66, 0, 0},
10608 {0xA3, 0x66, 0x66, 0, 0},
10609 {0xA4, 0x66, 0x66, 0, 0},
10610 {0xA5, 0x66, 0x66, 0, 0},
10611 {0xA6, 0x66, 0x66, 0, 0},
10612 {0xA7, 0x66, 0x66, 0, 0},
10613 {0xA8, 0x66, 0x66, 0, 0},
10614 {0xA9, 0x66, 0x66, 0, 0},
10615 {0xAA, 0x66, 0x66, 0, 0},
10616 {0xAB, 0x66, 0x66, 0, 0},
10617 {0xAC, 0x66, 0x66, 0, 0},
10618 {0xAD, 0x66, 0x66, 0, 0},
10619 {0xAE, 0x66, 0x66, 0, 0},
10620 {0xAF, 0x66, 0x66, 0, 0},
10621 {0xB0, 0x66, 0x66, 0, 0},
10622 {0xB1, 0x66, 0x66, 0, 0},
10623 {0xB2, 0x66, 0x66, 0, 0},
10624 {0xB3, 0xa, 0xa, 0, 0},
10625 {0xB4, 0, 0, 0, 0},
10626 {0xB5, 0, 0, 0, 0},
10627 {0xB6, 0, 0, 0, 0},
10628 {0xFFFF, 0, 0, 0, 0},
10629 };
10630
10631 static struct radio_regs regs_TX_2056_rev8[] = {
10632 {0x02, 0, 0, 0, 0},
10633 {0x03, 0, 0, 0, 0},
10634 {0x04, 0, 0, 0, 0},
10635 {0x05, 0, 0, 0, 0},
10636 {0x06, 0, 0, 0, 0},
10637 {0x07, 0, 0, 0, 0},
10638 {0x08, 0, 0, 0, 0},
10639 {0x09, 0, 0, 0, 0},
10640 {0x0A, 0, 0, 0, 0},
10641 {0x0B, 0, 0, 0, 0},
10642 {0x0C, 0, 0, 0, 0},
10643 {0x0D, 0, 0, 0, 0},
10644 {0x0E, 0, 0, 0, 0},
10645 {0x0F, 0, 0, 0, 0},
10646 {0x10, 0, 0, 0, 0},
10647 {0x11, 0, 0, 0, 0},
10648 {0x12, 0, 0, 0, 0},
10649 {0x13, 0, 0, 0, 0},
10650 {0x14, 0, 0, 0, 0},
10651 {0x15, 0, 0, 0, 0},
10652 {0x16, 0, 0, 0, 0},
10653 {0x17, 0, 0, 0, 0},
10654 {0x18, 0, 0, 0, 0},
10655 {0x19, 0, 0, 0, 0},
10656 {0x1A, 0, 0, 0, 0},
10657 {0x1B, 0, 0, 0, 0},
10658 {0x1C, 0, 0, 0, 0},
10659 {0x1D, 0, 0, 0, 0},
10660 {0x1E, 0, 0, 0, 0},
10661 {0x1F, 0, 0, 0, 0},
10662 {0x20, 0, 0, 0, 0},
10663 {0x21, 0x88, 0x88, 0, 0},
10664 {0x22, 0x88, 0x88, 0, 0},
10665 {0x23, 0x88, 0x88, 0, 0},
10666 {0x24, 0x88, 0x88, 0, 0},
10667 {0x25, 0xc, 0xc, 0, 0},
10668 {0x26, 0, 0, 0, 0},
10669 {0x27, 0x3, 0x3, 0, 0},
10670 {0x28, 0, 0, 0, 0},
10671 {0x29, 0x3, 0x3, 0, 0},
10672 {0x2A, 0x37, 0x37, 0, 0},
10673 {0x2B, 0x3, 0x3, 0, 0},
10674 {0x2C, 0, 0, 0, 0},
10675 {0x2D, 0, 0, 0, 0},
10676 {0x2E, 0x1, 0x1, 0, 0},
10677 {0x2F, 0x1, 0x1, 0, 0},
10678 {0x30, 0, 0, 0, 0},
10679 {0x31, 0, 0, 0, 0},
10680 {0x32, 0, 0, 0, 0},
10681 {0x33, 0x11, 0x11, 0, 0},
10682 {0x34, 0xee, 0xee, 1, 1},
10683 {0x35, 0, 0, 0, 0},
10684 {0x36, 0, 0, 0, 0},
10685 {0x37, 0x3, 0x3, 0, 0},
10686 {0x38, 0x50, 0x50, 1, 1},
10687 {0x39, 0, 0, 0, 0},
10688 {0x3A, 0x50, 0x50, 1, 1},
10689 {0x3B, 0, 0, 0, 0},
10690 {0x3C, 0x6e, 0x6e, 0, 0},
10691 {0x3D, 0xf0, 0xf0, 1, 1},
10692 {0x3E, 0, 0, 0, 0},
10693 {0x3F, 0, 0, 0, 0},
10694 {0x40, 0, 0, 0, 0},
10695 {0x41, 0x3, 0x3, 0, 0},
10696 {0x42, 0x3, 0x3, 0, 0},
10697 {0x43, 0, 0, 0, 0},
10698 {0x44, 0x1e, 0x1e, 0, 0},
10699 {0x45, 0, 0, 0, 0},
10700 {0x46, 0x6e, 0x6e, 0, 0},
10701 {0x47, 0xf0, 0xf0, 1, 1},
10702 {0x48, 0, 0, 0, 0},
10703 {0x49, 0x2, 0x2, 0, 0},
10704 {0x4A, 0xff, 0xff, 1, 1},
10705 {0x4B, 0xc, 0xc, 0, 0},
10706 {0x4C, 0, 0, 0, 0},
10707 {0x4D, 0x38, 0x38, 0, 0},
10708 {0x4E, 0x70, 0x70, 1, 1},
10709 {0x4F, 0x2, 0x2, 0, 0},
10710 {0x50, 0x88, 0x88, 0, 0},
10711 {0x51, 0xc, 0xc, 0, 0},
10712 {0x52, 0, 0, 0, 0},
10713 {0x53, 0x8, 0x8, 0, 0},
10714 {0x54, 0x70, 0x70, 1, 1},
10715 {0x55, 0x2, 0x2, 0, 0},
10716 {0x56, 0xff, 0xff, 1, 1},
10717 {0x57, 0, 0, 0, 0},
10718 {0x58, 0x83, 0x83, 0, 0},
10719 {0x59, 0x77, 0x77, 1, 1},
10720 {0x5A, 0, 0, 0, 0},
10721 {0x5B, 0x2, 0x2, 0, 0},
10722 {0x5C, 0x88, 0x88, 0, 0},
10723 {0x5D, 0, 0, 0, 0},
10724 {0x5E, 0x8, 0x8, 0, 0},
10725 {0x5F, 0x77, 0x77, 1, 1},
10726 {0x60, 0x1, 0x1, 0, 0},
10727 {0x61, 0, 0, 0, 0},
10728 {0x62, 0x7, 0x7, 0, 0},
10729 {0x63, 0, 0, 0, 0},
10730 {0x64, 0x7, 0x7, 0, 0},
10731 {0x65, 0, 0, 0, 0},
10732 {0x66, 0, 0, 0, 0},
10733 {0x67, 0, 0, 1, 1},
10734 {0x68, 0, 0, 0, 0},
10735 {0x69, 0xa, 0xa, 0, 0},
10736 {0x6A, 0, 0, 0, 0},
10737 {0x6B, 0, 0, 0, 0},
10738 {0x6C, 0, 0, 0, 0},
10739 {0x6D, 0, 0, 0, 0},
10740 {0x6E, 0, 0, 0, 0},
10741 {0x6F, 0, 0, 0, 0},
10742 {0x70, 0, 0, 0, 0},
10743 {0x71, 0x2, 0x2, 0, 0},
10744 {0x72, 0, 0, 0, 0},
10745 {0x73, 0, 0, 0, 0},
10746 {0x74, 0xe, 0xe, 0, 0},
10747 {0x75, 0xe, 0xe, 0, 0},
10748 {0x76, 0xe, 0xe, 0, 0},
10749 {0x77, 0x13, 0x13, 0, 0},
10750 {0x78, 0x13, 0x13, 0, 0},
10751 {0x79, 0x1b, 0x1b, 0, 0},
10752 {0x7A, 0x1b, 0x1b, 0, 0},
10753 {0x7B, 0x55, 0x55, 0, 0},
10754 {0x7C, 0x5b, 0x5b, 0, 0},
10755 {0x7D, 0x30, 0x30, 1, 1},
10756 {0x7E, 0, 0, 0, 0},
10757 {0x7F, 0, 0, 0, 0},
10758 {0x80, 0, 0, 0, 0},
10759 {0x81, 0, 0, 0, 0},
10760 {0x82, 0, 0, 0, 0},
10761 {0x83, 0, 0, 0, 0},
10762 {0x84, 0, 0, 0, 0},
10763 {0x85, 0, 0, 0, 0},
10764 {0x86, 0, 0, 0, 0},
10765 {0x87, 0, 0, 0, 0},
10766 {0x88, 0, 0, 0, 0},
10767 {0x89, 0, 0, 0, 0},
10768 {0x8A, 0, 0, 0, 0},
10769 {0x8B, 0, 0, 0, 0},
10770 {0x8C, 0, 0, 0, 0},
10771 {0x8D, 0, 0, 0, 0},
10772 {0x8E, 0, 0, 0, 0},
10773 {0x8F, 0, 0, 0, 0},
10774 {0x90, 0, 0, 0, 0},
10775 {0x91, 0, 0, 0, 0},
10776 {0x92, 0, 0, 0, 0},
10777 {0x93, 0x70, 0x70, 0, 0},
10778 {0x94, 0x70, 0x70, 0, 0},
10779 {0x95, 0x70, 0x70, 0, 0},
10780 {0x96, 0x70, 0x70, 0, 0},
10781 {0x97, 0x70, 0x70, 0, 0},
10782 {0x98, 0x70, 0x70, 0, 0},
10783 {0x99, 0x70, 0x70, 0, 0},
10784 {0x9A, 0x70, 0x70, 0, 0},
10785 {0xFFFF, 0, 0, 0, 0},
10786 };
10787
10788 static struct radio_regs regs_RX_2056_rev8[] = {
10789 {0x02, 0, 0, 0, 0},
10790 {0x03, 0, 0, 0, 0},
10791 {0x04, 0, 0, 0, 0},
10792 {0x05, 0, 0, 0, 0},
10793 {0x06, 0, 0, 0, 0},
10794 {0x07, 0, 0, 0, 0},
10795 {0x08, 0, 0, 0, 0},
10796 {0x09, 0, 0, 0, 0},
10797 {0x0A, 0, 0, 0, 0},
10798 {0x0B, 0, 0, 0, 0},
10799 {0x0C, 0, 0, 0, 0},
10800 {0x0D, 0, 0, 0, 0},
10801 {0x0E, 0, 0, 0, 0},
10802 {0x0F, 0, 0, 0, 0},
10803 {0x10, 0, 0, 0, 0},
10804 {0x11, 0, 0, 0, 0},
10805 {0x12, 0, 0, 0, 0},
10806 {0x13, 0, 0, 0, 0},
10807 {0x14, 0, 0, 0, 0},
10808 {0x15, 0, 0, 0, 0},
10809 {0x16, 0, 0, 0, 0},
10810 {0x17, 0, 0, 0, 0},
10811 {0x18, 0, 0, 0, 0},
10812 {0x19, 0, 0, 0, 0},
10813 {0x1A, 0, 0, 0, 0},
10814 {0x1B, 0, 0, 0, 0},
10815 {0x1C, 0, 0, 0, 0},
10816 {0x1D, 0, 0, 0, 0},
10817 {0x1E, 0, 0, 0, 0},
10818 {0x1F, 0, 0, 0, 0},
10819 {0x20, 0x3, 0x3, 0, 0},
10820 {0x21, 0, 0, 0, 0},
10821 {0x22, 0, 0, 0, 0},
10822 {0x23, 0x90, 0x90, 0, 0},
10823 {0x24, 0x55, 0x55, 0, 0},
10824 {0x25, 0x15, 0x15, 0, 0},
10825 {0x26, 0x5, 0x5, 0, 0},
10826 {0x27, 0x15, 0x15, 0, 0},
10827 {0x28, 0x5, 0x5, 0, 0},
10828 {0x29, 0x20, 0x20, 0, 0},
10829 {0x2A, 0x11, 0x11, 0, 0},
10830 {0x2B, 0x90, 0x90, 0, 0},
10831 {0x2C, 0, 0, 0, 0},
10832 {0x2D, 0x88, 0x88, 0, 0},
10833 {0x2E, 0x32, 0x32, 0, 0},
10834 {0x2F, 0x77, 0x77, 0, 0},
10835 {0x30, 0x17, 0x17, 1, 1},
10836 {0x31, 0xff, 0xff, 1, 1},
10837 {0x32, 0x20, 0x20, 0, 0},
10838 {0x33, 0, 0, 0, 0},
10839 {0x34, 0x88, 0x88, 0, 0},
10840 {0x35, 0x32, 0x32, 0, 0},
10841 {0x36, 0x77, 0x77, 0, 0},
10842 {0x37, 0x17, 0x17, 1, 1},
10843 {0x38, 0xf0, 0xf0, 1, 1},
10844 {0x39, 0x20, 0x20, 0, 0},
10845 {0x3A, 0x8, 0x8, 0, 0},
10846 {0x3B, 0x55, 0x55, 1, 1},
10847 {0x3C, 0, 0, 0, 0},
10848 {0x3D, 0x88, 0x88, 1, 1},
10849 {0x3E, 0, 0, 0, 0},
10850 {0x3F, 0x44, 0x44, 0, 0},
10851 {0x40, 0x7, 0x7, 1, 1},
10852 {0x41, 0x6, 0x6, 0, 0},
10853 {0x42, 0x4, 0x4, 0, 0},
10854 {0x43, 0, 0, 0, 0},
10855 {0x44, 0x8, 0x8, 0, 0},
10856 {0x45, 0x55, 0x55, 1, 1},
10857 {0x46, 0, 0, 0, 0},
10858 {0x47, 0x11, 0x11, 0, 0},
10859 {0x48, 0, 0, 0, 0},
10860 {0x49, 0x44, 0x44, 0, 0},
10861 {0x4A, 0x7, 0x7, 0, 0},
10862 {0x4B, 0x6, 0x6, 0, 0},
10863 {0x4C, 0x4, 0x4, 0, 0},
10864 {0x4D, 0, 0, 0, 0},
10865 {0x4E, 0, 0, 0, 0},
10866 {0x4F, 0x26, 0x26, 1, 1},
10867 {0x50, 0x26, 0x26, 1, 1},
10868 {0x51, 0xf, 0xf, 1, 1},
10869 {0x52, 0xf, 0xf, 1, 1},
10870 {0x53, 0x44, 0x44, 0, 0},
10871 {0x54, 0, 0, 0, 0},
10872 {0x55, 0, 0, 0, 0},
10873 {0x56, 0x8, 0x8, 0, 0},
10874 {0x57, 0x8, 0x8, 0, 0},
10875 {0x58, 0x7, 0x7, 0, 0},
10876 {0x59, 0x22, 0x22, 0, 0},
10877 {0x5A, 0x22, 0x22, 0, 0},
10878 {0x5B, 0x2, 0x2, 0, 0},
10879 {0x5C, 0x4, 0x4, 1, 1},
10880 {0x5D, 0x7, 0x7, 0, 0},
10881 {0x5E, 0x55, 0x55, 0, 0},
10882 {0x5F, 0x23, 0x23, 0, 0},
10883 {0x60, 0x41, 0x41, 0, 0},
10884 {0x61, 0x1, 0x1, 0, 0},
10885 {0x62, 0xa, 0xa, 0, 0},
10886 {0x63, 0, 0, 0, 0},
10887 {0x64, 0, 0, 0, 0},
10888 {0x65, 0, 0, 0, 0},
10889 {0x66, 0, 0, 0, 0},
10890 {0x67, 0, 0, 0, 0},
10891 {0x68, 0, 0, 0, 0},
10892 {0x69, 0, 0, 0, 0},
10893 {0x6A, 0, 0, 0, 0},
10894 {0x6B, 0xc, 0xc, 0, 0},
10895 {0x6C, 0, 0, 0, 0},
10896 {0x6D, 0, 0, 0, 0},
10897 {0x6E, 0, 0, 0, 0},
10898 {0x6F, 0, 0, 0, 0},
10899 {0x70, 0, 0, 0, 0},
10900 {0x71, 0, 0, 0, 0},
10901 {0x72, 0x22, 0x22, 0, 0},
10902 {0x73, 0x22, 0x22, 0, 0},
10903 {0x74, 0, 0, 1, 1},
10904 {0x75, 0xa, 0xa, 0, 0},
10905 {0x76, 0x1, 0x1, 0, 0},
10906 {0x77, 0x22, 0x22, 0, 0},
10907 {0x78, 0x30, 0x30, 0, 0},
10908 {0x79, 0, 0, 0, 0},
10909 {0x7A, 0, 0, 0, 0},
10910 {0x7B, 0, 0, 0, 0},
10911 {0x7C, 0, 0, 0, 0},
10912 {0x7D, 0x5, 0x5, 1, 1},
10913 {0x7E, 0, 0, 0, 0},
10914 {0x7F, 0, 0, 0, 0},
10915 {0x80, 0, 0, 0, 0},
10916 {0x81, 0, 0, 0, 0},
10917 {0x82, 0, 0, 0, 0},
10918 {0x83, 0, 0, 0, 0},
10919 {0x84, 0, 0, 0, 0},
10920 {0x85, 0, 0, 0, 0},
10921 {0x86, 0, 0, 0, 0},
10922 {0x87, 0, 0, 0, 0},
10923 {0x88, 0, 0, 0, 0},
10924 {0x89, 0, 0, 0, 0},
10925 {0x8A, 0, 0, 0, 0},
10926 {0x8B, 0, 0, 0, 0},
10927 {0x8C, 0, 0, 0, 0},
10928 {0x8D, 0, 0, 0, 0},
10929 {0x8E, 0, 0, 0, 0},
10930 {0x8F, 0, 0, 0, 0},
10931 {0x90, 0, 0, 0, 0},
10932 {0x91, 0, 0, 0, 0},
10933 {0x92, 0, 0, 0, 0},
10934 {0x93, 0, 0, 0, 0},
10935 {0x94, 0, 0, 0, 0},
10936 {0xFFFF, 0, 0, 0, 0},
10937 };
10938
10939 static const struct radio_regs regs_SYN_2056_rev11[] = {
10940 {0x02, 0, 0, 0, 0},
10941 {0x03, 0, 0, 0, 0},
10942 {0x04, 0, 0, 0, 0},
10943 {0x05, 0, 0, 0, 0},
10944 {0x06, 0, 0, 0, 0},
10945 {0x07, 0, 0, 0, 0},
10946 {0x08, 0, 0, 0, 0},
10947 {0x09, 0x1, 0x1, 0, 0},
10948 {0x0A, 0, 0, 0, 0},
10949 {0x0B, 0, 0, 0, 0},
10950 {0x0C, 0, 0, 0, 0},
10951 {0x0D, 0, 0, 0, 0},
10952 {0x0E, 0, 0, 0, 0},
10953 {0x0F, 0, 0, 0, 0},
10954 {0x10, 0, 0, 0, 0},
10955 {0x11, 0, 0, 0, 0},
10956 {0x12, 0, 0, 0, 0},
10957 {0x13, 0, 0, 0, 0},
10958 {0x14, 0, 0, 0, 0},
10959 {0x15, 0, 0, 0, 0},
10960 {0x16, 0, 0, 0, 0},
10961 {0x17, 0, 0, 0, 0},
10962 {0x18, 0, 0, 0, 0},
10963 {0x19, 0, 0, 0, 0},
10964 {0x1A, 0, 0, 0, 0},
10965 {0x1B, 0, 0, 0, 0},
10966 {0x1C, 0, 0, 0, 0},
10967 {0x1D, 0, 0, 0, 0},
10968 {0x1E, 0, 0, 0, 0},
10969 {0x1F, 0, 0, 0, 0},
10970 {0x20, 0, 0, 0, 0},
10971 {0x21, 0, 0, 0, 0},
10972 {0x22, 0x60, 0x60, 0, 0},
10973 {0x23, 0x6, 0x6, 0, 0},
10974 {0x24, 0xc, 0xc, 0, 0},
10975 {0x25, 0, 0, 0, 0},
10976 {0x26, 0, 0, 0, 0},
10977 {0x27, 0, 0, 0, 0},
10978 {0x28, 0x1, 0x1, 0, 0},
10979 {0x29, 0, 0, 0, 0},
10980 {0x2A, 0, 0, 0, 0},
10981 {0x2B, 0, 0, 0, 0},
10982 {0x2C, 0, 0, 0, 0},
10983 {0x2D, 0, 0, 0, 0},
10984 {0x2E, 0, 0, 0, 0},
10985 {0x2F, 0x1f, 0x1f, 0, 0},
10986 {0x30, 0x15, 0x15, 0, 0},
10987 {0x31, 0xf, 0xf, 0, 0},
10988 {0x32, 0, 0, 0, 0},
10989 {0x33, 0, 0, 0, 0},
10990 {0x34, 0, 0, 0, 0},
10991 {0x35, 0, 0, 0, 0},
10992 {0x36, 0, 0, 0, 0},
10993 {0x37, 0, 0, 0, 0},
10994 {0x38, 0, 0, 0, 0},
10995 {0x39, 0, 0, 0, 0},
10996 {0x3A, 0, 0, 0, 0},
10997 {0x3B, 0, 0, 0, 0},
10998 {0x3C, 0x13, 0x13, 0, 0},
10999 {0x3D, 0xf, 0xf, 0, 0},
11000 {0x3E, 0x18, 0x18, 0, 0},
11001 {0x3F, 0, 0, 0, 0},
11002 {0x40, 0, 0, 0, 0},
11003 {0x41, 0x20, 0x20, 0, 0},
11004 {0x42, 0x20, 0x20, 0, 0},
11005 {0x43, 0, 0, 0, 0},
11006 {0x44, 0x77, 0x77, 0, 0},
11007 {0x45, 0x7, 0x7, 0, 0},
11008 {0x46, 0x1, 0x1, 0, 0},
11009 {0x47, 0x6, 0x6, 1, 1},
11010 {0x48, 0xf, 0xf, 0, 0},
11011 {0x49, 0x3f, 0x3f, 1, 1},
11012 {0x4A, 0x32, 0x32, 0, 0},
11013 {0x4B, 0x6, 0x6, 1, 1},
11014 {0x4C, 0x6, 0x6, 1, 1},
11015 {0x4D, 0x4, 0x4, 0, 0},
11016 {0x4E, 0x2b, 0x2b, 1, 1},
11017 {0x4F, 0x1, 0x1, 0, 0},
11018 {0x50, 0x1c, 0x1c, 0, 0},
11019 {0x51, 0x2, 0x2, 0, 0},
11020 {0x52, 0x2, 0x2, 0, 0},
11021 {0x53, 0xf7, 0xf7, 1, 1},
11022 {0x54, 0xb4, 0xb4, 0, 0},
11023 {0x55, 0xd2, 0xd2, 0, 0},
11024 {0x56, 0, 0, 0, 0},
11025 {0x57, 0, 0, 0, 0},
11026 {0x58, 0x4, 0x4, 0, 0},
11027 {0x59, 0x96, 0x96, 0, 0},
11028 {0x5A, 0x3e, 0x3e, 0, 0},
11029 {0x5B, 0x3e, 0x3e, 0, 0},
11030 {0x5C, 0x13, 0x13, 0, 0},
11031 {0x5D, 0x2, 0x2, 0, 0},
11032 {0x5E, 0, 0, 0, 0},
11033 {0x5F, 0x7, 0x7, 0, 0},
11034 {0x60, 0x7, 0x7, 1, 1},
11035 {0x61, 0x8, 0x8, 0, 0},
11036 {0x62, 0x3, 0x3, 0, 0},
11037 {0x63, 0, 0, 0, 0},
11038 {0x64, 0, 0, 0, 0},
11039 {0x65, 0, 0, 0, 0},
11040 {0x66, 0, 0, 0, 0},
11041 {0x67, 0, 0, 0, 0},
11042 {0x68, 0x40, 0x40, 0, 0},
11043 {0x69, 0, 0, 0, 0},
11044 {0x6A, 0, 0, 0, 0},
11045 {0x6B, 0, 0, 0, 0},
11046 {0x6C, 0, 0, 0, 0},
11047 {0x6D, 0x1, 0x1, 0, 0},
11048 {0x6E, 0, 0, 0, 0},
11049 {0x6F, 0, 0, 0, 0},
11050 {0x70, 0x60, 0x60, 0, 0},
11051 {0x71, 0x66, 0x66, 0, 0},
11052 {0x72, 0xc, 0xc, 0, 0},
11053 {0x73, 0x66, 0x66, 0, 0},
11054 {0x74, 0x8f, 0x8f, 1, 1},
11055 {0x75, 0, 0, 0, 0},
11056 {0x76, 0xcc, 0xcc, 0, 0},
11057 {0x77, 0x1, 0x1, 0, 0},
11058 {0x78, 0x66, 0x66, 0, 0},
11059 {0x79, 0x66, 0x66, 0, 0},
11060 {0x7A, 0, 0, 0, 0},
11061 {0x7B, 0, 0, 0, 0},
11062 {0x7C, 0, 0, 0, 0},
11063 {0x7D, 0, 0, 0, 0},
11064 {0x7E, 0, 0, 0, 0},
11065 {0x7F, 0, 0, 0, 0},
11066 {0x80, 0, 0, 0, 0},
11067 {0x81, 0, 0, 0, 0},
11068 {0x82, 0, 0, 0, 0},
11069 {0x83, 0, 0, 0, 0},
11070 {0x84, 0, 0, 0, 0},
11071 {0x85, 0xff, 0xff, 0, 0},
11072 {0x86, 0, 0, 0, 0},
11073 {0x87, 0, 0, 0, 0},
11074 {0x88, 0, 0, 0, 0},
11075 {0x89, 0, 0, 0, 0},
11076 {0x8A, 0, 0, 0, 0},
11077 {0x8B, 0, 0, 0, 0},
11078 {0x8C, 0, 0, 0, 0},
11079 {0x8D, 0, 0, 0, 0},
11080 {0x8E, 0, 0, 0, 0},
11081 {0x8F, 0, 0, 0, 0},
11082 {0x90, 0, 0, 0, 0},
11083 {0x91, 0, 0, 0, 0},
11084 {0x92, 0, 0, 0, 0},
11085 {0x93, 0, 0, 0, 0},
11086 {0x94, 0, 0, 0, 0},
11087 {0x95, 0, 0, 0, 0},
11088 {0x96, 0, 0, 0, 0},
11089 {0x97, 0, 0, 0, 0},
11090 {0x98, 0, 0, 0, 0},
11091 {0x99, 0, 0, 0, 0},
11092 {0x9A, 0, 0, 0, 0},
11093 {0x9B, 0, 0, 0, 0},
11094 {0x9C, 0, 0, 0, 0},
11095 {0x9D, 0, 0, 0, 0},
11096 {0x9E, 0, 0, 0, 0},
11097 {0x9F, 0x6, 0x6, 0, 0},
11098 {0xA0, 0x66, 0x66, 0, 0},
11099 {0xA1, 0x66, 0x66, 0, 0},
11100 {0xA2, 0x66, 0x66, 0, 0},
11101 {0xA3, 0x66, 0x66, 0, 0},
11102 {0xA4, 0x66, 0x66, 0, 0},
11103 {0xA5, 0x66, 0x66, 0, 0},
11104 {0xA6, 0x66, 0x66, 0, 0},
11105 {0xA7, 0x66, 0x66, 0, 0},
11106 {0xA8, 0x66, 0x66, 0, 0},
11107 {0xA9, 0x66, 0x66, 0, 0},
11108 {0xAA, 0x66, 0x66, 0, 0},
11109 {0xAB, 0x66, 0x66, 0, 0},
11110 {0xAC, 0x66, 0x66, 0, 0},
11111 {0xAD, 0x66, 0x66, 0, 0},
11112 {0xAE, 0x66, 0x66, 0, 0},
11113 {0xAF, 0x66, 0x66, 0, 0},
11114 {0xB0, 0x66, 0x66, 0, 0},
11115 {0xB1, 0x66, 0x66, 0, 0},
11116 {0xB2, 0x66, 0x66, 0, 0},
11117 {0xB3, 0xa, 0xa, 0, 0},
11118 {0xB4, 0, 0, 0, 0},
11119 {0xB5, 0, 0, 0, 0},
11120 {0xB6, 0, 0, 0, 0},
11121 {0xFFFF, 0, 0, 0, 0},
11122 };
11123
11124 static const struct radio_regs regs_TX_2056_rev11[] = {
11125 {0x02, 0, 0, 0, 0},
11126 {0x03, 0, 0, 0, 0},
11127 {0x04, 0, 0, 0, 0},
11128 {0x05, 0, 0, 0, 0},
11129 {0x06, 0, 0, 0, 0},
11130 {0x07, 0, 0, 0, 0},
11131 {0x08, 0, 0, 0, 0},
11132 {0x09, 0, 0, 0, 0},
11133 {0x0A, 0, 0, 0, 0},
11134 {0x0B, 0, 0, 0, 0},
11135 {0x0C, 0, 0, 0, 0},
11136 {0x0D, 0, 0, 0, 0},
11137 {0x0E, 0, 0, 0, 0},
11138 {0x0F, 0, 0, 0, 0},
11139 {0x10, 0, 0, 0, 0},
11140 {0x11, 0, 0, 0, 0},
11141 {0x12, 0, 0, 0, 0},
11142 {0x13, 0, 0, 0, 0},
11143 {0x14, 0, 0, 0, 0},
11144 {0x15, 0, 0, 0, 0},
11145 {0x16, 0, 0, 0, 0},
11146 {0x17, 0, 0, 0, 0},
11147 {0x18, 0, 0, 0, 0},
11148 {0x19, 0, 0, 0, 0},
11149 {0x1A, 0, 0, 0, 0},
11150 {0x1B, 0, 0, 0, 0},
11151 {0x1C, 0, 0, 0, 0},
11152 {0x1D, 0, 0, 0, 0},
11153 {0x1E, 0, 0, 0, 0},
11154 {0x1F, 0, 0, 0, 0},
11155 {0x20, 0, 0, 0, 0},
11156 {0x21, 0x88, 0x88, 0, 0},
11157 {0x22, 0x88, 0x88, 0, 0},
11158 {0x23, 0x88, 0x88, 0, 0},
11159 {0x24, 0x88, 0x88, 0, 0},
11160 {0x25, 0xc, 0xc, 0, 0},
11161 {0x26, 0, 0, 0, 0},
11162 {0x27, 0x3, 0x3, 0, 0},
11163 {0x28, 0, 0, 0, 0},
11164 {0x29, 0x3, 0x3, 0, 0},
11165 {0x2A, 0x37, 0x37, 0, 0},
11166 {0x2B, 0x3, 0x3, 0, 0},
11167 {0x2C, 0, 0, 0, 0},
11168 {0x2D, 0, 0, 0, 0},
11169 {0x2E, 0x1, 0x1, 0, 0},
11170 {0x2F, 0x1, 0x1, 0, 0},
11171 {0x30, 0, 0, 0, 0},
11172 {0x31, 0, 0, 0, 0},
11173 {0x32, 0, 0, 0, 0},
11174 {0x33, 0x11, 0x11, 0, 0},
11175 {0x34, 0xee, 0xee, 1, 1},
11176 {0x35, 0, 0, 0, 0},
11177 {0x36, 0, 0, 0, 0},
11178 {0x37, 0x3, 0x3, 0, 0},
11179 {0x38, 0x50, 0x50, 1, 1},
11180 {0x39, 0, 0, 0, 0},
11181 {0x3A, 0x50, 0x50, 1, 1},
11182 {0x3B, 0, 0, 0, 0},
11183 {0x3C, 0x6e, 0x6e, 0, 0},
11184 {0x3D, 0xf0, 0xf0, 1, 1},
11185 {0x3E, 0, 0, 0, 0},
11186 {0x3F, 0, 0, 0, 0},
11187 {0x40, 0, 0, 0, 0},
11188 {0x41, 0x3, 0x3, 0, 0},
11189 {0x42, 0x3, 0x3, 0, 0},
11190 {0x43, 0, 0, 0, 0},
11191 {0x44, 0x1e, 0x1e, 0, 0},
11192 {0x45, 0, 0, 0, 0},
11193 {0x46, 0x6e, 0x6e, 0, 0},
11194 {0x47, 0xf0, 0xf0, 1, 1},
11195 {0x48, 0, 0, 0, 0},
11196 {0x49, 0x2, 0x2, 0, 0},
11197 {0x4A, 0xff, 0xff, 1, 1},
11198 {0x4B, 0xc, 0xc, 0, 0},
11199 {0x4C, 0, 0, 0, 0},
11200 {0x4D, 0x38, 0x38, 0, 0},
11201 {0x4E, 0x70, 0x70, 1, 1},
11202 {0x4F, 0x2, 0x2, 0, 0},
11203 {0x50, 0x88, 0x88, 0, 0},
11204 {0x51, 0xc, 0xc, 0, 0},
11205 {0x52, 0, 0, 0, 0},
11206 {0x53, 0x8, 0x8, 0, 0},
11207 {0x54, 0x70, 0x70, 1, 1},
11208 {0x55, 0x2, 0x2, 0, 0},
11209 {0x56, 0xff, 0xff, 1, 1},
11210 {0x57, 0, 0, 0, 0},
11211 {0x58, 0x83, 0x83, 0, 0},
11212 {0x59, 0x77, 0x77, 1, 1},
11213 {0x5A, 0, 0, 0, 0},
11214 {0x5B, 0x2, 0x2, 0, 0},
11215 {0x5C, 0x88, 0x88, 0, 0},
11216 {0x5D, 0, 0, 0, 0},
11217 {0x5E, 0x8, 0x8, 0, 0},
11218 {0x5F, 0x77, 0x77, 1, 1},
11219 {0x60, 0x1, 0x1, 0, 0},
11220 {0x61, 0, 0, 0, 0},
11221 {0x62, 0x7, 0x7, 0, 0},
11222 {0x63, 0, 0, 0, 0},
11223 {0x64, 0x7, 0x7, 0, 0},
11224 {0x65, 0, 0, 0, 0},
11225 {0x66, 0, 0, 0, 0},
11226 {0x67, 0, 0, 1, 1},
11227 {0x68, 0, 0, 0, 0},
11228 {0x69, 0xa, 0xa, 0, 0},
11229 {0x6A, 0, 0, 0, 0},
11230 {0x6B, 0, 0, 0, 0},
11231 {0x6C, 0, 0, 0, 0},
11232 {0x6D, 0, 0, 0, 0},
11233 {0x6E, 0, 0, 0, 0},
11234 {0x6F, 0, 0, 0, 0},
11235 {0x70, 0, 0, 0, 0},
11236 {0x71, 0x2, 0x2, 0, 0},
11237 {0x72, 0, 0, 0, 0},
11238 {0x73, 0, 0, 0, 0},
11239 {0x74, 0xe, 0xe, 0, 0},
11240 {0x75, 0xe, 0xe, 0, 0},
11241 {0x76, 0xe, 0xe, 0, 0},
11242 {0x77, 0x13, 0x13, 0, 0},
11243 {0x78, 0x13, 0x13, 0, 0},
11244 {0x79, 0x1b, 0x1b, 0, 0},
11245 {0x7A, 0x1b, 0x1b, 0, 0},
11246 {0x7B, 0x55, 0x55, 0, 0},
11247 {0x7C, 0x5b, 0x5b, 0, 0},
11248 {0x7D, 0x30, 0x30, 1, 1},
11249 {0x7E, 0, 0, 0, 0},
11250 {0x7F, 0, 0, 0, 0},
11251 {0x80, 0, 0, 0, 0},
11252 {0x81, 0, 0, 0, 0},
11253 {0x82, 0, 0, 0, 0},
11254 {0x83, 0, 0, 0, 0},
11255 {0x84, 0, 0, 0, 0},
11256 {0x85, 0, 0, 0, 0},
11257 {0x86, 0, 0, 0, 0},
11258 {0x87, 0, 0, 0, 0},
11259 {0x88, 0, 0, 0, 0},
11260 {0x89, 0, 0, 0, 0},
11261 {0x8A, 0, 0, 0, 0},
11262 {0x8B, 0, 0, 0, 0},
11263 {0x8C, 0, 0, 0, 0},
11264 {0x8D, 0, 0, 0, 0},
11265 {0x8E, 0, 0, 0, 0},
11266 {0x8F, 0, 0, 0, 0},
11267 {0x90, 0, 0, 0, 0},
11268 {0x91, 0, 0, 0, 0},
11269 {0x92, 0, 0, 0, 0},
11270 {0x93, 0x70, 0x70, 0, 0},
11271 {0x94, 0x70, 0x70, 0, 0},
11272 {0x95, 0x70, 0x70, 0, 0},
11273 {0x96, 0x70, 0x70, 0, 0},
11274 {0x97, 0x70, 0x70, 0, 0},
11275 {0x98, 0x70, 0x70, 0, 0},
11276 {0x99, 0x70, 0x70, 0, 0},
11277 {0x9A, 0x70, 0x70, 0, 0},
11278 {0xFFFF, 0, 0, 0, 0},
11279 };
11280
11281 static const struct radio_regs regs_RX_2056_rev11[] = {
11282 {0x02, 0, 0, 0, 0},
11283 {0x03, 0, 0, 0, 0},
11284 {0x04, 0, 0, 0, 0},
11285 {0x05, 0, 0, 0, 0},
11286 {0x06, 0, 0, 0, 0},
11287 {0x07, 0, 0, 0, 0},
11288 {0x08, 0, 0, 0, 0},
11289 {0x09, 0, 0, 0, 0},
11290 {0x0A, 0, 0, 0, 0},
11291 {0x0B, 0, 0, 0, 0},
11292 {0x0C, 0, 0, 0, 0},
11293 {0x0D, 0, 0, 0, 0},
11294 {0x0E, 0, 0, 0, 0},
11295 {0x0F, 0, 0, 0, 0},
11296 {0x10, 0, 0, 0, 0},
11297 {0x11, 0, 0, 0, 0},
11298 {0x12, 0, 0, 0, 0},
11299 {0x13, 0, 0, 0, 0},
11300 {0x14, 0, 0, 0, 0},
11301 {0x15, 0, 0, 0, 0},
11302 {0x16, 0, 0, 0, 0},
11303 {0x17, 0, 0, 0, 0},
11304 {0x18, 0, 0, 0, 0},
11305 {0x19, 0, 0, 0, 0},
11306 {0x1A, 0, 0, 0, 0},
11307 {0x1B, 0, 0, 0, 0},
11308 {0x1C, 0, 0, 0, 0},
11309 {0x1D, 0, 0, 0, 0},
11310 {0x1E, 0, 0, 0, 0},
11311 {0x1F, 0, 0, 0, 0},
11312 {0x20, 0x3, 0x3, 0, 0},
11313 {0x21, 0, 0, 0, 0},
11314 {0x22, 0, 0, 0, 0},
11315 {0x23, 0x90, 0x90, 0, 0},
11316 {0x24, 0x55, 0x55, 0, 0},
11317 {0x25, 0x15, 0x15, 0, 0},
11318 {0x26, 0x5, 0x5, 0, 0},
11319 {0x27, 0x15, 0x15, 0, 0},
11320 {0x28, 0x5, 0x5, 0, 0},
11321 {0x29, 0x20, 0x20, 0, 0},
11322 {0x2A, 0x11, 0x11, 0, 0},
11323 {0x2B, 0x90, 0x90, 0, 0},
11324 {0x2C, 0, 0, 0, 0},
11325 {0x2D, 0x88, 0x88, 0, 0},
11326 {0x2E, 0x32, 0x32, 0, 0},
11327 {0x2F, 0x77, 0x77, 0, 0},
11328 {0x30, 0x17, 0x17, 1, 1},
11329 {0x31, 0xff, 0xff, 1, 1},
11330 {0x32, 0x20, 0x20, 0, 0},
11331 {0x33, 0, 0, 0, 0},
11332 {0x34, 0x88, 0x88, 0, 0},
11333 {0x35, 0x32, 0x32, 0, 0},
11334 {0x36, 0x77, 0x77, 0, 0},
11335 {0x37, 0x17, 0x17, 1, 1},
11336 {0x38, 0xf0, 0xf0, 1, 1},
11337 {0x39, 0x20, 0x20, 0, 0},
11338 {0x3A, 0x8, 0x8, 0, 0},
11339 {0x3B, 0x55, 0x55, 1, 1},
11340 {0x3C, 0, 0, 0, 0},
11341 {0x3D, 0x88, 0x88, 1, 1},
11342 {0x3E, 0, 0, 0, 0},
11343 {0x3F, 0x44, 0x44, 0, 0},
11344 {0x40, 0x7, 0x7, 1, 1},
11345 {0x41, 0x6, 0x6, 0, 0},
11346 {0x42, 0x4, 0x4, 0, 0},
11347 {0x43, 0, 0, 0, 0},
11348 {0x44, 0x8, 0x8, 0, 0},
11349 {0x45, 0x55, 0x55, 1, 1},
11350 {0x46, 0, 0, 0, 0},
11351 {0x47, 0x11, 0x11, 0, 0},
11352 {0x48, 0, 0, 0, 0},
11353 {0x49, 0x44, 0x44, 0, 0},
11354 {0x4A, 0x7, 0x7, 0, 0},
11355 {0x4B, 0x6, 0x6, 0, 0},
11356 {0x4C, 0x4, 0x4, 0, 0},
11357 {0x4D, 0, 0, 0, 0},
11358 {0x4E, 0, 0, 0, 0},
11359 {0x4F, 0x26, 0x26, 1, 1},
11360 {0x50, 0x26, 0x26, 1, 1},
11361 {0x51, 0xf, 0xf, 1, 1},
11362 {0x52, 0xf, 0xf, 1, 1},
11363 {0x53, 0x44, 0x44, 0, 0},
11364 {0x54, 0, 0, 0, 0},
11365 {0x55, 0, 0, 0, 0},
11366 {0x56, 0x8, 0x8, 0, 0},
11367 {0x57, 0x8, 0x8, 0, 0},
11368 {0x58, 0x7, 0x7, 0, 0},
11369 {0x59, 0x22, 0x22, 0, 0},
11370 {0x5A, 0x22, 0x22, 0, 0},
11371 {0x5B, 0x2, 0x2, 0, 0},
11372 {0x5C, 0x4, 0x4, 1, 1},
11373 {0x5D, 0x7, 0x7, 0, 0},
11374 {0x5E, 0x55, 0x55, 0, 0},
11375 {0x5F, 0x23, 0x23, 0, 0},
11376 {0x60, 0x41, 0x41, 0, 0},
11377 {0x61, 0x1, 0x1, 0, 0},
11378 {0x62, 0xa, 0xa, 0, 0},
11379 {0x63, 0, 0, 0, 0},
11380 {0x64, 0, 0, 0, 0},
11381 {0x65, 0, 0, 0, 0},
11382 {0x66, 0, 0, 0, 0},
11383 {0x67, 0, 0, 0, 0},
11384 {0x68, 0, 0, 0, 0},
11385 {0x69, 0, 0, 0, 0},
11386 {0x6A, 0, 0, 0, 0},
11387 {0x6B, 0xc, 0xc, 0, 0},
11388 {0x6C, 0, 0, 0, 0},
11389 {0x6D, 0, 0, 0, 0},
11390 {0x6E, 0, 0, 0, 0},
11391 {0x6F, 0, 0, 0, 0},
11392 {0x70, 0, 0, 0, 0},
11393 {0x71, 0, 0, 0, 0},
11394 {0x72, 0x22, 0x22, 0, 0},
11395 {0x73, 0x22, 0x22, 0, 0},
11396 {0x74, 0, 0, 1, 1},
11397 {0x75, 0xa, 0xa, 0, 0},
11398 {0x76, 0x1, 0x1, 0, 0},
11399 {0x77, 0x22, 0x22, 0, 0},
11400 {0x78, 0x30, 0x30, 0, 0},
11401 {0x79, 0, 0, 0, 0},
11402 {0x7A, 0, 0, 0, 0},
11403 {0x7B, 0, 0, 0, 0},
11404 {0x7C, 0, 0, 0, 0},
11405 {0x7D, 0x5, 0x5, 1, 1},
11406 {0x7E, 0, 0, 0, 0},
11407 {0x7F, 0, 0, 0, 0},
11408 {0x80, 0, 0, 0, 0},
11409 {0x81, 0, 0, 0, 0},
11410 {0x82, 0, 0, 0, 0},
11411 {0x83, 0, 0, 0, 0},
11412 {0x84, 0, 0, 0, 0},
11413 {0x85, 0, 0, 0, 0},
11414 {0x86, 0, 0, 0, 0},
11415 {0x87, 0, 0, 0, 0},
11416 {0x88, 0, 0, 0, 0},
11417 {0x89, 0, 0, 0, 0},
11418 {0x8A, 0, 0, 0, 0},
11419 {0x8B, 0, 0, 0, 0},
11420 {0x8C, 0, 0, 0, 0},
11421 {0x8D, 0, 0, 0, 0},
11422 {0x8E, 0, 0, 0, 0},
11423 {0x8F, 0, 0, 0, 0},
11424 {0x90, 0, 0, 0, 0},
11425 {0x91, 0, 0, 0, 0},
11426 {0x92, 0, 0, 0, 0},
11427 {0x93, 0, 0, 0, 0},
11428 {0x94, 0, 0, 0, 0},
11429 {0xFFFF, 0, 0, 0, 0},
11430 };
11431
11432 static struct radio_20xx_regs regs_2057_rev4[] = {
11433 {0x00, 0x84, 0},
11434 {0x01, 0, 0},
11435 {0x02, 0x60, 0},
11436 {0x03, 0x1f, 0},
11437 {0x04, 0x4, 0},
11438 {0x05, 0x2, 0},
11439 {0x06, 0x1, 0},
11440 {0x07, 0x1, 0},
11441 {0x08, 0x1, 0},
11442 {0x09, 0x69, 0},
11443 {0x0A, 0x66, 0},
11444 {0x0B, 0x6, 0},
11445 {0x0C, 0x18, 0},
11446 {0x0D, 0x3, 0},
11447 {0x0E, 0x20, 1},
11448 {0x0F, 0x20, 0},
11449 {0x10, 0, 0},
11450 {0x11, 0x7c, 0},
11451 {0x12, 0x42, 0},
11452 {0x13, 0xbd, 0},
11453 {0x14, 0x7, 0},
11454 {0x15, 0xf7, 0},
11455 {0x16, 0x8, 0},
11456 {0x17, 0x17, 0},
11457 {0x18, 0x7, 0},
11458 {0x19, 0, 0},
11459 {0x1A, 0x2, 0},
11460 {0x1B, 0x13, 0},
11461 {0x1C, 0x3e, 0},
11462 {0x1D, 0x3e, 0},
11463 {0x1E, 0x96, 0},
11464 {0x1F, 0x4, 0},
11465 {0x20, 0, 0},
11466 {0x21, 0, 0},
11467 {0x22, 0x17, 0},
11468 {0x23, 0x4, 0},
11469 {0x24, 0x1, 0},
11470 {0x25, 0x6, 0},
11471 {0x26, 0x4, 0},
11472 {0x27, 0xd, 0},
11473 {0x28, 0xd, 0},
11474 {0x29, 0x30, 0},
11475 {0x2A, 0x32, 0},
11476 {0x2B, 0x8, 0},
11477 {0x2C, 0x1c, 0},
11478 {0x2D, 0x2, 0},
11479 {0x2E, 0x4, 0},
11480 {0x2F, 0x7f, 0},
11481 {0x30, 0x27, 0},
11482 {0x31, 0, 1},
11483 {0x32, 0, 1},
11484 {0x33, 0, 1},
11485 {0x34, 0, 0},
11486 {0x35, 0x26, 1},
11487 {0x36, 0x18, 0},
11488 {0x37, 0x7, 0},
11489 {0x38, 0x66, 0},
11490 {0x39, 0x66, 0},
11491 {0x3A, 0x66, 0},
11492 {0x3B, 0x66, 0},
11493 {0x3C, 0xff, 1},
11494 {0x3D, 0xff, 1},
11495 {0x3E, 0xff, 1},
11496 {0x3F, 0xff, 1},
11497 {0x40, 0x16, 0},
11498 {0x41, 0x7, 0},
11499 {0x42, 0x19, 0},
11500 {0x43, 0x7, 0},
11501 {0x44, 0x6, 0},
11502 {0x45, 0x3, 0},
11503 {0x46, 0x1, 0},
11504 {0x47, 0x7, 0},
11505 {0x48, 0x33, 0},
11506 {0x49, 0x5, 0},
11507 {0x4A, 0x77, 0},
11508 {0x4B, 0x66, 0},
11509 {0x4C, 0x66, 0},
11510 {0x4D, 0, 0},
11511 {0x4E, 0x4, 0},
11512 {0x4F, 0xc, 0},
11513 {0x50, 0, 0},
11514 {0x51, 0x75, 0},
11515 {0x56, 0x7, 0},
11516 {0x57, 0, 0},
11517 {0x58, 0, 0},
11518 {0x59, 0xa8, 0},
11519 {0x5A, 0, 0},
11520 {0x5B, 0x1f, 0},
11521 {0x5C, 0x30, 0},
11522 {0x5D, 0x1, 0},
11523 {0x5E, 0x30, 0},
11524 {0x5F, 0x70, 0},
11525 {0x60, 0, 0},
11526 {0x61, 0, 0},
11527 {0x62, 0x33, 1},
11528 {0x63, 0x19, 0},
11529 {0x64, 0x62, 0},
11530 {0x65, 0, 0},
11531 {0x66, 0x11, 0},
11532 {0x69, 0, 0},
11533 {0x6A, 0x7e, 0},
11534 {0x6B, 0x3f, 0},
11535 {0x6C, 0x7f, 0},
11536 {0x6D, 0x78, 0},
11537 {0x6E, 0xc8, 0},
11538 {0x6F, 0x88, 0},
11539 {0x70, 0x8, 0},
11540 {0x71, 0xf, 0},
11541 {0x72, 0xbc, 0},
11542 {0x73, 0x8, 0},
11543 {0x74, 0x60, 0},
11544 {0x75, 0x1e, 0},
11545 {0x76, 0x70, 0},
11546 {0x77, 0, 0},
11547 {0x78, 0, 0},
11548 {0x79, 0, 0},
11549 {0x7A, 0x33, 0},
11550 {0x7B, 0x1e, 0},
11551 {0x7C, 0x62, 0},
11552 {0x7D, 0x11, 0},
11553 {0x80, 0x3c, 0},
11554 {0x81, 0x9c, 0},
11555 {0x82, 0xa, 0},
11556 {0x83, 0x9d, 0},
11557 {0x84, 0xa, 0},
11558 {0x85, 0, 0},
11559 {0x86, 0x40, 0},
11560 {0x87, 0x40, 0},
11561 {0x88, 0x88, 0},
11562 {0x89, 0x10, 0},
11563 {0x8A, 0xf0, 1},
11564 {0x8B, 0x10, 1},
11565 {0x8C, 0xf0, 1},
11566 {0x8D, 0, 0},
11567 {0x8E, 0, 0},
11568 {0x8F, 0x10, 0},
11569 {0x90, 0x55, 0},
11570 {0x91, 0x3f, 1},
11571 {0x92, 0x36, 1},
11572 {0x93, 0, 0},
11573 {0x94, 0, 0},
11574 {0x95, 0, 0},
11575 {0x96, 0x87, 0},
11576 {0x97, 0x11, 0},
11577 {0x98, 0, 0},
11578 {0x99, 0x33, 0},
11579 {0x9A, 0x88, 0},
11580 {0x9B, 0, 0},
11581 {0x9C, 0x87, 0},
11582 {0x9D, 0x11, 0},
11583 {0x9E, 0, 0},
11584 {0x9F, 0x33, 0},
11585 {0xA0, 0x88, 0},
11586 {0xA1, 0xe1, 0},
11587 {0xA2, 0x3f, 0},
11588 {0xA3, 0x44, 0},
11589 {0xA4, 0x8c, 1},
11590 {0xA5, 0x6d, 0},
11591 {0xA6, 0x22, 0},
11592 {0xA7, 0xbe, 0},
11593 {0xA8, 0x55, 1},
11594 {0xA9, 0xc, 0},
11595 {0xAA, 0xc, 0},
11596 {0xAB, 0xaa, 0},
11597 {0xAC, 0x2, 0},
11598 {0xAD, 0, 0},
11599 {0xAE, 0x10, 0},
11600 {0xAF, 0x1, 1},
11601 {0xB0, 0, 0},
11602 {0xB1, 0, 0},
11603 {0xB2, 0x80, 0},
11604 {0xB3, 0x60, 0},
11605 {0xB4, 0x44, 0},
11606 {0xB5, 0x55, 0},
11607 {0xB6, 0x1, 0},
11608 {0xB7, 0x55, 0},
11609 {0xB8, 0x1, 0},
11610 {0xB9, 0x5, 0},
11611 {0xBA, 0x55, 0},
11612 {0xBB, 0x55, 0},
11613 {0xC1, 0, 0},
11614 {0xC2, 0, 0},
11615 {0xC3, 0, 0},
11616 {0xC4, 0, 0},
11617 {0xC5, 0, 0},
11618 {0xC6, 0, 0},
11619 {0xC7, 0, 0},
11620 {0xC8, 0, 0},
11621 {0xC9, 0, 0},
11622 {0xCA, 0, 0},
11623 {0xCB, 0, 0},
11624 {0xCC, 0, 0},
11625 {0xCD, 0, 0},
11626 {0xCE, 0x5e, 0},
11627 {0xCF, 0xc, 0},
11628 {0xD0, 0xc, 0},
11629 {0xD1, 0xc, 0},
11630 {0xD2, 0, 0},
11631 {0xD3, 0x2b, 0},
11632 {0xD4, 0xc, 0},
11633 {0xD5, 0, 0},
11634 {0xD6, 0x75, 0},
11635 {0xDB, 0x7, 0},
11636 {0xDC, 0, 0},
11637 {0xDD, 0, 0},
11638 {0xDE, 0xa8, 0},
11639 {0xDF, 0, 0},
11640 {0xE0, 0x1f, 0},
11641 {0xE1, 0x30, 0},
11642 {0xE2, 0x1, 0},
11643 {0xE3, 0x30, 0},
11644 {0xE4, 0x70, 0},
11645 {0xE5, 0, 0},
11646 {0xE6, 0, 0},
11647 {0xE7, 0x33, 0},
11648 {0xE8, 0x19, 0},
11649 {0xE9, 0x62, 0},
11650 {0xEA, 0, 0},
11651 {0xEB, 0x11, 0},
11652 {0xEE, 0, 0},
11653 {0xEF, 0x7e, 0},
11654 {0xF0, 0x3f, 0},
11655 {0xF1, 0x7f, 0},
11656 {0xF2, 0x78, 0},
11657 {0xF3, 0xc8, 0},
11658 {0xF4, 0x88, 0},
11659 {0xF5, 0x8, 0},
11660 {0xF6, 0xf, 0},
11661 {0xF7, 0xbc, 0},
11662 {0xF8, 0x8, 0},
11663 {0xF9, 0x60, 0},
11664 {0xFA, 0x1e, 0},
11665 {0xFB, 0x70, 0},
11666 {0xFC, 0, 0},
11667 {0xFD, 0, 0},
11668 {0xFE, 0, 0},
11669 {0xFF, 0x33, 0},
11670 {0x100, 0x1e, 0},
11671 {0x101, 0x62, 0},
11672 {0x102, 0x11, 0},
11673 {0x105, 0x3c, 0},
11674 {0x106, 0x9c, 0},
11675 {0x107, 0xa, 0},
11676 {0x108, 0x9d, 0},
11677 {0x109, 0xa, 0},
11678 {0x10A, 0, 0},
11679 {0x10B, 0x40, 0},
11680 {0x10C, 0x40, 0},
11681 {0x10D, 0x88, 0},
11682 {0x10E, 0x10, 0},
11683 {0x10F, 0xf0, 1},
11684 {0x110, 0x10, 1},
11685 {0x111, 0xf0, 1},
11686 {0x112, 0, 0},
11687 {0x113, 0, 0},
11688 {0x114, 0x10, 0},
11689 {0x115, 0x55, 0},
11690 {0x116, 0x3f, 1},
11691 {0x117, 0x36, 1},
11692 {0x118, 0, 0},
11693 {0x119, 0, 0},
11694 {0x11A, 0, 0},
11695 {0x11B, 0x87, 0},
11696 {0x11C, 0x11, 0},
11697 {0x11D, 0, 0},
11698 {0x11E, 0x33, 0},
11699 {0x11F, 0x88, 0},
11700 {0x120, 0, 0},
11701 {0x121, 0x87, 0},
11702 {0x122, 0x11, 0},
11703 {0x123, 0, 0},
11704 {0x124, 0x33, 0},
11705 {0x125, 0x88, 0},
11706 {0x126, 0xe1, 0},
11707 {0x127, 0x3f, 0},
11708 {0x128, 0x44, 0},
11709 {0x129, 0x8c, 1},
11710 {0x12A, 0x6d, 0},
11711 {0x12B, 0x22, 0},
11712 {0x12C, 0xbe, 0},
11713 {0x12D, 0x55, 1},
11714 {0x12E, 0xc, 0},
11715 {0x12F, 0xc, 0},
11716 {0x130, 0xaa, 0},
11717 {0x131, 0x2, 0},
11718 {0x132, 0, 0},
11719 {0x133, 0x10, 0},
11720 {0x134, 0x1, 1},
11721 {0x135, 0, 0},
11722 {0x136, 0, 0},
11723 {0x137, 0x80, 0},
11724 {0x138, 0x60, 0},
11725 {0x139, 0x44, 0},
11726 {0x13A, 0x55, 0},
11727 {0x13B, 0x1, 0},
11728 {0x13C, 0x55, 0},
11729 {0x13D, 0x1, 0},
11730 {0x13E, 0x5, 0},
11731 {0x13F, 0x55, 0},
11732 {0x140, 0x55, 0},
11733 {0x146, 0, 0},
11734 {0x147, 0, 0},
11735 {0x148, 0, 0},
11736 {0x149, 0, 0},
11737 {0x14A, 0, 0},
11738 {0x14B, 0, 0},
11739 {0x14C, 0, 0},
11740 {0x14D, 0, 0},
11741 {0x14E, 0, 0},
11742 {0x14F, 0, 0},
11743 {0x150, 0, 0},
11744 {0x151, 0, 0},
11745 {0x152, 0, 0},
11746 {0x153, 0, 0},
11747 {0x154, 0xc, 0},
11748 {0x155, 0xc, 0},
11749 {0x156, 0xc, 0},
11750 {0x157, 0, 0},
11751 {0x158, 0x2b, 0},
11752 {0x159, 0x84, 0},
11753 {0x15A, 0x15, 0},
11754 {0x15B, 0xf, 0},
11755 {0x15C, 0, 0},
11756 {0x15D, 0, 0},
11757 {0x15E, 0, 1},
11758 {0x15F, 0, 1},
11759 {0x160, 0, 1},
11760 {0x161, 0, 1},
11761 {0x162, 0, 1},
11762 {0x163, 0, 1},
11763 {0x164, 0, 0},
11764 {0x165, 0, 0},
11765 {0x166, 0, 0},
11766 {0x167, 0, 0},
11767 {0x168, 0, 0},
11768 {0x169, 0x2, 1},
11769 {0x16A, 0, 1},
11770 {0x16B, 0, 1},
11771 {0x16C, 0, 1},
11772 {0x16D, 0, 0},
11773 {0x170, 0, 0},
11774 {0x171, 0x77, 0},
11775 {0x172, 0x77, 0},
11776 {0x173, 0x77, 0},
11777 {0x174, 0x77, 0},
11778 {0x175, 0, 0},
11779 {0x176, 0x3, 0},
11780 {0x177, 0x37, 0},
11781 {0x178, 0x3, 0},
11782 {0x179, 0, 0},
11783 {0x17A, 0x21, 0},
11784 {0x17B, 0x21, 0},
11785 {0x17C, 0, 0},
11786 {0x17D, 0xaa, 0},
11787 {0x17E, 0, 0},
11788 {0x17F, 0xaa, 0},
11789 {0x180, 0, 0},
11790 {0x190, 0, 0},
11791 {0x191, 0x77, 0},
11792 {0x192, 0x77, 0},
11793 {0x193, 0x77, 0},
11794 {0x194, 0x77, 0},
11795 {0x195, 0, 0},
11796 {0x196, 0x3, 0},
11797 {0x197, 0x37, 0},
11798 {0x198, 0x3, 0},
11799 {0x199, 0, 0},
11800 {0x19A, 0x21, 0},
11801 {0x19B, 0x21, 0},
11802 {0x19C, 0, 0},
11803 {0x19D, 0xaa, 0},
11804 {0x19E, 0, 0},
11805 {0x19F, 0xaa, 0},
11806 {0x1A0, 0, 0},
11807 {0x1A1, 0x2, 0},
11808 {0x1A2, 0xf, 0},
11809 {0x1A3, 0xf, 0},
11810 {0x1A4, 0, 1},
11811 {0x1A5, 0, 1},
11812 {0x1A6, 0, 1},
11813 {0x1A7, 0x2, 0},
11814 {0x1A8, 0xf, 0},
11815 {0x1A9, 0xf, 0},
11816 {0x1AA, 0, 1},
11817 {0x1AB, 0, 1},
11818 {0x1AC, 0, 1},
11819 {0xFFFF, 0, 0},
11820 };
11821
11822 static struct radio_20xx_regs regs_2057_rev5[] = {
11823 {0x00, 0, 1},
11824 {0x01, 0x57, 1},
11825 {0x02, 0x20, 1},
11826 {0x03, 0x1f, 0},
11827 {0x04, 0x4, 0},
11828 {0x05, 0x2, 0},
11829 {0x06, 0x1, 0},
11830 {0x07, 0x1, 0},
11831 {0x08, 0x1, 0},
11832 {0x09, 0x69, 0},
11833 {0x0A, 0x66, 0},
11834 {0x0B, 0x6, 0},
11835 {0x0C, 0x18, 0},
11836 {0x0D, 0x3, 0},
11837 {0x0E, 0x20, 0},
11838 {0x0F, 0x20, 0},
11839 {0x10, 0, 0},
11840 {0x11, 0x7c, 0},
11841 {0x12, 0x42, 0},
11842 {0x13, 0xbd, 0},
11843 {0x14, 0x7, 0},
11844 {0x15, 0x87, 0},
11845 {0x16, 0x8, 0},
11846 {0x17, 0x17, 0},
11847 {0x18, 0x7, 0},
11848 {0x19, 0, 0},
11849 {0x1A, 0x2, 0},
11850 {0x1B, 0x13, 0},
11851 {0x1C, 0x3e, 0},
11852 {0x1D, 0x3e, 0},
11853 {0x1E, 0x96, 0},
11854 {0x1F, 0x4, 0},
11855 {0x20, 0, 0},
11856 {0x21, 0, 0},
11857 {0x22, 0x17, 0},
11858 {0x23, 0x6, 1},
11859 {0x24, 0x1, 0},
11860 {0x25, 0x6, 0},
11861 {0x26, 0x4, 0},
11862 {0x27, 0xd, 0},
11863 {0x28, 0xd, 0},
11864 {0x29, 0x30, 0},
11865 {0x2A, 0x32, 0},
11866 {0x2B, 0x8, 0},
11867 {0x2C, 0x1c, 0},
11868 {0x2D, 0x2, 0},
11869 {0x2E, 0x4, 0},
11870 {0x2F, 0x7f, 0},
11871 {0x30, 0x27, 0},
11872 {0x31, 0, 1},
11873 {0x32, 0, 1},
11874 {0x33, 0, 1},
11875 {0x34, 0, 0},
11876 {0x35, 0x20, 0},
11877 {0x36, 0x18, 0},
11878 {0x37, 0x7, 0},
11879 {0x38, 0x66, 0},
11880 {0x39, 0x66, 0},
11881 {0x3C, 0xff, 0},
11882 {0x3D, 0xff, 0},
11883 {0x40, 0x16, 0},
11884 {0x41, 0x7, 0},
11885 {0x45, 0x3, 0},
11886 {0x46, 0x1, 0},
11887 {0x47, 0x7, 0},
11888 {0x4B, 0x66, 0},
11889 {0x4C, 0x66, 0},
11890 {0x4D, 0, 0},
11891 {0x4E, 0x4, 0},
11892 {0x4F, 0xc, 0},
11893 {0x50, 0, 0},
11894 {0x51, 0x70, 1},
11895 {0x56, 0x7, 0},
11896 {0x57, 0, 0},
11897 {0x58, 0, 0},
11898 {0x59, 0x88, 1},
11899 {0x5A, 0, 0},
11900 {0x5B, 0x1f, 0},
11901 {0x5C, 0x20, 1},
11902 {0x5D, 0x1, 0},
11903 {0x5E, 0x30, 0},
11904 {0x5F, 0x70, 0},
11905 {0x60, 0, 0},
11906 {0x61, 0, 0},
11907 {0x62, 0x33, 1},
11908 {0x63, 0xf, 1},
11909 {0x64, 0xf, 1},
11910 {0x65, 0, 0},
11911 {0x66, 0x11, 0},
11912 {0x80, 0x3c, 0},
11913 {0x81, 0x1, 1},
11914 {0x82, 0xa, 0},
11915 {0x85, 0, 0},
11916 {0x86, 0x40, 0},
11917 {0x87, 0x40, 0},
11918 {0x88, 0x88, 0},
11919 {0x89, 0x10, 0},
11920 {0x8A, 0xf0, 0},
11921 {0x8B, 0x10, 0},
11922 {0x8C, 0xf0, 0},
11923 {0x8F, 0x10, 0},
11924 {0x90, 0x55, 0},
11925 {0x91, 0x3f, 1},
11926 {0x92, 0x36, 1},
11927 {0x93, 0, 0},
11928 {0x94, 0, 0},
11929 {0x95, 0, 0},
11930 {0x96, 0x87, 0},
11931 {0x97, 0x11, 0},
11932 {0x98, 0, 0},
11933 {0x99, 0x33, 0},
11934 {0x9A, 0x88, 0},
11935 {0xA1, 0x20, 1},
11936 {0xA2, 0x3f, 0},
11937 {0xA3, 0x44, 0},
11938 {0xA4, 0x8c, 0},
11939 {0xA5, 0x6c, 0},
11940 {0xA6, 0x22, 0},
11941 {0xA7, 0xbe, 0},
11942 {0xA8, 0x55, 0},
11943 {0xAA, 0xc, 0},
11944 {0xAB, 0xaa, 0},
11945 {0xAC, 0x2, 0},
11946 {0xAD, 0, 0},
11947 {0xAE, 0x10, 0},
11948 {0xAF, 0x1, 0},
11949 {0xB0, 0, 0},
11950 {0xB1, 0, 0},
11951 {0xB2, 0x80, 0},
11952 {0xB3, 0x60, 0},
11953 {0xB4, 0x44, 0},
11954 {0xB5, 0x55, 0},
11955 {0xB6, 0x1, 0},
11956 {0xB7, 0x55, 0},
11957 {0xB8, 0x1, 0},
11958 {0xB9, 0x5, 0},
11959 {0xBA, 0x55, 0},
11960 {0xBB, 0x55, 0},
11961 {0xC3, 0, 0},
11962 {0xC4, 0, 0},
11963 {0xC5, 0, 0},
11964 {0xC6, 0, 0},
11965 {0xC7, 0, 0},
11966 {0xC8, 0, 0},
11967 {0xC9, 0, 0},
11968 {0xCA, 0, 0},
11969 {0xCB, 0, 0},
11970 {0xCD, 0, 0},
11971 {0xCE, 0x5e, 0},
11972 {0xCF, 0xc, 0},
11973 {0xD0, 0xc, 0},
11974 {0xD1, 0xc, 0},
11975 {0xD2, 0, 0},
11976 {0xD3, 0x2b, 0},
11977 {0xD4, 0xc, 0},
11978 {0xD5, 0, 0},
11979 {0xD6, 0x70, 1},
11980 {0xDB, 0x7, 0},
11981 {0xDC, 0, 0},
11982 {0xDD, 0, 0},
11983 {0xDE, 0x88, 1},
11984 {0xDF, 0, 0},
11985 {0xE0, 0x1f, 0},
11986 {0xE1, 0x20, 1},
11987 {0xE2, 0x1, 0},
11988 {0xE3, 0x30, 0},
11989 {0xE4, 0x70, 0},
11990 {0xE5, 0, 0},
11991 {0xE6, 0, 0},
11992 {0xE7, 0x33, 0},
11993 {0xE8, 0xf, 1},
11994 {0xE9, 0xf, 1},
11995 {0xEA, 0, 0},
11996 {0xEB, 0x11, 0},
11997 {0x105, 0x3c, 0},
11998 {0x106, 0x1, 1},
11999 {0x107, 0xa, 0},
12000 {0x10A, 0, 0},
12001 {0x10B, 0x40, 0},
12002 {0x10C, 0x40, 0},
12003 {0x10D, 0x88, 0},
12004 {0x10E, 0x10, 0},
12005 {0x10F, 0xf0, 0},
12006 {0x110, 0x10, 0},
12007 {0x111, 0xf0, 0},
12008 {0x114, 0x10, 0},
12009 {0x115, 0x55, 0},
12010 {0x116, 0x3f, 1},
12011 {0x117, 0x36, 1},
12012 {0x118, 0, 0},
12013 {0x119, 0, 0},
12014 {0x11A, 0, 0},
12015 {0x11B, 0x87, 0},
12016 {0x11C, 0x11, 0},
12017 {0x11D, 0, 0},
12018 {0x11E, 0x33, 0},
12019 {0x11F, 0x88, 0},
12020 {0x126, 0x20, 1},
12021 {0x127, 0x3f, 0},
12022 {0x128, 0x44, 0},
12023 {0x129, 0x8c, 0},
12024 {0x12A, 0x6c, 0},
12025 {0x12B, 0x22, 0},
12026 {0x12C, 0xbe, 0},
12027 {0x12D, 0x55, 0},
12028 {0x12F, 0xc, 0},
12029 {0x130, 0xaa, 0},
12030 {0x131, 0x2, 0},
12031 {0x132, 0, 0},
12032 {0x133, 0x10, 0},
12033 {0x134, 0x1, 0},
12034 {0x135, 0, 0},
12035 {0x136, 0, 0},
12036 {0x137, 0x80, 0},
12037 {0x138, 0x60, 0},
12038 {0x139, 0x44, 0},
12039 {0x13A, 0x55, 0},
12040 {0x13B, 0x1, 0},
12041 {0x13C, 0x55, 0},
12042 {0x13D, 0x1, 0},
12043 {0x13E, 0x5, 0},
12044 {0x13F, 0x55, 0},
12045 {0x140, 0x55, 0},
12046 {0x148, 0, 0},
12047 {0x149, 0, 0},
12048 {0x14A, 0, 0},
12049 {0x14B, 0, 0},
12050 {0x14C, 0, 0},
12051 {0x14D, 0, 0},
12052 {0x14E, 0, 0},
12053 {0x14F, 0, 0},
12054 {0x150, 0, 0},
12055 {0x154, 0xc, 0},
12056 {0x155, 0xc, 0},
12057 {0x156, 0xc, 0},
12058 {0x157, 0, 0},
12059 {0x158, 0x2b, 0},
12060 {0x159, 0x84, 0},
12061 {0x15A, 0x15, 0},
12062 {0x15B, 0xf, 0},
12063 {0x15C, 0, 0},
12064 {0x15D, 0, 0},
12065 {0x15E, 0, 1},
12066 {0x15F, 0, 1},
12067 {0x160, 0, 1},
12068 {0x161, 0, 1},
12069 {0x162, 0, 1},
12070 {0x163, 0, 1},
12071 {0x164, 0, 0},
12072 {0x165, 0, 0},
12073 {0x166, 0, 0},
12074 {0x167, 0, 0},
12075 {0x168, 0, 0},
12076 {0x169, 0, 0},
12077 {0x16A, 0, 1},
12078 {0x16B, 0, 1},
12079 {0x16C, 0, 1},
12080 {0x16D, 0, 0},
12081 {0x170, 0, 0},
12082 {0x171, 0x77, 0},
12083 {0x172, 0x77, 0},
12084 {0x173, 0x77, 0},
12085 {0x174, 0x77, 0},
12086 {0x175, 0, 0},
12087 {0x176, 0x3, 0},
12088 {0x177, 0x37, 0},
12089 {0x178, 0x3, 0},
12090 {0x179, 0, 0},
12091 {0x17B, 0x21, 0},
12092 {0x17C, 0, 0},
12093 {0x17D, 0xaa, 0},
12094 {0x17E, 0, 0},
12095 {0x190, 0, 0},
12096 {0x191, 0x77, 0},
12097 {0x192, 0x77, 0},
12098 {0x193, 0x77, 0},
12099 {0x194, 0x77, 0},
12100 {0x195, 0, 0},
12101 {0x196, 0x3, 0},
12102 {0x197, 0x37, 0},
12103 {0x198, 0x3, 0},
12104 {0x199, 0, 0},
12105 {0x19B, 0x21, 0},
12106 {0x19C, 0, 0},
12107 {0x19D, 0xaa, 0},
12108 {0x19E, 0, 0},
12109 {0x1A1, 0x2, 0},
12110 {0x1A2, 0xf, 0},
12111 {0x1A3, 0xf, 0},
12112 {0x1A4, 0, 1},
12113 {0x1A5, 0, 1},
12114 {0x1A6, 0, 1},
12115 {0x1A7, 0x2, 0},
12116 {0x1A8, 0xf, 0},
12117 {0x1A9, 0xf, 0},
12118 {0x1AA, 0, 1},
12119 {0x1AB, 0, 1},
12120 {0x1AC, 0, 1},
12121 {0x1AD, 0x84, 0},
12122 {0x1AE, 0x60, 0},
12123 {0x1AF, 0x47, 0},
12124 {0x1B0, 0x47, 0},
12125 {0x1B1, 0, 0},
12126 {0x1B2, 0, 0},
12127 {0x1B3, 0, 0},
12128 {0x1B4, 0, 0},
12129 {0x1B5, 0, 0},
12130 {0x1B6, 0, 0},
12131 {0x1B7, 0xc, 1},
12132 {0x1B8, 0, 0},
12133 {0x1B9, 0, 0},
12134 {0x1BA, 0, 0},
12135 {0x1BB, 0, 0},
12136 {0x1BC, 0, 0},
12137 {0x1BD, 0, 0},
12138 {0x1BE, 0, 0},
12139 {0x1BF, 0, 0},
12140 {0x1C0, 0, 0},
12141 {0x1C1, 0x1, 1},
12142 {0x1C2, 0x80, 1},
12143 {0x1C3, 0, 0},
12144 {0x1C4, 0, 0},
12145 {0x1C5, 0, 0},
12146 {0x1C6, 0, 0},
12147 {0x1C7, 0, 0},
12148 {0x1C8, 0, 0},
12149 {0x1C9, 0, 0},
12150 {0x1CA, 0, 0},
12151 {0xFFFF, 0, 0}
12152 };
12153
12154 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12155 {0x00, 0x15, 1},
12156 {0x01, 0x57, 1},
12157 {0x02, 0x20, 1},
12158 {0x03, 0x1f, 0},
12159 {0x04, 0x4, 0},
12160 {0x05, 0x2, 0},
12161 {0x06, 0x1, 0},
12162 {0x07, 0x1, 0},
12163 {0x08, 0x1, 0},
12164 {0x09, 0x69, 0},
12165 {0x0A, 0x66, 0},
12166 {0x0B, 0x6, 0},
12167 {0x0C, 0x18, 0},
12168 {0x0D, 0x3, 0},
12169 {0x0E, 0x20, 0},
12170 {0x0F, 0x20, 0},
12171 {0x10, 0, 0},
12172 {0x11, 0x7c, 0},
12173 {0x12, 0x42, 0},
12174 {0x13, 0xbd, 0},
12175 {0x14, 0x7, 0},
12176 {0x15, 0x87, 0},
12177 {0x16, 0x8, 0},
12178 {0x17, 0x17, 0},
12179 {0x18, 0x7, 0},
12180 {0x19, 0, 0},
12181 {0x1A, 0x2, 0},
12182 {0x1B, 0x13, 0},
12183 {0x1C, 0x3e, 0},
12184 {0x1D, 0x3e, 0},
12185 {0x1E, 0x96, 0},
12186 {0x1F, 0x4, 0},
12187 {0x20, 0, 0},
12188 {0x21, 0, 0},
12189 {0x22, 0x17, 0},
12190 {0x23, 0x6, 1},
12191 {0x24, 0x1, 0},
12192 {0x25, 0x6, 0},
12193 {0x26, 0x4, 0},
12194 {0x27, 0xd, 0},
12195 {0x28, 0xd, 0},
12196 {0x29, 0x30, 0},
12197 {0x2A, 0x32, 0},
12198 {0x2B, 0x8, 0},
12199 {0x2C, 0x1c, 0},
12200 {0x2D, 0x2, 0},
12201 {0x2E, 0x4, 0},
12202 {0x2F, 0x7f, 0},
12203 {0x30, 0x27, 0},
12204 {0x31, 0, 1},
12205 {0x32, 0, 1},
12206 {0x33, 0, 1},
12207 {0x34, 0, 0},
12208 {0x35, 0x20, 0},
12209 {0x36, 0x18, 0},
12210 {0x37, 0x7, 0},
12211 {0x38, 0x66, 0},
12212 {0x39, 0x66, 0},
12213 {0x3C, 0xff, 0},
12214 {0x3D, 0xff, 0},
12215 {0x40, 0x16, 0},
12216 {0x41, 0x7, 0},
12217 {0x45, 0x3, 0},
12218 {0x46, 0x1, 0},
12219 {0x47, 0x7, 0},
12220 {0x4B, 0x66, 0},
12221 {0x4C, 0x66, 0},
12222 {0x4D, 0, 0},
12223 {0x4E, 0x4, 0},
12224 {0x4F, 0xc, 0},
12225 {0x50, 0, 0},
12226 {0x51, 0x70, 1},
12227 {0x56, 0x7, 0},
12228 {0x57, 0, 0},
12229 {0x58, 0, 0},
12230 {0x59, 0x88, 1},
12231 {0x5A, 0, 0},
12232 {0x5B, 0x1f, 0},
12233 {0x5C, 0x20, 1},
12234 {0x5D, 0x1, 0},
12235 {0x5E, 0x30, 0},
12236 {0x5F, 0x70, 0},
12237 {0x60, 0, 0},
12238 {0x61, 0, 0},
12239 {0x62, 0x33, 1},
12240 {0x63, 0xf, 1},
12241 {0x64, 0xf, 1},
12242 {0x65, 0, 0},
12243 {0x66, 0x11, 0},
12244 {0x80, 0x3c, 0},
12245 {0x81, 0x1, 1},
12246 {0x82, 0xa, 0},
12247 {0x85, 0, 0},
12248 {0x86, 0x40, 0},
12249 {0x87, 0x40, 0},
12250 {0x88, 0x88, 0},
12251 {0x89, 0x10, 0},
12252 {0x8A, 0xf0, 0},
12253 {0x8B, 0x10, 0},
12254 {0x8C, 0xf0, 0},
12255 {0x8F, 0x10, 0},
12256 {0x90, 0x55, 0},
12257 {0x91, 0x3f, 1},
12258 {0x92, 0x36, 1},
12259 {0x93, 0, 0},
12260 {0x94, 0, 0},
12261 {0x95, 0, 0},
12262 {0x96, 0x87, 0},
12263 {0x97, 0x11, 0},
12264 {0x98, 0, 0},
12265 {0x99, 0x33, 0},
12266 {0x9A, 0x88, 0},
12267 {0xA1, 0x20, 1},
12268 {0xA2, 0x3f, 0},
12269 {0xA3, 0x44, 0},
12270 {0xA4, 0x8c, 0},
12271 {0xA5, 0x6c, 0},
12272 {0xA6, 0x22, 0},
12273 {0xA7, 0xbe, 0},
12274 {0xA8, 0x55, 0},
12275 {0xAA, 0xc, 0},
12276 {0xAB, 0xaa, 0},
12277 {0xAC, 0x2, 0},
12278 {0xAD, 0, 0},
12279 {0xAE, 0x10, 0},
12280 {0xAF, 0x1, 0},
12281 {0xB0, 0, 0},
12282 {0xB1, 0, 0},
12283 {0xB2, 0x80, 0},
12284 {0xB3, 0x60, 0},
12285 {0xB4, 0x44, 0},
12286 {0xB5, 0x55, 0},
12287 {0xB6, 0x1, 0},
12288 {0xB7, 0x55, 0},
12289 {0xB8, 0x1, 0},
12290 {0xB9, 0x5, 0},
12291 {0xBA, 0x55, 0},
12292 {0xBB, 0x55, 0},
12293 {0xC3, 0, 0},
12294 {0xC4, 0, 0},
12295 {0xC5, 0, 0},
12296 {0xC6, 0, 0},
12297 {0xC7, 0, 0},
12298 {0xC8, 0, 0},
12299 {0xC9, 0x1, 1},
12300 {0xCA, 0, 0},
12301 {0xCB, 0, 0},
12302 {0xCD, 0, 0},
12303 {0xCE, 0x5e, 0},
12304 {0xCF, 0xc, 0},
12305 {0xD0, 0xc, 0},
12306 {0xD1, 0xc, 0},
12307 {0xD2, 0, 0},
12308 {0xD3, 0x2b, 0},
12309 {0xD4, 0xc, 0},
12310 {0xD5, 0, 0},
12311 {0xD6, 0x70, 1},
12312 {0xDB, 0x7, 0},
12313 {0xDC, 0, 0},
12314 {0xDD, 0, 0},
12315 {0xDE, 0x88, 1},
12316 {0xDF, 0, 0},
12317 {0xE0, 0x1f, 0},
12318 {0xE1, 0x20, 1},
12319 {0xE2, 0x1, 0},
12320 {0xE3, 0x30, 0},
12321 {0xE4, 0x70, 0},
12322 {0xE5, 0, 0},
12323 {0xE6, 0, 0},
12324 {0xE7, 0x33, 0},
12325 {0xE8, 0xf, 1},
12326 {0xE9, 0xf, 1},
12327 {0xEA, 0, 0},
12328 {0xEB, 0x11, 0},
12329 {0x105, 0x3c, 0},
12330 {0x106, 0x1, 1},
12331 {0x107, 0xa, 0},
12332 {0x10A, 0, 0},
12333 {0x10B, 0x40, 0},
12334 {0x10C, 0x40, 0},
12335 {0x10D, 0x88, 0},
12336 {0x10E, 0x10, 0},
12337 {0x10F, 0xf0, 0},
12338 {0x110, 0x10, 0},
12339 {0x111, 0xf0, 0},
12340 {0x114, 0x10, 0},
12341 {0x115, 0x55, 0},
12342 {0x116, 0x3f, 1},
12343 {0x117, 0x36, 1},
12344 {0x118, 0, 0},
12345 {0x119, 0, 0},
12346 {0x11A, 0, 0},
12347 {0x11B, 0x87, 0},
12348 {0x11C, 0x11, 0},
12349 {0x11D, 0, 0},
12350 {0x11E, 0x33, 0},
12351 {0x11F, 0x88, 0},
12352 {0x126, 0x20, 1},
12353 {0x127, 0x3f, 0},
12354 {0x128, 0x44, 0},
12355 {0x129, 0x8c, 0},
12356 {0x12A, 0x6c, 0},
12357 {0x12B, 0x22, 0},
12358 {0x12C, 0xbe, 0},
12359 {0x12D, 0x55, 0},
12360 {0x12F, 0xc, 0},
12361 {0x130, 0xaa, 0},
12362 {0x131, 0x2, 0},
12363 {0x132, 0, 0},
12364 {0x133, 0x10, 0},
12365 {0x134, 0x1, 0},
12366 {0x135, 0, 0},
12367 {0x136, 0, 0},
12368 {0x137, 0x80, 0},
12369 {0x138, 0x60, 0},
12370 {0x139, 0x44, 0},
12371 {0x13A, 0x55, 0},
12372 {0x13B, 0x1, 0},
12373 {0x13C, 0x55, 0},
12374 {0x13D, 0x1, 0},
12375 {0x13E, 0x5, 0},
12376 {0x13F, 0x55, 0},
12377 {0x140, 0x55, 0},
12378 {0x148, 0, 0},
12379 {0x149, 0, 0},
12380 {0x14A, 0, 0},
12381 {0x14B, 0, 0},
12382 {0x14C, 0, 0},
12383 {0x14D, 0, 0},
12384 {0x14E, 0x1, 1},
12385 {0x14F, 0, 0},
12386 {0x150, 0, 0},
12387 {0x154, 0xc, 0},
12388 {0x155, 0xc, 0},
12389 {0x156, 0xc, 0},
12390 {0x157, 0, 0},
12391 {0x158, 0x2b, 0},
12392 {0x159, 0x84, 0},
12393 {0x15A, 0x15, 0},
12394 {0x15B, 0xf, 0},
12395 {0x15C, 0, 0},
12396 {0x15D, 0, 0},
12397 {0x15E, 0, 1},
12398 {0x15F, 0, 1},
12399 {0x160, 0, 1},
12400 {0x161, 0, 1},
12401 {0x162, 0, 1},
12402 {0x163, 0, 1},
12403 {0x164, 0, 0},
12404 {0x165, 0, 0},
12405 {0x166, 0, 0},
12406 {0x167, 0, 0},
12407 {0x168, 0, 0},
12408 {0x169, 0, 0},
12409 {0x16A, 0, 1},
12410 {0x16B, 0, 1},
12411 {0x16C, 0, 1},
12412 {0x16D, 0, 0},
12413 {0x170, 0, 0},
12414 {0x171, 0x77, 0},
12415 {0x172, 0x77, 0},
12416 {0x173, 0x77, 0},
12417 {0x174, 0x77, 0},
12418 {0x175, 0, 0},
12419 {0x176, 0x3, 0},
12420 {0x177, 0x37, 0},
12421 {0x178, 0x3, 0},
12422 {0x179, 0, 0},
12423 {0x17B, 0x21, 0},
12424 {0x17C, 0, 0},
12425 {0x17D, 0xaa, 0},
12426 {0x17E, 0, 0},
12427 {0x190, 0, 0},
12428 {0x191, 0x77, 0},
12429 {0x192, 0x77, 0},
12430 {0x193, 0x77, 0},
12431 {0x194, 0x77, 0},
12432 {0x195, 0, 0},
12433 {0x196, 0x3, 0},
12434 {0x197, 0x37, 0},
12435 {0x198, 0x3, 0},
12436 {0x199, 0, 0},
12437 {0x19B, 0x21, 0},
12438 {0x19C, 0, 0},
12439 {0x19D, 0xaa, 0},
12440 {0x19E, 0, 0},
12441 {0x1A1, 0x2, 0},
12442 {0x1A2, 0xf, 0},
12443 {0x1A3, 0xf, 0},
12444 {0x1A4, 0, 1},
12445 {0x1A5, 0, 1},
12446 {0x1A6, 0, 1},
12447 {0x1A7, 0x2, 0},
12448 {0x1A8, 0xf, 0},
12449 {0x1A9, 0xf, 0},
12450 {0x1AA, 0, 1},
12451 {0x1AB, 0, 1},
12452 {0x1AC, 0, 1},
12453 {0x1AD, 0x84, 0},
12454 {0x1AE, 0x60, 0},
12455 {0x1AF, 0x47, 0},
12456 {0x1B0, 0x47, 0},
12457 {0x1B1, 0, 0},
12458 {0x1B2, 0, 0},
12459 {0x1B3, 0, 0},
12460 {0x1B4, 0, 0},
12461 {0x1B5, 0, 0},
12462 {0x1B6, 0, 0},
12463 {0x1B7, 0xc, 1},
12464 {0x1B8, 0, 0},
12465 {0x1B9, 0, 0},
12466 {0x1BA, 0, 0},
12467 {0x1BB, 0, 0},
12468 {0x1BC, 0, 0},
12469 {0x1BD, 0, 0},
12470 {0x1BE, 0, 0},
12471 {0x1BF, 0, 0},
12472 {0x1C0, 0, 0},
12473 {0x1C1, 0x1, 1},
12474 {0x1C2, 0x80, 1},
12475 {0x1C3, 0, 0},
12476 {0x1C4, 0, 0},
12477 {0x1C5, 0, 0},
12478 {0x1C6, 0, 0},
12479 {0x1C7, 0, 0},
12480 {0x1C8, 0, 0},
12481 {0x1C9, 0, 0},
12482 {0x1CA, 0, 0},
12483 {0xFFFF, 0, 0}
12484 };
12485
12486 static struct radio_20xx_regs regs_2057_rev7[] = {
12487 {0x00, 0, 1},
12488 {0x01, 0x57, 1},
12489 {0x02, 0x20, 1},
12490 {0x03, 0x1f, 0},
12491 {0x04, 0x4, 0},
12492 {0x05, 0x2, 0},
12493 {0x06, 0x1, 0},
12494 {0x07, 0x1, 0},
12495 {0x08, 0x1, 0},
12496 {0x09, 0x69, 0},
12497 {0x0A, 0x66, 0},
12498 {0x0B, 0x6, 0},
12499 {0x0C, 0x18, 0},
12500 {0x0D, 0x3, 0},
12501 {0x0E, 0x20, 0},
12502 {0x0F, 0x20, 0},
12503 {0x10, 0, 0},
12504 {0x11, 0x7c, 0},
12505 {0x12, 0x42, 0},
12506 {0x13, 0xbd, 0},
12507 {0x14, 0x7, 0},
12508 {0x15, 0x87, 0},
12509 {0x16, 0x8, 0},
12510 {0x17, 0x17, 0},
12511 {0x18, 0x7, 0},
12512 {0x19, 0, 0},
12513 {0x1A, 0x2, 0},
12514 {0x1B, 0x13, 0},
12515 {0x1C, 0x3e, 0},
12516 {0x1D, 0x3e, 0},
12517 {0x1E, 0x96, 0},
12518 {0x1F, 0x4, 0},
12519 {0x20, 0, 0},
12520 {0x21, 0, 0},
12521 {0x22, 0x17, 0},
12522 {0x23, 0x6, 0},
12523 {0x24, 0x1, 0},
12524 {0x25, 0x6, 0},
12525 {0x26, 0x4, 0},
12526 {0x27, 0xd, 0},
12527 {0x28, 0xd, 0},
12528 {0x29, 0x30, 0},
12529 {0x2A, 0x32, 0},
12530 {0x2B, 0x8, 0},
12531 {0x2C, 0x1c, 0},
12532 {0x2D, 0x2, 0},
12533 {0x2E, 0x4, 0},
12534 {0x2F, 0x7f, 0},
12535 {0x30, 0x27, 0},
12536 {0x31, 0, 1},
12537 {0x32, 0, 1},
12538 {0x33, 0, 1},
12539 {0x34, 0, 0},
12540 {0x35, 0x20, 0},
12541 {0x36, 0x18, 0},
12542 {0x37, 0x7, 0},
12543 {0x38, 0x66, 0},
12544 {0x39, 0x66, 0},
12545 {0x3A, 0x66, 0},
12546 {0x3B, 0x66, 0},
12547 {0x3C, 0xff, 0},
12548 {0x3D, 0xff, 0},
12549 {0x3E, 0xff, 0},
12550 {0x3F, 0xff, 0},
12551 {0x40, 0x16, 0},
12552 {0x41, 0x7, 0},
12553 {0x42, 0x19, 0},
12554 {0x43, 0x7, 0},
12555 {0x44, 0x6, 0},
12556 {0x45, 0x3, 0},
12557 {0x46, 0x1, 0},
12558 {0x47, 0x7, 0},
12559 {0x48, 0x33, 0},
12560 {0x49, 0x5, 0},
12561 {0x4A, 0x77, 0},
12562 {0x4B, 0x66, 0},
12563 {0x4C, 0x66, 0},
12564 {0x4D, 0, 0},
12565 {0x4E, 0x4, 0},
12566 {0x4F, 0xc, 0},
12567 {0x50, 0, 0},
12568 {0x51, 0x70, 1},
12569 {0x56, 0x7, 0},
12570 {0x57, 0, 0},
12571 {0x58, 0, 0},
12572 {0x59, 0x88, 1},
12573 {0x5A, 0, 0},
12574 {0x5B, 0x1f, 0},
12575 {0x5C, 0x20, 1},
12576 {0x5D, 0x1, 0},
12577 {0x5E, 0x30, 0},
12578 {0x5F, 0x70, 0},
12579 {0x60, 0, 0},
12580 {0x61, 0, 0},
12581 {0x62, 0x33, 1},
12582 {0x63, 0xf, 1},
12583 {0x64, 0x13, 1},
12584 {0x65, 0, 0},
12585 {0x66, 0xee, 1},
12586 {0x69, 0, 0},
12587 {0x6A, 0x7e, 0},
12588 {0x6B, 0x3f, 0},
12589 {0x6C, 0x7f, 0},
12590 {0x6D, 0x78, 0},
12591 {0x6E, 0x58, 1},
12592 {0x6F, 0x88, 0},
12593 {0x70, 0x8, 0},
12594 {0x71, 0xf, 0},
12595 {0x72, 0xbc, 0},
12596 {0x73, 0x8, 0},
12597 {0x74, 0x60, 0},
12598 {0x75, 0x13, 1},
12599 {0x76, 0x70, 0},
12600 {0x77, 0, 0},
12601 {0x78, 0, 0},
12602 {0x79, 0, 0},
12603 {0x7A, 0x33, 0},
12604 {0x7B, 0x13, 1},
12605 {0x7C, 0x14, 1},
12606 {0x7D, 0xee, 1},
12607 {0x80, 0x3c, 0},
12608 {0x81, 0x1, 1},
12609 {0x82, 0xa, 0},
12610 {0x83, 0x9d, 0},
12611 {0x84, 0xa, 0},
12612 {0x85, 0, 0},
12613 {0x86, 0x40, 0},
12614 {0x87, 0x40, 0},
12615 {0x88, 0x88, 0},
12616 {0x89, 0x10, 0},
12617 {0x8A, 0xf0, 0},
12618 {0x8B, 0x10, 0},
12619 {0x8C, 0xf0, 0},
12620 {0x8D, 0, 0},
12621 {0x8E, 0, 0},
12622 {0x8F, 0x10, 0},
12623 {0x90, 0x55, 0},
12624 {0x91, 0x3f, 1},
12625 {0x92, 0x36, 1},
12626 {0x93, 0, 0},
12627 {0x94, 0, 0},
12628 {0x95, 0, 0},
12629 {0x96, 0x87, 0},
12630 {0x97, 0x11, 0},
12631 {0x98, 0, 0},
12632 {0x99, 0x33, 0},
12633 {0x9A, 0x88, 0},
12634 {0x9B, 0, 0},
12635 {0x9C, 0x87, 0},
12636 {0x9D, 0x11, 0},
12637 {0x9E, 0, 0},
12638 {0x9F, 0x33, 0},
12639 {0xA0, 0x88, 0},
12640 {0xA1, 0x20, 1},
12641 {0xA2, 0x3f, 0},
12642 {0xA3, 0x44, 0},
12643 {0xA4, 0x8c, 0},
12644 {0xA5, 0x6c, 0},
12645 {0xA6, 0x22, 0},
12646 {0xA7, 0xbe, 0},
12647 {0xA8, 0x55, 0},
12648 {0xAA, 0xc, 0},
12649 {0xAB, 0xaa, 0},
12650 {0xAC, 0x2, 0},
12651 {0xAD, 0, 0},
12652 {0xAE, 0x10, 0},
12653 {0xAF, 0x1, 0},
12654 {0xB0, 0, 0},
12655 {0xB1, 0, 0},
12656 {0xB2, 0x80, 0},
12657 {0xB3, 0x60, 0},
12658 {0xB4, 0x44, 0},
12659 {0xB5, 0x55, 0},
12660 {0xB6, 0x1, 0},
12661 {0xB7, 0x55, 0},
12662 {0xB8, 0x1, 0},
12663 {0xB9, 0x5, 0},
12664 {0xBA, 0x55, 0},
12665 {0xBB, 0x55, 0},
12666 {0xC1, 0, 0},
12667 {0xC2, 0, 0},
12668 {0xC3, 0, 0},
12669 {0xC4, 0, 0},
12670 {0xC5, 0, 0},
12671 {0xC6, 0, 0},
12672 {0xC7, 0, 0},
12673 {0xC8, 0, 0},
12674 {0xC9, 0, 0},
12675 {0xCA, 0, 0},
12676 {0xCB, 0, 0},
12677 {0xCC, 0, 0},
12678 {0xCD, 0, 0},
12679 {0xCE, 0x5e, 0},
12680 {0xCF, 0xc, 0},
12681 {0xD0, 0xc, 0},
12682 {0xD1, 0xc, 0},
12683 {0xD2, 0, 0},
12684 {0xD3, 0x2b, 0},
12685 {0xD4, 0xc, 0},
12686 {0xD5, 0, 0},
12687 {0xD6, 0x70, 1},
12688 {0xDB, 0x7, 0},
12689 {0xDC, 0, 0},
12690 {0xDD, 0, 0},
12691 {0xDE, 0x88, 1},
12692 {0xDF, 0, 0},
12693 {0xE0, 0x1f, 0},
12694 {0xE1, 0x20, 1},
12695 {0xE2, 0x1, 0},
12696 {0xE3, 0x30, 0},
12697 {0xE4, 0x70, 0},
12698 {0xE5, 0, 0},
12699 {0xE6, 0, 0},
12700 {0xE7, 0x33, 0},
12701 {0xE8, 0xf, 1},
12702 {0xE9, 0x13, 1},
12703 {0xEA, 0, 0},
12704 {0xEB, 0xee, 1},
12705 {0xEE, 0, 0},
12706 {0xEF, 0x7e, 0},
12707 {0xF0, 0x3f, 0},
12708 {0xF1, 0x7f, 0},
12709 {0xF2, 0x78, 0},
12710 {0xF3, 0x58, 1},
12711 {0xF4, 0x88, 0},
12712 {0xF5, 0x8, 0},
12713 {0xF6, 0xf, 0},
12714 {0xF7, 0xbc, 0},
12715 {0xF8, 0x8, 0},
12716 {0xF9, 0x60, 0},
12717 {0xFA, 0x13, 1},
12718 {0xFB, 0x70, 0},
12719 {0xFC, 0, 0},
12720 {0xFD, 0, 0},
12721 {0xFE, 0, 0},
12722 {0xFF, 0x33, 0},
12723 {0x100, 0x13, 1},
12724 {0x101, 0x14, 1},
12725 {0x102, 0xee, 1},
12726 {0x105, 0x3c, 0},
12727 {0x106, 0x1, 1},
12728 {0x107, 0xa, 0},
12729 {0x108, 0x9d, 0},
12730 {0x109, 0xa, 0},
12731 {0x10A, 0, 0},
12732 {0x10B, 0x40, 0},
12733 {0x10C, 0x40, 0},
12734 {0x10D, 0x88, 0},
12735 {0x10E, 0x10, 0},
12736 {0x10F, 0xf0, 0},
12737 {0x110, 0x10, 0},
12738 {0x111, 0xf0, 0},
12739 {0x112, 0, 0},
12740 {0x113, 0, 0},
12741 {0x114, 0x10, 0},
12742 {0x115, 0x55, 0},
12743 {0x116, 0x3f, 1},
12744 {0x117, 0x36, 1},
12745 {0x118, 0, 0},
12746 {0x119, 0, 0},
12747 {0x11A, 0, 0},
12748 {0x11B, 0x87, 0},
12749 {0x11C, 0x11, 0},
12750 {0x11D, 0, 0},
12751 {0x11E, 0x33, 0},
12752 {0x11F, 0x88, 0},
12753 {0x120, 0, 0},
12754 {0x121, 0x87, 0},
12755 {0x122, 0x11, 0},
12756 {0x123, 0, 0},
12757 {0x124, 0x33, 0},
12758 {0x125, 0x88, 0},
12759 {0x126, 0x20, 1},
12760 {0x127, 0x3f, 0},
12761 {0x128, 0x44, 0},
12762 {0x129, 0x8c, 0},
12763 {0x12A, 0x6c, 0},
12764 {0x12B, 0x22, 0},
12765 {0x12C, 0xbe, 0},
12766 {0x12D, 0x55, 0},
12767 {0x12F, 0xc, 0},
12768 {0x130, 0xaa, 0},
12769 {0x131, 0x2, 0},
12770 {0x132, 0, 0},
12771 {0x133, 0x10, 0},
12772 {0x134, 0x1, 0},
12773 {0x135, 0, 0},
12774 {0x136, 0, 0},
12775 {0x137, 0x80, 0},
12776 {0x138, 0x60, 0},
12777 {0x139, 0x44, 0},
12778 {0x13A, 0x55, 0},
12779 {0x13B, 0x1, 0},
12780 {0x13C, 0x55, 0},
12781 {0x13D, 0x1, 0},
12782 {0x13E, 0x5, 0},
12783 {0x13F, 0x55, 0},
12784 {0x140, 0x55, 0},
12785 {0x146, 0, 0},
12786 {0x147, 0, 0},
12787 {0x148, 0, 0},
12788 {0x149, 0, 0},
12789 {0x14A, 0, 0},
12790 {0x14B, 0, 0},
12791 {0x14C, 0, 0},
12792 {0x14D, 0, 0},
12793 {0x14E, 0, 0},
12794 {0x14F, 0, 0},
12795 {0x150, 0, 0},
12796 {0x151, 0, 0},
12797 {0x154, 0xc, 0},
12798 {0x155, 0xc, 0},
12799 {0x156, 0xc, 0},
12800 {0x157, 0, 0},
12801 {0x158, 0x2b, 0},
12802 {0x159, 0x84, 0},
12803 {0x15A, 0x15, 0},
12804 {0x15B, 0xf, 0},
12805 {0x15C, 0, 0},
12806 {0x15D, 0, 0},
12807 {0x15E, 0, 1},
12808 {0x15F, 0, 1},
12809 {0x160, 0, 1},
12810 {0x161, 0, 1},
12811 {0x162, 0, 1},
12812 {0x163, 0, 1},
12813 {0x164, 0, 0},
12814 {0x165, 0, 0},
12815 {0x166, 0, 0},
12816 {0x167, 0, 0},
12817 {0x168, 0, 0},
12818 {0x169, 0, 0},
12819 {0x16A, 0, 1},
12820 {0x16B, 0, 1},
12821 {0x16C, 0, 1},
12822 {0x16D, 0, 0},
12823 {0x170, 0, 0},
12824 {0x171, 0x77, 0},
12825 {0x172, 0x77, 0},
12826 {0x173, 0x77, 0},
12827 {0x174, 0x77, 0},
12828 {0x175, 0, 0},
12829 {0x176, 0x3, 0},
12830 {0x177, 0x37, 0},
12831 {0x178, 0x3, 0},
12832 {0x179, 0, 0},
12833 {0x17A, 0x21, 0},
12834 {0x17B, 0x21, 0},
12835 {0x17C, 0, 0},
12836 {0x17D, 0xaa, 0},
12837 {0x17E, 0, 0},
12838 {0x17F, 0xaa, 0},
12839 {0x180, 0, 0},
12840 {0x190, 0, 0},
12841 {0x191, 0x77, 0},
12842 {0x192, 0x77, 0},
12843 {0x193, 0x77, 0},
12844 {0x194, 0x77, 0},
12845 {0x195, 0, 0},
12846 {0x196, 0x3, 0},
12847 {0x197, 0x37, 0},
12848 {0x198, 0x3, 0},
12849 {0x199, 0, 0},
12850 {0x19A, 0x21, 0},
12851 {0x19B, 0x21, 0},
12852 {0x19C, 0, 0},
12853 {0x19D, 0xaa, 0},
12854 {0x19E, 0, 0},
12855 {0x19F, 0xaa, 0},
12856 {0x1A0, 0, 0},
12857 {0x1A1, 0x2, 0},
12858 {0x1A2, 0xf, 0},
12859 {0x1A3, 0xf, 0},
12860 {0x1A4, 0, 1},
12861 {0x1A5, 0, 1},
12862 {0x1A6, 0, 1},
12863 {0x1A7, 0x2, 0},
12864 {0x1A8, 0xf, 0},
12865 {0x1A9, 0xf, 0},
12866 {0x1AA, 0, 1},
12867 {0x1AB, 0, 1},
12868 {0x1AC, 0, 1},
12869 {0x1AD, 0x84, 0},
12870 {0x1AE, 0x60, 0},
12871 {0x1AF, 0x47, 0},
12872 {0x1B0, 0x47, 0},
12873 {0x1B1, 0, 0},
12874 {0x1B2, 0, 0},
12875 {0x1B3, 0, 0},
12876 {0x1B4, 0, 0},
12877 {0x1B5, 0, 0},
12878 {0x1B6, 0, 0},
12879 {0x1B7, 0x5, 1},
12880 {0x1B8, 0, 0},
12881 {0x1B9, 0, 0},
12882 {0x1BA, 0, 0},
12883 {0x1BB, 0, 0},
12884 {0x1BC, 0, 0},
12885 {0x1BD, 0, 0},
12886 {0x1BE, 0, 0},
12887 {0x1BF, 0, 0},
12888 {0x1C0, 0, 0},
12889 {0x1C1, 0, 0},
12890 {0x1C2, 0xa0, 1},
12891 {0x1C3, 0, 0},
12892 {0x1C4, 0, 0},
12893 {0x1C5, 0, 0},
12894 {0x1C6, 0, 0},
12895 {0x1C7, 0, 0},
12896 {0x1C8, 0, 0},
12897 {0x1C9, 0, 0},
12898 {0x1CA, 0, 0},
12899 {0xFFFF, 0, 0}
12900 };
12901
12902 static struct radio_20xx_regs regs_2057_rev8[] = {
12903 {0x00, 0x8, 1},
12904 {0x01, 0x57, 1},
12905 {0x02, 0x20, 1},
12906 {0x03, 0x1f, 0},
12907 {0x04, 0x4, 0},
12908 {0x05, 0x2, 0},
12909 {0x06, 0x1, 0},
12910 {0x07, 0x1, 0},
12911 {0x08, 0x1, 0},
12912 {0x09, 0x69, 0},
12913 {0x0A, 0x66, 0},
12914 {0x0B, 0x6, 0},
12915 {0x0C, 0x18, 0},
12916 {0x0D, 0x3, 0},
12917 {0x0E, 0x20, 0},
12918 {0x0F, 0x20, 0},
12919 {0x10, 0, 0},
12920 {0x11, 0x7c, 0},
12921 {0x12, 0x42, 0},
12922 {0x13, 0xbd, 0},
12923 {0x14, 0x7, 0},
12924 {0x15, 0x87, 0},
12925 {0x16, 0x8, 0},
12926 {0x17, 0x17, 0},
12927 {0x18, 0x7, 0},
12928 {0x19, 0, 0},
12929 {0x1A, 0x2, 0},
12930 {0x1B, 0x13, 0},
12931 {0x1C, 0x3e, 0},
12932 {0x1D, 0x3e, 0},
12933 {0x1E, 0x96, 0},
12934 {0x1F, 0x4, 0},
12935 {0x20, 0, 0},
12936 {0x21, 0, 0},
12937 {0x22, 0x17, 0},
12938 {0x23, 0x6, 0},
12939 {0x24, 0x1, 0},
12940 {0x25, 0x6, 0},
12941 {0x26, 0x4, 0},
12942 {0x27, 0xd, 0},
12943 {0x28, 0xd, 0},
12944 {0x29, 0x30, 0},
12945 {0x2A, 0x32, 0},
12946 {0x2B, 0x8, 0},
12947 {0x2C, 0x1c, 0},
12948 {0x2D, 0x2, 0},
12949 {0x2E, 0x4, 0},
12950 {0x2F, 0x7f, 0},
12951 {0x30, 0x27, 0},
12952 {0x31, 0, 1},
12953 {0x32, 0, 1},
12954 {0x33, 0, 1},
12955 {0x34, 0, 0},
12956 {0x35, 0x20, 0},
12957 {0x36, 0x18, 0},
12958 {0x37, 0x7, 0},
12959 {0x38, 0x66, 0},
12960 {0x39, 0x66, 0},
12961 {0x3A, 0x66, 0},
12962 {0x3B, 0x66, 0},
12963 {0x3C, 0xff, 0},
12964 {0x3D, 0xff, 0},
12965 {0x3E, 0xff, 0},
12966 {0x3F, 0xff, 0},
12967 {0x40, 0x16, 0},
12968 {0x41, 0x7, 0},
12969 {0x42, 0x19, 0},
12970 {0x43, 0x7, 0},
12971 {0x44, 0x6, 0},
12972 {0x45, 0x3, 0},
12973 {0x46, 0x1, 0},
12974 {0x47, 0x7, 0},
12975 {0x48, 0x33, 0},
12976 {0x49, 0x5, 0},
12977 {0x4A, 0x77, 0},
12978 {0x4B, 0x66, 0},
12979 {0x4C, 0x66, 0},
12980 {0x4D, 0, 0},
12981 {0x4E, 0x4, 0},
12982 {0x4F, 0xc, 0},
12983 {0x50, 0, 0},
12984 {0x51, 0x70, 1},
12985 {0x56, 0x7, 0},
12986 {0x57, 0, 0},
12987 {0x58, 0, 0},
12988 {0x59, 0x88, 1},
12989 {0x5A, 0, 0},
12990 {0x5B, 0x1f, 0},
12991 {0x5C, 0x20, 1},
12992 {0x5D, 0x1, 0},
12993 {0x5E, 0x30, 0},
12994 {0x5F, 0x70, 0},
12995 {0x60, 0, 0},
12996 {0x61, 0, 0},
12997 {0x62, 0x33, 1},
12998 {0x63, 0xf, 1},
12999 {0x64, 0xf, 1},
13000 {0x65, 0, 0},
13001 {0x66, 0x11, 0},
13002 {0x69, 0, 0},
13003 {0x6A, 0x7e, 0},
13004 {0x6B, 0x3f, 0},
13005 {0x6C, 0x7f, 0},
13006 {0x6D, 0x78, 0},
13007 {0x6E, 0x58, 1},
13008 {0x6F, 0x88, 0},
13009 {0x70, 0x8, 0},
13010 {0x71, 0xf, 0},
13011 {0x72, 0xbc, 0},
13012 {0x73, 0x8, 0},
13013 {0x74, 0x60, 0},
13014 {0x75, 0x13, 1},
13015 {0x76, 0x70, 0},
13016 {0x77, 0, 0},
13017 {0x78, 0, 0},
13018 {0x79, 0, 0},
13019 {0x7A, 0x33, 0},
13020 {0x7B, 0x13, 1},
13021 {0x7C, 0xf, 1},
13022 {0x7D, 0xee, 1},
13023 {0x80, 0x3c, 0},
13024 {0x81, 0x1, 1},
13025 {0x82, 0xa, 0},
13026 {0x83, 0x9d, 0},
13027 {0x84, 0xa, 0},
13028 {0x85, 0, 0},
13029 {0x86, 0x40, 0},
13030 {0x87, 0x40, 0},
13031 {0x88, 0x88, 0},
13032 {0x89, 0x10, 0},
13033 {0x8A, 0xf0, 0},
13034 {0x8B, 0x10, 0},
13035 {0x8C, 0xf0, 0},
13036 {0x8D, 0, 0},
13037 {0x8E, 0, 0},
13038 {0x8F, 0x10, 0},
13039 {0x90, 0x55, 0},
13040 {0x91, 0x3f, 1},
13041 {0x92, 0x36, 1},
13042 {0x93, 0, 0},
13043 {0x94, 0, 0},
13044 {0x95, 0, 0},
13045 {0x96, 0x87, 0},
13046 {0x97, 0x11, 0},
13047 {0x98, 0, 0},
13048 {0x99, 0x33, 0},
13049 {0x9A, 0x88, 0},
13050 {0x9B, 0, 0},
13051 {0x9C, 0x87, 0},
13052 {0x9D, 0x11, 0},
13053 {0x9E, 0, 0},
13054 {0x9F, 0x33, 0},
13055 {0xA0, 0x88, 0},
13056 {0xA1, 0x20, 1},
13057 {0xA2, 0x3f, 0},
13058 {0xA3, 0x44, 0},
13059 {0xA4, 0x8c, 0},
13060 {0xA5, 0x6c, 0},
13061 {0xA6, 0x22, 0},
13062 {0xA7, 0xbe, 0},
13063 {0xA8, 0x55, 0},
13064 {0xAA, 0xc, 0},
13065 {0xAB, 0xaa, 0},
13066 {0xAC, 0x2, 0},
13067 {0xAD, 0, 0},
13068 {0xAE, 0x10, 0},
13069 {0xAF, 0x1, 0},
13070 {0xB0, 0, 0},
13071 {0xB1, 0, 0},
13072 {0xB2, 0x80, 0},
13073 {0xB3, 0x60, 0},
13074 {0xB4, 0x44, 0},
13075 {0xB5, 0x55, 0},
13076 {0xB6, 0x1, 0},
13077 {0xB7, 0x55, 0},
13078 {0xB8, 0x1, 0},
13079 {0xB9, 0x5, 0},
13080 {0xBA, 0x55, 0},
13081 {0xBB, 0x55, 0},
13082 {0xC1, 0, 0},
13083 {0xC2, 0, 0},
13084 {0xC3, 0, 0},
13085 {0xC4, 0, 0},
13086 {0xC5, 0, 0},
13087 {0xC6, 0, 0},
13088 {0xC7, 0, 0},
13089 {0xC8, 0, 0},
13090 {0xC9, 0x1, 1},
13091 {0xCA, 0, 0},
13092 {0xCB, 0, 0},
13093 {0xCC, 0, 0},
13094 {0xCD, 0, 0},
13095 {0xCE, 0x5e, 0},
13096 {0xCF, 0xc, 0},
13097 {0xD0, 0xc, 0},
13098 {0xD1, 0xc, 0},
13099 {0xD2, 0, 0},
13100 {0xD3, 0x2b, 0},
13101 {0xD4, 0xc, 0},
13102 {0xD5, 0, 0},
13103 {0xD6, 0x70, 1},
13104 {0xDB, 0x7, 0},
13105 {0xDC, 0, 0},
13106 {0xDD, 0, 0},
13107 {0xDE, 0x88, 1},
13108 {0xDF, 0, 0},
13109 {0xE0, 0x1f, 0},
13110 {0xE1, 0x20, 1},
13111 {0xE2, 0x1, 0},
13112 {0xE3, 0x30, 0},
13113 {0xE4, 0x70, 0},
13114 {0xE5, 0, 0},
13115 {0xE6, 0, 0},
13116 {0xE7, 0x33, 0},
13117 {0xE8, 0xf, 1},
13118 {0xE9, 0xf, 1},
13119 {0xEA, 0, 0},
13120 {0xEB, 0x11, 0},
13121 {0xEE, 0, 0},
13122 {0xEF, 0x7e, 0},
13123 {0xF0, 0x3f, 0},
13124 {0xF1, 0x7f, 0},
13125 {0xF2, 0x78, 0},
13126 {0xF3, 0x58, 1},
13127 {0xF4, 0x88, 0},
13128 {0xF5, 0x8, 0},
13129 {0xF6, 0xf, 0},
13130 {0xF7, 0xbc, 0},
13131 {0xF8, 0x8, 0},
13132 {0xF9, 0x60, 0},
13133 {0xFA, 0x13, 1},
13134 {0xFB, 0x70, 0},
13135 {0xFC, 0, 0},
13136 {0xFD, 0, 0},
13137 {0xFE, 0, 0},
13138 {0xFF, 0x33, 0},
13139 {0x100, 0x13, 1},
13140 {0x101, 0xf, 1},
13141 {0x102, 0xee, 1},
13142 {0x105, 0x3c, 0},
13143 {0x106, 0x1, 1},
13144 {0x107, 0xa, 0},
13145 {0x108, 0x9d, 0},
13146 {0x109, 0xa, 0},
13147 {0x10A, 0, 0},
13148 {0x10B, 0x40, 0},
13149 {0x10C, 0x40, 0},
13150 {0x10D, 0x88, 0},
13151 {0x10E, 0x10, 0},
13152 {0x10F, 0xf0, 0},
13153 {0x110, 0x10, 0},
13154 {0x111, 0xf0, 0},
13155 {0x112, 0, 0},
13156 {0x113, 0, 0},
13157 {0x114, 0x10, 0},
13158 {0x115, 0x55, 0},
13159 {0x116, 0x3f, 1},
13160 {0x117, 0x36, 1},
13161 {0x118, 0, 0},
13162 {0x119, 0, 0},
13163 {0x11A, 0, 0},
13164 {0x11B, 0x87, 0},
13165 {0x11C, 0x11, 0},
13166 {0x11D, 0, 0},
13167 {0x11E, 0x33, 0},
13168 {0x11F, 0x88, 0},
13169 {0x120, 0, 0},
13170 {0x121, 0x87, 0},
13171 {0x122, 0x11, 0},
13172 {0x123, 0, 0},
13173 {0x124, 0x33, 0},
13174 {0x125, 0x88, 0},
13175 {0x126, 0x20, 1},
13176 {0x127, 0x3f, 0},
13177 {0x128, 0x44, 0},
13178 {0x129, 0x8c, 0},
13179 {0x12A, 0x6c, 0},
13180 {0x12B, 0x22, 0},
13181 {0x12C, 0xbe, 0},
13182 {0x12D, 0x55, 0},
13183 {0x12F, 0xc, 0},
13184 {0x130, 0xaa, 0},
13185 {0x131, 0x2, 0},
13186 {0x132, 0, 0},
13187 {0x133, 0x10, 0},
13188 {0x134, 0x1, 0},
13189 {0x135, 0, 0},
13190 {0x136, 0, 0},
13191 {0x137, 0x80, 0},
13192 {0x138, 0x60, 0},
13193 {0x139, 0x44, 0},
13194 {0x13A, 0x55, 0},
13195 {0x13B, 0x1, 0},
13196 {0x13C, 0x55, 0},
13197 {0x13D, 0x1, 0},
13198 {0x13E, 0x5, 0},
13199 {0x13F, 0x55, 0},
13200 {0x140, 0x55, 0},
13201 {0x146, 0, 0},
13202 {0x147, 0, 0},
13203 {0x148, 0, 0},
13204 {0x149, 0, 0},
13205 {0x14A, 0, 0},
13206 {0x14B, 0, 0},
13207 {0x14C, 0, 0},
13208 {0x14D, 0, 0},
13209 {0x14E, 0x1, 1},
13210 {0x14F, 0, 0},
13211 {0x150, 0, 0},
13212 {0x151, 0, 0},
13213 {0x154, 0xc, 0},
13214 {0x155, 0xc, 0},
13215 {0x156, 0xc, 0},
13216 {0x157, 0, 0},
13217 {0x158, 0x2b, 0},
13218 {0x159, 0x84, 0},
13219 {0x15A, 0x15, 0},
13220 {0x15B, 0xf, 0},
13221 {0x15C, 0, 0},
13222 {0x15D, 0, 0},
13223 {0x15E, 0, 1},
13224 {0x15F, 0, 1},
13225 {0x160, 0, 1},
13226 {0x161, 0, 1},
13227 {0x162, 0, 1},
13228 {0x163, 0, 1},
13229 {0x164, 0, 0},
13230 {0x165, 0, 0},
13231 {0x166, 0, 0},
13232 {0x167, 0, 0},
13233 {0x168, 0, 0},
13234 {0x169, 0, 0},
13235 {0x16A, 0, 1},
13236 {0x16B, 0, 1},
13237 {0x16C, 0, 1},
13238 {0x16D, 0, 0},
13239 {0x170, 0, 0},
13240 {0x171, 0x77, 0},
13241 {0x172, 0x77, 0},
13242 {0x173, 0x77, 0},
13243 {0x174, 0x77, 0},
13244 {0x175, 0, 0},
13245 {0x176, 0x3, 0},
13246 {0x177, 0x37, 0},
13247 {0x178, 0x3, 0},
13248 {0x179, 0, 0},
13249 {0x17A, 0x21, 0},
13250 {0x17B, 0x21, 0},
13251 {0x17C, 0, 0},
13252 {0x17D, 0xaa, 0},
13253 {0x17E, 0, 0},
13254 {0x17F, 0xaa, 0},
13255 {0x180, 0, 0},
13256 {0x190, 0, 0},
13257 {0x191, 0x77, 0},
13258 {0x192, 0x77, 0},
13259 {0x193, 0x77, 0},
13260 {0x194, 0x77, 0},
13261 {0x195, 0, 0},
13262 {0x196, 0x3, 0},
13263 {0x197, 0x37, 0},
13264 {0x198, 0x3, 0},
13265 {0x199, 0, 0},
13266 {0x19A, 0x21, 0},
13267 {0x19B, 0x21, 0},
13268 {0x19C, 0, 0},
13269 {0x19D, 0xaa, 0},
13270 {0x19E, 0, 0},
13271 {0x19F, 0xaa, 0},
13272 {0x1A0, 0, 0},
13273 {0x1A1, 0x2, 0},
13274 {0x1A2, 0xf, 0},
13275 {0x1A3, 0xf, 0},
13276 {0x1A4, 0, 1},
13277 {0x1A5, 0, 1},
13278 {0x1A6, 0, 1},
13279 {0x1A7, 0x2, 0},
13280 {0x1A8, 0xf, 0},
13281 {0x1A9, 0xf, 0},
13282 {0x1AA, 0, 1},
13283 {0x1AB, 0, 1},
13284 {0x1AC, 0, 1},
13285 {0x1AD, 0x84, 0},
13286 {0x1AE, 0x60, 0},
13287 {0x1AF, 0x47, 0},
13288 {0x1B0, 0x47, 0},
13289 {0x1B1, 0, 0},
13290 {0x1B2, 0, 0},
13291 {0x1B3, 0, 0},
13292 {0x1B4, 0, 0},
13293 {0x1B5, 0, 0},
13294 {0x1B6, 0, 0},
13295 {0x1B7, 0x5, 1},
13296 {0x1B8, 0, 0},
13297 {0x1B9, 0, 0},
13298 {0x1BA, 0, 0},
13299 {0x1BB, 0, 0},
13300 {0x1BC, 0, 0},
13301 {0x1BD, 0, 0},
13302 {0x1BE, 0, 0},
13303 {0x1BF, 0, 0},
13304 {0x1C0, 0, 0},
13305 {0x1C1, 0, 0},
13306 {0x1C2, 0xa0, 1},
13307 {0x1C3, 0, 0},
13308 {0x1C4, 0, 0},
13309 {0x1C5, 0, 0},
13310 {0x1C6, 0, 0},
13311 {0x1C7, 0, 0},
13312 {0x1C8, 0, 0},
13313 {0x1C9, 0, 0},
13314 {0x1CA, 0, 0},
13315 {0xFFFF, 0, 0}
13316 };
13317
13318 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13319
13320 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13321 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13322
13323 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13324 {
13325 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13326 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13327 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13328 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13329 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13330 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13331 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13332 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13333 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13334 },
13335 {
13336 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13337 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13338 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13339 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13340 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13341 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13342 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13343 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13344 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13345 }
13346 };
13347
13348 static const u32 nphy_tpc_txgain[] = {
13349 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13350 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13351 0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13352 0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13353 0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13354 0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13355 0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13356 0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13357 0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13358 0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13359 0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13360 0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13361 0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13362 0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13363 0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13364 0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13365 0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13366 0x03902942, 0x03902844, 0x03902842, 0x03902744,
13367 0x03902742, 0x03902644, 0x03902642, 0x03902544,
13368 0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13369 0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13370 0x03802842, 0x03802744, 0x03802742, 0x03802644,
13371 0x03802642, 0x03802544, 0x03802542, 0x03802444,
13372 0x03802442, 0x03802344, 0x03802342, 0x03802244,
13373 0x03802242, 0x03802144, 0x03802142, 0x03802044,
13374 0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13375 0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13376 0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13377 0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13378 0x03801842, 0x03801744, 0x03801742, 0x03801644,
13379 0x03801642, 0x03801544, 0x03801542, 0x03801444,
13380 0x03801442, 0x03801344, 0x03801342, 0x00002b00
13381 };
13382
13383 static const u16 nphy_tpc_loscale[] = {
13384 256, 256, 271, 271, 287, 256, 256, 271,
13385 271, 287, 287, 304, 304, 256, 256, 271,
13386 271, 287, 287, 304, 304, 322, 322, 341,
13387 341, 362, 362, 383, 383, 256, 256, 271,
13388 271, 287, 287, 304, 304, 322, 322, 256,
13389 256, 271, 271, 287, 287, 304, 304, 322,
13390 322, 341, 341, 362, 362, 256, 256, 271,
13391 271, 287, 287, 304, 304, 322, 322, 256,
13392 256, 271, 271, 287, 287, 304, 304, 322,
13393 322, 341, 341, 362, 362, 256, 256, 271,
13394 271, 287, 287, 304, 304, 322, 322, 341,
13395 341, 362, 362, 383, 383, 406, 406, 430,
13396 430, 455, 455, 482, 482, 511, 511, 541,
13397 541, 573, 573, 607, 607, 643, 643, 681,
13398 681, 722, 722, 764, 764, 810, 810, 858,
13399 858, 908, 908, 962, 962, 1019, 1019, 256
13400 };
13401
13402 static u32 nphy_tpc_txgain_ipa[] = {
13403 0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13404 0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13405 0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13406 0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13407 0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13408 0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13409 0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13410 0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13411 0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13412 0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13413 0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13414 0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13415 0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13416 0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13417 0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13418 0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13419 0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13420 0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13421 0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13422 0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13423 0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13424 0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13425 0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13426 0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13427 0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13428 0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13429 0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13430 0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13431 0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13432 0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13433 0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13434 0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13435 };
13436
13437 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13438 0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13439 0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13440 0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13441 0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13442 0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13443 0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13444 0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13445 0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13446 0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13447 0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13448 0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13449 0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13450 0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13451 0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13452 0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13453 0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13454 0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13455 0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13456 0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13457 0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13458 0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13459 0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13460 0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13461 0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13462 0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13463 0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13464 0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13465 0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13466 0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13467 0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13468 0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13469 0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13470 };
13471
13472 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13473 0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13474 0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13475 0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13476 0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13477 0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13478 0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13479 0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13480 0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13481 0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13482 0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13483 0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13484 0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13485 0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13486 0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13487 0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13488 0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13489 0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13490 0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13491 0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13492 0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13493 0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13494 0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13495 0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13496 0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13497 0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13498 0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13499 0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13500 0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13501 0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13502 0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13503 0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13504 0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13505 };
13506
13507 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13508 0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13509 0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13510 0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13511 0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13512 0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13513 0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13514 0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13515 0x70470028, 0x70470026, 0x70470024, 0x70470022,
13516 0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13517 0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13518 0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13519 0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13520 0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13521 0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13522 0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13523 0x70170019, 0x70170018, 0x70170016, 0x70170015,
13524 0x70170014, 0x70170013, 0x70170012, 0x70170010,
13525 0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13526 0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13527 0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13528 0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13529 0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13530 0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13531 0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13532 0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13533 0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13534 0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13535 0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13536 0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13537 0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13538 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13539 0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13540 };
13541
13542 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13543 0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13544 0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13545 0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13546 0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13547 0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13548 0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13549 0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13550 0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13551 0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13552 0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13553 0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13554 0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13555 0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13556 0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13557 0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13558 0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13559 0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13560 0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13561 0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13562 0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13563 0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13564 0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13565 0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13566 0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13567 0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13568 0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13569 0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13570 0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13571 0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13572 0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13573 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13574 0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13575 };
13576
13577 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13578 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13579 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13580 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13581 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13582 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13583 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13584 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13585 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13586 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13587 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13588 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13589 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13590 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13591 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13592 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13593 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13594 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13595 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13596 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13597 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13610 };
13611
13612 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13613 0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13614 0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13615 0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13616 0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13617 0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13618 0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13619 0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13620 0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13621 0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13622 0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13623 0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13624 0x30170028, 0x30170026, 0x30170024, 0x30170022,
13625 0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13626 0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13627 0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13628 0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13629 0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13630 0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13631 0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13632 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13635 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13636 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13637 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13638 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13639 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13640 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13641 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13642 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13643 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13644 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13645 };
13646
13647 static u32 nphy_tpc_txgain_ipa_5g[] = {
13648 0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13649 0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13650 0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13651 0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13652 0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13653 0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13654 0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13655 0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13656 0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13657 0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13658 0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13659 0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13660 0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13661 0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13662 0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13663 0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13664 0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13665 0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13666 0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13667 0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13668 0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13669 0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13670 0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13671 0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13672 0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13673 0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13674 0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13675 0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13676 0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13677 0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13678 0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13679 0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13680 };
13681
13682 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13683 0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13684 0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13685 0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13686 0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13687 0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13688 0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13689 0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13690 0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13691 0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13692 0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13693 0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13694 0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13695 0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13696 0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13697 0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13698 0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13699 0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13700 0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13701 0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13702 0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13703 0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13704 0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13705 0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13706 0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13707 0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13708 0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13709 0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13710 0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13711 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13712 0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13713 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13714 0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13715 };
13716
13717 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13718 0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13719 0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13720 0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13721 0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13722 0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13723 0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13724 0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13725 0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13726 0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13727 0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13728 0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13729 0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13730 0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13731 0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13732 0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13733 0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13734 0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13735 0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13736 0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13737 0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13738 0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13739 0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13740 0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13741 0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13742 0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13743 0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13744 0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13745 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13747 0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13748 0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13749 0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13750 };
13751
13752 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13753 -114, -108, -98, -91, -84, -78, -70, -62,
13754 -54, -46, -39, -31, -23, -15, -8, 0
13755 };
13756
13757 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13758 -100, -95, -89, -83, -77, -70, -63, -56,
13759 -48, -41, -33, -25, -19, -12, -6, 0
13760 };
13761
13762 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13763 -159, -113, -86, -72, -62, -54, -48, -43,
13764 -39, -35, -31, -28, -25, -23, -20, -18,
13765 -17, -15, -13, -11, -10, -8, -7, -6,
13766 -5, -4, -3, -3, -2, -1, -1, 0
13767 };
13768
13769 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13770 -109, -109, -82, -68, -58, -50, -44, -39,
13771 -35, -31, -28, -26, -23, -21, -19, -17,
13772 -16, -14, -13, -11, -10, -9, -8, -7,
13773 -5, -5, -4, -3, -2, -1, -1, 0
13774 };
13775
13776 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13777 -122, -122, -95, -80, -69, -61, -54, -49,
13778 -43, -39, -35, -32, -28, -26, -23, -21,
13779 -18, -16, -15, -13, -11, -10, -8, -7,
13780 -6, -5, -4, -3, -2, -1, -1, 0
13781 };
13782
13783 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13784 -107, -101, -92, -85, -78, -71, -62, -55,
13785 -47, -39, -32, -24, -19, -12, -6, 0
13786 };
13787
13788 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13789 -110, -104, -95, -88, -81, -74, -66, -58,
13790 -50, -44, -36, -28, -23, -15, -8, 0
13791 };
13792
13793 static u8 pad_gain_codes_used_2057rev5[] = {
13794 20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13795 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13796 };
13797
13798 static u8 pad_gain_codes_used_2057rev7[] = {
13799 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13800 5, 4, 3, 2, 1
13801 };
13802
13803 static u8 pad_all_gain_codes_2057[] = {
13804 31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13805 21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13806 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13807 1, 0
13808 };
13809
13810 static u8 pga_all_gain_codes_2057[] = {
13811 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13812 };
13813
13814 static u32 nphy_papd_scaltbl[] = {
13815 0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13816 0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13817 0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13818 0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13819 0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13820 0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13821 0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13822 0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13823 0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13824 0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13825 0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13826 0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13827 0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13828 0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13829 0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13830 0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13831 };
13832
13833 static u32 nphy_tpc_txgain_rev3[] = {
13834 0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13835 0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13836 0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13837 0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13838 0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13839 0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13840 0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13841 0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13842 0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13843 0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13844 0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13845 0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13846 0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13847 0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13848 0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13849 0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13850 0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13851 0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13852 0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13853 0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13854 0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13855 0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13856 0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13857 0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13858 0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13859 0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13860 0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13861 0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13862 0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13863 0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13864 0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13865 0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13866 };
13867
13868 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13869 0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13870 0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13871 0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13872 0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13873 0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13874 0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13875 0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13876 0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13877 0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13878 0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13879 0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13880 0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13881 0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13882 0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13883 0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13884 0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13885 0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13886 0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13887 0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13888 0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13889 0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13890 0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13891 0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13892 0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13893 0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13894 0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13895 0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13896 0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13897 0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13898 0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13899 0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13900 0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13901 };
13902
13903 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13904 0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13905 0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13906 0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13907 0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13908 0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13909 0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13910 0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13911 0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13912 0x80290031, 0x80210039, 0x80210036, 0x80210033,
13913 0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13914 0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13915 0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13916 0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13917 0x80110027, 0x80110024, 0x80110022, 0x80110020,
13918 0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13919 0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13920 0x80090029, 0x80090027, 0x80090025, 0x80090023,
13921 0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13922 0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13923 0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13924 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13933 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13934 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13935 0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13936 };
13937
13938 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13939 0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13940 0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13941 0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13942 0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13943 0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13944 0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13945 0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13946 0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13947 0x10290031, 0x10210039, 0x10210036, 0x10210033,
13948 0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13949 0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13950 0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13951 0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13952 0x10110027, 0x10110024, 0x10110022, 0x10110020,
13953 0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13954 0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13955 0x10090029, 0x10090027, 0x10090025, 0x10090023,
13956 0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13957 0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13958 0x10090015, 0x10090013, 0x10090012, 0x10090011,
13959 0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13960 0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13961 0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13962 0x10090008, 0x10090008, 0x10090007, 0x10090007,
13963 0x10090007, 0x10090006, 0x10090006, 0x10090005,
13964 0x10090005, 0x10090005, 0x10090005, 0x10090004,
13965 0x10090004, 0x10090004, 0x10090004, 0x10090003,
13966 0x10090003, 0x10090003, 0x10090003, 0x10090003,
13967 0x10090003, 0x10090002, 0x10090002, 0x10090002,
13968 0x10090002, 0x10090002, 0x10090002, 0x10090002,
13969 0x10090002, 0x10090002, 0x10090001, 0x10090001,
13970 0x10090001, 0x10090001, 0x10090001, 0x10090001
13971 };
13972
13973 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13974 0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13975 0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13976 0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13977 0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13978 0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13979 0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13980 0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13981 0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13982 0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13983 0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13984 0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13985 0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13986 0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13987 0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13988 0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13989 0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13990 0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13991 0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13992 0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13993 0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13994 0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13995 0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13996 0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13997 0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13998 0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13999 0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
14000 0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
14001 0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14002 0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14003 0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14004 0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14005 0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14006 };
14007
14008 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14009 0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14010 0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14011 0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14012 0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14013 0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14014 0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14015 0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14016 0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14017 0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14018 0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14019 0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14020 0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14021 0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14022 0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14023 0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14024 0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14025 0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14026 0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14027 0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14028 0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14029 0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14030 0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14031 0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14032 0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14033 0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14034 0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14035 0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14036 0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14037 0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14038 0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14039 0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14040 0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14041 };
14042
14043 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14044 0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14045 0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14046 0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14047 0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14048 0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14049 0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14050 0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14051 0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14052 0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14053 0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14054 0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14055 0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14056 0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14057 0x09620039, 0x09620037, 0x09620035, 0x09620033,
14058 0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14059 0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14060 0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14061 0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14062 0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14063 0x06620039, 0x06620037, 0x06620035, 0x06620033,
14064 0x05620046, 0x05620044, 0x05620042, 0x05620040,
14065 0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14066 0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14067 0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14068 0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14069 0x03620038, 0x03620037, 0x03620035, 0x03620033,
14070 0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14071 0x02620046, 0x02620044, 0x02620043, 0x02620042,
14072 0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14073 0x01620043, 0x01620042, 0x01620041, 0x01620040,
14074 0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14075 0x0062003b, 0x00620039, 0x00620037, 0x00620035
14076 };
14077
14078 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14079 0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14080 0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14081 0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14082 0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14083 0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14084 0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14085 0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14086 0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14087 0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14088 0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14089 0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14090 0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14091 0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14092 0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14093 0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14094 0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14095 0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14096 0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14097 0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14098 0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14099 0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14100 0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14101 0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14102 0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14103 0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14104 0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14105 0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14106 0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14107 0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14108 0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14109 0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14110 0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14111 };
14112
14113 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14114 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14115 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14116 0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14117 };
14118 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14119 0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14120 };
14121
14122 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14123 {
14124 struct brcms_phy *pi = (struct brcms_phy *) pih;
14125 u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14126
14127 if (NREV_GE(pi->pubpi.phy_rev, 16))
14128 return true;
14129
14130 phybist0 = read_phy_reg(pi, 0x0e);
14131 phybist1 = read_phy_reg(pi, 0x0f);
14132 phybist2 = read_phy_reg(pi, 0xea);
14133 phybist3 = read_phy_reg(pi, 0xeb);
14134 phybist4 = read_phy_reg(pi, 0x156);
14135
14136 if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14137 (phybist3 == 0) && (phybist4 == 0))
14138 return true;
14139
14140 return false;
14141 }
14142
14143 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14144 {
14145 u16 addr, val;
14146
14147 val = 0x1e1f;
14148 for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14149 addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14150 write_phy_reg(pi, addr, val);
14151 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14152 val = 0x3e3f;
14153 else
14154 val -= 0x0202;
14155 }
14156
14157 write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14158 }
14159
14160 void
14161 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14162 u32 width, const void *data)
14163 {
14164 struct phytbl_info tbl;
14165
14166 tbl.tbl_id = id;
14167 tbl.tbl_len = len;
14168 tbl.tbl_offset = offset;
14169 tbl.tbl_width = width;
14170 tbl.tbl_ptr = data;
14171 wlc_phy_write_table_nphy(pi, &tbl);
14172 }
14173
14174 void
14175 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14176 u32 width, void *data)
14177 {
14178 struct phytbl_info tbl;
14179
14180 tbl.tbl_id = id;
14181 tbl.tbl_len = len;
14182 tbl.tbl_offset = offset;
14183 tbl.tbl_width = width;
14184 tbl.tbl_ptr = data;
14185 wlc_phy_read_table_nphy(pi, &tbl);
14186 }
14187
14188 static void
14189 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14190 {
14191 uint idx;
14192
14193 if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14194 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14195 wlc_phy_write_table_nphy(pi,
14196 &mimophytbl_info_rev16[idx]);
14197 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14198 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14199 wlc_phy_write_table_nphy(pi,
14200 &mimophytbl_info_rev7[idx]);
14201 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14202 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14203 wlc_phy_write_table_nphy(pi,
14204 &mimophytbl_info_rev3[idx]);
14205 } else {
14206 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14207 wlc_phy_write_table_nphy(pi,
14208 &mimophytbl_info_rev0[idx]);
14209 }
14210 }
14211
14212 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14213 {
14214 uint idx = 0;
14215 u8 antswctrllut;
14216
14217 if (pi->phy_init_por)
14218 wlc_phy_static_table_download_nphy(pi);
14219
14220 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14221
14222 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14223 pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14224 antswctrllut;
14225
14226 switch (antswctrllut) {
14227 case 0:
14228
14229 break;
14230
14231 case 1:
14232
14233 if (pi->aa2g == 7)
14234 wlc_phy_table_write_nphy(
14235 pi,
14236 NPHY_TBL_ID_ANTSWCTRLLUT,
14237 2, 0x21, 8,
14238 &ant_sw_ctrl_tbl_rev8_2o3[0]);
14239 else
14240 wlc_phy_table_write_nphy(
14241 pi,
14242 NPHY_TBL_ID_ANTSWCTRLLUT,
14243 2, 0x21, 8,
14244 &ant_sw_ctrl_tbl_rev8
14245 [0]);
14246
14247 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248 2, 0x25, 8,
14249 &ant_sw_ctrl_tbl_rev8[2]);
14250 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14251 2, 0x29, 8,
14252 &ant_sw_ctrl_tbl_rev8[4]);
14253 break;
14254
14255 case 2:
14256
14257 wlc_phy_table_write_nphy(
14258 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14259 2, 0x1, 8,
14260 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14261 wlc_phy_table_write_nphy(
14262 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14263 2, 0x5, 8,
14264 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14265 wlc_phy_table_write_nphy(
14266 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14267 2, 0x9, 8,
14268 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14269
14270 wlc_phy_table_write_nphy(
14271 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14272 2, 0x21, 8,
14273 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14274 wlc_phy_table_write_nphy(
14275 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14276 2, 0x25, 8,
14277 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14278 wlc_phy_table_write_nphy(
14279 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14280 2, 0x29, 8,
14281 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14282 break;
14283
14284 default:
14285 break;
14286 }
14287
14288 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14289 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14290
14291 if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14292 antswctrllut =
14293 CHSPEC_IS2G(pi->radio_chanspec) ?
14294 pi->srom_fem2g.antswctrllut :
14295 pi->srom_fem5g.antswctrllut;
14296 switch (antswctrllut) {
14297 case 0:
14298 wlc_phy_write_table_nphy(
14299 pi,
14300 &mimophytbl_info_rev3_volatile
14301 [idx]);
14302 break;
14303 case 1:
14304 wlc_phy_write_table_nphy(
14305 pi,
14306 &mimophytbl_info_rev3_volatile1
14307 [idx]);
14308 break;
14309 case 2:
14310 wlc_phy_write_table_nphy(
14311 pi,
14312 &mimophytbl_info_rev3_volatile2
14313 [idx]);
14314 break;
14315 case 3:
14316 wlc_phy_write_table_nphy(
14317 pi,
14318 &mimophytbl_info_rev3_volatile3
14319 [idx]);
14320 break;
14321 default:
14322 break;
14323 }
14324 } else {
14325 wlc_phy_write_table_nphy(
14326 pi,
14327 &mimophytbl_info_rev3_volatile[idx]);
14328 }
14329 }
14330 } else {
14331 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14332 wlc_phy_write_table_nphy(pi,
14333 &mimophytbl_info_rev0_volatile
14334 [idx]);
14335 }
14336 }
14337
14338 static void
14339 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14340 {
14341 write_phy_reg(pi, 0x77, holdoff);
14342 write_phy_reg(pi, 0xb4, delay);
14343 }
14344
14345 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14346 {
14347 u16 holdoff, delay;
14348
14349 if (rifs) {
14350
14351 holdoff = 0x10;
14352 delay = 0x258;
14353 } else {
14354
14355 holdoff = 0x15;
14356 delay = 0x320;
14357 }
14358
14359 wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14360
14361 if (pi && pi->sh && (pi->sh->_rifs_phy != rifs))
14362 pi->sh->_rifs_phy = rifs;
14363 }
14364
14365 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14366 {
14367
14368 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14369 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14370 pi->phy_5g_pwrgain = true;
14371 return;
14372 }
14373
14374 pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14375 pi->phy_5g_pwrgain = false;
14376
14377 if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14378 NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14379 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14380 else if ((pi->sh->sromrev >= 4)
14381 && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14382 pi->phy_5g_pwrgain = true;
14383 }
14384
14385 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14386 {
14387 u16 bw40po, cddpo, stbcpo, bwduppo;
14388 uint band_num;
14389 struct phy_shim_info *shim = pi->sh->physhim;
14390
14391 if (pi->sh->sromrev >= 9)
14392 return;
14393
14394 bw40po = (u16) wlapi_getintvar(shim, BRCMS_SROM_BW40PO);
14395 pi->bw402gpo = bw40po & 0xf;
14396 pi->bw405gpo = (bw40po & 0xf0) >> 4;
14397 pi->bw405glpo = (bw40po & 0xf00) >> 8;
14398 pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14399
14400 cddpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_CDDPO);
14401 pi->cdd2gpo = cddpo & 0xf;
14402 pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14403 pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14404 pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14405
14406 stbcpo = (u16) wlapi_getintvar(shim, BRCMS_SROM_STBCPO);
14407 pi->stbc2gpo = stbcpo & 0xf;
14408 pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14409 pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14410 pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14411
14412 bwduppo = (u16) wlapi_getintvar(shim, BRCMS_SROM_BWDUPPO);
14413 pi->bwdup2gpo = bwduppo & 0xf;
14414 pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14415 pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14416 pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14417
14418 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14419 band_num++) {
14420 switch (band_num) {
14421 case 0:
14422
14423 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14424 (s8) wlapi_getintvar(shim,
14425 BRCMS_SROM_MAXP2GA0);
14426 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14427 (s8) wlapi_getintvar(shim,
14428 BRCMS_SROM_MAXP2GA1);
14429 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14430 (s16) wlapi_getintvar(shim,
14431 BRCMS_SROM_PA2GW0A0);
14432 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14433 (s16) wlapi_getintvar(shim,
14434 BRCMS_SROM_PA2GW0A1);
14435 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14436 (s16) wlapi_getintvar(shim,
14437 BRCMS_SROM_PA2GW1A0);
14438 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14439 (s16) wlapi_getintvar(shim,
14440 BRCMS_SROM_PA2GW1A1);
14441 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14442 (s16) wlapi_getintvar(shim,
14443 BRCMS_SROM_PA2GW2A0);
14444 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14445 (s16) wlapi_getintvar(shim,
14446 BRCMS_SROM_PA2GW2A1);
14447 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14448 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA0);
14449 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14450 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT2GA1);
14451
14452 pi->cck2gpo = (u16) wlapi_getintvar(shim,
14453 BRCMS_SROM_CCK2GPO);
14454
14455 pi->ofdm2gpo =
14456 (u32) wlapi_getintvar(shim,
14457 BRCMS_SROM_OFDM2GPO);
14458
14459 pi->mcs2gpo[0] =
14460 (u16) wlapi_getintvar(shim,
14461 BRCMS_SROM_MCS2GPO0);
14462 pi->mcs2gpo[1] =
14463 (u16) wlapi_getintvar(shim,
14464 BRCMS_SROM_MCS2GPO1);
14465 pi->mcs2gpo[2] =
14466 (u16) wlapi_getintvar(shim,
14467 BRCMS_SROM_MCS2GPO2);
14468 pi->mcs2gpo[3] =
14469 (u16) wlapi_getintvar(shim,
14470 BRCMS_SROM_MCS2GPO3);
14471 pi->mcs2gpo[4] =
14472 (u16) wlapi_getintvar(shim,
14473 BRCMS_SROM_MCS2GPO4);
14474 pi->mcs2gpo[5] =
14475 (u16) wlapi_getintvar(shim,
14476 BRCMS_SROM_MCS2GPO5);
14477 pi->mcs2gpo[6] =
14478 (u16) wlapi_getintvar(shim,
14479 BRCMS_SROM_MCS2GPO6);
14480 pi->mcs2gpo[7] =
14481 (u16) wlapi_getintvar(shim,
14482 BRCMS_SROM_MCS2GPO7);
14483 break;
14484 case 1:
14485
14486 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14487 (s8) wlapi_getintvar(shim, BRCMS_SROM_MAXP5GA0);
14488 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14489 (s8) wlapi_getintvar(shim,
14490 BRCMS_SROM_MAXP5GA1);
14491 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14492 (s16) wlapi_getintvar(shim,
14493 BRCMS_SROM_PA5GW0A0);
14494 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14495 (s16) wlapi_getintvar(shim,
14496 BRCMS_SROM_PA5GW0A1);
14497 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14498 (s16) wlapi_getintvar(shim,
14499 BRCMS_SROM_PA5GW1A0);
14500 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14501 (s16) wlapi_getintvar(shim,
14502 BRCMS_SROM_PA5GW1A1);
14503 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14504 (s16) wlapi_getintvar(shim,
14505 BRCMS_SROM_PA5GW2A0);
14506 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14507 (s16) wlapi_getintvar(shim,
14508 BRCMS_SROM_PA5GW2A1);
14509 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14510 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA0);
14511 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14512 (s8) wlapi_getintvar(shim, BRCMS_SROM_ITT5GA1);
14513
14514 pi->ofdm5gpo =
14515 (u32) wlapi_getintvar(shim,
14516 BRCMS_SROM_OFDM5GPO);
14517
14518 pi->mcs5gpo[0] =
14519 (u16) wlapi_getintvar(shim,
14520 BRCMS_SROM_MCS5GPO0);
14521 pi->mcs5gpo[1] =
14522 (u16) wlapi_getintvar(shim,
14523 BRCMS_SROM_MCS5GPO1);
14524 pi->mcs5gpo[2] =
14525 (u16) wlapi_getintvar(shim,
14526 BRCMS_SROM_MCS5GPO2);
14527 pi->mcs5gpo[3] =
14528 (u16) wlapi_getintvar(shim,
14529 BRCMS_SROM_MCS5GPO3);
14530 pi->mcs5gpo[4] =
14531 (u16) wlapi_getintvar(shim,
14532 BRCMS_SROM_MCS5GPO4);
14533 pi->mcs5gpo[5] =
14534 (u16) wlapi_getintvar(shim,
14535 BRCMS_SROM_MCS5GPO5);
14536 pi->mcs5gpo[6] =
14537 (u16) wlapi_getintvar(shim,
14538 BRCMS_SROM_MCS5GPO6);
14539 pi->mcs5gpo[7] =
14540 (u16) wlapi_getintvar(shim,
14541 BRCMS_SROM_MCS5GPO7);
14542 break;
14543 case 2:
14544
14545 pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14546 (s8) wlapi_getintvar(shim,
14547 BRCMS_SROM_MAXP5GLA0);
14548 pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14549 (s8) wlapi_getintvar(shim,
14550 BRCMS_SROM_MAXP5GLA1);
14551 pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14552 (s16) wlapi_getintvar(shim,
14553 BRCMS_SROM_PA5GLW0A0);
14554 pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14555 (s16) wlapi_getintvar(shim,
14556 BRCMS_SROM_PA5GLW0A1);
14557 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14558 (s16) wlapi_getintvar(shim,
14559 BRCMS_SROM_PA5GLW1A0);
14560 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14561 (s16) wlapi_getintvar(shim,
14562 BRCMS_SROM_PA5GLW1A1);
14563 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14564 (s16) wlapi_getintvar(shim,
14565 BRCMS_SROM_PA5GLW2A0);
14566 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14567 (s16) wlapi_getintvar(shim,
14568 BRCMS_SROM_PA5GLW2A1);
14569 pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14570 pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14571
14572 pi->ofdm5glpo =
14573 (u32) wlapi_getintvar(shim,
14574 BRCMS_SROM_OFDM5GLPO);
14575
14576 pi->mcs5glpo[0] =
14577 (u16) wlapi_getintvar(shim,
14578 BRCMS_SROM_MCS5GLPO0);
14579 pi->mcs5glpo[1] =
14580 (u16) wlapi_getintvar(shim,
14581 BRCMS_SROM_MCS5GLPO1);
14582 pi->mcs5glpo[2] =
14583 (u16) wlapi_getintvar(shim,
14584 BRCMS_SROM_MCS5GLPO2);
14585 pi->mcs5glpo[3] =
14586 (u16) wlapi_getintvar(shim,
14587 BRCMS_SROM_MCS5GLPO3);
14588 pi->mcs5glpo[4] =
14589 (u16) wlapi_getintvar(shim,
14590 BRCMS_SROM_MCS5GLPO4);
14591 pi->mcs5glpo[5] =
14592 (u16) wlapi_getintvar(shim,
14593 BRCMS_SROM_MCS5GLPO5);
14594 pi->mcs5glpo[6] =
14595 (u16) wlapi_getintvar(shim,
14596 BRCMS_SROM_MCS5GLPO6);
14597 pi->mcs5glpo[7] =
14598 (u16) wlapi_getintvar(shim,
14599 BRCMS_SROM_MCS5GLPO7);
14600 break;
14601 case 3:
14602
14603 pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14604 (s8) wlapi_getintvar(shim,
14605 BRCMS_SROM_MAXP5GHA0);
14606 pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14607 (s8) wlapi_getintvar(shim,
14608 BRCMS_SROM_MAXP5GHA1);
14609 pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14610 (s16) wlapi_getintvar(shim,
14611 BRCMS_SROM_PA5GHW0A0);
14612 pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14613 (s16) wlapi_getintvar(shim,
14614 BRCMS_SROM_PA5GHW0A1);
14615 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14616 (s16) wlapi_getintvar(shim,
14617 BRCMS_SROM_PA5GHW1A0);
14618 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14619 (s16) wlapi_getintvar(shim,
14620 BRCMS_SROM_PA5GHW1A1);
14621 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14622 (s16) wlapi_getintvar(shim,
14623 BRCMS_SROM_PA5GHW2A0);
14624 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14625 (s16) wlapi_getintvar(shim,
14626 BRCMS_SROM_PA5GHW2A1);
14627 pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14628 pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14629
14630 pi->ofdm5ghpo =
14631 (u32) wlapi_getintvar(shim,
14632 BRCMS_SROM_OFDM5GHPO);
14633
14634 pi->mcs5ghpo[0] =
14635 (u16) wlapi_getintvar(shim,
14636 BRCMS_SROM_MCS5GHPO0);
14637 pi->mcs5ghpo[1] =
14638 (u16) wlapi_getintvar(shim,
14639 BRCMS_SROM_MCS5GHPO1);
14640 pi->mcs5ghpo[2] =
14641 (u16) wlapi_getintvar(shim,
14642 BRCMS_SROM_MCS5GHPO2);
14643 pi->mcs5ghpo[3] =
14644 (u16) wlapi_getintvar(shim,
14645 BRCMS_SROM_MCS5GHPO3);
14646 pi->mcs5ghpo[4] =
14647 (u16) wlapi_getintvar(shim,
14648 BRCMS_SROM_MCS5GHPO4);
14649 pi->mcs5ghpo[5] =
14650 (u16) wlapi_getintvar(shim,
14651 BRCMS_SROM_MCS5GHPO5);
14652 pi->mcs5ghpo[6] =
14653 (u16) wlapi_getintvar(shim,
14654 BRCMS_SROM_MCS5GHPO6);
14655 pi->mcs5ghpo[7] =
14656 (u16) wlapi_getintvar(shim,
14657 BRCMS_SROM_MCS5GHPO7);
14658 break;
14659 }
14660 }
14661
14662 wlc_phy_txpwr_apply_nphy(pi);
14663 }
14664
14665 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14666 {
14667 struct phy_shim_info *shim = pi->sh->physhim;
14668
14669 pi->antswitch = (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWITCH);
14670 pi->aa2g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA2G);
14671 pi->aa5g = (u8) wlapi_getintvar(shim, BRCMS_SROM_AA5G);
14672
14673 pi->srom_fem2g.tssipos = (u8) wlapi_getintvar(shim,
14674 BRCMS_SROM_TSSIPOS2G);
14675 pi->srom_fem2g.extpagain = (u8) wlapi_getintvar(shim,
14676 BRCMS_SROM_EXTPAGAIN2G);
14677 pi->srom_fem2g.pdetrange = (u8) wlapi_getintvar(shim,
14678 BRCMS_SROM_PDETRANGE2G);
14679 pi->srom_fem2g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO2G);
14680 pi->srom_fem2g.antswctrllut =
14681 (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14682
14683 pi->srom_fem5g.tssipos = (u8) wlapi_getintvar(shim,
14684 BRCMS_SROM_TSSIPOS5G);
14685 pi->srom_fem5g.extpagain = (u8) wlapi_getintvar(shim,
14686 BRCMS_SROM_EXTPAGAIN5G);
14687 pi->srom_fem5g.pdetrange = (u8) wlapi_getintvar(shim,
14688 BRCMS_SROM_PDETRANGE5G);
14689 pi->srom_fem5g.triso = (u8) wlapi_getintvar(shim, BRCMS_SROM_TRISO5G);
14690 if (wlapi_getvar(shim, BRCMS_SROM_ANTSWCTL5G))
14691 pi->srom_fem5g.antswctrllut =
14692 (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL5G);
14693 else
14694 pi->srom_fem5g.antswctrllut =
14695 (u8) wlapi_getintvar(shim, BRCMS_SROM_ANTSWCTL2G);
14696
14697 wlc_phy_txpower_ipa_upd(pi);
14698
14699 pi->phy_txcore_disable_temp =
14700 (s16) wlapi_getintvar(shim, BRCMS_SROM_TEMPTHRESH);
14701 if (pi->phy_txcore_disable_temp == 0)
14702 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14703
14704 pi->phy_tempsense_offset = (s8) wlapi_getintvar(shim,
14705 BRCMS_SROM_TEMPOFFSET);
14706 if (pi->phy_tempsense_offset != 0) {
14707 if (pi->phy_tempsense_offset >
14708 (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14709 pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14710 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14711 NPHY_SROM_MINTEMPOFFSET))
14712 pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14713 else
14714 pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14715 }
14716
14717 pi->phy_txcore_enable_temp =
14718 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14719
14720 pi->phycal_tempdelta =
14721 (u8) wlapi_getintvar(shim, BRCMS_SROM_PHYCAL_TEMPDELTA);
14722 if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14723 pi->phycal_tempdelta = 0;
14724
14725 wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14726
14727 return true;
14728 }
14729
14730 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14731 {
14732 uint i;
14733
14734 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14735 pi->phyhang_avoid = true;
14736
14737 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14738 pi->nphy_gband_spurwar_en = true;
14739 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14740 pi->nphy_aband_spurwar_en = true;
14741 }
14742 if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14743 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14744 pi->nphy_gband_spurwar2_en = true;
14745 }
14746
14747 pi->n_preamble_override = AUTO;
14748 if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14749 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14750
14751 pi->nphy_txrx_chain = AUTO;
14752 pi->phy_scraminit = AUTO;
14753
14754 pi->nphy_rxcalparams = 0x010100B5;
14755
14756 pi->nphy_perical = PHY_PERICAL_MPHASE;
14757 pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14758 pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14759
14760 pi->nphy_gain_boost = true;
14761 pi->nphy_elna_gain_config = false;
14762 pi->radio_is_on = false;
14763
14764 for (i = 0; i < pi->pubpi.phy_corenum; i++)
14765 pi->nphy_txpwrindex[i].index = AUTO;
14766
14767 wlc_phy_txpwrctrl_config_nphy(pi);
14768 if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14769 pi->hwpwrctrl_capable = true;
14770
14771 pi->pi_fptr.init = wlc_phy_init_nphy;
14772 pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14773 pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14774 pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14775
14776 if (!wlc_phy_txpwr_srom_read_nphy(pi))
14777 return false;
14778
14779 return true;
14780 }
14781
14782 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14783 {
14784 s32 rfpwr_offset = 0;
14785
14786 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14787 if ((pi->pubpi.radiorev == 3) ||
14788 (pi->pubpi.radiorev == 4) ||
14789 (pi->pubpi.radiorev == 6))
14790 rfpwr_offset = (s16)
14791 nphy_papd_padgain_dlt_2g_2057rev3n4
14792 [pad_gn];
14793 else if (pi->pubpi.radiorev == 5)
14794 rfpwr_offset = (s16)
14795 nphy_papd_padgain_dlt_2g_2057rev5
14796 [pad_gn];
14797 else if ((pi->pubpi.radiorev == 7)
14798 || (pi->pubpi.radiorev ==
14799 8))
14800 rfpwr_offset = (s16)
14801 nphy_papd_padgain_dlt_2g_2057rev7
14802 [pad_gn];
14803 } else {
14804 if ((pi->pubpi.radiorev == 3) ||
14805 (pi->pubpi.radiorev == 4) ||
14806 (pi->pubpi.radiorev == 6))
14807 rfpwr_offset = (s16)
14808 nphy_papd_pgagain_dlt_5g_2057
14809 [pga_gn];
14810 else if ((pi->pubpi.radiorev == 7)
14811 || (pi->pubpi.radiorev ==
14812 8))
14813 rfpwr_offset = (s16)
14814 nphy_papd_pgagain_dlt_5g_2057rev7
14815 [pga_gn];
14816 }
14817 return rfpwr_offset;
14818 }
14819
14820 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14821 {
14822 bool gf_preamble = false;
14823 u16 val;
14824
14825 if (preamble == BRCMS_N_PREAMBLE_GF)
14826 gf_preamble = true;
14827
14828 val = read_phy_reg(pi, 0xed);
14829
14830 val |= RX_GF_MM_AUTO;
14831 val &= ~RX_GF_OR_MM;
14832 if (gf_preamble)
14833 val |= RX_GF_OR_MM;
14834
14835 write_phy_reg(pi, 0xed, val);
14836 }
14837
14838 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14839 {
14840 int j, type;
14841 u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14842
14843 for (type = 0; type < 3; type++) {
14844 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14845 write_phy_reg(pi, addr_offset[type] + j,
14846 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14847 }
14848
14849 if (pi->bw == WL_CHANSPEC_BW_40) {
14850 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14851 write_phy_reg(pi, 0x186 + j,
14852 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14853 } else {
14854 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14855 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14856 write_phy_reg(pi, 0x186 + j,
14857 NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14858 }
14859
14860 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14861 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14862 write_phy_reg(pi, 0x2c5 + j,
14863 NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14864 }
14865 }
14866 }
14867
14868 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14869 {
14870 int j;
14871
14872 if (pi->bw == WL_CHANSPEC_BW_40) {
14873 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14874 write_phy_reg(pi, 0x195 + j,
14875 NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14876 } else {
14877 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14878 write_phy_reg(pi, 0x186 + j,
14879 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14880 }
14881 }
14882
14883 static void
14884 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14885 u8 len)
14886 {
14887 u32 t1_offset, t2_offset;
14888 u8 ctr;
14889 u8 end_event =
14890 NREV_GE(pi->pubpi.phy_rev,
14891 3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14892 u8 end_dly = 1;
14893
14894 if (pi->phyhang_avoid)
14895 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14896
14897 t1_offset = cmd << 4;
14898 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14899 events);
14900 t2_offset = t1_offset + 0x080;
14901 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14902 dlys);
14903
14904 for (ctr = len; ctr < 16; ctr++) {
14905 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14906 t1_offset + ctr, 8, &end_event);
14907 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14908 t2_offset + ctr, 8, &end_dly);
14909 }
14910
14911 if (pi->phyhang_avoid)
14912 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14913 }
14914
14915 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14916 {
14917 u16 lpf_bw_ctl_val = 0;
14918 u16 rx2tx_lpf_rc_lut_offset = 0;
14919
14920 if (offset == 0) {
14921 if (CHSPEC_IS40(pi->radio_chanspec))
14922 rx2tx_lpf_rc_lut_offset = 0x159;
14923 else
14924 rx2tx_lpf_rc_lut_offset = 0x154;
14925 } else {
14926 rx2tx_lpf_rc_lut_offset = offset;
14927 }
14928 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14929 (u32) rx2tx_lpf_rc_lut_offset, 16,
14930 &lpf_bw_ctl_val);
14931
14932 lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14933
14934 return lpf_bw_ctl_val;
14935 }
14936
14937 static void
14938 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14939 u8 core_mask, u8 off, u8 override_id)
14940 {
14941 u8 core_num;
14942 u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14943 u8 val_shift = 0;
14944
14945 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14946 en_mask = field;
14947 for (core_num = 0; core_num < 2; core_num++) {
14948 if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14949
14950 switch (field) {
14951 case (0x1 << 2):
14952 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14953 val_addr = (core_num == 0) ? 0x7a :
14954 0x7d;
14955 val_mask = (0x1 << 1);
14956 val_shift = 1;
14957 break;
14958 case (0x1 << 3):
14959 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14960 val_addr = (core_num == 0) ? 0x7a :
14961 0x7d;
14962 val_mask = (0x1 << 2);
14963 val_shift = 2;
14964 break;
14965 case (0x1 << 4):
14966 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14967 val_addr = (core_num == 0) ? 0x7a :
14968 0x7d;
14969 val_mask = (0x1 << 4);
14970 val_shift = 4;
14971 break;
14972 case (0x1 << 5):
14973 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14974 val_addr = (core_num == 0) ? 0x7a :
14975 0x7d;
14976 val_mask = (0x1 << 5);
14977 val_shift = 5;
14978 break;
14979 case (0x1 << 6):
14980 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14981 val_addr = (core_num == 0) ? 0x7a :
14982 0x7d;
14983 val_mask = (0x1 << 6);
14984 val_shift = 6;
14985 break;
14986 case (0x1 << 7):
14987 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14988 val_addr = (core_num == 0) ? 0x7a :
14989 0x7d;
14990 val_mask = (0x1 << 7);
14991 val_shift = 7;
14992 break;
14993 case (0x1 << 10):
14994 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14995 val_addr = (core_num == 0) ? 0xf8 :
14996 0xfa;
14997 val_mask = (0x7 << 4);
14998 val_shift = 4;
14999 break;
15000 case (0x1 << 11):
15001 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15002 val_addr = (core_num == 0) ? 0x7b :
15003 0x7e;
15004 val_mask = (0xffff << 0);
15005 val_shift = 0;
15006 break;
15007 case (0x1 << 12):
15008 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15009 val_addr = (core_num == 0) ? 0x7c :
15010 0x7f;
15011 val_mask = (0xffff << 0);
15012 val_shift = 0;
15013 break;
15014 case (0x3 << 13):
15015 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15016 val_addr = (core_num == 0) ? 0x348 :
15017 0x349;
15018 val_mask = (0xff << 0);
15019 val_shift = 0;
15020 break;
15021 case (0x1 << 13):
15022 en_addr = (core_num == 0) ? 0xe7 : 0xec;
15023 val_addr = (core_num == 0) ? 0x348 :
15024 0x349;
15025 val_mask = (0xf << 0);
15026 val_shift = 0;
15027 break;
15028 default:
15029 addr = 0xffff;
15030 break;
15031 }
15032 } else if (override_id ==
15033 NPHY_REV7_RFCTRLOVERRIDE_ID1) {
15034
15035 switch (field) {
15036 case (0x1 << 1):
15037 en_addr = (core_num == 0) ? 0x342 :
15038 0x343;
15039 val_addr = (core_num == 0) ? 0x340 :
15040 0x341;
15041 val_mask = (0x1 << 1);
15042 val_shift = 1;
15043 break;
15044 case (0x1 << 3):
15045 en_addr = (core_num == 0) ? 0x342 :
15046 0x343;
15047 val_addr = (core_num == 0) ? 0x340 :
15048 0x341;
15049 val_mask = (0x1 << 3);
15050 val_shift = 3;
15051 break;
15052 case (0x1 << 5):
15053 en_addr = (core_num == 0) ? 0x342 :
15054 0x343;
15055 val_addr = (core_num == 0) ? 0x340 :
15056 0x341;
15057 val_mask = (0x1 << 5);
15058 val_shift = 5;
15059 break;
15060 case (0x1 << 4):
15061 en_addr = (core_num == 0) ? 0x342 :
15062 0x343;
15063 val_addr = (core_num == 0) ? 0x340 :
15064 0x341;
15065 val_mask = (0x1 << 4);
15066 val_shift = 4;
15067 break;
15068 case (0x1 << 2):
15069
15070 en_addr = (core_num == 0) ? 0x342 :
15071 0x343;
15072 val_addr = (core_num == 0) ? 0x340 :
15073 0x341;
15074 val_mask = (0x1 << 2);
15075 val_shift = 2;
15076 break;
15077 case (0x1 << 7):
15078
15079 en_addr = (core_num == 0) ? 0x342 :
15080 0x343;
15081 val_addr = (core_num == 0) ? 0x340 :
15082 0x341;
15083 val_mask = (0x7 << 8);
15084 val_shift = 8;
15085 break;
15086 case (0x1 << 11):
15087 en_addr = (core_num == 0) ? 0x342 :
15088 0x343;
15089 val_addr = (core_num == 0) ? 0x340 :
15090 0x341;
15091 val_mask = (0x1 << 14);
15092 val_shift = 14;
15093 break;
15094 case (0x1 << 10):
15095 en_addr = (core_num == 0) ? 0x342 :
15096 0x343;
15097 val_addr = (core_num == 0) ? 0x340 :
15098 0x341;
15099 val_mask = (0x1 << 13);
15100 val_shift = 13;
15101 break;
15102 case (0x1 << 9):
15103 en_addr = (core_num == 0) ? 0x342 :
15104 0x343;
15105 val_addr = (core_num == 0) ? 0x340 :
15106 0x341;
15107 val_mask = (0x1 << 12);
15108 val_shift = 12;
15109 break;
15110 case (0x1 << 8):
15111 en_addr = (core_num == 0) ? 0x342 :
15112 0x343;
15113 val_addr = (core_num == 0) ? 0x340 :
15114 0x341;
15115 val_mask = (0x1 << 11);
15116 val_shift = 11;
15117 break;
15118 case (0x1 << 6):
15119 en_addr = (core_num == 0) ? 0x342 :
15120 0x343;
15121 val_addr = (core_num == 0) ? 0x340 :
15122 0x341;
15123 val_mask = (0x1 << 6);
15124 val_shift = 6;
15125 break;
15126 case (0x1 << 0):
15127 en_addr = (core_num == 0) ? 0x342 :
15128 0x343;
15129 val_addr = (core_num == 0) ? 0x340 :
15130 0x341;
15131 val_mask = (0x1 << 0);
15132 val_shift = 0;
15133 break;
15134 default:
15135 addr = 0xffff;
15136 break;
15137 }
15138 } else if (override_id ==
15139 NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15140
15141 switch (field) {
15142 case (0x1 << 3):
15143 en_addr = (core_num == 0) ? 0x346 :
15144 0x347;
15145 val_addr = (core_num == 0) ? 0x344 :
15146 0x345;
15147 val_mask = (0x1 << 3);
15148 val_shift = 3;
15149 break;
15150 case (0x1 << 1):
15151 en_addr = (core_num == 0) ? 0x346 :
15152 0x347;
15153 val_addr = (core_num == 0) ? 0x344 :
15154 0x345;
15155 val_mask = (0x1 << 1);
15156 val_shift = 1;
15157 break;
15158 case (0x1 << 0):
15159 en_addr = (core_num == 0) ? 0x346 :
15160 0x347;
15161 val_addr = (core_num == 0) ? 0x344 :
15162 0x345;
15163 val_mask = (0x1 << 0);
15164 val_shift = 0;
15165 break;
15166 case (0x1 << 2):
15167 en_addr = (core_num == 0) ? 0x346 :
15168 0x347;
15169 val_addr = (core_num == 0) ? 0x344 :
15170 0x345;
15171 val_mask = (0x1 << 2);
15172 val_shift = 2;
15173 break;
15174 case (0x1 << 4):
15175 en_addr = (core_num == 0) ? 0x346 :
15176 0x347;
15177 val_addr = (core_num == 0) ? 0x344 :
15178 0x345;
15179 val_mask = (0x1 << 4);
15180 val_shift = 4;
15181 break;
15182 default:
15183 addr = 0xffff;
15184 break;
15185 }
15186 }
15187
15188 if (off) {
15189 and_phy_reg(pi, en_addr, ~en_mask);
15190 and_phy_reg(pi, val_addr, ~val_mask);
15191 } else {
15192
15193 if ((core_mask == 0)
15194 || (core_mask & (1 << core_num))) {
15195 or_phy_reg(pi, en_addr, en_mask);
15196
15197 if (addr != 0xffff)
15198 mod_phy_reg(pi, val_addr,
15199 val_mask,
15200 (value <<
15201 val_shift));
15202 }
15203 }
15204 }
15205 }
15206 }
15207
15208 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15209 {
15210 uint core;
15211 int ctr;
15212 s16 gain_delta[2];
15213 u8 curr_channel;
15214 u16 minmax_gain[2];
15215 u16 regval[4];
15216
15217 if (pi->phyhang_avoid)
15218 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15219
15220 if (pi->nphy_gain_boost) {
15221 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15222
15223 gain_delta[0] = 6;
15224 gain_delta[1] = 6;
15225 } else {
15226
15227 curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15228 gain_delta[0] =
15229 (s16)
15230 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15231 curr_channel) +
15232 nphy_lnagain_est0[1]), 13);
15233 gain_delta[1] =
15234 (s16)
15235 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15236 curr_channel) +
15237 nphy_lnagain_est1[1]), 13);
15238 }
15239 } else {
15240
15241 gain_delta[0] = 0;
15242 gain_delta[1] = 0;
15243 }
15244
15245 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15246 if (pi->nphy_elna_gain_config) {
15247
15248 regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15249 regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15250 regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15251 regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15252 } else {
15253 for (ctr = 0; ctr < 4; ctr++)
15254 regval[ctr] =
15255 nphy_def_lnagains[ctr] +
15256 gain_delta[core];
15257 }
15258 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15259
15260 minmax_gain[core] =
15261 (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15262 }
15263
15264 mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15265 mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15266
15267 if (pi->phyhang_avoid)
15268 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15269 }
15270
15271 static void
15272 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15273 {
15274 if (core == PHY_CORE_0) {
15275 write_phy_reg(pi, 0x38, 0x4);
15276 if (CHSPEC_IS2G(pi->radio_chanspec))
15277 write_phy_reg(pi, 0x37, 0x0060);
15278 else
15279 write_phy_reg(pi, 0x37, 0x1080);
15280 } else if (core == PHY_CORE_1) {
15281 write_phy_reg(pi, 0x2ae, 0x4);
15282 if (CHSPEC_IS2G(pi->radio_chanspec))
15283 write_phy_reg(pi, 0x2ad, 0x0060);
15284 else
15285 write_phy_reg(pi, 0x2ad, 0x1080);
15286 }
15287 }
15288
15289 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15290 {
15291 u8 txchain0, txchain1;
15292
15293 txchain0 = txchain & 0x1;
15294 txchain1 = (txchain & 0x2) >> 1;
15295 if (!txchain0)
15296 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15297
15298 if (!txchain1)
15299 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15300 }
15301
15302 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15303 {
15304 s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15305 s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15306 s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15307 s8 tia_gainbits[] = {
15308 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15309
15310 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15311 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15312
15313 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15314
15315 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15316 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15317
15318 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15319 lna1_gain_db);
15320 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15321 lna1_gain_db);
15322
15323 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15324 lna2_gain_db);
15325 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15326 lna2_gain_db);
15327
15328 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15329 tia_gain_db);
15330 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15331 tia_gain_db);
15332
15333 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15334 tia_gainbits);
15335 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15336 tia_gainbits);
15337
15338 write_phy_reg(pi, 0x37, 0x74);
15339 write_phy_reg(pi, 0x2ad, 0x74);
15340 write_phy_reg(pi, 0x38, 0x18);
15341 write_phy_reg(pi, 0x2ae, 0x18);
15342
15343 write_phy_reg(pi, 0x2b, 0xe8);
15344 write_phy_reg(pi, 0x41, 0xe8);
15345
15346 if (CHSPEC_IS20(pi->radio_chanspec)) {
15347
15348 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15349 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15350 } else {
15351
15352 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15353 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15354 }
15355 }
15356
15357 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15358 {
15359 u16 currband;
15360 s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15361 s8 *lna1_gain_db = NULL;
15362 s8 *lna1_gain_db_2 = NULL;
15363 s8 *lna2_gain_db = NULL;
15364 s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15365 s8 *tia_gain_db;
15366 s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15367 s8 *tia_gainbits;
15368 u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15369 u16 *rfseq_init_gain;
15370 u16 init_gaincode;
15371 u16 clip1hi_gaincode;
15372 u16 clip1md_gaincode = 0;
15373 u16 clip1md_gaincode_B;
15374 u16 clip1lo_gaincode;
15375 u16 clip1lo_gaincode_B;
15376 u8 crsminl_th = 0;
15377 u8 crsminu_th;
15378 u16 nbclip_th = 0;
15379 u8 w1clip_th;
15380 u16 freq;
15381 s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15382 u8 chg_nbclip_th = 0;
15383
15384 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15385 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15386
15387 currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15388 if (currband == 0) {
15389
15390 lna1_gain_db = lna1G_gain_db_rev7;
15391
15392 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15393 lna1_gain_db);
15394 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15395 lna1_gain_db);
15396
15397 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15398
15399 if (CHSPEC_IS40(pi->radio_chanspec)) {
15400 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15401 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15402 }
15403
15404 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15405
15406 if (CHSPEC_IS20(pi->radio_chanspec)) {
15407 mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15408 mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15409 }
15410 } else {
15411
15412 init_gaincode = 0x9e;
15413 clip1hi_gaincode = 0x9e;
15414 clip1md_gaincode_B = 0x24;
15415 clip1lo_gaincode = 0x8a;
15416 clip1lo_gaincode_B = 8;
15417 rfseq_init_gain = rfseqA_init_gain_rev7;
15418
15419 tia_gain_db = tiaA_gain_db_rev7;
15420 tia_gainbits = tiaA_gainbits_rev7;
15421
15422 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15423 if (CHSPEC_IS20(pi->radio_chanspec)) {
15424
15425 w1clip_th = 25;
15426 clip1md_gaincode = 0x82;
15427
15428 if ((freq <= 5080) || (freq == 5825)) {
15429
15430 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15431 s8 lna1A_gain_db_2_rev7[] = {
15432 11, 17, 22, 25};
15433 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15434
15435 crsminu_th = 0x3e;
15436 lna1_gain_db = lna1A_gain_db_rev7;
15437 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15438 lna2_gain_db = lna2A_gain_db_rev7;
15439 } else if ((freq >= 5500) && (freq <= 5700)) {
15440
15441 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15442 s8 lna1A_gain_db_2_rev7[] = {
15443 12, 18, 22, 26};
15444 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15445
15446 crsminu_th = 0x45;
15447 clip1md_gaincode_B = 0x14;
15448 nbclip_th = 0xff;
15449 chg_nbclip_th = 1;
15450 lna1_gain_db = lna1A_gain_db_rev7;
15451 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15452 lna2_gain_db = lna2A_gain_db_rev7;
15453 } else {
15454
15455 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15456 s8 lna1A_gain_db_2_rev7[] = {
15457 12, 18, 22, 26};
15458 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15459
15460 crsminu_th = 0x41;
15461 lna1_gain_db = lna1A_gain_db_rev7;
15462 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15463 lna2_gain_db = lna2A_gain_db_rev7;
15464 }
15465
15466 if (freq <= 4920) {
15467 nvar_baseline_offset0 = 5;
15468 nvar_baseline_offset1 = 5;
15469 } else if ((freq > 4920) && (freq <= 5320)) {
15470 nvar_baseline_offset0 = 3;
15471 nvar_baseline_offset1 = 5;
15472 } else if ((freq > 5320) && (freq <= 5700)) {
15473 nvar_baseline_offset0 = 3;
15474 nvar_baseline_offset1 = 2;
15475 } else {
15476 nvar_baseline_offset0 = 4;
15477 nvar_baseline_offset1 = 0;
15478 }
15479 } else {
15480
15481 crsminu_th = 0x3a;
15482 crsminl_th = 0x3a;
15483 w1clip_th = 20;
15484
15485 if ((freq >= 4920) && (freq <= 5320)) {
15486 nvar_baseline_offset0 = 4;
15487 nvar_baseline_offset1 = 5;
15488 } else if ((freq > 5320) && (freq <= 5550)) {
15489 nvar_baseline_offset0 = 4;
15490 nvar_baseline_offset1 = 2;
15491 } else {
15492 nvar_baseline_offset0 = 5;
15493 nvar_baseline_offset1 = 3;
15494 }
15495 }
15496
15497 write_phy_reg(pi, 0x20, init_gaincode);
15498 write_phy_reg(pi, 0x2a7, init_gaincode);
15499
15500 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15501 pi->pubpi.phy_corenum, 0x106, 16,
15502 rfseq_init_gain);
15503
15504 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15505 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15506
15507 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15508 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15509
15510 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15511 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15512 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15513 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15514
15515 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15516 tia_gain_db);
15517 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15518 tia_gain_db);
15519
15520 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15521 tia_gainbits);
15522 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15523 tia_gainbits);
15524
15525 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15526
15527 if (chg_nbclip_th == 1) {
15528 write_phy_reg(pi, 0x2b, nbclip_th);
15529 write_phy_reg(pi, 0x41, nbclip_th);
15530 }
15531
15532 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15533 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15534
15535 mod_phy_reg(pi, 0x2e4,
15536 (0x3f << 0), (nvar_baseline_offset0 << 0));
15537
15538 mod_phy_reg(pi, 0x2e4,
15539 (0x3f << 6), (nvar_baseline_offset1 << 6));
15540
15541 if (CHSPEC_IS20(pi->radio_chanspec)) {
15542
15543 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15544 lna1_gain_db);
15545 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15546 lna1_gain_db_2);
15547
15548 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15549 8, lna2_gain_db);
15550 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15551 8, lna2_gain_db);
15552
15553 write_phy_reg(pi, 0x24, clip1md_gaincode);
15554 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15555 } else {
15556 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15557 }
15558 }
15559 }
15560
15561 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15562 {
15563 u16 w1th, hpf_code, currband;
15564 int ctr;
15565 u8 rfseq_updategainu_events[] = {
15566 NPHY_RFSEQ_CMD_RX_GAIN,
15567 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15568 NPHY_RFSEQ_CMD_SET_HPF_BW
15569 };
15570 u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15571 s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15572 s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15573 s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15574 s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15575 s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15576 s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15577 s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15578 s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15579 s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15580 s8 *lna1_gain_db = NULL;
15581 s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15582 s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15583 s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15584 s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15585 s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15586 s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15587 s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15588 s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15589 s8 *lna2_gain_db = NULL;
15590 s8 tiaG_gain_db[] = {
15591 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15592 s8 tiaA_gain_db[] = {
15593 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15594 s8 tiaA_gain_db_rev4[] = {
15595 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15596 s8 tiaA_gain_db_rev5[] = {
15597 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15598 s8 tiaA_gain_db_rev6[] = {
15599 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15600 s8 *tia_gain_db;
15601 s8 tiaG_gainbits[] = {
15602 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15603 s8 tiaA_gainbits[] = {
15604 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15605 s8 tiaA_gainbits_rev4[] = {
15606 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15607 s8 tiaA_gainbits_rev5[] = {
15608 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15609 s8 tiaA_gainbits_rev6[] = {
15610 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15611 s8 *tia_gainbits;
15612 s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15613 s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15614 u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15615 u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15616 u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15617 u16 rfseqG_init_gain_rev5_elna[] = {
15618 0x013f, 0x013f, 0x013f, 0x013f };
15619 u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15620 u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15621 u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15622 u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15623 u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15624 u16 rfseqA_init_gain_rev4_elna[] = {
15625 0x314f, 0x314f, 0x314f, 0x314f };
15626 u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15627 u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15628 u16 *rfseq_init_gain;
15629 u16 initG_gaincode = 0x627e;
15630 u16 initG_gaincode_rev4 = 0x527e;
15631 u16 initG_gaincode_rev5 = 0x427e;
15632 u16 initG_gaincode_rev5_elna = 0x027e;
15633 u16 initG_gaincode_rev6 = 0x527e;
15634 u16 initG_gaincode_rev6_224B0 = 0x427e;
15635 u16 initG_gaincode_rev6_elna = 0x127e;
15636 u16 initA_gaincode = 0x52de;
15637 u16 initA_gaincode_rev4 = 0x629e;
15638 u16 initA_gaincode_rev4_elna = 0x329e;
15639 u16 initA_gaincode_rev5 = 0x729e;
15640 u16 initA_gaincode_rev6 = 0x729e;
15641 u16 init_gaincode;
15642 u16 clip1hiG_gaincode = 0x107e;
15643 u16 clip1hiG_gaincode_rev4 = 0x007e;
15644 u16 clip1hiG_gaincode_rev5 = 0x1076;
15645 u16 clip1hiG_gaincode_rev6 = 0x007e;
15646 u16 clip1hiA_gaincode = 0x00de;
15647 u16 clip1hiA_gaincode_rev4 = 0x029e;
15648 u16 clip1hiA_gaincode_rev5 = 0x029e;
15649 u16 clip1hiA_gaincode_rev6 = 0x029e;
15650 u16 clip1hi_gaincode;
15651 u16 clip1mdG_gaincode = 0x0066;
15652 u16 clip1mdA_gaincode = 0x00ca;
15653 u16 clip1mdA_gaincode_rev4 = 0x1084;
15654 u16 clip1mdA_gaincode_rev5 = 0x2084;
15655 u16 clip1mdA_gaincode_rev6 = 0x2084;
15656 u16 clip1md_gaincode = 0;
15657 u16 clip1loG_gaincode = 0x0074;
15658 u16 clip1loG_gaincode_rev5[] = {
15659 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15660 };
15661 u16 clip1loG_gaincode_rev6[] = {
15662 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15663 };
15664 u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15665 u16 clip1loA_gaincode = 0x00cc;
15666 u16 clip1loA_gaincode_rev4 = 0x0086;
15667 u16 clip1loA_gaincode_rev5 = 0x2086;
15668 u16 clip1loA_gaincode_rev6 = 0x2086;
15669 u16 clip1lo_gaincode;
15670 u8 crsminG_th = 0x18;
15671 u8 crsminG_th_rev5 = 0x18;
15672 u8 crsminG_th_rev6 = 0x18;
15673 u8 crsminA_th = 0x1e;
15674 u8 crsminA_th_rev4 = 0x24;
15675 u8 crsminA_th_rev5 = 0x24;
15676 u8 crsminA_th_rev6 = 0x24;
15677 u8 crsmin_th;
15678 u8 crsminlG_th = 0x18;
15679 u8 crsminlG_th_rev5 = 0x18;
15680 u8 crsminlG_th_rev6 = 0x18;
15681 u8 crsminlA_th = 0x1e;
15682 u8 crsminlA_th_rev4 = 0x24;
15683 u8 crsminlA_th_rev5 = 0x24;
15684 u8 crsminlA_th_rev6 = 0x24;
15685 u8 crsminl_th = 0;
15686 u8 crsminuG_th = 0x18;
15687 u8 crsminuG_th_rev5 = 0x18;
15688 u8 crsminuG_th_rev6 = 0x18;
15689 u8 crsminuA_th = 0x1e;
15690 u8 crsminuA_th_rev4 = 0x24;
15691 u8 crsminuA_th_rev5 = 0x24;
15692 u8 crsminuA_th_rev6 = 0x24;
15693 u8 crsminuA_th_rev6_224B0 = 0x2d;
15694 u8 crsminu_th;
15695 u16 nbclipG_th = 0x20d;
15696 u16 nbclipG_th_rev4 = 0x1a1;
15697 u16 nbclipG_th_rev5 = 0x1d0;
15698 u16 nbclipG_th_rev6 = 0x1d0;
15699 u16 nbclipA_th = 0x1a1;
15700 u16 nbclipA_th_rev4 = 0x107;
15701 u16 nbclipA_th_rev5 = 0x0a9;
15702 u16 nbclipA_th_rev6 = 0x0f0;
15703 u16 nbclip_th = 0;
15704 u8 w1clipG_th = 5;
15705 u8 w1clipG_th_rev5 = 9;
15706 u8 w1clipG_th_rev6 = 5;
15707 u8 w1clipA_th = 25, w1clip_th;
15708 u8 rssi_gain_default = 0x50;
15709 u8 rssiG_gain_rev6_224B0 = 0x50;
15710 u8 rssiA_gain_rev5 = 0x90;
15711 u8 rssiA_gain_rev6 = 0x90;
15712 u8 rssi_gain;
15713 u16 regval[21];
15714 u8 triso;
15715
15716 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15717 pi->srom_fem2g.triso;
15718
15719 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15720 if (pi->pubpi.radiorev == 5) {
15721 wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15722 } else if (pi->pubpi.radiorev == 7) {
15723 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15724
15725 mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15726 mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15727
15728 } else if ((pi->pubpi.radiorev == 3)
15729 || (pi->pubpi.radiorev == 8)) {
15730 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15731
15732 if (pi->pubpi.radiorev == 8) {
15733 mod_phy_reg(pi, 0x283,
15734 (0xff << 0), (0x44 << 0));
15735 mod_phy_reg(pi, 0x280,
15736 (0xff << 0), (0x44 << 0));
15737 }
15738 } else {
15739 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15740 }
15741 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15742
15743 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15744
15745 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15746 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15747
15748 currband =
15749 read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15750 if (currband == 0) {
15751 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15752 if (pi->pubpi.radiorev == 11) {
15753 lna1_gain_db = lna1G_gain_db_rev6_224B0;
15754 lna2_gain_db = lna2G_gain_db_rev6_224B0;
15755 rfseq_init_gain =
15756 rfseqG_init_gain_rev6_224B0;
15757 init_gaincode =
15758 initG_gaincode_rev6_224B0;
15759 clip1hi_gaincode =
15760 clip1hiG_gaincode_rev6;
15761 clip1lo_gaincode =
15762 clip1loG_gaincode_rev6_224B0;
15763 nbclip_th = nbclipG_th_rev6;
15764 w1clip_th = w1clipG_th_rev6;
15765 crsmin_th = crsminG_th_rev6;
15766 crsminl_th = crsminlG_th_rev6;
15767 crsminu_th = crsminuG_th_rev6;
15768 rssi_gain = rssiG_gain_rev6_224B0;
15769 } else {
15770 lna1_gain_db = lna1G_gain_db_rev6;
15771 lna2_gain_db = lna2G_gain_db_rev6;
15772 if (pi->sh->boardflags & BFL_EXTLNA) {
15773
15774 rfseq_init_gain =
15775 rfseqG_init_gain_rev6_elna;
15776 init_gaincode =
15777 initG_gaincode_rev6_elna;
15778 } else {
15779 rfseq_init_gain =
15780 rfseqG_init_gain_rev6;
15781 init_gaincode =
15782 initG_gaincode_rev6;
15783 }
15784 clip1hi_gaincode =
15785 clip1hiG_gaincode_rev6;
15786 switch (triso) {
15787 case 0:
15788 clip1lo_gaincode =
15789 clip1loG_gaincode_rev6
15790 [0];
15791 break;
15792 case 1:
15793 clip1lo_gaincode =
15794 clip1loG_gaincode_rev6
15795 [1];
15796 break;
15797 case 2:
15798 clip1lo_gaincode =
15799 clip1loG_gaincode_rev6
15800 [2];
15801 break;
15802 case 3:
15803 default:
15804
15805 clip1lo_gaincode =
15806 clip1loG_gaincode_rev6
15807 [3];
15808 break;
15809 case 4:
15810 clip1lo_gaincode =
15811 clip1loG_gaincode_rev6
15812 [4];
15813 break;
15814 case 5:
15815 clip1lo_gaincode =
15816 clip1loG_gaincode_rev6
15817 [5];
15818 break;
15819 case 6:
15820 clip1lo_gaincode =
15821 clip1loG_gaincode_rev6
15822 [6];
15823 break;
15824 case 7:
15825 clip1lo_gaincode =
15826 clip1loG_gaincode_rev6
15827 [7];
15828 break;
15829 }
15830 nbclip_th = nbclipG_th_rev6;
15831 w1clip_th = w1clipG_th_rev6;
15832 crsmin_th = crsminG_th_rev6;
15833 crsminl_th = crsminlG_th_rev6;
15834 crsminu_th = crsminuG_th_rev6;
15835 rssi_gain = rssi_gain_default;
15836 }
15837 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15838 lna1_gain_db = lna1G_gain_db_rev5;
15839 lna2_gain_db = lna2G_gain_db_rev5;
15840 if (pi->sh->boardflags & BFL_EXTLNA) {
15841
15842 rfseq_init_gain =
15843 rfseqG_init_gain_rev5_elna;
15844 init_gaincode =
15845 initG_gaincode_rev5_elna;
15846 } else {
15847 rfseq_init_gain = rfseqG_init_gain_rev5;
15848 init_gaincode = initG_gaincode_rev5;
15849 }
15850 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15851 switch (triso) {
15852 case 0:
15853 clip1lo_gaincode =
15854 clip1loG_gaincode_rev5[0];
15855 break;
15856 case 1:
15857 clip1lo_gaincode =
15858 clip1loG_gaincode_rev5[1];
15859 break;
15860 case 2:
15861 clip1lo_gaincode =
15862 clip1loG_gaincode_rev5[2];
15863 break;
15864 case 3:
15865
15866 clip1lo_gaincode =
15867 clip1loG_gaincode_rev5[3];
15868 break;
15869 case 4:
15870 clip1lo_gaincode =
15871 clip1loG_gaincode_rev5[4];
15872 break;
15873 case 5:
15874 clip1lo_gaincode =
15875 clip1loG_gaincode_rev5[5];
15876 break;
15877 case 6:
15878 clip1lo_gaincode =
15879 clip1loG_gaincode_rev5[6];
15880 break;
15881 case 7:
15882 clip1lo_gaincode =
15883 clip1loG_gaincode_rev5[7];
15884 break;
15885 default:
15886 clip1lo_gaincode =
15887 clip1loG_gaincode_rev5[3];
15888 break;
15889 }
15890 nbclip_th = nbclipG_th_rev5;
15891 w1clip_th = w1clipG_th_rev5;
15892 crsmin_th = crsminG_th_rev5;
15893 crsminl_th = crsminlG_th_rev5;
15894 crsminu_th = crsminuG_th_rev5;
15895 rssi_gain = rssi_gain_default;
15896 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15897 lna1_gain_db = lna1G_gain_db_rev4;
15898 lna2_gain_db = lna2G_gain_db;
15899 rfseq_init_gain = rfseqG_init_gain_rev4;
15900 init_gaincode = initG_gaincode_rev4;
15901 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15902 clip1lo_gaincode = clip1loG_gaincode;
15903 nbclip_th = nbclipG_th_rev4;
15904 w1clip_th = w1clipG_th;
15905 crsmin_th = crsminG_th;
15906 crsminl_th = crsminlG_th;
15907 crsminu_th = crsminuG_th;
15908 rssi_gain = rssi_gain_default;
15909 } else {
15910 lna1_gain_db = lna1G_gain_db;
15911 lna2_gain_db = lna2G_gain_db;
15912 rfseq_init_gain = rfseqG_init_gain;
15913 init_gaincode = initG_gaincode;
15914 clip1hi_gaincode = clip1hiG_gaincode;
15915 clip1lo_gaincode = clip1loG_gaincode;
15916 nbclip_th = nbclipG_th;
15917 w1clip_th = w1clipG_th;
15918 crsmin_th = crsminG_th;
15919 crsminl_th = crsminlG_th;
15920 crsminu_th = crsminuG_th;
15921 rssi_gain = rssi_gain_default;
15922 }
15923 tia_gain_db = tiaG_gain_db;
15924 tia_gainbits = tiaG_gainbits;
15925 clip1md_gaincode = clip1mdG_gaincode;
15926 } else {
15927 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15928 lna1_gain_db = lna1A_gain_db_rev6;
15929 lna2_gain_db = lna2A_gain_db_rev6;
15930 tia_gain_db = tiaA_gain_db_rev6;
15931 tia_gainbits = tiaA_gainbits_rev6;
15932 rfseq_init_gain = rfseqA_init_gain_rev6;
15933 init_gaincode = initA_gaincode_rev6;
15934 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15935 clip1md_gaincode = clip1mdA_gaincode_rev6;
15936 clip1lo_gaincode = clip1loA_gaincode_rev6;
15937 crsmin_th = crsminA_th_rev6;
15938 crsminl_th = crsminlA_th_rev6;
15939 if ((pi->pubpi.radiorev == 11) &&
15940 (CHSPEC_IS40(pi->radio_chanspec) == 0))
15941 crsminu_th = crsminuA_th_rev6_224B0;
15942 else
15943 crsminu_th = crsminuA_th_rev6;
15944
15945 nbclip_th = nbclipA_th_rev6;
15946 rssi_gain = rssiA_gain_rev6;
15947 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15948 lna1_gain_db = lna1A_gain_db_rev5;
15949 lna2_gain_db = lna2A_gain_db_rev5;
15950 tia_gain_db = tiaA_gain_db_rev5;
15951 tia_gainbits = tiaA_gainbits_rev5;
15952 rfseq_init_gain = rfseqA_init_gain_rev5;
15953 init_gaincode = initA_gaincode_rev5;
15954 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15955 clip1md_gaincode = clip1mdA_gaincode_rev5;
15956 clip1lo_gaincode = clip1loA_gaincode_rev5;
15957 crsmin_th = crsminA_th_rev5;
15958 crsminl_th = crsminlA_th_rev5;
15959 crsminu_th = crsminuA_th_rev5;
15960 nbclip_th = nbclipA_th_rev5;
15961 rssi_gain = rssiA_gain_rev5;
15962 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15963 lna1_gain_db = lna1A_gain_db_rev4;
15964 lna2_gain_db = lna2A_gain_db_rev4;
15965 tia_gain_db = tiaA_gain_db_rev4;
15966 tia_gainbits = tiaA_gainbits_rev4;
15967 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15968
15969 rfseq_init_gain =
15970 rfseqA_init_gain_rev4_elna;
15971 init_gaincode =
15972 initA_gaincode_rev4_elna;
15973 } else {
15974 rfseq_init_gain = rfseqA_init_gain_rev4;
15975 init_gaincode = initA_gaincode_rev4;
15976 }
15977 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15978 clip1md_gaincode = clip1mdA_gaincode_rev4;
15979 clip1lo_gaincode = clip1loA_gaincode_rev4;
15980 crsmin_th = crsminA_th_rev4;
15981 crsminl_th = crsminlA_th_rev4;
15982 crsminu_th = crsminuA_th_rev4;
15983 nbclip_th = nbclipA_th_rev4;
15984 rssi_gain = rssi_gain_default;
15985 } else {
15986 lna1_gain_db = lna1A_gain_db;
15987 lna2_gain_db = lna2A_gain_db;
15988 tia_gain_db = tiaA_gain_db;
15989 tia_gainbits = tiaA_gainbits;
15990 rfseq_init_gain = rfseqA_init_gain;
15991 init_gaincode = initA_gaincode;
15992 clip1hi_gaincode = clip1hiA_gaincode;
15993 clip1md_gaincode = clip1mdA_gaincode;
15994 clip1lo_gaincode = clip1loA_gaincode;
15995 crsmin_th = crsminA_th;
15996 crsminl_th = crsminlA_th;
15997 crsminu_th = crsminuA_th;
15998 nbclip_th = nbclipA_th;
15999 rssi_gain = rssi_gain_default;
16000 }
16001 w1clip_th = w1clipA_th;
16002 }
16003
16004 write_radio_reg(pi,
16005 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16006 RADIO_2056_RX0), 0x17);
16007 write_radio_reg(pi,
16008 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
16009 RADIO_2056_RX1), 0x17);
16010
16011 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
16012 0xf0);
16013 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
16014 0xf0);
16015
16016 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
16017 0x0);
16018 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
16019 0x0);
16020
16021 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
16022 rssi_gain);
16023 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
16024 rssi_gain);
16025
16026 write_radio_reg(pi,
16027 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16028 RADIO_2056_RX0), 0x17);
16029 write_radio_reg(pi,
16030 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
16031 RADIO_2056_RX1), 0x17);
16032
16033 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
16034 0xFF);
16035 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
16036 0xFF);
16037
16038 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
16039 8, lna1_gain_db);
16040 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
16041 8, lna1_gain_db);
16042
16043 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
16044 8, lna2_gain_db);
16045 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
16046 8, lna2_gain_db);
16047
16048 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
16049 8, tia_gain_db);
16050 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
16051 8, tia_gain_db);
16052
16053 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
16054 8, tia_gainbits);
16055 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
16056 8, tia_gainbits);
16057
16058 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
16059 8, &lpf_gain_db);
16060 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
16061 8, &lpf_gain_db);
16062 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
16063 8, &lpf_gainbits);
16064 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
16065 8, &lpf_gainbits);
16066
16067 write_phy_reg(pi, 0x20, init_gaincode);
16068 write_phy_reg(pi, 0x2a7, init_gaincode);
16069
16070 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16071 pi->pubpi.phy_corenum, 0x106, 16,
16072 rfseq_init_gain);
16073
16074 write_phy_reg(pi, 0x22, clip1hi_gaincode);
16075 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
16076
16077 write_phy_reg(pi, 0x24, clip1md_gaincode);
16078 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
16079
16080 write_phy_reg(pi, 0x37, clip1lo_gaincode);
16081 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
16082
16083 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
16084 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
16085 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
16086
16087 write_phy_reg(pi, 0x2b, nbclip_th);
16088 write_phy_reg(pi, 0x41, nbclip_th);
16089
16090 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16091 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16092
16093 write_phy_reg(pi, 0x150, 0x809c);
16094
16095 } else {
16096
16097 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16098 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16099
16100 write_phy_reg(pi, 0x2b, 0x84);
16101 write_phy_reg(pi, 0x41, 0x84);
16102
16103 if (CHSPEC_IS20(pi->radio_chanspec)) {
16104 write_phy_reg(pi, 0x6b, 0x2b);
16105 write_phy_reg(pi, 0x6c, 0x2b);
16106 write_phy_reg(pi, 0x6d, 0x9);
16107 write_phy_reg(pi, 0x6e, 0x9);
16108 }
16109
16110 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16111 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16112 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16113
16114 if (CHSPEC_IS20(pi->radio_chanspec)) {
16115 mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16116 mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16117
16118 mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16119 mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16120 }
16121
16122 write_phy_reg(pi, 0x150, 0x809c);
16123
16124 if (pi->nphy_gain_boost)
16125 if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16126 (CHSPEC_IS40(pi->radio_chanspec)))
16127 hpf_code = 4;
16128 else
16129 hpf_code = 5;
16130 else if (CHSPEC_IS40(pi->radio_chanspec))
16131 hpf_code = 6;
16132 else
16133 hpf_code = 7;
16134
16135 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16136 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16137
16138 for (ctr = 0; ctr < 4; ctr++)
16139 regval[ctr] = (hpf_code << 8) | 0x7c;
16140 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16141
16142 wlc_phy_adjust_lnagaintbl_nphy(pi);
16143
16144 if (pi->nphy_elna_gain_config) {
16145 regval[0] = 0;
16146 regval[1] = 1;
16147 regval[2] = 1;
16148 regval[3] = 1;
16149 wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16150 wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16151
16152 for (ctr = 0; ctr < 4; ctr++)
16153 regval[ctr] = (hpf_code << 8) | 0x74;
16154 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16155 }
16156
16157 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16158 for (ctr = 0; ctr < 21; ctr++)
16159 regval[ctr] = 3 * ctr;
16160 wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16161 wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16162
16163 for (ctr = 0; ctr < 21; ctr++)
16164 regval[ctr] = (u16) ctr;
16165 wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16166 wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16167 }
16168
16169 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16170 rfseq_updategainu_events,
16171 rfseq_updategainu_dlys,
16172 sizeof(rfseq_updategainu_events) /
16173 sizeof(rfseq_updategainu_events[0]));
16174
16175 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16176
16177 if (CHSPEC_IS2G(pi->radio_chanspec))
16178 mod_phy_reg(pi,
16179 (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16180 0x7f, 0x4);
16181 }
16182 }
16183
16184 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16185 {
16186 u8 rfseq_rx2tx_events[] = {
16187 NPHY_RFSEQ_CMD_NOP,
16188 NPHY_RFSEQ_CMD_RXG_FBW,
16189 NPHY_RFSEQ_CMD_TR_SWITCH,
16190 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16191 NPHY_RFSEQ_CMD_RXPD_TXPD,
16192 NPHY_RFSEQ_CMD_TX_GAIN,
16193 NPHY_RFSEQ_CMD_EXT_PA
16194 };
16195 u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16196 u8 rfseq_tx2rx_events[] = {
16197 NPHY_RFSEQ_CMD_NOP,
16198 NPHY_RFSEQ_CMD_EXT_PA,
16199 NPHY_RFSEQ_CMD_TX_GAIN,
16200 NPHY_RFSEQ_CMD_RXPD_TXPD,
16201 NPHY_RFSEQ_CMD_TR_SWITCH,
16202 NPHY_RFSEQ_CMD_RXG_FBW,
16203 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16204 };
16205 u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16206 u8 rfseq_tx2rx_events_rev3[] = {
16207 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16208 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16209 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16210 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16211 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16212 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16213 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16214 NPHY_REV3_RFSEQ_CMD_END
16215 };
16216 u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16217 u8 rfseq_rx2tx_events_rev3[] = {
16218 NPHY_REV3_RFSEQ_CMD_NOP,
16219 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16220 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16221 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16222 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16223 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16224 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16225 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16226 NPHY_REV3_RFSEQ_CMD_END
16227 };
16228 u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16229
16230 u8 rfseq_rx2tx_events_rev3_ipa[] = {
16231 NPHY_REV3_RFSEQ_CMD_NOP,
16232 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16233 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16234 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16235 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16236 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16237 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16238 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16239 NPHY_REV3_RFSEQ_CMD_END
16240 };
16241 u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16242 u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16243
16244 s16 alpha0, alpha1, alpha2;
16245 s16 beta0, beta1, beta2;
16246 u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16247 stbc_data_weights;
16248 u8 chan_freq_range = 0;
16249 u16 dac_control = 0x0002;
16250 u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16251 u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16252 u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16253 u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16254 u16 *aux_adc_vmid;
16255 u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16256 u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16257 u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16258 u16 *aux_adc_gain;
16259 u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16260 u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16261 s32 min_nvar_val = 0x18d;
16262 s32 min_nvar_offset_6mbps = 20;
16263 u8 pdetrange;
16264 u8 triso;
16265 u16 regval;
16266 u16 afectrl_adc_ctrl1_rev7 = 0x20;
16267 u16 afectrl_adc_ctrl2_rev7 = 0x0;
16268 u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16269 u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16270 u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16271 u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16272 u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16273 u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16274 u16 ipalvlshift_3p3_war_en = 0;
16275 u16 rccal_bcap_val, rccal_scap_val;
16276 u16 rccal_tx20_11b_bcap = 0;
16277 u16 rccal_tx20_11b_scap = 0;
16278 u16 rccal_tx20_11n_bcap = 0;
16279 u16 rccal_tx20_11n_scap = 0;
16280 u16 rccal_tx40_11n_bcap = 0;
16281 u16 rccal_tx40_11n_scap = 0;
16282 u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16283 u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16284 u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16285 u16 tx_lpf_bw_ofdm_20mhz = 0;
16286 u16 tx_lpf_bw_ofdm_40mhz = 0;
16287 u16 tx_lpf_bw_11b = 0;
16288 u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16289 u16 txgm_idac_bleed = 0;
16290 bool rccal_ovrd = false;
16291 u16 freq;
16292 int coreNum;
16293
16294 if (CHSPEC_IS5G(pi->radio_chanspec))
16295 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16296 else
16297 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16298
16299 if (pi->phyhang_avoid)
16300 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16301
16302 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16303
16304 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16305
16306 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16307 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16308
16309 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16310 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16311 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16312 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16313 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16314 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16315 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16316 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16317 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16318 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16319 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16320 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16321 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16322 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16323 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16324 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16325 }
16326
16327 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16328 write_phy_reg(pi, 0x23f, 0x1b0);
16329 write_phy_reg(pi, 0x240, 0x1b0);
16330 }
16331
16332 if (NREV_GE(pi->pubpi.phy_rev, 8))
16333 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16334
16335 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16336 &dac_control);
16337 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16338 &dac_control);
16339
16340 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16341 1, 0, 32, &leg_data_weights);
16342 leg_data_weights = leg_data_weights & 0xffffff;
16343 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16344 1, 0, 32, &leg_data_weights);
16345
16346 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16347 2, 0x15e, 16,
16348 rfseq_rx2tx_dacbufpu_rev7);
16349 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16350 rfseq_rx2tx_dacbufpu_rev7);
16351
16352 if (PHY_IPA(pi))
16353 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16354 rfseq_rx2tx_events_rev3_ipa,
16355 rfseq_rx2tx_dlys_rev3_ipa,
16356 ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16357
16358 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16359 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16360
16361 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16362 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16363 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16364
16365 if (PHY_IPA(pi)) {
16366
16367 if (((pi->pubpi.radiorev == 5)
16368 && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16369 || (pi->pubpi.radiorev == 7)
16370 || (pi->pubpi.radiorev == 8)) {
16371
16372 rccal_bcap_val =
16373 read_radio_reg(
16374 pi,
16375 RADIO_2057_RCCAL_BCAP_VAL);
16376 rccal_scap_val =
16377 read_radio_reg(
16378 pi,
16379 RADIO_2057_RCCAL_SCAP_VAL);
16380
16381 rccal_tx20_11b_bcap = rccal_bcap_val;
16382 rccal_tx20_11b_scap = rccal_scap_val;
16383
16384 if ((pi->pubpi.radiorev == 5) &&
16385 (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16386
16387 rccal_tx20_11n_bcap = rccal_bcap_val;
16388 rccal_tx20_11n_scap = rccal_scap_val;
16389 rccal_tx40_11n_bcap = 0xc;
16390 rccal_tx40_11n_scap = 0xc;
16391
16392 rccal_ovrd = true;
16393
16394 } else if ((pi->pubpi.radiorev == 7)
16395 || (pi->pubpi.radiorev == 8)) {
16396
16397 tx_lpf_bw_ofdm_20mhz = 4;
16398 tx_lpf_bw_11b = 1;
16399
16400 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16401 rccal_tx20_11n_bcap = 0xc;
16402 rccal_tx20_11n_scap = 0xc;
16403 rccal_tx40_11n_bcap = 0xa;
16404 rccal_tx40_11n_scap = 0xa;
16405 } else {
16406 rccal_tx20_11n_bcap = 0x14;
16407 rccal_tx20_11n_scap = 0x14;
16408 rccal_tx40_11n_bcap = 0xf;
16409 rccal_tx40_11n_scap = 0xf;
16410 }
16411
16412 rccal_ovrd = true;
16413 }
16414 }
16415
16416 } else {
16417
16418 if (pi->pubpi.radiorev == 5) {
16419
16420 tx_lpf_bw_ofdm_20mhz = 1;
16421 tx_lpf_bw_ofdm_40mhz = 3;
16422
16423 rccal_bcap_val =
16424 read_radio_reg(
16425 pi,
16426 RADIO_2057_RCCAL_BCAP_VAL);
16427 rccal_scap_val =
16428 read_radio_reg(
16429 pi,
16430 RADIO_2057_RCCAL_SCAP_VAL);
16431
16432 rccal_tx20_11b_bcap = rccal_bcap_val;
16433 rccal_tx20_11b_scap = rccal_scap_val;
16434
16435 rccal_tx20_11n_bcap = 0x13;
16436 rccal_tx20_11n_scap = 0x11;
16437 rccal_tx40_11n_bcap = 0x13;
16438 rccal_tx40_11n_scap = 0x11;
16439
16440 rccal_ovrd = true;
16441 }
16442 }
16443
16444 if (rccal_ovrd) {
16445
16446 rx2tx_lpf_rc_lut_tx20_11b =
16447 (rccal_tx20_11b_bcap << 8) |
16448 (rccal_tx20_11b_scap << 3) |
16449 tx_lpf_bw_11b;
16450 rx2tx_lpf_rc_lut_tx20_11n =
16451 (rccal_tx20_11n_bcap << 8) |
16452 (rccal_tx20_11n_scap << 3) |
16453 tx_lpf_bw_ofdm_20mhz;
16454 rx2tx_lpf_rc_lut_tx40_11n =
16455 (rccal_tx40_11n_bcap << 8) |
16456 (rccal_tx40_11n_scap << 3) |
16457 tx_lpf_bw_ofdm_40mhz;
16458
16459 for (coreNum = 0; coreNum <= 1; coreNum++) {
16460 wlc_phy_table_write_nphy(
16461 pi, NPHY_TBL_ID_RFSEQ,
16462 1,
16463 0x152 + coreNum * 0x10,
16464 16,
16465 &rx2tx_lpf_rc_lut_tx20_11b);
16466 wlc_phy_table_write_nphy(
16467 pi, NPHY_TBL_ID_RFSEQ,
16468 1,
16469 0x153 + coreNum * 0x10,
16470 16,
16471 &rx2tx_lpf_rc_lut_tx20_11n);
16472 wlc_phy_table_write_nphy(
16473 pi, NPHY_TBL_ID_RFSEQ,
16474 1,
16475 0x154 + coreNum * 0x10,
16476 16,
16477 &rx2tx_lpf_rc_lut_tx20_11n);
16478 wlc_phy_table_write_nphy(
16479 pi, NPHY_TBL_ID_RFSEQ,
16480 1,
16481 0x155 + coreNum * 0x10,
16482 16,
16483 &rx2tx_lpf_rc_lut_tx40_11n);
16484 wlc_phy_table_write_nphy(
16485 pi, NPHY_TBL_ID_RFSEQ,
16486 1,
16487 0x156 + coreNum * 0x10,
16488 16,
16489 &rx2tx_lpf_rc_lut_tx40_11n);
16490 wlc_phy_table_write_nphy(
16491 pi, NPHY_TBL_ID_RFSEQ,
16492 1,
16493 0x157 + coreNum * 0x10,
16494 16,
16495 &rx2tx_lpf_rc_lut_tx40_11n);
16496 wlc_phy_table_write_nphy(
16497 pi, NPHY_TBL_ID_RFSEQ,
16498 1,
16499 0x158 + coreNum * 0x10,
16500 16,
16501 &rx2tx_lpf_rc_lut_tx40_11n);
16502 wlc_phy_table_write_nphy(
16503 pi, NPHY_TBL_ID_RFSEQ,
16504 1,
16505 0x159 + coreNum * 0x10,
16506 16,
16507 &rx2tx_lpf_rc_lut_tx40_11n);
16508 }
16509
16510 wlc_phy_rfctrl_override_nphy_rev7(
16511 pi, (0x1 << 4),
16512 1, 0x3, 0,
16513 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16514 }
16515
16516 write_phy_reg(pi, 0x32f, 0x3);
16517
16518 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16519 wlc_phy_rfctrl_override_nphy_rev7(
16520 pi, (0x1 << 2),
16521 1, 0x3, 0,
16522 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16523
16524 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16525 (pi->pubpi.radiorev == 6)) {
16526 if ((pi->sh->sromrev >= 8)
16527 && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16528 ipalvlshift_3p3_war_en = 1;
16529
16530 if (ipalvlshift_3p3_war_en) {
16531 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16532 0x5);
16533 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16534 0x30);
16535 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16536 or_radio_reg(pi,
16537 RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16538 0x1);
16539 or_radio_reg(pi,
16540 RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16541 0x1);
16542
16543 ipa2g_mainbias = 0x1f;
16544
16545 ipa2g_casconv = 0x6f;
16546
16547 ipa2g_biasfilt = 0xaa;
16548 } else {
16549
16550 ipa2g_mainbias = 0x2b;
16551
16552 ipa2g_casconv = 0x7f;
16553
16554 ipa2g_biasfilt = 0xee;
16555 }
16556
16557 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16558 for (coreNum = 0; coreNum <= 1; coreNum++) {
16559 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16560 coreNum, IPA2G_IMAIN,
16561 ipa2g_mainbias);
16562 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16563 coreNum, IPA2G_CASCONV,
16564 ipa2g_casconv);
16565 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16566 coreNum,
16567 IPA2G_BIAS_FILTER,
16568 ipa2g_biasfilt);
16569 }
16570 }
16571 }
16572
16573 if (PHY_IPA(pi)) {
16574 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16575 if ((pi->pubpi.radiorev == 3)
16576 || (pi->pubpi.radiorev == 4)
16577 || (pi->pubpi.radiorev == 6))
16578 txgm_idac_bleed = 0x7f;
16579
16580 for (coreNum = 0; coreNum <= 1; coreNum++) {
16581 if (txgm_idac_bleed != 0)
16582 WRITE_RADIO_REG4(
16583 pi, RADIO_2057,
16584 CORE, coreNum,
16585 TXGM_IDAC_BLEED,
16586 txgm_idac_bleed);
16587 }
16588
16589 if (pi->pubpi.radiorev == 5) {
16590
16591 for (coreNum = 0; coreNum <= 1;
16592 coreNum++) {
16593 WRITE_RADIO_REG4(pi, RADIO_2057,
16594 CORE, coreNum,
16595 IPA2G_CASCONV,
16596 0x13);
16597 WRITE_RADIO_REG4(pi, RADIO_2057,
16598 CORE, coreNum,
16599 IPA2G_IMAIN,
16600 0x1f);
16601 WRITE_RADIO_REG4(
16602 pi, RADIO_2057,
16603 CORE, coreNum,
16604 IPA2G_BIAS_FILTER,
16605 0xee);
16606 WRITE_RADIO_REG4(pi, RADIO_2057,
16607 CORE, coreNum,
16608 PAD2G_IDACS,
16609 0x8a);
16610 WRITE_RADIO_REG4(
16611 pi, RADIO_2057,
16612 CORE, coreNum,
16613 PAD_BIAS_FILTER_BWS,
16614 0x3e);
16615 }
16616
16617 } else if ((pi->pubpi.radiorev == 7)
16618 || (pi->pubpi.radiorev == 8)) {
16619
16620 if (CHSPEC_IS40(pi->radio_chanspec) ==
16621 0) {
16622 WRITE_RADIO_REG4(pi, RADIO_2057,
16623 CORE, 0,
16624 IPA2G_IMAIN,
16625 0x14);
16626 WRITE_RADIO_REG4(pi, RADIO_2057,
16627 CORE, 1,
16628 IPA2G_IMAIN,
16629 0x12);
16630 } else {
16631 WRITE_RADIO_REG4(pi, RADIO_2057,
16632 CORE, 0,
16633 IPA2G_IMAIN,
16634 0x16);
16635 WRITE_RADIO_REG4(pi, RADIO_2057,
16636 CORE, 1,
16637 IPA2G_IMAIN,
16638 0x16);
16639 }
16640 }
16641
16642 } else {
16643 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16644 pi->radio_chanspec));
16645 if (((freq >= 5180) && (freq <= 5230))
16646 || ((freq >= 5745) && (freq <= 5805))) {
16647 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16648 0, IPA5G_BIAS_FILTER,
16649 0xff);
16650 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16651 1, IPA5G_BIAS_FILTER,
16652 0xff);
16653 }
16654 }
16655 } else {
16656
16657 if (pi->pubpi.radiorev != 5) {
16658 for (coreNum = 0; coreNum <= 1; coreNum++) {
16659 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16660 coreNum,
16661 TXMIX2G_TUNE_BOOST_PU,
16662 0x61);
16663 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16664 coreNum,
16665 TXGM_IDAC_BLEED, 0x70);
16666 }
16667 }
16668 }
16669
16670 if (pi->pubpi.radiorev == 4) {
16671 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16672 0x05, 16,
16673 &afectrl_adc_ctrl1_rev7);
16674 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16675 0x15, 16,
16676 &afectrl_adc_ctrl1_rev7);
16677
16678 for (coreNum = 0; coreNum <= 1; coreNum++) {
16679 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16680 AFE_VCM_CAL_MASTER, 0x0);
16681 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16682 AFE_SET_VCM_I, 0x3f);
16683 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16684 AFE_SET_VCM_Q, 0x3f);
16685 }
16686 } else {
16687 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16688 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16689 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16690 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16691
16692 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16693 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16694 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16695 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16696
16697 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16698 0x05, 16,
16699 &afectrl_adc_ctrl2_rev7);
16700 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16701 0x15, 16,
16702 &afectrl_adc_ctrl2_rev7);
16703
16704 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16705 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16706 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16707 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16708 }
16709
16710 write_phy_reg(pi, 0x6a, 0x2);
16711
16712 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16713 &min_nvar_offset_6mbps);
16714
16715 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16716 &rfseq_pktgn_lpf_hpc_rev7);
16717
16718 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16719 &rfseq_pktgn_lpf_h_hpc_rev7);
16720
16721 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16722 &rfseq_htpktgn_lpf_hpc_rev7);
16723
16724 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16725 &rfseq_cckpktgn_lpf_hpc_rev7);
16726
16727 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16728 &rfseq_tx2rx_lpf_h_hpc_rev7);
16729
16730 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16731 &rfseq_rx2tx_lpf_h_hpc_rev7);
16732
16733 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16734 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16735 32, &min_nvar_val);
16736 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16737 127, 32, &min_nvar_val);
16738 } else {
16739 min_nvar_val = noise_var_tbl_rev7[3];
16740 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16741 32, &min_nvar_val);
16742
16743 min_nvar_val = noise_var_tbl_rev7[127];
16744 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16745 127, 32, &min_nvar_val);
16746 }
16747
16748 wlc_phy_workarounds_nphy_gainctrl(pi);
16749
16750 pdetrange =
16751 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16752 pdetrange : pi->srom_fem2g.pdetrange;
16753
16754 if (pdetrange == 0) {
16755 chan_freq_range =
16756 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16757 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16758 aux_adc_vmid_rev7_core0[3] = 0x70;
16759 aux_adc_vmid_rev7_core1[3] = 0x70;
16760 aux_adc_gain_rev7[3] = 2;
16761 } else {
16762 aux_adc_vmid_rev7_core0[3] = 0x80;
16763 aux_adc_vmid_rev7_core1[3] = 0x80;
16764 aux_adc_gain_rev7[3] = 3;
16765 }
16766 } else if (pdetrange == 1) {
16767 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16768 aux_adc_vmid_rev7_core0[3] = 0x7c;
16769 aux_adc_vmid_rev7_core1[3] = 0x7c;
16770 aux_adc_gain_rev7[3] = 2;
16771 } else {
16772 aux_adc_vmid_rev7_core0[3] = 0x8c;
16773 aux_adc_vmid_rev7_core1[3] = 0x8c;
16774 aux_adc_gain_rev7[3] = 1;
16775 }
16776 } else if (pdetrange == 2) {
16777 if (pi->pubpi.radioid == BCM2057_ID) {
16778 if ((pi->pubpi.radiorev == 5)
16779 || (pi->pubpi.radiorev == 7)
16780 || (pi->pubpi.radiorev == 8)) {
16781 if (chan_freq_range ==
16782 WL_CHAN_FREQ_RANGE_2G) {
16783 aux_adc_vmid_rev7_core0[3] =
16784 0x8c;
16785 aux_adc_vmid_rev7_core1[3] =
16786 0x8c;
16787 aux_adc_gain_rev7[3] = 0;
16788 } else {
16789 aux_adc_vmid_rev7_core0[3] =
16790 0x96;
16791 aux_adc_vmid_rev7_core1[3] =
16792 0x96;
16793 aux_adc_gain_rev7[3] = 0;
16794 }
16795 }
16796 }
16797
16798 } else if (pdetrange == 3) {
16799 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16800 aux_adc_vmid_rev7_core0[3] = 0x89;
16801 aux_adc_vmid_rev7_core1[3] = 0x89;
16802 aux_adc_gain_rev7[3] = 0;
16803 }
16804
16805 } else if (pdetrange == 5) {
16806
16807 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16808 aux_adc_vmid_rev7_core0[3] = 0x80;
16809 aux_adc_vmid_rev7_core1[3] = 0x80;
16810 aux_adc_gain_rev7[3] = 3;
16811 } else {
16812 aux_adc_vmid_rev7_core0[3] = 0x70;
16813 aux_adc_vmid_rev7_core1[3] = 0x70;
16814 aux_adc_gain_rev7[3] = 2;
16815 }
16816 }
16817
16818 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16819 &aux_adc_vmid_rev7_core0);
16820 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16821 &aux_adc_vmid_rev7_core1);
16822 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16823 &aux_adc_gain_rev7);
16824 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16825 &aux_adc_gain_rev7);
16826
16827 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16828
16829 write_phy_reg(pi, 0x23f, 0x1f8);
16830 write_phy_reg(pi, 0x240, 0x1f8);
16831
16832 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16833 1, 0, 32, &leg_data_weights);
16834 leg_data_weights = leg_data_weights & 0xffffff;
16835 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16836 1, 0, 32, &leg_data_weights);
16837
16838 alpha0 = 293;
16839 alpha1 = 435;
16840 alpha2 = 261;
16841 beta0 = 366;
16842 beta1 = 205;
16843 beta2 = 32;
16844 write_phy_reg(pi, 0x145, alpha0);
16845 write_phy_reg(pi, 0x146, alpha1);
16846 write_phy_reg(pi, 0x147, alpha2);
16847 write_phy_reg(pi, 0x148, beta0);
16848 write_phy_reg(pi, 0x149, beta1);
16849 write_phy_reg(pi, 0x14a, beta2);
16850
16851 write_phy_reg(pi, 0x38, 0xC);
16852 write_phy_reg(pi, 0x2ae, 0xC);
16853
16854 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16855 rfseq_tx2rx_events_rev3,
16856 rfseq_tx2rx_dlys_rev3,
16857 ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16858
16859 if (PHY_IPA(pi))
16860 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16861 rfseq_rx2tx_events_rev3_ipa,
16862 rfseq_rx2tx_dlys_rev3_ipa,
16863 ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16864
16865 if ((pi->sh->hw_phyrxchain != 0x3) &&
16866 (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16867
16868 if (PHY_IPA(pi)) {
16869 rfseq_rx2tx_dlys_rev3[5] = 59;
16870 rfseq_rx2tx_dlys_rev3[6] = 1;
16871 rfseq_rx2tx_events_rev3[7] =
16872 NPHY_REV3_RFSEQ_CMD_END;
16873 }
16874
16875 wlc_phy_set_rfseq_nphy(
16876 pi, NPHY_RFSEQ_RX2TX,
16877 rfseq_rx2tx_events_rev3,
16878 rfseq_rx2tx_dlys_rev3,
16879 ARRAY_SIZE(rfseq_rx2tx_events_rev3));
16880 }
16881
16882 if (CHSPEC_IS2G(pi->radio_chanspec))
16883 write_phy_reg(pi, 0x6a, 0x2);
16884 else
16885 write_phy_reg(pi, 0x6a, 0x9c40);
16886
16887 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16888
16889 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16890 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16891 32, &min_nvar_val);
16892 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16893 127, 32, &min_nvar_val);
16894 } else {
16895 min_nvar_val = noise_var_tbl_rev3[3];
16896 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16897 32, &min_nvar_val);
16898
16899 min_nvar_val = noise_var_tbl_rev3[127];
16900 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16901 127, 32, &min_nvar_val);
16902 }
16903
16904 wlc_phy_workarounds_nphy_gainctrl(pi);
16905
16906 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16907 &dac_control);
16908 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16909 &dac_control);
16910
16911 pdetrange =
16912 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16913 pdetrange : pi->srom_fem2g.pdetrange;
16914
16915 if (pdetrange == 0) {
16916 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16917 aux_adc_vmid = aux_adc_vmid_rev4;
16918 aux_adc_gain = aux_adc_gain_rev4;
16919 } else {
16920 aux_adc_vmid = aux_adc_vmid_rev3;
16921 aux_adc_gain = aux_adc_gain_rev3;
16922 }
16923 chan_freq_range =
16924 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16925 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16926 switch (chan_freq_range) {
16927 case WL_CHAN_FREQ_RANGE_5GL:
16928 aux_adc_vmid[3] = 0x89;
16929 aux_adc_gain[3] = 0;
16930 break;
16931 case WL_CHAN_FREQ_RANGE_5GM:
16932 aux_adc_vmid[3] = 0x89;
16933 aux_adc_gain[3] = 0;
16934 break;
16935 case WL_CHAN_FREQ_RANGE_5GH:
16936 aux_adc_vmid[3] = 0x89;
16937 aux_adc_gain[3] = 0;
16938 break;
16939 default:
16940 break;
16941 }
16942 }
16943 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16944 0x08, 16, aux_adc_vmid);
16945 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16946 0x18, 16, aux_adc_vmid);
16947 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16948 0x0c, 16, aux_adc_gain);
16949 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16950 0x1c, 16, aux_adc_gain);
16951 } else if (pdetrange == 1) {
16952 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16953 0x08, 16, sk_adc_vmid);
16954 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16955 0x18, 16, sk_adc_vmid);
16956 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16957 0x0c, 16, sk_adc_gain);
16958 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16959 0x1c, 16, sk_adc_gain);
16960 } else if (pdetrange == 2) {
16961
16962 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16963 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16964
16965 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16966 chan_freq_range =
16967 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16968 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16969 bcm_adc_vmid[3] = 0x8e;
16970 bcm_adc_gain[3] = 0x03;
16971 } else {
16972 bcm_adc_vmid[3] = 0x94;
16973 bcm_adc_gain[3] = 0x03;
16974 }
16975 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16976 bcm_adc_vmid[3] = 0x84;
16977 bcm_adc_gain[3] = 0x02;
16978 }
16979
16980 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16981 0x08, 16, bcm_adc_vmid);
16982 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16983 0x18, 16, bcm_adc_vmid);
16984 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16985 0x0c, 16, bcm_adc_gain);
16986 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16987 0x1c, 16, bcm_adc_gain);
16988 } else if (pdetrange == 3) {
16989 chan_freq_range =
16990 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16991 if ((NREV_GE(pi->pubpi.phy_rev, 4))
16992 && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16993
16994 u16 auxadc_vmid[] = {
16995 0xa2, 0xb4, 0xb4, 0x270
16996 };
16997 u16 auxadc_gain[] = {
16998 0x02, 0x02, 0x02, 0x00
16999 };
17000
17001 wlc_phy_table_write_nphy(pi,
17002 NPHY_TBL_ID_AFECTRL, 4,
17003 0x08, 16, auxadc_vmid);
17004 wlc_phy_table_write_nphy(pi,
17005 NPHY_TBL_ID_AFECTRL, 4,
17006 0x18, 16, auxadc_vmid);
17007 wlc_phy_table_write_nphy(pi,
17008 NPHY_TBL_ID_AFECTRL, 4,
17009 0x0c, 16, auxadc_gain);
17010 wlc_phy_table_write_nphy(pi,
17011 NPHY_TBL_ID_AFECTRL, 4,
17012 0x1c, 16, auxadc_gain);
17013 }
17014 } else if ((pdetrange == 4) || (pdetrange == 5)) {
17015 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
17016 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
17017 u16 Vmid[2], Av[2];
17018
17019 chan_freq_range =
17020 wlc_phy_get_chan_freq_range_nphy(pi, 0);
17021 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
17022 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
17023 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
17024 Av[0] = (pdetrange == 4) ? 2 : 0;
17025 Av[1] = (pdetrange == 4) ? 2 : 0;
17026 } else {
17027 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
17028 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
17029 Av[0] = (pdetrange == 4) ? 2 : 0;
17030 Av[1] = (pdetrange == 4) ? 2 : 0;
17031 }
17032
17033 bcm_adc_vmid[3] = Vmid[0];
17034 bcm_adc_gain[3] = Av[0];
17035 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17036 0x08, 16, bcm_adc_vmid);
17037 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17038 0x0c, 16, bcm_adc_gain);
17039
17040 bcm_adc_vmid[3] = Vmid[1];
17041 bcm_adc_gain[3] = Av[1];
17042 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17043 0x18, 16, bcm_adc_vmid);
17044 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
17045 0x1c, 16, bcm_adc_gain);
17046 }
17047
17048 write_radio_reg(pi,
17049 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
17050 0x0);
17051 write_radio_reg(pi,
17052 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
17053 0x0);
17054
17055 write_radio_reg(pi,
17056 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
17057 0x6);
17058 write_radio_reg(pi,
17059 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
17060 0x6);
17061
17062 write_radio_reg(pi,
17063 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
17064 0x7);
17065 write_radio_reg(pi,
17066 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
17067 0x7);
17068
17069 write_radio_reg(pi,
17070 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
17071 0x88);
17072 write_radio_reg(pi,
17073 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
17074 0x88);
17075
17076 write_radio_reg(pi,
17077 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
17078 0x0);
17079 write_radio_reg(pi,
17080 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
17081 0x0);
17082
17083 write_radio_reg(pi,
17084 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
17085 0x0);
17086 write_radio_reg(pi,
17087 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
17088 0x0);
17089
17090 triso =
17091 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
17092 triso : pi->srom_fem2g.triso;
17093 if (triso == 7) {
17094 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
17095 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
17096 }
17097
17098 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
17099
17100 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
17101 (CHSPEC_IS5G(pi->radio_chanspec))) ||
17102 (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
17103 (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
17104 (CHSPEC_IS2G(pi->radio_chanspec)))) {
17105 nss1_data_weights = 0x00088888;
17106 ht_data_weights = 0x00088888;
17107 stbc_data_weights = 0x00088888;
17108 } else {
17109 nss1_data_weights = 0x88888888;
17110 ht_data_weights = 0x88888888;
17111 stbc_data_weights = 0x88888888;
17112 }
17113 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17114 1, 1, 32, &nss1_data_weights);
17115 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17116 1, 2, 32, &ht_data_weights);
17117 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17118 1, 3, 32, &stbc_data_weights);
17119
17120 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17121 if (CHSPEC_IS5G(pi->radio_chanspec)) {
17122 write_radio_reg(pi,
17123 RADIO_2056_TX_GMBB_IDAC |
17124 RADIO_2056_TX0, 0x70);
17125 write_radio_reg(pi,
17126 RADIO_2056_TX_GMBB_IDAC |
17127 RADIO_2056_TX1, 0x70);
17128 }
17129 }
17130
17131 if (!pi->edcrs_threshold_lock) {
17132 write_phy_reg(pi, 0x224, 0x3eb);
17133 write_phy_reg(pi, 0x225, 0x3eb);
17134 write_phy_reg(pi, 0x226, 0x341);
17135 write_phy_reg(pi, 0x227, 0x341);
17136 write_phy_reg(pi, 0x228, 0x42b);
17137 write_phy_reg(pi, 0x229, 0x42b);
17138 write_phy_reg(pi, 0x22a, 0x381);
17139 write_phy_reg(pi, 0x22b, 0x381);
17140 write_phy_reg(pi, 0x22c, 0x42b);
17141 write_phy_reg(pi, 0x22d, 0x42b);
17142 write_phy_reg(pi, 0x22e, 0x381);
17143 write_phy_reg(pi, 0x22f, 0x381);
17144 }
17145
17146 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17147
17148 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17149 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17150 MHF4_BPHY_TXCORE0,
17151 MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17152 }
17153 } else {
17154
17155 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17156 (pi->sh->boardtype == 0x8b)) {
17157 uint i;
17158 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17159 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17160 rfseq_rx2tx_dlys[i] = war_dlys[i];
17161 }
17162
17163 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17164 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17165 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17166 } else {
17167 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17168 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17169 }
17170
17171 regval = 0x000a;
17172 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17173 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17174
17175 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17176 regval = 0xcdaa;
17177 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17178 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17179 }
17180
17181 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17182 regval = 0x0000;
17183 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17184 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17185
17186 regval = 0x7aab;
17187 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17188 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17189
17190 regval = 0x0800;
17191 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17192 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17193 }
17194
17195 write_phy_reg(pi, 0xf8, 0x02d8);
17196 write_phy_reg(pi, 0xf9, 0x0301);
17197 write_phy_reg(pi, 0xfa, 0x02d8);
17198 write_phy_reg(pi, 0xfb, 0x0301);
17199
17200 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17201 rfseq_rx2tx_dlys,
17202 ARRAY_SIZE(rfseq_rx2tx_events));
17203
17204 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17205 rfseq_tx2rx_dlys,
17206 ARRAY_SIZE(rfseq_tx2rx_events));
17207
17208 wlc_phy_workarounds_nphy_gainctrl(pi);
17209
17210 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17211
17212 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17213 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17214 MHF3_NPHY_MLADV_WAR,
17215 MHF3_NPHY_MLADV_WAR,
17216 BRCM_BAND_ALL);
17217
17218 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17219 write_phy_reg(pi, 0x1e3, 0x0);
17220 write_phy_reg(pi, 0x1e4, 0x0);
17221 }
17222
17223 if (NREV_LT(pi->pubpi.phy_rev, 2))
17224 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17225
17226 alpha0 = 293;
17227 alpha1 = 435;
17228 alpha2 = 261;
17229 beta0 = 366;
17230 beta1 = 205;
17231 beta2 = 32;
17232 write_phy_reg(pi, 0x145, alpha0);
17233 write_phy_reg(pi, 0x146, alpha1);
17234 write_phy_reg(pi, 0x147, alpha2);
17235 write_phy_reg(pi, 0x148, beta0);
17236 write_phy_reg(pi, 0x149, beta1);
17237 write_phy_reg(pi, 0x14a, beta2);
17238
17239 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17240 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17241
17242 write_phy_reg(pi, 0x192, 0xb5);
17243 write_phy_reg(pi, 0x193, 0xa4);
17244 write_phy_reg(pi, 0x194, 0x0);
17245 }
17246
17247 if (NREV_IS(pi->pubpi.phy_rev, 2))
17248 mod_phy_reg(pi, 0x221,
17249 NPHY_FORCESIG_DECODEGATEDCLKS,
17250 NPHY_FORCESIG_DECODEGATEDCLKS);
17251 }
17252
17253 if (pi->phyhang_avoid)
17254 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17255 }
17256
17257 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17258 {
17259 int j, type = 2;
17260 u16 addr_offset = 0x2c5;
17261
17262 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17263 write_phy_reg(pi, addr_offset + j,
17264 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17265 }
17266
17267 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17268 {
17269
17270 if (write == 0) {
17271 vals[0] = read_phy_reg(pi, 0x2c);
17272 vals[1] = read_phy_reg(pi, 0x42);
17273 } else {
17274 write_phy_reg(pi, 0x2c, vals[0]);
17275 write_phy_reg(pi, 0x42, vals[1]);
17276 }
17277 }
17278
17279 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17280 {
17281 u8 core;
17282
17283 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17284 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17285 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17286 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17287 TX_SSI_MASTER, 0x5);
17288 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17289 TX_SSI_MUX, 0xe);
17290
17291 if (pi->pubpi.radiorev != 5)
17292 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17293 core, TSSIA, 0);
17294
17295 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17296 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17297 core, TSSIG, 0x1);
17298 else
17299 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17300 core, TSSIG, 0x31);
17301 } else {
17302 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17303 TX_SSI_MASTER, 0x9);
17304 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17305 TX_SSI_MUX, 0xc);
17306 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17307 TSSIG, 0);
17308
17309 if (pi->pubpi.radiorev != 5) {
17310 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17311 WRITE_RADIO_REG3(pi, RADIO_2057,
17312 TX, core,
17313 TSSIA, 0x1);
17314 else
17315 WRITE_RADIO_REG3(pi, RADIO_2057,
17316 TX, core,
17317 TSSIA, 0x31);
17318 }
17319 }
17320 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17321 0);
17322 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17323 0);
17324 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17325 0x3);
17326 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17327 0x0);
17328 }
17329 } else {
17330 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17331 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17332 0x80);
17333 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17334 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17335
17336 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17337 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17338 0x0);
17339 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17340 0x0);
17341 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17342 0x3);
17343 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17344 0x0);
17345 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17346 0x8);
17347 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17348 0x0);
17349 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17350 0x0);
17351
17352 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17353 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17354 TX_SSI_MASTER, 0x5);
17355
17356 if (pi->pubpi.radiorev != 5)
17357 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17358 core, TSSIA, 0x0);
17359 if (NREV_GE(pi->pubpi.phy_rev, 5))
17360 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17361 core, TSSIG, 0x31);
17362 else
17363 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17364 core, TSSIG, 0x11);
17365 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17366 TX_SSI_MUX, 0xe);
17367 } else {
17368 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17369 TX_SSI_MASTER, 0x9);
17370 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17371 TSSIA, 0x31);
17372 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17373 TSSIG, 0x0);
17374 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17375 TX_SSI_MUX, 0xc);
17376 }
17377 }
17378 }
17379 }
17380
17381 static void
17382 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17383 u8 core_mask, u8 off)
17384 {
17385 u8 core_num;
17386 u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17387 0, val_mask = 0;
17388 u8 shift = 0, val_shift = 0;
17389
17390 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17391
17392 en_mask = field;
17393 for (core_num = 0; core_num < 2; core_num++) {
17394
17395 switch (field) {
17396 case (0x1 << 1):
17397 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17398 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17399 val_mask = (0x1 << 0);
17400 val_shift = 0;
17401 break;
17402 case (0x1 << 2):
17403 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17404 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17405 val_mask = (0x1 << 1);
17406 val_shift = 1;
17407 break;
17408 case (0x1 << 3):
17409 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17410 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17411 val_mask = (0x1 << 2);
17412 val_shift = 2;
17413 break;
17414 case (0x1 << 4):
17415 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17416 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17417 val_mask = (0x1 << 4);
17418 val_shift = 4;
17419 break;
17420 case (0x1 << 5):
17421 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17422 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17423 val_mask = (0x1 << 5);
17424 val_shift = 5;
17425 break;
17426 case (0x1 << 6):
17427 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17428 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17429 val_mask = (0x1 << 6);
17430 val_shift = 6;
17431 break;
17432 case (0x1 << 7):
17433 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17434 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17435 val_mask = (0x1 << 7);
17436 val_shift = 7;
17437 break;
17438 case (0x1 << 8):
17439 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17440 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17441 val_mask = (0x7 << 8);
17442 val_shift = 8;
17443 break;
17444 case (0x1 << 11):
17445 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17446 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17447 val_mask = (0x7 << 13);
17448 val_shift = 13;
17449 break;
17450
17451 case (0x1 << 9):
17452 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17453 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17454 val_mask = (0x7 << 0);
17455 val_shift = 0;
17456 break;
17457
17458 case (0x1 << 10):
17459 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17460 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17461 val_mask = (0x7 << 4);
17462 val_shift = 4;
17463 break;
17464
17465 case (0x1 << 12):
17466 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17467 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17468 val_mask = (0xffff << 0);
17469 val_shift = 0;
17470 break;
17471 case (0x1 << 13):
17472 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17473 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17474 val_mask = (0xffff << 0);
17475 val_shift = 0;
17476 break;
17477 case (0x1 << 14):
17478 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17479 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17480 val_mask = (0x3 << 6);
17481 val_shift = 6;
17482 break;
17483 case (0x1 << 0):
17484 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17485 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17486 val_mask = (0x1 << 15);
17487 val_shift = 15;
17488 break;
17489 default:
17490 addr = 0xffff;
17491 break;
17492 }
17493
17494 if (off) {
17495 and_phy_reg(pi, en_addr, ~en_mask);
17496 and_phy_reg(pi, val_addr, ~val_mask);
17497 } else {
17498
17499 if ((core_mask == 0)
17500 || (core_mask & (1 << core_num))) {
17501 or_phy_reg(pi, en_addr, en_mask);
17502
17503 if (addr != 0xffff)
17504 mod_phy_reg(pi, val_addr,
17505 val_mask,
17506 (value <<
17507 val_shift));
17508 }
17509 }
17510 }
17511 } else {
17512
17513 if (off) {
17514 and_phy_reg(pi, 0xec, ~field);
17515 value = 0x0;
17516 } else {
17517 or_phy_reg(pi, 0xec, field);
17518 }
17519
17520 for (core_num = 0; core_num < 2; core_num++) {
17521
17522 switch (field) {
17523 case (0x1 << 1):
17524 case (0x1 << 9):
17525 case (0x1 << 12):
17526 case (0x1 << 13):
17527 case (0x1 << 14):
17528 addr = 0x78;
17529
17530 core_mask = 0x1;
17531 break;
17532 case (0x1 << 2):
17533 case (0x1 << 3):
17534 case (0x1 << 4):
17535 case (0x1 << 5):
17536 case (0x1 << 6):
17537 case (0x1 << 7):
17538 case (0x1 << 8):
17539 addr = (core_num == 0) ? 0x7a : 0x7d;
17540 break;
17541 case (0x1 << 10):
17542 addr = (core_num == 0) ? 0x7b : 0x7e;
17543 break;
17544 case (0x1 << 11):
17545 addr = (core_num == 0) ? 0x7c : 0x7f;
17546 break;
17547 default:
17548 addr = 0xffff;
17549 }
17550
17551 switch (field) {
17552 case (0x1 << 1):
17553 mask = (0x7 << 3);
17554 shift = 3;
17555 break;
17556 case (0x1 << 9):
17557 mask = (0x1 << 2);
17558 shift = 2;
17559 break;
17560 case (0x1 << 12):
17561 mask = (0x1 << 8);
17562 shift = 8;
17563 break;
17564 case (0x1 << 13):
17565 mask = (0x1 << 9);
17566 shift = 9;
17567 break;
17568 case (0x1 << 14):
17569 mask = (0xf << 12);
17570 shift = 12;
17571 break;
17572 case (0x1 << 2):
17573 mask = (0x1 << 0);
17574 shift = 0;
17575 break;
17576 case (0x1 << 3):
17577 mask = (0x1 << 1);
17578 shift = 1;
17579 break;
17580 case (0x1 << 4):
17581 mask = (0x1 << 2);
17582 shift = 2;
17583 break;
17584 case (0x1 << 5):
17585 mask = (0x3 << 4);
17586 shift = 4;
17587 break;
17588 case (0x1 << 6):
17589 mask = (0x3 << 6);
17590 shift = 6;
17591 break;
17592 case (0x1 << 7):
17593 mask = (0x1 << 8);
17594 shift = 8;
17595 break;
17596 case (0x1 << 8):
17597 mask = (0x1 << 9);
17598 shift = 9;
17599 break;
17600 case (0x1 << 10):
17601 mask = 0x1fff;
17602 shift = 0x0;
17603 break;
17604 case (0x1 << 11):
17605 mask = 0x1fff;
17606 shift = 0x0;
17607 break;
17608 default:
17609 mask = 0x0;
17610 shift = 0x0;
17611 break;
17612 }
17613
17614 if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17615 mod_phy_reg(pi, addr, mask, (value << shift));
17616 }
17617
17618 or_phy_reg(pi, 0xec, (0x1 << 0));
17619 or_phy_reg(pi, 0x78, (0x1 << 0));
17620 udelay(1);
17621 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17622 }
17623 }
17624
17625 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17626 {
17627 s32 rssi_buf[4];
17628 s32 int_val;
17629
17630 if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17631
17632 return;
17633
17634 if (PHY_IPA(pi))
17635 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17636
17637 if (NREV_GE(pi->pubpi.phy_rev, 7))
17638 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17639 0, 0x3, 0,
17640 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17641 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17642 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17643
17644 wlc_phy_stopplayback_nphy(pi);
17645
17646 wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17647
17648 udelay(20);
17649 int_val =
17650 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17651 1);
17652 wlc_phy_stopplayback_nphy(pi);
17653 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17654
17655 if (NREV_GE(pi->pubpi.phy_rev, 7))
17656 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17657 0, 0x3, 1,
17658 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17659 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17660 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17661
17662 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17663
17664 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17665 (u8) ((int_val >> 24) & 0xff);
17666 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17667 (u8) ((int_val >> 24) & 0xff);
17668
17669 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17670 (u8) ((int_val >> 8) & 0xff);
17671 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17672 (u8) ((int_val >> 8) & 0xff);
17673 } else {
17674 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17675 (u8) ((int_val >> 24) & 0xff);
17676
17677 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17678 (u8) ((int_val >> 8) & 0xff);
17679
17680 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17681 (u8) ((int_val >> 16) & 0xff);
17682 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17683 (u8) ((int_val) & 0xff);
17684 }
17685
17686 }
17687
17688 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17689 {
17690 u8 idx, idx2, i, delta_ind;
17691
17692 for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17693 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17694
17695 for (i = 0; i < 4; i++) {
17696 idx2 = 0;
17697
17698 delta_ind = 0;
17699
17700 switch (i) {
17701 case 0:
17702
17703 if (CHSPEC_IS40(pi->radio_chanspec)
17704 && NPHY_IS_SROM_REINTERPRET) {
17705 idx = TXP_FIRST_MCS_40_SISO;
17706 } else {
17707 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17708 TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17709 delta_ind = 1;
17710 }
17711 break;
17712
17713 case 1:
17714
17715 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17716 TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17717 break;
17718
17719 case 2:
17720
17721 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17722 TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17723 break;
17724
17725 case 3:
17726
17727 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17728 TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17729 break;
17730 }
17731
17732 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17733 pi->tx_power_offset[idx];
17734 idx = idx + delta_ind;
17735 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17736 pi->tx_power_offset[idx];
17737 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17738 pi->tx_power_offset[idx];
17739 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17740 pi->tx_power_offset[idx++];
17741
17742 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17743 pi->tx_power_offset[idx++];
17744 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17745 pi->tx_power_offset[idx];
17746 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17747 pi->tx_power_offset[idx];
17748 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17749 pi->tx_power_offset[idx++];
17750
17751 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17752 pi->tx_power_offset[idx++];
17753 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17754 pi->tx_power_offset[idx];
17755 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17756 pi->tx_power_offset[idx];
17757 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17758 pi->tx_power_offset[idx++];
17759
17760 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17761 pi->tx_power_offset[idx];
17762 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17763 pi->tx_power_offset[idx++];
17764 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17765 pi->tx_power_offset[idx];
17766 idx = idx + 1 - delta_ind;
17767 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17768 pi->tx_power_offset[idx];
17769
17770 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17771 pi->tx_power_offset[idx];
17772 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17773 pi->tx_power_offset[idx];
17774 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17775 pi->tx_power_offset[idx];
17776 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17777 pi->tx_power_offset[idx];
17778 }
17779 }
17780
17781 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17782 {
17783 u32 idx;
17784 s16 a1[2], b0[2], b1[2];
17785 s8 target_pwr_qtrdbm[2];
17786 s32 num, den, pwr_est;
17787 u8 chan_freq_range;
17788 u8 idle_tssi[2];
17789 u32 tbl_id, tbl_len, tbl_offset;
17790 u32 regval[64];
17791 u8 core;
17792
17793 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17794 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17795 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17796 udelay(1);
17797 }
17798
17799 if (pi->phyhang_avoid)
17800 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17801
17802 or_phy_reg(pi, 0x122, (0x1 << 0));
17803
17804 if (NREV_GE(pi->pubpi.phy_rev, 3))
17805 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17806 else
17807 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17808
17809 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17810 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17811
17812 if (pi->sh->sromrev < 4) {
17813 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17814 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17815 a1[0] = -424;
17816 a1[1] = -424;
17817 b0[0] = 5612;
17818 b0[1] = 5612;
17819 b1[1] = -1393;
17820 b1[0] = -1393;
17821 } else {
17822
17823 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17824 switch (chan_freq_range) {
17825 case WL_CHAN_FREQ_RANGE_2G:
17826 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17827 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17828 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17829 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17830 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17831 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17832 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17833 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17834 break;
17835 case WL_CHAN_FREQ_RANGE_5GL:
17836 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17837 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17838 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17839 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17840 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17841 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17842 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17843 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17844 break;
17845 case WL_CHAN_FREQ_RANGE_5GM:
17846 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17847 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17848 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17849 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17850 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17851 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17852 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17853 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17854 break;
17855 case WL_CHAN_FREQ_RANGE_5GH:
17856 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17857 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17858 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17859 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17860 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17861 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17862 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17863 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17864 break;
17865 default:
17866 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17867 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17868 a1[0] = -424;
17869 a1[1] = -424;
17870 b0[0] = 5612;
17871 b0[1] = 5612;
17872 b1[1] = -1393;
17873 b1[0] = -1393;
17874 break;
17875 }
17876 }
17877
17878 /* use the provided transmit power */
17879 target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17880 target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17881
17882 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17883 if (pi->srom_fem2g.tssipos)
17884 or_phy_reg(pi, 0x1e9, (0x1 << 14));
17885
17886 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17887 for (core = 0; core <= 1; core++) {
17888 if (PHY_IPA(pi)) {
17889 if (CHSPEC_IS2G(pi->radio_chanspec))
17890 WRITE_RADIO_REG3(pi, RADIO_2057,
17891 TX, core,
17892 TX_SSI_MUX,
17893 0xe);
17894 else
17895 WRITE_RADIO_REG3(pi, RADIO_2057,
17896 TX, core,
17897 TX_SSI_MUX,
17898 0xc);
17899 }
17900 }
17901 } else {
17902 if (PHY_IPA(pi)) {
17903
17904 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17905 RADIO_2056_TX0,
17906 (CHSPEC_IS5G
17907 (pi->radio_chanspec)) ?
17908 0xc : 0xe);
17909 write_radio_reg(pi,
17910 RADIO_2056_TX_TX_SSI_MUX |
17911 RADIO_2056_TX1,
17912 (CHSPEC_IS5G
17913 (pi->radio_chanspec)) ?
17914 0xc : 0xe);
17915 } else {
17916
17917 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17918 RADIO_2056_TX0, 0x11);
17919 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17920 RADIO_2056_TX1, 0x11);
17921 }
17922 }
17923 }
17924
17925 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17926 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17927 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17928 udelay(1);
17929 }
17930
17931 if (NREV_GE(pi->pubpi.phy_rev, 7))
17932 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17933 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17934 else
17935 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17936 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17937
17938 if (NREV_GE(pi->pubpi.phy_rev, 7))
17939 mod_phy_reg(pi, 0x222, (0xff << 0),
17940 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17941 else if (NREV_GT(pi->pubpi.phy_rev, 1))
17942 mod_phy_reg(pi, 0x222, (0xff << 0),
17943 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17944
17945 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17946 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17947
17948 write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17949
17950 write_phy_reg(pi, 0x1e9,
17951 (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17952
17953 write_phy_reg(pi, 0x1ea,
17954 (target_pwr_qtrdbm[0] << 0) |
17955 (target_pwr_qtrdbm[1] << 8));
17956
17957 tbl_len = 64;
17958 tbl_offset = 0;
17959 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17960 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17961
17962 for (idx = 0; idx < tbl_len; idx++) {
17963 num = 8 *
17964 (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17965 den = 32768 + a1[tbl_id - 26] * idx;
17966 pwr_est = max(((4 * num + den / 2) / den), -8);
17967 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17968 if (idx <=
17969 (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17970 pwr_est =
17971 max(pwr_est,
17972 target_pwr_qtrdbm
17973 [tbl_id - 26] + 1);
17974 }
17975 regval[idx] = (u32) pwr_est;
17976 }
17977 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17978 regval);
17979 }
17980
17981 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17982 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17983 pi->adj_pwr_tbl_nphy);
17984 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17985 pi->adj_pwr_tbl_nphy);
17986
17987 if (pi->phyhang_avoid)
17988 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17989 }
17990
17991 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17992 {
17993 u32 *tx_pwrctrl_tbl = NULL;
17994
17995 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17996 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17997 if ((pi->pubpi.radiorev == 4)
17998 || (pi->pubpi.radiorev == 6))
17999 tx_pwrctrl_tbl =
18000 nphy_tpc_txgain_ipa_2g_2057rev4n6;
18001 else if (pi->pubpi.radiorev == 3)
18002 tx_pwrctrl_tbl =
18003 nphy_tpc_txgain_ipa_2g_2057rev3;
18004 else if (pi->pubpi.radiorev == 5)
18005 tx_pwrctrl_tbl =
18006 nphy_tpc_txgain_ipa_2g_2057rev5;
18007 else if ((pi->pubpi.radiorev == 7)
18008 || (pi->pubpi.radiorev == 8))
18009 tx_pwrctrl_tbl =
18010 nphy_tpc_txgain_ipa_2g_2057rev7;
18011 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18012 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
18013 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18014 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
18015 } else {
18016 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
18017 }
18018 } else {
18019
18020 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18021 if ((pi->pubpi.radiorev == 3) ||
18022 (pi->pubpi.radiorev == 4) ||
18023 (pi->pubpi.radiorev == 6))
18024 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
18025 else if ((pi->pubpi.radiorev == 7)
18026 || (pi->pubpi.radiorev == 8))
18027 tx_pwrctrl_tbl =
18028 nphy_tpc_txgain_ipa_5g_2057rev7;
18029 } else {
18030 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
18031 }
18032 }
18033
18034 return tx_pwrctrl_tbl;
18035 }
18036
18037 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
18038 {
18039 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18040 if (pi->nphy_rssical_chanspec_2G == 0)
18041 return;
18042
18043 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18044 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18045 RADIO_2057_VCM_MASK,
18046 pi->rssical_cache.
18047 rssical_radio_regs_2G[0]);
18048 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18049 RADIO_2057_VCM_MASK,
18050 pi->rssical_cache.
18051 rssical_radio_regs_2G[1]);
18052 } else {
18053 mod_radio_reg(pi,
18054 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18055 RADIO_2056_VCM_MASK,
18056 pi->rssical_cache.
18057 rssical_radio_regs_2G[0]);
18058 mod_radio_reg(pi,
18059 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18060 RADIO_2056_VCM_MASK,
18061 pi->rssical_cache.
18062 rssical_radio_regs_2G[1]);
18063 }
18064
18065 write_phy_reg(pi, 0x1a6,
18066 pi->rssical_cache.rssical_phyregs_2G[0]);
18067 write_phy_reg(pi, 0x1ac,
18068 pi->rssical_cache.rssical_phyregs_2G[1]);
18069 write_phy_reg(pi, 0x1b2,
18070 pi->rssical_cache.rssical_phyregs_2G[2]);
18071 write_phy_reg(pi, 0x1b8,
18072 pi->rssical_cache.rssical_phyregs_2G[3]);
18073 write_phy_reg(pi, 0x1a4,
18074 pi->rssical_cache.rssical_phyregs_2G[4]);
18075 write_phy_reg(pi, 0x1aa,
18076 pi->rssical_cache.rssical_phyregs_2G[5]);
18077 write_phy_reg(pi, 0x1b0,
18078 pi->rssical_cache.rssical_phyregs_2G[6]);
18079 write_phy_reg(pi, 0x1b6,
18080 pi->rssical_cache.rssical_phyregs_2G[7]);
18081 write_phy_reg(pi, 0x1a5,
18082 pi->rssical_cache.rssical_phyregs_2G[8]);
18083 write_phy_reg(pi, 0x1ab,
18084 pi->rssical_cache.rssical_phyregs_2G[9]);
18085 write_phy_reg(pi, 0x1b1,
18086 pi->rssical_cache.rssical_phyregs_2G[10]);
18087 write_phy_reg(pi, 0x1b7,
18088 pi->rssical_cache.rssical_phyregs_2G[11]);
18089
18090 } else {
18091 if (pi->nphy_rssical_chanspec_5G == 0)
18092 return;
18093
18094 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18095 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18096 RADIO_2057_VCM_MASK,
18097 pi->rssical_cache.
18098 rssical_radio_regs_5G[0]);
18099 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18100 RADIO_2057_VCM_MASK,
18101 pi->rssical_cache.
18102 rssical_radio_regs_5G[1]);
18103 } else {
18104 mod_radio_reg(pi,
18105 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18106 RADIO_2056_VCM_MASK,
18107 pi->rssical_cache.
18108 rssical_radio_regs_5G[0]);
18109 mod_radio_reg(pi,
18110 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18111 RADIO_2056_VCM_MASK,
18112 pi->rssical_cache.
18113 rssical_radio_regs_5G[1]);
18114 }
18115
18116 write_phy_reg(pi, 0x1a6,
18117 pi->rssical_cache.rssical_phyregs_5G[0]);
18118 write_phy_reg(pi, 0x1ac,
18119 pi->rssical_cache.rssical_phyregs_5G[1]);
18120 write_phy_reg(pi, 0x1b2,
18121 pi->rssical_cache.rssical_phyregs_5G[2]);
18122 write_phy_reg(pi, 0x1b8,
18123 pi->rssical_cache.rssical_phyregs_5G[3]);
18124 write_phy_reg(pi, 0x1a4,
18125 pi->rssical_cache.rssical_phyregs_5G[4]);
18126 write_phy_reg(pi, 0x1aa,
18127 pi->rssical_cache.rssical_phyregs_5G[5]);
18128 write_phy_reg(pi, 0x1b0,
18129 pi->rssical_cache.rssical_phyregs_5G[6]);
18130 write_phy_reg(pi, 0x1b6,
18131 pi->rssical_cache.rssical_phyregs_5G[7]);
18132 write_phy_reg(pi, 0x1a5,
18133 pi->rssical_cache.rssical_phyregs_5G[8]);
18134 write_phy_reg(pi, 0x1ab,
18135 pi->rssical_cache.rssical_phyregs_5G[9]);
18136 write_phy_reg(pi, 0x1b1,
18137 pi->rssical_cache.rssical_phyregs_5G[10]);
18138 write_phy_reg(pi, 0x1b7,
18139 pi->rssical_cache.rssical_phyregs_5G[11]);
18140 }
18141 }
18142
18143 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18144 {
18145 u16 txcal_gain[2];
18146
18147 pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18148 pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18149 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18150 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18151
18152 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18153 txcal_gain);
18154
18155 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18156 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18157 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18158 } else {
18159 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18160 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18161 }
18162
18163 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18164 txcal_gain);
18165 }
18166
18167 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18168 {
18169 bool save_bbmult = false;
18170 u8 txcal_index_2057_rev5n7 = 0;
18171 u8 txcal_index_2057_rev3n4n6 = 10;
18172
18173 if (pi->use_int_tx_iqlo_cal_nphy) {
18174 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18175 if ((pi->pubpi.radiorev == 3) ||
18176 (pi->pubpi.radiorev == 4) ||
18177 (pi->pubpi.radiorev == 6)) {
18178
18179 pi->nphy_txcal_pwr_idx[0] =
18180 txcal_index_2057_rev3n4n6;
18181 pi->nphy_txcal_pwr_idx[1] =
18182 txcal_index_2057_rev3n4n6;
18183 wlc_phy_txpwr_index_nphy(
18184 pi, 3,
18185 txcal_index_2057_rev3n4n6,
18186 false);
18187 } else {
18188
18189 pi->nphy_txcal_pwr_idx[0] =
18190 txcal_index_2057_rev5n7;
18191 pi->nphy_txcal_pwr_idx[1] =
18192 txcal_index_2057_rev5n7;
18193 wlc_phy_txpwr_index_nphy(
18194 pi, 3,
18195 txcal_index_2057_rev5n7,
18196 false);
18197 }
18198 save_bbmult = true;
18199
18200 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18201 wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18202 if (pi->sh->hw_phytxchain != 3) {
18203 pi->nphy_txcal_pwr_idx[1] =
18204 pi->nphy_txcal_pwr_idx[0];
18205 wlc_phy_txpwr_index_nphy(pi, 3,
18206 pi->
18207 nphy_txcal_pwr_idx[0],
18208 true);
18209 save_bbmult = true;
18210 }
18211
18212 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18213 if (PHY_IPA(pi)) {
18214 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18215 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18216 false);
18217 } else {
18218 pi->nphy_txcal_pwr_idx[0] = 80;
18219 pi->nphy_txcal_pwr_idx[1] = 80;
18220 wlc_phy_txpwr_index_nphy(pi, 3, 80,
18221 false);
18222 save_bbmult = true;
18223 }
18224 } else {
18225 wlc_phy_internal_cal_txgain_nphy(pi);
18226 save_bbmult = true;
18227 }
18228
18229 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18230 if (PHY_IPA(pi)) {
18231 if (CHSPEC_IS2G(pi->radio_chanspec))
18232 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18233 false);
18234 else
18235 wlc_phy_cal_txgainctrl_nphy(pi, 14,
18236 false);
18237 } else {
18238 wlc_phy_internal_cal_txgain_nphy(pi);
18239 save_bbmult = true;
18240 }
18241 }
18242
18243 } else {
18244 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18245 }
18246
18247 if (save_bbmult)
18248 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18249 &pi->nphy_txcal_bbmult);
18250 }
18251
18252 static void
18253 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18254 u8 core_code)
18255 {
18256 u16 mask;
18257 u16 val;
18258 u8 core;
18259
18260 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18261 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18262 if (core_code == RADIO_MIMO_CORESEL_CORE1
18263 && core == PHY_CORE_1)
18264 continue;
18265 else if (core_code == RADIO_MIMO_CORESEL_CORE2
18266 && core == PHY_CORE_0)
18267 continue;
18268
18269 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18270
18271 mask = (0x1 << 10);
18272 val = 1 << 10;
18273 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18274 0x92, mask, val);
18275 }
18276
18277 if (field == NPHY_RfctrlIntc_override_OFF) {
18278
18279 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18280 0x92, 0);
18281
18282 wlc_phy_force_rfseq_nphy(pi,
18283 NPHY_RFSEQ_RESET2RX);
18284 } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18285
18286 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18287
18288 mask = (0x1 << 6) | (0x1 << 7);
18289
18290 val = value << 6;
18291 mod_phy_reg(pi,
18292 (core ==
18293 PHY_CORE_0) ? 0x91 : 0x92,
18294 mask, val);
18295
18296 or_phy_reg(pi,
18297 (core ==
18298 PHY_CORE_0) ? 0x91 : 0x92,
18299 (0x1 << 10));
18300
18301 and_phy_reg(pi, 0x2ff, (u16)
18302 ~(0x3 << 14));
18303 or_phy_reg(pi, 0x2ff, (0x1 << 13));
18304 or_phy_reg(pi, 0x2ff, (0x1 << 0));
18305 } else {
18306
18307 mask = (0x1 << 6) |
18308 (0x1 << 7) |
18309 (0x1 << 8) | (0x1 << 9);
18310 val = value << 6;
18311 mod_phy_reg(pi,
18312 (core ==
18313 PHY_CORE_0) ? 0x91 : 0x92,
18314 mask, val);
18315
18316 mask = (0x1 << 0);
18317 val = 1 << 0;
18318 mod_phy_reg(pi,
18319 (core ==
18320 PHY_CORE_0) ? 0xe7 : 0xec,
18321 mask, val);
18322
18323 mask = (core == PHY_CORE_0) ?
18324 (0x1 << 0) : (0x1 << 1);
18325 val = 1 << ((core == PHY_CORE_0) ?
18326 0 : 1);
18327 mod_phy_reg(pi, 0x78, mask, val);
18328
18329 SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18330 != 0), 10000);
18331 if (WARN(read_phy_reg(pi, 0x78) & val,
18332 "HW error: override failed"))
18333 return;
18334
18335 mask = (0x1 << 0);
18336 val = 0 << 0;
18337 mod_phy_reg(pi,
18338 (core ==
18339 PHY_CORE_0) ? 0xe7 : 0xec,
18340 mask, val);
18341 }
18342 } else if (field == NPHY_RfctrlIntc_override_PA) {
18343 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18344
18345 mask = (0x1 << 4) | (0x1 << 5);
18346
18347 if (CHSPEC_IS5G(pi->radio_chanspec))
18348 val = value << 5;
18349 else
18350 val = value << 4;
18351
18352 mod_phy_reg(pi,
18353 (core ==
18354 PHY_CORE_0) ? 0x91 : 0x92,
18355 mask, val);
18356
18357 or_phy_reg(pi,
18358 (core ==
18359 PHY_CORE_0) ? 0x91 : 0x92,
18360 (0x1 << 12));
18361 } else {
18362
18363 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18364 mask = (0x1 << 5);
18365 val = value << 5;
18366 } else {
18367 mask = (0x1 << 4);
18368 val = value << 4;
18369 }
18370 mod_phy_reg(pi,
18371 (core ==
18372 PHY_CORE_0) ? 0x91 : 0x92,
18373 mask, val);
18374 }
18375 } else if (field ==
18376 NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18377 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18378 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18379
18380 mask = (0x1 << 0);
18381 val = value << 0;
18382 mod_phy_reg(pi,
18383 (core ==
18384 PHY_CORE_0) ? 0x91
18385 : 0x92, mask, val);
18386
18387 mask = (0x1 << 2);
18388 mod_phy_reg(pi,
18389 (core ==
18390 PHY_CORE_0) ? 0x91
18391 : 0x92, mask, 0);
18392 } else {
18393
18394 mask = (0x1 << 2);
18395 val = value << 2;
18396 mod_phy_reg(pi,
18397 (core ==
18398 PHY_CORE_0) ? 0x91
18399 : 0x92, mask, val);
18400
18401 mask = (0x1 << 0);
18402 mod_phy_reg(pi,
18403 (core ==
18404 PHY_CORE_0) ? 0x91
18405 : 0x92, mask, 0);
18406 }
18407
18408 mask = (0x1 << 11);
18409 val = 1 << 11;
18410 mod_phy_reg(pi,
18411 (core ==
18412 PHY_CORE_0) ? 0x91 : 0x92,
18413 mask, val);
18414 } else {
18415
18416 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18417 mask = (0x1 << 0);
18418 val = value << 0;
18419 } else {
18420 mask = (0x1 << 2);
18421 val = value << 2;
18422 }
18423 mod_phy_reg(pi,
18424 (core ==
18425 PHY_CORE_0) ? 0x91 : 0x92,
18426 mask, val);
18427 }
18428 } else if (field ==
18429 NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18430 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18431 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18432
18433 mask = (0x1 << 1);
18434 val = value << 1;
18435 mod_phy_reg(pi,
18436 (core ==
18437 PHY_CORE_0) ? 0x91
18438 : 0x92, mask, val);
18439
18440 mask = (0x1 << 3);
18441 mod_phy_reg(pi,
18442 (core ==
18443 PHY_CORE_0) ? 0x91
18444 : 0x92, mask, 0);
18445 } else {
18446
18447 mask = (0x1 << 3);
18448 val = value << 3;
18449 mod_phy_reg(pi,
18450 (core ==
18451 PHY_CORE_0) ? 0x91
18452 : 0x92, mask, val);
18453
18454 mask = (0x1 << 1);
18455 mod_phy_reg(pi,
18456 (core ==
18457 PHY_CORE_0) ? 0x91
18458 : 0x92, mask, 0);
18459 }
18460
18461 mask = (0x1 << 11);
18462 val = 1 << 11;
18463 mod_phy_reg(pi,
18464 (core ==
18465 PHY_CORE_0) ? 0x91 : 0x92,
18466 mask, val);
18467 } else {
18468
18469 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18470 mask = (0x1 << 1);
18471 val = value << 1;
18472 } else {
18473 mask = (0x1 << 3);
18474 val = value << 3;
18475 }
18476 mod_phy_reg(pi,
18477 (core ==
18478 PHY_CORE_0) ? 0x91 : 0x92,
18479 mask, val);
18480 }
18481 }
18482 }
18483 }
18484 }
18485
18486 void
18487 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18488 bool debug)
18489 {
18490 int gainctrl_loopidx;
18491 uint core;
18492 u16 m0m1, curr_m0m1;
18493 s32 delta_power;
18494 s32 txpwrindex;
18495 s32 qdBm_power[2];
18496 u16 orig_BBConfig;
18497 u16 phy_saveregs[4];
18498 u32 freq_test;
18499 u16 ampl_test = 250;
18500 uint stepsize;
18501 bool phyhang_avoid_state = false;
18502
18503 if (NREV_GE(pi->pubpi.phy_rev, 7))
18504 stepsize = 2;
18505 else
18506 stepsize = 1;
18507
18508 if (CHSPEC_IS40(pi->radio_chanspec))
18509 freq_test = 5000;
18510 else
18511 freq_test = 2500;
18512
18513 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18514 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18515
18516 if (pi->phyhang_avoid)
18517 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18518
18519 phyhang_avoid_state = pi->phyhang_avoid;
18520 pi->phyhang_avoid = false;
18521
18522 phy_saveregs[0] = read_phy_reg(pi, 0x91);
18523 phy_saveregs[1] = read_phy_reg(pi, 0x92);
18524 phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18525 phy_saveregs[3] = read_phy_reg(pi, 0xec);
18526 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18527 RADIO_MIMO_CORESEL_CORE1 |
18528 RADIO_MIMO_CORESEL_CORE2);
18529
18530 if (!debug) {
18531 wlc_phy_rfctrlintc_override_nphy(pi,
18532 NPHY_RfctrlIntc_override_TRSW,
18533 0x2, RADIO_MIMO_CORESEL_CORE1);
18534 wlc_phy_rfctrlintc_override_nphy(pi,
18535 NPHY_RfctrlIntc_override_TRSW,
18536 0x8, RADIO_MIMO_CORESEL_CORE2);
18537 } else {
18538 wlc_phy_rfctrlintc_override_nphy(pi,
18539 NPHY_RfctrlIntc_override_TRSW,
18540 0x1, RADIO_MIMO_CORESEL_CORE1);
18541 wlc_phy_rfctrlintc_override_nphy(pi,
18542 NPHY_RfctrlIntc_override_TRSW,
18543 0x7, RADIO_MIMO_CORESEL_CORE2);
18544 }
18545
18546 orig_BBConfig = read_phy_reg(pi, 0x01);
18547 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18548
18549 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18550
18551 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18552 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18553
18554 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18555 gainctrl_loopidx++) {
18556 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18557 false);
18558
18559 if (core == PHY_CORE_0)
18560 curr_m0m1 = m0m1 & 0xff00;
18561 else
18562 curr_m0m1 = m0m1 & 0x00ff;
18563
18564 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18565 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18566
18567 udelay(50);
18568
18569 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18570 NPHY_CAL_TSSISAMPS);
18571
18572 pi->nphy_bb_mult_save = 0;
18573 wlc_phy_stopplayback_nphy(pi);
18574
18575 delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18576
18577 txpwrindex -= stepsize * delta_power;
18578 if (txpwrindex < 0)
18579 txpwrindex = 0;
18580 else if (txpwrindex > 127)
18581 txpwrindex = 127;
18582
18583 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18584 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18585 (pi->srom_fem5g.extpagain == 3)) {
18586 if (txpwrindex < 30)
18587 txpwrindex = 30;
18588 }
18589 } else {
18590 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18591 (pi->srom_fem2g.extpagain == 3)) {
18592 if (txpwrindex < 50)
18593 txpwrindex = 50;
18594 }
18595 }
18596
18597 wlc_phy_txpwr_index_nphy(pi, (1 << core),
18598 (u8) txpwrindex, true);
18599 }
18600
18601 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18602
18603 if (debug) {
18604 u16 radio_gain;
18605 u16 dbg_m0m1;
18606
18607 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18608
18609 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18610 false);
18611
18612 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18613 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18614
18615 udelay(100);
18616
18617 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18618 NPHY_CAL_TSSISAMPS);
18619
18620 wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18621 &radio_gain);
18622
18623 mdelay(4000);
18624 pi->nphy_bb_mult_save = 0;
18625 wlc_phy_stopplayback_nphy(pi);
18626 }
18627 }
18628
18629 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18630 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18631
18632 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18633
18634 write_phy_reg(pi, 0x01, orig_BBConfig);
18635
18636 write_phy_reg(pi, 0x91, phy_saveregs[0]);
18637 write_phy_reg(pi, 0x92, phy_saveregs[1]);
18638 write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18639 write_phy_reg(pi, 0xec, phy_saveregs[3]);
18640
18641 pi->phyhang_avoid = phyhang_avoid_state;
18642
18643 if (pi->phyhang_avoid)
18644 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18645 }
18646
18647 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18648 {
18649 void *tbl_ptr;
18650 int coreNum;
18651 u16 *txcal_radio_regs = NULL;
18652
18653 if (pi->phyhang_avoid)
18654 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18655
18656 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18657
18658 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18659 &pi->calibration_cache.
18660 rxcal_coeffs_2G);
18661
18662 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18663 txcal_radio_regs =
18664 pi->calibration_cache.txcal_radio_regs_2G;
18665 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18666
18667 pi->calibration_cache.txcal_radio_regs_2G[0] =
18668 read_radio_reg(pi,
18669 RADIO_2056_TX_LOFT_FINE_I |
18670 RADIO_2056_TX0);
18671 pi->calibration_cache.txcal_radio_regs_2G[1] =
18672 read_radio_reg(pi,
18673 RADIO_2056_TX_LOFT_FINE_Q |
18674 RADIO_2056_TX0);
18675 pi->calibration_cache.txcal_radio_regs_2G[2] =
18676 read_radio_reg(pi,
18677 RADIO_2056_TX_LOFT_FINE_I |
18678 RADIO_2056_TX1);
18679 pi->calibration_cache.txcal_radio_regs_2G[3] =
18680 read_radio_reg(pi,
18681 RADIO_2056_TX_LOFT_FINE_Q |
18682 RADIO_2056_TX1);
18683
18684 pi->calibration_cache.txcal_radio_regs_2G[4] =
18685 read_radio_reg(pi,
18686 RADIO_2056_TX_LOFT_COARSE_I |
18687 RADIO_2056_TX0);
18688 pi->calibration_cache.txcal_radio_regs_2G[5] =
18689 read_radio_reg(pi,
18690 RADIO_2056_TX_LOFT_COARSE_Q |
18691 RADIO_2056_TX0);
18692 pi->calibration_cache.txcal_radio_regs_2G[6] =
18693 read_radio_reg(pi,
18694 RADIO_2056_TX_LOFT_COARSE_I |
18695 RADIO_2056_TX1);
18696 pi->calibration_cache.txcal_radio_regs_2G[7] =
18697 read_radio_reg(pi,
18698 RADIO_2056_TX_LOFT_COARSE_Q |
18699 RADIO_2056_TX1);
18700 } else {
18701 pi->calibration_cache.txcal_radio_regs_2G[0] =
18702 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18703 pi->calibration_cache.txcal_radio_regs_2G[1] =
18704 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18705 pi->calibration_cache.txcal_radio_regs_2G[2] =
18706 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18707 pi->calibration_cache.txcal_radio_regs_2G[3] =
18708 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18709 }
18710
18711 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18712 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18713 } else {
18714
18715 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18716 &pi->calibration_cache.
18717 rxcal_coeffs_5G);
18718
18719 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18720 txcal_radio_regs =
18721 pi->calibration_cache.txcal_radio_regs_5G;
18722 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18723
18724 pi->calibration_cache.txcal_radio_regs_5G[0] =
18725 read_radio_reg(pi,
18726 RADIO_2056_TX_LOFT_FINE_I |
18727 RADIO_2056_TX0);
18728 pi->calibration_cache.txcal_radio_regs_5G[1] =
18729 read_radio_reg(pi,
18730 RADIO_2056_TX_LOFT_FINE_Q |
18731 RADIO_2056_TX0);
18732 pi->calibration_cache.txcal_radio_regs_5G[2] =
18733 read_radio_reg(pi,
18734 RADIO_2056_TX_LOFT_FINE_I |
18735 RADIO_2056_TX1);
18736 pi->calibration_cache.txcal_radio_regs_5G[3] =
18737 read_radio_reg(pi,
18738 RADIO_2056_TX_LOFT_FINE_Q |
18739 RADIO_2056_TX1);
18740
18741 pi->calibration_cache.txcal_radio_regs_5G[4] =
18742 read_radio_reg(pi,
18743 RADIO_2056_TX_LOFT_COARSE_I |
18744 RADIO_2056_TX0);
18745 pi->calibration_cache.txcal_radio_regs_5G[5] =
18746 read_radio_reg(pi,
18747 RADIO_2056_TX_LOFT_COARSE_Q |
18748 RADIO_2056_TX0);
18749 pi->calibration_cache.txcal_radio_regs_5G[6] =
18750 read_radio_reg(pi,
18751 RADIO_2056_TX_LOFT_COARSE_I |
18752 RADIO_2056_TX1);
18753 pi->calibration_cache.txcal_radio_regs_5G[7] =
18754 read_radio_reg(pi,
18755 RADIO_2056_TX_LOFT_COARSE_Q |
18756 RADIO_2056_TX1);
18757 } else {
18758 pi->calibration_cache.txcal_radio_regs_5G[0] =
18759 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18760 pi->calibration_cache.txcal_radio_regs_5G[1] =
18761 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18762 pi->calibration_cache.txcal_radio_regs_5G[2] =
18763 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18764 pi->calibration_cache.txcal_radio_regs_5G[3] =
18765 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18766 }
18767
18768 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18769 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18770 }
18771 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18772 for (coreNum = 0; coreNum <= 1; coreNum++) {
18773
18774 txcal_radio_regs[2 * coreNum] =
18775 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18776 LOFT_FINE_I);
18777 txcal_radio_regs[2 * coreNum + 1] =
18778 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18779 LOFT_FINE_Q);
18780
18781 txcal_radio_regs[2 * coreNum + 4] =
18782 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18783 LOFT_COARSE_I);
18784 txcal_radio_regs[2 * coreNum + 5] =
18785 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18786 LOFT_COARSE_Q);
18787 }
18788 }
18789
18790 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18791
18792 if (pi->phyhang_avoid)
18793 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18794 }
18795
18796 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18797 {
18798 struct nphy_iq_comp tx_comp;
18799
18800 wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18801
18802 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18803 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18804 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18805 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18806 }
18807
18808 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18809 {
18810 u16 *loft_comp;
18811 u16 txcal_coeffs_bphy[4];
18812 u16 *tbl_ptr;
18813 int coreNum;
18814 u16 *txcal_radio_regs = NULL;
18815
18816 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18817 if (pi->nphy_iqcal_chanspec_2G == 0)
18818 return;
18819
18820 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18821 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18822 } else {
18823 if (pi->nphy_iqcal_chanspec_5G == 0)
18824 return;
18825
18826 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18827 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18828 }
18829
18830 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18831
18832 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18833 txcal_coeffs_bphy[0] = tbl_ptr[0];
18834 txcal_coeffs_bphy[1] = tbl_ptr[1];
18835 txcal_coeffs_bphy[2] = tbl_ptr[2];
18836 txcal_coeffs_bphy[3] = tbl_ptr[3];
18837 } else {
18838 txcal_coeffs_bphy[0] = 0;
18839 txcal_coeffs_bphy[1] = 0;
18840 txcal_coeffs_bphy[2] = 0;
18841 txcal_coeffs_bphy[3] = 0;
18842 }
18843
18844 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18845 txcal_coeffs_bphy);
18846
18847 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18848
18849 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18850
18851 if (NREV_LT(pi->pubpi.phy_rev, 2))
18852 wlc_phy_tx_iq_war_nphy(pi);
18853
18854 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18855 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18856 txcal_radio_regs =
18857 pi->calibration_cache.txcal_radio_regs_2G;
18858 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18859
18860 write_radio_reg(pi,
18861 RADIO_2056_TX_LOFT_FINE_I |
18862 RADIO_2056_TX0,
18863 pi->calibration_cache.
18864 txcal_radio_regs_2G[0]);
18865 write_radio_reg(pi,
18866 RADIO_2056_TX_LOFT_FINE_Q |
18867 RADIO_2056_TX0,
18868 pi->calibration_cache.
18869 txcal_radio_regs_2G[1]);
18870 write_radio_reg(pi,
18871 RADIO_2056_TX_LOFT_FINE_I |
18872 RADIO_2056_TX1,
18873 pi->calibration_cache.
18874 txcal_radio_regs_2G[2]);
18875 write_radio_reg(pi,
18876 RADIO_2056_TX_LOFT_FINE_Q |
18877 RADIO_2056_TX1,
18878 pi->calibration_cache.
18879 txcal_radio_regs_2G[3]);
18880
18881 write_radio_reg(pi,
18882 RADIO_2056_TX_LOFT_COARSE_I |
18883 RADIO_2056_TX0,
18884 pi->calibration_cache.
18885 txcal_radio_regs_2G[4]);
18886 write_radio_reg(pi,
18887 RADIO_2056_TX_LOFT_COARSE_Q |
18888 RADIO_2056_TX0,
18889 pi->calibration_cache.
18890 txcal_radio_regs_2G[5]);
18891 write_radio_reg(pi,
18892 RADIO_2056_TX_LOFT_COARSE_I |
18893 RADIO_2056_TX1,
18894 pi->calibration_cache.
18895 txcal_radio_regs_2G[6]);
18896 write_radio_reg(pi,
18897 RADIO_2056_TX_LOFT_COARSE_Q |
18898 RADIO_2056_TX1,
18899 pi->calibration_cache.
18900 txcal_radio_regs_2G[7]);
18901 } else {
18902 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18903 pi->calibration_cache.
18904 txcal_radio_regs_2G[0]);
18905 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18906 pi->calibration_cache.
18907 txcal_radio_regs_2G[1]);
18908 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18909 pi->calibration_cache.
18910 txcal_radio_regs_2G[2]);
18911 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18912 pi->calibration_cache.
18913 txcal_radio_regs_2G[3]);
18914 }
18915
18916 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18917 &pi->calibration_cache.
18918 rxcal_coeffs_2G);
18919 } else {
18920 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18921 txcal_radio_regs =
18922 pi->calibration_cache.txcal_radio_regs_5G;
18923 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18924
18925 write_radio_reg(pi,
18926 RADIO_2056_TX_LOFT_FINE_I |
18927 RADIO_2056_TX0,
18928 pi->calibration_cache.
18929 txcal_radio_regs_5G[0]);
18930 write_radio_reg(pi,
18931 RADIO_2056_TX_LOFT_FINE_Q |
18932 RADIO_2056_TX0,
18933 pi->calibration_cache.
18934 txcal_radio_regs_5G[1]);
18935 write_radio_reg(pi,
18936 RADIO_2056_TX_LOFT_FINE_I |
18937 RADIO_2056_TX1,
18938 pi->calibration_cache.
18939 txcal_radio_regs_5G[2]);
18940 write_radio_reg(pi,
18941 RADIO_2056_TX_LOFT_FINE_Q |
18942 RADIO_2056_TX1,
18943 pi->calibration_cache.
18944 txcal_radio_regs_5G[3]);
18945
18946 write_radio_reg(pi,
18947 RADIO_2056_TX_LOFT_COARSE_I |
18948 RADIO_2056_TX0,
18949 pi->calibration_cache.
18950 txcal_radio_regs_5G[4]);
18951 write_radio_reg(pi,
18952 RADIO_2056_TX_LOFT_COARSE_Q |
18953 RADIO_2056_TX0,
18954 pi->calibration_cache.
18955 txcal_radio_regs_5G[5]);
18956 write_radio_reg(pi,
18957 RADIO_2056_TX_LOFT_COARSE_I |
18958 RADIO_2056_TX1,
18959 pi->calibration_cache.
18960 txcal_radio_regs_5G[6]);
18961 write_radio_reg(pi,
18962 RADIO_2056_TX_LOFT_COARSE_Q |
18963 RADIO_2056_TX1,
18964 pi->calibration_cache.
18965 txcal_radio_regs_5G[7]);
18966 } else {
18967 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18968 pi->calibration_cache.
18969 txcal_radio_regs_5G[0]);
18970 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18971 pi->calibration_cache.
18972 txcal_radio_regs_5G[1]);
18973 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18974 pi->calibration_cache.
18975 txcal_radio_regs_5G[2]);
18976 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18977 pi->calibration_cache.
18978 txcal_radio_regs_5G[3]);
18979 }
18980
18981 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18982 &pi->calibration_cache.
18983 rxcal_coeffs_5G);
18984 }
18985
18986 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18987 for (coreNum = 0; coreNum <= 1; coreNum++) {
18988
18989 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18990 LOFT_FINE_I,
18991 txcal_radio_regs[2 * coreNum]);
18992 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18993 LOFT_FINE_Q,
18994 txcal_radio_regs[2 * coreNum + 1]);
18995
18996 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18997 LOFT_COARSE_I,
18998 txcal_radio_regs[2 * coreNum + 4]);
18999 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
19000 LOFT_COARSE_Q,
19001 txcal_radio_regs[2 * coreNum + 5]);
19002 }
19003 }
19004 }
19005
19006 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
19007 {
19008 u32 idx;
19009 u16 iqloCalbuf[7];
19010 u32 iqcomp, locomp, curr_locomp;
19011 s8 locomp_i, locomp_q;
19012 s8 curr_locomp_i, curr_locomp_q;
19013 u32 tbl_id, tbl_len, tbl_offset;
19014 u32 regval[128];
19015
19016 if (pi->phyhang_avoid)
19017 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19018
19019 wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
19020
19021 tbl_len = 128;
19022 tbl_offset = 320;
19023 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19024 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19025 iqcomp =
19026 (tbl_id ==
19027 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
19028 (iqloCalbuf[1] & 0x3ff)
19029 : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
19030 (iqloCalbuf[3] & 0x3ff);
19031
19032 for (idx = 0; idx < tbl_len; idx++)
19033 regval[idx] = iqcomp;
19034 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19035 regval);
19036 }
19037
19038 tbl_offset = 448;
19039 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
19040 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
19041
19042 locomp =
19043 (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
19044 locomp_i = (s8) ((locomp >> 8) & 0xff);
19045 locomp_q = (s8) ((locomp) & 0xff);
19046 for (idx = 0; idx < tbl_len; idx++) {
19047 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19048 curr_locomp_i = locomp_i;
19049 curr_locomp_q = locomp_q;
19050 } else {
19051 curr_locomp_i = (s8) ((locomp_i *
19052 nphy_tpc_loscale[idx] +
19053 128) >> 8);
19054 curr_locomp_q =
19055 (s8) ((locomp_q *
19056 nphy_tpc_loscale[idx] +
19057 128) >> 8);
19058 }
19059 curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
19060 curr_locomp |= (u32) (curr_locomp_q & 0xff);
19061 regval[idx] = curr_locomp;
19062 }
19063 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19064 regval);
19065 }
19066
19067 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19068
19069 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
19070 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
19071 }
19072
19073 if (pi->phyhang_avoid)
19074 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19075 }
19076
19077 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
19078 {
19079 u8 tx_lpf_bw = 0;
19080
19081 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19082 if (CHSPEC_IS40(pi->radio_chanspec))
19083 tx_lpf_bw = 3;
19084 else
19085 tx_lpf_bw = 1;
19086
19087 if (PHY_IPA(pi)) {
19088 if (CHSPEC_IS40(pi->radio_chanspec))
19089 tx_lpf_bw = 5;
19090 else
19091 tx_lpf_bw = 4;
19092 }
19093
19094 write_phy_reg(pi, 0xe8,
19095 (tx_lpf_bw << 0) |
19096 (tx_lpf_bw << 3) |
19097 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19098
19099 if (PHY_IPA(pi)) {
19100
19101 if (CHSPEC_IS40(pi->radio_chanspec))
19102 tx_lpf_bw = 4;
19103 else
19104 tx_lpf_bw = 1;
19105
19106 write_phy_reg(pi, 0xe9,
19107 (tx_lpf_bw << 0) |
19108 (tx_lpf_bw << 3) |
19109 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19110 }
19111 }
19112 }
19113
19114 static void
19115 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19116 {
19117 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19118 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19119 CHSPEC_IS40(pi->radio_chanspec)) {
19120 if (!pi->nphy_anarxlpf_adjusted) {
19121 write_radio_reg(pi,
19122 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19123 RADIO_2056_RX0),
19124 ((pi->nphy_rccal_value +
19125 reduction_factr) | 0x80));
19126
19127 pi->nphy_anarxlpf_adjusted = true;
19128 }
19129 } else {
19130 if (pi->nphy_anarxlpf_adjusted) {
19131 write_radio_reg(pi,
19132 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19133 RADIO_2056_RX0),
19134 (pi->nphy_rccal_value | 0x80));
19135
19136 pi->nphy_anarxlpf_adjusted = false;
19137 }
19138 }
19139 }
19140 }
19141
19142 static void
19143 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19144 int *tone_id_buf, u32 *noise_var_buf)
19145 {
19146 int i;
19147 u32 offset;
19148 int tone_id;
19149 int tbllen =
19150 CHSPEC_IS40(pi->radio_chanspec) ?
19151 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19152
19153 if (pi->nphy_noisevars_adjusted) {
19154 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19155 tone_id = pi->nphy_saved_noisevars.tone_id[i];
19156 offset = (tone_id >= 0) ?
19157 ((tone_id *
19158 2) + 1) : (tbllen + (tone_id * 2) + 1);
19159 wlc_phy_table_write_nphy(
19160 pi, NPHY_TBL_ID_NOISEVAR, 1,
19161 offset, 32,
19162 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19163 }
19164
19165 pi->nphy_saved_noisevars.bufcount = 0;
19166 pi->nphy_noisevars_adjusted = false;
19167 }
19168
19169 if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19170 pi->nphy_saved_noisevars.bufcount = 0;
19171
19172 for (i = 0; i < ntones; i++) {
19173 tone_id = tone_id_buf[i];
19174 offset = (tone_id >= 0) ?
19175 ((tone_id * 2) + 1) :
19176 (tbllen + (tone_id * 2) + 1);
19177 pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19178 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19179 offset, 32,
19180 &pi->nphy_saved_noisevars.
19181 min_noise_vars[i]);
19182 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19183 offset, 32, &noise_var_buf[i]);
19184 pi->nphy_saved_noisevars.bufcount++;
19185 }
19186
19187 pi->nphy_noisevars_adjusted = true;
19188 }
19189 }
19190
19191 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19192 {
19193 u16 regval;
19194
19195 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19196 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19197 CHSPEC_IS40(pi->radio_chanspec)) {
19198 if (!pi->nphy_crsminpwr_adjusted) {
19199 regval = read_phy_reg(pi, 0x27d);
19200 pi->nphy_crsminpwr[0] = regval & 0xff;
19201 regval &= 0xff00;
19202 regval |= (u16) minpwr;
19203 write_phy_reg(pi, 0x27d, regval);
19204
19205 regval = read_phy_reg(pi, 0x280);
19206 pi->nphy_crsminpwr[1] = regval & 0xff;
19207 regval &= 0xff00;
19208 regval |= (u16) minpwr;
19209 write_phy_reg(pi, 0x280, regval);
19210
19211 regval = read_phy_reg(pi, 0x283);
19212 pi->nphy_crsminpwr[2] = regval & 0xff;
19213 regval &= 0xff00;
19214 regval |= (u16) minpwr;
19215 write_phy_reg(pi, 0x283, regval);
19216
19217 pi->nphy_crsminpwr_adjusted = true;
19218 }
19219 } else {
19220 if (pi->nphy_crsminpwr_adjusted) {
19221 regval = read_phy_reg(pi, 0x27d);
19222 regval &= 0xff00;
19223 regval |= pi->nphy_crsminpwr[0];
19224 write_phy_reg(pi, 0x27d, regval);
19225
19226 regval = read_phy_reg(pi, 0x280);
19227 regval &= 0xff00;
19228 regval |= pi->nphy_crsminpwr[1];
19229 write_phy_reg(pi, 0x280, regval);
19230
19231 regval = read_phy_reg(pi, 0x283);
19232 regval &= 0xff00;
19233 regval |= pi->nphy_crsminpwr[2];
19234 write_phy_reg(pi, 0x283, regval);
19235
19236 pi->nphy_crsminpwr_adjusted = false;
19237 }
19238 }
19239 }
19240 }
19241
19242 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19243 {
19244 u16 cur_channel = 0;
19245 int nphy_adj_tone_id_buf[] = { 57, 58 };
19246 u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19247 bool isAdjustNoiseVar = false;
19248 uint numTonesAdjust = 0;
19249 u32 tempval = 0;
19250
19251 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19252 if (pi->phyhang_avoid)
19253 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19254
19255 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19256
19257 if (pi->nphy_gband_spurwar_en) {
19258
19259 wlc_phy_adjust_rx_analpfbw_nphy(
19260 pi,
19261 NPHY_ANARXLPFBW_REDUCTIONFACT);
19262
19263 if (CHSPEC_IS2G(pi->radio_chanspec)) {
19264 if ((cur_channel == 11)
19265 && CHSPEC_IS40(pi->radio_chanspec))
19266 wlc_phy_adjust_min_noisevar_nphy(
19267 pi, 2,
19268 nphy_adj_tone_id_buf,
19269 nphy_adj_noise_var_buf);
19270 else
19271 wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19272 NULL,
19273 NULL);
19274 }
19275
19276 wlc_phy_adjust_crsminpwr_nphy(pi,
19277 NPHY_ADJUSTED_MINCRSPOWER);
19278 }
19279
19280 if ((pi->nphy_gband_spurwar2_en)
19281 && CHSPEC_IS2G(pi->radio_chanspec)) {
19282
19283 if (CHSPEC_IS40(pi->radio_chanspec)) {
19284 switch (cur_channel) {
19285 case 3:
19286 nphy_adj_tone_id_buf[0] = 57;
19287 nphy_adj_tone_id_buf[1] = 58;
19288 nphy_adj_noise_var_buf[0] = 0x22f;
19289 nphy_adj_noise_var_buf[1] = 0x25f;
19290 isAdjustNoiseVar = true;
19291 break;
19292 case 4:
19293 nphy_adj_tone_id_buf[0] = 41;
19294 nphy_adj_tone_id_buf[1] = 42;
19295 nphy_adj_noise_var_buf[0] = 0x22f;
19296 nphy_adj_noise_var_buf[1] = 0x25f;
19297 isAdjustNoiseVar = true;
19298 break;
19299 case 5:
19300 nphy_adj_tone_id_buf[0] = 25;
19301 nphy_adj_tone_id_buf[1] = 26;
19302 nphy_adj_noise_var_buf[0] = 0x24f;
19303 nphy_adj_noise_var_buf[1] = 0x25f;
19304 isAdjustNoiseVar = true;
19305 break;
19306 case 6:
19307 nphy_adj_tone_id_buf[0] = 9;
19308 nphy_adj_tone_id_buf[1] = 10;
19309 nphy_adj_noise_var_buf[0] = 0x22f;
19310 nphy_adj_noise_var_buf[1] = 0x24f;
19311 isAdjustNoiseVar = true;
19312 break;
19313 case 7:
19314 nphy_adj_tone_id_buf[0] = 121;
19315 nphy_adj_tone_id_buf[1] = 122;
19316 nphy_adj_noise_var_buf[0] = 0x18f;
19317 nphy_adj_noise_var_buf[1] = 0x24f;
19318 isAdjustNoiseVar = true;
19319 break;
19320 case 8:
19321 nphy_adj_tone_id_buf[0] = 105;
19322 nphy_adj_tone_id_buf[1] = 106;
19323 nphy_adj_noise_var_buf[0] = 0x22f;
19324 nphy_adj_noise_var_buf[1] = 0x25f;
19325 isAdjustNoiseVar = true;
19326 break;
19327 case 9:
19328 nphy_adj_tone_id_buf[0] = 89;
19329 nphy_adj_tone_id_buf[1] = 90;
19330 nphy_adj_noise_var_buf[0] = 0x22f;
19331 nphy_adj_noise_var_buf[1] = 0x24f;
19332 isAdjustNoiseVar = true;
19333 break;
19334 case 10:
19335 nphy_adj_tone_id_buf[0] = 73;
19336 nphy_adj_tone_id_buf[1] = 74;
19337 nphy_adj_noise_var_buf[0] = 0x22f;
19338 nphy_adj_noise_var_buf[1] = 0x24f;
19339 isAdjustNoiseVar = true;
19340 break;
19341 default:
19342 isAdjustNoiseVar = false;
19343 break;
19344 }
19345 }
19346
19347 if (isAdjustNoiseVar) {
19348 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19349
19350 wlc_phy_adjust_min_noisevar_nphy(
19351 pi,
19352 numTonesAdjust,
19353 nphy_adj_tone_id_buf,
19354 nphy_adj_noise_var_buf);
19355
19356 tempval = 0;
19357
19358 } else {
19359 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19360 NULL);
19361 }
19362 }
19363
19364 if ((pi->nphy_aband_spurwar_en) &&
19365 (CHSPEC_IS5G(pi->radio_chanspec))) {
19366 switch (cur_channel) {
19367 case 54:
19368 nphy_adj_tone_id_buf[0] = 32;
19369 nphy_adj_noise_var_buf[0] = 0x25f;
19370 break;
19371 case 38:
19372 case 102:
19373 case 118:
19374 nphy_adj_tone_id_buf[0] = 0;
19375 nphy_adj_noise_var_buf[0] = 0x0;
19376 break;
19377 case 134:
19378 nphy_adj_tone_id_buf[0] = 32;
19379 nphy_adj_noise_var_buf[0] = 0x21f;
19380 break;
19381 case 151:
19382 nphy_adj_tone_id_buf[0] = 16;
19383 nphy_adj_noise_var_buf[0] = 0x23f;
19384 break;
19385 case 153:
19386 case 161:
19387 nphy_adj_tone_id_buf[0] = 48;
19388 nphy_adj_noise_var_buf[0] = 0x23f;
19389 break;
19390 default:
19391 nphy_adj_tone_id_buf[0] = 0;
19392 nphy_adj_noise_var_buf[0] = 0x0;
19393 break;
19394 }
19395
19396 if (nphy_adj_tone_id_buf[0]
19397 && nphy_adj_noise_var_buf[0])
19398 wlc_phy_adjust_min_noisevar_nphy(
19399 pi, 1,
19400 nphy_adj_tone_id_buf,
19401 nphy_adj_noise_var_buf);
19402 else
19403 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19404 NULL);
19405 }
19406
19407 if (pi->phyhang_avoid)
19408 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19409 }
19410 }
19411
19412 void wlc_phy_init_nphy(struct brcms_phy *pi)
19413 {
19414 u16 val;
19415 u16 clip1_ths[2];
19416 struct nphy_txgains target_gain;
19417 u8 tx_pwr_ctrl_state;
19418 bool do_nphy_cal = false;
19419 uint core;
19420 u32 d11_clk_ctl_st;
19421 bool do_rssi_cal = false;
19422
19423 core = 0;
19424
19425 if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19426 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19427
19428 if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19429 ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19430 (pi->sh->chippkg == BCM4718_PKG_ID))) {
19431 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19432 (CHSPEC_IS2G(pi->radio_chanspec)))
19433 ai_cc_reg(pi->sh->sih,
19434 offsetof(struct chipcregs, chipcontrol),
19435 0x40, 0x40);
19436 }
19437
19438 if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19439 CHSPEC_IS40(pi->radio_chanspec)) {
19440
19441 d11_clk_ctl_st = bcma_read32(pi->d11core,
19442 D11REGOFFS(clk_ctl_st));
19443 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19444 ~(CCS_FORCEHT | CCS_HTAREQ));
19445
19446 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19447 d11_clk_ctl_st);
19448 }
19449
19450 pi->use_int_tx_iqlo_cal_nphy =
19451 (PHY_IPA(pi) ||
19452 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19453 (NREV_GE(pi->pubpi.phy_rev, 5)
19454 && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19455
19456 pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19457
19458 pi->nphy_deaf_count = 0;
19459
19460 wlc_phy_tbl_init_nphy(pi);
19461
19462 pi->nphy_crsminpwr_adjusted = false;
19463 pi->nphy_noisevars_adjusted = false;
19464
19465 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19466 write_phy_reg(pi, 0xe7, 0);
19467 write_phy_reg(pi, 0xec, 0);
19468 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19469 write_phy_reg(pi, 0x342, 0);
19470 write_phy_reg(pi, 0x343, 0);
19471 write_phy_reg(pi, 0x346, 0);
19472 write_phy_reg(pi, 0x347, 0);
19473 }
19474 write_phy_reg(pi, 0xe5, 0);
19475 write_phy_reg(pi, 0xe6, 0);
19476 } else {
19477 write_phy_reg(pi, 0xec, 0);
19478 }
19479
19480 write_phy_reg(pi, 0x91, 0);
19481 write_phy_reg(pi, 0x92, 0);
19482 if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19483 write_phy_reg(pi, 0x93, 0);
19484 write_phy_reg(pi, 0x94, 0);
19485 }
19486
19487 and_phy_reg(pi, 0xa1, ~3);
19488
19489 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19490 write_phy_reg(pi, 0x8f, 0);
19491 write_phy_reg(pi, 0xa5, 0);
19492 } else {
19493 write_phy_reg(pi, 0xa5, 0);
19494 }
19495
19496 if (NREV_IS(pi->pubpi.phy_rev, 2))
19497 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19498 else if (NREV_LT(pi->pubpi.phy_rev, 2))
19499 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19500
19501 write_phy_reg(pi, 0x203, 32);
19502 write_phy_reg(pi, 0x201, 32);
19503
19504 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19505 write_phy_reg(pi, 0x20d, 160);
19506 else
19507 write_phy_reg(pi, 0x20d, 184);
19508
19509 write_phy_reg(pi, 0x13a, 200);
19510
19511 write_phy_reg(pi, 0x70, 80);
19512
19513 write_phy_reg(pi, 0x1ff, 48);
19514
19515 if (NREV_LT(pi->pubpi.phy_rev, 8))
19516 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19517
19518 wlc_phy_stf_chain_upd_nphy(pi);
19519
19520 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19521 write_phy_reg(pi, 0x180, 0xaa8);
19522 write_phy_reg(pi, 0x181, 0x9a4);
19523 }
19524
19525 if (PHY_IPA(pi)) {
19526 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19527
19528 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19529 0x29b, (0x1 << 0), (1) << 0);
19530
19531 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19532 0x29c, (0x1ff << 7),
19533 (pi->nphy_papd_epsilon_offset[core]) << 7);
19534
19535 }
19536
19537 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19538 } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19539 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19540 }
19541
19542 wlc_phy_workarounds_nphy(pi);
19543
19544 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19545
19546 val = read_phy_reg(pi, 0x01);
19547 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19548 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19549 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19550
19551 wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19552
19553 wlc_phy_pa_override_nphy(pi, OFF);
19554 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19555 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19556 wlc_phy_pa_override_nphy(pi, ON);
19557
19558 wlc_phy_classifier_nphy(pi, 0, 0);
19559 wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19560
19561 if (CHSPEC_IS2G(pi->radio_chanspec))
19562 wlc_phy_bphy_init_nphy(pi);
19563
19564 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19565 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19566
19567 wlc_phy_txpwr_fixpower_nphy(pi);
19568
19569 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19570
19571 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19572
19573 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19574 u32 *tx_pwrctrl_tbl = NULL;
19575 u16 idx;
19576 s16 pga_gn = 0;
19577 s16 pad_gn = 0;
19578 s32 rfpwr_offset;
19579
19580 if (PHY_IPA(pi)) {
19581 tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19582 } else {
19583 if (CHSPEC_IS5G(pi->radio_chanspec)) {
19584 if (NREV_IS(pi->pubpi.phy_rev, 3))
19585 tx_pwrctrl_tbl =
19586 nphy_tpc_5GHz_txgain_rev3;
19587 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19588 tx_pwrctrl_tbl =
19589 (pi->srom_fem5g.extpagain ==
19590 3) ?
19591 nphy_tpc_5GHz_txgain_HiPwrEPA :
19592 nphy_tpc_5GHz_txgain_rev4;
19593 else
19594 tx_pwrctrl_tbl =
19595 nphy_tpc_5GHz_txgain_rev5;
19596 } else {
19597 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19598 if (pi->pubpi.radiorev == 5)
19599 tx_pwrctrl_tbl =
19600 nphy_tpc_txgain_epa_2057rev5;
19601 else if (pi->pubpi.radiorev == 3)
19602 tx_pwrctrl_tbl =
19603 nphy_tpc_txgain_epa_2057rev3;
19604 } else {
19605 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19606 (pi->srom_fem2g.extpagain == 3))
19607 tx_pwrctrl_tbl =
19608 nphy_tpc_txgain_HiPwrEPA;
19609 else
19610 tx_pwrctrl_tbl =
19611 nphy_tpc_txgain_rev3;
19612 }
19613 }
19614 }
19615
19616 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19617 192, 32, tx_pwrctrl_tbl);
19618 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19619 192, 32, tx_pwrctrl_tbl);
19620
19621 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19622
19623 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19624
19625 for (idx = 0; idx < 128; idx++) {
19626 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19627 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19628 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19629 pad_gn);
19630 wlc_phy_table_write_nphy(
19631 pi,
19632 NPHY_TBL_ID_CORE1TXPWRCTL,
19633 1, 576 + idx, 32,
19634 &rfpwr_offset);
19635 wlc_phy_table_write_nphy(
19636 pi,
19637 NPHY_TBL_ID_CORE2TXPWRCTL,
19638 1, 576 + idx, 32,
19639 &rfpwr_offset);
19640 }
19641 } else {
19642
19643 for (idx = 0; idx < 128; idx++) {
19644 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19645 if (CHSPEC_IS2G(pi->radio_chanspec))
19646 rfpwr_offset = (s16)
19647 nphy_papd_pga_gain_delta_ipa_2g
19648 [pga_gn];
19649 else
19650 rfpwr_offset = (s16)
19651 nphy_papd_pga_gain_delta_ipa_5g
19652 [pga_gn];
19653
19654 wlc_phy_table_write_nphy(
19655 pi,
19656 NPHY_TBL_ID_CORE1TXPWRCTL,
19657 1, 576 + idx, 32,
19658 &rfpwr_offset);
19659 wlc_phy_table_write_nphy(
19660 pi,
19661 NPHY_TBL_ID_CORE2TXPWRCTL,
19662 1, 576 + idx, 32,
19663 &rfpwr_offset);
19664 }
19665
19666 }
19667 } else {
19668
19669 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19670 192, 32, nphy_tpc_txgain);
19671 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19672 192, 32, nphy_tpc_txgain);
19673 }
19674
19675 if (pi->sh->phyrxchain != 0x3)
19676 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19677 pi->sh->phyrxchain);
19678
19679 if (PHY_PERICAL_MPHASE_PENDING(pi))
19680 wlc_phy_cal_perical_mphase_restart(pi);
19681
19682 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19683 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19684 (pi->nphy_rssical_chanspec_2G == 0) :
19685 (pi->nphy_rssical_chanspec_5G == 0);
19686
19687 if (do_rssi_cal)
19688 wlc_phy_rssi_cal_nphy(pi);
19689 else
19690 wlc_phy_restore_rssical_nphy(pi);
19691 } else {
19692 wlc_phy_rssi_cal_nphy(pi);
19693 }
19694
19695 if (!SCAN_RM_IN_PROGRESS(pi))
19696 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19697 (pi->nphy_iqcal_chanspec_2G == 0) :
19698 (pi->nphy_iqcal_chanspec_5G == 0);
19699
19700 if (!pi->do_initcal)
19701 do_nphy_cal = false;
19702
19703 if (do_nphy_cal) {
19704
19705 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19706
19707 if (pi->antsel_type == ANTSEL_2x3)
19708 wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19709 true);
19710
19711 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19712 wlc_phy_rssi_cal_nphy(pi);
19713
19714 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19715 pi->nphy_cal_orig_pwr_idx[0] =
19716 pi->nphy_txpwrindex[PHY_CORE_0]
19717 .
19718 index_internal;
19719 pi->nphy_cal_orig_pwr_idx[1] =
19720 pi->nphy_txpwrindex[PHY_CORE_1]
19721 .
19722 index_internal;
19723
19724 wlc_phy_precal_txgain_nphy(pi);
19725 target_gain =
19726 wlc_phy_get_tx_gain_nphy(pi);
19727 }
19728
19729 if (wlc_phy_cal_txiqlo_nphy
19730 (pi, target_gain, true,
19731 false) == 0) {
19732 if (wlc_phy_cal_rxiq_nphy
19733 (pi, target_gain, 2,
19734 false) == 0)
19735 wlc_phy_savecal_nphy(pi);
19736
19737 }
19738 } else if (pi->mphase_cal_phase_id ==
19739 MPHASE_CAL_STATE_IDLE) {
19740 wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19741 PHY_PERICAL_PHYINIT);
19742 }
19743 } else {
19744 wlc_phy_restorecal_nphy(pi);
19745 }
19746
19747 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19748
19749 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19750
19751 wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19752
19753 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19754
19755 write_phy_reg(pi, 0x70, 50);
19756
19757 wlc_phy_txlpfbw_nphy(pi);
19758
19759 wlc_phy_spurwar_nphy(pi);
19760
19761 }
19762
19763 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19764 {
19765 u16 val;
19766
19767 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19768
19769 val = read_phy_reg(pi, 0x01);
19770 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19771 udelay(1);
19772 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19773
19774 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19775
19776 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19777 }
19778
19779 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19780 {
19781 u16 rfctrlintc_override_val;
19782
19783 if (!en) {
19784
19785 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19786 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19787
19788 if (NREV_GE(pi->pubpi.phy_rev, 7))
19789 rfctrlintc_override_val = 0x1480;
19790 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19791 rfctrlintc_override_val =
19792 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19793 else
19794 rfctrlintc_override_val =
19795 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19796
19797 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19798 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19799 } else {
19800 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19801 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19802 }
19803
19804 }
19805
19806 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19807 {
19808
19809 u16 txrx_chain =
19810 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19811 bool CoreActv_override = false;
19812
19813 if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19814 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19815 CoreActv_override = true;
19816
19817 if (NREV_LE(pi->pubpi.phy_rev, 2))
19818 and_phy_reg(pi, 0xa0, ~0x20);
19819 } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19820 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19821 CoreActv_override = true;
19822
19823 if (NREV_LE(pi->pubpi.phy_rev, 2))
19824 or_phy_reg(pi, 0xa0, 0x20);
19825 }
19826
19827 mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19828
19829 if (CoreActv_override) {
19830 pi->nphy_perical = PHY_PERICAL_DISABLE;
19831 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19832 } else {
19833 pi->nphy_perical = PHY_PERICAL_MPHASE;
19834 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19835 }
19836 }
19837
19838 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19839 {
19840 u16 regval;
19841 u16 tbl_buf[16];
19842 uint i;
19843 struct brcms_phy *pi = (struct brcms_phy *) pih;
19844 u16 tbl_opcode;
19845 bool suspend;
19846
19847 pi->sh->phyrxchain = rxcore_bitmask;
19848
19849 if (!pi->sh->clk)
19850 return;
19851
19852 suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19853 MCTL_EN_MAC));
19854 if (!suspend)
19855 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19856
19857 if (pi->phyhang_avoid)
19858 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19859
19860 regval = read_phy_reg(pi, 0xa2);
19861 regval &= ~(0xf << 4);
19862 regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19863 write_phy_reg(pi, 0xa2, regval);
19864
19865 if ((rxcore_bitmask & 0x3) != 0x3) {
19866
19867 write_phy_reg(pi, 0x20e, 1);
19868
19869 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19870 if (pi->rx2tx_biasentry == -1) {
19871 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19872 ARRAY_SIZE(tbl_buf), 80,
19873 16, tbl_buf);
19874
19875 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19876 if (tbl_buf[i] ==
19877 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19878 pi->rx2tx_biasentry = (u8) i;
19879 tbl_opcode =
19880 NPHY_REV3_RFSEQ_CMD_NOP;
19881 wlc_phy_table_write_nphy(
19882 pi,
19883 NPHY_TBL_ID_RFSEQ,
19884 1, i,
19885 16,
19886 &tbl_opcode);
19887 break;
19888 } else if (tbl_buf[i] ==
19889 NPHY_REV3_RFSEQ_CMD_END)
19890 break;
19891 }
19892 }
19893 }
19894 } else {
19895
19896 write_phy_reg(pi, 0x20e, 30);
19897
19898 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19899 if (pi->rx2tx_biasentry != -1) {
19900 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19901 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19902 1, pi->rx2tx_biasentry,
19903 16, &tbl_opcode);
19904 pi->rx2tx_biasentry = -1;
19905 }
19906 }
19907 }
19908
19909 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19910
19911 if (pi->phyhang_avoid)
19912 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19913
19914 if (!suspend)
19915 wlapi_enable_mac(pi->sh->physhim);
19916 }
19917
19918 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19919 {
19920 u16 regval, rxen_bits;
19921 struct brcms_phy *pi = (struct brcms_phy *) pih;
19922
19923 regval = read_phy_reg(pi, 0xa2);
19924 rxen_bits = (regval >> 4) & 0xf;
19925
19926 return (u8) rxen_bits;
19927 }
19928
19929 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19930 {
19931 return PHY_IPA(pi);
19932 }
19933
19934 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19935 {
19936 }
19937
19938 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19939 {
19940
19941 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19942 and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19943
19944 or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19945 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19946
19947 }
19948
19949 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19950 {
19951 struct radio_20xx_regs *regs_2057_ptr = NULL;
19952
19953 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19954 regs_2057_ptr = regs_2057_rev4;
19955 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19956 || NREV_IS(pi->pubpi.phy_rev, 9)) {
19957 switch (pi->pubpi.radiorev) {
19958 case 5:
19959
19960 if (NREV_IS(pi->pubpi.phy_rev, 8))
19961 regs_2057_ptr = regs_2057_rev5;
19962 else if (NREV_IS(pi->pubpi.phy_rev, 9))
19963 regs_2057_ptr = regs_2057_rev5v1;
19964 break;
19965
19966 case 7:
19967
19968 regs_2057_ptr = regs_2057_rev7;
19969 break;
19970
19971 case 8:
19972
19973 regs_2057_ptr = regs_2057_rev8;
19974 break;
19975
19976 default:
19977 break;
19978 }
19979 }
19980
19981 wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19982 }
19983
19984 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19985 {
19986 u16 rcal_reg = 0;
19987 int i;
19988
19989 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19990
19991 if (pi->pubpi.radiorev == 5) {
19992
19993 and_phy_reg(pi, 0x342, ~(0x1 << 1));
19994
19995 udelay(10);
19996
19997 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19998 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19999 0x1);
20000 }
20001 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
20002
20003 udelay(10);
20004
20005 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
20006
20007 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20008 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
20009 if (rcal_reg & 0x1)
20010 break;
20011
20012 udelay(100);
20013 }
20014
20015 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20016 "HW error: radio calib2"))
20017 return 0;
20018
20019 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
20020
20021 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
20022
20023 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
20024 if (pi->pubpi.radiorev == 5) {
20025
20026 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
20027 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
20028 0x0);
20029 }
20030
20031 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20032
20033 mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
20034 rcal_reg);
20035 mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
20036 rcal_reg << 2);
20037 }
20038
20039 } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20040 u16 savereg;
20041
20042 savereg =
20043 read_radio_reg(
20044 pi,
20045 RADIO_2056_SYN_PLL_MAST2 |
20046 RADIO_2056_SYN);
20047 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20048 savereg | 0x7);
20049 udelay(10);
20050
20051 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20052 0x1);
20053 udelay(10);
20054
20055 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20056 0x9);
20057
20058 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20059 rcal_reg = read_radio_reg(
20060 pi,
20061 RADIO_2056_SYN_RCAL_CODE_OUT |
20062 RADIO_2056_SYN);
20063 if (rcal_reg & 0x80)
20064 break;
20065
20066 udelay(100);
20067 }
20068
20069 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20070 "HW error: radio calib3"))
20071 return 0;
20072
20073 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20074 0x1);
20075
20076 rcal_reg =
20077 read_radio_reg(pi,
20078 RADIO_2056_SYN_RCAL_CODE_OUT |
20079 RADIO_2056_SYN);
20080
20081 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20082 0x0);
20083
20084 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20085 savereg);
20086
20087 return rcal_reg & 0x1f;
20088 }
20089 return rcal_reg & 0x3e;
20090 }
20091
20092 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
20093 {
20094 u16 rccal_valid;
20095 int i;
20096 bool chip43226_6362A0;
20097
20098 chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
20099 || (pi->pubpi.radiorev == 4)
20100 || (pi->pubpi.radiorev == 6));
20101
20102 rccal_valid = 0;
20103 if (chip43226_6362A0) {
20104 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20105 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20106 } else {
20107 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20108
20109 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20110 }
20111 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20112 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20113
20114 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20115 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20116 if (rccal_valid & 0x2)
20117 break;
20118
20119 udelay(500);
20120 }
20121
20122 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20123
20124 rccal_valid = 0;
20125 if (chip43226_6362A0) {
20126 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20127 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20128 } else {
20129 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20130
20131 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20132 }
20133 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20134 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20135
20136 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20137 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20138 if (rccal_valid & 0x2)
20139 break;
20140
20141 udelay(500);
20142 }
20143
20144 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20145
20146 rccal_valid = 0;
20147 if (chip43226_6362A0) {
20148 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20149
20150 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20151 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20152 } else {
20153 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20154 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20155 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20156 }
20157 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20158
20159 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20160 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20161 if (rccal_valid & 0x2)
20162 break;
20163
20164 udelay(500);
20165 }
20166
20167 if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20168 return 0;
20169
20170 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20171
20172 return rccal_valid;
20173 }
20174
20175 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20176 {
20177
20178 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20179
20180 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20181 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20182 mdelay(2);
20183 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20184 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20185
20186 if (pi->phy_init_por) {
20187 wlc_phy_radio205x_rcal(pi);
20188 wlc_phy_radio2057_rccal(pi);
20189 }
20190
20191 mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20192 }
20193
20194 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20195 {
20196 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20197 const struct radio_regs *regs_TX_2056_ptr = NULL;
20198 const struct radio_regs *regs_RX_2056_ptr = NULL;
20199
20200 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20201 regs_SYN_2056_ptr = regs_SYN_2056;
20202 regs_TX_2056_ptr = regs_TX_2056;
20203 regs_RX_2056_ptr = regs_RX_2056;
20204 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20205 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20206 regs_TX_2056_ptr = regs_TX_2056_A1;
20207 regs_RX_2056_ptr = regs_RX_2056_A1;
20208 } else {
20209 switch (pi->pubpi.radiorev) {
20210 case 5:
20211 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20212 regs_TX_2056_ptr = regs_TX_2056_rev5;
20213 regs_RX_2056_ptr = regs_RX_2056_rev5;
20214 break;
20215
20216 case 6:
20217 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20218 regs_TX_2056_ptr = regs_TX_2056_rev6;
20219 regs_RX_2056_ptr = regs_RX_2056_rev6;
20220 break;
20221
20222 case 7:
20223 case 9:
20224 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20225 regs_TX_2056_ptr = regs_TX_2056_rev7;
20226 regs_RX_2056_ptr = regs_RX_2056_rev7;
20227 break;
20228
20229 case 8:
20230 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20231 regs_TX_2056_ptr = regs_TX_2056_rev8;
20232 regs_RX_2056_ptr = regs_RX_2056_rev8;
20233 break;
20234
20235 case 11:
20236 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20237 regs_TX_2056_ptr = regs_TX_2056_rev11;
20238 regs_RX_2056_ptr = regs_RX_2056_rev11;
20239 break;
20240
20241 default:
20242 break;
20243 }
20244 }
20245
20246 wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20247
20248 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20249
20250 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20251
20252 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20253
20254 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20255 }
20256
20257 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20258 {
20259 mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20260
20261 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20262 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20263 udelay(1000);
20264 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20265
20266 if ((pi->sh->boardflags2 & BFL2_LEGACY)
20267 || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20268 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20269 else
20270 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20271
20272 mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20273
20274 if (pi->phy_init_por)
20275 wlc_phy_radio205x_rcal(pi);
20276 }
20277
20278 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20279 {
20280
20281 and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20282 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20283
20284 or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20285 }
20286
20287 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20288 {
20289 wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20290 }
20291
20292 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20293 {
20294
20295 and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20296 ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20297
20298 if (((pi->sh->sromrev >= 4)
20299 && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20300 || ((pi->sh->sromrev < 4))) {
20301 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20302 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20303 }
20304
20305 mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20306 write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20307
20308 and_radio_reg(pi, RADIO_2055_CAL_MISC,
20309 ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20310
20311 or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20312
20313 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20314
20315 udelay(1000);
20316
20317 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20318
20319 SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20320 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20321
20322 if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20323 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20324 "HW error: radio calibration1\n"))
20325 return;
20326
20327 and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20328 ~(RADIO_2055_CAL_LPO_ENABLE));
20329
20330 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20331
20332 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20333 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20334
20335 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20336 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20337
20338 mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20339 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20340 mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20341 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20342 if (pi->nphy_gain_boost) {
20343 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20344 ~(RADIO_2055_GAINBST_DISABLE));
20345 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20346 ~(RADIO_2055_GAINBST_DISABLE));
20347 } else {
20348 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20349 RADIO_2055_GAINBST_DISABLE);
20350 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20351 RADIO_2055_GAINBST_DISABLE);
20352 }
20353
20354 udelay(2);
20355 }
20356
20357 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20358 {
20359 if (on) {
20360 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20361 if (!pi->radio_is_on) {
20362 wlc_phy_radio_preinit_205x(pi);
20363 wlc_phy_radio_init_2057(pi);
20364 wlc_phy_radio_postinit_2057(pi);
20365 }
20366
20367 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20368 pi->radio_chanspec);
20369 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20370 wlc_phy_radio_preinit_205x(pi);
20371 wlc_phy_radio_init_2056(pi);
20372 wlc_phy_radio_postinit_2056(pi);
20373
20374 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20375 pi->radio_chanspec);
20376 } else {
20377 wlc_phy_radio_preinit_2055(pi);
20378 wlc_phy_radio_init_2055(pi);
20379 wlc_phy_radio_postinit_2055(pi);
20380 }
20381
20382 pi->radio_is_on = true;
20383
20384 } else {
20385
20386 if (NREV_GE(pi->pubpi.phy_rev, 3)
20387 && NREV_LT(pi->pubpi.phy_rev, 7)) {
20388 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20389 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20390
20391 write_radio_reg(pi,
20392 RADIO_2056_TX_PADA_BOOST_TUNE |
20393 RADIO_2056_TX0, 0);
20394 write_radio_reg(pi,
20395 RADIO_2056_TX_PADG_BOOST_TUNE |
20396 RADIO_2056_TX0, 0);
20397 write_radio_reg(pi,
20398 RADIO_2056_TX_PGAA_BOOST_TUNE |
20399 RADIO_2056_TX0, 0);
20400 write_radio_reg(pi,
20401 RADIO_2056_TX_PGAG_BOOST_TUNE |
20402 RADIO_2056_TX0, 0);
20403 mod_radio_reg(pi,
20404 RADIO_2056_TX_MIXA_BOOST_TUNE |
20405 RADIO_2056_TX0, 0xf0, 0);
20406 write_radio_reg(pi,
20407 RADIO_2056_TX_MIXG_BOOST_TUNE |
20408 RADIO_2056_TX0, 0);
20409
20410 write_radio_reg(pi,
20411 RADIO_2056_TX_PADA_BOOST_TUNE |
20412 RADIO_2056_TX1, 0);
20413 write_radio_reg(pi,
20414 RADIO_2056_TX_PADG_BOOST_TUNE |
20415 RADIO_2056_TX1, 0);
20416 write_radio_reg(pi,
20417 RADIO_2056_TX_PGAA_BOOST_TUNE |
20418 RADIO_2056_TX1, 0);
20419 write_radio_reg(pi,
20420 RADIO_2056_TX_PGAG_BOOST_TUNE |
20421 RADIO_2056_TX1, 0);
20422 mod_radio_reg(pi,
20423 RADIO_2056_TX_MIXA_BOOST_TUNE |
20424 RADIO_2056_TX1, 0xf0, 0);
20425 write_radio_reg(pi,
20426 RADIO_2056_TX_MIXG_BOOST_TUNE |
20427 RADIO_2056_TX1, 0);
20428
20429 pi->radio_is_on = false;
20430 }
20431
20432 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20433 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20434 pi->radio_is_on = false;
20435 }
20436
20437 }
20438 }
20439
20440 static bool
20441 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20442 const struct chan_info_nphy_radio2057 **t0,
20443 const struct chan_info_nphy_radio205x **t1,
20444 const struct chan_info_nphy_radio2057_rev5 **t2,
20445 const struct chan_info_nphy_2055 **t3)
20446 {
20447 uint i;
20448 const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20449 const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20450 const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20451 u32 tbl_len = 0;
20452
20453 int freq = 0;
20454
20455 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20456
20457 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20458
20459 chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20460 tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20461
20462 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20463 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20464 switch (pi->pubpi.radiorev) {
20465
20466 case 5:
20467
20468 if (pi->pubpi.radiover == 0x0) {
20469
20470 chan_info_tbl_p_2 =
20471 chan_info_nphyrev8_2057_rev5;
20472 tbl_len = ARRAY_SIZE(
20473 chan_info_nphyrev8_2057_rev5);
20474
20475 } else if (pi->pubpi.radiover == 0x1) {
20476
20477 chan_info_tbl_p_2 =
20478 chan_info_nphyrev9_2057_rev5v1;
20479 tbl_len = ARRAY_SIZE(
20480 chan_info_nphyrev9_2057_rev5v1);
20481
20482 }
20483 break;
20484
20485 case 7:
20486 chan_info_tbl_p_0 =
20487 chan_info_nphyrev8_2057_rev7;
20488 tbl_len = ARRAY_SIZE(
20489 chan_info_nphyrev8_2057_rev7);
20490 break;
20491
20492 case 8:
20493 chan_info_tbl_p_0 =
20494 chan_info_nphyrev8_2057_rev8;
20495 tbl_len = ARRAY_SIZE(
20496 chan_info_nphyrev8_2057_rev8);
20497 break;
20498
20499 default:
20500 break;
20501 }
20502 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20503
20504 chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20505 tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20506 } else {
20507 goto fail;
20508 }
20509
20510 for (i = 0; i < tbl_len; i++) {
20511 if (pi->pubpi.radiorev == 5) {
20512
20513 if (chan_info_tbl_p_2[i].chan == channel)
20514 break;
20515 } else {
20516
20517 if (chan_info_tbl_p_0[i].chan == channel)
20518 break;
20519 }
20520 }
20521
20522 if (i >= tbl_len)
20523 goto fail;
20524
20525 if (pi->pubpi.radiorev == 5) {
20526 *t2 = &chan_info_tbl_p_2[i];
20527 freq = chan_info_tbl_p_2[i].freq;
20528 } else {
20529 *t0 = &chan_info_tbl_p_0[i];
20530 freq = chan_info_tbl_p_0[i].freq;
20531 }
20532
20533 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20534 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20535 chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20536 tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20537 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20538 chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20539 tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20540 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20541 || NREV_IS(pi->pubpi.phy_rev, 6)) {
20542 switch (pi->pubpi.radiorev) {
20543 case 5:
20544 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20545 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20546 break;
20547 case 6:
20548 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20549 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20550 break;
20551 case 7:
20552 case 9:
20553 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20554 tbl_len =
20555 ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20556 break;
20557 case 8:
20558 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20559 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20560 break;
20561 case 11:
20562 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20563 tbl_len = ARRAY_SIZE(
20564 chan_info_nphyrev6_2056v11);
20565 break;
20566 default:
20567 break;
20568 }
20569 }
20570
20571 for (i = 0; i < tbl_len; i++) {
20572 if (chan_info_tbl_p_1[i].chan == channel)
20573 break;
20574 }
20575
20576 if (i >= tbl_len)
20577 goto fail;
20578
20579 *t1 = &chan_info_tbl_p_1[i];
20580 freq = chan_info_tbl_p_1[i].freq;
20581
20582 } else {
20583 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20584 if (chan_info_nphy_2055[i].chan == channel)
20585 break;
20586
20587 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20588 goto fail;
20589
20590 *t3 = &chan_info_nphy_2055[i];
20591 freq = chan_info_nphy_2055[i].freq;
20592 }
20593
20594 *f = freq;
20595 return true;
20596
20597 fail:
20598 *f = WL_CHAN_FREQ_RANGE_2G;
20599 return false;
20600 }
20601
20602 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20603 {
20604 int freq;
20605 const struct chan_info_nphy_radio2057 *t0 = NULL;
20606 const struct chan_info_nphy_radio205x *t1 = NULL;
20607 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20608 const struct chan_info_nphy_2055 *t3 = NULL;
20609
20610 if (channel == 0)
20611 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20612
20613 wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20614
20615 if (CHSPEC_IS2G(pi->radio_chanspec))
20616 return WL_CHAN_FREQ_RANGE_2G;
20617
20618 if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20619 return WL_CHAN_FREQ_RANGE_5GL;
20620 else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20621 return WL_CHAN_FREQ_RANGE_5GM;
20622 else
20623 return WL_CHAN_FREQ_RANGE_5GH;
20624 }
20625
20626 static void
20627 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20628 const struct chan_info_nphy_2055 *ci)
20629 {
20630
20631 write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20632 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20633 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20634 write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20635
20636 BRCMS_PHY_WAR_PR51571(pi);
20637
20638 write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20639 write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20640 write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20641 write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20642
20643 BRCMS_PHY_WAR_PR51571(pi);
20644
20645 write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20646 write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20647 write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20648 write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20649
20650 BRCMS_PHY_WAR_PR51571(pi);
20651
20652 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20653 ci->RF_core1_lgbuf_a_tune);
20654 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20655 ci->RF_core1_lgbuf_g_tune);
20656 write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20657 write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20658 ci->RF_core1_tx_pga_pad_tn);
20659
20660 BRCMS_PHY_WAR_PR51571(pi);
20661
20662 write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20663 ci->RF_core1_tx_mx_bgtrim);
20664 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20665 ci->RF_core2_lgbuf_a_tune);
20666 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20667 ci->RF_core2_lgbuf_g_tune);
20668 write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20669
20670 BRCMS_PHY_WAR_PR51571(pi);
20671
20672 write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20673 ci->RF_core2_tx_pga_pad_tn);
20674 write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20675 ci->RF_core2_tx_mx_bgtrim);
20676
20677 udelay(50);
20678
20679 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20680 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20681
20682 BRCMS_PHY_WAR_PR51571(pi);
20683
20684 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20685
20686 udelay(300);
20687 }
20688
20689 static void
20690 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20691 const struct chan_info_nphy_radio205x *ci)
20692 {
20693 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20694
20695 write_radio_reg(pi,
20696 RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20697 ci->RF_SYN_pll_vcocal1);
20698 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20699 ci->RF_SYN_pll_vcocal2);
20700 write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20701 ci->RF_SYN_pll_refdiv);
20702 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20703 ci->RF_SYN_pll_mmd2);
20704 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20705 ci->RF_SYN_pll_mmd1);
20706 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20707 ci->RF_SYN_pll_loopfilter1);
20708 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20709 ci->RF_SYN_pll_loopfilter2);
20710 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20711 ci->RF_SYN_pll_loopfilter3);
20712 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20713 ci->RF_SYN_pll_loopfilter4);
20714 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20715 ci->RF_SYN_pll_loopfilter5);
20716 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20717 ci->RF_SYN_reserved_addr27);
20718 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20719 ci->RF_SYN_reserved_addr28);
20720 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20721 ci->RF_SYN_reserved_addr29);
20722 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20723 ci->RF_SYN_logen_VCOBUF1);
20724 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20725 ci->RF_SYN_logen_MIXER2);
20726 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20727 ci->RF_SYN_logen_BUF3);
20728 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20729 ci->RF_SYN_logen_BUF4);
20730
20731 write_radio_reg(pi,
20732 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20733 ci->RF_RX0_lnaa_tune);
20734 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20735 ci->RF_RX0_lnag_tune);
20736 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20737 ci->RF_TX0_intpaa_boost_tune);
20738 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20739 ci->RF_TX0_intpag_boost_tune);
20740 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20741 ci->RF_TX0_pada_boost_tune);
20742 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20743 ci->RF_TX0_padg_boost_tune);
20744 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20745 ci->RF_TX0_pgaa_boost_tune);
20746 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20747 ci->RF_TX0_pgag_boost_tune);
20748 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20749 ci->RF_TX0_mixa_boost_tune);
20750 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20751 ci->RF_TX0_mixg_boost_tune);
20752
20753 write_radio_reg(pi,
20754 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20755 ci->RF_RX1_lnaa_tune);
20756 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20757 ci->RF_RX1_lnag_tune);
20758 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20759 ci->RF_TX1_intpaa_boost_tune);
20760 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20761 ci->RF_TX1_intpag_boost_tune);
20762 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20763 ci->RF_TX1_pada_boost_tune);
20764 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20765 ci->RF_TX1_padg_boost_tune);
20766 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20767 ci->RF_TX1_pgaa_boost_tune);
20768 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20769 ci->RF_TX1_pgag_boost_tune);
20770 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20771 ci->RF_TX1_mixa_boost_tune);
20772 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20773 ci->RF_TX1_mixg_boost_tune);
20774
20775 if (NREV_IS(pi->pubpi.phy_rev, 3))
20776 regs_SYN_2056_ptr = regs_SYN_2056;
20777 else if (NREV_IS(pi->pubpi.phy_rev, 4))
20778 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20779 else {
20780 switch (pi->pubpi.radiorev) {
20781 case 5:
20782 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20783 break;
20784 case 6:
20785 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20786 break;
20787 case 7:
20788 case 9:
20789 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20790 break;
20791 case 8:
20792 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20793 break;
20794 case 11:
20795 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20796 break;
20797 }
20798 }
20799 if (CHSPEC_IS2G(pi->radio_chanspec))
20800 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20801 RADIO_2056_SYN,
20802 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20803 else
20804 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20805 RADIO_2056_SYN,
20806 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20807
20808 if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20809 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20810 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20811 RADIO_2056_SYN, 0x1f);
20812 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20813 RADIO_2056_SYN, 0x1f);
20814
20815 write_radio_reg(pi,
20816 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20817 RADIO_2056_SYN, 0xb);
20818 write_radio_reg(pi,
20819 RADIO_2056_SYN_PLL_CP2 |
20820 RADIO_2056_SYN, 0x14);
20821 }
20822 }
20823
20824 if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20825 (CHSPEC_IS2G(pi->radio_chanspec))) {
20826 write_radio_reg(pi,
20827 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20828 0x1f);
20829 write_radio_reg(pi,
20830 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20831 0x1f);
20832 write_radio_reg(pi,
20833 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20834 0xb);
20835 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20836 0x20);
20837 }
20838
20839 if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20840 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20841 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20842 RADIO_2056_SYN, 0x1f);
20843 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20844 RADIO_2056_SYN, 0x1f);
20845 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20846 RADIO_2056_SYN, 0x5);
20847 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20848 RADIO_2056_SYN, 0xc);
20849 }
20850 }
20851
20852 if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20853 u16 pag_boost_tune;
20854 u16 padg_boost_tune;
20855 u16 pgag_boost_tune;
20856 u16 mixg_boost_tune;
20857 u16 bias, cascbias;
20858 uint core;
20859
20860 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20861
20862 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20863
20864 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20865 PADG_IDAC, 0xcc);
20866
20867 bias = 0x25;
20868 cascbias = 0x20;
20869
20870 if ((pi->sh->chip ==
20871 BCM43224_CHIP_ID)
20872 || (pi->sh->chip ==
20873 BCM43225_CHIP_ID)) {
20874 if (pi->sh->chippkg ==
20875 BCM43224_FAB_SMIC) {
20876 bias = 0x2a;
20877 cascbias = 0x38;
20878 }
20879 }
20880
20881 pag_boost_tune = 0x4;
20882 pgag_boost_tune = 0x03;
20883 padg_boost_tune = 0x77;
20884 mixg_boost_tune = 0x65;
20885
20886 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20887 INTPAG_IMAIN_STAT, bias);
20888 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20889 INTPAG_IAUX_STAT, bias);
20890 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20891 INTPAG_CASCBIAS, cascbias);
20892
20893 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20894 INTPAG_BOOST_TUNE,
20895 pag_boost_tune);
20896 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20897 PGAG_BOOST_TUNE,
20898 pgag_boost_tune);
20899 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20900 PADG_BOOST_TUNE,
20901 padg_boost_tune);
20902 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20903 MIXG_BOOST_TUNE,
20904 mixg_boost_tune);
20905 } else {
20906
20907 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20908 0x40 : 0x20;
20909
20910 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20911 INTPAG_IMAIN_STAT, bias);
20912 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20913 INTPAG_IAUX_STAT, bias);
20914 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20915 INTPAG_CASCBIAS, 0x30);
20916 }
20917 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20918 0xee);
20919 }
20920 }
20921
20922 if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20923 && CHSPEC_IS5G(pi->radio_chanspec)) {
20924 u16 paa_boost_tune;
20925 u16 pada_boost_tune;
20926 u16 pgaa_boost_tune;
20927 u16 mixa_boost_tune;
20928 u16 freq, pabias, cascbias;
20929 uint core;
20930
20931 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20932
20933 if (freq < 5150) {
20934
20935 paa_boost_tune = 0xa;
20936 pada_boost_tune = 0x77;
20937 pgaa_boost_tune = 0xf;
20938 mixa_boost_tune = 0xf;
20939 } else if (freq < 5340) {
20940
20941 paa_boost_tune = 0x8;
20942 pada_boost_tune = 0x77;
20943 pgaa_boost_tune = 0xfb;
20944 mixa_boost_tune = 0xf;
20945 } else if (freq < 5650) {
20946
20947 paa_boost_tune = 0x0;
20948 pada_boost_tune = 0x77;
20949 pgaa_boost_tune = 0xb;
20950 mixa_boost_tune = 0xf;
20951 } else {
20952
20953 paa_boost_tune = 0x0;
20954 pada_boost_tune = 0x77;
20955 if (freq != 5825)
20956 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20957 else
20958 pgaa_boost_tune = 6;
20959
20960 mixa_boost_tune = 0xf;
20961 }
20962
20963 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20964 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20965 INTPAA_BOOST_TUNE, paa_boost_tune);
20966 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20967 PADA_BOOST_TUNE, pada_boost_tune);
20968 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20969 PGAA_BOOST_TUNE, pgaa_boost_tune);
20970 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20971 MIXA_BOOST_TUNE, mixa_boost_tune);
20972
20973 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20974 TXSPARE1, 0x30);
20975 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20976 PA_SPARE2, 0xee);
20977
20978 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20979 PADA_CASCBIAS, 0x3);
20980
20981 cascbias = 0x30;
20982
20983 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
20984 (pi->sh->chip == BCM43225_CHIP_ID)) {
20985 if (pi->sh->chippkg == BCM43224_FAB_SMIC)
20986 cascbias = 0x35;
20987 }
20988
20989 pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20990
20991 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20992 INTPAA_IAUX_STAT, pabias);
20993 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20994 INTPAA_IMAIN_STAT, pabias);
20995 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20996 INTPAA_CASCBIAS, cascbias);
20997 }
20998 }
20999
21000 udelay(50);
21001
21002 wlc_phy_radio205x_vcocal_nphy(pi);
21003 }
21004
21005 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
21006 {
21007 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21008 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
21009 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
21010 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
21011 (1 << 2));
21012 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
21013 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21014 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
21015 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21016 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
21017 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
21018 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
21019 }
21020
21021 udelay(300);
21022 }
21023
21024 static void
21025 wlc_phy_chanspec_radio2057_setup(
21026 struct brcms_phy *pi,
21027 const struct chan_info_nphy_radio2057 *ci,
21028 const struct chan_info_nphy_radio2057_rev5 *
21029 ci2)
21030 {
21031 int coreNum;
21032 u16 txmix2g_tune_boost_pu = 0;
21033 u16 pad2g_tune_pus = 0;
21034
21035 if (pi->pubpi.radiorev == 5) {
21036
21037 write_radio_reg(pi,
21038 RADIO_2057_VCOCAL_COUNTVAL0,
21039 ci2->RF_vcocal_countval0);
21040 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21041 ci2->RF_vcocal_countval1);
21042 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21043 ci2->RF_rfpll_refmaster_sparextalsize);
21044 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21045 ci2->RF_rfpll_loopfilter_r1);
21046 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21047 ci2->RF_rfpll_loopfilter_c2);
21048 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21049 ci2->RF_rfpll_loopfilter_c1);
21050 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
21051 ci2->RF_cp_kpd_idac);
21052 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
21053 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
21054 write_radio_reg(pi,
21055 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
21056 write_radio_reg(pi,
21057 RADIO_2057_LOGEN_MX2G_TUNE,
21058 ci2->RF_logen_mx2g_tune);
21059 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21060 ci2->RF_logen_indbuf2g_tune);
21061
21062 write_radio_reg(pi,
21063 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21064 ci2->RF_txmix2g_tune_boost_pu_core0);
21065 write_radio_reg(pi,
21066 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21067 ci2->RF_pad2g_tune_pus_core0);
21068 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21069 ci2->RF_lna2g_tune_core0);
21070
21071 write_radio_reg(pi,
21072 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21073 ci2->RF_txmix2g_tune_boost_pu_core1);
21074 write_radio_reg(pi,
21075 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21076 ci2->RF_pad2g_tune_pus_core1);
21077 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21078 ci2->RF_lna2g_tune_core1);
21079
21080 } else {
21081
21082 write_radio_reg(pi,
21083 RADIO_2057_VCOCAL_COUNTVAL0,
21084 ci->RF_vcocal_countval0);
21085 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21086 ci->RF_vcocal_countval1);
21087 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21088 ci->RF_rfpll_refmaster_sparextalsize);
21089 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21090 ci->RF_rfpll_loopfilter_r1);
21091 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21092 ci->RF_rfpll_loopfilter_c2);
21093 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21094 ci->RF_rfpll_loopfilter_c1);
21095 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21096 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21097 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21098 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21099 write_radio_reg(pi,
21100 RADIO_2057_LOGEN_MX2G_TUNE,
21101 ci->RF_logen_mx2g_tune);
21102 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21103 ci->RF_logen_mx5g_tune);
21104 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21105 ci->RF_logen_indbuf2g_tune);
21106 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21107 ci->RF_logen_indbuf5g_tune);
21108
21109 write_radio_reg(pi,
21110 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21111 ci->RF_txmix2g_tune_boost_pu_core0);
21112 write_radio_reg(pi,
21113 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21114 ci->RF_pad2g_tune_pus_core0);
21115 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21116 ci->RF_pga_boost_tune_core0);
21117 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21118 ci->RF_txmix5g_boost_tune_core0);
21119 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21120 ci->RF_pad5g_tune_misc_pus_core0);
21121 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21122 ci->RF_lna2g_tune_core0);
21123 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21124 ci->RF_lna5g_tune_core0);
21125
21126 write_radio_reg(pi,
21127 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21128 ci->RF_txmix2g_tune_boost_pu_core1);
21129 write_radio_reg(pi,
21130 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21131 ci->RF_pad2g_tune_pus_core1);
21132 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21133 ci->RF_pga_boost_tune_core1);
21134 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21135 ci->RF_txmix5g_boost_tune_core1);
21136 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21137 ci->RF_pad5g_tune_misc_pus_core1);
21138 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21139 ci->RF_lna2g_tune_core1);
21140 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21141 ci->RF_lna5g_tune_core1);
21142 }
21143
21144 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21145
21146 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21147 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21148 0x3f);
21149 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21150 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21151 0x8);
21152 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21153 0x8);
21154 } else {
21155 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21156 0x1f);
21157 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21158 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21159 0x8);
21160 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21161 0x8);
21162 }
21163 } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21164 (pi->pubpi.radiorev == 8)) {
21165
21166 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21167 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21168 0x1b);
21169 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21170 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21171 0xa);
21172 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21173 0xa);
21174 } else {
21175 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21176 0x1f);
21177 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21178 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21179 0x8);
21180 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21181 0x8);
21182 }
21183
21184 }
21185
21186 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21187 if (PHY_IPA(pi)) {
21188 if (pi->pubpi.radiorev == 3)
21189 txmix2g_tune_boost_pu = 0x6b;
21190
21191 if (pi->pubpi.radiorev == 5)
21192 pad2g_tune_pus = 0x73;
21193
21194 } else {
21195 if (pi->pubpi.radiorev != 5) {
21196 pad2g_tune_pus = 0x3;
21197
21198 txmix2g_tune_boost_pu = 0x61;
21199 }
21200 }
21201
21202 for (coreNum = 0; coreNum <= 1; coreNum++) {
21203
21204 if (txmix2g_tune_boost_pu != 0)
21205 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21206 TXMIX2G_TUNE_BOOST_PU,
21207 txmix2g_tune_boost_pu);
21208
21209 if (pad2g_tune_pus != 0)
21210 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21211 PAD2G_TUNE_PUS,
21212 pad2g_tune_pus);
21213 }
21214 }
21215
21216 udelay(50);
21217
21218 wlc_phy_radio205x_vcocal_nphy(pi);
21219 }
21220
21221 static void
21222 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21223 const struct nphy_sfo_cfg *ci)
21224 {
21225 u16 val;
21226
21227 val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21228 if (CHSPEC_IS5G(chanspec) && !val) {
21229
21230 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21231 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21232 (val | MAC_PHY_FORCE_CLK));
21233
21234 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21235 (BBCFG_RESETCCA | BBCFG_RESETRX));
21236
21237 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21238
21239 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21240 } else if (!CHSPEC_IS5G(chanspec) && val) {
21241
21242 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21243
21244 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21245 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21246 (val | MAC_PHY_FORCE_CLK));
21247
21248 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21249 (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21250
21251 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21252 }
21253
21254 write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21255 write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21256 write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21257
21258 write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21259 write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21260 write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21261
21262 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21263 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21264
21265 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21266 } else {
21267 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21268 NPHY_ClassifierCtrl_ofdm_en);
21269
21270 if (CHSPEC_IS2G(chanspec))
21271 and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21272 }
21273
21274 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21275 wlc_phy_txpwr_fixpower_nphy(pi);
21276
21277 if (NREV_LT(pi->pubpi.phy_rev, 3))
21278 wlc_phy_adjust_lnagaintbl_nphy(pi);
21279
21280 wlc_phy_txlpfbw_nphy(pi);
21281
21282 if (NREV_GE(pi->pubpi.phy_rev, 3)
21283 && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21284 u8 spuravoid = 0;
21285
21286 val = CHSPEC_CHANNEL(chanspec);
21287 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21288 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21289 if ((val == 13) || (val == 14) || (val == 153))
21290 spuravoid = 1;
21291 } else if (((val >= 5) && (val <= 8)) || (val == 13)
21292 || (val == 14)) {
21293 spuravoid = 1;
21294 }
21295 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21296 if (val == 54)
21297 spuravoid = 1;
21298 } else {
21299 if (pi->nphy_aband_spurwar_en &&
21300 ((val == 38) || (val == 102)
21301 || (val == 118)))
21302 spuravoid = 1;
21303 }
21304
21305 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21306 spuravoid = 1;
21307
21308 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21309 si_pmu_spuravoid_pllupdate(pi->sh->sih, spuravoid);
21310 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21311
21312 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21313 (pi->sh->chip == BCM43225_CHIP_ID)) {
21314 if (spuravoid == 1) {
21315 bcma_write16(pi->d11core,
21316 D11REGOFFS(tsf_clk_frac_l),
21317 0x5341);
21318 bcma_write16(pi->d11core,
21319 D11REGOFFS(tsf_clk_frac_h), 0x8);
21320 } else {
21321 bcma_write16(pi->d11core,
21322 D11REGOFFS(tsf_clk_frac_l),
21323 0x8889);
21324 bcma_write16(pi->d11core,
21325 D11REGOFFS(tsf_clk_frac_h), 0x8);
21326 }
21327 }
21328
21329 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21330
21331 mod_phy_reg(pi, 0x01, (0x1 << 15),
21332 ((spuravoid > 0) ? (0x1 << 15) : 0));
21333
21334 wlc_phy_resetcca_nphy(pi);
21335
21336 pi->phy_isspuravoid = (spuravoid > 0);
21337 }
21338
21339 if (NREV_LT(pi->pubpi.phy_rev, 7))
21340 write_phy_reg(pi, 0x17e, 0x3830);
21341
21342 wlc_phy_spurwar_nphy(pi);
21343 }
21344
21345 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21346 {
21347 int freq;
21348 const struct chan_info_nphy_radio2057 *t0 = NULL;
21349 const struct chan_info_nphy_radio205x *t1 = NULL;
21350 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21351 const struct chan_info_nphy_2055 *t3 = NULL;
21352
21353 if (!wlc_phy_chan2freq_nphy
21354 (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21355 return;
21356
21357 wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21358
21359 if (CHSPEC_BW(chanspec) != pi->bw)
21360 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21361
21362 if (CHSPEC_IS40(chanspec)) {
21363 if (CHSPEC_SB_UPPER(chanspec)) {
21364 or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21365 if (NREV_GE(pi->pubpi.phy_rev, 7))
21366 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21367 } else {
21368 and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21369 if (NREV_GE(pi->pubpi.phy_rev, 7))
21370 and_phy_reg(pi, 0x310,
21371 (~PRIM_SEL_UP20 & 0xffff));
21372 }
21373 }
21374
21375 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21376 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21377
21378 if ((pi->pubpi.radiorev <= 4)
21379 || (pi->pubpi.radiorev == 6)) {
21380 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21381 0x2,
21382 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21383 : 0));
21384 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21385 0x2,
21386 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21387 : 0));
21388 }
21389
21390 wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21391 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21392 (pi->pubpi.radiorev == 5) ?
21393 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21394 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21395
21396 } else {
21397
21398 mod_radio_reg(pi,
21399 RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21400 0x4,
21401 (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21402 wlc_phy_chanspec_radio2056_setup(pi, t1);
21403
21404 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21405 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21406 }
21407
21408 } else {
21409
21410 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21411 (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21412 : (0x05 << 4)));
21413
21414 wlc_phy_chanspec_radio2055_setup(pi, t3);
21415 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21416 (const struct nphy_sfo_cfg *)
21417 &(t3->PHY_BW1a));
21418 }
21419
21420 }
21421
21422 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21423 {
21424 struct brcms_phy *pi = (struct brcms_phy *) ppi;
21425 u16 mask = 0xfc00;
21426 u32 mc = 0;
21427
21428 if (NREV_GE(pi->pubpi.phy_rev, 7))
21429 return;
21430
21431 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21432 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21433
21434 if (!lut_init)
21435 return;
21436
21437 if (pi->srom_fem2g.antswctrllut == 0) {
21438 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21439 1, 0x02, 16, &v0);
21440 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21441 1, 0x03, 16, &v1);
21442 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21443 1, 0x08, 16, &v2);
21444 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21445 1, 0x0C, 16, &v3);
21446 }
21447
21448 if (pi->srom_fem5g.antswctrllut == 0) {
21449 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21450 1, 0x12, 16, &v0);
21451 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21452 1, 0x13, 16, &v1);
21453 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21454 1, 0x18, 16, &v2);
21455 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21456 1, 0x1C, 16, &v3);
21457 }
21458 } else {
21459
21460 write_phy_reg(pi, 0xc8, 0x0);
21461 write_phy_reg(pi, 0xc9, 0x0);
21462
21463 ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
21464
21465 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21466 mc &= ~MCTL_GPOUT_SEL_MASK;
21467 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21468
21469 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21470
21471 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21472
21473 if (lut_init) {
21474 write_phy_reg(pi, 0xf8, 0x02d8);
21475 write_phy_reg(pi, 0xf9, 0x0301);
21476 write_phy_reg(pi, 0xfa, 0x02d8);
21477 write_phy_reg(pi, 0xfb, 0x0301);
21478 }
21479 }
21480 }
21481
21482 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21483 {
21484 u16 curr_ctl, new_ctl;
21485 bool suspended = false;
21486
21487 if (D11REV_IS(pi->sh->corerev, 16)) {
21488 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21489 MCTL_EN_MAC) ? false : true;
21490 if (!suspended)
21491 wlapi_suspend_mac_and_wait(pi->sh->physhim);
21492 }
21493
21494 curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21495
21496 new_ctl = (curr_ctl & (~mask)) | (val & mask);
21497
21498 mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21499
21500 if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21501 wlapi_enable_mac(pi->sh->physhim);
21502
21503 return new_ctl;
21504 }
21505
21506 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21507 {
21508 u16 trigger_mask, status_mask;
21509 u16 orig_RfseqCoreActv;
21510
21511 switch (cmd) {
21512 case NPHY_RFSEQ_RX2TX:
21513 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21514 status_mask = NPHY_RfseqStatus_rx2tx;
21515 break;
21516 case NPHY_RFSEQ_TX2RX:
21517 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21518 status_mask = NPHY_RfseqStatus_tx2rx;
21519 break;
21520 case NPHY_RFSEQ_RESET2RX:
21521 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21522 status_mask = NPHY_RfseqStatus_reset2rx;
21523 break;
21524 case NPHY_RFSEQ_UPDATEGAINH:
21525 trigger_mask = NPHY_RfseqTrigger_updategainh;
21526 status_mask = NPHY_RfseqStatus_updategainh;
21527 break;
21528 case NPHY_RFSEQ_UPDATEGAINL:
21529 trigger_mask = NPHY_RfseqTrigger_updategainl;
21530 status_mask = NPHY_RfseqStatus_updategainl;
21531 break;
21532 case NPHY_RFSEQ_UPDATEGAINU:
21533 trigger_mask = NPHY_RfseqTrigger_updategainu;
21534 status_mask = NPHY_RfseqStatus_updategainu;
21535 break;
21536 default:
21537 return;
21538 }
21539
21540 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21541 or_phy_reg(pi, 0xa1,
21542 (NPHY_RfseqMode_CoreActv_override |
21543 NPHY_RfseqMode_Trigger_override));
21544 or_phy_reg(pi, 0xa3, trigger_mask);
21545 SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21546 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21547 WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21548 }
21549
21550 static void
21551 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21552 u8 core_mask, u8 off)
21553 {
21554 u16 rfmxgain = 0, lpfgain = 0;
21555 u16 tgain = 0;
21556
21557 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21558
21559 switch (cmd) {
21560 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21561 wlc_phy_rfctrl_override_nphy_rev7(
21562 pi, (0x1 << 5),
21563 value, core_mask, off,
21564 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21565 wlc_phy_rfctrl_override_nphy_rev7(
21566 pi, (0x1 << 4), value,
21567 core_mask, off,
21568 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21569 wlc_phy_rfctrl_override_nphy_rev7(
21570 pi, (0x1 << 3), value,
21571 core_mask, off,
21572 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21573 break;
21574 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21575 wlc_phy_rfctrl_override_nphy_rev7(
21576 pi, (0x1 << 2),
21577 value, core_mask, off,
21578 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21579 wlc_phy_rfctrl_override_nphy_rev7(
21580 pi, (0x1 << 1), value,
21581 core_mask, off,
21582 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21583 wlc_phy_rfctrl_override_nphy_rev7(
21584 pi, (0x1 << 0), value,
21585 core_mask, off,
21586 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21587 wlc_phy_rfctrl_override_nphy_rev7(
21588 pi, (0x1 << 1), value,
21589 core_mask, off,
21590 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21591 wlc_phy_rfctrl_override_nphy_rev7(
21592 pi, (0x1 << 11), 0,
21593 core_mask, off,
21594 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21595 break;
21596 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21597 wlc_phy_rfctrl_override_nphy_rev7(
21598 pi, (0x1 << 2),
21599 value, core_mask, off,
21600 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21601 wlc_phy_rfctrl_override_nphy_rev7(
21602 pi, (0x1 << 1), value,
21603 core_mask, off,
21604 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21605 wlc_phy_rfctrl_override_nphy_rev7(
21606 pi, (0x1 << 0), value,
21607 core_mask, off,
21608 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21609 wlc_phy_rfctrl_override_nphy_rev7(
21610 pi, (0x1 << 2), value,
21611 core_mask, off,
21612 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21613 wlc_phy_rfctrl_override_nphy_rev7(
21614 pi, (0x1 << 11), 1,
21615 core_mask, off,
21616 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21617 break;
21618 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21619 rfmxgain = value & 0x000ff;
21620 lpfgain = value & 0x0ff00;
21621 lpfgain = lpfgain >> 8;
21622
21623 wlc_phy_rfctrl_override_nphy_rev7(
21624 pi, (0x1 << 11),
21625 rfmxgain, core_mask,
21626 off,
21627 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21628 wlc_phy_rfctrl_override_nphy_rev7(
21629 pi, (0x3 << 13),
21630 lpfgain, core_mask,
21631 off,
21632 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21633 break;
21634 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21635 tgain = value & 0x7fff;
21636 lpfgain = value & 0x8000;
21637 lpfgain = lpfgain >> 14;
21638
21639 wlc_phy_rfctrl_override_nphy_rev7(
21640 pi, (0x1 << 12),
21641 tgain, core_mask, off,
21642 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21643 wlc_phy_rfctrl_override_nphy_rev7(
21644 pi, (0x1 << 13),
21645 lpfgain, core_mask,
21646 off,
21647 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21648 break;
21649 }
21650 }
21651 }
21652
21653 static void
21654 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21655 u8 coresel, u8 rail, u8 rssi_type)
21656 {
21657 u16 valuetostuff;
21658
21659 offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21660 NPHY_RSSICAL_MAXREAD : offset;
21661 offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21662 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21663
21664 valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21665
21666 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21667 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21668 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21669 write_phy_reg(pi, 0x1a6, valuetostuff);
21670
21671 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21672 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21673 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21674 write_phy_reg(pi, 0x1ac, valuetostuff);
21675
21676 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21677 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21678 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21679 write_phy_reg(pi, 0x1b2, valuetostuff);
21680
21681 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21682 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21683 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21684 write_phy_reg(pi, 0x1b8, valuetostuff);
21685
21686 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21687 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21688 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21689 write_phy_reg(pi, 0x1a4, valuetostuff);
21690
21691 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21692 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21693 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21694 write_phy_reg(pi, 0x1aa, valuetostuff);
21695
21696 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21697 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21698 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21699 write_phy_reg(pi, 0x1b0, valuetostuff);
21700
21701 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21702 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21703 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21704 write_phy_reg(pi, 0x1b6, valuetostuff);
21705
21706 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21707 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21708 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21709 write_phy_reg(pi, 0x1a5, valuetostuff);
21710 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21711 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21712 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21713 write_phy_reg(pi, 0x1ab, valuetostuff);
21714
21715 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21716 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21717 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21718 write_phy_reg(pi, 0x1b1, valuetostuff);
21719
21720 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21721 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21722 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21723 write_phy_reg(pi, 0x1b7, valuetostuff);
21724
21725 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21726 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21727 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21728 write_phy_reg(pi, 0x1a7, valuetostuff);
21729 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21730 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21731 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21732 write_phy_reg(pi, 0x1ad, valuetostuff);
21733 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21734 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21735 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21736 write_phy_reg(pi, 0x1b3, valuetostuff);
21737 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21738 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21739 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21740 write_phy_reg(pi, 0x1b9, valuetostuff);
21741
21742 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21743 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21744 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21745 write_phy_reg(pi, 0x1a8, valuetostuff);
21746
21747 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21748 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21749 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21750 write_phy_reg(pi, 0x1ae, valuetostuff);
21751
21752 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21753 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21754 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21755 write_phy_reg(pi, 0x1b4, valuetostuff);
21756
21757 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21758 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21759 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21760 write_phy_reg(pi, 0x1ba, valuetostuff);
21761
21762 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21763 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21764 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21765 write_phy_reg(pi, 0x1a9, valuetostuff);
21766 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21767 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21768 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21769 write_phy_reg(pi, 0x1b5, valuetostuff);
21770
21771 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21772 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21773 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21774 write_phy_reg(pi, 0x1af, valuetostuff);
21775
21776 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21777 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21778 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21779 write_phy_reg(pi, 0x1bb, valuetostuff);
21780 }
21781
21782 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21783 {
21784 if (PHY_IPA(pi)) {
21785 if (NREV_GE(pi->pubpi.phy_rev, 7))
21786 write_radio_reg(pi,
21787 ((core == PHY_CORE_0) ?
21788 RADIO_2057_TX0_TX_SSI_MUX :
21789 RADIO_2057_TX1_TX_SSI_MUX),
21790 (CHSPEC_IS5G(pi->radio_chanspec) ?
21791 0xc : 0xe));
21792 else
21793 write_radio_reg(pi,
21794 RADIO_2056_TX_TX_SSI_MUX |
21795 ((core == PHY_CORE_0) ?
21796 RADIO_2056_TX0 : RADIO_2056_TX1),
21797 (CHSPEC_IS5G(pi->radio_chanspec) ?
21798 0xc : 0xe));
21799 } else {
21800 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21801 write_radio_reg(pi,
21802 ((core == PHY_CORE_0) ?
21803 RADIO_2057_TX0_TX_SSI_MUX :
21804 RADIO_2057_TX1_TX_SSI_MUX),
21805 0x11);
21806
21807 if (pi->pubpi.radioid == BCM2057_ID)
21808 write_radio_reg(pi,
21809 RADIO_2057_IQTEST_SEL_PU, 0x1);
21810
21811 } else {
21812 write_radio_reg(pi,
21813 RADIO_2056_TX_TX_SSI_MUX |
21814 ((core == PHY_CORE_0) ?
21815 RADIO_2056_TX0 : RADIO_2056_TX1),
21816 0x11);
21817 }
21818 }
21819 }
21820
21821 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21822 {
21823 u16 mask, val;
21824 u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21825 startseq;
21826 u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21827 rfctrlovr_trigger_val;
21828 u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21829 u16 rfctrlcmd_val, rfctrlovr_val;
21830 u8 core;
21831
21832 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21833 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21834 mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21835 mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21836
21837 mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21838 mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21839
21840 mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21841 mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21842
21843 mask = (0x1 << 2) |
21844 (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21845 mod_phy_reg(pi, 0xf9, mask, 0);
21846 mod_phy_reg(pi, 0xfb, mask, 0);
21847
21848 } else {
21849 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21850 if (core_code == RADIO_MIMO_CORESEL_CORE1
21851 && core == PHY_CORE_1)
21852 continue;
21853 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21854 && core == PHY_CORE_0)
21855 continue;
21856
21857 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21858 0x8f : 0xa5, (0x1 << 9), 1 << 9);
21859
21860 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21861 rssi_type == NPHY_RSSI_SEL_W2 ||
21862 rssi_type == NPHY_RSSI_SEL_NB) {
21863 mod_phy_reg(pi,
21864 (core ==
21865 PHY_CORE_0) ? 0xa6 : 0xa7,
21866 (0x3 << 8), 0);
21867
21868 mask = (0x1 << 2) |
21869 (0x1 << 3) |
21870 (0x1 << 4) | (0x1 << 5);
21871 mod_phy_reg(pi,
21872 (core ==
21873 PHY_CORE_0) ? 0xf9 : 0xfb,
21874 mask, 0);
21875
21876 if (rssi_type == NPHY_RSSI_SEL_W1) {
21877 if (CHSPEC_IS5G(
21878 pi->radio_chanspec)) {
21879 mask = (0x1 << 2);
21880 val = 1 << 2;
21881 } else {
21882 mask = (0x1 << 3);
21883 val = 1 << 3;
21884 }
21885 } else if (rssi_type ==
21886 NPHY_RSSI_SEL_W2) {
21887 mask = (0x1 << 4);
21888 val = 1 << 4;
21889 } else {
21890 mask = (0x1 << 5);
21891 val = 1 << 5;
21892 }
21893 mod_phy_reg(pi,
21894 (core ==
21895 PHY_CORE_0) ? 0xf9 : 0xfb,
21896 mask, val);
21897
21898 mask = (0x1 << 5);
21899 val = 1 << 5;
21900 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21901 0xe5 : 0xe6, mask, val);
21902 } else {
21903 if (rssi_type == NPHY_RSSI_SEL_TBD) {
21904 mask = (0x3 << 8);
21905 val = 1 << 8;
21906 mod_phy_reg(pi,
21907 (core ==
21908 PHY_CORE_0) ? 0xa6
21909 : 0xa7, mask, val);
21910 mask = (0x3 << 10);
21911 val = 1 << 10;
21912 mod_phy_reg(pi,
21913 (core ==
21914 PHY_CORE_0) ? 0xa6
21915 : 0xa7, mask, val);
21916 } else if (rssi_type ==
21917 NPHY_RSSI_SEL_IQ) {
21918 mask = (0x3 << 8);
21919 val = 2 << 8;
21920 mod_phy_reg(pi,
21921 (core ==
21922 PHY_CORE_0) ? 0xa6
21923 : 0xa7, mask, val);
21924 mask = (0x3 << 10);
21925 val = 2 << 10;
21926 mod_phy_reg(pi,
21927 (core ==
21928 PHY_CORE_0) ? 0xa6
21929 : 0xa7, mask, val);
21930 } else {
21931 mask = (0x3 << 8);
21932 val = 3 << 8;
21933 mod_phy_reg(pi,
21934 (core ==
21935 PHY_CORE_0) ? 0xa6
21936 : 0xa7, mask, val);
21937 mask = (0x3 << 10);
21938 val = 3 << 10;
21939 mod_phy_reg(pi,
21940 (core ==
21941 PHY_CORE_0) ? 0xa6
21942 : 0xa7, mask, val);
21943 brcms_phy_wr_tx_mux(pi, core);
21944 afectrlovr_rssi_val = 1 << 9;
21945 mod_phy_reg(pi,
21946 (core ==
21947 PHY_CORE_0) ? 0x8f
21948 : 0xa5, (0x1 << 9),
21949 afectrlovr_rssi_val);
21950 }
21951 }
21952 }
21953 }
21954 } else {
21955
21956 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21957 (rssi_type == NPHY_RSSI_SEL_W2) ||
21958 (rssi_type == NPHY_RSSI_SEL_NB))
21959 val = 0x0;
21960 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21961 val = 0x1;
21962 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21963 val = 0x2;
21964 else
21965 val = 0x3;
21966
21967 mask = ((0x3 << 12) | (0x3 << 14));
21968 val = (val << 12) | (val << 14);
21969 mod_phy_reg(pi, 0xa6, mask, val);
21970 mod_phy_reg(pi, 0xa7, mask, val);
21971
21972 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21973 (rssi_type == NPHY_RSSI_SEL_W2) ||
21974 (rssi_type == NPHY_RSSI_SEL_NB)) {
21975 if (rssi_type == NPHY_RSSI_SEL_W1)
21976 val = 0x1;
21977 if (rssi_type == NPHY_RSSI_SEL_W2)
21978 val = 0x2;
21979 if (rssi_type == NPHY_RSSI_SEL_NB)
21980 val = 0x3;
21981
21982 mask = (0x3 << 4);
21983 val = (val << 4);
21984 mod_phy_reg(pi, 0x7a, mask, val);
21985 mod_phy_reg(pi, 0x7d, mask, val);
21986 }
21987
21988 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21989 afectrlovr_rssi_val = 0;
21990 rfctrlcmd_rxen_val = 0;
21991 rfctrlcmd_coresel_val = 0;
21992 rfctrlovr_rssi_val = 0;
21993 rfctrlovr_rxen_val = 0;
21994 rfctrlovr_coresel_val = 0;
21995 rfctrlovr_trigger_val = 0;
21996 startseq = 0;
21997 } else {
21998 afectrlovr_rssi_val = 1;
21999 rfctrlcmd_rxen_val = 1;
22000 rfctrlcmd_coresel_val = core_code;
22001 rfctrlovr_rssi_val = 1;
22002 rfctrlovr_rxen_val = 1;
22003 rfctrlovr_coresel_val = 1;
22004 rfctrlovr_trigger_val = 1;
22005 startseq = 1;
22006 }
22007
22008 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
22009 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
22010 12) | (afectrlovr_rssi_val << 13);
22011 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
22012 afectrlovr_rssi_val);
22013
22014 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
22015 (rssi_type == NPHY_RSSI_SEL_W2) ||
22016 (rssi_type == NPHY_RSSI_SEL_NB)) {
22017 rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
22018 rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
22019 (rfctrlcmd_coresel_val << 3);
22020
22021 rfctrlovr_mask = ((0x1 << 5) |
22022 (0x1 << 12) |
22023 (0x1 << 1) | (0x1 << 0));
22024 rfctrlovr_val = (rfctrlovr_rssi_val <<
22025 5) |
22026 (rfctrlovr_rxen_val << 12) |
22027 (rfctrlovr_coresel_val << 1) |
22028 (rfctrlovr_trigger_val << 0);
22029
22030 mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
22031 mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
22032
22033 mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
22034 udelay(20);
22035
22036 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22037 }
22038 }
22039 }
22040
22041 int
22042 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
22043 u8 nsamps)
22044 {
22045 s16 rssi0, rssi1;
22046 u16 afectrlCore1_save = 0;
22047 u16 afectrlCore2_save = 0;
22048 u16 afectrlOverride1_save = 0;
22049 u16 afectrlOverride2_save = 0;
22050 u16 rfctrlOverrideAux0_save = 0;
22051 u16 rfctrlOverrideAux1_save = 0;
22052 u16 rfctrlMiscReg1_save = 0;
22053 u16 rfctrlMiscReg2_save = 0;
22054 u16 rfctrlcmd_save = 0;
22055 u16 rfctrloverride_save = 0;
22056 u16 rfctrlrssiothers1_save = 0;
22057 u16 rfctrlrssiothers2_save = 0;
22058 s8 tmp_buf[4];
22059 u8 ctr = 0, samp = 0;
22060 s32 rssi_out_val;
22061 u16 gpiosel_orig;
22062
22063 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22064 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22065 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22066 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22067 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22068 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
22069 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22070 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22071 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22072 } else {
22073 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
22074 rfctrlcmd_save = read_phy_reg(pi, 0x78);
22075 rfctrloverride_save = read_phy_reg(pi, 0xec);
22076 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22077 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22078 }
22079
22080 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22081
22082 gpiosel_orig = read_phy_reg(pi, 0xca);
22083 if (NREV_LT(pi->pubpi.phy_rev, 2))
22084 write_phy_reg(pi, 0xca, 5);
22085
22086 for (ctr = 0; ctr < 4; ctr++)
22087 rssi_buf[ctr] = 0;
22088
22089 for (samp = 0; samp < nsamps; samp++) {
22090 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22091 rssi0 = read_phy_reg(pi, 0x1c9);
22092 rssi1 = read_phy_reg(pi, 0x1ca);
22093 } else {
22094 rssi0 = read_phy_reg(pi, 0x219);
22095 rssi1 = read_phy_reg(pi, 0x21a);
22096 }
22097
22098 ctr = 0;
22099 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22100 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22101 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22102 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22103
22104 for (ctr = 0; ctr < 4; ctr++)
22105 rssi_buf[ctr] += tmp_buf[ctr];
22106
22107 }
22108
22109 rssi_out_val = rssi_buf[3] & 0xff;
22110 rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22111 rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22112 rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22113
22114 if (NREV_LT(pi->pubpi.phy_rev, 2))
22115 write_phy_reg(pi, 0xca, gpiosel_orig);
22116
22117 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22118 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22119 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22120 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22121 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22122 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22123 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22124 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22125 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22126 } else {
22127 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22128 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22129 write_phy_reg(pi, 0xec, rfctrloverride_save);
22130 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22131 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22132 }
22133
22134 return rssi_out_val;
22135 }
22136
22137 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22138 {
22139 u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22140 u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22141 u16 pwrdet_rxtx_core1_save;
22142 u16 pwrdet_rxtx_core2_save;
22143 u16 afectrlCore1_save;
22144 u16 afectrlCore2_save;
22145 u16 afectrlOverride_save;
22146 u16 afectrlOverride2_save;
22147 u16 pd_pll_ts_save;
22148 u16 gpioSel_save;
22149 s32 radio_temp[4];
22150 s32 radio_temp2[4];
22151 u16 syn_tempprocsense_save;
22152 s16 offset = 0;
22153
22154 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22155 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22156 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22157 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22158 s32 auxADC_Vl;
22159 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22160 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22161 u16 RSSIMultCoef0QPowerDet_save;
22162 u16 tempsense_Rcal;
22163
22164 syn_tempprocsense_save =
22165 read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22166
22167 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22168 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22169 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22170 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22171 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22172 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22173 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22174 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22175 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22176
22177 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22178 &auxADC_Vmid_save);
22179 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22180 &auxADC_Av_save);
22181 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22182 &auxADC_rssi_ctrlL_save);
22183 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22184 &auxADC_rssi_ctrlH_save);
22185
22186 write_phy_reg(pi, 0x1ae, 0x0);
22187
22188 auxADC_rssi_ctrlL = 0x0;
22189 auxADC_rssi_ctrlH = 0x20;
22190 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22191 &auxADC_rssi_ctrlL);
22192 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22193 &auxADC_rssi_ctrlH);
22194
22195 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22196
22197 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22198 tempsense_Rcal | 0x01);
22199
22200 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22201 1, 0, 0,
22202 NPHY_REV7_RFCTRLOVERRIDE_ID2);
22203 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22204 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22205 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22206 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22207
22208 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22209 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22210 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22211 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22212 udelay(5);
22213 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22214 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22215 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22216 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22217 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22218 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22219 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22220 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22221 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22222 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22223
22224 auxADC_Vmid = 0xA3;
22225 auxADC_Av = 0x0;
22226 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22227 &auxADC_Vmid);
22228 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22229 &auxADC_Av);
22230
22231 udelay(3);
22232
22233 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22234 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22235 tempsense_Rcal | 0x03);
22236
22237 udelay(5);
22238 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22239
22240 auxADC_Av = 0x7;
22241 if (radio_temp[1] + radio_temp2[1] < -30) {
22242 auxADC_Vmid = 0x45;
22243 auxADC_Vl = 263;
22244 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22245 auxADC_Vmid = 0x200;
22246 auxADC_Vl = 467;
22247 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22248 auxADC_Vmid = 0x266;
22249 auxADC_Vl = 634;
22250 } else {
22251 auxADC_Vmid = 0x2D5;
22252 auxADC_Vl = 816;
22253 }
22254
22255 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22256 &auxADC_Vmid);
22257 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22258 &auxADC_Av);
22259
22260 udelay(3);
22261
22262 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22263 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22264 tempsense_Rcal | 0x01);
22265
22266 udelay(5);
22267 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22268
22269 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22270 syn_tempprocsense_save);
22271
22272 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22273 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22274 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22275 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22276 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22277 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22278 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22279 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22280 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22281
22282 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22283 &auxADC_Vmid_save);
22284 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22285 &auxADC_Av_save);
22286 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22287 &auxADC_rssi_ctrlL_save);
22288 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22289 &auxADC_rssi_ctrlH_save);
22290
22291 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22292 + 82 * (auxADC_Vl) - 28861 +
22293 128) / 256;
22294
22295 offset = (s16) pi->phy_tempsense_offset;
22296
22297 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22298 syn_tempprocsense_save =
22299 read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22300
22301 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22302 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22303 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22304 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22305 gpioSel_save = read_phy_reg(pi, 0xca);
22306
22307 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22308
22309 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22310 if (NREV_LT(pi->pubpi.phy_rev, 7))
22311 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22312
22313 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22314 if (NREV_GE(pi->pubpi.phy_rev, 7))
22315 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22316 else
22317 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22318
22319 radio_temp[0] =
22320 (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22321
22322 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22323 syn_tempprocsense_save);
22324
22325 write_phy_reg(pi, 0xca, gpioSel_save);
22326 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22327 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22328 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22329 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22330
22331 offset = (s16) pi->phy_tempsense_offset;
22332 } else {
22333
22334 pwrdet_rxtx_core1_save =
22335 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22336 pwrdet_rxtx_core2_save =
22337 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22338 core1_txrf_iqcal1_save =
22339 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22340 core1_txrf_iqcal2_save =
22341 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22342 core2_txrf_iqcal1_save =
22343 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22344 core2_txrf_iqcal2_save =
22345 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22346 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22347
22348 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22349 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22350 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22351 gpioSel_save = read_phy_reg(pi, 0xca);
22352
22353 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22354 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22355 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22356 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22357 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22358 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22359 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22360
22361 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22362 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22363
22364 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22365 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22366
22367 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22368 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22369
22370 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22371 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22372 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22373 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22374
22375 radio_temp[0] =
22376 (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22377 radio_temp[3]);
22378
22379 radio_temp[0] =
22380 (radio_temp[0] +
22381 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22382
22383 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22384
22385 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22386 pwrdet_rxtx_core1_save);
22387 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22388 pwrdet_rxtx_core2_save);
22389 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22390 core1_txrf_iqcal1_save);
22391 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22392 core2_txrf_iqcal1_save);
22393 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22394 core1_txrf_iqcal2_save);
22395 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22396 core2_txrf_iqcal2_save);
22397 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22398
22399 write_phy_reg(pi, 0xca, gpioSel_save);
22400 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22401 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22402 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22403 }
22404
22405 return (s16) radio_temp[0] + offset;
22406 }
22407
22408 static void
22409 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22410 {
22411 u8 core;
22412
22413 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22414 if (rssi_type == NPHY_RSSI_SEL_NB) {
22415 if (core == PHY_CORE_0) {
22416 mod_radio_reg(pi,
22417 RADIO_2055_CORE1_B0_NBRSSI_VCM,
22418 RADIO_2055_NBRSSI_VCM_I_MASK,
22419 vcm_buf[2 *
22420 core] <<
22421 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22422 mod_radio_reg(pi,
22423 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22424 RADIO_2055_NBRSSI_VCM_Q_MASK,
22425 vcm_buf[2 * core +
22426 1] <<
22427 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22428 } else {
22429 mod_radio_reg(pi,
22430 RADIO_2055_CORE2_B0_NBRSSI_VCM,
22431 RADIO_2055_NBRSSI_VCM_I_MASK,
22432 vcm_buf[2 *
22433 core] <<
22434 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22435 mod_radio_reg(pi,
22436 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22437 RADIO_2055_NBRSSI_VCM_Q_MASK,
22438 vcm_buf[2 * core +
22439 1] <<
22440 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22441 }
22442 } else {
22443 if (core == PHY_CORE_0)
22444 mod_radio_reg(pi,
22445 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22446 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22447 vcm_buf[2 *
22448 core] <<
22449 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22450 else
22451 mod_radio_reg(pi,
22452 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22453 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22454 vcm_buf[2 *
22455 core] <<
22456 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22457 }
22458 }
22459 }
22460
22461 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22462 {
22463 u16 classif_state;
22464 u16 clip_state[2];
22465 u16 clip_off[] = { 0xffff, 0xffff };
22466 s32 target_code;
22467 u8 vcm, min_vcm;
22468 u8 vcm_final = 0;
22469 u8 result_idx;
22470 s32 poll_results[8][4] = {
22471 {0, 0, 0, 0},
22472 {0, 0, 0, 0},
22473 {0, 0, 0, 0},
22474 {0, 0, 0, 0},
22475 {0, 0, 0, 0},
22476 {0, 0, 0, 0},
22477 {0, 0, 0, 0},
22478 {0, 0, 0, 0}
22479 };
22480 s32 poll_result_core[4] = { 0, 0, 0, 0 };
22481 s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22482 s32 fine_digital_offset[4];
22483 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22484 s32 min_poll;
22485 u8 vcm_level_max;
22486 u8 core;
22487 u8 wb_cnt;
22488 u8 rssi_type;
22489 u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22490 u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22491 u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22492 u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22493 u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22494 u16 NPHY_RfctrlCmd_save;
22495 u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22496 u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22497 u8 rxcore_state;
22498 u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22499 u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22500 u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22501 u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22502
22503 NPHY_REV7_RfctrlOverride3_save =
22504 NPHY_REV7_RfctrlOverride4_save =
22505 NPHY_REV7_RfctrlOverride5_save =
22506 NPHY_REV7_RfctrlOverride6_save =
22507 NPHY_REV7_RfctrlMiscReg3_save =
22508 NPHY_REV7_RfctrlMiscReg4_save =
22509 NPHY_REV7_RfctrlMiscReg5_save =
22510 NPHY_REV7_RfctrlMiscReg6_save = 0;
22511
22512 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22513 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22514 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22515 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22516
22517 NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22518 NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22519 NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22520 NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22521 NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22522 NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22523 NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22524 NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22525 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22526 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22527 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22528 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22529 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22530 }
22531 NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22532 NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22533 NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22534 NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22535 NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22536 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22537 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22538 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22539 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22540 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22541 }
22542 NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22543 NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22544
22545 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22546 RADIO_MIMO_CORESEL_ALLRXTX);
22547 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22548 RADIO_MIMO_CORESEL_ALLRXTX);
22549
22550 if (NREV_GE(pi->pubpi.phy_rev, 7))
22551 wlc_phy_rfctrl_override_1tomany_nphy(
22552 pi,
22553 NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22554 0, 0, 0);
22555 else
22556 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22557
22558 if (NREV_GE(pi->pubpi.phy_rev, 7))
22559 wlc_phy_rfctrl_override_1tomany_nphy(
22560 pi,
22561 NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22562 1, 0, 0);
22563 else
22564 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22565
22566 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22567 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22568 1, 0, 0,
22569 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22570 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22571 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22572 } else {
22573 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22574 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22575 }
22576
22577 if (CHSPEC_IS5G(pi->radio_chanspec)) {
22578 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22579 wlc_phy_rfctrl_override_nphy_rev7(
22580 pi, (0x1 << 5),
22581 0, 0, 0,
22582 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22583 wlc_phy_rfctrl_override_nphy_rev7(
22584 pi, (0x1 << 4), 1, 0,
22585 0,
22586 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22587 } else {
22588 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22589 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22590 }
22591
22592 } else {
22593 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22594 wlc_phy_rfctrl_override_nphy_rev7(
22595 pi, (0x1 << 4),
22596 0, 0, 0,
22597 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22598 wlc_phy_rfctrl_override_nphy_rev7(
22599 pi, (0x1 << 5), 1, 0,
22600 0,
22601 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22602 } else {
22603 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22604 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22605 }
22606 }
22607
22608 rxcore_state = wlc_phy_rxcore_getstate_nphy(
22609 (struct brcms_phy_pub *) pi);
22610
22611 vcm_level_max = 8;
22612
22613 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22614
22615 if ((rxcore_state & (1 << core)) == 0)
22616 continue;
22617
22618 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22619 core ==
22620 PHY_CORE_0 ?
22621 RADIO_MIMO_CORESEL_CORE1 :
22622 RADIO_MIMO_CORESEL_CORE2,
22623 NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22624 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22625 core ==
22626 PHY_CORE_0 ?
22627 RADIO_MIMO_CORESEL_CORE1 :
22628 RADIO_MIMO_CORESEL_CORE2,
22629 NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22630
22631 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22632 if (NREV_GE(pi->pubpi.phy_rev, 7))
22633 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22634 RADIO_2057_NB_MASTER_CORE0 :
22635 RADIO_2057_NB_MASTER_CORE1,
22636 RADIO_2057_VCM_MASK, vcm);
22637 else
22638 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22639 ((core ==
22640 PHY_CORE_0) ? RADIO_2056_RX0 :
22641 RADIO_2056_RX1),
22642 RADIO_2056_VCM_MASK,
22643 vcm << RADIO_2056_RSSI_VCM_SHIFT);
22644
22645 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22646 &poll_results[vcm][0],
22647 NPHY_RSSICAL_NPOLL);
22648 }
22649
22650 for (result_idx = 0; result_idx < 4; result_idx++) {
22651 if ((core == result_idx / 2) &&
22652 (result_idx % 2 == 0)) {
22653
22654 min_d = NPHY_RSSICAL_MAXD;
22655 min_vcm = 0;
22656 min_poll =
22657 NPHY_RSSICAL_MAXREAD *
22658 NPHY_RSSICAL_NPOLL + 1;
22659 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22660 curr_d =
22661 poll_results[vcm][result_idx] *
22662 poll_results[vcm][result_idx] +
22663 poll_results[vcm][result_idx +
22664 1] *
22665 poll_results[vcm][result_idx +
22666 1];
22667 if (curr_d < min_d) {
22668 min_d = curr_d;
22669 min_vcm = vcm;
22670 }
22671 if (poll_results[vcm][result_idx] <
22672 min_poll)
22673 min_poll =
22674 poll_results[vcm]
22675 [result_idx];
22676 }
22677 vcm_final = min_vcm;
22678 poll_results_min[result_idx] = min_poll;
22679 }
22680 }
22681
22682 if (NREV_GE(pi->pubpi.phy_rev, 7))
22683 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22684 RADIO_2057_NB_MASTER_CORE0 :
22685 RADIO_2057_NB_MASTER_CORE1,
22686 RADIO_2057_VCM_MASK, vcm_final);
22687 else
22688 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22689 ((core ==
22690 PHY_CORE_0) ? RADIO_2056_RX0 :
22691 RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22692 vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22693
22694 for (result_idx = 0; result_idx < 4; result_idx++) {
22695 if (core == result_idx / 2) {
22696 fine_digital_offset[result_idx] =
22697 (NPHY_RSSICAL_NB_TARGET *
22698 NPHY_RSSICAL_NPOLL) -
22699 poll_results[vcm_final][result_idx];
22700 if (fine_digital_offset[result_idx] < 0) {
22701 fine_digital_offset[result_idx] =
22702 abs(fine_digital_offset
22703 [result_idx]);
22704 fine_digital_offset[result_idx] +=
22705 (NPHY_RSSICAL_NPOLL / 2);
22706 fine_digital_offset[result_idx] /=
22707 NPHY_RSSICAL_NPOLL;
22708 fine_digital_offset[result_idx] =
22709 -fine_digital_offset[
22710 result_idx];
22711 } else {
22712 fine_digital_offset[result_idx] +=
22713 (NPHY_RSSICAL_NPOLL / 2);
22714 fine_digital_offset[result_idx] /=
22715 NPHY_RSSICAL_NPOLL;
22716 }
22717
22718 if (poll_results_min[result_idx] ==
22719 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22720 fine_digital_offset[result_idx] =
22721 (NPHY_RSSICAL_NB_TARGET -
22722 NPHY_RSSICAL_MAXREAD - 1);
22723
22724 wlc_phy_scale_offset_rssi_nphy(
22725 pi, 0x0,
22726 (s8)
22727 fine_digital_offset
22728 [result_idx],
22729 (result_idx / 2 == 0) ?
22730 RADIO_MIMO_CORESEL_CORE1 :
22731 RADIO_MIMO_CORESEL_CORE2,
22732 (result_idx % 2 == 0) ?
22733 NPHY_RAIL_I : NPHY_RAIL_Q,
22734 NPHY_RSSI_SEL_NB);
22735 }
22736 }
22737
22738 }
22739
22740 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22741
22742 if ((rxcore_state & (1 << core)) == 0)
22743 continue;
22744
22745 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22746 if (wb_cnt == 0) {
22747 rssi_type = NPHY_RSSI_SEL_W1;
22748 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22749 } else {
22750 rssi_type = NPHY_RSSI_SEL_W2;
22751 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22752 }
22753
22754 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22755 core ==
22756 PHY_CORE_0 ?
22757 RADIO_MIMO_CORESEL_CORE1
22758 :
22759 RADIO_MIMO_CORESEL_CORE2,
22760 NPHY_RAIL_I, rssi_type);
22761 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22762 core ==
22763 PHY_CORE_0 ?
22764 RADIO_MIMO_CORESEL_CORE1
22765 :
22766 RADIO_MIMO_CORESEL_CORE2,
22767 NPHY_RAIL_Q, rssi_type);
22768
22769 wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22770 NPHY_RSSICAL_NPOLL);
22771
22772 for (result_idx = 0; result_idx < 4; result_idx++) {
22773 if (core == result_idx / 2) {
22774 fine_digital_offset[result_idx] =
22775 (target_code *
22776 NPHY_RSSICAL_NPOLL) -
22777 poll_result_core[result_idx];
22778 if (fine_digital_offset[result_idx] <
22779 0) {
22780 fine_digital_offset[result_idx]
22781 = abs(
22782 fine_digital_offset
22783 [result_idx]);
22784 fine_digital_offset[result_idx]
22785 += (NPHY_RSSICAL_NPOLL
22786 / 2);
22787 fine_digital_offset[result_idx]
22788 /= NPHY_RSSICAL_NPOLL;
22789 fine_digital_offset[result_idx]
22790 = -fine_digital_offset
22791 [result_idx];
22792 } else {
22793 fine_digital_offset[result_idx]
22794 += (NPHY_RSSICAL_NPOLL
22795 / 2);
22796 fine_digital_offset[result_idx]
22797 /= NPHY_RSSICAL_NPOLL;
22798 }
22799
22800 wlc_phy_scale_offset_rssi_nphy(
22801 pi, 0x0,
22802 (s8)
22803 fine_digital_offset
22804 [core *
22805 2],
22806 (core == PHY_CORE_0) ?
22807 RADIO_MIMO_CORESEL_CORE1 :
22808 RADIO_MIMO_CORESEL_CORE2,
22809 (result_idx % 2 == 0) ?
22810 NPHY_RAIL_I :
22811 NPHY_RAIL_Q,
22812 rssi_type);
22813 }
22814 }
22815
22816 }
22817 }
22818
22819 write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22820 write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22821
22822 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22823
22824 mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22825 mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22826 mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22827
22828 mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22829 mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22830 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22831
22832 write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22833 write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22834 write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22835 write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22836 write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22837 write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22838 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22839 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22840 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22841 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22842 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22843 }
22844 write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22845 write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22846 write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22847 write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22848 write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22849 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22850 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22851 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22852 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22853 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22854 }
22855 write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22856 write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22857
22858 if (CHSPEC_IS2G(pi->radio_chanspec)) {
22859 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22860 pi->rssical_cache.rssical_radio_regs_2G[0] =
22861 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22862 pi->rssical_cache.rssical_radio_regs_2G[1] =
22863 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22864 } else {
22865 pi->rssical_cache.rssical_radio_regs_2G[0] =
22866 read_radio_reg(pi,
22867 RADIO_2056_RX_RSSI_MISC |
22868 RADIO_2056_RX0);
22869 pi->rssical_cache.rssical_radio_regs_2G[1] =
22870 read_radio_reg(pi,
22871 RADIO_2056_RX_RSSI_MISC |
22872 RADIO_2056_RX1);
22873 }
22874
22875 pi->rssical_cache.rssical_phyregs_2G[0] =
22876 read_phy_reg(pi, 0x1a6);
22877 pi->rssical_cache.rssical_phyregs_2G[1] =
22878 read_phy_reg(pi, 0x1ac);
22879 pi->rssical_cache.rssical_phyregs_2G[2] =
22880 read_phy_reg(pi, 0x1b2);
22881 pi->rssical_cache.rssical_phyregs_2G[3] =
22882 read_phy_reg(pi, 0x1b8);
22883 pi->rssical_cache.rssical_phyregs_2G[4] =
22884 read_phy_reg(pi, 0x1a4);
22885 pi->rssical_cache.rssical_phyregs_2G[5] =
22886 read_phy_reg(pi, 0x1aa);
22887 pi->rssical_cache.rssical_phyregs_2G[6] =
22888 read_phy_reg(pi, 0x1b0);
22889 pi->rssical_cache.rssical_phyregs_2G[7] =
22890 read_phy_reg(pi, 0x1b6);
22891 pi->rssical_cache.rssical_phyregs_2G[8] =
22892 read_phy_reg(pi, 0x1a5);
22893 pi->rssical_cache.rssical_phyregs_2G[9] =
22894 read_phy_reg(pi, 0x1ab);
22895 pi->rssical_cache.rssical_phyregs_2G[10] =
22896 read_phy_reg(pi, 0x1b1);
22897 pi->rssical_cache.rssical_phyregs_2G[11] =
22898 read_phy_reg(pi, 0x1b7);
22899
22900 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22901 } else {
22902 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22903 pi->rssical_cache.rssical_radio_regs_5G[0] =
22904 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22905 pi->rssical_cache.rssical_radio_regs_5G[1] =
22906 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22907 } else {
22908 pi->rssical_cache.rssical_radio_regs_5G[0] =
22909 read_radio_reg(pi,
22910 RADIO_2056_RX_RSSI_MISC |
22911 RADIO_2056_RX0);
22912 pi->rssical_cache.rssical_radio_regs_5G[1] =
22913 read_radio_reg(pi,
22914 RADIO_2056_RX_RSSI_MISC |
22915 RADIO_2056_RX1);
22916 }
22917
22918 pi->rssical_cache.rssical_phyregs_5G[0] =
22919 read_phy_reg(pi, 0x1a6);
22920 pi->rssical_cache.rssical_phyregs_5G[1] =
22921 read_phy_reg(pi, 0x1ac);
22922 pi->rssical_cache.rssical_phyregs_5G[2] =
22923 read_phy_reg(pi, 0x1b2);
22924 pi->rssical_cache.rssical_phyregs_5G[3] =
22925 read_phy_reg(pi, 0x1b8);
22926 pi->rssical_cache.rssical_phyregs_5G[4] =
22927 read_phy_reg(pi, 0x1a4);
22928 pi->rssical_cache.rssical_phyregs_5G[5] =
22929 read_phy_reg(pi, 0x1aa);
22930 pi->rssical_cache.rssical_phyregs_5G[6] =
22931 read_phy_reg(pi, 0x1b0);
22932 pi->rssical_cache.rssical_phyregs_5G[7] =
22933 read_phy_reg(pi, 0x1b6);
22934 pi->rssical_cache.rssical_phyregs_5G[8] =
22935 read_phy_reg(pi, 0x1a5);
22936 pi->rssical_cache.rssical_phyregs_5G[9] =
22937 read_phy_reg(pi, 0x1ab);
22938 pi->rssical_cache.rssical_phyregs_5G[10] =
22939 read_phy_reg(pi, 0x1b1);
22940 pi->rssical_cache.rssical_phyregs_5G[11] =
22941 read_phy_reg(pi, 0x1b7);
22942
22943 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22944 }
22945
22946 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22947 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22948 }
22949
22950 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22951 {
22952 s32 target_code;
22953 u16 classif_state;
22954 u16 clip_state[2];
22955 u16 rssi_ctrl_state[2], pd_state[2];
22956 u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22957 u16 rfctrlintc_override_val;
22958 u16 clip_off[] = { 0xffff, 0xffff };
22959 u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22960 u8 vcm, min_vcm, vcm_tmp[4];
22961 u8 vcm_final[4] = { 0, 0, 0, 0 };
22962 u8 result_idx, ctr;
22963 s32 poll_results[4][4] = {
22964 {0, 0, 0, 0},
22965 {0, 0, 0, 0},
22966 {0, 0, 0, 0},
22967 {0, 0, 0, 0}
22968 };
22969 s32 poll_miniq[4][2] = {
22970 {0, 0},
22971 {0, 0},
22972 {0, 0},
22973 {0, 0}
22974 };
22975 s32 min_d, curr_d;
22976 s32 fine_digital_offset[4];
22977 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22978 s32 min_poll;
22979
22980 switch (rssi_type) {
22981 case NPHY_RSSI_SEL_NB:
22982 target_code = NPHY_RSSICAL_NB_TARGET;
22983 break;
22984 case NPHY_RSSI_SEL_W1:
22985 target_code = NPHY_RSSICAL_W1_TARGET;
22986 break;
22987 case NPHY_RSSI_SEL_W2:
22988 target_code = NPHY_RSSICAL_W2_TARGET;
22989 break;
22990 default:
22991 return;
22992 break;
22993 }
22994
22995 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22996 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22997 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22998 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22999
23000 rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
23001 rfctrlintc_override_val =
23002 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
23003
23004 rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
23005 rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
23006 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
23007 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
23008
23009 rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
23010 rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
23011 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
23012 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
23013
23014 pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
23015 RADIO_2055_WBRSSI_G2_PD;
23016 pd_state[0] =
23017 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
23018 pd_state[1] =
23019 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
23020 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
23021 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
23022 rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
23023 RADIO_2055_WBRSSI_G2_SEL;
23024 rssi_ctrl_state[0] =
23025 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
23026 rssi_ctrl_state[1] =
23027 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
23028 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
23029
23030 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23031 NPHY_RAIL_I, rssi_type);
23032 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
23033 NPHY_RAIL_Q, rssi_type);
23034
23035 for (vcm = 0; vcm < 4; vcm++) {
23036
23037 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
23038 if (rssi_type != NPHY_RSSI_SEL_W2)
23039 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
23040
23041 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
23042 NPHY_RSSICAL_NPOLL);
23043
23044 if ((rssi_type == NPHY_RSSI_SEL_W1)
23045 || (rssi_type == NPHY_RSSI_SEL_W2)) {
23046 for (ctr = 0; ctr < 2; ctr++)
23047 poll_miniq[vcm][ctr] =
23048 min(poll_results[vcm][ctr * 2 + 0],
23049 poll_results[vcm][ctr * 2 + 1]);
23050 }
23051 }
23052
23053 for (result_idx = 0; result_idx < 4; result_idx++) {
23054 min_d = NPHY_RSSICAL_MAXD;
23055 min_vcm = 0;
23056 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
23057 for (vcm = 0; vcm < 4; vcm++) {
23058 curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
23059 poll_results[vcm][result_idx] :
23060 poll_miniq[vcm][result_idx / 2]) -
23061 (target_code * NPHY_RSSICAL_NPOLL));
23062 if (curr_d < min_d) {
23063 min_d = curr_d;
23064 min_vcm = vcm;
23065 }
23066 if (poll_results[vcm][result_idx] < min_poll)
23067 min_poll = poll_results[vcm][result_idx];
23068 }
23069 vcm_final[result_idx] = min_vcm;
23070 poll_results_min[result_idx] = min_poll;
23071 }
23072
23073 if (rssi_type != NPHY_RSSI_SEL_W2)
23074 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23075
23076 for (result_idx = 0; result_idx < 4; result_idx++) {
23077 fine_digital_offset[result_idx] =
23078 (target_code * NPHY_RSSICAL_NPOLL) -
23079 poll_results[vcm_final[result_idx]][result_idx];
23080 if (fine_digital_offset[result_idx] < 0) {
23081 fine_digital_offset[result_idx] =
23082 abs(fine_digital_offset[result_idx]);
23083 fine_digital_offset[result_idx] +=
23084 (NPHY_RSSICAL_NPOLL / 2);
23085 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23086 fine_digital_offset[result_idx] =
23087 -fine_digital_offset[result_idx];
23088 } else {
23089 fine_digital_offset[result_idx] +=
23090 (NPHY_RSSICAL_NPOLL / 2);
23091 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23092 }
23093
23094 if (poll_results_min[result_idx] ==
23095 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23096 fine_digital_offset[result_idx] =
23097 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23098
23099 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23100 (s8)
23101 fine_digital_offset[result_idx],
23102 (result_idx / 2 ==
23103 0) ? RADIO_MIMO_CORESEL_CORE1 :
23104 RADIO_MIMO_CORESEL_CORE2,
23105 (result_idx % 2 ==
23106 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23107 rssi_type);
23108 }
23109
23110 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23111 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23112 if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23113 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23114 NPHY_RSSI_SEL_NB);
23115 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23116 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23117 NPHY_RSSI_SEL_W1);
23118 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23119 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23120 NPHY_RSSI_SEL_W2);
23121 else
23122 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23123 NPHY_RSSI_SEL_W2);
23124 if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23125 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23126 NPHY_RSSI_SEL_NB);
23127 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23128 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23129 NPHY_RSSI_SEL_W1);
23130 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23131 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23132 NPHY_RSSI_SEL_W2);
23133 else
23134 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23135 NPHY_RSSI_SEL_W2);
23136
23137 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23138
23139 write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23140 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23141 write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23142 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23143
23144 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23145 wlc_phy_clip_det_nphy(pi, 1, clip_state);
23146
23147 wlc_phy_resetcca_nphy(pi);
23148 }
23149
23150 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23151 {
23152 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23153 wlc_phy_rssi_cal_nphy_rev3(pi);
23154 } else {
23155 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23156 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23157 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23158 }
23159 }
23160
23161 int
23162 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23163 {
23164 s16 rxpwr, rxpwr0, rxpwr1;
23165 s16 phyRx0_l, phyRx2_l;
23166
23167 rxpwr = 0;
23168 rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23169 rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23170
23171 if (rxpwr0 > 127)
23172 rxpwr0 -= 256;
23173 if (rxpwr1 > 127)
23174 rxpwr1 -= 256;
23175
23176 phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23177 phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23178 if (phyRx2_l > 127)
23179 phyRx2_l -= 256;
23180
23181 if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23182 rxpwr0 = rxpwr1;
23183 rxpwr1 = phyRx2_l;
23184 }
23185
23186 if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23187 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23188 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23189 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23190 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23191 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23192
23193 return rxpwr;
23194 }
23195
23196 static void
23197 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23198 u16 num_samps)
23199 {
23200 u16 t;
23201 u32 *data_buf = NULL;
23202
23203 data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23204 if (data_buf == NULL)
23205 return;
23206
23207 if (pi->phyhang_avoid)
23208 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23209
23210 for (t = 0; t < num_samps; t++)
23211 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23212 (((unsigned int)tone_buf[t].q) & 0x3ff);
23213 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23214 data_buf);
23215
23216 kfree(data_buf);
23217
23218 if (pi->phyhang_avoid)
23219 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23220 }
23221
23222 static u16
23223 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23224 u8 dac_test_mode)
23225 {
23226 u8 phy_bw, is_phybw40;
23227 u16 num_samps, t, spur;
23228 s32 theta = 0, rot = 0;
23229 u32 tbl_len;
23230 struct cordic_iq *tone_buf = NULL;
23231
23232 is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23233 phy_bw = (is_phybw40 == 1) ? 40 : 20;
23234 tbl_len = (phy_bw << 3);
23235
23236 if (dac_test_mode == 1) {
23237 spur = read_phy_reg(pi, 0x01);
23238 spur = (spur >> 15) & 1;
23239 phy_bw = (spur == 1) ? 82 : 80;
23240 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23241
23242 tbl_len = (phy_bw << 1);
23243 }
23244
23245 tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23246 if (tone_buf == NULL)
23247 return 0;
23248
23249 num_samps = (u16) tbl_len;
23250 rot = ((f_kHz * 36) / phy_bw) / 100;
23251 theta = 0;
23252
23253 for (t = 0; t < num_samps; t++) {
23254
23255 tone_buf[t] = cordic_calc_iq(theta);
23256
23257 theta += rot;
23258
23259 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23260 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23261 }
23262
23263 wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23264
23265 kfree(tone_buf);
23266
23267 return num_samps;
23268 }
23269
23270 static void
23271 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23272 u16 wait, u8 iqmode, u8 dac_test_mode,
23273 bool modify_bbmult)
23274 {
23275 u16 bb_mult;
23276 u8 phy_bw, sample_cmd;
23277 u16 orig_RfseqCoreActv;
23278 u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23279 lpf_bw_ctl_miscreg4;
23280
23281 if (pi->phyhang_avoid)
23282 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23283
23284 phy_bw = 20;
23285 if (CHSPEC_IS40(pi->radio_chanspec))
23286 phy_bw = 40;
23287
23288 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23289
23290 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23291 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23292 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23293 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23294 (0x7 << 8);
23295 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23296 (0x7 << 8);
23297 } else {
23298 wlc_phy_rfctrl_override_nphy_rev7(
23299 pi,
23300 (0x1 << 7),
23301 wlc_phy_read_lpf_bw_ctl_nphy
23302 (pi,
23303 0), 0, 0,
23304 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23305
23306 pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23307
23308 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23309 (0x7 << 8);
23310 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23311 (0x7 << 8);
23312 }
23313 }
23314
23315 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23316
23317 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23318 &bb_mult);
23319 pi->nphy_bb_mult_save =
23320 BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23321 }
23322
23323 if (modify_bbmult) {
23324 bb_mult = (phy_bw == 20) ? 100 : 71;
23325 bb_mult = (bb_mult << 8) + bb_mult;
23326 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23327 &bb_mult);
23328 }
23329
23330 if (pi->phyhang_avoid)
23331 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23332
23333 write_phy_reg(pi, 0xc6, num_samps - 1);
23334
23335 if (loops != 0xffff)
23336 write_phy_reg(pi, 0xc4, loops - 1);
23337 else
23338 write_phy_reg(pi, 0xc4, loops);
23339
23340 write_phy_reg(pi, 0xc5, wait);
23341
23342 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23343 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23344 if (iqmode) {
23345
23346 and_phy_reg(pi, 0xc2, 0x7FFF);
23347
23348 or_phy_reg(pi, 0xc2, 0x8000);
23349 } else {
23350
23351 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23352 write_phy_reg(pi, 0xc3, sample_cmd);
23353 }
23354
23355 SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23356
23357 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23358 }
23359
23360 int
23361 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23362 u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23363 {
23364 u16 num_samps;
23365 u16 loops = 0xffff;
23366 u16 wait = 0;
23367
23368 num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23369 dac_test_mode);
23370 if (num_samps == 0)
23371 return -EBADE;
23372
23373 wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23374 dac_test_mode, modify_bbmult);
23375
23376 return 0;
23377 }
23378
23379 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23380 {
23381 u16 playback_status;
23382 u16 bb_mult;
23383
23384 if (pi->phyhang_avoid)
23385 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23386
23387 playback_status = read_phy_reg(pi, 0xc7);
23388 if (playback_status & 0x1)
23389 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23390 else if (playback_status & 0x2)
23391 and_phy_reg(pi, 0xc2,
23392 (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23393
23394 and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23395
23396 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23397
23398 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23399 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23400 &bb_mult);
23401
23402 pi->nphy_bb_mult_save = 0;
23403 }
23404
23405 if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23406 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23407 wlc_phy_rfctrl_override_nphy_rev7(
23408 pi,
23409 (0x1 << 7),
23410 0, 0, 1,
23411 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23412 pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23413 }
23414 }
23415
23416 if (pi->phyhang_avoid)
23417 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23418 }
23419
23420 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23421 {
23422 u32 *tx_pwrctrl_tbl = NULL;
23423 uint phyrev = pi->pubpi.phy_rev;
23424
23425 if (PHY_IPA(pi)) {
23426 tx_pwrctrl_tbl =
23427 wlc_phy_get_ipa_gaintbl_nphy(pi);
23428 } else {
23429 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23430 if (NREV_IS(phyrev, 3))
23431 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23432 else if (NREV_IS(phyrev, 4))
23433 tx_pwrctrl_tbl =
23434 (pi->srom_fem5g.extpagain == 3) ?
23435 nphy_tpc_5GHz_txgain_HiPwrEPA :
23436 nphy_tpc_5GHz_txgain_rev4;
23437 else
23438 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23439 } else {
23440 if (NREV_GE(phyrev, 7)) {
23441 if (pi->pubpi.radiorev == 3)
23442 tx_pwrctrl_tbl =
23443 nphy_tpc_txgain_epa_2057rev3;
23444 else if (pi->pubpi.radiorev == 5)
23445 tx_pwrctrl_tbl =
23446 nphy_tpc_txgain_epa_2057rev5;
23447 } else {
23448 if (NREV_GE(phyrev, 5) &&
23449 (pi->srom_fem2g.extpagain == 3))
23450 tx_pwrctrl_tbl =
23451 nphy_tpc_txgain_HiPwrEPA;
23452 else
23453 tx_pwrctrl_tbl =
23454 nphy_tpc_txgain_rev3;
23455 }
23456 }
23457 }
23458 return tx_pwrctrl_tbl;
23459 }
23460
23461 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23462 {
23463 u16 base_idx[2], curr_gain[2];
23464 u8 core_no;
23465 struct nphy_txgains target_gain;
23466 u32 *tx_pwrctrl_tbl = NULL;
23467
23468 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23469 if (pi->phyhang_avoid)
23470 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23471
23472 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23473 curr_gain);
23474
23475 if (pi->phyhang_avoid)
23476 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23477
23478 for (core_no = 0; core_no < 2; core_no++) {
23479 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23480 target_gain.ipa[core_no] =
23481 curr_gain[core_no] & 0x0007;
23482 target_gain.pad[core_no] =
23483 ((curr_gain[core_no] & 0x00F8) >> 3);
23484 target_gain.pga[core_no] =
23485 ((curr_gain[core_no] & 0x0F00) >> 8);
23486 target_gain.txgm[core_no] =
23487 ((curr_gain[core_no] & 0x7000) >> 12);
23488 target_gain.txlpf[core_no] =
23489 ((curr_gain[core_no] & 0x8000) >> 15);
23490 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23491 target_gain.ipa[core_no] =
23492 curr_gain[core_no] & 0x000F;
23493 target_gain.pad[core_no] =
23494 ((curr_gain[core_no] & 0x00F0) >> 4);
23495 target_gain.pga[core_no] =
23496 ((curr_gain[core_no] & 0x0F00) >> 8);
23497 target_gain.txgm[core_no] =
23498 ((curr_gain[core_no] & 0x7000) >> 12);
23499 } else {
23500 target_gain.ipa[core_no] =
23501 curr_gain[core_no] & 0x0003;
23502 target_gain.pad[core_no] =
23503 ((curr_gain[core_no] & 0x000C) >> 2);
23504 target_gain.pga[core_no] =
23505 ((curr_gain[core_no] & 0x0070) >> 4);
23506 target_gain.txgm[core_no] =
23507 ((curr_gain[core_no] & 0x0380) >> 7);
23508 }
23509 }
23510 } else {
23511 uint phyrev = pi->pubpi.phy_rev;
23512
23513 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23514 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23515 for (core_no = 0; core_no < 2; core_no++) {
23516 if (NREV_GE(phyrev, 3)) {
23517 tx_pwrctrl_tbl =
23518 brcms_phy_get_tx_pwrctrl_tbl(pi);
23519 if (NREV_GE(phyrev, 7)) {
23520 target_gain.ipa[core_no] =
23521 (tx_pwrctrl_tbl
23522 [base_idx[core_no]]
23523 >> 16) & 0x7;
23524 target_gain.pad[core_no] =
23525 (tx_pwrctrl_tbl
23526 [base_idx[core_no]]
23527 >> 19) & 0x1f;
23528 target_gain.pga[core_no] =
23529 (tx_pwrctrl_tbl
23530 [base_idx[core_no]]
23531 >> 24) & 0xf;
23532 target_gain.txgm[core_no] =
23533 (tx_pwrctrl_tbl
23534 [base_idx[core_no]]
23535 >> 28) & 0x7;
23536 target_gain.txlpf[core_no] =
23537 (tx_pwrctrl_tbl
23538 [base_idx[core_no]]
23539 >> 31) & 0x1;
23540 } else {
23541 target_gain.ipa[core_no] =
23542 (tx_pwrctrl_tbl
23543 [base_idx[core_no]]
23544 >> 16) & 0xf;
23545 target_gain.pad[core_no] =
23546 (tx_pwrctrl_tbl
23547 [base_idx[core_no]]
23548 >> 20) & 0xf;
23549 target_gain.pga[core_no] =
23550 (tx_pwrctrl_tbl
23551 [base_idx[core_no]]
23552 >> 24) & 0xf;
23553 target_gain.txgm[core_no] =
23554 (tx_pwrctrl_tbl
23555 [base_idx[core_no]]
23556 >> 28) & 0x7;
23557 }
23558 } else {
23559 target_gain.ipa[core_no] =
23560 (nphy_tpc_txgain[base_idx[core_no]] >>
23561 16) & 0x3;
23562 target_gain.pad[core_no] =
23563 (nphy_tpc_txgain[base_idx[core_no]] >>
23564 18) & 0x3;
23565 target_gain.pga[core_no] =
23566 (nphy_tpc_txgain[base_idx[core_no]] >>
23567 20) & 0x7;
23568 target_gain.txgm[core_no] =
23569 (nphy_tpc_txgain[base_idx[core_no]] >>
23570 23) & 0x7;
23571 }
23572 }
23573 }
23574
23575 return target_gain;
23576 }
23577
23578 static void
23579 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23580 struct nphy_txgains target_gain,
23581 struct nphy_iqcal_params *params)
23582 {
23583 u8 k;
23584 int idx;
23585 u16 gain_index;
23586 u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23587
23588 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23589 if (NREV_GE(pi->pubpi.phy_rev, 7))
23590 params->txlpf = target_gain.txlpf[core_no];
23591
23592 params->txgm = target_gain.txgm[core_no];
23593 params->pga = target_gain.pga[core_no];
23594 params->pad = target_gain.pad[core_no];
23595 params->ipa = target_gain.ipa[core_no];
23596 if (NREV_GE(pi->pubpi.phy_rev, 7))
23597 params->cal_gain =
23598 ((params->txlpf << 15) | (params->txgm << 12) |
23599 (params->pga << 8) |
23600 (params->pad << 3) | (params->ipa));
23601 else
23602 params->cal_gain =
23603 ((params->txgm << 12) | (params->pga << 8) |
23604 (params->pad << 4) | (params->ipa));
23605
23606 params->ncorr[0] = 0x79;
23607 params->ncorr[1] = 0x79;
23608 params->ncorr[2] = 0x79;
23609 params->ncorr[3] = 0x79;
23610 params->ncorr[4] = 0x79;
23611 } else {
23612
23613 gain_index = ((target_gain.pad[core_no] << 0) |
23614 (target_gain.pga[core_no] << 4) |
23615 (target_gain.txgm[core_no] << 8));
23616
23617 idx = -1;
23618 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23619 if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23620 gain_index) {
23621 idx = k;
23622 break;
23623 }
23624 }
23625
23626 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23627 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23628 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23629 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23630 (params->pad << 2));
23631 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23632 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23633 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23634 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23635 }
23636 }
23637
23638 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23639 {
23640 u16 jtag_core, core;
23641
23642 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23643
23644 for (core = 0; core <= 1; core++) {
23645
23646 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23647 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23648 TX_SSI_MASTER);
23649
23650 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23651 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23652 IQCAL_VCM_HG);
23653
23654 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23655 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23656 IQCAL_IDAC);
23657
23658 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23659 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23660 TSSI_VCM);
23661
23662 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23663
23664 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23665 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23666 TX_SSI_MUX);
23667
23668 if (pi->pubpi.radiorev != 5)
23669 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23670 READ_RADIO_REG3(pi, RADIO_2057, TX,
23671 core,
23672 TSSIA);
23673
23674 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23675 READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23676
23677 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23678 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23679 TSSI_MISC1);
23680
23681 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23682 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23683 TX_SSI_MASTER, 0x0a);
23684 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23685 IQCAL_VCM_HG, 0x43);
23686 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23687 IQCAL_IDAC, 0x55);
23688 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23689 TSSI_VCM, 0x00);
23690 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23691 TSSIG, 0x00);
23692 if (pi->use_int_tx_iqlo_cal_nphy) {
23693 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23694 core, TX_SSI_MUX, 0x4);
23695 if (!(pi->
23696 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23697 WRITE_RADIO_REG3(pi, RADIO_2057,
23698 TX, core,
23699 TSSIA, 0x31);
23700 else
23701 WRITE_RADIO_REG3(pi, RADIO_2057,
23702 TX, core,
23703 TSSIA, 0x21);
23704 }
23705 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23706 TSSI_MISC1, 0x00);
23707 } else {
23708 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23709 TX_SSI_MASTER, 0x06);
23710 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23711 IQCAL_VCM_HG, 0x43);
23712 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23713 IQCAL_IDAC, 0x55);
23714 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23715 TSSI_VCM, 0x00);
23716
23717 if (pi->pubpi.radiorev != 5)
23718 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23719 core, TSSIA, 0x00);
23720 if (pi->use_int_tx_iqlo_cal_nphy) {
23721 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23722 core, TX_SSI_MUX,
23723 0x06);
23724 if (!(pi->
23725 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23726 WRITE_RADIO_REG3(pi, RADIO_2057,
23727 TX, core,
23728 TSSIG, 0x31);
23729 else
23730 WRITE_RADIO_REG3(pi, RADIO_2057,
23731 TX, core,
23732 TSSIG, 0x21);
23733 }
23734 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23735 TSSI_MISC1, 0x00);
23736 }
23737 }
23738 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23739
23740 for (core = 0; core <= 1; core++) {
23741 jtag_core =
23742 (core ==
23743 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23744
23745 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23746 read_radio_reg(pi,
23747 RADIO_2056_TX_TX_SSI_MASTER |
23748 jtag_core);
23749
23750 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23751 read_radio_reg(pi,
23752 RADIO_2056_TX_IQCAL_VCM_HG |
23753 jtag_core);
23754
23755 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23756 read_radio_reg(pi,
23757 RADIO_2056_TX_IQCAL_IDAC |
23758 jtag_core);
23759
23760 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23761 read_radio_reg(
23762 pi,
23763 RADIO_2056_TX_TSSI_VCM |
23764 jtag_core);
23765
23766 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23767 read_radio_reg(pi,
23768 RADIO_2056_TX_TX_AMP_DET |
23769 jtag_core);
23770
23771 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23772 read_radio_reg(pi,
23773 RADIO_2056_TX_TX_SSI_MUX |
23774 jtag_core);
23775
23776 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23777 read_radio_reg(pi,
23778 RADIO_2056_TX_TSSIA | jtag_core);
23779
23780 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23781 read_radio_reg(pi,
23782 RADIO_2056_TX_TSSIG | jtag_core);
23783
23784 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23785 read_radio_reg(pi,
23786 RADIO_2056_TX_TSSI_MISC1 |
23787 jtag_core);
23788
23789 pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23790 read_radio_reg(pi,
23791 RADIO_2056_TX_TSSI_MISC2 |
23792 jtag_core);
23793
23794 pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23795 read_radio_reg(pi,
23796 RADIO_2056_TX_TSSI_MISC3 |
23797 jtag_core);
23798
23799 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23800 write_radio_reg(pi,
23801 RADIO_2056_TX_TX_SSI_MASTER |
23802 jtag_core, 0x0a);
23803 write_radio_reg(pi,
23804 RADIO_2056_TX_IQCAL_VCM_HG |
23805 jtag_core, 0x40);
23806 write_radio_reg(pi,
23807 RADIO_2056_TX_IQCAL_IDAC |
23808 jtag_core, 0x55);
23809 write_radio_reg(pi,
23810 RADIO_2056_TX_TSSI_VCM |
23811 jtag_core, 0x00);
23812 write_radio_reg(pi,
23813 RADIO_2056_TX_TX_AMP_DET |
23814 jtag_core, 0x00);
23815
23816 if (PHY_IPA(pi)) {
23817 write_radio_reg(
23818 pi,
23819 RADIO_2056_TX_TX_SSI_MUX
23820 | jtag_core, 0x4);
23821 write_radio_reg(pi,
23822 RADIO_2056_TX_TSSIA |
23823 jtag_core, 0x1);
23824 } else {
23825 write_radio_reg(
23826 pi,
23827 RADIO_2056_TX_TX_SSI_MUX
23828 | jtag_core, 0x00);
23829 write_radio_reg(pi,
23830 RADIO_2056_TX_TSSIA |
23831 jtag_core, 0x2f);
23832 }
23833 write_radio_reg(pi,
23834 RADIO_2056_TX_TSSIG | jtag_core,
23835 0x00);
23836 write_radio_reg(pi,
23837 RADIO_2056_TX_TSSI_MISC1 |
23838 jtag_core, 0x00);
23839
23840 write_radio_reg(pi,
23841 RADIO_2056_TX_TSSI_MISC2 |
23842 jtag_core, 0x00);
23843 write_radio_reg(pi,
23844 RADIO_2056_TX_TSSI_MISC3 |
23845 jtag_core, 0x00);
23846 } else {
23847 write_radio_reg(pi,
23848 RADIO_2056_TX_TX_SSI_MASTER |
23849 jtag_core, 0x06);
23850 write_radio_reg(pi,
23851 RADIO_2056_TX_IQCAL_VCM_HG |
23852 jtag_core, 0x40);
23853 write_radio_reg(pi,
23854 RADIO_2056_TX_IQCAL_IDAC |
23855 jtag_core, 0x55);
23856 write_radio_reg(pi,
23857 RADIO_2056_TX_TSSI_VCM |
23858 jtag_core, 0x00);
23859 write_radio_reg(pi,
23860 RADIO_2056_TX_TX_AMP_DET |
23861 jtag_core, 0x00);
23862 write_radio_reg(pi,
23863 RADIO_2056_TX_TSSIA | jtag_core,
23864 0x00);
23865
23866 if (PHY_IPA(pi)) {
23867
23868 write_radio_reg(
23869 pi,
23870 RADIO_2056_TX_TX_SSI_MUX
23871 | jtag_core, 0x06);
23872 if (NREV_LT(pi->pubpi.phy_rev, 5))
23873 write_radio_reg(
23874 pi,
23875 RADIO_2056_TX_TSSIG
23876 | jtag_core,
23877 0x11);
23878 else
23879 write_radio_reg(
23880 pi,
23881 RADIO_2056_TX_TSSIG
23882 | jtag_core,
23883 0x1);
23884 } else {
23885 write_radio_reg(
23886 pi,
23887 RADIO_2056_TX_TX_SSI_MUX
23888 | jtag_core, 0x00);
23889 write_radio_reg(pi,
23890 RADIO_2056_TX_TSSIG |
23891 jtag_core, 0x20);
23892 }
23893
23894 write_radio_reg(pi,
23895 RADIO_2056_TX_TSSI_MISC1 |
23896 jtag_core, 0x00);
23897 write_radio_reg(pi,
23898 RADIO_2056_TX_TSSI_MISC2 |
23899 jtag_core, 0x00);
23900 write_radio_reg(pi,
23901 RADIO_2056_TX_TSSI_MISC3 |
23902 jtag_core, 0x00);
23903 }
23904 }
23905 } else {
23906
23907 pi->tx_rx_cal_radio_saveregs[0] =
23908 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23909 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23910 pi->tx_rx_cal_radio_saveregs[1] =
23911 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23912 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23913
23914 pi->tx_rx_cal_radio_saveregs[2] =
23915 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23916 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23917 pi->tx_rx_cal_radio_saveregs[3] =
23918 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23919 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23920
23921 pi->tx_rx_cal_radio_saveregs[4] =
23922 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23923 pi->tx_rx_cal_radio_saveregs[5] =
23924 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23925
23926 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23927 0) {
23928
23929 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23930 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23931 } else {
23932
23933 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23934 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23935 }
23936
23937 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23938
23939 or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23940 or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23941 } else {
23942
23943 and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23944 and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23945 }
23946 }
23947 }
23948
23949 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23950 {
23951 u16 jtag_core, core;
23952
23953 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23954 for (core = 0; core <= 1; core++) {
23955
23956 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23957 TX_SSI_MASTER,
23958 pi->
23959 tx_rx_cal_radio_saveregs[(core * 11) +
23960 0]);
23961
23962 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23963 pi->
23964 tx_rx_cal_radio_saveregs[(core * 11) +
23965 1]);
23966
23967 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23968 pi->
23969 tx_rx_cal_radio_saveregs[(core * 11) +
23970 2]);
23971
23972 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23973 pi->
23974 tx_rx_cal_radio_saveregs[(core * 11) +
23975 3]);
23976
23977 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23978 pi->
23979 tx_rx_cal_radio_saveregs[(core * 11) +
23980 5]);
23981
23982 if (pi->pubpi.radiorev != 5)
23983 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23984 TSSIA,
23985 pi->tx_rx_cal_radio_saveregs
23986 [(core * 11) + 6]);
23987
23988 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23989 pi->
23990 tx_rx_cal_radio_saveregs[(core * 11) +
23991 7]);
23992
23993 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23994 pi->
23995 tx_rx_cal_radio_saveregs[(core * 11) +
23996 8]);
23997 }
23998 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23999 for (core = 0; core <= 1; core++) {
24000 jtag_core = (core == PHY_CORE_0) ?
24001 RADIO_2056_TX0 : RADIO_2056_TX1;
24002
24003 write_radio_reg(pi,
24004 RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
24005 pi->
24006 tx_rx_cal_radio_saveregs[(core * 11) +
24007 0]);
24008
24009 write_radio_reg(pi,
24010 RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
24011 pi->
24012 tx_rx_cal_radio_saveregs[(core * 11) +
24013 1]);
24014
24015 write_radio_reg(pi,
24016 RADIO_2056_TX_IQCAL_IDAC | jtag_core,
24017 pi->
24018 tx_rx_cal_radio_saveregs[(core * 11) +
24019 2]);
24020
24021 write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
24022 pi->
24023 tx_rx_cal_radio_saveregs[(core * 11) +
24024 3]);
24025
24026 write_radio_reg(pi,
24027 RADIO_2056_TX_TX_AMP_DET | jtag_core,
24028 pi->
24029 tx_rx_cal_radio_saveregs[(core * 11) +
24030 4]);
24031
24032 write_radio_reg(pi,
24033 RADIO_2056_TX_TX_SSI_MUX | jtag_core,
24034 pi->
24035 tx_rx_cal_radio_saveregs[(core * 11) +
24036 5]);
24037
24038 write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
24039 pi->
24040 tx_rx_cal_radio_saveregs[(core * 11) +
24041 6]);
24042
24043 write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
24044 pi->
24045 tx_rx_cal_radio_saveregs[(core * 11) +
24046 7]);
24047
24048 write_radio_reg(pi,
24049 RADIO_2056_TX_TSSI_MISC1 | jtag_core,
24050 pi->
24051 tx_rx_cal_radio_saveregs[(core * 11) +
24052 8]);
24053
24054 write_radio_reg(pi,
24055 RADIO_2056_TX_TSSI_MISC2 | jtag_core,
24056 pi->
24057 tx_rx_cal_radio_saveregs[(core * 11) +
24058 9]);
24059
24060 write_radio_reg(pi,
24061 RADIO_2056_TX_TSSI_MISC3 | jtag_core,
24062 pi->
24063 tx_rx_cal_radio_saveregs[(core * 11) +
24064 10]);
24065 }
24066 } else {
24067
24068 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
24069 pi->tx_rx_cal_radio_saveregs[0]);
24070 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24071 pi->tx_rx_cal_radio_saveregs[1]);
24072 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24073 pi->tx_rx_cal_radio_saveregs[2]);
24074 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24075 pi->tx_rx_cal_radio_saveregs[3]);
24076 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24077 pi->tx_rx_cal_radio_saveregs[4]);
24078 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24079 pi->tx_rx_cal_radio_saveregs[5]);
24080 }
24081 }
24082
24083 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24084 {
24085 u16 val, mask;
24086
24087 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24088 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24089 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24090
24091 mask = ((0x3 << 8) | (0x3 << 10));
24092 val = (0x2 << 8);
24093 val |= (0x2 << 10);
24094 mod_phy_reg(pi, 0xa6, mask, val);
24095 mod_phy_reg(pi, 0xa7, mask, val);
24096
24097 val = read_phy_reg(pi, 0x8f);
24098 pi->tx_rx_cal_phy_saveregs[2] = val;
24099 val |= ((0x1 << 9) | (0x1 << 10));
24100 write_phy_reg(pi, 0x8f, val);
24101
24102 val = read_phy_reg(pi, 0xa5);
24103 pi->tx_rx_cal_phy_saveregs[3] = val;
24104 val |= ((0x1 << 9) | (0x1 << 10));
24105 write_phy_reg(pi, 0xa5, val);
24106
24107 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24108 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24109
24110 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24111 &val);
24112 pi->tx_rx_cal_phy_saveregs[5] = val;
24113 val = 0;
24114 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24115 &val);
24116
24117 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24118 &val);
24119 pi->tx_rx_cal_phy_saveregs[6] = val;
24120 val = 0;
24121 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24122 &val);
24123
24124 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24125 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24126
24127 if (!(pi->use_int_tx_iqlo_cal_nphy))
24128 wlc_phy_rfctrlintc_override_nphy(
24129 pi,
24130 NPHY_RfctrlIntc_override_PA,
24131 1,
24132 RADIO_MIMO_CORESEL_CORE1
24133 |
24134 RADIO_MIMO_CORESEL_CORE2);
24135 else
24136 wlc_phy_rfctrlintc_override_nphy(
24137 pi,
24138 NPHY_RfctrlIntc_override_PA,
24139 0,
24140 RADIO_MIMO_CORESEL_CORE1
24141 |
24142 RADIO_MIMO_CORESEL_CORE2);
24143
24144 wlc_phy_rfctrlintc_override_nphy(pi,
24145 NPHY_RfctrlIntc_override_TRSW,
24146 0x2, RADIO_MIMO_CORESEL_CORE1);
24147 wlc_phy_rfctrlintc_override_nphy(pi,
24148 NPHY_RfctrlIntc_override_TRSW,
24149 0x8, RADIO_MIMO_CORESEL_CORE2);
24150
24151 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24152 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24153 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24154 0x29b, (0x1 << 0), (0) << 0);
24155
24156 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24157 0x29b, (0x1 << 0), (0) << 0);
24158
24159 if (NREV_IS(pi->pubpi.phy_rev, 7)
24160 || NREV_GE(pi->pubpi.phy_rev, 8))
24161 wlc_phy_rfctrl_override_nphy_rev7(
24162 pi, (0x1 << 7),
24163 wlc_phy_read_lpf_bw_ctl_nphy
24164 (pi,
24165 0), 0, 0,
24166 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24167
24168 if (pi->use_int_tx_iqlo_cal_nphy
24169 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24170
24171 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24172
24173 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24174 1 << 4);
24175
24176 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24177 mod_radio_reg(
24178 pi,
24179 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24180 1, 0);
24181 mod_radio_reg(
24182 pi,
24183 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24184 1, 0);
24185 } else {
24186 mod_radio_reg(
24187 pi,
24188 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24189 1, 0);
24190 mod_radio_reg(
24191 pi,
24192 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24193 1, 0);
24194 }
24195 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24196 wlc_phy_rfctrl_override_nphy_rev7(
24197 pi,
24198 (0x1 << 3), 0,
24199 0x3, 0,
24200 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24201 }
24202 }
24203 } else {
24204 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24205 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24206
24207 mask = ((0x3 << 12) | (0x3 << 14));
24208 val = (0x2 << 12);
24209 val |= (0x2 << 14);
24210 mod_phy_reg(pi, 0xa6, mask, val);
24211 mod_phy_reg(pi, 0xa7, mask, val);
24212
24213 val = read_phy_reg(pi, 0xa5);
24214 pi->tx_rx_cal_phy_saveregs[2] = val;
24215 val |= ((0x1 << 12) | (0x1 << 13));
24216 write_phy_reg(pi, 0xa5, val);
24217
24218 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24219 &val);
24220 pi->tx_rx_cal_phy_saveregs[3] = val;
24221 val |= 0x2000;
24222 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24223 &val);
24224
24225 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24226 &val);
24227 pi->tx_rx_cal_phy_saveregs[4] = val;
24228 val |= 0x2000;
24229 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24230 &val);
24231
24232 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24233 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24234 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24235 write_phy_reg(pi, 0x91, val);
24236 write_phy_reg(pi, 0x92, val);
24237 }
24238 }
24239
24240 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24241 {
24242 u16 mask;
24243
24244 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24245 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24246 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24247 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24248 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24249 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24250
24251 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24252 &pi->tx_rx_cal_phy_saveregs[5]);
24253 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24254 &pi->tx_rx_cal_phy_saveregs[6]);
24255
24256 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24257 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24258
24259 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24260 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24261
24262 if (NREV_IS(pi->pubpi.phy_rev, 7)
24263 || NREV_GE(pi->pubpi.phy_rev, 8))
24264 wlc_phy_rfctrl_override_nphy_rev7(
24265 pi, (0x1 << 7), 0, 0,
24266 1,
24267 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24268
24269 wlc_phy_resetcca_nphy(pi);
24270
24271 if (pi->use_int_tx_iqlo_cal_nphy
24272 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24273
24274 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24275 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24276 mod_radio_reg(
24277 pi,
24278 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24279 1, 1);
24280 mod_radio_reg(
24281 pi,
24282 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24283 1, 1);
24284 } else {
24285 mod_radio_reg(
24286 pi,
24287 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24288 1, 1);
24289 mod_radio_reg(
24290 pi,
24291 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24292 1, 1);
24293 }
24294
24295 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24296 0);
24297 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24298 wlc_phy_rfctrl_override_nphy_rev7(
24299 pi,
24300 (0x1 << 3), 0,
24301 0x3, 1,
24302 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24303 }
24304 }
24305 } else {
24306 mask = ((0x3 << 12) | (0x3 << 14));
24307 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24308 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24309 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24310
24311 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24312 &pi->tx_rx_cal_phy_saveregs[3]);
24313
24314 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24315 &pi->tx_rx_cal_phy_saveregs[4]);
24316
24317 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24318 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24319 }
24320 }
24321
24322 void
24323 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24324 {
24325 u16 tssi_reg;
24326 s32 temp, pwrindex[2];
24327 s32 idle_tssi[2];
24328 s32 rssi_buf[4];
24329 s32 tssival[2];
24330 u8 tssi_type;
24331
24332 tssi_reg = read_phy_reg(pi, 0x1e9);
24333
24334 temp = (s32) (tssi_reg & 0x3f);
24335 idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24336
24337 temp = (s32) ((tssi_reg >> 8) & 0x3f);
24338 idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24339
24340 tssi_type =
24341 CHSPEC_IS5G(pi->radio_chanspec) ?
24342 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24343
24344 wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24345
24346 tssival[0] = rssi_buf[0] / ((s32) num_samps);
24347 tssival[1] = rssi_buf[2] / ((s32) num_samps);
24348
24349 pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24350 pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24351
24352 if (pwrindex[0] < 0)
24353 pwrindex[0] = 0;
24354 else if (pwrindex[0] > 63)
24355 pwrindex[0] = 63;
24356
24357 if (pwrindex[1] < 0)
24358 pwrindex[1] = 0;
24359 else if (pwrindex[1] > 63)
24360 pwrindex[1] = 63;
24361
24362 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24363 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24364 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24365 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24366 }
24367
24368 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24369 {
24370 int index;
24371 u32 bbmult_scale;
24372 u16 bbmult;
24373 u16 tblentry;
24374
24375 struct nphy_txiqcal_ladder ladder_lo[] = {
24376 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24377 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24378 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24379 };
24380
24381 struct nphy_txiqcal_ladder ladder_iq[] = {
24382 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24383 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24384 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24385 };
24386
24387 bbmult = (core == PHY_CORE_0) ?
24388 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24389 (pi->nphy_txcal_bbmult & 0xff);
24390
24391 for (index = 0; index < 18; index++) {
24392 bbmult_scale = ladder_lo[index].percent * bbmult;
24393 bbmult_scale /= 100;
24394
24395 tblentry =
24396 ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24397 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24398 &tblentry);
24399
24400 bbmult_scale = ladder_iq[index].percent * bbmult;
24401 bbmult_scale /= 100;
24402
24403 tblentry =
24404 ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24405 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24406 16, &tblentry);
24407 }
24408 }
24409
24410 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24411 {
24412 u16 tmp;
24413 tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24414
24415 tmp = (tmp & (0x7f << 8)) >> 8;
24416 return (u8) tmp;
24417 }
24418
24419 static void
24420 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24421 {
24422 mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24423
24424 if (NREV_GT(pi->pubpi.phy_rev, 1))
24425 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24426 }
24427
24428 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24429 {
24430 u16 m0m1;
24431
24432 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24433
24434 return m0m1;
24435 }
24436
24437 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24438 {
24439 u16 m0m1 = (u16) ((m0 << 8) | m1);
24440
24441 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24442 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24443 }
24444
24445 static void
24446 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24447 struct nphy_papd_restore_state *state, u8 core)
24448 {
24449 s32 tone_freq;
24450 u8 off_core;
24451 u16 mixgain = 0;
24452
24453 off_core = core ^ 0x1;
24454 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24455
24456 if (NREV_IS(pi->pubpi.phy_rev, 7)
24457 || NREV_GE(pi->pubpi.phy_rev, 8))
24458 wlc_phy_rfctrl_override_nphy_rev7(
24459 pi, (0x1 << 7),
24460 wlc_phy_read_lpf_bw_ctl_nphy
24461 (pi,
24462 0), 0, 0,
24463 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24464
24465 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24466 if (pi->pubpi.radiorev == 5)
24467 mixgain = (core == 0) ? 0x20 : 0x00;
24468 else if ((pi->pubpi.radiorev == 7)
24469 || (pi->pubpi.radiorev == 8))
24470 mixgain = 0x00;
24471 else if ((pi->pubpi.radiorev <= 4)
24472 || (pi->pubpi.radiorev == 6))
24473 mixgain = 0x00;
24474 } else {
24475 if ((pi->pubpi.radiorev == 4) ||
24476 (pi->pubpi.radiorev == 6))
24477 mixgain = 0x50;
24478 else if ((pi->pubpi.radiorev == 3)
24479 || (pi->pubpi.radiorev == 7)
24480 || (pi->pubpi.radiorev == 8))
24481 mixgain = 0x0;
24482 }
24483
24484 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24485 mixgain, (1 << core), 0,
24486 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24487
24488 wlc_phy_rfctrl_override_1tomany_nphy(
24489 pi,
24490 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24491 1, (1 << core), 0);
24492 wlc_phy_rfctrl_override_1tomany_nphy(
24493 pi,
24494 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24495 0, (1 << off_core), 0);
24496
24497 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24498 0, 0x3, 0,
24499 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24500 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24501 (1 << core), 0,
24502 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24503 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24504 (1 << core), 0,
24505 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24506 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24507 (1 << core), 0,
24508 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24509 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24510 (1 << core), 0,
24511 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24512 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24513 (1 << core), 0,
24514 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24515 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24516 (1 << core), 0,
24517 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24518 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24519 (1 << core), 0,
24520 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24521
24522 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24523 0, (1 << core), 0,
24524 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24525 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24526 (1 << core), 0,
24527 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24528
24529 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24530 0xa6 : 0xa7);
24531 state->afeoverride[core] =
24532 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24533 state->afectrl[off_core] =
24534 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24535 state->afeoverride[off_core] =
24536 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24537
24538 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24539 (0x1 << 2), 0);
24540 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24541 0xa5), (0x1 << 2), (0x1 << 2));
24542
24543 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24544 (0x1 << 2), (0x1 << 2));
24545 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24546 0x8f), (0x1 << 2), (0x1 << 2));
24547
24548 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24549 state->pwrup[core] =
24550 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24551 TXRXCOUPLE_2G_PWRUP);
24552 state->atten[core] =
24553 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24554 TXRXCOUPLE_2G_ATTEN);
24555 state->pwrup[off_core] =
24556 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24557 TXRXCOUPLE_2G_PWRUP);
24558 state->atten[off_core] =
24559 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24560 TXRXCOUPLE_2G_ATTEN);
24561
24562 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24563 TXRXCOUPLE_2G_PWRUP, 0xc);
24564
24565 if ((pi->pubpi.radiorev == 3) ||
24566 (pi->pubpi.radiorev == 4) ||
24567 (pi->pubpi.radiorev == 6))
24568 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24569 TXRXCOUPLE_2G_ATTEN, 0xf0);
24570 else if (pi->pubpi.radiorev == 5)
24571 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24572 TXRXCOUPLE_2G_ATTEN,
24573 (core == 0) ? 0xf7 : 0xf2);
24574 else if ((pi->pubpi.radiorev == 7)
24575 || (pi->pubpi.radiorev == 8))
24576 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24577 TXRXCOUPLE_2G_ATTEN, 0xf0);
24578
24579 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24580 TXRXCOUPLE_2G_PWRUP, 0x0);
24581 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24582 TXRXCOUPLE_2G_ATTEN, 0xff);
24583 } else {
24584 state->pwrup[core] =
24585 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24586 TXRXCOUPLE_5G_PWRUP);
24587 state->atten[core] =
24588 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24589 TXRXCOUPLE_5G_ATTEN);
24590 state->pwrup[off_core] =
24591 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24592 TXRXCOUPLE_5G_PWRUP);
24593 state->atten[off_core] =
24594 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24595 TXRXCOUPLE_5G_ATTEN);
24596
24597 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24598 TXRXCOUPLE_5G_PWRUP, 0xc);
24599
24600 if ((pi->pubpi.radiorev == 7)
24601 || (pi->pubpi.radiorev == 8))
24602 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24603 TXRXCOUPLE_5G_ATTEN, 0xf4);
24604
24605 else
24606 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24607 TXRXCOUPLE_5G_ATTEN, 0xf0);
24608
24609 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24610 TXRXCOUPLE_5G_PWRUP, 0x0);
24611 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24612 TXRXCOUPLE_5G_ATTEN, 0xff);
24613 }
24614
24615 tone_freq = 4000;
24616
24617 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24618
24619 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24620 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24621
24622 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24623 0x2a4, (0x1 << 13), (1) << 13);
24624
24625 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24626 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24627
24628 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24629 0x2a4, (0x1 << 13), (0) << 13);
24630
24631 } else {
24632
24633 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24634
24635 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24636
24637 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24638
24639 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24640 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24641
24642 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24643 0xa6 : 0xa7);
24644 state->afeoverride[core] =
24645 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24646
24647 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24648 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24649 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24650 0xa5),
24651 (0x1 << 0) |
24652 (0x1 << 1) |
24653 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24654
24655 state->vga_master[core] =
24656 READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24657 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24658 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24659 state->fbmix[core] =
24660 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24661 TXFBMIX_G);
24662 state->intpa_master[core] =
24663 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24664 INTPAG_MASTER);
24665
24666 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24667 0x03);
24668 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24669 INTPAG_MASTER, 0x04);
24670 } else {
24671 state->fbmix[core] =
24672 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24673 TXFBMIX_A);
24674 state->intpa_master[core] =
24675 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24676 INTPAA_MASTER);
24677
24678 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24679 0x03);
24680 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24681 INTPAA_MASTER, 0x04);
24682
24683 }
24684
24685 tone_freq = 4000;
24686
24687 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24688
24689 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24690 0x29b, (0x1 << 0), (1) << 0);
24691
24692 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24693 0x29b, (0x1 << 0), (0) << 0);
24694
24695 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24696 }
24697 }
24698
24699 static void
24700 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24701 struct nphy_papd_restore_state *state)
24702 {
24703 u8 core;
24704
24705 wlc_phy_stopplayback_nphy(pi);
24706
24707 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24708
24709 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24710
24711 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24712 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24713 TXRXCOUPLE_2G_PWRUP, 0);
24714 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24715 TXRXCOUPLE_2G_ATTEN,
24716 state->atten[core]);
24717 } else {
24718 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24719 TXRXCOUPLE_5G_PWRUP, 0);
24720 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24721 TXRXCOUPLE_5G_ATTEN,
24722 state->atten[core]);
24723 }
24724 }
24725
24726 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24727 wlc_phy_rfctrl_override_nphy_rev7(
24728 pi, (0x1 << 2),
24729 1, 0x3, 0,
24730 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24731 else
24732 wlc_phy_rfctrl_override_nphy_rev7(
24733 pi, (0x1 << 2),
24734 0, 0x3, 1,
24735 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24736
24737 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24738 0, 0x3, 1,
24739 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24740 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24741 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24742 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24743 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24744 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24745 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24746 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24747 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24748 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24749 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24750 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24751 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24752 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24753 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24754 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24755 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24756 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24757 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24758 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24759 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24760 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24761 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24762 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24763 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24764 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24765 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24766 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24767 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24768 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24769 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24770
24771 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24772
24773 write_phy_reg(pi, (core == PHY_CORE_0) ?
24774 0xa6 : 0xa7, state->afectrl[core]);
24775 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24776 0xa5, state->afeoverride[core]);
24777 }
24778
24779 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24780 (state->mm & 0xff));
24781
24782 if (NREV_IS(pi->pubpi.phy_rev, 7)
24783 || NREV_GE(pi->pubpi.phy_rev, 8))
24784 wlc_phy_rfctrl_override_nphy_rev7(
24785 pi, (0x1 << 7), 0, 0,
24786 1,
24787 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24788 } else {
24789 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24790 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24791 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24792
24793 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24794 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24795
24796 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24797
24798 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24799 state->vga_master[core]);
24800 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24801 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24802 TXFBMIX_G, state->fbmix[core]);
24803 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24804 INTPAG_MASTER,
24805 state->intpa_master[core]);
24806 } else {
24807 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24808 TXFBMIX_A, state->fbmix[core]);
24809 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24810 INTPAA_MASTER,
24811 state->intpa_master[core]);
24812 }
24813
24814 write_phy_reg(pi, (core == PHY_CORE_0) ?
24815 0xa6 : 0xa7, state->afectrl[core]);
24816 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24817 0xa5, state->afeoverride[core]);
24818 }
24819
24820 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24821 (state->mm & 0xff));
24822
24823 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24824 }
24825 }
24826
24827 static void
24828 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24829 u32 end)
24830 {
24831 u32 *buf, *src, *dst, sz;
24832
24833 sz = end - start + 1;
24834
24835 buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24836 if (NULL == buf)
24837 return;
24838
24839 src = buf;
24840 dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24841
24842 wlc_phy_table_read_nphy(pi,
24843 (core ==
24844 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24845 NPHY_TBL_ID_EPSILONTBL1),
24846 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24847
24848 do {
24849 u32 phy_a1, phy_a2;
24850 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24851
24852 phy_a1 = end - min(end, (winsz >> 1));
24853 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24854 end + (winsz >> 1));
24855 phy_a3 = phy_a2 - phy_a1 + 1;
24856 phy_a6 = 0;
24857 phy_a7 = 0;
24858
24859 do {
24860 wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24861 &phy_a5);
24862 phy_a6 += phy_a4;
24863 phy_a7 += phy_a5;
24864 } while (phy_a2-- != phy_a1);
24865
24866 phy_a6 /= phy_a3;
24867 phy_a7 /= phy_a3;
24868 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24869 } while (end-- != start);
24870
24871 wlc_phy_table_write_nphy(pi,
24872 (core ==
24873 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24874 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24875
24876 kfree(buf);
24877 }
24878
24879 static void
24880 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24881 enum phy_cal_mode cal_mode, u8 core)
24882 {
24883 u16 phy_a1, phy_a2, phy_a3;
24884 u16 phy_a4, phy_a5;
24885 bool phy_a6;
24886 u8 phy_a7, m[2];
24887 u32 phy_a8 = 0;
24888 struct nphy_txgains phy_a9;
24889
24890 if (NREV_LT(pi->pubpi.phy_rev, 3))
24891 return;
24892
24893 phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24894
24895 phy_a6 = ((cal_mode == CAL_GCTRL)
24896 || (cal_mode == CAL_SOFT)) ? true : false;
24897
24898 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24899
24900 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24901
24902 if (CHSPEC_IS2G(pi->radio_chanspec))
24903 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24904 (phy_a9.txgm[core] << 12) |
24905 (phy_a9.pga[core] << 8) |
24906 (txgains->gains.pad[core] << 3) |
24907 (phy_a9.ipa[core]));
24908 else
24909 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24910 (phy_a9.txgm[core] << 12) |
24911 (txgains->gains.pga[core] << 8) |
24912 (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24913
24914 wlc_phy_rfctrl_override_1tomany_nphy(
24915 pi,
24916 NPHY_REV7_RfctrlOverride_cmd_txgain,
24917 phy_a5, (1 << core), 0);
24918
24919 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24920 if ((pi->pubpi.radiorev <= 4)
24921 || (pi->pubpi.radiorev == 6))
24922 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24923 60 : 79;
24924 else
24925 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24926 45 : 64;
24927 } else {
24928 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24929 }
24930
24931 m[phy_a7] = 0;
24932 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24933
24934 phy_a2 = 63;
24935
24936 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24937 if ((pi->pubpi.radiorev == 4)
24938 || (pi->pubpi.radiorev == 6)) {
24939 phy_a1 = 30;
24940 phy_a3 = 30;
24941 } else {
24942 phy_a1 = 25;
24943 phy_a3 = 25;
24944 }
24945 } else {
24946 if ((pi->pubpi.radiorev == 5)
24947 || (pi->pubpi.radiorev == 7)
24948 || (pi->pubpi.radiorev == 8)) {
24949 phy_a1 = 25;
24950 phy_a3 = 25;
24951 } else {
24952 phy_a1 = 35;
24953 phy_a3 = 35;
24954 }
24955 }
24956
24957 if (cal_mode == CAL_GCTRL) {
24958 if ((pi->pubpi.radiorev == 5)
24959 && (CHSPEC_IS2G(pi->radio_chanspec)))
24960 phy_a1 = 55;
24961 else if (((pi->pubpi.radiorev == 7) &&
24962 (CHSPEC_IS2G(pi->radio_chanspec))) ||
24963 ((pi->pubpi.radiorev == 8) &&
24964 (CHSPEC_IS2G(pi->radio_chanspec))))
24965 phy_a1 = 60;
24966 else
24967 phy_a1 = 63;
24968
24969 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24970
24971 phy_a1 = 35;
24972 phy_a3 = 35;
24973 }
24974
24975 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24976 0x29b, (0x1 << 0), (1) << 0);
24977
24978 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24979 0x29b, (0x1 << 0), (0) << 0);
24980
24981 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24982 0x2a4, (0x1 << 13), (1) << 13);
24983
24984 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24985 0x2a4, (0x1 << 13), (0) << 13);
24986
24987 write_phy_reg(pi, 0x2a1, 0x80);
24988 write_phy_reg(pi, 0x2a2, 0x100);
24989
24990 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24991 0x2a4, (0x7 << 4), (11) << 4);
24992
24993 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24994 0x2a4, (0x7 << 8), (11) << 8);
24995
24996 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24997 0x2a4, (0x7 << 0), (0x3) << 0);
24998
24999 write_phy_reg(pi, 0x2e5, 0x20);
25000
25001 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25002
25003 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25004
25005 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25006
25007 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25008 1, ((core == 0) ? 1 : 2), 0,
25009 NPHY_REV7_RFCTRLOVERRIDE_ID0);
25010 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25011 0, ((core == 0) ? 2 : 1), 0,
25012 NPHY_REV7_RFCTRLOVERRIDE_ID0);
25013
25014 write_phy_reg(pi, 0x2be, 1);
25015 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25016
25017 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
25018 0, 0x3, 0,
25019 NPHY_REV7_RFCTRLOVERRIDE_ID0);
25020
25021 wlc_phy_table_write_nphy(pi,
25022 (core ==
25023 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25024 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25025 32, &phy_a8);
25026
25027 if (cal_mode != CAL_GCTRL) {
25028 if (CHSPEC_IS5G(pi->radio_chanspec))
25029 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
25030 }
25031
25032 wlc_phy_rfctrl_override_1tomany_nphy(
25033 pi,
25034 NPHY_REV7_RfctrlOverride_cmd_txgain,
25035 phy_a5, (1 << core), 1);
25036
25037 } else {
25038
25039 if (txgains) {
25040 if (txgains->useindex) {
25041 phy_a4 = 15 - ((txgains->index) >> 3);
25042 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25043 if (NREV_GE(pi->pubpi.phy_rev, 6))
25044 phy_a5 = 0x00f7 | (phy_a4 << 8);
25045
25046 else
25047 if (NREV_IS(pi->pubpi.phy_rev, 5))
25048 phy_a5 = 0x10f7 | (phy_a4 << 8);
25049 else
25050 phy_a5 = 0x50f7 | (phy_a4 << 8);
25051 } else {
25052 phy_a5 = 0x70f7 | (phy_a4 << 8);
25053 }
25054 wlc_phy_rfctrl_override_nphy(pi,
25055 (0x1 << 13),
25056 phy_a5,
25057 (1 << core), 0);
25058 } else {
25059 wlc_phy_rfctrl_override_nphy(pi,
25060 (0x1 << 13),
25061 0x5bf7,
25062 (1 << core), 0);
25063 }
25064 }
25065
25066 if (CHSPEC_IS2G(pi->radio_chanspec))
25067 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
25068 else
25069 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25070
25071 m[phy_a7] = 0;
25072 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25073
25074 phy_a2 = 63;
25075
25076 if (cal_mode == CAL_FULL) {
25077 phy_a1 = 25;
25078 phy_a3 = 25;
25079 } else if (cal_mode == CAL_SOFT) {
25080 phy_a1 = 25;
25081 phy_a3 = 25;
25082 } else if (cal_mode == CAL_GCTRL) {
25083 phy_a1 = 63;
25084 phy_a3 = 25;
25085 } else {
25086
25087 phy_a1 = 25;
25088 phy_a3 = 25;
25089 }
25090
25091 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25092 0x29b, (0x1 << 0), (1) << 0);
25093
25094 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25095 0x29b, (0x1 << 0), (0) << 0);
25096
25097 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25098 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25099 0x2a4, (0x1 << 13), (1) << 13);
25100
25101 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25102 0x2a4, (0x1 << 13), (0) << 13);
25103
25104 write_phy_reg(pi, 0x2a1, 0x20);
25105 write_phy_reg(pi, 0x2a2, 0x60);
25106
25107 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25108 0x2a4, (0xf << 4), (9) << 4);
25109
25110 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25111 0x2a4, (0xf << 8), (9) << 8);
25112
25113 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25114 0x2a4, (0xf << 0), (0x2) << 0);
25115
25116 write_phy_reg(pi, 0x2e5, 0x20);
25117 } else {
25118 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25119 0x2a4, (0x1 << 11), (1) << 11);
25120
25121 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25122 0x2a4, (0x1 << 11), (0) << 11);
25123
25124 write_phy_reg(pi, 0x2a1, 0x80);
25125 write_phy_reg(pi, 0x2a2, 0x600);
25126
25127 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25128 0x2a4, (0x7 << 4), (0) << 4);
25129
25130 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25131 0x2a4, (0x7 << 8), (0) << 8);
25132
25133 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25134 0x2a4, (0x7 << 0), (0x3) << 0);
25135
25136 mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25137
25138 }
25139
25140 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25141
25142 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25143
25144 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25145
25146 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25147
25148 write_phy_reg(pi, 0x2be, 1);
25149 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25150
25151 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25152
25153 wlc_phy_table_write_nphy(pi,
25154 (core ==
25155 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25156 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25157 32, &phy_a8);
25158
25159 if (cal_mode != CAL_GCTRL)
25160 wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25161 }
25162 }
25163
25164 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25165 {
25166 int phy_a1;
25167 int phy_a2;
25168 bool phy_a3;
25169 struct nphy_ipa_txcalgains phy_a4;
25170 bool phy_a5 = false;
25171 bool phy_a6 = true;
25172 s32 phy_a7, phy_a8;
25173 u32 phy_a9;
25174 int phy_a10;
25175 bool phy_a11 = false;
25176 int phy_a12;
25177 u8 phy_a13 = 0;
25178 u8 phy_a14;
25179 u8 *phy_a15 = NULL;
25180
25181 phy_a4.useindex = true;
25182 phy_a12 = start_gain;
25183
25184 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25185
25186 phy_a2 = 20;
25187 phy_a1 = 1;
25188
25189 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25190 if (pi->pubpi.radiorev == 5) {
25191
25192 phy_a15 = pad_gain_codes_used_2057rev5;
25193 phy_a13 =
25194 ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25195
25196 } else if ((pi->pubpi.radiorev == 7)
25197 || (pi->pubpi.radiorev == 8)) {
25198
25199 phy_a15 = pad_gain_codes_used_2057rev7;
25200 phy_a13 =
25201 ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25202
25203 } else {
25204
25205 phy_a15 = pad_all_gain_codes_2057;
25206 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25207 1;
25208 }
25209
25210 } else {
25211
25212 phy_a15 = pga_all_gain_codes_2057;
25213 phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25214 }
25215
25216 phy_a14 = 0;
25217
25218 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25219 if (CHSPEC_IS2G(pi->radio_chanspec))
25220 phy_a4.gains.pad[core] =
25221 (u16) phy_a15[phy_a12];
25222 else
25223 phy_a4.gains.pga[core] =
25224 (u16) phy_a15[phy_a12];
25225
25226 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25227
25228 wlc_phy_table_read_nphy(pi,
25229 (core ==
25230 PHY_CORE_0 ?
25231 NPHY_TBL_ID_EPSILONTBL0 :
25232 NPHY_TBL_ID_EPSILONTBL1), 1,
25233 63, 32, &phy_a9);
25234
25235 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25236
25237 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25238 (phy_a8 == 4095) || (phy_a8 == -4096));
25239
25240 if (!phy_a6 && (phy_a3 != phy_a5)) {
25241 if (!phy_a3)
25242 phy_a12 -= (u8) phy_a1;
25243
25244 phy_a11 = true;
25245 break;
25246 }
25247
25248 if (phy_a3)
25249 phy_a12 += (u8) phy_a1;
25250 else
25251 phy_a12 -= (u8) phy_a1;
25252
25253 if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25254 if (phy_a12 < phy_a14)
25255 phy_a12 = phy_a14;
25256 else
25257 phy_a12 = phy_a13;
25258
25259 phy_a11 = true;
25260 break;
25261 }
25262
25263 phy_a6 = false;
25264 phy_a5 = phy_a3;
25265 }
25266
25267 } else {
25268 phy_a2 = 10;
25269 phy_a1 = 8;
25270 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25271 phy_a4.index = (u8) phy_a12;
25272 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25273
25274 wlc_phy_table_read_nphy(pi,
25275 (core ==
25276 PHY_CORE_0 ?
25277 NPHY_TBL_ID_EPSILONTBL0 :
25278 NPHY_TBL_ID_EPSILONTBL1), 1,
25279 63, 32, &phy_a9);
25280
25281 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25282
25283 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25284 (phy_a8 == 4095) || (phy_a8 == -4096));
25285
25286 if (!phy_a6 && (phy_a3 != phy_a5)) {
25287 if (!phy_a3)
25288 phy_a12 -= (u8) phy_a1;
25289
25290 phy_a11 = true;
25291 break;
25292 }
25293
25294 if (phy_a3)
25295 phy_a12 += (u8) phy_a1;
25296 else
25297 phy_a12 -= (u8) phy_a1;
25298
25299 if ((phy_a12 < 0) || (phy_a12 > 127)) {
25300 if (phy_a12 < 0)
25301 phy_a12 = 0;
25302 else
25303 phy_a12 = 127;
25304
25305 phy_a11 = true;
25306 break;
25307 }
25308
25309 phy_a6 = false;
25310 phy_a5 = phy_a3;
25311 }
25312
25313 }
25314
25315 if (NREV_GE(pi->pubpi.phy_rev, 7))
25316 return (u8) phy_a15[phy_a12];
25317 else
25318 return (u8) phy_a12;
25319
25320 }
25321
25322 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25323 {
25324 struct nphy_ipa_txcalgains phy_b1[2];
25325 struct nphy_papd_restore_state phy_b2;
25326 bool phy_b3;
25327 u8 phy_b4;
25328 u8 phy_b5;
25329 s16 phy_b6, phy_b7, phy_b8;
25330 u16 phy_b9;
25331 s16 phy_b10, phy_b11, phy_b12;
25332
25333 phy_b11 = 0;
25334 phy_b12 = 0;
25335 phy_b7 = 0;
25336 phy_b8 = 0;
25337 phy_b6 = 0;
25338
25339 if (pi->nphy_papd_skip == 1)
25340 return;
25341
25342 phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25343 MCTL_EN_MAC));
25344 if (!phy_b3)
25345 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25346
25347 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25348
25349 pi->nphy_force_papd_cal = false;
25350
25351 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25352 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25353 wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25354
25355 pi->nphy_papd_last_cal = pi->sh->now;
25356 pi->nphy_papd_recal_counter++;
25357
25358 phy_b4 = pi->nphy_txpwrctrl;
25359 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25360
25361 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25362 nphy_papd_scaltbl);
25363 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25364 nphy_papd_scaltbl);
25365
25366 phy_b9 = read_phy_reg(pi, 0x01);
25367 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25368
25369 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25370 s32 i, val = 0;
25371 for (i = 0; i < 64; i++)
25372 wlc_phy_table_write_nphy(pi,
25373 ((phy_b5 ==
25374 PHY_CORE_0) ?
25375 NPHY_TBL_ID_EPSILONTBL0 :
25376 NPHY_TBL_ID_EPSILONTBL1), 1,
25377 i, 32, &val);
25378 }
25379
25380 wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25381
25382 phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25383 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25384 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25385
25386 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25387 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25388 if ((pi->pubpi.radiorev == 3)
25389 || (pi->pubpi.radiorev == 4)
25390 || (pi->pubpi.radiorev == 6)) {
25391 pi->nphy_papd_cal_gain_index[phy_b5] =
25392 23;
25393 } else if (pi->pubpi.radiorev == 5) {
25394 pi->nphy_papd_cal_gain_index[phy_b5] =
25395 0;
25396 pi->nphy_papd_cal_gain_index[phy_b5] =
25397 wlc_phy_a3_nphy(
25398 pi,
25399 pi->
25400 nphy_papd_cal_gain_index
25401 [phy_b5],
25402 phy_b5);
25403
25404 } else if ((pi->pubpi.radiorev == 7)
25405 || (pi->pubpi.radiorev == 8)) {
25406
25407 pi->nphy_papd_cal_gain_index[phy_b5] =
25408 0;
25409 pi->nphy_papd_cal_gain_index[phy_b5] =
25410 wlc_phy_a3_nphy(
25411 pi,
25412 pi->
25413 nphy_papd_cal_gain_index
25414 [phy_b5],
25415 phy_b5);
25416
25417 }
25418
25419 phy_b1[phy_b5].gains.pad[phy_b5] =
25420 pi->nphy_papd_cal_gain_index[phy_b5];
25421
25422 } else {
25423 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25424 pi->nphy_papd_cal_gain_index[phy_b5] =
25425 wlc_phy_a3_nphy(
25426 pi,
25427 pi->
25428 nphy_papd_cal_gain_index
25429 [phy_b5], phy_b5);
25430 phy_b1[phy_b5].gains.pga[phy_b5] =
25431 pi->nphy_papd_cal_gain_index[phy_b5];
25432 }
25433 } else {
25434 phy_b1[phy_b5].useindex = true;
25435 phy_b1[phy_b5].index = 16;
25436 phy_b1[phy_b5].index =
25437 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25438 phy_b5);
25439
25440 pi->nphy_papd_cal_gain_index[phy_b5] =
25441 15 - ((phy_b1[phy_b5].index) >> 3);
25442 }
25443
25444 switch (pi->nphy_papd_cal_type) {
25445 case 0:
25446 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25447 break;
25448 case 1:
25449 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25450 break;
25451 }
25452
25453 if (NREV_GE(pi->pubpi.phy_rev, 7))
25454 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25455 }
25456
25457 if (NREV_LT(pi->pubpi.phy_rev, 7))
25458 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25459
25460 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25461 int eps_offset = 0;
25462
25463 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25464 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25465 if (pi->pubpi.radiorev == 3)
25466 eps_offset = -2;
25467 else if (pi->pubpi.radiorev == 5)
25468 eps_offset = 3;
25469 else
25470 eps_offset = -1;
25471 } else {
25472 eps_offset = 2;
25473 }
25474
25475 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25476 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25477 phy_b10 = 0;
25478 if ((pi->pubpi.radiorev == 3) ||
25479 (pi->pubpi.radiorev == 4) ||
25480 (pi->pubpi.radiorev == 6)) {
25481 phy_b12 = -(
25482 nphy_papd_padgain_dlt_2g_2057rev3n4
25483 [phy_b8] + 1) / 2;
25484 phy_b10 = -1;
25485 } else if (pi->pubpi.radiorev == 5) {
25486 phy_b12 = -(
25487 nphy_papd_padgain_dlt_2g_2057rev5
25488 [phy_b8] + 1) / 2;
25489 } else if ((pi->pubpi.radiorev == 7) ||
25490 (pi->pubpi.radiorev == 8)) {
25491 phy_b12 = -(
25492 nphy_papd_padgain_dlt_2g_2057rev7
25493 [phy_b8] + 1) / 2;
25494 }
25495 } else {
25496 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25497 if ((pi->pubpi.radiorev == 3) ||
25498 (pi->pubpi.radiorev == 4) ||
25499 (pi->pubpi.radiorev == 6))
25500 phy_b11 =
25501 -(nphy_papd_pgagain_dlt_5g_2057
25502 [phy_b7]
25503 + 1) / 2;
25504 else if ((pi->pubpi.radiorev == 7)
25505 || (pi->pubpi.radiorev == 8))
25506 phy_b11 = -(
25507 nphy_papd_pgagain_dlt_5g_2057rev7
25508 [phy_b7] + 1) / 2;
25509
25510 phy_b10 = -9;
25511 }
25512
25513 if (CHSPEC_IS2G(pi->radio_chanspec))
25514 phy_b6 =
25515 -60 + 27 + eps_offset + phy_b12 +
25516 phy_b10;
25517 else
25518 phy_b6 =
25519 -60 + 27 + eps_offset + phy_b11 +
25520 phy_b10;
25521
25522 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25523 0x29c, (0x1ff << 7), (phy_b6) << 7);
25524
25525 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25526 } else {
25527 if (NREV_LT(pi->pubpi.phy_rev, 5))
25528 eps_offset = 4;
25529 else
25530 eps_offset = 2;
25531
25532 phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25533
25534 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25535 phy_b11 =
25536 -(nphy_papd_pga_gain_delta_ipa_2g[
25537 phy_b7] +
25538 1) / 2;
25539 phy_b10 = 0;
25540 } else {
25541 phy_b11 =
25542 -(nphy_papd_pga_gain_delta_ipa_5g[
25543 phy_b7] +
25544 1) / 2;
25545 phy_b10 = -9;
25546 }
25547
25548 phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25549
25550 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25551 0x29c, (0x1ff << 7), (phy_b6) << 7);
25552
25553 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25554 }
25555 }
25556
25557 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25558 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25559
25560 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25561 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25562
25563 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25564 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25565 0x2a4, (0x1 << 13), (0) << 13);
25566
25567 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25568 0x2a4, (0x1 << 13), (0) << 13);
25569
25570 } else {
25571 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25572 0x2a4, (0x1 << 11), (0) << 11);
25573
25574 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25575 0x2a4, (0x1 << 11), (0) << 11);
25576
25577 }
25578 pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25579
25580 write_phy_reg(pi, 0x01, phy_b9);
25581
25582 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25583
25584 wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25585 if (phy_b4 == PHY_TPC_HW_OFF) {
25586 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25587 (s8) (pi->nphy_txpwrindex[0].
25588 index_internal), false);
25589 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25590 (s8) (pi->nphy_txpwrindex[1].
25591 index_internal), false);
25592 }
25593
25594 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25595
25596 if (!phy_b3)
25597 wlapi_enable_mac(pi->sh->physhim);
25598 }
25599
25600 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25601 {
25602 struct nphy_txgains target_gain;
25603 u8 tx_pwr_ctrl_state;
25604 bool fullcal = true;
25605 bool restore_tx_gain = false;
25606 bool mphase;
25607
25608 if (PHY_MUTED(pi))
25609 return;
25610
25611 if (caltype == PHY_PERICAL_AUTO)
25612 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25613 else if (caltype == PHY_PERICAL_PARTIAL)
25614 fullcal = false;
25615
25616 if (pi->cal_type_override != PHY_PERICAL_AUTO)
25617 fullcal =
25618 (pi->cal_type_override ==
25619 PHY_PERICAL_FULL) ? true : false;
25620
25621 if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25622 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25623 wlc_phy_cal_perical_mphase_restart(pi);
25624 }
25625
25626 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25627 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25628
25629 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25630
25631 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25632
25633 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25634 (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25635 pi->nphy_cal_orig_pwr_idx[0] =
25636 (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25637 pi->nphy_cal_orig_pwr_idx[1] =
25638 (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25639
25640 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25641 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25642 0x110, 16,
25643 pi->nphy_cal_orig_tx_gain);
25644 } else {
25645 pi->nphy_cal_orig_tx_gain[0] = 0;
25646 pi->nphy_cal_orig_tx_gain[1] = 0;
25647 }
25648 }
25649 target_gain = wlc_phy_get_tx_gain_nphy(pi);
25650 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25651 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25652
25653 if (pi->antsel_type == ANTSEL_2x3)
25654 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25655
25656 mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25657 if (!mphase) {
25658
25659 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25660 wlc_phy_precal_txgain_nphy(pi);
25661 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25662 restore_tx_gain = true;
25663
25664 target_gain = pi->nphy_cal_target_gain;
25665 }
25666 if (0 ==
25667 wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25668 mphase)) {
25669 if (PHY_IPA(pi))
25670 wlc_phy_a4(pi, true);
25671
25672 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25673 wlapi_enable_mac(pi->sh->physhim);
25674 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25675 10000);
25676 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25677 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25678
25679 if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25680 (pi->first_cal_after_assoc ||
25681 (pi->cal_type_override ==
25682 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25683 wlc_phy_savecal_nphy(pi);
25684
25685 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25686
25687 pi->nphy_perical_last = pi->sh->now;
25688 }
25689 }
25690 if (caltype != PHY_PERICAL_AUTO)
25691 wlc_phy_rssi_cal_nphy(pi);
25692
25693 if (pi->first_cal_after_assoc
25694 || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25695 pi->first_cal_after_assoc = false;
25696 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25697 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25698 }
25699
25700 if (NREV_GE(pi->pubpi.phy_rev, 3))
25701 wlc_phy_radio205x_vcocal_nphy(pi);
25702 } else {
25703 switch (pi->mphase_cal_phase_id) {
25704 case MPHASE_CAL_STATE_INIT:
25705 pi->nphy_perical_last = pi->sh->now;
25706 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25707
25708 if (NREV_GE(pi->pubpi.phy_rev, 3))
25709 wlc_phy_precal_txgain_nphy(pi);
25710
25711 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25712 pi->mphase_cal_phase_id++;
25713 break;
25714
25715 case MPHASE_CAL_STATE_TXPHASE0:
25716 case MPHASE_CAL_STATE_TXPHASE1:
25717 case MPHASE_CAL_STATE_TXPHASE2:
25718 case MPHASE_CAL_STATE_TXPHASE3:
25719 case MPHASE_CAL_STATE_TXPHASE4:
25720 case MPHASE_CAL_STATE_TXPHASE5:
25721 if ((pi->radar_percal_mask & 0x10) != 0)
25722 pi->nphy_rxcal_active = true;
25723
25724 if (wlc_phy_cal_txiqlo_nphy
25725 (pi, pi->nphy_cal_target_gain, fullcal,
25726 true) != 0) {
25727
25728 wlc_phy_cal_perical_mphase_reset(pi);
25729 break;
25730 }
25731
25732 if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25733 (pi->mphase_cal_phase_id ==
25734 MPHASE_CAL_STATE_TXPHASE4))
25735 pi->mphase_cal_phase_id += 2;
25736 else
25737 pi->mphase_cal_phase_id++;
25738 break;
25739
25740 case MPHASE_CAL_STATE_PAPDCAL:
25741 if ((pi->radar_percal_mask & 0x2) != 0)
25742 pi->nphy_rxcal_active = true;
25743
25744 if (PHY_IPA(pi))
25745 wlc_phy_a4(pi, true);
25746
25747 pi->mphase_cal_phase_id++;
25748 break;
25749
25750 case MPHASE_CAL_STATE_RXCAL:
25751 if ((pi->radar_percal_mask & 0x1) != 0)
25752 pi->nphy_rxcal_active = true;
25753 if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25754 (pi->first_cal_after_assoc ||
25755 (pi->cal_type_override ==
25756 PHY_PERICAL_FULL)) ? 2 : 0,
25757 false) == 0)
25758 wlc_phy_savecal_nphy(pi);
25759
25760 pi->mphase_cal_phase_id++;
25761 break;
25762
25763 case MPHASE_CAL_STATE_RSSICAL:
25764 if ((pi->radar_percal_mask & 0x4) != 0)
25765 pi->nphy_rxcal_active = true;
25766 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25767 wlc_phy_rssi_cal_nphy(pi);
25768
25769 if (NREV_GE(pi->pubpi.phy_rev, 3))
25770 wlc_phy_radio205x_vcocal_nphy(pi);
25771
25772 restore_tx_gain = true;
25773
25774 if (pi->first_cal_after_assoc)
25775 pi->mphase_cal_phase_id++;
25776 else
25777 wlc_phy_cal_perical_mphase_reset(pi);
25778
25779 break;
25780
25781 case MPHASE_CAL_STATE_IDLETSSI:
25782 if ((pi->radar_percal_mask & 0x8) != 0)
25783 pi->nphy_rxcal_active = true;
25784
25785 if (pi->first_cal_after_assoc) {
25786 pi->first_cal_after_assoc = false;
25787 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25788 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25789 }
25790
25791 wlc_phy_cal_perical_mphase_reset(pi);
25792 break;
25793
25794 default:
25795 wlc_phy_cal_perical_mphase_reset(pi);
25796 break;
25797 }
25798 }
25799
25800 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25801 if (restore_tx_gain) {
25802 if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25803
25804 wlc_phy_txpwr_index_nphy(pi, 1,
25805 pi->
25806 nphy_cal_orig_pwr_idx
25807 [0], false);
25808 wlc_phy_txpwr_index_nphy(pi, 2,
25809 pi->
25810 nphy_cal_orig_pwr_idx
25811 [1], false);
25812
25813 pi->nphy_txpwrindex[0].index = -1;
25814 pi->nphy_txpwrindex[1].index = -1;
25815 } else {
25816 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25817 (s8) (pi->
25818 nphy_txpwrindex
25819 [0].
25820 index_internal),
25821 false);
25822 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25823 (s8) (pi->
25824 nphy_txpwrindex
25825 [1].
25826 index_internal),
25827 false);
25828 }
25829 }
25830 }
25831
25832 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25833 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25834 wlapi_enable_mac(pi->sh->physhim);
25835 }
25836
25837 int
25838 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25839 bool fullcal, bool mphase)
25840 {
25841 u16 val;
25842 u16 tbl_buf[11];
25843 u8 cal_cnt;
25844 u16 cal_cmd;
25845 u8 num_cals, max_cal_cmds;
25846 u16 core_no, cal_type;
25847 u16 diq_start = 0;
25848 u8 phy_bw;
25849 u16 max_val;
25850 u16 tone_freq;
25851 u16 gain_save[2];
25852 u16 cal_gain[2];
25853 struct nphy_iqcal_params cal_params[2];
25854 u32 tbl_len;
25855 void *tbl_ptr;
25856 bool ladder_updated[2];
25857 u8 mphase_cal_lastphase = 0;
25858 int bcmerror = 0;
25859 bool phyhang_avoid_state = false;
25860
25861 u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25862 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25863 0x1902,
25864 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25865 0x6407
25866 };
25867
25868 u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25869 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25870 0x3200,
25871 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25872 0x6407
25873 };
25874
25875 u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25876 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25877 0x1202,
25878 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25879 0x4707
25880 };
25881
25882 u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25883 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25884 0x2300,
25885 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25886 0x4707
25887 };
25888
25889 u16 tbl_tx_iqlo_cal_startcoefs[] = {
25890 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25891 0x0000
25892 };
25893
25894 u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25895 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25896 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25897 };
25898
25899 u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25900 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25901 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25902 };
25903
25904 u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25905 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25906 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25907 0x0000
25908 };
25909
25910 u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25911 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25912 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25913 };
25914
25915 u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25916 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25917 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25918 };
25919
25920 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25921
25922 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25923 phyhang_avoid_state = pi->phyhang_avoid;
25924 pi->phyhang_avoid = false;
25925 }
25926
25927 if (CHSPEC_IS40(pi->radio_chanspec))
25928 phy_bw = 40;
25929 else
25930 phy_bw = 20;
25931
25932 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25933
25934 for (core_no = 0; core_no <= 1; core_no++) {
25935 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25936 &cal_params[core_no]);
25937 cal_gain[core_no] = cal_params[core_no].cal_gain;
25938 }
25939
25940 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25941
25942 wlc_phy_txcal_radio_setup_nphy(pi);
25943
25944 wlc_phy_txcal_physetup_nphy(pi);
25945
25946 ladder_updated[0] = ladder_updated[1] = false;
25947 if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25948 (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25949 && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25950
25951 if (phy_bw == 40) {
25952 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25953 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25954 } else {
25955 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25956 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25957 }
25958 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25959 16, tbl_ptr);
25960
25961 if (phy_bw == 40) {
25962 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25963 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25964 } else {
25965 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25966 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25967 }
25968 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25969 16, tbl_ptr);
25970 }
25971
25972 if (NREV_GE(pi->pubpi.phy_rev, 7))
25973 write_phy_reg(pi, 0xc2, 0x8ad9);
25974 else
25975 write_phy_reg(pi, 0xc2, 0x8aa9);
25976
25977 max_val = 250;
25978 tone_freq = (phy_bw == 20) ? 2500 : 5000;
25979
25980 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25981 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25982 bcmerror = 0;
25983 } else {
25984 bcmerror =
25985 wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25986 false);
25987 }
25988
25989 if (bcmerror == 0) {
25990
25991 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25992 tbl_ptr = pi->mphase_txcal_bestcoeffs;
25993 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25994 if (NREV_LT(pi->pubpi.phy_rev, 3))
25995 tbl_len -= 2;
25996 } else {
25997 if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25998
25999 tbl_ptr = pi->nphy_txiqlocal_bestc;
26000 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26001 if (NREV_LT(pi->pubpi.phy_rev, 3))
26002 tbl_len -= 2;
26003 } else {
26004
26005 fullcal = true;
26006
26007 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26008 tbl_ptr =
26009 tbl_tx_iqlo_cal_startcoefs_nphyrev3;
26010 tbl_len = ARRAY_SIZE(
26011 tbl_tx_iqlo_cal_startcoefs_nphyrev3);
26012 } else {
26013 tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
26014 tbl_len = ARRAY_SIZE(
26015 tbl_tx_iqlo_cal_startcoefs);
26016 }
26017 }
26018 }
26019 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
26020 16, tbl_ptr);
26021
26022 if (fullcal) {
26023 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26024 ARRAY_SIZE(
26025 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
26026 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
26027 } else {
26028 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26029 ARRAY_SIZE(
26030 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
26031 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
26032 }
26033
26034 if (mphase) {
26035 cal_cnt = pi->mphase_txcal_cmdidx;
26036 if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
26037 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
26038 else
26039 num_cals = max_cal_cmds;
26040 } else {
26041 cal_cnt = 0;
26042 num_cals = max_cal_cmds;
26043 }
26044
26045 for (; cal_cnt < num_cals; cal_cnt++) {
26046
26047 if (fullcal) {
26048 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26049 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
26050 [cal_cnt] :
26051 tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
26052 } else {
26053 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26054 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
26055 cal_cnt]
26056 : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
26057 }
26058
26059 core_no = ((cal_cmd & 0x3000) >> 12);
26060 cal_type = ((cal_cmd & 0x0F00) >> 8);
26061
26062 if (NREV_GE(pi->pubpi.phy_rev, 6) ||
26063 (NREV_IS(pi->pubpi.phy_rev, 5) &&
26064 PHY_IPA(pi)
26065 && (CHSPEC_IS2G(pi->radio_chanspec)))) {
26066 if (!ladder_updated[core_no]) {
26067 wlc_phy_update_txcal_ladder_nphy(
26068 pi,
26069 core_no);
26070 ladder_updated[core_no] = true;
26071 }
26072 }
26073
26074 val =
26075 (cal_params[core_no].
26076 ncorr[cal_type] << 8) | NPHY_N_GCTL;
26077 write_phy_reg(pi, 0xc1, val);
26078
26079 if ((cal_type == 1) || (cal_type == 3)
26080 || (cal_type == 4)) {
26081
26082 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26083 1, 69 + core_no, 16,
26084 tbl_buf);
26085
26086 diq_start = tbl_buf[0];
26087
26088 tbl_buf[0] = 0;
26089 wlc_phy_table_write_nphy(pi,
26090 NPHY_TBL_ID_IQLOCAL, 1,
26091 69 + core_no, 16,
26092 tbl_buf);
26093 }
26094
26095 write_phy_reg(pi, 0xc0, cal_cmd);
26096
26097 SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26098 20000);
26099 if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26100 "HW error: txiq calib"))
26101 return -EIO;
26102
26103 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26104 tbl_len, 96, 16, tbl_buf);
26105 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26106 tbl_len, 64, 16, tbl_buf);
26107
26108 if ((cal_type == 1) || (cal_type == 3)
26109 || (cal_type == 4)) {
26110
26111 tbl_buf[0] = diq_start;
26112
26113 }
26114
26115 }
26116
26117 if (mphase) {
26118 pi->mphase_txcal_cmdidx = num_cals;
26119 if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26120 pi->mphase_txcal_cmdidx = 0;
26121 }
26122
26123 mphase_cal_lastphase =
26124 (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26125 MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26126
26127 if (!mphase
26128 || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26129
26130 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26131 16, tbl_buf);
26132 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26133 16, tbl_buf);
26134
26135 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26136
26137 tbl_buf[0] = 0;
26138 tbl_buf[1] = 0;
26139 tbl_buf[2] = 0;
26140 tbl_buf[3] = 0;
26141
26142 }
26143 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26144 16, tbl_buf);
26145
26146 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26147 16, tbl_buf);
26148 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26149 16, tbl_buf);
26150
26151 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26152 16, tbl_buf);
26153
26154 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26155 if (NREV_LT(pi->pubpi.phy_rev, 3))
26156 tbl_len -= 2;
26157
26158 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26159 tbl_len, 96, 16,
26160 pi->nphy_txiqlocal_bestc);
26161
26162 pi->nphy_txiqlocal_coeffsvalid = true;
26163 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26164 } else {
26165 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26166 if (NREV_LT(pi->pubpi.phy_rev, 3))
26167 tbl_len -= 2;
26168
26169 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26170 tbl_len, 96, 16,
26171 pi->mphase_txcal_bestcoeffs);
26172 }
26173
26174 wlc_phy_stopplayback_nphy(pi);
26175
26176 write_phy_reg(pi, 0xc2, 0x0000);
26177
26178 }
26179
26180 wlc_phy_txcal_phycleanup_nphy(pi);
26181
26182 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26183 gain_save);
26184
26185 wlc_phy_txcal_radio_cleanup_nphy(pi);
26186
26187 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26188 if (!mphase
26189 || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26190 wlc_phy_tx_iq_war_nphy(pi);
26191 }
26192
26193 if (NREV_GE(pi->pubpi.phy_rev, 4))
26194 pi->phyhang_avoid = phyhang_avoid_state;
26195
26196 wlc_phy_stay_in_carriersearch_nphy(pi, false);
26197
26198 return bcmerror;
26199 }
26200
26201 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26202 {
26203 u16 tbl_buf[7];
26204
26205 if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26206 (pi->nphy_txiqlocal_coeffsvalid)) {
26207 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26208 ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26209
26210 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26211 (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26212 (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26213 (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26214
26215 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26216 16, pi->nphy_txiqlocal_bestc);
26217
26218 tbl_buf[0] = 0;
26219 tbl_buf[1] = 0;
26220 tbl_buf[2] = 0;
26221 tbl_buf[3] = 0;
26222 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26223 16, tbl_buf);
26224
26225 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26226 16,
26227 &pi->nphy_txiqlocal_bestc[5]);
26228
26229 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26230 16,
26231 &pi->nphy_txiqlocal_bestc[5]);
26232 }
26233 }
26234 }
26235
26236 void
26237 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26238 struct nphy_iq_comp *pcomp)
26239 {
26240 if (write) {
26241 write_phy_reg(pi, 0x9a, pcomp->a0);
26242 write_phy_reg(pi, 0x9b, pcomp->b0);
26243 write_phy_reg(pi, 0x9c, pcomp->a1);
26244 write_phy_reg(pi, 0x9d, pcomp->b1);
26245 } else {
26246 pcomp->a0 = read_phy_reg(pi, 0x9a);
26247 pcomp->b0 = read_phy_reg(pi, 0x9b);
26248 pcomp->a1 = read_phy_reg(pi, 0x9c);
26249 pcomp->b1 = read_phy_reg(pi, 0x9d);
26250 }
26251 }
26252
26253 void
26254 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26255 u16 num_samps, u8 wait_time, u8 wait_for_crs)
26256 {
26257 u8 core;
26258
26259 write_phy_reg(pi, 0x12b, num_samps);
26260 mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26261 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26262 (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26263
26264 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26265
26266 SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26267 10000);
26268 if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26269 "HW error: rxiq est"))
26270 return;
26271
26272 if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26273 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26274 est[core].i_pwr =
26275 (read_phy_reg(pi,
26276 NPHY_IqestipwrAccHi(core)) << 16)
26277 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26278 est[core].q_pwr =
26279 (read_phy_reg(pi,
26280 NPHY_IqestqpwrAccHi(core)) << 16)
26281 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26282 est[core].iq_prod =
26283 (read_phy_reg(pi,
26284 NPHY_IqestIqAccHi(core)) << 16) |
26285 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26286 }
26287 }
26288 }
26289
26290 #define CAL_RETRY_CNT 2
26291 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26292 {
26293 u8 curr_core;
26294 struct phy_iq_est est[PHY_CORE_MAX];
26295 struct nphy_iq_comp old_comp, new_comp;
26296 s32 iq = 0;
26297 u32 ii = 0, qq = 0;
26298 s16 iq_nbits, qq_nbits, brsh, arsh;
26299 s32 a, b, temp;
26300 int bcmerror = 0;
26301 uint cal_retry = 0;
26302
26303 if (core_mask == 0x0)
26304 return;
26305
26306 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26307 new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26308 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26309
26310 cal_try:
26311 wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26312
26313 new_comp = old_comp;
26314
26315 for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26316
26317 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26318 iq = est[curr_core].iq_prod;
26319 ii = est[curr_core].i_pwr;
26320 qq = est[curr_core].q_pwr;
26321 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26322 iq = est[curr_core].iq_prod;
26323 ii = est[curr_core].i_pwr;
26324 qq = est[curr_core].q_pwr;
26325 } else {
26326 continue;
26327 }
26328
26329 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26330 bcmerror = -EBADE;
26331 break;
26332 }
26333
26334 iq_nbits = wlc_phy_nbits(iq);
26335 qq_nbits = wlc_phy_nbits(qq);
26336
26337 arsh = 10 - (30 - iq_nbits);
26338 if (arsh >= 0) {
26339 a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26340 temp = (s32) (ii >> arsh);
26341 if (temp == 0) {
26342 bcmerror = -EBADE;
26343 break;
26344 }
26345 } else {
26346 a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26347 temp = (s32) (ii << -arsh);
26348 if (temp == 0) {
26349 bcmerror = -EBADE;
26350 break;
26351 }
26352 }
26353
26354 a /= temp;
26355
26356 brsh = qq_nbits - 31 + 20;
26357 if (brsh >= 0) {
26358 b = (qq << (31 - qq_nbits));
26359 temp = (s32) (ii >> brsh);
26360 if (temp == 0) {
26361 bcmerror = -EBADE;
26362 break;
26363 }
26364 } else {
26365 b = (qq << (31 - qq_nbits));
26366 temp = (s32) (ii << -brsh);
26367 if (temp == 0) {
26368 bcmerror = -EBADE;
26369 break;
26370 }
26371 }
26372 b /= temp;
26373 b -= a * a;
26374 b = (s32) int_sqrt((unsigned long) b);
26375 b -= (1 << 10);
26376
26377 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26378 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26379 new_comp.a0 = (s16) a & 0x3ff;
26380 new_comp.b0 = (s16) b & 0x3ff;
26381 } else {
26382
26383 new_comp.a0 = (s16) b & 0x3ff;
26384 new_comp.b0 = (s16) a & 0x3ff;
26385 }
26386 }
26387 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26388 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26389 new_comp.a1 = (s16) a & 0x3ff;
26390 new_comp.b1 = (s16) b & 0x3ff;
26391 } else {
26392
26393 new_comp.a1 = (s16) b & 0x3ff;
26394 new_comp.b1 = (s16) a & 0x3ff;
26395 }
26396 }
26397 }
26398
26399 if (bcmerror != 0) {
26400 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26401
26402 if (cal_retry < CAL_RETRY_CNT) {
26403 cal_retry++;
26404 goto cal_try;
26405 }
26406
26407 new_comp = old_comp;
26408 }
26409
26410 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26411 }
26412
26413 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26414 {
26415 u16 offtune_val;
26416 u16 bias_g = 0;
26417 u16 bias_a = 0;
26418
26419 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26420 if (rx_core == PHY_CORE_0) {
26421 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26422 pi->tx_rx_cal_radio_saveregs[0] =
26423 read_radio_reg(pi,
26424 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26425 pi->tx_rx_cal_radio_saveregs[1] =
26426 read_radio_reg(pi,
26427 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26428
26429 write_radio_reg(pi,
26430 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26431 0x3);
26432 write_radio_reg(pi,
26433 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26434 0xaf);
26435
26436 } else {
26437 pi->tx_rx_cal_radio_saveregs[0] =
26438 read_radio_reg(pi,
26439 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26440 pi->tx_rx_cal_radio_saveregs[1] =
26441 read_radio_reg(pi,
26442 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26443
26444 write_radio_reg(
26445 pi,
26446 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26447 0x3);
26448 write_radio_reg(
26449 pi,
26450 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26451 0x7f);
26452 }
26453
26454 } else {
26455 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26456 pi->tx_rx_cal_radio_saveregs[0] =
26457 read_radio_reg(pi,
26458 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26459 pi->tx_rx_cal_radio_saveregs[1] =
26460 read_radio_reg(pi,
26461 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26462
26463 write_radio_reg(
26464 pi,
26465 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26466 0x3);
26467 write_radio_reg(
26468 pi,
26469 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26470 0xaf);
26471
26472 } else {
26473 pi->tx_rx_cal_radio_saveregs[0] =
26474 read_radio_reg(pi,
26475 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26476 pi->tx_rx_cal_radio_saveregs[1] =
26477 read_radio_reg(pi,
26478 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26479
26480 write_radio_reg(pi,
26481 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26482 0x3);
26483 write_radio_reg(pi,
26484 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26485 0x7f);
26486 }
26487 }
26488
26489 } else {
26490 if (rx_core == PHY_CORE_0) {
26491 pi->tx_rx_cal_radio_saveregs[0] =
26492 read_radio_reg(pi,
26493 RADIO_2056_TX_RXIQCAL_TXMUX |
26494 RADIO_2056_TX1);
26495 pi->tx_rx_cal_radio_saveregs[1] =
26496 read_radio_reg(pi,
26497 RADIO_2056_RX_RXIQCAL_RXMUX |
26498 RADIO_2056_RX0);
26499
26500 if (pi->pubpi.radiorev >= 5) {
26501 pi->tx_rx_cal_radio_saveregs[2] =
26502 read_radio_reg(pi,
26503 RADIO_2056_RX_RXSPARE2 |
26504 RADIO_2056_RX0);
26505 pi->tx_rx_cal_radio_saveregs[3] =
26506 read_radio_reg(pi,
26507 RADIO_2056_TX_TXSPARE2 |
26508 RADIO_2056_TX1);
26509 }
26510
26511 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26512
26513 if (pi->pubpi.radiorev >= 5) {
26514 pi->tx_rx_cal_radio_saveregs[4] =
26515 read_radio_reg(pi,
26516 RADIO_2056_RX_LNAA_MASTER
26517 | RADIO_2056_RX0);
26518
26519 write_radio_reg(
26520 pi,
26521 RADIO_2056_RX_LNAA_MASTER
26522 | RADIO_2056_RX0, 0x40);
26523
26524 write_radio_reg(pi,
26525 RADIO_2056_TX_TXSPARE2 |
26526 RADIO_2056_TX1, bias_a);
26527
26528 write_radio_reg(pi,
26529 RADIO_2056_RX_RXSPARE2 |
26530 RADIO_2056_RX0, bias_a);
26531 } else {
26532 pi->tx_rx_cal_radio_saveregs[4] =
26533 read_radio_reg(pi,
26534 RADIO_2056_RX_LNAA_TUNE
26535 | RADIO_2056_RX0);
26536
26537 offtune_val =
26538 (pi->tx_rx_cal_radio_saveregs
26539 [2] & 0xF0) >> 8;
26540 offtune_val =
26541 (offtune_val <= 0x7) ? 0xF : 0;
26542
26543 mod_radio_reg(pi,
26544 RADIO_2056_RX_LNAA_TUNE |
26545 RADIO_2056_RX0, 0xF0,
26546 (offtune_val << 8));
26547 }
26548
26549 write_radio_reg(pi,
26550 RADIO_2056_TX_RXIQCAL_TXMUX |
26551 RADIO_2056_TX1, 0x9);
26552 write_radio_reg(pi,
26553 RADIO_2056_RX_RXIQCAL_RXMUX |
26554 RADIO_2056_RX0, 0x9);
26555 } else {
26556 if (pi->pubpi.radiorev >= 5) {
26557 pi->tx_rx_cal_radio_saveregs[4] =
26558 read_radio_reg(
26559 pi,
26560 RADIO_2056_RX_LNAG_MASTER
26561 | RADIO_2056_RX0);
26562
26563 write_radio_reg(
26564 pi,
26565 RADIO_2056_RX_LNAG_MASTER
26566 | RADIO_2056_RX0, 0x40);
26567
26568 write_radio_reg(
26569 pi,
26570 RADIO_2056_TX_TXSPARE2
26571 |
26572 RADIO_2056_TX1, bias_g);
26573
26574 write_radio_reg(
26575 pi,
26576 RADIO_2056_RX_RXSPARE2
26577 |
26578 RADIO_2056_RX0, bias_g);
26579
26580 } else {
26581 pi->tx_rx_cal_radio_saveregs[4] =
26582 read_radio_reg(
26583 pi,
26584 RADIO_2056_RX_LNAG_TUNE
26585 | RADIO_2056_RX0);
26586
26587 offtune_val =
26588 (pi->
26589 tx_rx_cal_radio_saveregs[2] &
26590 0xF0) >> 8;
26591 offtune_val =
26592 (offtune_val <= 0x7) ? 0xF : 0;
26593
26594 mod_radio_reg(pi,
26595 RADIO_2056_RX_LNAG_TUNE |
26596 RADIO_2056_RX0, 0xF0,
26597 (offtune_val << 8));
26598 }
26599
26600 write_radio_reg(pi,
26601 RADIO_2056_TX_RXIQCAL_TXMUX |
26602 RADIO_2056_TX1, 0x6);
26603 write_radio_reg(pi,
26604 RADIO_2056_RX_RXIQCAL_RXMUX |
26605 RADIO_2056_RX0, 0x6);
26606 }
26607
26608 } else {
26609 pi->tx_rx_cal_radio_saveregs[0] =
26610 read_radio_reg(pi,
26611 RADIO_2056_TX_RXIQCAL_TXMUX |
26612 RADIO_2056_TX0);
26613 pi->tx_rx_cal_radio_saveregs[1] =
26614 read_radio_reg(pi,
26615 RADIO_2056_RX_RXIQCAL_RXMUX |
26616 RADIO_2056_RX1);
26617
26618 if (pi->pubpi.radiorev >= 5) {
26619 pi->tx_rx_cal_radio_saveregs[2] =
26620 read_radio_reg(pi,
26621 RADIO_2056_RX_RXSPARE2 |
26622 RADIO_2056_RX1);
26623 pi->tx_rx_cal_radio_saveregs[3] =
26624 read_radio_reg(pi,
26625 RADIO_2056_TX_TXSPARE2 |
26626 RADIO_2056_TX0);
26627 }
26628
26629 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26630
26631 if (pi->pubpi.radiorev >= 5) {
26632 pi->tx_rx_cal_radio_saveregs[4] =
26633 read_radio_reg(
26634 pi,
26635 RADIO_2056_RX_LNAA_MASTER
26636 | RADIO_2056_RX1);
26637
26638 write_radio_reg(
26639 pi,
26640 RADIO_2056_RX_LNAA_MASTER |
26641 RADIO_2056_RX1, 0x40);
26642
26643 write_radio_reg(
26644 pi,
26645 RADIO_2056_TX_TXSPARE2
26646 |
26647 RADIO_2056_TX0, bias_a);
26648
26649 write_radio_reg(
26650 pi,
26651 RADIO_2056_RX_RXSPARE2
26652 |
26653 RADIO_2056_RX1, bias_a);
26654 } else {
26655 pi->tx_rx_cal_radio_saveregs[4] =
26656 read_radio_reg(
26657 pi,
26658 RADIO_2056_RX_LNAA_TUNE
26659 | RADIO_2056_RX1);
26660
26661 offtune_val =
26662 (pi->
26663 tx_rx_cal_radio_saveregs[2] &
26664 0xF0) >> 8;
26665 offtune_val =
26666 (offtune_val <= 0x7) ? 0xF : 0;
26667
26668 mod_radio_reg(pi,
26669 RADIO_2056_RX_LNAA_TUNE |
26670 RADIO_2056_RX1, 0xF0,
26671 (offtune_val << 8));
26672 }
26673
26674 write_radio_reg(pi,
26675 RADIO_2056_TX_RXIQCAL_TXMUX |
26676 RADIO_2056_TX0, 0x9);
26677 write_radio_reg(pi,
26678 RADIO_2056_RX_RXIQCAL_RXMUX |
26679 RADIO_2056_RX1, 0x9);
26680 } else {
26681 if (pi->pubpi.radiorev >= 5) {
26682 pi->tx_rx_cal_radio_saveregs[4] =
26683 read_radio_reg(
26684 pi,
26685 RADIO_2056_RX_LNAG_MASTER
26686 | RADIO_2056_RX1);
26687
26688 write_radio_reg(
26689 pi,
26690 RADIO_2056_RX_LNAG_MASTER
26691 | RADIO_2056_RX1, 0x40);
26692
26693 write_radio_reg(
26694 pi,
26695 RADIO_2056_TX_TXSPARE2
26696 |
26697 RADIO_2056_TX0, bias_g);
26698
26699 write_radio_reg(
26700 pi,
26701 RADIO_2056_RX_RXSPARE2
26702 |
26703 RADIO_2056_RX1, bias_g);
26704 } else {
26705 pi->tx_rx_cal_radio_saveregs[4] =
26706 read_radio_reg(
26707 pi,
26708 RADIO_2056_RX_LNAG_TUNE
26709 | RADIO_2056_RX1);
26710
26711 offtune_val =
26712 (pi->
26713 tx_rx_cal_radio_saveregs[2] &
26714 0xF0) >> 8;
26715 offtune_val =
26716 (offtune_val <= 0x7) ? 0xF : 0;
26717
26718 mod_radio_reg(pi,
26719 RADIO_2056_RX_LNAG_TUNE |
26720 RADIO_2056_RX1, 0xF0,
26721 (offtune_val << 8));
26722 }
26723
26724 write_radio_reg(pi,
26725 RADIO_2056_TX_RXIQCAL_TXMUX |
26726 RADIO_2056_TX0, 0x6);
26727 write_radio_reg(pi,
26728 RADIO_2056_RX_RXIQCAL_RXMUX |
26729 RADIO_2056_RX1, 0x6);
26730 }
26731 }
26732 }
26733 }
26734
26735 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26736 {
26737 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26738 if (rx_core == PHY_CORE_0) {
26739 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26740 write_radio_reg(
26741 pi,
26742 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26743 pi->
26744 tx_rx_cal_radio_saveregs[0]);
26745 write_radio_reg(
26746 pi,
26747 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26748 pi->
26749 tx_rx_cal_radio_saveregs[1]);
26750
26751 } else {
26752 write_radio_reg(
26753 pi,
26754 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26755 pi->
26756 tx_rx_cal_radio_saveregs[0]);
26757 write_radio_reg(
26758 pi,
26759 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26760 pi->
26761 tx_rx_cal_radio_saveregs[1]);
26762 }
26763
26764 } else {
26765 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26766 write_radio_reg(
26767 pi,
26768 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26769 pi->
26770 tx_rx_cal_radio_saveregs[0]);
26771 write_radio_reg(
26772 pi,
26773 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26774 pi->
26775 tx_rx_cal_radio_saveregs[1]);
26776
26777 } else {
26778 write_radio_reg(
26779 pi,
26780 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26781 pi->
26782 tx_rx_cal_radio_saveregs[0]);
26783 write_radio_reg(
26784 pi,
26785 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26786 pi->
26787 tx_rx_cal_radio_saveregs[1]);
26788 }
26789 }
26790
26791 } else {
26792 if (rx_core == PHY_CORE_0) {
26793 write_radio_reg(pi,
26794 RADIO_2056_TX_RXIQCAL_TXMUX |
26795 RADIO_2056_TX1,
26796 pi->tx_rx_cal_radio_saveregs[0]);
26797
26798 write_radio_reg(pi,
26799 RADIO_2056_RX_RXIQCAL_RXMUX |
26800 RADIO_2056_RX0,
26801 pi->tx_rx_cal_radio_saveregs[1]);
26802
26803 if (pi->pubpi.radiorev >= 5) {
26804 write_radio_reg(pi,
26805 RADIO_2056_RX_RXSPARE2 |
26806 RADIO_2056_RX0,
26807 pi->
26808 tx_rx_cal_radio_saveregs[2]);
26809
26810 write_radio_reg(pi,
26811 RADIO_2056_TX_TXSPARE2 |
26812 RADIO_2056_TX1,
26813 pi->
26814 tx_rx_cal_radio_saveregs[3]);
26815 }
26816
26817 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26818 if (pi->pubpi.radiorev >= 5)
26819 write_radio_reg(
26820 pi,
26821 RADIO_2056_RX_LNAA_MASTER
26822 | RADIO_2056_RX0,
26823 pi->
26824 tx_rx_cal_radio_saveregs
26825 [4]);
26826 else
26827 write_radio_reg(
26828 pi,
26829 RADIO_2056_RX_LNAA_TUNE
26830 | RADIO_2056_RX0,
26831 pi->
26832 tx_rx_cal_radio_saveregs
26833 [4]);
26834 } else {
26835 if (pi->pubpi.radiorev >= 5)
26836 write_radio_reg(
26837 pi,
26838 RADIO_2056_RX_LNAG_MASTER
26839 | RADIO_2056_RX0,
26840 pi->
26841 tx_rx_cal_radio_saveregs
26842 [4]);
26843 else
26844 write_radio_reg(
26845 pi,
26846 RADIO_2056_RX_LNAG_TUNE
26847 | RADIO_2056_RX0,
26848 pi->
26849 tx_rx_cal_radio_saveregs
26850 [4]);
26851 }
26852
26853 } else {
26854 write_radio_reg(pi,
26855 RADIO_2056_TX_RXIQCAL_TXMUX |
26856 RADIO_2056_TX0,
26857 pi->tx_rx_cal_radio_saveregs[0]);
26858
26859 write_radio_reg(pi,
26860 RADIO_2056_RX_RXIQCAL_RXMUX |
26861 RADIO_2056_RX1,
26862 pi->tx_rx_cal_radio_saveregs[1]);
26863
26864 if (pi->pubpi.radiorev >= 5) {
26865 write_radio_reg(pi,
26866 RADIO_2056_RX_RXSPARE2 |
26867 RADIO_2056_RX1,
26868 pi->
26869 tx_rx_cal_radio_saveregs[2]);
26870
26871 write_radio_reg(pi,
26872 RADIO_2056_TX_TXSPARE2 |
26873 RADIO_2056_TX0,
26874 pi->
26875 tx_rx_cal_radio_saveregs[3]);
26876 }
26877
26878 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26879 if (pi->pubpi.radiorev >= 5)
26880 write_radio_reg(
26881 pi,
26882 RADIO_2056_RX_LNAA_MASTER
26883 | RADIO_2056_RX1,
26884 pi->
26885 tx_rx_cal_radio_saveregs
26886 [4]);
26887 else
26888 write_radio_reg(
26889 pi,
26890 RADIO_2056_RX_LNAA_TUNE
26891 | RADIO_2056_RX1,
26892 pi->
26893 tx_rx_cal_radio_saveregs
26894 [4]);
26895 } else {
26896 if (pi->pubpi.radiorev >= 5)
26897 write_radio_reg(
26898 pi,
26899 RADIO_2056_RX_LNAG_MASTER
26900 | RADIO_2056_RX1,
26901 pi->
26902 tx_rx_cal_radio_saveregs
26903 [4]);
26904 else
26905 write_radio_reg(
26906 pi,
26907 RADIO_2056_RX_LNAG_TUNE
26908 | RADIO_2056_RX1,
26909 pi->
26910 tx_rx_cal_radio_saveregs
26911 [4]);
26912 }
26913 }
26914 }
26915 }
26916
26917 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26918 {
26919 u8 tx_core;
26920 u16 rx_antval, tx_antval;
26921
26922 if (NREV_GE(pi->pubpi.phy_rev, 7))
26923 tx_core = rx_core;
26924 else
26925 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26926
26927 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26928 pi->tx_rx_cal_phy_saveregs[1] =
26929 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26930 pi->tx_rx_cal_phy_saveregs[2] =
26931 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26932 pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26933 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26934 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26935 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26936 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26937 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26938 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26939 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26940 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26941 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26942 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26943 }
26944
26945 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26946 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26947 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26948 0x29b, (0x1 << 0), (0) << 0);
26949
26950 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26951 0x29b, (0x1 << 0), (0) << 0);
26952
26953 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26954
26955 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26956
26957 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26958
26959 } else {
26960
26961 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26962 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26963 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26964 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26965 }
26966
26967 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26968 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26969 (0x1 << 2), (0x1 << 2));
26970 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26971 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26972 (0x1 << 0) | (0x1 << 1), 0);
26973 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26974 0x8f : 0xa5,
26975 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26976 }
26977
26978 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26979 RADIO_MIMO_CORESEL_CORE1 |
26980 RADIO_MIMO_CORESEL_CORE2);
26981
26982 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26983 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26984 0, 0, 0,
26985 NPHY_REV7_RFCTRLOVERRIDE_ID0);
26986 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26987 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26988 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26989 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26990 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26991 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26992 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26993 NPHY_REV7_RFCTRLOVERRIDE_ID2);
26994 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26995 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26996 if (CHSPEC_IS40(pi->radio_chanspec))
26997 wlc_phy_rfctrl_override_nphy_rev7(
26998 pi,
26999 (0x1 << 7),
27000 2, 0, 0,
27001 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27002 else
27003 wlc_phy_rfctrl_override_nphy_rev7(
27004 pi,
27005 (0x1 << 7),
27006 0, 0, 0,
27007 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27008
27009 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
27010 0, 0, 0,
27011 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27012 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
27013 NPHY_REV7_RFCTRLOVERRIDE_ID1);
27014 } else {
27015 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
27016 }
27017
27018 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
27019
27020 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27021
27022 wlc_phy_rfctrlintc_override_nphy(pi,
27023 NPHY_RfctrlIntc_override_TRSW,
27024 0x1, rx_core + 1);
27025 } else {
27026
27027 if (rx_core == PHY_CORE_0) {
27028 rx_antval = 0x1;
27029 tx_antval = 0x8;
27030 } else {
27031 rx_antval = 0x4;
27032 tx_antval = 0x2;
27033 }
27034
27035 wlc_phy_rfctrlintc_override_nphy(pi,
27036 NPHY_RfctrlIntc_override_TRSW,
27037 rx_antval, rx_core + 1);
27038 wlc_phy_rfctrlintc_override_nphy(pi,
27039 NPHY_RfctrlIntc_override_TRSW,
27040 tx_antval, tx_core + 1);
27041 }
27042 }
27043
27044 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
27045 {
27046
27047 write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
27048 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
27049 pi->tx_rx_cal_phy_saveregs[1]);
27050 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27051 pi->tx_rx_cal_phy_saveregs[2]);
27052 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
27053 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
27054
27055 write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
27056 write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
27057 write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
27058 write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
27059 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27060 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
27061 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
27062 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
27063 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
27064 }
27065
27066 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
27067 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
27068 }
27069
27070 static void
27071 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27072 u16 *rxgain, u8 cal_type)
27073 {
27074
27075 u16 num_samps;
27076 struct phy_iq_est est[PHY_CORE_MAX];
27077 u8 tx_core;
27078 struct nphy_iq_comp save_comp, zero_comp;
27079 u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27080 thresh_pwr = 10000;
27081 s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27082 bool gainctrl_done = false;
27083 u8 mix_tia_gain = 3;
27084 s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27085 s8 curr_gaintbl_index = 3;
27086 u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27087 const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27088 u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27089 int fine_gain_idx;
27090 s8 txpwrindex;
27091 u16 nphy_rxcal_txgain[2];
27092
27093 if (NREV_GE(pi->pubpi.phy_rev, 7))
27094 tx_core = rx_core;
27095 else
27096 tx_core = 1 - rx_core;
27097
27098 num_samps = 1024;
27099 desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27100
27101 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27102 zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27103 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27104
27105 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27106 if (NREV_GE(pi->pubpi.phy_rev, 7))
27107 mix_tia_gain = 3;
27108 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27109 mix_tia_gain = 4;
27110 else
27111 mix_tia_gain = 6;
27112 if (NREV_GE(pi->pubpi.phy_rev, 7))
27113 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27114 else
27115 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27116 } else {
27117 if (NREV_GE(pi->pubpi.phy_rev, 7))
27118 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27119 else
27120 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27121 }
27122
27123 do {
27124
27125 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27126 0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27127 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27128 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27129 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27130 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27131 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27132
27133 if (NREV_GE(pi->pubpi.phy_rev, 7))
27134 wlc_phy_rfctrl_override_1tomany_nphy(
27135 pi,
27136 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27137 ((lpf_biq1 << 12) |
27138 (lpf_biq0 << 8) |
27139 (mix_tia_gain << 4) | (lna2 << 2)
27140 | lna1), 0x3, 0);
27141 else
27142 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27143 ((hpvga << 12) |
27144 (lpf_biq1 << 10) |
27145 (lpf_biq0 << 8) |
27146 (mix_tia_gain << 4) |
27147 (lna2 << 2) | lna1), 0x3,
27148 0);
27149
27150 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27151
27152 if (txpwrindex == -1) {
27153 nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27154 nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27155 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27156 2, 0x110, 16,
27157 nphy_rxcal_txgain);
27158 } else {
27159 wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27160 false);
27161 }
27162
27163 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27164 NPHY_RXCAL_TONEFREQ_40MHz :
27165 NPHY_RXCAL_TONEFREQ_20MHz,
27166 NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27167
27168 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27169 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27170 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27171 curr_pwr = i_pwr + q_pwr;
27172
27173 switch (gainctrl_dirn) {
27174 case NPHY_RXCAL_GAIN_INIT:
27175 if (curr_pwr > thresh_pwr) {
27176 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27177 prev_gaintbl_index = curr_gaintbl_index;
27178 curr_gaintbl_index--;
27179 } else {
27180 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27181 prev_gaintbl_index = curr_gaintbl_index;
27182 curr_gaintbl_index++;
27183 }
27184 break;
27185
27186 case NPHY_RXCAL_GAIN_UP:
27187 if (curr_pwr > thresh_pwr) {
27188 gainctrl_done = true;
27189 optim_pwr = prev_pwr;
27190 optim_gaintbl_index = prev_gaintbl_index;
27191 } else {
27192 prev_gaintbl_index = curr_gaintbl_index;
27193 curr_gaintbl_index++;
27194 }
27195 break;
27196
27197 case NPHY_RXCAL_GAIN_DOWN:
27198 if (curr_pwr > thresh_pwr) {
27199 prev_gaintbl_index = curr_gaintbl_index;
27200 curr_gaintbl_index--;
27201 } else {
27202 gainctrl_done = true;
27203 optim_pwr = curr_pwr;
27204 optim_gaintbl_index = curr_gaintbl_index;
27205 }
27206 break;
27207
27208 default:
27209 break;
27210 }
27211
27212 if ((curr_gaintbl_index < 0) ||
27213 (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27214 gainctrl_done = true;
27215 optim_pwr = curr_pwr;
27216 optim_gaintbl_index = prev_gaintbl_index;
27217 } else {
27218 prev_pwr = curr_pwr;
27219 }
27220
27221 wlc_phy_stopplayback_nphy(pi);
27222 } while (!gainctrl_done);
27223
27224 hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27225 lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27226 lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27227 lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27228 lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27229 txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27230
27231 actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27232 delta_pwr = desired_log2_pwr - actual_log2_pwr;
27233
27234 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27235 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27236
27237 if (fine_gain_idx + (int)lpf_biq0 > 10)
27238 lpf_biq1 = 10 - lpf_biq0;
27239 else
27240 lpf_biq1 = (u16) max(fine_gain_idx, 0);
27241
27242 wlc_phy_rfctrl_override_1tomany_nphy(
27243 pi,
27244 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27245 ((lpf_biq1 << 12) |
27246 (lpf_biq0 << 8) |
27247 (mix_tia_gain << 4) |
27248 (lna2 << 2) | lna1), 0x3,
27249 0);
27250 } else {
27251 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27252 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27253 ((hpvga << 12) |
27254 (lpf_biq1 << 10) |
27255 (lpf_biq0 << 8) |
27256 (mix_tia_gain << 4) |
27257 (lna2 << 2) |
27258 lna1), 0x3, 0);
27259 }
27260
27261 if (rxgain != NULL) {
27262 *rxgain++ = lna1;
27263 *rxgain++ = lna2;
27264 *rxgain++ = mix_tia_gain;
27265 *rxgain++ = lpf_biq0;
27266 *rxgain++ = lpf_biq1;
27267 *rxgain = hpvga;
27268 }
27269
27270 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27271 }
27272
27273 static void
27274 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27275 u8 cal_type)
27276 {
27277 wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27278 }
27279
27280 static u8
27281 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27282 {
27283 u32 target_bws[2] = { 9500, 21000 };
27284 u32 ref_tones[2] = { 3000, 6000 };
27285 u32 target_bw, ref_tone;
27286
27287 u32 target_pwr_ratios[2] = { 28606, 18468 };
27288 u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27289
27290 u16 start_rccal_ovr_val = 128;
27291 u16 txlpf_rccal_lpc_ovr_val = 128;
27292 u16 rxlpf_rccal_hpc_ovr_val = 159;
27293
27294 u16 orig_txlpf_rccal_lpc_ovr_val;
27295 u16 orig_rxlpf_rccal_hpc_ovr_val;
27296 u16 radio_addr_offset_rx;
27297 u16 radio_addr_offset_tx;
27298 u16 orig_dcBypass;
27299 u16 orig_RxStrnFilt40Num[6];
27300 u16 orig_RxStrnFilt40Den[4];
27301 u16 orig_rfctrloverride[2];
27302 u16 orig_rfctrlauxreg[2];
27303 u16 orig_rfctrlrssiothers;
27304 u16 tx_lpf_bw = 4;
27305
27306 u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27307 u16 lpf_hpc = 7, hpvga_hpc = 7;
27308
27309 s8 rccal_stepsize;
27310 u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27311 u32 ref_iq_vals = 0, target_iq_vals = 0;
27312 u16 num_samps, log_num_samps = 10;
27313 struct phy_iq_est est[PHY_CORE_MAX];
27314
27315 if (NREV_GE(pi->pubpi.phy_rev, 7))
27316 return 0;
27317
27318 num_samps = (1 << log_num_samps);
27319
27320 if (CHSPEC_IS40(pi->radio_chanspec)) {
27321 target_bw = target_bws[1];
27322 target_pwr_ratio = target_pwr_ratios[1];
27323 ref_tone = ref_tones[1];
27324 rx_lpf_bw = rx_lpf_bws[1];
27325 } else {
27326 target_bw = target_bws[0];
27327 target_pwr_ratio = target_pwr_ratios[0];
27328 ref_tone = ref_tones[0];
27329 rx_lpf_bw = rx_lpf_bws[0];
27330 }
27331
27332 if (core_idx == 0) {
27333 radio_addr_offset_rx = RADIO_2056_RX0;
27334 radio_addr_offset_tx =
27335 (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27336 } else {
27337 radio_addr_offset_rx = RADIO_2056_RX1;
27338 radio_addr_offset_tx =
27339 (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27340 }
27341
27342 orig_txlpf_rccal_lpc_ovr_val =
27343 read_radio_reg(pi,
27344 (RADIO_2056_TX_TXLPF_RCCAL |
27345 radio_addr_offset_tx));
27346 orig_rxlpf_rccal_hpc_ovr_val =
27347 read_radio_reg(pi,
27348 (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27349 radio_addr_offset_rx));
27350
27351 orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27352
27353 orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27354 orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27355 orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27356 orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27357 orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27358 orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27359 orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27360 orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27361 orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27362 orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27363
27364 orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27365 orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27366 orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27367 orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27368 orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27369
27370 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27371 txlpf_rccal_lpc_ovr_val);
27372
27373 write_radio_reg(pi,
27374 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27375 rxlpf_rccal_hpc_ovr_val);
27376
27377 mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27378
27379 write_phy_reg(pi, 0x267, 0x02d4);
27380 write_phy_reg(pi, 0x268, 0x0000);
27381 write_phy_reg(pi, 0x269, 0x0000);
27382 write_phy_reg(pi, 0x26a, 0x0000);
27383 write_phy_reg(pi, 0x26b, 0x0000);
27384 write_phy_reg(pi, 0x26c, 0x02d4);
27385 write_phy_reg(pi, 0x26d, 0x0000);
27386 write_phy_reg(pi, 0x26e, 0x0000);
27387 write_phy_reg(pi, 0x26f, 0x0000);
27388 write_phy_reg(pi, 0x270, 0x0000);
27389
27390 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27391 or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27392 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27393 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27394
27395 mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27396 (0x7 << 10), (tx_lpf_bw << 10));
27397 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27398 (0x7 << 0), (hpvga_hpc << 0));
27399 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27400 (0x7 << 4), (lpf_hpc << 4));
27401 mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27402 (0x7 << 8), (rx_lpf_bw << 8));
27403
27404 rccal_stepsize = 16;
27405 rccal_val = start_rccal_ovr_val + rccal_stepsize;
27406
27407 while (rccal_stepsize >= 0) {
27408 write_radio_reg(pi,
27409 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27410 radio_addr_offset_rx), rccal_val);
27411
27412 if (rccal_stepsize == 16) {
27413
27414 wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27415 0, 1, false);
27416 udelay(2);
27417
27418 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27419
27420 if (core_idx == 0)
27421 ref_iq_vals =
27422 max_t(u32, (est[0].i_pwr +
27423 est[0].q_pwr) >>
27424 (log_num_samps + 1),
27425 1);
27426 else
27427 ref_iq_vals =
27428 max_t(u32, (est[1].i_pwr +
27429 est[1].q_pwr) >>
27430 (log_num_samps + 1),
27431 1);
27432
27433 wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27434 0, 1, false);
27435 udelay(2);
27436 }
27437
27438 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27439
27440 if (core_idx == 0)
27441 target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27442 (log_num_samps + 1);
27443 else
27444 target_iq_vals =
27445 (est[1].i_pwr +
27446 est[1].q_pwr) >> (log_num_samps + 1);
27447
27448 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27449
27450 if (rccal_stepsize == 0)
27451 rccal_stepsize--;
27452 else if (rccal_stepsize == 1) {
27453 last_rccal_val = rccal_val;
27454 rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27455 last_pwr_ratio = pwr_ratio;
27456 rccal_stepsize--;
27457 } else {
27458 rccal_stepsize = (rccal_stepsize >> 1);
27459 rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27460 rccal_stepsize : (-rccal_stepsize));
27461 }
27462
27463 if (rccal_stepsize == -1) {
27464 best_rccal_val =
27465 (abs((int)last_pwr_ratio -
27466 (int)target_pwr_ratio) <
27467 abs((int)pwr_ratio -
27468 (int)target_pwr_ratio)) ? last_rccal_val :
27469 rccal_val;
27470
27471 if (CHSPEC_IS40(pi->radio_chanspec)) {
27472 if ((best_rccal_val > 140)
27473 || (best_rccal_val < 135))
27474 best_rccal_val = 138;
27475 } else {
27476 if ((best_rccal_val > 142)
27477 || (best_rccal_val < 137))
27478 best_rccal_val = 140;
27479 }
27480
27481 write_radio_reg(pi,
27482 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27483 radio_addr_offset_rx), best_rccal_val);
27484 }
27485 }
27486
27487 wlc_phy_stopplayback_nphy(pi);
27488
27489 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27490 orig_txlpf_rccal_lpc_ovr_val);
27491 write_radio_reg(pi,
27492 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27493 orig_rxlpf_rccal_hpc_ovr_val);
27494
27495 mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27496
27497 write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27498 write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27499 write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27500 write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27501 write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27502 write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27503 write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27504 write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27505 write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27506 write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27507
27508 write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27509 write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27510 write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27511 write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27512 write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27513
27514 pi->nphy_anarxlpf_adjusted = false;
27515
27516 return best_rccal_val - 0x80;
27517 }
27518
27519 #define WAIT_FOR_SCOPE 4000
27520 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27521 struct nphy_txgains target_gain,
27522 u8 cal_type, bool debug)
27523 {
27524 u16 orig_BBConfig;
27525 u8 core_no, rx_core;
27526 u8 best_rccal[2];
27527 u16 gain_save[2];
27528 u16 cal_gain[2];
27529 struct nphy_iqcal_params cal_params[2];
27530 u8 rxcore_state;
27531 s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27532 s8 txlpf_idac;
27533 bool phyhang_avoid_state = false;
27534 bool skip_rxiqcal = false;
27535
27536 orig_BBConfig = read_phy_reg(pi, 0x01);
27537 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27538
27539 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27540
27541 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27542 phyhang_avoid_state = pi->phyhang_avoid;
27543 pi->phyhang_avoid = false;
27544 }
27545
27546 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27547
27548 for (core_no = 0; core_no <= 1; core_no++) {
27549 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27550 &cal_params[core_no]);
27551 cal_gain[core_no] = cal_params[core_no].cal_gain;
27552 }
27553
27554 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27555
27556 rxcore_state = wlc_phy_rxcore_getstate_nphy(
27557 (struct brcms_phy_pub *) pi);
27558
27559 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27560
27561 skip_rxiqcal =
27562 ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27563
27564 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27565
27566 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27567
27568 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27569
27570 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27571
27572 wlc_phy_tx_tone_nphy(pi,
27573 (CHSPEC_IS40(
27574 pi->radio_chanspec)) ?
27575 NPHY_RXCAL_TONEFREQ_40MHz :
27576 NPHY_RXCAL_TONEFREQ_20MHz,
27577 NPHY_RXCAL_TONEAMP, 0, cal_type,
27578 false);
27579
27580 if (debug)
27581 mdelay(WAIT_FOR_SCOPE);
27582
27583 wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27584 wlc_phy_stopplayback_nphy(pi);
27585 }
27586
27587 if (((cal_type == 1) || (cal_type == 2))
27588 && NREV_LT(pi->pubpi.phy_rev, 7)) {
27589
27590 if (rx_core == PHY_CORE_1) {
27591
27592 if (rxcore_state == 1)
27593 wlc_phy_rxcore_setstate_nphy(
27594 (struct brcms_phy_pub *) pi, 3);
27595
27596 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27597 1);
27598
27599 best_rccal[rx_core] =
27600 wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27601 pi->nphy_rccal_value = best_rccal[rx_core];
27602
27603 if (rxcore_state == 1)
27604 wlc_phy_rxcore_setstate_nphy(
27605 (struct brcms_phy_pub *) pi,
27606 rxcore_state);
27607 }
27608 }
27609
27610 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27611
27612 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27613 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27614 }
27615
27616 if ((cal_type == 1) || (cal_type == 2)) {
27617
27618 best_rccal[0] = best_rccal[1];
27619 write_radio_reg(pi,
27620 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27621 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27622
27623 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27624 rxlpf_rccal_hpc =
27625 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27626 txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27627
27628 if (PHY_IPA(pi)) {
27629 txlpf_rccal_lpc +=
27630 (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27631 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27632 0x0e : 0x13;
27633 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27634 TXLPF_IDAC_4, txlpf_idac);
27635 }
27636
27637 rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27638 0);
27639 txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27640 0);
27641
27642 write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27643 ((rx_core ==
27644 PHY_CORE_0) ? RADIO_2056_RX0 :
27645 RADIO_2056_RX1)),
27646 (rxlpf_rccal_hpc | 0x80));
27647
27648 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27649 ((rx_core ==
27650 PHY_CORE_0) ? RADIO_2056_TX0 :
27651 RADIO_2056_TX1)),
27652 (txlpf_rccal_lpc | 0x80));
27653 }
27654 }
27655
27656 write_phy_reg(pi, 0x01, orig_BBConfig);
27657
27658 wlc_phy_resetcca_nphy(pi);
27659
27660 if (NREV_GE(pi->pubpi.phy_rev, 7))
27661 wlc_phy_rfctrl_override_1tomany_nphy(
27662 pi,
27663 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27664 0, 0x3, 1);
27665 else
27666 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27667
27668 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27669
27670 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27671 gain_save);
27672
27673 if (NREV_GE(pi->pubpi.phy_rev, 4))
27674 pi->phyhang_avoid = phyhang_avoid_state;
27675
27676 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27677
27678 return 0;
27679 }
27680
27681 static int
27682 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27683 struct nphy_txgains target_gain, bool debug)
27684 {
27685 struct phy_iq_est est[PHY_CORE_MAX];
27686 u8 core_num, rx_core, tx_core;
27687 u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27688 u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27689 u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27690 s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27691 s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27692 u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27693 u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27694 u16 num_samps;
27695 u32 i_pwr, q_pwr, tot_pwr[3];
27696 u8 gain_pass, use_hpf_num;
27697 u16 mask, val1, val2;
27698 u16 core_no;
27699 u16 gain_save[2];
27700 u16 cal_gain[2];
27701 struct nphy_iqcal_params cal_params[2];
27702 u8 phy_bw;
27703 int bcmerror = 0;
27704 bool first_playtone = true;
27705
27706 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27707
27708 if (NREV_LT(pi->pubpi.phy_rev, 2))
27709 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27710
27711 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27712
27713 for (core_no = 0; core_no <= 1; core_no++) {
27714 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27715 &cal_params[core_no]);
27716 cal_gain[core_no] = cal_params[core_no].cal_gain;
27717 }
27718
27719 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27720
27721 num_samps = 1024;
27722 desired_log2_pwr = 13;
27723
27724 for (core_num = 0; core_num < 2; core_num++) {
27725
27726 rx_core = core_num;
27727 tx_core = 1 - core_num;
27728
27729 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27730 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27731 0xa6 : 0xa7);
27732 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27733 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27734 0x91 : 0x92);
27735 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27736 0x91 : 0x92);
27737
27738 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27739 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27740
27741 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27742 ((0x1 << 1) | (0x1 << 2)));
27743 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27744
27745 if (((pi->nphy_rxcalparams) & 0xff000000))
27746 write_phy_reg(pi,
27747 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27748 (CHSPEC_IS5G(pi->radio_chanspec) ?
27749 0x140 : 0x110));
27750 else
27751 write_phy_reg(pi,
27752 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27753 (CHSPEC_IS5G(pi->radio_chanspec) ?
27754 0x180 : 0x120));
27755
27756 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27757 (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27758 0x114));
27759
27760 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27761 if (rx_core == PHY_CORE_0) {
27762 val1 = RADIO_2055_COUPLE_RX_MASK;
27763 val2 = RADIO_2055_COUPLE_TX_MASK;
27764 } else {
27765 val1 = RADIO_2055_COUPLE_TX_MASK;
27766 val2 = RADIO_2055_COUPLE_RX_MASK;
27767 }
27768
27769 if ((pi->nphy_rxcalparams & 0x10000)) {
27770 mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27771 val1);
27772 mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27773 val2);
27774 }
27775
27776 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27777
27778 if (debug)
27779 mdelay(WAIT_FOR_SCOPE);
27780
27781 if (gain_pass < 3) {
27782 curr_lna = lna_vals[gain_pass];
27783 curr_hpf1 = hpf1_vals[gain_pass];
27784 curr_hpf2 = hpf2_vals[gain_pass];
27785 } else {
27786
27787 if (tot_pwr[1] > 10000) {
27788 curr_lna = lna_vals[2];
27789 curr_hpf1 = hpf1_vals[2];
27790 curr_hpf2 = hpf2_vals[2];
27791 use_hpf_num = 1;
27792 curr_hpf = curr_hpf1;
27793 actual_log2_pwr =
27794 wlc_phy_nbits(tot_pwr[2]);
27795 } else {
27796 if (tot_pwr[0] > 10000) {
27797 curr_lna = lna_vals[1];
27798 curr_hpf1 = hpf1_vals[1];
27799 curr_hpf2 = hpf2_vals[1];
27800 use_hpf_num = 1;
27801 curr_hpf = curr_hpf1;
27802 actual_log2_pwr =
27803 wlc_phy_nbits(
27804 tot_pwr[1]);
27805 } else {
27806 curr_lna = lna_vals[0];
27807 curr_hpf1 = hpf1_vals[0];
27808 curr_hpf2 = hpf2_vals[0];
27809 use_hpf_num = 2;
27810 curr_hpf = curr_hpf2;
27811 actual_log2_pwr =
27812 wlc_phy_nbits(
27813 tot_pwr[0]);
27814 }
27815 }
27816
27817 hpf_change = desired_log2_pwr - actual_log2_pwr;
27818 curr_hpf += hpf_change;
27819 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27820 if (use_hpf_num == 1)
27821 curr_hpf1 = curr_hpf;
27822 else
27823 curr_hpf2 = curr_hpf;
27824 }
27825
27826 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27827 ((curr_hpf2 << 8) |
27828 (curr_hpf1 << 4) |
27829 (curr_lna << 2)), 0x3, 0);
27830 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27831
27832 wlc_phy_stopplayback_nphy(pi);
27833
27834 if (first_playtone) {
27835 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27836 (u16) (pi->nphy_rxcalparams &
27837 0xffff), 0, 0, true);
27838 first_playtone = false;
27839 } else {
27840 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27841 40 : 20;
27842 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27843 0, 0, 0, true);
27844 }
27845
27846 if (bcmerror == 0) {
27847 if (gain_pass < 3) {
27848
27849 wlc_phy_rx_iq_est_nphy(pi, est,
27850 num_samps, 32,
27851 0);
27852 i_pwr = (est[rx_core].i_pwr +
27853 num_samps / 2) / num_samps;
27854 q_pwr = (est[rx_core].q_pwr +
27855 num_samps / 2) / num_samps;
27856 tot_pwr[gain_pass] = i_pwr + q_pwr;
27857 } else {
27858
27859 wlc_phy_calc_rx_iq_comp_nphy(pi,
27860 (1 <<
27861 rx_core));
27862 }
27863
27864 wlc_phy_stopplayback_nphy(pi);
27865 }
27866
27867 if (bcmerror != 0)
27868 break;
27869 }
27870
27871 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27872 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27873
27874 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27875 0x92, orig_RfctrlIntcTx);
27876 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27877 0x92, orig_RfctrlIntcRx);
27878 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27879 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27880 0xa7, orig_AfectrlCore);
27881 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27882
27883 if (bcmerror != 0)
27884 break;
27885 }
27886
27887 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27888 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27889
27890 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27891 gain_save);
27892
27893 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27894
27895 return bcmerror;
27896 }
27897
27898 int
27899 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27900 u8 cal_type, bool debug)
27901 {
27902 if (NREV_GE(pi->pubpi.phy_rev, 7))
27903 cal_type = 0;
27904
27905 if (NREV_GE(pi->pubpi.phy_rev, 3))
27906 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27907 debug);
27908 else
27909 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27910 }
27911
27912 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27913 {
27914 uint core;
27915 u32 txgain;
27916 u16 rad_gain, dac_gain, bbmult, m1m2;
27917 u8 txpi[2], chan_freq_range;
27918 s32 rfpwr_offset;
27919
27920 if (pi->phyhang_avoid)
27921 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27922
27923 if (pi->sh->sromrev < 4) {
27924 txpi[0] = txpi[1] = 72;
27925 } else {
27926
27927 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27928 switch (chan_freq_range) {
27929 case WL_CHAN_FREQ_RANGE_2G:
27930 case WL_CHAN_FREQ_RANGE_5GL:
27931 case WL_CHAN_FREQ_RANGE_5GM:
27932 case WL_CHAN_FREQ_RANGE_5GH:
27933 txpi[0] = 0;
27934 txpi[1] = 0;
27935 break;
27936 default:
27937 txpi[0] = txpi[1] = 91;
27938 break;
27939 }
27940 }
27941
27942 if (NREV_GE(pi->pubpi.phy_rev, 7))
27943 txpi[0] = txpi[1] = 30;
27944 else if (NREV_GE(pi->pubpi.phy_rev, 3))
27945 txpi[0] = txpi[1] = 40;
27946
27947 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27948
27949 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27950 (txpi[1] < 40) || (txpi[1] > 100))
27951 txpi[0] = txpi[1] = 91;
27952 }
27953
27954 pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27955 pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27956 pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27957 pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27958
27959 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27960 uint phyrev = pi->pubpi.phy_rev;
27961
27962 if (NREV_GE(phyrev, 3)) {
27963 if (PHY_IPA(pi)) {
27964 u32 *tx_gaintbl =
27965 wlc_phy_get_ipa_gaintbl_nphy(pi);
27966 txgain = tx_gaintbl[txpi[core]];
27967 } else {
27968 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27969 if (NREV_IS(phyrev, 3)) {
27970 txgain =
27971 nphy_tpc_5GHz_txgain_rev3
27972 [txpi[core]];
27973 } else if (NREV_IS(phyrev, 4)) {
27974 txgain = (
27975 pi->srom_fem5g.extpagain ==
27976 3) ?
27977 nphy_tpc_5GHz_txgain_HiPwrEPA
27978 [txpi[core]] :
27979 nphy_tpc_5GHz_txgain_rev4
27980 [txpi[core]];
27981 } else {
27982 txgain =
27983 nphy_tpc_5GHz_txgain_rev5
27984 [txpi[core]];
27985 }
27986 } else {
27987 if (NREV_GE(phyrev, 5) &&
27988 (pi->srom_fem2g.extpagain == 3)) {
27989 txgain =
27990 nphy_tpc_txgain_HiPwrEPA
27991 [txpi[core]];
27992 } else {
27993 txgain = nphy_tpc_txgain_rev3
27994 [txpi[core]];
27995 }
27996 }
27997 }
27998 } else {
27999 txgain = nphy_tpc_txgain[txpi[core]];
28000 }
28001
28002 if (NREV_GE(phyrev, 3))
28003 rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
28004 else
28005 rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
28006
28007 if (NREV_GE(phyrev, 7))
28008 dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
28009 else
28010 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28011
28012 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28013
28014 if (NREV_GE(phyrev, 3))
28015 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28016 0xa5), (0x1 << 8), (0x1 << 8));
28017 else
28018 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28019
28020 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
28021
28022 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28023 &rad_gain);
28024
28025 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28026 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28027 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
28028 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28029
28030 if (PHY_IPA(pi)) {
28031 wlc_phy_table_read_nphy(pi,
28032 (core ==
28033 PHY_CORE_0 ?
28034 NPHY_TBL_ID_CORE1TXPWRCTL :
28035 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
28036 576 + txpi[core], 32,
28037 &rfpwr_offset);
28038
28039 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28040 0x29b, (0x1ff << 4),
28041 ((s16) rfpwr_offset) << 4);
28042
28043 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28044 0x29b, (0x1 << 2), (1) << 2);
28045
28046 }
28047 }
28048
28049 and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
28050
28051 if (pi->phyhang_avoid)
28052 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28053 }
28054
28055 static void
28056 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
28057 u8 tmp_max_pwr, u8 rate_start,
28058 u8 rate_end)
28059 {
28060 u8 rate;
28061 u8 word_num, nibble_num;
28062 u8 tmp_nibble;
28063
28064 for (rate = rate_start; rate <= rate_end; rate++) {
28065 word_num = (rate - rate_start) >> 2;
28066 nibble_num = (rate - rate_start) & 0x3;
28067 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
28068
28069 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28070 }
28071 }
28072
28073 static void
28074 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28075 u8 rate_start, u8 rate_end)
28076 {
28077 u8 rate;
28078
28079 for (rate = rate_start; rate <= rate_end; rate++)
28080 srom_max[rate] -= 2 * pwr_offset;
28081 }
28082
28083 void
28084 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28085 u8 rate_mcs_end, u8 rate_ofdm_start)
28086 {
28087 u8 rate1, rate2;
28088
28089 rate2 = rate_ofdm_start;
28090 for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28091 power[rate1] = power[rate2];
28092 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28093 }
28094 power[rate_mcs_end] = power[rate_mcs_end - 1];
28095 }
28096
28097 void
28098 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28099 u8 rate_ofdm_end, u8 rate_mcs_start)
28100 {
28101 u8 rate1, rate2;
28102
28103 for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28104 rate1 <= rate_ofdm_end; rate1++, rate2++) {
28105 power[rate1] = power[rate2];
28106 if (rate1 == rate_ofdm_start)
28107 power[++rate1] = power[rate2];
28108 }
28109 }
28110
28111 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28112 {
28113 uint rate1, rate2, band_num;
28114 u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28115 u8 tmp_max_pwr = 0;
28116 u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28117 u8 *tx_srom_max_rate = NULL;
28118
28119 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28120 band_num++) {
28121 switch (band_num) {
28122 case 0:
28123
28124 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28125 pi->nphy_pwrctrl_info[1].max_pwr_2g);
28126
28127 pwr_offsets1[0] = pi->cck2gpo;
28128 wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28129 pwr_offsets1,
28130 tmp_max_pwr,
28131 TXP_FIRST_CCK,
28132 TXP_LAST_CCK);
28133
28134 pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28135 pwr_offsets1[1] =
28136 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28137
28138 pwr_offsets2 = pi->mcs2gpo;
28139
28140 tmp_cddpo = pi->cdd2gpo;
28141 tmp_stbcpo = pi->stbc2gpo;
28142 tmp_bw40po = pi->bw402gpo;
28143
28144 tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28145 break;
28146 case 1:
28147
28148 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28149 pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28150
28151 pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28152 pwr_offsets1[1] =
28153 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28154
28155 pwr_offsets2 = pi->mcs5gpo;
28156
28157 tmp_cddpo = pi->cdd5gpo;
28158 tmp_stbcpo = pi->stbc5gpo;
28159 tmp_bw40po = pi->bw405gpo;
28160
28161 tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28162 break;
28163 case 2:
28164
28165 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28166 pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28167
28168 pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28169 pwr_offsets1[1] =
28170 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28171
28172 pwr_offsets2 = pi->mcs5glpo;
28173
28174 tmp_cddpo = pi->cdd5glpo;
28175 tmp_stbcpo = pi->stbc5glpo;
28176 tmp_bw40po = pi->bw405glpo;
28177
28178 tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28179 break;
28180 case 3:
28181
28182 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28183 pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28184
28185 pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28186 pwr_offsets1[1] =
28187 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28188
28189 pwr_offsets2 = pi->mcs5ghpo;
28190
28191 tmp_cddpo = pi->cdd5ghpo;
28192 tmp_stbcpo = pi->stbc5ghpo;
28193 tmp_bw40po = pi->bw405ghpo;
28194
28195 tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28196 break;
28197 }
28198
28199 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28200 tmp_max_pwr, TXP_FIRST_OFDM,
28201 TXP_LAST_OFDM);
28202
28203 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28204 TXP_FIRST_MCS_20_SISO,
28205 TXP_LAST_MCS_20_SISO,
28206 TXP_FIRST_OFDM);
28207
28208 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28209 tmp_max_pwr,
28210 TXP_FIRST_MCS_20_CDD,
28211 TXP_LAST_MCS_20_CDD);
28212
28213 if (NREV_GE(pi->pubpi.phy_rev, 3))
28214 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28215 TXP_FIRST_MCS_20_CDD,
28216 TXP_LAST_MCS_20_CDD);
28217
28218 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28219 TXP_FIRST_OFDM_20_CDD,
28220 TXP_LAST_OFDM_20_CDD,
28221 TXP_FIRST_MCS_20_CDD);
28222
28223 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28224 tmp_max_pwr,
28225 TXP_FIRST_MCS_20_STBC,
28226 TXP_LAST_MCS_20_STBC);
28227
28228 if (NREV_GE(pi->pubpi.phy_rev, 3))
28229 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28230 tmp_stbcpo,
28231 TXP_FIRST_MCS_20_STBC,
28232 TXP_LAST_MCS_20_STBC);
28233
28234 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28235 &pwr_offsets2[2], tmp_max_pwr,
28236 TXP_FIRST_MCS_20_SDM,
28237 TXP_LAST_MCS_20_SDM);
28238
28239 if (NPHY_IS_SROM_REINTERPRET) {
28240
28241 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28242 &pwr_offsets2[4],
28243 tmp_max_pwr,
28244 TXP_FIRST_MCS_40_SISO,
28245 TXP_LAST_MCS_40_SISO);
28246
28247 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28248 TXP_FIRST_OFDM_40_SISO,
28249 TXP_LAST_OFDM_40_SISO,
28250 TXP_FIRST_MCS_40_SISO);
28251
28252 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28253 &pwr_offsets2[4],
28254 tmp_max_pwr,
28255 TXP_FIRST_MCS_40_CDD,
28256 TXP_LAST_MCS_40_CDD);
28257
28258 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28259 TXP_FIRST_MCS_40_CDD,
28260 TXP_LAST_MCS_40_CDD);
28261
28262 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28263 TXP_FIRST_OFDM_40_CDD,
28264 TXP_LAST_OFDM_40_CDD,
28265 TXP_FIRST_MCS_40_CDD);
28266
28267 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28268 &pwr_offsets2[4],
28269 tmp_max_pwr,
28270 TXP_FIRST_MCS_40_STBC,
28271 TXP_LAST_MCS_40_STBC);
28272
28273 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28274 tmp_stbcpo,
28275 TXP_FIRST_MCS_40_STBC,
28276 TXP_LAST_MCS_40_STBC);
28277
28278 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28279 &pwr_offsets2[6],
28280 tmp_max_pwr,
28281 TXP_FIRST_MCS_40_SDM,
28282 TXP_LAST_MCS_40_SDM);
28283 } else {
28284
28285 for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28286 TXP_FIRST_OFDM;
28287 rate1 <= TXP_LAST_MCS_40_SDM;
28288 rate1++, rate2++)
28289 tx_srom_max_rate[rate1] =
28290 tx_srom_max_rate[rate2];
28291 }
28292
28293 if (NREV_GE(pi->pubpi.phy_rev, 3))
28294 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28295 tmp_bw40po,
28296 TXP_FIRST_OFDM_40_SISO,
28297 TXP_LAST_MCS_40_SDM);
28298
28299 tx_srom_max_rate[TXP_MCS_32] =
28300 tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28301 }
28302
28303 return;
28304 }
28305
28306 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28307 {
28308 u8 tx_pwr_ctrl_state;
28309 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28310 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28311
28312 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28313
28314 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28315 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28316 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28317 udelay(1);
28318 }
28319
28320 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28321
28322 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28323 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28324 }
28325
28326 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28327 {
28328 return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28329 (0x1 << 14) | (0x1 << 13));
28330 }
28331
28332 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28333 {
28334 u16 tmp;
28335 u16 pwr_idx[2];
28336
28337 if (wlc_phy_txpwr_ison_nphy(pi)) {
28338 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28339 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28340
28341 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28342 } else {
28343 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28344 << 8) |
28345 (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28346 }
28347
28348 return tmp;
28349 }
28350
28351 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28352 {
28353 if (PHY_IPA(pi)
28354 && (pi->nphy_force_papd_cal
28355 || (wlc_phy_txpwr_ison_nphy(pi)
28356 &&
28357 (((u32)
28358 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28359 pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28360 || ((u32)
28361 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28362 pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28363 wlc_phy_a4(pi, true);
28364 }
28365
28366 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28367 {
28368 u16 mask = 0, val = 0, ishw = 0;
28369 u8 ctr;
28370 uint core;
28371 u32 tbl_offset;
28372 u32 tbl_len;
28373 u16 regval[84];
28374
28375 if (pi->phyhang_avoid)
28376 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28377
28378 switch (ctrl_type) {
28379 case PHY_TPC_HW_OFF:
28380 case PHY_TPC_HW_ON:
28381 pi->nphy_txpwrctrl = ctrl_type;
28382 break;
28383 default:
28384 break;
28385 }
28386
28387 if (ctrl_type == PHY_TPC_HW_OFF) {
28388 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28389
28390 if (wlc_phy_txpwr_ison_nphy(pi)) {
28391 for (core = 0; core < pi->pubpi.phy_corenum;
28392 core++)
28393 pi->nphy_txpwr_idx[core] =
28394 wlc_phy_txpwr_idx_cur_get_nphy(
28395 pi,
28396 (u8) core);
28397 }
28398
28399 }
28400
28401 tbl_len = 84;
28402 tbl_offset = 64;
28403 for (ctr = 0; ctr < tbl_len; ctr++)
28404 regval[ctr] = 0;
28405 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28406 regval);
28407 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28408 regval);
28409
28410 if (NREV_GE(pi->pubpi.phy_rev, 3))
28411 and_phy_reg(pi, 0x1e7,
28412 (u16) (~((0x1 << 15) |
28413 (0x1 << 14) | (0x1 << 13))));
28414 else
28415 and_phy_reg(pi, 0x1e7,
28416 (u16) (~((0x1 << 14) | (0x1 << 13))));
28417
28418 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28419 or_phy_reg(pi, 0x8f, (0x1 << 8));
28420 or_phy_reg(pi, 0xa5, (0x1 << 8));
28421 } else {
28422 or_phy_reg(pi, 0xa5, (0x1 << 14));
28423 }
28424
28425 if (NREV_IS(pi->pubpi.phy_rev, 2))
28426 mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28427 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28428 mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28429
28430 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28431 pi->bw == WL_CHANSPEC_BW_40)
28432 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28433 MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28434
28435 } else {
28436
28437 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28438 8, pi->adj_pwr_tbl_nphy);
28439 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28440 8, pi->adj_pwr_tbl_nphy);
28441
28442 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28443 mask = (0x1 << 14) | (0x1 << 13);
28444 val = (ishw << 14) | (ishw << 13);
28445
28446 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28447 mask |= (0x1 << 15);
28448 val |= (ishw << 15);
28449 }
28450
28451 mod_phy_reg(pi, 0x1e7, mask, val);
28452
28453 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28454 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28455 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28456 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28457 } else {
28458 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28459 if (NREV_GT(pi->pubpi.phy_rev, 1))
28460 mod_phy_reg(pi, 0x222,
28461 (0xff << 0), 0x64);
28462 }
28463 }
28464
28465 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28466 if ((pi->nphy_txpwr_idx[0] != 128)
28467 && (pi->nphy_txpwr_idx[1] != 128))
28468 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28469 pi->
28470 nphy_txpwr_idx
28471 [0],
28472 pi->
28473 nphy_txpwr_idx
28474 [1]);
28475 }
28476
28477 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28478 and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28479 and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28480 } else {
28481 and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28482 }
28483
28484 if (NREV_IS(pi->pubpi.phy_rev, 2))
28485 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28486 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28487 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28488
28489 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28490 pi->bw == WL_CHANSPEC_BW_40)
28491 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28492 0x0, BRCM_BAND_ALL);
28493
28494 if (PHY_IPA(pi)) {
28495 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28496 0x29b, (0x1 << 2), (0) << 2);
28497
28498 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28499 0x29b, (0x1 << 2), (0) << 2);
28500
28501 }
28502
28503 }
28504
28505 if (pi->phyhang_avoid)
28506 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28507 }
28508
28509 void
28510 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28511 bool restore_cals)
28512 {
28513 u8 core, txpwrctl_tbl;
28514 u16 tx_ind0, iq_ind0, lo_ind0;
28515 u16 m1m2;
28516 u32 txgain;
28517 u16 rad_gain, dac_gain;
28518 u8 bbmult;
28519 u32 iqcomp;
28520 u16 iqcomp_a, iqcomp_b;
28521 u32 locomp;
28522 u16 tmpval;
28523 u8 tx_pwr_ctrl_state;
28524 s32 rfpwr_offset;
28525 u16 regval[2];
28526
28527 if (pi->phyhang_avoid)
28528 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28529
28530 tx_ind0 = 192;
28531 iq_ind0 = 320;
28532 lo_ind0 = 448;
28533
28534 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28535
28536 if ((core_mask & (1 << core)) == 0)
28537 continue;
28538
28539 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28540
28541 if (txpwrindex < 0) {
28542 if (pi->nphy_txpwrindex[core].index < 0)
28543 continue;
28544
28545 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28546 mod_phy_reg(pi, 0x8f,
28547 (0x1 << 8),
28548 pi->nphy_txpwrindex[core].
28549 AfectrlOverride);
28550 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28551 pi->nphy_txpwrindex[core].
28552 AfectrlOverride);
28553 } else {
28554 mod_phy_reg(pi, 0xa5,
28555 (0x1 << 14),
28556 pi->nphy_txpwrindex[core].
28557 AfectrlOverride);
28558 }
28559
28560 write_phy_reg(pi, (core == PHY_CORE_0) ?
28561 0xaa : 0xab,
28562 pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28563
28564 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28565 &pi->nphy_txpwrindex[core].
28566 rad_gain);
28567
28568 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28569 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28570 m1m2 |= ((core == PHY_CORE_0) ?
28571 (pi->nphy_txpwrindex[core].bbmult << 8) :
28572 (pi->nphy_txpwrindex[core].bbmult << 0));
28573 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28574
28575 if (restore_cals) {
28576 wlc_phy_table_write_nphy(
28577 pi, 15, 2, (80 + 2 * core), 16,
28578 &pi->nphy_txpwrindex[core].iqcomp_a);
28579 wlc_phy_table_write_nphy(
28580 pi, 15, 1, (85 + core), 16,
28581 &pi->nphy_txpwrindex[core].locomp);
28582 wlc_phy_table_write_nphy(
28583 pi, 15, 1, (93 + core), 16,
28584 &pi->nphy_txpwrindex[core].locomp);
28585 }
28586
28587 wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28588
28589 pi->nphy_txpwrindex[core].index_internal =
28590 pi->nphy_txpwrindex[core].index_internal_save;
28591 } else {
28592
28593 if (pi->nphy_txpwrindex[core].index < 0) {
28594
28595 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28596 mod_phy_reg(pi, 0x8f,
28597 (0x1 << 8),
28598 pi->nphy_txpwrindex[core].
28599 AfectrlOverride);
28600 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28601 pi->nphy_txpwrindex[core].
28602 AfectrlOverride);
28603 } else {
28604 pi->nphy_txpwrindex[core].
28605 AfectrlOverride =
28606 read_phy_reg(pi, 0xa5);
28607 }
28608
28609 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28610 read_phy_reg(pi, (core == PHY_CORE_0) ?
28611 0xaa : 0xab);
28612
28613 wlc_phy_table_read_nphy(pi, 7, 1,
28614 (0x110 + core), 16,
28615 &pi->
28616 nphy_txpwrindex[core].
28617 rad_gain);
28618
28619 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28620 &tmpval);
28621 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28622 tmpval &= 0xff;
28623 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28624
28625 wlc_phy_table_read_nphy(pi, 15, 2,
28626 (80 + 2 * core), 16,
28627 &pi->
28628 nphy_txpwrindex[core].
28629 iqcomp_a);
28630
28631 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28632 16,
28633 &pi->
28634 nphy_txpwrindex[core].
28635 locomp);
28636
28637 pi->nphy_txpwrindex[core].index_internal_save =
28638 pi->nphy_txpwrindex[core].
28639 index_internal;
28640 }
28641
28642 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28643 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28644
28645 if (NREV_IS(pi->pubpi.phy_rev, 1))
28646 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28647
28648 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28649 (tx_ind0 + txpwrindex), 32,
28650 &txgain);
28651
28652 if (NREV_GE(pi->pubpi.phy_rev, 3))
28653 rad_gain = (txgain >> 16) &
28654 ((1 << (32 - 16 + 1)) - 1);
28655 else
28656 rad_gain = (txgain >> 16) &
28657 ((1 << (28 - 16 + 1)) - 1);
28658
28659 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28660 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28661
28662 if (NREV_GE(pi->pubpi.phy_rev, 3))
28663 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28664 0xa5), (0x1 << 8), (0x1 << 8));
28665 else
28666 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28667
28668 write_phy_reg(pi, (core == PHY_CORE_0) ?
28669 0xaa : 0xab, dac_gain);
28670
28671 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28672 &rad_gain);
28673
28674 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28675 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28676 m1m2 |= ((core == PHY_CORE_0) ?
28677 (bbmult << 8) : (bbmult << 0));
28678
28679 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28680
28681 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28682 (iq_ind0 + txpwrindex), 32,
28683 &iqcomp);
28684 iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28685 iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28686
28687 if (restore_cals) {
28688 regval[0] = (u16) iqcomp_a;
28689 regval[1] = (u16) iqcomp_b;
28690 wlc_phy_table_write_nphy(pi, 15, 2,
28691 (80 + 2 * core), 16,
28692 regval);
28693 }
28694
28695 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28696 (lo_ind0 + txpwrindex), 32,
28697 &locomp);
28698 if (restore_cals)
28699 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28700 16, &locomp);
28701
28702 if (NREV_IS(pi->pubpi.phy_rev, 1))
28703 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28704
28705 if (PHY_IPA(pi)) {
28706 wlc_phy_table_read_nphy(pi,
28707 (core == PHY_CORE_0 ?
28708 NPHY_TBL_ID_CORE1TXPWRCTL :
28709 NPHY_TBL_ID_CORE2TXPWRCTL),
28710 1, 576 + txpwrindex, 32,
28711 &rfpwr_offset);
28712
28713 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28714 0x29b, (0x1ff << 4),
28715 ((s16) rfpwr_offset) << 4);
28716
28717 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28718 0x29b, (0x1 << 2), (1) << 2);
28719
28720 }
28721
28722 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28723 }
28724
28725 pi->nphy_txpwrindex[core].index = txpwrindex;
28726 }
28727
28728 if (pi->phyhang_avoid)
28729 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28730 }
28731
28732 void
28733 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28734 u8 txp_rate_idx)
28735 {
28736 u8 chan_freq_range;
28737
28738 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28739 switch (chan_freq_range) {
28740 case WL_CHAN_FREQ_RANGE_2G:
28741 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28742 break;
28743 case WL_CHAN_FREQ_RANGE_5GM:
28744 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28745 break;
28746 case WL_CHAN_FREQ_RANGE_5GL:
28747 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28748 break;
28749 case WL_CHAN_FREQ_RANGE_5GH:
28750 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28751 break;
28752 default:
28753 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28754 break;
28755 }
28756
28757 return;
28758 }
28759
28760 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28761 {
28762 u16 clip_off[] = { 0xffff, 0xffff };
28763
28764 if (enable) {
28765 if (pi->nphy_deaf_count == 0) {
28766 pi->classifier_state =
28767 wlc_phy_classifier_nphy(pi, 0, 0);
28768 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28769 wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28770 wlc_phy_clip_det_nphy(pi, 1, clip_off);
28771 }
28772
28773 pi->nphy_deaf_count++;
28774
28775 wlc_phy_resetcca_nphy(pi);
28776
28777 } else {
28778 pi->nphy_deaf_count--;
28779
28780 if (pi->nphy_deaf_count == 0) {
28781 wlc_phy_classifier_nphy(pi, (0x7 << 0),
28782 pi->classifier_state);
28783 wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28784 }
28785 }
28786 }
28787
28788 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28789 {
28790 wlapi_suspend_mac_and_wait(pi->sh->physhim);
28791
28792 if (mode) {
28793 if (pi->nphy_deaf_count == 0)
28794 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28795 } else if (pi->nphy_deaf_count > 0) {
28796 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28797 }
28798
28799 wlapi_enable_mac(pi->sh->physhim);
28800 }
This page took 0.891659 seconds and 4 git commands to generate.