Merge branch 'for-davem' into for-next
[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 = container_of(pih, struct brcms_phy, pubpi_ro);
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->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 ssb_sprom *sprom = &pi->d11core->bus->sprom;
14390
14391 if (pi->sh->sromrev >= 9)
14392 return;
14393
14394 bw40po = sprom->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 = sprom->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 = sprom->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 = sprom->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 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14423 sprom->core_pwr_info[0].maxpwr_2g;
14424 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14425 sprom->core_pwr_info[1].maxpwr_2g;
14426 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14427 sprom->core_pwr_info[0].pa_2g[0];
14428 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14429 sprom->core_pwr_info[1].pa_2g[0];
14430 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14431 sprom->core_pwr_info[0].pa_2g[1];
14432 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14433 sprom->core_pwr_info[1].pa_2g[1];
14434 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14435 sprom->core_pwr_info[0].pa_2g[2];
14436 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14437 sprom->core_pwr_info[1].pa_2g[2];
14438 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14439 sprom->core_pwr_info[0].itssi_2g;
14440 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14441 sprom->core_pwr_info[1].itssi_2g;
14442
14443 pi->cck2gpo = sprom->cck2gpo;
14444
14445 pi->ofdm2gpo = sprom->ofdm2gpo;
14446
14447 pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14448 pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14449 pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14450 pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14451 pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14452 pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14453 pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14454 pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14455 break;
14456 case 1:
14457
14458 pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14459 sprom->core_pwr_info[0].maxpwr_5g;
14460 pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14461 sprom->core_pwr_info[1].maxpwr_5g;
14462 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14463 sprom->core_pwr_info[0].pa_5g[0];
14464 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14465 sprom->core_pwr_info[1].pa_5g[0];
14466 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14467 sprom->core_pwr_info[0].pa_5g[1];
14468 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14469 sprom->core_pwr_info[1].pa_5g[1];
14470 pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14471 sprom->core_pwr_info[0].pa_5g[2];
14472 pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14473 sprom->core_pwr_info[1].pa_5g[2];
14474 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14475 sprom->core_pwr_info[0].itssi_5g;
14476 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14477 sprom->core_pwr_info[1].itssi_5g;
14478
14479 pi->ofdm5gpo = sprom->ofdm5gpo;
14480
14481 pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14482 pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14483 pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14484 pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14485 pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14486 pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14487 pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14488 pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14489 break;
14490 case 2:
14491
14492 pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14493 sprom->core_pwr_info[0].maxpwr_5gl;
14494 pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14495 sprom->core_pwr_info[1].maxpwr_5gl;
14496 pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14497 sprom->core_pwr_info[0].pa_5gl[0];
14498 pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14499 sprom->core_pwr_info[1].pa_5gl[0];
14500 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14501 sprom->core_pwr_info[0].pa_5gl[1];
14502 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14503 sprom->core_pwr_info[1].pa_5gl[1];
14504 pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14505 sprom->core_pwr_info[0].pa_5gl[2];
14506 pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14507 sprom->core_pwr_info[1].pa_5gl[2];
14508 pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14509 pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14510
14511 pi->ofdm5glpo = sprom->ofdm5glpo;
14512
14513 pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14514 pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14515 pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14516 pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14517 pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14518 pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14519 pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14520 pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14521 break;
14522 case 3:
14523
14524 pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14525 sprom->core_pwr_info[0].maxpwr_5gh;
14526 pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14527 sprom->core_pwr_info[1].maxpwr_5gh;
14528 pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14529 sprom->core_pwr_info[0].pa_5gh[0];
14530 pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14531 sprom->core_pwr_info[1].pa_5gh[0];
14532 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14533 sprom->core_pwr_info[0].pa_5gh[1];
14534 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14535 sprom->core_pwr_info[1].pa_5gh[1];
14536 pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14537 sprom->core_pwr_info[0].pa_5gh[2];
14538 pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14539 sprom->core_pwr_info[1].pa_5gh[2];
14540 pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14541 pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14542
14543 pi->ofdm5ghpo = sprom->ofdm5ghpo;
14544
14545 pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14546 pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14547 pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14548 pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14549 pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14550 pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14551 pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14552 pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14553 break;
14554 }
14555 }
14556
14557 wlc_phy_txpwr_apply_nphy(pi);
14558 }
14559
14560 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14561 {
14562 struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14563
14564 pi->antswitch = sprom->antswitch;
14565 pi->aa2g = sprom->ant_available_bg;
14566 pi->aa5g = sprom->ant_available_a;
14567
14568 pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14569 pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14570 pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14571 pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14572 pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14573
14574 pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14575 pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14576 pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14577 pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14578 if (sprom->fem.ghz5.antswlut)
14579 pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14580 else
14581 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14582
14583 wlc_phy_txpower_ipa_upd(pi);
14584
14585 pi->phy_txcore_disable_temp = sprom->tempthresh;
14586 if (pi->phy_txcore_disable_temp == 0)
14587 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14588
14589 pi->phy_tempsense_offset = sprom->tempoffset;
14590 if (pi->phy_tempsense_offset != 0) {
14591 if (pi->phy_tempsense_offset >
14592 (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14593 pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14594 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14595 NPHY_SROM_MINTEMPOFFSET))
14596 pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14597 else
14598 pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14599 }
14600
14601 pi->phy_txcore_enable_temp =
14602 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14603
14604 pi->phycal_tempdelta = sprom->phycal_tempdelta;
14605 if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14606 pi->phycal_tempdelta = 0;
14607
14608 wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14609
14610 return true;
14611 }
14612
14613 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14614 {
14615 uint i;
14616
14617 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14618 pi->phyhang_avoid = true;
14619
14620 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14621 pi->nphy_gband_spurwar_en = true;
14622 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14623 pi->nphy_aband_spurwar_en = true;
14624 }
14625 if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14626 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14627 pi->nphy_gband_spurwar2_en = true;
14628 }
14629
14630 pi->n_preamble_override = AUTO;
14631 if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14632 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14633
14634 pi->nphy_txrx_chain = AUTO;
14635 pi->phy_scraminit = AUTO;
14636
14637 pi->nphy_rxcalparams = 0x010100B5;
14638
14639 pi->nphy_perical = PHY_PERICAL_MPHASE;
14640 pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14641 pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14642
14643 pi->nphy_gain_boost = true;
14644 pi->nphy_elna_gain_config = false;
14645 pi->radio_is_on = false;
14646
14647 for (i = 0; i < pi->pubpi.phy_corenum; i++)
14648 pi->nphy_txpwrindex[i].index = AUTO;
14649
14650 wlc_phy_txpwrctrl_config_nphy(pi);
14651 if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14652 pi->hwpwrctrl_capable = true;
14653
14654 pi->pi_fptr.init = wlc_phy_init_nphy;
14655 pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14656 pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14657 pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14658
14659 if (!wlc_phy_txpwr_srom_read_nphy(pi))
14660 return false;
14661
14662 return true;
14663 }
14664
14665 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14666 {
14667 s32 rfpwr_offset = 0;
14668
14669 if (CHSPEC_IS2G(pi->radio_chanspec)) {
14670 if ((pi->pubpi.radiorev == 3) ||
14671 (pi->pubpi.radiorev == 4) ||
14672 (pi->pubpi.radiorev == 6))
14673 rfpwr_offset = (s16)
14674 nphy_papd_padgain_dlt_2g_2057rev3n4
14675 [pad_gn];
14676 else if (pi->pubpi.radiorev == 5)
14677 rfpwr_offset = (s16)
14678 nphy_papd_padgain_dlt_2g_2057rev5
14679 [pad_gn];
14680 else if ((pi->pubpi.radiorev == 7)
14681 || (pi->pubpi.radiorev ==
14682 8))
14683 rfpwr_offset = (s16)
14684 nphy_papd_padgain_dlt_2g_2057rev7
14685 [pad_gn];
14686 } else {
14687 if ((pi->pubpi.radiorev == 3) ||
14688 (pi->pubpi.radiorev == 4) ||
14689 (pi->pubpi.radiorev == 6))
14690 rfpwr_offset = (s16)
14691 nphy_papd_pgagain_dlt_5g_2057
14692 [pga_gn];
14693 else if ((pi->pubpi.radiorev == 7)
14694 || (pi->pubpi.radiorev ==
14695 8))
14696 rfpwr_offset = (s16)
14697 nphy_papd_pgagain_dlt_5g_2057rev7
14698 [pga_gn];
14699 }
14700 return rfpwr_offset;
14701 }
14702
14703 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14704 {
14705 bool gf_preamble = false;
14706 u16 val;
14707
14708 if (preamble == BRCMS_N_PREAMBLE_GF)
14709 gf_preamble = true;
14710
14711 val = read_phy_reg(pi, 0xed);
14712
14713 val |= RX_GF_MM_AUTO;
14714 val &= ~RX_GF_OR_MM;
14715 if (gf_preamble)
14716 val |= RX_GF_OR_MM;
14717
14718 write_phy_reg(pi, 0xed, val);
14719 }
14720
14721 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14722 {
14723 int j, type;
14724 u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14725
14726 for (type = 0; type < 3; type++) {
14727 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728 write_phy_reg(pi, addr_offset[type] + j,
14729 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14730 }
14731
14732 if (pi->bw == WL_CHANSPEC_BW_40) {
14733 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734 write_phy_reg(pi, 0x186 + j,
14735 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14736 } else {
14737 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14738 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14739 write_phy_reg(pi, 0x186 + j,
14740 NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14741 }
14742
14743 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14744 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14745 write_phy_reg(pi, 0x2c5 + j,
14746 NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14747 }
14748 }
14749 }
14750
14751 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14752 {
14753 int j;
14754
14755 if (pi->bw == WL_CHANSPEC_BW_40) {
14756 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14757 write_phy_reg(pi, 0x195 + j,
14758 NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14759 } else {
14760 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14761 write_phy_reg(pi, 0x186 + j,
14762 NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14763 }
14764 }
14765
14766 static void
14767 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14768 u8 len)
14769 {
14770 u32 t1_offset, t2_offset;
14771 u8 ctr;
14772 u8 end_event =
14773 NREV_GE(pi->pubpi.phy_rev,
14774 3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14775 u8 end_dly = 1;
14776
14777 if (pi->phyhang_avoid)
14778 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14779
14780 t1_offset = cmd << 4;
14781 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14782 events);
14783 t2_offset = t1_offset + 0x080;
14784 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14785 dlys);
14786
14787 for (ctr = len; ctr < 16; ctr++) {
14788 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14789 t1_offset + ctr, 8, &end_event);
14790 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14791 t2_offset + ctr, 8, &end_dly);
14792 }
14793
14794 if (pi->phyhang_avoid)
14795 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14796 }
14797
14798 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14799 {
14800 u16 lpf_bw_ctl_val = 0;
14801 u16 rx2tx_lpf_rc_lut_offset = 0;
14802
14803 if (offset == 0) {
14804 if (CHSPEC_IS40(pi->radio_chanspec))
14805 rx2tx_lpf_rc_lut_offset = 0x159;
14806 else
14807 rx2tx_lpf_rc_lut_offset = 0x154;
14808 } else {
14809 rx2tx_lpf_rc_lut_offset = offset;
14810 }
14811 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14812 (u32) rx2tx_lpf_rc_lut_offset, 16,
14813 &lpf_bw_ctl_val);
14814
14815 lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14816
14817 return lpf_bw_ctl_val;
14818 }
14819
14820 static void
14821 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14822 u8 core_mask, u8 off, u8 override_id)
14823 {
14824 u8 core_num;
14825 u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14826 u8 val_shift = 0;
14827
14828 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14829 en_mask = field;
14830 for (core_num = 0; core_num < 2; core_num++) {
14831 if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14832
14833 switch (field) {
14834 case (0x1 << 2):
14835 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14836 val_addr = (core_num == 0) ? 0x7a :
14837 0x7d;
14838 val_mask = (0x1 << 1);
14839 val_shift = 1;
14840 break;
14841 case (0x1 << 3):
14842 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14843 val_addr = (core_num == 0) ? 0x7a :
14844 0x7d;
14845 val_mask = (0x1 << 2);
14846 val_shift = 2;
14847 break;
14848 case (0x1 << 4):
14849 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14850 val_addr = (core_num == 0) ? 0x7a :
14851 0x7d;
14852 val_mask = (0x1 << 4);
14853 val_shift = 4;
14854 break;
14855 case (0x1 << 5):
14856 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14857 val_addr = (core_num == 0) ? 0x7a :
14858 0x7d;
14859 val_mask = (0x1 << 5);
14860 val_shift = 5;
14861 break;
14862 case (0x1 << 6):
14863 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14864 val_addr = (core_num == 0) ? 0x7a :
14865 0x7d;
14866 val_mask = (0x1 << 6);
14867 val_shift = 6;
14868 break;
14869 case (0x1 << 7):
14870 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14871 val_addr = (core_num == 0) ? 0x7a :
14872 0x7d;
14873 val_mask = (0x1 << 7);
14874 val_shift = 7;
14875 break;
14876 case (0x1 << 10):
14877 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14878 val_addr = (core_num == 0) ? 0xf8 :
14879 0xfa;
14880 val_mask = (0x7 << 4);
14881 val_shift = 4;
14882 break;
14883 case (0x1 << 11):
14884 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14885 val_addr = (core_num == 0) ? 0x7b :
14886 0x7e;
14887 val_mask = (0xffff << 0);
14888 val_shift = 0;
14889 break;
14890 case (0x1 << 12):
14891 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14892 val_addr = (core_num == 0) ? 0x7c :
14893 0x7f;
14894 val_mask = (0xffff << 0);
14895 val_shift = 0;
14896 break;
14897 case (0x3 << 13):
14898 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14899 val_addr = (core_num == 0) ? 0x348 :
14900 0x349;
14901 val_mask = (0xff << 0);
14902 val_shift = 0;
14903 break;
14904 case (0x1 << 13):
14905 en_addr = (core_num == 0) ? 0xe7 : 0xec;
14906 val_addr = (core_num == 0) ? 0x348 :
14907 0x349;
14908 val_mask = (0xf << 0);
14909 val_shift = 0;
14910 break;
14911 default:
14912 addr = 0xffff;
14913 break;
14914 }
14915 } else if (override_id ==
14916 NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14917
14918 switch (field) {
14919 case (0x1 << 1):
14920 en_addr = (core_num == 0) ? 0x342 :
14921 0x343;
14922 val_addr = (core_num == 0) ? 0x340 :
14923 0x341;
14924 val_mask = (0x1 << 1);
14925 val_shift = 1;
14926 break;
14927 case (0x1 << 3):
14928 en_addr = (core_num == 0) ? 0x342 :
14929 0x343;
14930 val_addr = (core_num == 0) ? 0x340 :
14931 0x341;
14932 val_mask = (0x1 << 3);
14933 val_shift = 3;
14934 break;
14935 case (0x1 << 5):
14936 en_addr = (core_num == 0) ? 0x342 :
14937 0x343;
14938 val_addr = (core_num == 0) ? 0x340 :
14939 0x341;
14940 val_mask = (0x1 << 5);
14941 val_shift = 5;
14942 break;
14943 case (0x1 << 4):
14944 en_addr = (core_num == 0) ? 0x342 :
14945 0x343;
14946 val_addr = (core_num == 0) ? 0x340 :
14947 0x341;
14948 val_mask = (0x1 << 4);
14949 val_shift = 4;
14950 break;
14951 case (0x1 << 2):
14952
14953 en_addr = (core_num == 0) ? 0x342 :
14954 0x343;
14955 val_addr = (core_num == 0) ? 0x340 :
14956 0x341;
14957 val_mask = (0x1 << 2);
14958 val_shift = 2;
14959 break;
14960 case (0x1 << 7):
14961
14962 en_addr = (core_num == 0) ? 0x342 :
14963 0x343;
14964 val_addr = (core_num == 0) ? 0x340 :
14965 0x341;
14966 val_mask = (0x7 << 8);
14967 val_shift = 8;
14968 break;
14969 case (0x1 << 11):
14970 en_addr = (core_num == 0) ? 0x342 :
14971 0x343;
14972 val_addr = (core_num == 0) ? 0x340 :
14973 0x341;
14974 val_mask = (0x1 << 14);
14975 val_shift = 14;
14976 break;
14977 case (0x1 << 10):
14978 en_addr = (core_num == 0) ? 0x342 :
14979 0x343;
14980 val_addr = (core_num == 0) ? 0x340 :
14981 0x341;
14982 val_mask = (0x1 << 13);
14983 val_shift = 13;
14984 break;
14985 case (0x1 << 9):
14986 en_addr = (core_num == 0) ? 0x342 :
14987 0x343;
14988 val_addr = (core_num == 0) ? 0x340 :
14989 0x341;
14990 val_mask = (0x1 << 12);
14991 val_shift = 12;
14992 break;
14993 case (0x1 << 8):
14994 en_addr = (core_num == 0) ? 0x342 :
14995 0x343;
14996 val_addr = (core_num == 0) ? 0x340 :
14997 0x341;
14998 val_mask = (0x1 << 11);
14999 val_shift = 11;
15000 break;
15001 case (0x1 << 6):
15002 en_addr = (core_num == 0) ? 0x342 :
15003 0x343;
15004 val_addr = (core_num == 0) ? 0x340 :
15005 0x341;
15006 val_mask = (0x1 << 6);
15007 val_shift = 6;
15008 break;
15009 case (0x1 << 0):
15010 en_addr = (core_num == 0) ? 0x342 :
15011 0x343;
15012 val_addr = (core_num == 0) ? 0x340 :
15013 0x341;
15014 val_mask = (0x1 << 0);
15015 val_shift = 0;
15016 break;
15017 default:
15018 addr = 0xffff;
15019 break;
15020 }
15021 } else if (override_id ==
15022 NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15023
15024 switch (field) {
15025 case (0x1 << 3):
15026 en_addr = (core_num == 0) ? 0x346 :
15027 0x347;
15028 val_addr = (core_num == 0) ? 0x344 :
15029 0x345;
15030 val_mask = (0x1 << 3);
15031 val_shift = 3;
15032 break;
15033 case (0x1 << 1):
15034 en_addr = (core_num == 0) ? 0x346 :
15035 0x347;
15036 val_addr = (core_num == 0) ? 0x344 :
15037 0x345;
15038 val_mask = (0x1 << 1);
15039 val_shift = 1;
15040 break;
15041 case (0x1 << 0):
15042 en_addr = (core_num == 0) ? 0x346 :
15043 0x347;
15044 val_addr = (core_num == 0) ? 0x344 :
15045 0x345;
15046 val_mask = (0x1 << 0);
15047 val_shift = 0;
15048 break;
15049 case (0x1 << 2):
15050 en_addr = (core_num == 0) ? 0x346 :
15051 0x347;
15052 val_addr = (core_num == 0) ? 0x344 :
15053 0x345;
15054 val_mask = (0x1 << 2);
15055 val_shift = 2;
15056 break;
15057 case (0x1 << 4):
15058 en_addr = (core_num == 0) ? 0x346 :
15059 0x347;
15060 val_addr = (core_num == 0) ? 0x344 :
15061 0x345;
15062 val_mask = (0x1 << 4);
15063 val_shift = 4;
15064 break;
15065 default:
15066 addr = 0xffff;
15067 break;
15068 }
15069 }
15070
15071 if (off) {
15072 and_phy_reg(pi, en_addr, ~en_mask);
15073 and_phy_reg(pi, val_addr, ~val_mask);
15074 } else {
15075
15076 if ((core_mask == 0)
15077 || (core_mask & (1 << core_num))) {
15078 or_phy_reg(pi, en_addr, en_mask);
15079
15080 if (addr != 0xffff)
15081 mod_phy_reg(pi, val_addr,
15082 val_mask,
15083 (value <<
15084 val_shift));
15085 }
15086 }
15087 }
15088 }
15089 }
15090
15091 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15092 {
15093 uint core;
15094 int ctr;
15095 s16 gain_delta[2];
15096 u8 curr_channel;
15097 u16 minmax_gain[2];
15098 u16 regval[4];
15099
15100 if (pi->phyhang_avoid)
15101 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15102
15103 if (pi->nphy_gain_boost) {
15104 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15105
15106 gain_delta[0] = 6;
15107 gain_delta[1] = 6;
15108 } else {
15109
15110 curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15111 gain_delta[0] =
15112 (s16)
15113 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15114 curr_channel) +
15115 nphy_lnagain_est0[1]), 13);
15116 gain_delta[1] =
15117 (s16)
15118 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15119 curr_channel) +
15120 nphy_lnagain_est1[1]), 13);
15121 }
15122 } else {
15123
15124 gain_delta[0] = 0;
15125 gain_delta[1] = 0;
15126 }
15127
15128 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15129 if (pi->nphy_elna_gain_config) {
15130
15131 regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15132 regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15133 regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15134 regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15135 } else {
15136 for (ctr = 0; ctr < 4; ctr++)
15137 regval[ctr] =
15138 nphy_def_lnagains[ctr] +
15139 gain_delta[core];
15140 }
15141 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15142
15143 minmax_gain[core] =
15144 (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15145 }
15146
15147 mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15148 mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15149
15150 if (pi->phyhang_avoid)
15151 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15152 }
15153
15154 static void
15155 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15156 {
15157 if (core == PHY_CORE_0) {
15158 write_phy_reg(pi, 0x38, 0x4);
15159 if (CHSPEC_IS2G(pi->radio_chanspec))
15160 write_phy_reg(pi, 0x37, 0x0060);
15161 else
15162 write_phy_reg(pi, 0x37, 0x1080);
15163 } else if (core == PHY_CORE_1) {
15164 write_phy_reg(pi, 0x2ae, 0x4);
15165 if (CHSPEC_IS2G(pi->radio_chanspec))
15166 write_phy_reg(pi, 0x2ad, 0x0060);
15167 else
15168 write_phy_reg(pi, 0x2ad, 0x1080);
15169 }
15170 }
15171
15172 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15173 {
15174 u8 txchain0, txchain1;
15175
15176 txchain0 = txchain & 0x1;
15177 txchain1 = (txchain & 0x2) >> 1;
15178 if (!txchain0)
15179 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15180
15181 if (!txchain1)
15182 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15183 }
15184
15185 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15186 {
15187 s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15188 s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15189 s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15190 s8 tia_gainbits[] = {
15191 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15192
15193 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15194 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15195
15196 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15197
15198 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15199 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15200
15201 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15202 lna1_gain_db);
15203 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15204 lna1_gain_db);
15205
15206 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15207 lna2_gain_db);
15208 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15209 lna2_gain_db);
15210
15211 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15212 tia_gain_db);
15213 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15214 tia_gain_db);
15215
15216 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15217 tia_gainbits);
15218 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15219 tia_gainbits);
15220
15221 write_phy_reg(pi, 0x37, 0x74);
15222 write_phy_reg(pi, 0x2ad, 0x74);
15223 write_phy_reg(pi, 0x38, 0x18);
15224 write_phy_reg(pi, 0x2ae, 0x18);
15225
15226 write_phy_reg(pi, 0x2b, 0xe8);
15227 write_phy_reg(pi, 0x41, 0xe8);
15228
15229 if (CHSPEC_IS20(pi->radio_chanspec)) {
15230
15231 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15232 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15233 } else {
15234
15235 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15236 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15237 }
15238 }
15239
15240 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15241 {
15242 u16 currband;
15243 s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15244 s8 *lna1_gain_db = NULL;
15245 s8 *lna1_gain_db_2 = NULL;
15246 s8 *lna2_gain_db = NULL;
15247 s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15248 s8 *tia_gain_db;
15249 s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15250 s8 *tia_gainbits;
15251 u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15252 u16 *rfseq_init_gain;
15253 u16 init_gaincode;
15254 u16 clip1hi_gaincode;
15255 u16 clip1md_gaincode = 0;
15256 u16 clip1md_gaincode_B;
15257 u16 clip1lo_gaincode;
15258 u16 clip1lo_gaincode_B;
15259 u8 crsminl_th = 0;
15260 u8 crsminu_th;
15261 u16 nbclip_th = 0;
15262 u8 w1clip_th;
15263 u16 freq;
15264 s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15265 u8 chg_nbclip_th = 0;
15266
15267 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15268 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15269
15270 currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15271 if (currband == 0) {
15272
15273 lna1_gain_db = lna1G_gain_db_rev7;
15274
15275 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15276 lna1_gain_db);
15277 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15278 lna1_gain_db);
15279
15280 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15281
15282 if (CHSPEC_IS40(pi->radio_chanspec)) {
15283 mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15284 mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15285 }
15286
15287 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15288
15289 if (CHSPEC_IS20(pi->radio_chanspec)) {
15290 mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15291 mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15292 }
15293 } else {
15294
15295 init_gaincode = 0x9e;
15296 clip1hi_gaincode = 0x9e;
15297 clip1md_gaincode_B = 0x24;
15298 clip1lo_gaincode = 0x8a;
15299 clip1lo_gaincode_B = 8;
15300 rfseq_init_gain = rfseqA_init_gain_rev7;
15301
15302 tia_gain_db = tiaA_gain_db_rev7;
15303 tia_gainbits = tiaA_gainbits_rev7;
15304
15305 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15306 if (CHSPEC_IS20(pi->radio_chanspec)) {
15307
15308 w1clip_th = 25;
15309 clip1md_gaincode = 0x82;
15310
15311 if ((freq <= 5080) || (freq == 5825)) {
15312
15313 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15314 s8 lna1A_gain_db_2_rev7[] = {
15315 11, 17, 22, 25};
15316 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15317
15318 crsminu_th = 0x3e;
15319 lna1_gain_db = lna1A_gain_db_rev7;
15320 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15321 lna2_gain_db = lna2A_gain_db_rev7;
15322 } else if ((freq >= 5500) && (freq <= 5700)) {
15323
15324 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15325 s8 lna1A_gain_db_2_rev7[] = {
15326 12, 18, 22, 26};
15327 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15328
15329 crsminu_th = 0x45;
15330 clip1md_gaincode_B = 0x14;
15331 nbclip_th = 0xff;
15332 chg_nbclip_th = 1;
15333 lna1_gain_db = lna1A_gain_db_rev7;
15334 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15335 lna2_gain_db = lna2A_gain_db_rev7;
15336 } else {
15337
15338 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15339 s8 lna1A_gain_db_2_rev7[] = {
15340 12, 18, 22, 26};
15341 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15342
15343 crsminu_th = 0x41;
15344 lna1_gain_db = lna1A_gain_db_rev7;
15345 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15346 lna2_gain_db = lna2A_gain_db_rev7;
15347 }
15348
15349 if (freq <= 4920) {
15350 nvar_baseline_offset0 = 5;
15351 nvar_baseline_offset1 = 5;
15352 } else if ((freq > 4920) && (freq <= 5320)) {
15353 nvar_baseline_offset0 = 3;
15354 nvar_baseline_offset1 = 5;
15355 } else if ((freq > 5320) && (freq <= 5700)) {
15356 nvar_baseline_offset0 = 3;
15357 nvar_baseline_offset1 = 2;
15358 } else {
15359 nvar_baseline_offset0 = 4;
15360 nvar_baseline_offset1 = 0;
15361 }
15362 } else {
15363
15364 crsminu_th = 0x3a;
15365 crsminl_th = 0x3a;
15366 w1clip_th = 20;
15367
15368 if ((freq >= 4920) && (freq <= 5320)) {
15369 nvar_baseline_offset0 = 4;
15370 nvar_baseline_offset1 = 5;
15371 } else if ((freq > 5320) && (freq <= 5550)) {
15372 nvar_baseline_offset0 = 4;
15373 nvar_baseline_offset1 = 2;
15374 } else {
15375 nvar_baseline_offset0 = 5;
15376 nvar_baseline_offset1 = 3;
15377 }
15378 }
15379
15380 write_phy_reg(pi, 0x20, init_gaincode);
15381 write_phy_reg(pi, 0x2a7, init_gaincode);
15382
15383 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15384 pi->pubpi.phy_corenum, 0x106, 16,
15385 rfseq_init_gain);
15386
15387 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15388 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15389
15390 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15391 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15392
15393 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15394 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15395 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15396 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15397
15398 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15399 tia_gain_db);
15400 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15401 tia_gain_db);
15402
15403 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15404 tia_gainbits);
15405 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15406 tia_gainbits);
15407
15408 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15409
15410 if (chg_nbclip_th == 1) {
15411 write_phy_reg(pi, 0x2b, nbclip_th);
15412 write_phy_reg(pi, 0x41, nbclip_th);
15413 }
15414
15415 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15416 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15417
15418 mod_phy_reg(pi, 0x2e4,
15419 (0x3f << 0), (nvar_baseline_offset0 << 0));
15420
15421 mod_phy_reg(pi, 0x2e4,
15422 (0x3f << 6), (nvar_baseline_offset1 << 6));
15423
15424 if (CHSPEC_IS20(pi->radio_chanspec)) {
15425
15426 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15427 lna1_gain_db);
15428 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15429 lna1_gain_db_2);
15430
15431 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15432 8, lna2_gain_db);
15433 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15434 8, lna2_gain_db);
15435
15436 write_phy_reg(pi, 0x24, clip1md_gaincode);
15437 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15438 } else {
15439 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15440 }
15441 }
15442 }
15443
15444 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15445 {
15446 u16 w1th, hpf_code, currband;
15447 int ctr;
15448 u8 rfseq_updategainu_events[] = {
15449 NPHY_RFSEQ_CMD_RX_GAIN,
15450 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15451 NPHY_RFSEQ_CMD_SET_HPF_BW
15452 };
15453 u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15454 s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15455 s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15456 s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15457 s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15458 s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15459 s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15460 s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15461 s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15462 s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15463 s8 *lna1_gain_db = NULL;
15464 s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15465 s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15466 s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15467 s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15468 s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15469 s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15470 s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15471 s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15472 s8 *lna2_gain_db = NULL;
15473 s8 tiaG_gain_db[] = {
15474 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15475 s8 tiaA_gain_db[] = {
15476 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15477 s8 tiaA_gain_db_rev4[] = {
15478 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15479 s8 tiaA_gain_db_rev5[] = {
15480 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15481 s8 tiaA_gain_db_rev6[] = {
15482 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15483 s8 *tia_gain_db;
15484 s8 tiaG_gainbits[] = {
15485 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15486 s8 tiaA_gainbits[] = {
15487 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15488 s8 tiaA_gainbits_rev4[] = {
15489 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15490 s8 tiaA_gainbits_rev5[] = {
15491 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15492 s8 tiaA_gainbits_rev6[] = {
15493 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15494 s8 *tia_gainbits;
15495 s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15496 s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15497 u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15498 u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15499 u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15500 u16 rfseqG_init_gain_rev5_elna[] = {
15501 0x013f, 0x013f, 0x013f, 0x013f };
15502 u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15503 u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15504 u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15505 u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15506 u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15507 u16 rfseqA_init_gain_rev4_elna[] = {
15508 0x314f, 0x314f, 0x314f, 0x314f };
15509 u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15510 u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15511 u16 *rfseq_init_gain;
15512 u16 initG_gaincode = 0x627e;
15513 u16 initG_gaincode_rev4 = 0x527e;
15514 u16 initG_gaincode_rev5 = 0x427e;
15515 u16 initG_gaincode_rev5_elna = 0x027e;
15516 u16 initG_gaincode_rev6 = 0x527e;
15517 u16 initG_gaincode_rev6_224B0 = 0x427e;
15518 u16 initG_gaincode_rev6_elna = 0x127e;
15519 u16 initA_gaincode = 0x52de;
15520 u16 initA_gaincode_rev4 = 0x629e;
15521 u16 initA_gaincode_rev4_elna = 0x329e;
15522 u16 initA_gaincode_rev5 = 0x729e;
15523 u16 initA_gaincode_rev6 = 0x729e;
15524 u16 init_gaincode;
15525 u16 clip1hiG_gaincode = 0x107e;
15526 u16 clip1hiG_gaincode_rev4 = 0x007e;
15527 u16 clip1hiG_gaincode_rev5 = 0x1076;
15528 u16 clip1hiG_gaincode_rev6 = 0x007e;
15529 u16 clip1hiA_gaincode = 0x00de;
15530 u16 clip1hiA_gaincode_rev4 = 0x029e;
15531 u16 clip1hiA_gaincode_rev5 = 0x029e;
15532 u16 clip1hiA_gaincode_rev6 = 0x029e;
15533 u16 clip1hi_gaincode;
15534 u16 clip1mdG_gaincode = 0x0066;
15535 u16 clip1mdA_gaincode = 0x00ca;
15536 u16 clip1mdA_gaincode_rev4 = 0x1084;
15537 u16 clip1mdA_gaincode_rev5 = 0x2084;
15538 u16 clip1mdA_gaincode_rev6 = 0x2084;
15539 u16 clip1md_gaincode = 0;
15540 u16 clip1loG_gaincode = 0x0074;
15541 u16 clip1loG_gaincode_rev5[] = {
15542 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15543 };
15544 u16 clip1loG_gaincode_rev6[] = {
15545 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15546 };
15547 u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15548 u16 clip1loA_gaincode = 0x00cc;
15549 u16 clip1loA_gaincode_rev4 = 0x0086;
15550 u16 clip1loA_gaincode_rev5 = 0x2086;
15551 u16 clip1loA_gaincode_rev6 = 0x2086;
15552 u16 clip1lo_gaincode;
15553 u8 crsminG_th = 0x18;
15554 u8 crsminG_th_rev5 = 0x18;
15555 u8 crsminG_th_rev6 = 0x18;
15556 u8 crsminA_th = 0x1e;
15557 u8 crsminA_th_rev4 = 0x24;
15558 u8 crsminA_th_rev5 = 0x24;
15559 u8 crsminA_th_rev6 = 0x24;
15560 u8 crsmin_th;
15561 u8 crsminlG_th = 0x18;
15562 u8 crsminlG_th_rev5 = 0x18;
15563 u8 crsminlG_th_rev6 = 0x18;
15564 u8 crsminlA_th = 0x1e;
15565 u8 crsminlA_th_rev4 = 0x24;
15566 u8 crsminlA_th_rev5 = 0x24;
15567 u8 crsminlA_th_rev6 = 0x24;
15568 u8 crsminl_th = 0;
15569 u8 crsminuG_th = 0x18;
15570 u8 crsminuG_th_rev5 = 0x18;
15571 u8 crsminuG_th_rev6 = 0x18;
15572 u8 crsminuA_th = 0x1e;
15573 u8 crsminuA_th_rev4 = 0x24;
15574 u8 crsminuA_th_rev5 = 0x24;
15575 u8 crsminuA_th_rev6 = 0x24;
15576 u8 crsminuA_th_rev6_224B0 = 0x2d;
15577 u8 crsminu_th;
15578 u16 nbclipG_th = 0x20d;
15579 u16 nbclipG_th_rev4 = 0x1a1;
15580 u16 nbclipG_th_rev5 = 0x1d0;
15581 u16 nbclipG_th_rev6 = 0x1d0;
15582 u16 nbclipA_th = 0x1a1;
15583 u16 nbclipA_th_rev4 = 0x107;
15584 u16 nbclipA_th_rev5 = 0x0a9;
15585 u16 nbclipA_th_rev6 = 0x0f0;
15586 u16 nbclip_th = 0;
15587 u8 w1clipG_th = 5;
15588 u8 w1clipG_th_rev5 = 9;
15589 u8 w1clipG_th_rev6 = 5;
15590 u8 w1clipA_th = 25, w1clip_th;
15591 u8 rssi_gain_default = 0x50;
15592 u8 rssiG_gain_rev6_224B0 = 0x50;
15593 u8 rssiA_gain_rev5 = 0x90;
15594 u8 rssiA_gain_rev6 = 0x90;
15595 u8 rssi_gain;
15596 u16 regval[21];
15597 u8 triso;
15598
15599 triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15600 pi->srom_fem2g.triso;
15601
15602 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15603 if (pi->pubpi.radiorev == 5) {
15604 wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15605 } else if (pi->pubpi.radiorev == 7) {
15606 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15607
15608 mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15609 mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15610
15611 } else if ((pi->pubpi.radiorev == 3)
15612 || (pi->pubpi.radiorev == 8)) {
15613 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15614
15615 if (pi->pubpi.radiorev == 8) {
15616 mod_phy_reg(pi, 0x283,
15617 (0xff << 0), (0x44 << 0));
15618 mod_phy_reg(pi, 0x280,
15619 (0xff << 0), (0x44 << 0));
15620 }
15621 } else {
15622 wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15623 }
15624 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15625
15626 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15627
15628 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15629 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15630
15631 currband =
15632 read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15633 if (currband == 0) {
15634 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15635 if (pi->pubpi.radiorev == 11) {
15636 lna1_gain_db = lna1G_gain_db_rev6_224B0;
15637 lna2_gain_db = lna2G_gain_db_rev6_224B0;
15638 rfseq_init_gain =
15639 rfseqG_init_gain_rev6_224B0;
15640 init_gaincode =
15641 initG_gaincode_rev6_224B0;
15642 clip1hi_gaincode =
15643 clip1hiG_gaincode_rev6;
15644 clip1lo_gaincode =
15645 clip1loG_gaincode_rev6_224B0;
15646 nbclip_th = nbclipG_th_rev6;
15647 w1clip_th = w1clipG_th_rev6;
15648 crsmin_th = crsminG_th_rev6;
15649 crsminl_th = crsminlG_th_rev6;
15650 crsminu_th = crsminuG_th_rev6;
15651 rssi_gain = rssiG_gain_rev6_224B0;
15652 } else {
15653 lna1_gain_db = lna1G_gain_db_rev6;
15654 lna2_gain_db = lna2G_gain_db_rev6;
15655 if (pi->sh->boardflags & BFL_EXTLNA) {
15656
15657 rfseq_init_gain =
15658 rfseqG_init_gain_rev6_elna;
15659 init_gaincode =
15660 initG_gaincode_rev6_elna;
15661 } else {
15662 rfseq_init_gain =
15663 rfseqG_init_gain_rev6;
15664 init_gaincode =
15665 initG_gaincode_rev6;
15666 }
15667 clip1hi_gaincode =
15668 clip1hiG_gaincode_rev6;
15669 switch (triso) {
15670 case 0:
15671 clip1lo_gaincode =
15672 clip1loG_gaincode_rev6
15673 [0];
15674 break;
15675 case 1:
15676 clip1lo_gaincode =
15677 clip1loG_gaincode_rev6
15678 [1];
15679 break;
15680 case 2:
15681 clip1lo_gaincode =
15682 clip1loG_gaincode_rev6
15683 [2];
15684 break;
15685 case 3:
15686 default:
15687
15688 clip1lo_gaincode =
15689 clip1loG_gaincode_rev6
15690 [3];
15691 break;
15692 case 4:
15693 clip1lo_gaincode =
15694 clip1loG_gaincode_rev6
15695 [4];
15696 break;
15697 case 5:
15698 clip1lo_gaincode =
15699 clip1loG_gaincode_rev6
15700 [5];
15701 break;
15702 case 6:
15703 clip1lo_gaincode =
15704 clip1loG_gaincode_rev6
15705 [6];
15706 break;
15707 case 7:
15708 clip1lo_gaincode =
15709 clip1loG_gaincode_rev6
15710 [7];
15711 break;
15712 }
15713 nbclip_th = nbclipG_th_rev6;
15714 w1clip_th = w1clipG_th_rev6;
15715 crsmin_th = crsminG_th_rev6;
15716 crsminl_th = crsminlG_th_rev6;
15717 crsminu_th = crsminuG_th_rev6;
15718 rssi_gain = rssi_gain_default;
15719 }
15720 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15721 lna1_gain_db = lna1G_gain_db_rev5;
15722 lna2_gain_db = lna2G_gain_db_rev5;
15723 if (pi->sh->boardflags & BFL_EXTLNA) {
15724
15725 rfseq_init_gain =
15726 rfseqG_init_gain_rev5_elna;
15727 init_gaincode =
15728 initG_gaincode_rev5_elna;
15729 } else {
15730 rfseq_init_gain = rfseqG_init_gain_rev5;
15731 init_gaincode = initG_gaincode_rev5;
15732 }
15733 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15734 switch (triso) {
15735 case 0:
15736 clip1lo_gaincode =
15737 clip1loG_gaincode_rev5[0];
15738 break;
15739 case 1:
15740 clip1lo_gaincode =
15741 clip1loG_gaincode_rev5[1];
15742 break;
15743 case 2:
15744 clip1lo_gaincode =
15745 clip1loG_gaincode_rev5[2];
15746 break;
15747 case 3:
15748
15749 clip1lo_gaincode =
15750 clip1loG_gaincode_rev5[3];
15751 break;
15752 case 4:
15753 clip1lo_gaincode =
15754 clip1loG_gaincode_rev5[4];
15755 break;
15756 case 5:
15757 clip1lo_gaincode =
15758 clip1loG_gaincode_rev5[5];
15759 break;
15760 case 6:
15761 clip1lo_gaincode =
15762 clip1loG_gaincode_rev5[6];
15763 break;
15764 case 7:
15765 clip1lo_gaincode =
15766 clip1loG_gaincode_rev5[7];
15767 break;
15768 default:
15769 clip1lo_gaincode =
15770 clip1loG_gaincode_rev5[3];
15771 break;
15772 }
15773 nbclip_th = nbclipG_th_rev5;
15774 w1clip_th = w1clipG_th_rev5;
15775 crsmin_th = crsminG_th_rev5;
15776 crsminl_th = crsminlG_th_rev5;
15777 crsminu_th = crsminuG_th_rev5;
15778 rssi_gain = rssi_gain_default;
15779 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15780 lna1_gain_db = lna1G_gain_db_rev4;
15781 lna2_gain_db = lna2G_gain_db;
15782 rfseq_init_gain = rfseqG_init_gain_rev4;
15783 init_gaincode = initG_gaincode_rev4;
15784 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15785 clip1lo_gaincode = clip1loG_gaincode;
15786 nbclip_th = nbclipG_th_rev4;
15787 w1clip_th = w1clipG_th;
15788 crsmin_th = crsminG_th;
15789 crsminl_th = crsminlG_th;
15790 crsminu_th = crsminuG_th;
15791 rssi_gain = rssi_gain_default;
15792 } else {
15793 lna1_gain_db = lna1G_gain_db;
15794 lna2_gain_db = lna2G_gain_db;
15795 rfseq_init_gain = rfseqG_init_gain;
15796 init_gaincode = initG_gaincode;
15797 clip1hi_gaincode = clip1hiG_gaincode;
15798 clip1lo_gaincode = clip1loG_gaincode;
15799 nbclip_th = nbclipG_th;
15800 w1clip_th = w1clipG_th;
15801 crsmin_th = crsminG_th;
15802 crsminl_th = crsminlG_th;
15803 crsminu_th = crsminuG_th;
15804 rssi_gain = rssi_gain_default;
15805 }
15806 tia_gain_db = tiaG_gain_db;
15807 tia_gainbits = tiaG_gainbits;
15808 clip1md_gaincode = clip1mdG_gaincode;
15809 } else {
15810 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15811 lna1_gain_db = lna1A_gain_db_rev6;
15812 lna2_gain_db = lna2A_gain_db_rev6;
15813 tia_gain_db = tiaA_gain_db_rev6;
15814 tia_gainbits = tiaA_gainbits_rev6;
15815 rfseq_init_gain = rfseqA_init_gain_rev6;
15816 init_gaincode = initA_gaincode_rev6;
15817 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15818 clip1md_gaincode = clip1mdA_gaincode_rev6;
15819 clip1lo_gaincode = clip1loA_gaincode_rev6;
15820 crsmin_th = crsminA_th_rev6;
15821 crsminl_th = crsminlA_th_rev6;
15822 if ((pi->pubpi.radiorev == 11) &&
15823 (CHSPEC_IS40(pi->radio_chanspec) == 0))
15824 crsminu_th = crsminuA_th_rev6_224B0;
15825 else
15826 crsminu_th = crsminuA_th_rev6;
15827
15828 nbclip_th = nbclipA_th_rev6;
15829 rssi_gain = rssiA_gain_rev6;
15830 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15831 lna1_gain_db = lna1A_gain_db_rev5;
15832 lna2_gain_db = lna2A_gain_db_rev5;
15833 tia_gain_db = tiaA_gain_db_rev5;
15834 tia_gainbits = tiaA_gainbits_rev5;
15835 rfseq_init_gain = rfseqA_init_gain_rev5;
15836 init_gaincode = initA_gaincode_rev5;
15837 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15838 clip1md_gaincode = clip1mdA_gaincode_rev5;
15839 clip1lo_gaincode = clip1loA_gaincode_rev5;
15840 crsmin_th = crsminA_th_rev5;
15841 crsminl_th = crsminlA_th_rev5;
15842 crsminu_th = crsminuA_th_rev5;
15843 nbclip_th = nbclipA_th_rev5;
15844 rssi_gain = rssiA_gain_rev5;
15845 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15846 lna1_gain_db = lna1A_gain_db_rev4;
15847 lna2_gain_db = lna2A_gain_db_rev4;
15848 tia_gain_db = tiaA_gain_db_rev4;
15849 tia_gainbits = tiaA_gainbits_rev4;
15850 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15851
15852 rfseq_init_gain =
15853 rfseqA_init_gain_rev4_elna;
15854 init_gaincode =
15855 initA_gaincode_rev4_elna;
15856 } else {
15857 rfseq_init_gain = rfseqA_init_gain_rev4;
15858 init_gaincode = initA_gaincode_rev4;
15859 }
15860 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15861 clip1md_gaincode = clip1mdA_gaincode_rev4;
15862 clip1lo_gaincode = clip1loA_gaincode_rev4;
15863 crsmin_th = crsminA_th_rev4;
15864 crsminl_th = crsminlA_th_rev4;
15865 crsminu_th = crsminuA_th_rev4;
15866 nbclip_th = nbclipA_th_rev4;
15867 rssi_gain = rssi_gain_default;
15868 } else {
15869 lna1_gain_db = lna1A_gain_db;
15870 lna2_gain_db = lna2A_gain_db;
15871 tia_gain_db = tiaA_gain_db;
15872 tia_gainbits = tiaA_gainbits;
15873 rfseq_init_gain = rfseqA_init_gain;
15874 init_gaincode = initA_gaincode;
15875 clip1hi_gaincode = clip1hiA_gaincode;
15876 clip1md_gaincode = clip1mdA_gaincode;
15877 clip1lo_gaincode = clip1loA_gaincode;
15878 crsmin_th = crsminA_th;
15879 crsminl_th = crsminlA_th;
15880 crsminu_th = crsminuA_th;
15881 nbclip_th = nbclipA_th;
15882 rssi_gain = rssi_gain_default;
15883 }
15884 w1clip_th = w1clipA_th;
15885 }
15886
15887 write_radio_reg(pi,
15888 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15889 RADIO_2056_RX0), 0x17);
15890 write_radio_reg(pi,
15891 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15892 RADIO_2056_RX1), 0x17);
15893
15894 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15895 0xf0);
15896 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15897 0xf0);
15898
15899 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15900 0x0);
15901 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15902 0x0);
15903
15904 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15905 rssi_gain);
15906 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15907 rssi_gain);
15908
15909 write_radio_reg(pi,
15910 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15911 RADIO_2056_RX0), 0x17);
15912 write_radio_reg(pi,
15913 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15914 RADIO_2056_RX1), 0x17);
15915
15916 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15917 0xFF);
15918 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15919 0xFF);
15920
15921 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15922 8, lna1_gain_db);
15923 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15924 8, lna1_gain_db);
15925
15926 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15927 8, lna2_gain_db);
15928 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15929 8, lna2_gain_db);
15930
15931 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15932 8, tia_gain_db);
15933 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15934 8, tia_gain_db);
15935
15936 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15937 8, tia_gainbits);
15938 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15939 8, tia_gainbits);
15940
15941 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15942 8, &lpf_gain_db);
15943 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15944 8, &lpf_gain_db);
15945 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15946 8, &lpf_gainbits);
15947 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15948 8, &lpf_gainbits);
15949
15950 write_phy_reg(pi, 0x20, init_gaincode);
15951 write_phy_reg(pi, 0x2a7, init_gaincode);
15952
15953 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15954 pi->pubpi.phy_corenum, 0x106, 16,
15955 rfseq_init_gain);
15956
15957 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15958 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15959
15960 write_phy_reg(pi, 0x24, clip1md_gaincode);
15961 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15962
15963 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15964 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15965
15966 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15967 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15968 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15969
15970 write_phy_reg(pi, 0x2b, nbclip_th);
15971 write_phy_reg(pi, 0x41, nbclip_th);
15972
15973 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15974 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15975
15976 write_phy_reg(pi, 0x150, 0x809c);
15977
15978 } else {
15979
15980 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15981 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15982
15983 write_phy_reg(pi, 0x2b, 0x84);
15984 write_phy_reg(pi, 0x41, 0x84);
15985
15986 if (CHSPEC_IS20(pi->radio_chanspec)) {
15987 write_phy_reg(pi, 0x6b, 0x2b);
15988 write_phy_reg(pi, 0x6c, 0x2b);
15989 write_phy_reg(pi, 0x6d, 0x9);
15990 write_phy_reg(pi, 0x6e, 0x9);
15991 }
15992
15993 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15994 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15995 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15996
15997 if (CHSPEC_IS20(pi->radio_chanspec)) {
15998 mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15999 mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16000
16001 mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16002 mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16003 }
16004
16005 write_phy_reg(pi, 0x150, 0x809c);
16006
16007 if (pi->nphy_gain_boost)
16008 if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16009 (CHSPEC_IS40(pi->radio_chanspec)))
16010 hpf_code = 4;
16011 else
16012 hpf_code = 5;
16013 else if (CHSPEC_IS40(pi->radio_chanspec))
16014 hpf_code = 6;
16015 else
16016 hpf_code = 7;
16017
16018 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16019 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16020
16021 for (ctr = 0; ctr < 4; ctr++)
16022 regval[ctr] = (hpf_code << 8) | 0x7c;
16023 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024
16025 wlc_phy_adjust_lnagaintbl_nphy(pi);
16026
16027 if (pi->nphy_elna_gain_config) {
16028 regval[0] = 0;
16029 regval[1] = 1;
16030 regval[2] = 1;
16031 regval[3] = 1;
16032 wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16033 wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16034
16035 for (ctr = 0; ctr < 4; ctr++)
16036 regval[ctr] = (hpf_code << 8) | 0x74;
16037 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16038 }
16039
16040 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16041 for (ctr = 0; ctr < 21; ctr++)
16042 regval[ctr] = 3 * ctr;
16043 wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16044 wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16045
16046 for (ctr = 0; ctr < 21; ctr++)
16047 regval[ctr] = (u16) ctr;
16048 wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16049 wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16050 }
16051
16052 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16053 rfseq_updategainu_events,
16054 rfseq_updategainu_dlys,
16055 sizeof(rfseq_updategainu_events) /
16056 sizeof(rfseq_updategainu_events[0]));
16057
16058 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16059
16060 if (CHSPEC_IS2G(pi->radio_chanspec))
16061 mod_phy_reg(pi,
16062 (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16063 0x7f, 0x4);
16064 }
16065 }
16066
16067 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16068 {
16069 u8 rfseq_rx2tx_events[] = {
16070 NPHY_RFSEQ_CMD_NOP,
16071 NPHY_RFSEQ_CMD_RXG_FBW,
16072 NPHY_RFSEQ_CMD_TR_SWITCH,
16073 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16074 NPHY_RFSEQ_CMD_RXPD_TXPD,
16075 NPHY_RFSEQ_CMD_TX_GAIN,
16076 NPHY_RFSEQ_CMD_EXT_PA
16077 };
16078 u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16079 u8 rfseq_tx2rx_events[] = {
16080 NPHY_RFSEQ_CMD_NOP,
16081 NPHY_RFSEQ_CMD_EXT_PA,
16082 NPHY_RFSEQ_CMD_TX_GAIN,
16083 NPHY_RFSEQ_CMD_RXPD_TXPD,
16084 NPHY_RFSEQ_CMD_TR_SWITCH,
16085 NPHY_RFSEQ_CMD_RXG_FBW,
16086 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16087 };
16088 u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16089 u8 rfseq_tx2rx_events_rev3[] = {
16090 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16091 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16092 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16093 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16094 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16095 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16096 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16097 NPHY_REV3_RFSEQ_CMD_END
16098 };
16099 u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16100 u8 rfseq_rx2tx_events_rev3[] = {
16101 NPHY_REV3_RFSEQ_CMD_NOP,
16102 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16103 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16104 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16105 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16106 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16107 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16108 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16109 NPHY_REV3_RFSEQ_CMD_END
16110 };
16111 u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16112
16113 u8 rfseq_rx2tx_events_rev3_ipa[] = {
16114 NPHY_REV3_RFSEQ_CMD_NOP,
16115 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16116 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16117 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16118 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16119 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16120 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16121 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16122 NPHY_REV3_RFSEQ_CMD_END
16123 };
16124 u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16125 u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16126
16127 s16 alpha0, alpha1, alpha2;
16128 s16 beta0, beta1, beta2;
16129 u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16130 stbc_data_weights;
16131 u8 chan_freq_range = 0;
16132 u16 dac_control = 0x0002;
16133 u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16134 u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16135 u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16136 u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16137 u16 *aux_adc_vmid;
16138 u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16139 u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16140 u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16141 u16 *aux_adc_gain;
16142 u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16143 u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16144 s32 min_nvar_val = 0x18d;
16145 s32 min_nvar_offset_6mbps = 20;
16146 u8 pdetrange;
16147 u8 triso;
16148 u16 regval;
16149 u16 afectrl_adc_ctrl1_rev7 = 0x20;
16150 u16 afectrl_adc_ctrl2_rev7 = 0x0;
16151 u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16152 u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16153 u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16154 u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16155 u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16156 u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16157 u16 ipalvlshift_3p3_war_en = 0;
16158 u16 rccal_bcap_val, rccal_scap_val;
16159 u16 rccal_tx20_11b_bcap = 0;
16160 u16 rccal_tx20_11b_scap = 0;
16161 u16 rccal_tx20_11n_bcap = 0;
16162 u16 rccal_tx20_11n_scap = 0;
16163 u16 rccal_tx40_11n_bcap = 0;
16164 u16 rccal_tx40_11n_scap = 0;
16165 u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16166 u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16167 u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16168 u16 tx_lpf_bw_ofdm_20mhz = 0;
16169 u16 tx_lpf_bw_ofdm_40mhz = 0;
16170 u16 tx_lpf_bw_11b = 0;
16171 u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16172 u16 txgm_idac_bleed = 0;
16173 bool rccal_ovrd = false;
16174 u16 freq;
16175 int coreNum;
16176
16177 if (CHSPEC_IS5G(pi->radio_chanspec))
16178 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16179 else
16180 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16181
16182 if (pi->phyhang_avoid)
16183 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16184
16185 or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16186
16187 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16188
16189 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16190 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16191
16192 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16193 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16194 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16195 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16196 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16197 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16198 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16199 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16200 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16201 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16202 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16203 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16204 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16205 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16206 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16207 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16208 }
16209
16210 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16211 write_phy_reg(pi, 0x23f, 0x1b0);
16212 write_phy_reg(pi, 0x240, 0x1b0);
16213 }
16214
16215 if (NREV_GE(pi->pubpi.phy_rev, 8))
16216 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16217
16218 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16219 &dac_control);
16220 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16221 &dac_control);
16222
16223 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16224 1, 0, 32, &leg_data_weights);
16225 leg_data_weights = leg_data_weights & 0xffffff;
16226 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16227 1, 0, 32, &leg_data_weights);
16228
16229 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16230 2, 0x15e, 16,
16231 rfseq_rx2tx_dacbufpu_rev7);
16232 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16233 rfseq_rx2tx_dacbufpu_rev7);
16234
16235 if (PHY_IPA(pi))
16236 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16237 rfseq_rx2tx_events_rev3_ipa,
16238 rfseq_rx2tx_dlys_rev3_ipa,
16239 ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16240
16241 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16242 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16243
16244 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16245 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16246 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16247
16248 if (PHY_IPA(pi)) {
16249
16250 if (((pi->pubpi.radiorev == 5)
16251 && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16252 || (pi->pubpi.radiorev == 7)
16253 || (pi->pubpi.radiorev == 8)) {
16254
16255 rccal_bcap_val =
16256 read_radio_reg(
16257 pi,
16258 RADIO_2057_RCCAL_BCAP_VAL);
16259 rccal_scap_val =
16260 read_radio_reg(
16261 pi,
16262 RADIO_2057_RCCAL_SCAP_VAL);
16263
16264 rccal_tx20_11b_bcap = rccal_bcap_val;
16265 rccal_tx20_11b_scap = rccal_scap_val;
16266
16267 if ((pi->pubpi.radiorev == 5) &&
16268 (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16269
16270 rccal_tx20_11n_bcap = rccal_bcap_val;
16271 rccal_tx20_11n_scap = rccal_scap_val;
16272 rccal_tx40_11n_bcap = 0xc;
16273 rccal_tx40_11n_scap = 0xc;
16274
16275 rccal_ovrd = true;
16276
16277 } else if ((pi->pubpi.radiorev == 7)
16278 || (pi->pubpi.radiorev == 8)) {
16279
16280 tx_lpf_bw_ofdm_20mhz = 4;
16281 tx_lpf_bw_11b = 1;
16282
16283 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16284 rccal_tx20_11n_bcap = 0xc;
16285 rccal_tx20_11n_scap = 0xc;
16286 rccal_tx40_11n_bcap = 0xa;
16287 rccal_tx40_11n_scap = 0xa;
16288 } else {
16289 rccal_tx20_11n_bcap = 0x14;
16290 rccal_tx20_11n_scap = 0x14;
16291 rccal_tx40_11n_bcap = 0xf;
16292 rccal_tx40_11n_scap = 0xf;
16293 }
16294
16295 rccal_ovrd = true;
16296 }
16297 }
16298
16299 } else {
16300
16301 if (pi->pubpi.radiorev == 5) {
16302
16303 tx_lpf_bw_ofdm_20mhz = 1;
16304 tx_lpf_bw_ofdm_40mhz = 3;
16305
16306 rccal_bcap_val =
16307 read_radio_reg(
16308 pi,
16309 RADIO_2057_RCCAL_BCAP_VAL);
16310 rccal_scap_val =
16311 read_radio_reg(
16312 pi,
16313 RADIO_2057_RCCAL_SCAP_VAL);
16314
16315 rccal_tx20_11b_bcap = rccal_bcap_val;
16316 rccal_tx20_11b_scap = rccal_scap_val;
16317
16318 rccal_tx20_11n_bcap = 0x13;
16319 rccal_tx20_11n_scap = 0x11;
16320 rccal_tx40_11n_bcap = 0x13;
16321 rccal_tx40_11n_scap = 0x11;
16322
16323 rccal_ovrd = true;
16324 }
16325 }
16326
16327 if (rccal_ovrd) {
16328
16329 rx2tx_lpf_rc_lut_tx20_11b =
16330 (rccal_tx20_11b_bcap << 8) |
16331 (rccal_tx20_11b_scap << 3) |
16332 tx_lpf_bw_11b;
16333 rx2tx_lpf_rc_lut_tx20_11n =
16334 (rccal_tx20_11n_bcap << 8) |
16335 (rccal_tx20_11n_scap << 3) |
16336 tx_lpf_bw_ofdm_20mhz;
16337 rx2tx_lpf_rc_lut_tx40_11n =
16338 (rccal_tx40_11n_bcap << 8) |
16339 (rccal_tx40_11n_scap << 3) |
16340 tx_lpf_bw_ofdm_40mhz;
16341
16342 for (coreNum = 0; coreNum <= 1; coreNum++) {
16343 wlc_phy_table_write_nphy(
16344 pi, NPHY_TBL_ID_RFSEQ,
16345 1,
16346 0x152 + coreNum * 0x10,
16347 16,
16348 &rx2tx_lpf_rc_lut_tx20_11b);
16349 wlc_phy_table_write_nphy(
16350 pi, NPHY_TBL_ID_RFSEQ,
16351 1,
16352 0x153 + coreNum * 0x10,
16353 16,
16354 &rx2tx_lpf_rc_lut_tx20_11n);
16355 wlc_phy_table_write_nphy(
16356 pi, NPHY_TBL_ID_RFSEQ,
16357 1,
16358 0x154 + coreNum * 0x10,
16359 16,
16360 &rx2tx_lpf_rc_lut_tx20_11n);
16361 wlc_phy_table_write_nphy(
16362 pi, NPHY_TBL_ID_RFSEQ,
16363 1,
16364 0x155 + coreNum * 0x10,
16365 16,
16366 &rx2tx_lpf_rc_lut_tx40_11n);
16367 wlc_phy_table_write_nphy(
16368 pi, NPHY_TBL_ID_RFSEQ,
16369 1,
16370 0x156 + coreNum * 0x10,
16371 16,
16372 &rx2tx_lpf_rc_lut_tx40_11n);
16373 wlc_phy_table_write_nphy(
16374 pi, NPHY_TBL_ID_RFSEQ,
16375 1,
16376 0x157 + coreNum * 0x10,
16377 16,
16378 &rx2tx_lpf_rc_lut_tx40_11n);
16379 wlc_phy_table_write_nphy(
16380 pi, NPHY_TBL_ID_RFSEQ,
16381 1,
16382 0x158 + coreNum * 0x10,
16383 16,
16384 &rx2tx_lpf_rc_lut_tx40_11n);
16385 wlc_phy_table_write_nphy(
16386 pi, NPHY_TBL_ID_RFSEQ,
16387 1,
16388 0x159 + coreNum * 0x10,
16389 16,
16390 &rx2tx_lpf_rc_lut_tx40_11n);
16391 }
16392
16393 wlc_phy_rfctrl_override_nphy_rev7(
16394 pi, (0x1 << 4),
16395 1, 0x3, 0,
16396 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16397 }
16398
16399 write_phy_reg(pi, 0x32f, 0x3);
16400
16401 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16402 wlc_phy_rfctrl_override_nphy_rev7(
16403 pi, (0x1 << 2),
16404 1, 0x3, 0,
16405 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16406
16407 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16408 (pi->pubpi.radiorev == 6)) {
16409 if ((pi->sh->sromrev >= 8)
16410 && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16411 ipalvlshift_3p3_war_en = 1;
16412
16413 if (ipalvlshift_3p3_war_en) {
16414 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16415 0x5);
16416 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16417 0x30);
16418 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16419 or_radio_reg(pi,
16420 RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16421 0x1);
16422 or_radio_reg(pi,
16423 RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16424 0x1);
16425
16426 ipa2g_mainbias = 0x1f;
16427
16428 ipa2g_casconv = 0x6f;
16429
16430 ipa2g_biasfilt = 0xaa;
16431 } else {
16432
16433 ipa2g_mainbias = 0x2b;
16434
16435 ipa2g_casconv = 0x7f;
16436
16437 ipa2g_biasfilt = 0xee;
16438 }
16439
16440 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16441 for (coreNum = 0; coreNum <= 1; coreNum++) {
16442 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16443 coreNum, IPA2G_IMAIN,
16444 ipa2g_mainbias);
16445 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16446 coreNum, IPA2G_CASCONV,
16447 ipa2g_casconv);
16448 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16449 coreNum,
16450 IPA2G_BIAS_FILTER,
16451 ipa2g_biasfilt);
16452 }
16453 }
16454 }
16455
16456 if (PHY_IPA(pi)) {
16457 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16458 if ((pi->pubpi.radiorev == 3)
16459 || (pi->pubpi.radiorev == 4)
16460 || (pi->pubpi.radiorev == 6))
16461 txgm_idac_bleed = 0x7f;
16462
16463 for (coreNum = 0; coreNum <= 1; coreNum++) {
16464 if (txgm_idac_bleed != 0)
16465 WRITE_RADIO_REG4(
16466 pi, RADIO_2057,
16467 CORE, coreNum,
16468 TXGM_IDAC_BLEED,
16469 txgm_idac_bleed);
16470 }
16471
16472 if (pi->pubpi.radiorev == 5) {
16473
16474 for (coreNum = 0; coreNum <= 1;
16475 coreNum++) {
16476 WRITE_RADIO_REG4(pi, RADIO_2057,
16477 CORE, coreNum,
16478 IPA2G_CASCONV,
16479 0x13);
16480 WRITE_RADIO_REG4(pi, RADIO_2057,
16481 CORE, coreNum,
16482 IPA2G_IMAIN,
16483 0x1f);
16484 WRITE_RADIO_REG4(
16485 pi, RADIO_2057,
16486 CORE, coreNum,
16487 IPA2G_BIAS_FILTER,
16488 0xee);
16489 WRITE_RADIO_REG4(pi, RADIO_2057,
16490 CORE, coreNum,
16491 PAD2G_IDACS,
16492 0x8a);
16493 WRITE_RADIO_REG4(
16494 pi, RADIO_2057,
16495 CORE, coreNum,
16496 PAD_BIAS_FILTER_BWS,
16497 0x3e);
16498 }
16499
16500 } else if ((pi->pubpi.radiorev == 7)
16501 || (pi->pubpi.radiorev == 8)) {
16502
16503 if (CHSPEC_IS40(pi->radio_chanspec) ==
16504 0) {
16505 WRITE_RADIO_REG4(pi, RADIO_2057,
16506 CORE, 0,
16507 IPA2G_IMAIN,
16508 0x14);
16509 WRITE_RADIO_REG4(pi, RADIO_2057,
16510 CORE, 1,
16511 IPA2G_IMAIN,
16512 0x12);
16513 } else {
16514 WRITE_RADIO_REG4(pi, RADIO_2057,
16515 CORE, 0,
16516 IPA2G_IMAIN,
16517 0x16);
16518 WRITE_RADIO_REG4(pi, RADIO_2057,
16519 CORE, 1,
16520 IPA2G_IMAIN,
16521 0x16);
16522 }
16523 }
16524
16525 } else {
16526 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16527 pi->radio_chanspec));
16528 if (((freq >= 5180) && (freq <= 5230))
16529 || ((freq >= 5745) && (freq <= 5805))) {
16530 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16531 0, IPA5G_BIAS_FILTER,
16532 0xff);
16533 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16534 1, IPA5G_BIAS_FILTER,
16535 0xff);
16536 }
16537 }
16538 } else {
16539
16540 if (pi->pubpi.radiorev != 5) {
16541 for (coreNum = 0; coreNum <= 1; coreNum++) {
16542 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16543 coreNum,
16544 TXMIX2G_TUNE_BOOST_PU,
16545 0x61);
16546 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16547 coreNum,
16548 TXGM_IDAC_BLEED, 0x70);
16549 }
16550 }
16551 }
16552
16553 if (pi->pubpi.radiorev == 4) {
16554 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16555 0x05, 16,
16556 &afectrl_adc_ctrl1_rev7);
16557 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16558 0x15, 16,
16559 &afectrl_adc_ctrl1_rev7);
16560
16561 for (coreNum = 0; coreNum <= 1; coreNum++) {
16562 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16563 AFE_VCM_CAL_MASTER, 0x0);
16564 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16565 AFE_SET_VCM_I, 0x3f);
16566 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16567 AFE_SET_VCM_Q, 0x3f);
16568 }
16569 } else {
16570 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16571 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16572 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16573 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16574
16575 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16576 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16577 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16578 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16579
16580 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16581 0x05, 16,
16582 &afectrl_adc_ctrl2_rev7);
16583 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16584 0x15, 16,
16585 &afectrl_adc_ctrl2_rev7);
16586
16587 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16588 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16589 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16590 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16591 }
16592
16593 write_phy_reg(pi, 0x6a, 0x2);
16594
16595 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16596 &min_nvar_offset_6mbps);
16597
16598 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16599 &rfseq_pktgn_lpf_hpc_rev7);
16600
16601 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16602 &rfseq_pktgn_lpf_h_hpc_rev7);
16603
16604 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16605 &rfseq_htpktgn_lpf_hpc_rev7);
16606
16607 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16608 &rfseq_cckpktgn_lpf_hpc_rev7);
16609
16610 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16611 &rfseq_tx2rx_lpf_h_hpc_rev7);
16612
16613 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16614 &rfseq_rx2tx_lpf_h_hpc_rev7);
16615
16616 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16617 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16618 32, &min_nvar_val);
16619 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16620 127, 32, &min_nvar_val);
16621 } else {
16622 min_nvar_val = noise_var_tbl_rev7[3];
16623 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16624 32, &min_nvar_val);
16625
16626 min_nvar_val = noise_var_tbl_rev7[127];
16627 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16628 127, 32, &min_nvar_val);
16629 }
16630
16631 wlc_phy_workarounds_nphy_gainctrl(pi);
16632
16633 pdetrange =
16634 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16635 pdetrange : pi->srom_fem2g.pdetrange;
16636
16637 if (pdetrange == 0) {
16638 chan_freq_range =
16639 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16640 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16641 aux_adc_vmid_rev7_core0[3] = 0x70;
16642 aux_adc_vmid_rev7_core1[3] = 0x70;
16643 aux_adc_gain_rev7[3] = 2;
16644 } else {
16645 aux_adc_vmid_rev7_core0[3] = 0x80;
16646 aux_adc_vmid_rev7_core1[3] = 0x80;
16647 aux_adc_gain_rev7[3] = 3;
16648 }
16649 } else if (pdetrange == 1) {
16650 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16651 aux_adc_vmid_rev7_core0[3] = 0x7c;
16652 aux_adc_vmid_rev7_core1[3] = 0x7c;
16653 aux_adc_gain_rev7[3] = 2;
16654 } else {
16655 aux_adc_vmid_rev7_core0[3] = 0x8c;
16656 aux_adc_vmid_rev7_core1[3] = 0x8c;
16657 aux_adc_gain_rev7[3] = 1;
16658 }
16659 } else if (pdetrange == 2) {
16660 if (pi->pubpi.radioid == BCM2057_ID) {
16661 if ((pi->pubpi.radiorev == 5)
16662 || (pi->pubpi.radiorev == 7)
16663 || (pi->pubpi.radiorev == 8)) {
16664 if (chan_freq_range ==
16665 WL_CHAN_FREQ_RANGE_2G) {
16666 aux_adc_vmid_rev7_core0[3] =
16667 0x8c;
16668 aux_adc_vmid_rev7_core1[3] =
16669 0x8c;
16670 aux_adc_gain_rev7[3] = 0;
16671 } else {
16672 aux_adc_vmid_rev7_core0[3] =
16673 0x96;
16674 aux_adc_vmid_rev7_core1[3] =
16675 0x96;
16676 aux_adc_gain_rev7[3] = 0;
16677 }
16678 }
16679 }
16680
16681 } else if (pdetrange == 3) {
16682 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16683 aux_adc_vmid_rev7_core0[3] = 0x89;
16684 aux_adc_vmid_rev7_core1[3] = 0x89;
16685 aux_adc_gain_rev7[3] = 0;
16686 }
16687
16688 } else if (pdetrange == 5) {
16689
16690 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16691 aux_adc_vmid_rev7_core0[3] = 0x80;
16692 aux_adc_vmid_rev7_core1[3] = 0x80;
16693 aux_adc_gain_rev7[3] = 3;
16694 } else {
16695 aux_adc_vmid_rev7_core0[3] = 0x70;
16696 aux_adc_vmid_rev7_core1[3] = 0x70;
16697 aux_adc_gain_rev7[3] = 2;
16698 }
16699 }
16700
16701 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16702 &aux_adc_vmid_rev7_core0);
16703 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16704 &aux_adc_vmid_rev7_core1);
16705 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16706 &aux_adc_gain_rev7);
16707 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16708 &aux_adc_gain_rev7);
16709
16710 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16711
16712 write_phy_reg(pi, 0x23f, 0x1f8);
16713 write_phy_reg(pi, 0x240, 0x1f8);
16714
16715 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16716 1, 0, 32, &leg_data_weights);
16717 leg_data_weights = leg_data_weights & 0xffffff;
16718 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16719 1, 0, 32, &leg_data_weights);
16720
16721 alpha0 = 293;
16722 alpha1 = 435;
16723 alpha2 = 261;
16724 beta0 = 366;
16725 beta1 = 205;
16726 beta2 = 32;
16727 write_phy_reg(pi, 0x145, alpha0);
16728 write_phy_reg(pi, 0x146, alpha1);
16729 write_phy_reg(pi, 0x147, alpha2);
16730 write_phy_reg(pi, 0x148, beta0);
16731 write_phy_reg(pi, 0x149, beta1);
16732 write_phy_reg(pi, 0x14a, beta2);
16733
16734 write_phy_reg(pi, 0x38, 0xC);
16735 write_phy_reg(pi, 0x2ae, 0xC);
16736
16737 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16738 rfseq_tx2rx_events_rev3,
16739 rfseq_tx2rx_dlys_rev3,
16740 ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16741
16742 if (PHY_IPA(pi))
16743 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16744 rfseq_rx2tx_events_rev3_ipa,
16745 rfseq_rx2tx_dlys_rev3_ipa,
16746 ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16747
16748 if ((pi->sh->hw_phyrxchain != 0x3) &&
16749 (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16750
16751 if (PHY_IPA(pi)) {
16752 rfseq_rx2tx_dlys_rev3[5] = 59;
16753 rfseq_rx2tx_dlys_rev3[6] = 1;
16754 rfseq_rx2tx_events_rev3[7] =
16755 NPHY_REV3_RFSEQ_CMD_END;
16756 }
16757
16758 wlc_phy_set_rfseq_nphy(
16759 pi, NPHY_RFSEQ_RX2TX,
16760 rfseq_rx2tx_events_rev3,
16761 rfseq_rx2tx_dlys_rev3,
16762 ARRAY_SIZE(rfseq_rx2tx_events_rev3));
16763 }
16764
16765 if (CHSPEC_IS2G(pi->radio_chanspec))
16766 write_phy_reg(pi, 0x6a, 0x2);
16767 else
16768 write_phy_reg(pi, 0x6a, 0x9c40);
16769
16770 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16771
16772 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16773 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16774 32, &min_nvar_val);
16775 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16776 127, 32, &min_nvar_val);
16777 } else {
16778 min_nvar_val = noise_var_tbl_rev3[3];
16779 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16780 32, &min_nvar_val);
16781
16782 min_nvar_val = noise_var_tbl_rev3[127];
16783 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16784 127, 32, &min_nvar_val);
16785 }
16786
16787 wlc_phy_workarounds_nphy_gainctrl(pi);
16788
16789 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16790 &dac_control);
16791 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16792 &dac_control);
16793
16794 pdetrange =
16795 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16796 pdetrange : pi->srom_fem2g.pdetrange;
16797
16798 if (pdetrange == 0) {
16799 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16800 aux_adc_vmid = aux_adc_vmid_rev4;
16801 aux_adc_gain = aux_adc_gain_rev4;
16802 } else {
16803 aux_adc_vmid = aux_adc_vmid_rev3;
16804 aux_adc_gain = aux_adc_gain_rev3;
16805 }
16806 chan_freq_range =
16807 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16808 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16809 switch (chan_freq_range) {
16810 case WL_CHAN_FREQ_RANGE_5GL:
16811 aux_adc_vmid[3] = 0x89;
16812 aux_adc_gain[3] = 0;
16813 break;
16814 case WL_CHAN_FREQ_RANGE_5GM:
16815 aux_adc_vmid[3] = 0x89;
16816 aux_adc_gain[3] = 0;
16817 break;
16818 case WL_CHAN_FREQ_RANGE_5GH:
16819 aux_adc_vmid[3] = 0x89;
16820 aux_adc_gain[3] = 0;
16821 break;
16822 default:
16823 break;
16824 }
16825 }
16826 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16827 0x08, 16, aux_adc_vmid);
16828 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16829 0x18, 16, aux_adc_vmid);
16830 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16831 0x0c, 16, aux_adc_gain);
16832 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16833 0x1c, 16, aux_adc_gain);
16834 } else if (pdetrange == 1) {
16835 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16836 0x08, 16, sk_adc_vmid);
16837 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16838 0x18, 16, sk_adc_vmid);
16839 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16840 0x0c, 16, sk_adc_gain);
16841 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16842 0x1c, 16, sk_adc_gain);
16843 } else if (pdetrange == 2) {
16844
16845 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16846 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16847
16848 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16849 chan_freq_range =
16850 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16851 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16852 bcm_adc_vmid[3] = 0x8e;
16853 bcm_adc_gain[3] = 0x03;
16854 } else {
16855 bcm_adc_vmid[3] = 0x94;
16856 bcm_adc_gain[3] = 0x03;
16857 }
16858 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16859 bcm_adc_vmid[3] = 0x84;
16860 bcm_adc_gain[3] = 0x02;
16861 }
16862
16863 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16864 0x08, 16, bcm_adc_vmid);
16865 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16866 0x18, 16, bcm_adc_vmid);
16867 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16868 0x0c, 16, bcm_adc_gain);
16869 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16870 0x1c, 16, bcm_adc_gain);
16871 } else if (pdetrange == 3) {
16872 chan_freq_range =
16873 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16874 if ((NREV_GE(pi->pubpi.phy_rev, 4))
16875 && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16876
16877 u16 auxadc_vmid[] = {
16878 0xa2, 0xb4, 0xb4, 0x270
16879 };
16880 u16 auxadc_gain[] = {
16881 0x02, 0x02, 0x02, 0x00
16882 };
16883
16884 wlc_phy_table_write_nphy(pi,
16885 NPHY_TBL_ID_AFECTRL, 4,
16886 0x08, 16, auxadc_vmid);
16887 wlc_phy_table_write_nphy(pi,
16888 NPHY_TBL_ID_AFECTRL, 4,
16889 0x18, 16, auxadc_vmid);
16890 wlc_phy_table_write_nphy(pi,
16891 NPHY_TBL_ID_AFECTRL, 4,
16892 0x0c, 16, auxadc_gain);
16893 wlc_phy_table_write_nphy(pi,
16894 NPHY_TBL_ID_AFECTRL, 4,
16895 0x1c, 16, auxadc_gain);
16896 }
16897 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16898 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16899 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16900 u16 Vmid[2], Av[2];
16901
16902 chan_freq_range =
16903 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16904 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16905 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16906 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16907 Av[0] = (pdetrange == 4) ? 2 : 0;
16908 Av[1] = (pdetrange == 4) ? 2 : 0;
16909 } else {
16910 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16911 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16912 Av[0] = (pdetrange == 4) ? 2 : 0;
16913 Av[1] = (pdetrange == 4) ? 2 : 0;
16914 }
16915
16916 bcm_adc_vmid[3] = Vmid[0];
16917 bcm_adc_gain[3] = Av[0];
16918 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16919 0x08, 16, bcm_adc_vmid);
16920 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16921 0x0c, 16, bcm_adc_gain);
16922
16923 bcm_adc_vmid[3] = Vmid[1];
16924 bcm_adc_gain[3] = Av[1];
16925 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16926 0x18, 16, bcm_adc_vmid);
16927 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16928 0x1c, 16, bcm_adc_gain);
16929 }
16930
16931 write_radio_reg(pi,
16932 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16933 0x0);
16934 write_radio_reg(pi,
16935 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16936 0x0);
16937
16938 write_radio_reg(pi,
16939 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16940 0x6);
16941 write_radio_reg(pi,
16942 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16943 0x6);
16944
16945 write_radio_reg(pi,
16946 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16947 0x7);
16948 write_radio_reg(pi,
16949 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16950 0x7);
16951
16952 write_radio_reg(pi,
16953 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16954 0x88);
16955 write_radio_reg(pi,
16956 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16957 0x88);
16958
16959 write_radio_reg(pi,
16960 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16961 0x0);
16962 write_radio_reg(pi,
16963 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16964 0x0);
16965
16966 write_radio_reg(pi,
16967 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16968 0x0);
16969 write_radio_reg(pi,
16970 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16971 0x0);
16972
16973 triso =
16974 (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16975 triso : pi->srom_fem2g.triso;
16976 if (triso == 7) {
16977 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16978 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16979 }
16980
16981 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16982
16983 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16984 (CHSPEC_IS5G(pi->radio_chanspec))) ||
16985 (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16986 (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16987 (CHSPEC_IS2G(pi->radio_chanspec)))) {
16988 nss1_data_weights = 0x00088888;
16989 ht_data_weights = 0x00088888;
16990 stbc_data_weights = 0x00088888;
16991 } else {
16992 nss1_data_weights = 0x88888888;
16993 ht_data_weights = 0x88888888;
16994 stbc_data_weights = 0x88888888;
16995 }
16996 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16997 1, 1, 32, &nss1_data_weights);
16998 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16999 1, 2, 32, &ht_data_weights);
17000 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17001 1, 3, 32, &stbc_data_weights);
17002
17003 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17004 if (CHSPEC_IS5G(pi->radio_chanspec)) {
17005 write_radio_reg(pi,
17006 RADIO_2056_TX_GMBB_IDAC |
17007 RADIO_2056_TX0, 0x70);
17008 write_radio_reg(pi,
17009 RADIO_2056_TX_GMBB_IDAC |
17010 RADIO_2056_TX1, 0x70);
17011 }
17012 }
17013
17014 if (!pi->edcrs_threshold_lock) {
17015 write_phy_reg(pi, 0x224, 0x3eb);
17016 write_phy_reg(pi, 0x225, 0x3eb);
17017 write_phy_reg(pi, 0x226, 0x341);
17018 write_phy_reg(pi, 0x227, 0x341);
17019 write_phy_reg(pi, 0x228, 0x42b);
17020 write_phy_reg(pi, 0x229, 0x42b);
17021 write_phy_reg(pi, 0x22a, 0x381);
17022 write_phy_reg(pi, 0x22b, 0x381);
17023 write_phy_reg(pi, 0x22c, 0x42b);
17024 write_phy_reg(pi, 0x22d, 0x42b);
17025 write_phy_reg(pi, 0x22e, 0x381);
17026 write_phy_reg(pi, 0x22f, 0x381);
17027 }
17028
17029 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17030
17031 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17032 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17033 MHF4_BPHY_TXCORE0,
17034 MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17035 }
17036 } else {
17037
17038 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17039 (pi->sh->boardtype == 0x8b)) {
17040 uint i;
17041 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17042 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17043 rfseq_rx2tx_dlys[i] = war_dlys[i];
17044 }
17045
17046 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17047 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17048 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17049 } else {
17050 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17051 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17052 }
17053
17054 regval = 0x000a;
17055 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17056 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17057
17058 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17059 regval = 0xcdaa;
17060 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17061 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17062 }
17063
17064 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17065 regval = 0x0000;
17066 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17067 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17068
17069 regval = 0x7aab;
17070 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17071 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17072
17073 regval = 0x0800;
17074 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17075 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17076 }
17077
17078 write_phy_reg(pi, 0xf8, 0x02d8);
17079 write_phy_reg(pi, 0xf9, 0x0301);
17080 write_phy_reg(pi, 0xfa, 0x02d8);
17081 write_phy_reg(pi, 0xfb, 0x0301);
17082
17083 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17084 rfseq_rx2tx_dlys,
17085 ARRAY_SIZE(rfseq_rx2tx_events));
17086
17087 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17088 rfseq_tx2rx_dlys,
17089 ARRAY_SIZE(rfseq_tx2rx_events));
17090
17091 wlc_phy_workarounds_nphy_gainctrl(pi);
17092
17093 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17094
17095 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17096 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17097 MHF3_NPHY_MLADV_WAR,
17098 MHF3_NPHY_MLADV_WAR,
17099 BRCM_BAND_ALL);
17100
17101 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17102 write_phy_reg(pi, 0x1e3, 0x0);
17103 write_phy_reg(pi, 0x1e4, 0x0);
17104 }
17105
17106 if (NREV_LT(pi->pubpi.phy_rev, 2))
17107 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17108
17109 alpha0 = 293;
17110 alpha1 = 435;
17111 alpha2 = 261;
17112 beta0 = 366;
17113 beta1 = 205;
17114 beta2 = 32;
17115 write_phy_reg(pi, 0x145, alpha0);
17116 write_phy_reg(pi, 0x146, alpha1);
17117 write_phy_reg(pi, 0x147, alpha2);
17118 write_phy_reg(pi, 0x148, beta0);
17119 write_phy_reg(pi, 0x149, beta1);
17120 write_phy_reg(pi, 0x14a, beta2);
17121
17122 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17123 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17124
17125 write_phy_reg(pi, 0x192, 0xb5);
17126 write_phy_reg(pi, 0x193, 0xa4);
17127 write_phy_reg(pi, 0x194, 0x0);
17128 }
17129
17130 if (NREV_IS(pi->pubpi.phy_rev, 2))
17131 mod_phy_reg(pi, 0x221,
17132 NPHY_FORCESIG_DECODEGATEDCLKS,
17133 NPHY_FORCESIG_DECODEGATEDCLKS);
17134 }
17135
17136 if (pi->phyhang_avoid)
17137 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17138 }
17139
17140 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17141 {
17142 int j, type = 2;
17143 u16 addr_offset = 0x2c5;
17144
17145 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17146 write_phy_reg(pi, addr_offset + j,
17147 NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17148 }
17149
17150 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17151 {
17152
17153 if (write == 0) {
17154 vals[0] = read_phy_reg(pi, 0x2c);
17155 vals[1] = read_phy_reg(pi, 0x42);
17156 } else {
17157 write_phy_reg(pi, 0x2c, vals[0]);
17158 write_phy_reg(pi, 0x42, vals[1]);
17159 }
17160 }
17161
17162 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17163 {
17164 u8 core;
17165
17166 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17167 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17168 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17169 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17170 TX_SSI_MASTER, 0x5);
17171 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17172 TX_SSI_MUX, 0xe);
17173
17174 if (pi->pubpi.radiorev != 5)
17175 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17176 core, TSSIA, 0);
17177
17178 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17179 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17180 core, TSSIG, 0x1);
17181 else
17182 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17183 core, TSSIG, 0x31);
17184 } else {
17185 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17186 TX_SSI_MASTER, 0x9);
17187 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17188 TX_SSI_MUX, 0xc);
17189 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17190 TSSIG, 0);
17191
17192 if (pi->pubpi.radiorev != 5) {
17193 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17194 WRITE_RADIO_REG3(pi, RADIO_2057,
17195 TX, core,
17196 TSSIA, 0x1);
17197 else
17198 WRITE_RADIO_REG3(pi, RADIO_2057,
17199 TX, core,
17200 TSSIA, 0x31);
17201 }
17202 }
17203 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17204 0);
17205 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17206 0);
17207 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17208 0x3);
17209 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17210 0x0);
17211 }
17212 } else {
17213 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17214 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17215 0x80);
17216 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17217 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17218
17219 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17220 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17221 0x0);
17222 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17223 0x0);
17224 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17225 0x3);
17226 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17227 0x0);
17228 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17229 0x8);
17230 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17231 0x0);
17232 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17233 0x0);
17234
17235 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17236 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17237 TX_SSI_MASTER, 0x5);
17238
17239 if (pi->pubpi.radiorev != 5)
17240 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17241 core, TSSIA, 0x0);
17242 if (NREV_GE(pi->pubpi.phy_rev, 5))
17243 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17244 core, TSSIG, 0x31);
17245 else
17246 WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17247 core, TSSIG, 0x11);
17248 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17249 TX_SSI_MUX, 0xe);
17250 } else {
17251 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17252 TX_SSI_MASTER, 0x9);
17253 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17254 TSSIA, 0x31);
17255 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17256 TSSIG, 0x0);
17257 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17258 TX_SSI_MUX, 0xc);
17259 }
17260 }
17261 }
17262 }
17263
17264 static void
17265 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17266 u8 core_mask, u8 off)
17267 {
17268 u8 core_num;
17269 u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17270 0, val_mask = 0;
17271 u8 shift = 0, val_shift = 0;
17272
17273 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17274
17275 en_mask = field;
17276 for (core_num = 0; core_num < 2; core_num++) {
17277
17278 switch (field) {
17279 case (0x1 << 1):
17280 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17281 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17282 val_mask = (0x1 << 0);
17283 val_shift = 0;
17284 break;
17285 case (0x1 << 2):
17286 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17287 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17288 val_mask = (0x1 << 1);
17289 val_shift = 1;
17290 break;
17291 case (0x1 << 3):
17292 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17293 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17294 val_mask = (0x1 << 2);
17295 val_shift = 2;
17296 break;
17297 case (0x1 << 4):
17298 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17299 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17300 val_mask = (0x1 << 4);
17301 val_shift = 4;
17302 break;
17303 case (0x1 << 5):
17304 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17305 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17306 val_mask = (0x1 << 5);
17307 val_shift = 5;
17308 break;
17309 case (0x1 << 6):
17310 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17311 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17312 val_mask = (0x1 << 6);
17313 val_shift = 6;
17314 break;
17315 case (0x1 << 7):
17316 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17317 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17318 val_mask = (0x1 << 7);
17319 val_shift = 7;
17320 break;
17321 case (0x1 << 8):
17322 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17323 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17324 val_mask = (0x7 << 8);
17325 val_shift = 8;
17326 break;
17327 case (0x1 << 11):
17328 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17329 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17330 val_mask = (0x7 << 13);
17331 val_shift = 13;
17332 break;
17333
17334 case (0x1 << 9):
17335 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17336 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17337 val_mask = (0x7 << 0);
17338 val_shift = 0;
17339 break;
17340
17341 case (0x1 << 10):
17342 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17343 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17344 val_mask = (0x7 << 4);
17345 val_shift = 4;
17346 break;
17347
17348 case (0x1 << 12):
17349 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17350 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17351 val_mask = (0xffff << 0);
17352 val_shift = 0;
17353 break;
17354 case (0x1 << 13):
17355 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17356 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17357 val_mask = (0xffff << 0);
17358 val_shift = 0;
17359 break;
17360 case (0x1 << 14):
17361 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17362 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17363 val_mask = (0x3 << 6);
17364 val_shift = 6;
17365 break;
17366 case (0x1 << 0):
17367 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17368 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17369 val_mask = (0x1 << 15);
17370 val_shift = 15;
17371 break;
17372 default:
17373 addr = 0xffff;
17374 break;
17375 }
17376
17377 if (off) {
17378 and_phy_reg(pi, en_addr, ~en_mask);
17379 and_phy_reg(pi, val_addr, ~val_mask);
17380 } else {
17381
17382 if ((core_mask == 0)
17383 || (core_mask & (1 << core_num))) {
17384 or_phy_reg(pi, en_addr, en_mask);
17385
17386 if (addr != 0xffff)
17387 mod_phy_reg(pi, val_addr,
17388 val_mask,
17389 (value <<
17390 val_shift));
17391 }
17392 }
17393 }
17394 } else {
17395
17396 if (off) {
17397 and_phy_reg(pi, 0xec, ~field);
17398 value = 0x0;
17399 } else {
17400 or_phy_reg(pi, 0xec, field);
17401 }
17402
17403 for (core_num = 0; core_num < 2; core_num++) {
17404
17405 switch (field) {
17406 case (0x1 << 1):
17407 case (0x1 << 9):
17408 case (0x1 << 12):
17409 case (0x1 << 13):
17410 case (0x1 << 14):
17411 addr = 0x78;
17412
17413 core_mask = 0x1;
17414 break;
17415 case (0x1 << 2):
17416 case (0x1 << 3):
17417 case (0x1 << 4):
17418 case (0x1 << 5):
17419 case (0x1 << 6):
17420 case (0x1 << 7):
17421 case (0x1 << 8):
17422 addr = (core_num == 0) ? 0x7a : 0x7d;
17423 break;
17424 case (0x1 << 10):
17425 addr = (core_num == 0) ? 0x7b : 0x7e;
17426 break;
17427 case (0x1 << 11):
17428 addr = (core_num == 0) ? 0x7c : 0x7f;
17429 break;
17430 default:
17431 addr = 0xffff;
17432 }
17433
17434 switch (field) {
17435 case (0x1 << 1):
17436 mask = (0x7 << 3);
17437 shift = 3;
17438 break;
17439 case (0x1 << 9):
17440 mask = (0x1 << 2);
17441 shift = 2;
17442 break;
17443 case (0x1 << 12):
17444 mask = (0x1 << 8);
17445 shift = 8;
17446 break;
17447 case (0x1 << 13):
17448 mask = (0x1 << 9);
17449 shift = 9;
17450 break;
17451 case (0x1 << 14):
17452 mask = (0xf << 12);
17453 shift = 12;
17454 break;
17455 case (0x1 << 2):
17456 mask = (0x1 << 0);
17457 shift = 0;
17458 break;
17459 case (0x1 << 3):
17460 mask = (0x1 << 1);
17461 shift = 1;
17462 break;
17463 case (0x1 << 4):
17464 mask = (0x1 << 2);
17465 shift = 2;
17466 break;
17467 case (0x1 << 5):
17468 mask = (0x3 << 4);
17469 shift = 4;
17470 break;
17471 case (0x1 << 6):
17472 mask = (0x3 << 6);
17473 shift = 6;
17474 break;
17475 case (0x1 << 7):
17476 mask = (0x1 << 8);
17477 shift = 8;
17478 break;
17479 case (0x1 << 8):
17480 mask = (0x1 << 9);
17481 shift = 9;
17482 break;
17483 case (0x1 << 10):
17484 mask = 0x1fff;
17485 shift = 0x0;
17486 break;
17487 case (0x1 << 11):
17488 mask = 0x1fff;
17489 shift = 0x0;
17490 break;
17491 default:
17492 mask = 0x0;
17493 shift = 0x0;
17494 break;
17495 }
17496
17497 if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17498 mod_phy_reg(pi, addr, mask, (value << shift));
17499 }
17500
17501 or_phy_reg(pi, 0xec, (0x1 << 0));
17502 or_phy_reg(pi, 0x78, (0x1 << 0));
17503 udelay(1);
17504 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17505 }
17506 }
17507
17508 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17509 {
17510 s32 rssi_buf[4];
17511 s32 int_val;
17512
17513 if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17514
17515 return;
17516
17517 if (PHY_IPA(pi))
17518 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17519
17520 if (NREV_GE(pi->pubpi.phy_rev, 7))
17521 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17522 0, 0x3, 0,
17523 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17524 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17525 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17526
17527 wlc_phy_stopplayback_nphy(pi);
17528
17529 wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17530
17531 udelay(20);
17532 int_val =
17533 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17534 1);
17535 wlc_phy_stopplayback_nphy(pi);
17536 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17537
17538 if (NREV_GE(pi->pubpi.phy_rev, 7))
17539 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17540 0, 0x3, 1,
17541 NPHY_REV7_RFCTRLOVERRIDE_ID0);
17542 else if (NREV_GE(pi->pubpi.phy_rev, 3))
17543 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17544
17545 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17546
17547 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17548 (u8) ((int_val >> 24) & 0xff);
17549 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17550 (u8) ((int_val >> 24) & 0xff);
17551
17552 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17553 (u8) ((int_val >> 8) & 0xff);
17554 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17555 (u8) ((int_val >> 8) & 0xff);
17556 } else {
17557 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17558 (u8) ((int_val >> 24) & 0xff);
17559
17560 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17561 (u8) ((int_val >> 8) & 0xff);
17562
17563 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17564 (u8) ((int_val >> 16) & 0xff);
17565 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17566 (u8) ((int_val) & 0xff);
17567 }
17568
17569 }
17570
17571 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17572 {
17573 u8 idx, idx2, i, delta_ind;
17574
17575 for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17576 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17577
17578 for (i = 0; i < 4; i++) {
17579 idx2 = 0;
17580
17581 delta_ind = 0;
17582
17583 switch (i) {
17584 case 0:
17585
17586 if (CHSPEC_IS40(pi->radio_chanspec)
17587 && NPHY_IS_SROM_REINTERPRET) {
17588 idx = TXP_FIRST_MCS_40_SISO;
17589 } else {
17590 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17591 TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17592 delta_ind = 1;
17593 }
17594 break;
17595
17596 case 1:
17597
17598 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17599 TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17600 break;
17601
17602 case 2:
17603
17604 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17605 TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17606 break;
17607
17608 case 3:
17609
17610 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17611 TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17612 break;
17613 }
17614
17615 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17616 pi->tx_power_offset[idx];
17617 idx = idx + delta_ind;
17618 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17619 pi->tx_power_offset[idx];
17620 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17621 pi->tx_power_offset[idx];
17622 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17623 pi->tx_power_offset[idx++];
17624
17625 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17626 pi->tx_power_offset[idx++];
17627 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17628 pi->tx_power_offset[idx];
17629 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17630 pi->tx_power_offset[idx];
17631 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17632 pi->tx_power_offset[idx++];
17633
17634 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17635 pi->tx_power_offset[idx++];
17636 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17637 pi->tx_power_offset[idx];
17638 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17639 pi->tx_power_offset[idx];
17640 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17641 pi->tx_power_offset[idx++];
17642
17643 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17644 pi->tx_power_offset[idx];
17645 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17646 pi->tx_power_offset[idx++];
17647 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17648 pi->tx_power_offset[idx];
17649 idx = idx + 1 - delta_ind;
17650 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17651 pi->tx_power_offset[idx];
17652
17653 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17654 pi->tx_power_offset[idx];
17655 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17656 pi->tx_power_offset[idx];
17657 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17658 pi->tx_power_offset[idx];
17659 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17660 pi->tx_power_offset[idx];
17661 }
17662 }
17663
17664 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17665 {
17666 u32 idx;
17667 s16 a1[2], b0[2], b1[2];
17668 s8 target_pwr_qtrdbm[2];
17669 s32 num, den, pwr_est;
17670 u8 chan_freq_range;
17671 u8 idle_tssi[2];
17672 u32 tbl_id, tbl_len, tbl_offset;
17673 u32 regval[64];
17674 u8 core;
17675
17676 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17677 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17678 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17679 udelay(1);
17680 }
17681
17682 if (pi->phyhang_avoid)
17683 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17684
17685 or_phy_reg(pi, 0x122, (0x1 << 0));
17686
17687 if (NREV_GE(pi->pubpi.phy_rev, 3))
17688 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17689 else
17690 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17691
17692 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17693 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17694
17695 if (pi->sh->sromrev < 4) {
17696 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17697 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17698 a1[0] = -424;
17699 a1[1] = -424;
17700 b0[0] = 5612;
17701 b0[1] = 5612;
17702 b1[1] = -1393;
17703 b1[0] = -1393;
17704 } else {
17705
17706 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17707 switch (chan_freq_range) {
17708 case WL_CHAN_FREQ_RANGE_2G:
17709 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17710 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17711 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17712 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17713 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17714 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17715 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17716 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17717 break;
17718 case WL_CHAN_FREQ_RANGE_5GL:
17719 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17720 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17721 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17722 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17723 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17724 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17725 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17726 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17727 break;
17728 case WL_CHAN_FREQ_RANGE_5GM:
17729 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17730 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17731 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17732 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17733 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17734 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17735 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17736 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17737 break;
17738 case WL_CHAN_FREQ_RANGE_5GH:
17739 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17740 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17741 a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17742 a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17743 b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17744 b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17745 b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17746 b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17747 break;
17748 default:
17749 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17750 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17751 a1[0] = -424;
17752 a1[1] = -424;
17753 b0[0] = 5612;
17754 b0[1] = 5612;
17755 b1[1] = -1393;
17756 b1[0] = -1393;
17757 break;
17758 }
17759 }
17760
17761 /* use the provided transmit power */
17762 target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17763 target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17764
17765 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17766 if (pi->srom_fem2g.tssipos)
17767 or_phy_reg(pi, 0x1e9, (0x1 << 14));
17768
17769 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17770 for (core = 0; core <= 1; core++) {
17771 if (PHY_IPA(pi)) {
17772 if (CHSPEC_IS2G(pi->radio_chanspec))
17773 WRITE_RADIO_REG3(pi, RADIO_2057,
17774 TX, core,
17775 TX_SSI_MUX,
17776 0xe);
17777 else
17778 WRITE_RADIO_REG3(pi, RADIO_2057,
17779 TX, core,
17780 TX_SSI_MUX,
17781 0xc);
17782 }
17783 }
17784 } else {
17785 if (PHY_IPA(pi)) {
17786
17787 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17788 RADIO_2056_TX0,
17789 (CHSPEC_IS5G
17790 (pi->radio_chanspec)) ?
17791 0xc : 0xe);
17792 write_radio_reg(pi,
17793 RADIO_2056_TX_TX_SSI_MUX |
17794 RADIO_2056_TX1,
17795 (CHSPEC_IS5G
17796 (pi->radio_chanspec)) ?
17797 0xc : 0xe);
17798 } else {
17799
17800 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17801 RADIO_2056_TX0, 0x11);
17802 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17803 RADIO_2056_TX1, 0x11);
17804 }
17805 }
17806 }
17807
17808 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17809 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17810 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17811 udelay(1);
17812 }
17813
17814 if (NREV_GE(pi->pubpi.phy_rev, 7))
17815 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17816 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17817 else
17818 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17819 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17820
17821 if (NREV_GE(pi->pubpi.phy_rev, 7))
17822 mod_phy_reg(pi, 0x222, (0xff << 0),
17823 (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17824 else if (NREV_GT(pi->pubpi.phy_rev, 1))
17825 mod_phy_reg(pi, 0x222, (0xff << 0),
17826 (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17827
17828 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17829 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17830
17831 write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17832
17833 write_phy_reg(pi, 0x1e9,
17834 (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17835
17836 write_phy_reg(pi, 0x1ea,
17837 (target_pwr_qtrdbm[0] << 0) |
17838 (target_pwr_qtrdbm[1] << 8));
17839
17840 tbl_len = 64;
17841 tbl_offset = 0;
17842 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17843 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17844
17845 for (idx = 0; idx < tbl_len; idx++) {
17846 num = 8 *
17847 (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17848 den = 32768 + a1[tbl_id - 26] * idx;
17849 pwr_est = max(((4 * num + den / 2) / den), -8);
17850 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17851 if (idx <=
17852 (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17853 pwr_est =
17854 max(pwr_est,
17855 target_pwr_qtrdbm
17856 [tbl_id - 26] + 1);
17857 }
17858 regval[idx] = (u32) pwr_est;
17859 }
17860 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17861 regval);
17862 }
17863
17864 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17865 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17866 pi->adj_pwr_tbl_nphy);
17867 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17868 pi->adj_pwr_tbl_nphy);
17869
17870 if (pi->phyhang_avoid)
17871 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17872 }
17873
17874 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17875 {
17876 u32 *tx_pwrctrl_tbl = NULL;
17877
17878 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17879 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17880 if ((pi->pubpi.radiorev == 4)
17881 || (pi->pubpi.radiorev == 6))
17882 tx_pwrctrl_tbl =
17883 nphy_tpc_txgain_ipa_2g_2057rev4n6;
17884 else if (pi->pubpi.radiorev == 3)
17885 tx_pwrctrl_tbl =
17886 nphy_tpc_txgain_ipa_2g_2057rev3;
17887 else if (pi->pubpi.radiorev == 5)
17888 tx_pwrctrl_tbl =
17889 nphy_tpc_txgain_ipa_2g_2057rev5;
17890 else if ((pi->pubpi.radiorev == 7)
17891 || (pi->pubpi.radiorev == 8))
17892 tx_pwrctrl_tbl =
17893 nphy_tpc_txgain_ipa_2g_2057rev7;
17894 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17895 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17896 if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17897 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17898 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17899 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17900 } else {
17901 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17902 }
17903 } else {
17904
17905 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17906 if ((pi->pubpi.radiorev == 3) ||
17907 (pi->pubpi.radiorev == 4) ||
17908 (pi->pubpi.radiorev == 6))
17909 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17910 else if ((pi->pubpi.radiorev == 7)
17911 || (pi->pubpi.radiorev == 8))
17912 tx_pwrctrl_tbl =
17913 nphy_tpc_txgain_ipa_5g_2057rev7;
17914 } else {
17915 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17916 }
17917 }
17918
17919 return tx_pwrctrl_tbl;
17920 }
17921
17922 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17923 {
17924 if (CHSPEC_IS2G(pi->radio_chanspec)) {
17925 if (pi->nphy_rssical_chanspec_2G == 0)
17926 return;
17927
17928 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17929 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17930 RADIO_2057_VCM_MASK,
17931 pi->rssical_cache.
17932 rssical_radio_regs_2G[0]);
17933 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17934 RADIO_2057_VCM_MASK,
17935 pi->rssical_cache.
17936 rssical_radio_regs_2G[1]);
17937 } else {
17938 mod_radio_reg(pi,
17939 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17940 RADIO_2056_VCM_MASK,
17941 pi->rssical_cache.
17942 rssical_radio_regs_2G[0]);
17943 mod_radio_reg(pi,
17944 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17945 RADIO_2056_VCM_MASK,
17946 pi->rssical_cache.
17947 rssical_radio_regs_2G[1]);
17948 }
17949
17950 write_phy_reg(pi, 0x1a6,
17951 pi->rssical_cache.rssical_phyregs_2G[0]);
17952 write_phy_reg(pi, 0x1ac,
17953 pi->rssical_cache.rssical_phyregs_2G[1]);
17954 write_phy_reg(pi, 0x1b2,
17955 pi->rssical_cache.rssical_phyregs_2G[2]);
17956 write_phy_reg(pi, 0x1b8,
17957 pi->rssical_cache.rssical_phyregs_2G[3]);
17958 write_phy_reg(pi, 0x1a4,
17959 pi->rssical_cache.rssical_phyregs_2G[4]);
17960 write_phy_reg(pi, 0x1aa,
17961 pi->rssical_cache.rssical_phyregs_2G[5]);
17962 write_phy_reg(pi, 0x1b0,
17963 pi->rssical_cache.rssical_phyregs_2G[6]);
17964 write_phy_reg(pi, 0x1b6,
17965 pi->rssical_cache.rssical_phyregs_2G[7]);
17966 write_phy_reg(pi, 0x1a5,
17967 pi->rssical_cache.rssical_phyregs_2G[8]);
17968 write_phy_reg(pi, 0x1ab,
17969 pi->rssical_cache.rssical_phyregs_2G[9]);
17970 write_phy_reg(pi, 0x1b1,
17971 pi->rssical_cache.rssical_phyregs_2G[10]);
17972 write_phy_reg(pi, 0x1b7,
17973 pi->rssical_cache.rssical_phyregs_2G[11]);
17974
17975 } else {
17976 if (pi->nphy_rssical_chanspec_5G == 0)
17977 return;
17978
17979 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17980 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17981 RADIO_2057_VCM_MASK,
17982 pi->rssical_cache.
17983 rssical_radio_regs_5G[0]);
17984 mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17985 RADIO_2057_VCM_MASK,
17986 pi->rssical_cache.
17987 rssical_radio_regs_5G[1]);
17988 } else {
17989 mod_radio_reg(pi,
17990 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17991 RADIO_2056_VCM_MASK,
17992 pi->rssical_cache.
17993 rssical_radio_regs_5G[0]);
17994 mod_radio_reg(pi,
17995 RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17996 RADIO_2056_VCM_MASK,
17997 pi->rssical_cache.
17998 rssical_radio_regs_5G[1]);
17999 }
18000
18001 write_phy_reg(pi, 0x1a6,
18002 pi->rssical_cache.rssical_phyregs_5G[0]);
18003 write_phy_reg(pi, 0x1ac,
18004 pi->rssical_cache.rssical_phyregs_5G[1]);
18005 write_phy_reg(pi, 0x1b2,
18006 pi->rssical_cache.rssical_phyregs_5G[2]);
18007 write_phy_reg(pi, 0x1b8,
18008 pi->rssical_cache.rssical_phyregs_5G[3]);
18009 write_phy_reg(pi, 0x1a4,
18010 pi->rssical_cache.rssical_phyregs_5G[4]);
18011 write_phy_reg(pi, 0x1aa,
18012 pi->rssical_cache.rssical_phyregs_5G[5]);
18013 write_phy_reg(pi, 0x1b0,
18014 pi->rssical_cache.rssical_phyregs_5G[6]);
18015 write_phy_reg(pi, 0x1b6,
18016 pi->rssical_cache.rssical_phyregs_5G[7]);
18017 write_phy_reg(pi, 0x1a5,
18018 pi->rssical_cache.rssical_phyregs_5G[8]);
18019 write_phy_reg(pi, 0x1ab,
18020 pi->rssical_cache.rssical_phyregs_5G[9]);
18021 write_phy_reg(pi, 0x1b1,
18022 pi->rssical_cache.rssical_phyregs_5G[10]);
18023 write_phy_reg(pi, 0x1b7,
18024 pi->rssical_cache.rssical_phyregs_5G[11]);
18025 }
18026 }
18027
18028 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18029 {
18030 u16 txcal_gain[2];
18031
18032 pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18033 pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18034 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18035 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18036
18037 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18038 txcal_gain);
18039
18040 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18041 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18042 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18043 } else {
18044 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18045 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18046 }
18047
18048 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18049 txcal_gain);
18050 }
18051
18052 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18053 {
18054 bool save_bbmult = false;
18055 u8 txcal_index_2057_rev5n7 = 0;
18056 u8 txcal_index_2057_rev3n4n6 = 10;
18057
18058 if (pi->use_int_tx_iqlo_cal_nphy) {
18059 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18060 if ((pi->pubpi.radiorev == 3) ||
18061 (pi->pubpi.radiorev == 4) ||
18062 (pi->pubpi.radiorev == 6)) {
18063
18064 pi->nphy_txcal_pwr_idx[0] =
18065 txcal_index_2057_rev3n4n6;
18066 pi->nphy_txcal_pwr_idx[1] =
18067 txcal_index_2057_rev3n4n6;
18068 wlc_phy_txpwr_index_nphy(
18069 pi, 3,
18070 txcal_index_2057_rev3n4n6,
18071 false);
18072 } else {
18073
18074 pi->nphy_txcal_pwr_idx[0] =
18075 txcal_index_2057_rev5n7;
18076 pi->nphy_txcal_pwr_idx[1] =
18077 txcal_index_2057_rev5n7;
18078 wlc_phy_txpwr_index_nphy(
18079 pi, 3,
18080 txcal_index_2057_rev5n7,
18081 false);
18082 }
18083 save_bbmult = true;
18084
18085 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18086 wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18087 if (pi->sh->hw_phytxchain != 3) {
18088 pi->nphy_txcal_pwr_idx[1] =
18089 pi->nphy_txcal_pwr_idx[0];
18090 wlc_phy_txpwr_index_nphy(pi, 3,
18091 pi->
18092 nphy_txcal_pwr_idx[0],
18093 true);
18094 save_bbmult = true;
18095 }
18096
18097 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18098 if (PHY_IPA(pi)) {
18099 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18100 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18101 false);
18102 } else {
18103 pi->nphy_txcal_pwr_idx[0] = 80;
18104 pi->nphy_txcal_pwr_idx[1] = 80;
18105 wlc_phy_txpwr_index_nphy(pi, 3, 80,
18106 false);
18107 save_bbmult = true;
18108 }
18109 } else {
18110 wlc_phy_internal_cal_txgain_nphy(pi);
18111 save_bbmult = true;
18112 }
18113
18114 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18115 if (PHY_IPA(pi)) {
18116 if (CHSPEC_IS2G(pi->radio_chanspec))
18117 wlc_phy_cal_txgainctrl_nphy(pi, 12,
18118 false);
18119 else
18120 wlc_phy_cal_txgainctrl_nphy(pi, 14,
18121 false);
18122 } else {
18123 wlc_phy_internal_cal_txgain_nphy(pi);
18124 save_bbmult = true;
18125 }
18126 }
18127
18128 } else {
18129 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18130 }
18131
18132 if (save_bbmult)
18133 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18134 &pi->nphy_txcal_bbmult);
18135 }
18136
18137 static void
18138 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18139 u8 core_code)
18140 {
18141 u16 mask;
18142 u16 val;
18143 u8 core;
18144
18145 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18146 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18147 if (core_code == RADIO_MIMO_CORESEL_CORE1
18148 && core == PHY_CORE_1)
18149 continue;
18150 else if (core_code == RADIO_MIMO_CORESEL_CORE2
18151 && core == PHY_CORE_0)
18152 continue;
18153
18154 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18155
18156 mask = (0x1 << 10);
18157 val = 1 << 10;
18158 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18159 0x92, mask, val);
18160 }
18161
18162 if (field == NPHY_RfctrlIntc_override_OFF) {
18163
18164 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18165 0x92, 0);
18166
18167 wlc_phy_force_rfseq_nphy(pi,
18168 NPHY_RFSEQ_RESET2RX);
18169 } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18170
18171 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18172
18173 mask = (0x1 << 6) | (0x1 << 7);
18174
18175 val = value << 6;
18176 mod_phy_reg(pi,
18177 (core ==
18178 PHY_CORE_0) ? 0x91 : 0x92,
18179 mask, val);
18180
18181 or_phy_reg(pi,
18182 (core ==
18183 PHY_CORE_0) ? 0x91 : 0x92,
18184 (0x1 << 10));
18185
18186 and_phy_reg(pi, 0x2ff, (u16)
18187 ~(0x3 << 14));
18188 or_phy_reg(pi, 0x2ff, (0x1 << 13));
18189 or_phy_reg(pi, 0x2ff, (0x1 << 0));
18190 } else {
18191
18192 mask = (0x1 << 6) |
18193 (0x1 << 7) |
18194 (0x1 << 8) | (0x1 << 9);
18195 val = value << 6;
18196 mod_phy_reg(pi,
18197 (core ==
18198 PHY_CORE_0) ? 0x91 : 0x92,
18199 mask, val);
18200
18201 mask = (0x1 << 0);
18202 val = 1 << 0;
18203 mod_phy_reg(pi,
18204 (core ==
18205 PHY_CORE_0) ? 0xe7 : 0xec,
18206 mask, val);
18207
18208 mask = (core == PHY_CORE_0) ?
18209 (0x1 << 0) : (0x1 << 1);
18210 val = 1 << ((core == PHY_CORE_0) ?
18211 0 : 1);
18212 mod_phy_reg(pi, 0x78, mask, val);
18213
18214 SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18215 != 0), 10000);
18216 if (WARN(read_phy_reg(pi, 0x78) & val,
18217 "HW error: override failed"))
18218 return;
18219
18220 mask = (0x1 << 0);
18221 val = 0 << 0;
18222 mod_phy_reg(pi,
18223 (core ==
18224 PHY_CORE_0) ? 0xe7 : 0xec,
18225 mask, val);
18226 }
18227 } else if (field == NPHY_RfctrlIntc_override_PA) {
18228 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18229
18230 mask = (0x1 << 4) | (0x1 << 5);
18231
18232 if (CHSPEC_IS5G(pi->radio_chanspec))
18233 val = value << 5;
18234 else
18235 val = value << 4;
18236
18237 mod_phy_reg(pi,
18238 (core ==
18239 PHY_CORE_0) ? 0x91 : 0x92,
18240 mask, val);
18241
18242 or_phy_reg(pi,
18243 (core ==
18244 PHY_CORE_0) ? 0x91 : 0x92,
18245 (0x1 << 12));
18246 } else {
18247
18248 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18249 mask = (0x1 << 5);
18250 val = value << 5;
18251 } else {
18252 mask = (0x1 << 4);
18253 val = value << 4;
18254 }
18255 mod_phy_reg(pi,
18256 (core ==
18257 PHY_CORE_0) ? 0x91 : 0x92,
18258 mask, val);
18259 }
18260 } else if (field ==
18261 NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18262 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18263 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18264
18265 mask = (0x1 << 0);
18266 val = value << 0;
18267 mod_phy_reg(pi,
18268 (core ==
18269 PHY_CORE_0) ? 0x91
18270 : 0x92, mask, val);
18271
18272 mask = (0x1 << 2);
18273 mod_phy_reg(pi,
18274 (core ==
18275 PHY_CORE_0) ? 0x91
18276 : 0x92, mask, 0);
18277 } else {
18278
18279 mask = (0x1 << 2);
18280 val = value << 2;
18281 mod_phy_reg(pi,
18282 (core ==
18283 PHY_CORE_0) ? 0x91
18284 : 0x92, mask, val);
18285
18286 mask = (0x1 << 0);
18287 mod_phy_reg(pi,
18288 (core ==
18289 PHY_CORE_0) ? 0x91
18290 : 0x92, mask, 0);
18291 }
18292
18293 mask = (0x1 << 11);
18294 val = 1 << 11;
18295 mod_phy_reg(pi,
18296 (core ==
18297 PHY_CORE_0) ? 0x91 : 0x92,
18298 mask, val);
18299 } else {
18300
18301 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18302 mask = (0x1 << 0);
18303 val = value << 0;
18304 } else {
18305 mask = (0x1 << 2);
18306 val = value << 2;
18307 }
18308 mod_phy_reg(pi,
18309 (core ==
18310 PHY_CORE_0) ? 0x91 : 0x92,
18311 mask, val);
18312 }
18313 } else if (field ==
18314 NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18315 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18316 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18317
18318 mask = (0x1 << 1);
18319 val = value << 1;
18320 mod_phy_reg(pi,
18321 (core ==
18322 PHY_CORE_0) ? 0x91
18323 : 0x92, mask, val);
18324
18325 mask = (0x1 << 3);
18326 mod_phy_reg(pi,
18327 (core ==
18328 PHY_CORE_0) ? 0x91
18329 : 0x92, mask, 0);
18330 } else {
18331
18332 mask = (0x1 << 3);
18333 val = value << 3;
18334 mod_phy_reg(pi,
18335 (core ==
18336 PHY_CORE_0) ? 0x91
18337 : 0x92, mask, val);
18338
18339 mask = (0x1 << 1);
18340 mod_phy_reg(pi,
18341 (core ==
18342 PHY_CORE_0) ? 0x91
18343 : 0x92, mask, 0);
18344 }
18345
18346 mask = (0x1 << 11);
18347 val = 1 << 11;
18348 mod_phy_reg(pi,
18349 (core ==
18350 PHY_CORE_0) ? 0x91 : 0x92,
18351 mask, val);
18352 } else {
18353
18354 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18355 mask = (0x1 << 1);
18356 val = value << 1;
18357 } else {
18358 mask = (0x1 << 3);
18359 val = value << 3;
18360 }
18361 mod_phy_reg(pi,
18362 (core ==
18363 PHY_CORE_0) ? 0x91 : 0x92,
18364 mask, val);
18365 }
18366 }
18367 }
18368 }
18369 }
18370
18371 void
18372 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18373 bool debug)
18374 {
18375 int gainctrl_loopidx;
18376 uint core;
18377 u16 m0m1, curr_m0m1;
18378 s32 delta_power;
18379 s32 txpwrindex;
18380 s32 qdBm_power[2];
18381 u16 orig_BBConfig;
18382 u16 phy_saveregs[4];
18383 u32 freq_test;
18384 u16 ampl_test = 250;
18385 uint stepsize;
18386 bool phyhang_avoid_state = false;
18387
18388 if (NREV_GE(pi->pubpi.phy_rev, 7))
18389 stepsize = 2;
18390 else
18391 stepsize = 1;
18392
18393 if (CHSPEC_IS40(pi->radio_chanspec))
18394 freq_test = 5000;
18395 else
18396 freq_test = 2500;
18397
18398 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18399 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18400
18401 if (pi->phyhang_avoid)
18402 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18403
18404 phyhang_avoid_state = pi->phyhang_avoid;
18405 pi->phyhang_avoid = false;
18406
18407 phy_saveregs[0] = read_phy_reg(pi, 0x91);
18408 phy_saveregs[1] = read_phy_reg(pi, 0x92);
18409 phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18410 phy_saveregs[3] = read_phy_reg(pi, 0xec);
18411 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18412 RADIO_MIMO_CORESEL_CORE1 |
18413 RADIO_MIMO_CORESEL_CORE2);
18414
18415 if (!debug) {
18416 wlc_phy_rfctrlintc_override_nphy(pi,
18417 NPHY_RfctrlIntc_override_TRSW,
18418 0x2, RADIO_MIMO_CORESEL_CORE1);
18419 wlc_phy_rfctrlintc_override_nphy(pi,
18420 NPHY_RfctrlIntc_override_TRSW,
18421 0x8, RADIO_MIMO_CORESEL_CORE2);
18422 } else {
18423 wlc_phy_rfctrlintc_override_nphy(pi,
18424 NPHY_RfctrlIntc_override_TRSW,
18425 0x1, RADIO_MIMO_CORESEL_CORE1);
18426 wlc_phy_rfctrlintc_override_nphy(pi,
18427 NPHY_RfctrlIntc_override_TRSW,
18428 0x7, RADIO_MIMO_CORESEL_CORE2);
18429 }
18430
18431 orig_BBConfig = read_phy_reg(pi, 0x01);
18432 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18433
18434 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18435
18436 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18437 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18438
18439 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18440 gainctrl_loopidx++) {
18441 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18442 false);
18443
18444 if (core == PHY_CORE_0)
18445 curr_m0m1 = m0m1 & 0xff00;
18446 else
18447 curr_m0m1 = m0m1 & 0x00ff;
18448
18449 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18450 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18451
18452 udelay(50);
18453
18454 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18455 NPHY_CAL_TSSISAMPS);
18456
18457 pi->nphy_bb_mult_save = 0;
18458 wlc_phy_stopplayback_nphy(pi);
18459
18460 delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18461
18462 txpwrindex -= stepsize * delta_power;
18463 if (txpwrindex < 0)
18464 txpwrindex = 0;
18465 else if (txpwrindex > 127)
18466 txpwrindex = 127;
18467
18468 if (CHSPEC_IS5G(pi->radio_chanspec)) {
18469 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18470 (pi->srom_fem5g.extpagain == 3)) {
18471 if (txpwrindex < 30)
18472 txpwrindex = 30;
18473 }
18474 } else {
18475 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18476 (pi->srom_fem2g.extpagain == 3)) {
18477 if (txpwrindex < 50)
18478 txpwrindex = 50;
18479 }
18480 }
18481
18482 wlc_phy_txpwr_index_nphy(pi, (1 << core),
18483 (u8) txpwrindex, true);
18484 }
18485
18486 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18487
18488 if (debug) {
18489 u16 radio_gain;
18490 u16 dbg_m0m1;
18491
18492 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18493
18494 wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18495 false);
18496
18497 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18498 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18499
18500 udelay(100);
18501
18502 wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18503 NPHY_CAL_TSSISAMPS);
18504
18505 wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18506 &radio_gain);
18507
18508 mdelay(4000);
18509 pi->nphy_bb_mult_save = 0;
18510 wlc_phy_stopplayback_nphy(pi);
18511 }
18512 }
18513
18514 wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18515 wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18516
18517 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18518
18519 write_phy_reg(pi, 0x01, orig_BBConfig);
18520
18521 write_phy_reg(pi, 0x91, phy_saveregs[0]);
18522 write_phy_reg(pi, 0x92, phy_saveregs[1]);
18523 write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18524 write_phy_reg(pi, 0xec, phy_saveregs[3]);
18525
18526 pi->phyhang_avoid = phyhang_avoid_state;
18527
18528 if (pi->phyhang_avoid)
18529 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18530 }
18531
18532 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18533 {
18534 void *tbl_ptr;
18535 int coreNum;
18536 u16 *txcal_radio_regs = NULL;
18537
18538 if (pi->phyhang_avoid)
18539 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18540
18541 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18542
18543 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18544 &pi->calibration_cache.
18545 rxcal_coeffs_2G);
18546
18547 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18548 txcal_radio_regs =
18549 pi->calibration_cache.txcal_radio_regs_2G;
18550 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18551
18552 pi->calibration_cache.txcal_radio_regs_2G[0] =
18553 read_radio_reg(pi,
18554 RADIO_2056_TX_LOFT_FINE_I |
18555 RADIO_2056_TX0);
18556 pi->calibration_cache.txcal_radio_regs_2G[1] =
18557 read_radio_reg(pi,
18558 RADIO_2056_TX_LOFT_FINE_Q |
18559 RADIO_2056_TX0);
18560 pi->calibration_cache.txcal_radio_regs_2G[2] =
18561 read_radio_reg(pi,
18562 RADIO_2056_TX_LOFT_FINE_I |
18563 RADIO_2056_TX1);
18564 pi->calibration_cache.txcal_radio_regs_2G[3] =
18565 read_radio_reg(pi,
18566 RADIO_2056_TX_LOFT_FINE_Q |
18567 RADIO_2056_TX1);
18568
18569 pi->calibration_cache.txcal_radio_regs_2G[4] =
18570 read_radio_reg(pi,
18571 RADIO_2056_TX_LOFT_COARSE_I |
18572 RADIO_2056_TX0);
18573 pi->calibration_cache.txcal_radio_regs_2G[5] =
18574 read_radio_reg(pi,
18575 RADIO_2056_TX_LOFT_COARSE_Q |
18576 RADIO_2056_TX0);
18577 pi->calibration_cache.txcal_radio_regs_2G[6] =
18578 read_radio_reg(pi,
18579 RADIO_2056_TX_LOFT_COARSE_I |
18580 RADIO_2056_TX1);
18581 pi->calibration_cache.txcal_radio_regs_2G[7] =
18582 read_radio_reg(pi,
18583 RADIO_2056_TX_LOFT_COARSE_Q |
18584 RADIO_2056_TX1);
18585 } else {
18586 pi->calibration_cache.txcal_radio_regs_2G[0] =
18587 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18588 pi->calibration_cache.txcal_radio_regs_2G[1] =
18589 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18590 pi->calibration_cache.txcal_radio_regs_2G[2] =
18591 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18592 pi->calibration_cache.txcal_radio_regs_2G[3] =
18593 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18594 }
18595
18596 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18597 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18598 } else {
18599
18600 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18601 &pi->calibration_cache.
18602 rxcal_coeffs_5G);
18603
18604 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18605 txcal_radio_regs =
18606 pi->calibration_cache.txcal_radio_regs_5G;
18607 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18608
18609 pi->calibration_cache.txcal_radio_regs_5G[0] =
18610 read_radio_reg(pi,
18611 RADIO_2056_TX_LOFT_FINE_I |
18612 RADIO_2056_TX0);
18613 pi->calibration_cache.txcal_radio_regs_5G[1] =
18614 read_radio_reg(pi,
18615 RADIO_2056_TX_LOFT_FINE_Q |
18616 RADIO_2056_TX0);
18617 pi->calibration_cache.txcal_radio_regs_5G[2] =
18618 read_radio_reg(pi,
18619 RADIO_2056_TX_LOFT_FINE_I |
18620 RADIO_2056_TX1);
18621 pi->calibration_cache.txcal_radio_regs_5G[3] =
18622 read_radio_reg(pi,
18623 RADIO_2056_TX_LOFT_FINE_Q |
18624 RADIO_2056_TX1);
18625
18626 pi->calibration_cache.txcal_radio_regs_5G[4] =
18627 read_radio_reg(pi,
18628 RADIO_2056_TX_LOFT_COARSE_I |
18629 RADIO_2056_TX0);
18630 pi->calibration_cache.txcal_radio_regs_5G[5] =
18631 read_radio_reg(pi,
18632 RADIO_2056_TX_LOFT_COARSE_Q |
18633 RADIO_2056_TX0);
18634 pi->calibration_cache.txcal_radio_regs_5G[6] =
18635 read_radio_reg(pi,
18636 RADIO_2056_TX_LOFT_COARSE_I |
18637 RADIO_2056_TX1);
18638 pi->calibration_cache.txcal_radio_regs_5G[7] =
18639 read_radio_reg(pi,
18640 RADIO_2056_TX_LOFT_COARSE_Q |
18641 RADIO_2056_TX1);
18642 } else {
18643 pi->calibration_cache.txcal_radio_regs_5G[0] =
18644 read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18645 pi->calibration_cache.txcal_radio_regs_5G[1] =
18646 read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18647 pi->calibration_cache.txcal_radio_regs_5G[2] =
18648 read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18649 pi->calibration_cache.txcal_radio_regs_5G[3] =
18650 read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18651 }
18652
18653 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18654 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18655 }
18656 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18657 for (coreNum = 0; coreNum <= 1; coreNum++) {
18658
18659 txcal_radio_regs[2 * coreNum] =
18660 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18661 LOFT_FINE_I);
18662 txcal_radio_regs[2 * coreNum + 1] =
18663 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18664 LOFT_FINE_Q);
18665
18666 txcal_radio_regs[2 * coreNum + 4] =
18667 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18668 LOFT_COARSE_I);
18669 txcal_radio_regs[2 * coreNum + 5] =
18670 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18671 LOFT_COARSE_Q);
18672 }
18673 }
18674
18675 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18676
18677 if (pi->phyhang_avoid)
18678 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18679 }
18680
18681 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18682 {
18683 struct nphy_iq_comp tx_comp;
18684
18685 wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18686
18687 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18688 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18689 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18690 wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18691 }
18692
18693 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18694 {
18695 u16 *loft_comp;
18696 u16 txcal_coeffs_bphy[4];
18697 u16 *tbl_ptr;
18698 int coreNum;
18699 u16 *txcal_radio_regs = NULL;
18700
18701 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18702 if (pi->nphy_iqcal_chanspec_2G == 0)
18703 return;
18704
18705 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18706 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18707 } else {
18708 if (pi->nphy_iqcal_chanspec_5G == 0)
18709 return;
18710
18711 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18712 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18713 }
18714
18715 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18716
18717 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18718 txcal_coeffs_bphy[0] = tbl_ptr[0];
18719 txcal_coeffs_bphy[1] = tbl_ptr[1];
18720 txcal_coeffs_bphy[2] = tbl_ptr[2];
18721 txcal_coeffs_bphy[3] = tbl_ptr[3];
18722 } else {
18723 txcal_coeffs_bphy[0] = 0;
18724 txcal_coeffs_bphy[1] = 0;
18725 txcal_coeffs_bphy[2] = 0;
18726 txcal_coeffs_bphy[3] = 0;
18727 }
18728
18729 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18730 txcal_coeffs_bphy);
18731
18732 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18733
18734 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18735
18736 if (NREV_LT(pi->pubpi.phy_rev, 2))
18737 wlc_phy_tx_iq_war_nphy(pi);
18738
18739 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18740 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18741 txcal_radio_regs =
18742 pi->calibration_cache.txcal_radio_regs_2G;
18743 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18744
18745 write_radio_reg(pi,
18746 RADIO_2056_TX_LOFT_FINE_I |
18747 RADIO_2056_TX0,
18748 pi->calibration_cache.
18749 txcal_radio_regs_2G[0]);
18750 write_radio_reg(pi,
18751 RADIO_2056_TX_LOFT_FINE_Q |
18752 RADIO_2056_TX0,
18753 pi->calibration_cache.
18754 txcal_radio_regs_2G[1]);
18755 write_radio_reg(pi,
18756 RADIO_2056_TX_LOFT_FINE_I |
18757 RADIO_2056_TX1,
18758 pi->calibration_cache.
18759 txcal_radio_regs_2G[2]);
18760 write_radio_reg(pi,
18761 RADIO_2056_TX_LOFT_FINE_Q |
18762 RADIO_2056_TX1,
18763 pi->calibration_cache.
18764 txcal_radio_regs_2G[3]);
18765
18766 write_radio_reg(pi,
18767 RADIO_2056_TX_LOFT_COARSE_I |
18768 RADIO_2056_TX0,
18769 pi->calibration_cache.
18770 txcal_radio_regs_2G[4]);
18771 write_radio_reg(pi,
18772 RADIO_2056_TX_LOFT_COARSE_Q |
18773 RADIO_2056_TX0,
18774 pi->calibration_cache.
18775 txcal_radio_regs_2G[5]);
18776 write_radio_reg(pi,
18777 RADIO_2056_TX_LOFT_COARSE_I |
18778 RADIO_2056_TX1,
18779 pi->calibration_cache.
18780 txcal_radio_regs_2G[6]);
18781 write_radio_reg(pi,
18782 RADIO_2056_TX_LOFT_COARSE_Q |
18783 RADIO_2056_TX1,
18784 pi->calibration_cache.
18785 txcal_radio_regs_2G[7]);
18786 } else {
18787 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18788 pi->calibration_cache.
18789 txcal_radio_regs_2G[0]);
18790 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18791 pi->calibration_cache.
18792 txcal_radio_regs_2G[1]);
18793 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18794 pi->calibration_cache.
18795 txcal_radio_regs_2G[2]);
18796 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18797 pi->calibration_cache.
18798 txcal_radio_regs_2G[3]);
18799 }
18800
18801 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18802 &pi->calibration_cache.
18803 rxcal_coeffs_2G);
18804 } else {
18805 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18806 txcal_radio_regs =
18807 pi->calibration_cache.txcal_radio_regs_5G;
18808 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18809
18810 write_radio_reg(pi,
18811 RADIO_2056_TX_LOFT_FINE_I |
18812 RADIO_2056_TX0,
18813 pi->calibration_cache.
18814 txcal_radio_regs_5G[0]);
18815 write_radio_reg(pi,
18816 RADIO_2056_TX_LOFT_FINE_Q |
18817 RADIO_2056_TX0,
18818 pi->calibration_cache.
18819 txcal_radio_regs_5G[1]);
18820 write_radio_reg(pi,
18821 RADIO_2056_TX_LOFT_FINE_I |
18822 RADIO_2056_TX1,
18823 pi->calibration_cache.
18824 txcal_radio_regs_5G[2]);
18825 write_radio_reg(pi,
18826 RADIO_2056_TX_LOFT_FINE_Q |
18827 RADIO_2056_TX1,
18828 pi->calibration_cache.
18829 txcal_radio_regs_5G[3]);
18830
18831 write_radio_reg(pi,
18832 RADIO_2056_TX_LOFT_COARSE_I |
18833 RADIO_2056_TX0,
18834 pi->calibration_cache.
18835 txcal_radio_regs_5G[4]);
18836 write_radio_reg(pi,
18837 RADIO_2056_TX_LOFT_COARSE_Q |
18838 RADIO_2056_TX0,
18839 pi->calibration_cache.
18840 txcal_radio_regs_5G[5]);
18841 write_radio_reg(pi,
18842 RADIO_2056_TX_LOFT_COARSE_I |
18843 RADIO_2056_TX1,
18844 pi->calibration_cache.
18845 txcal_radio_regs_5G[6]);
18846 write_radio_reg(pi,
18847 RADIO_2056_TX_LOFT_COARSE_Q |
18848 RADIO_2056_TX1,
18849 pi->calibration_cache.
18850 txcal_radio_regs_5G[7]);
18851 } else {
18852 write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18853 pi->calibration_cache.
18854 txcal_radio_regs_5G[0]);
18855 write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18856 pi->calibration_cache.
18857 txcal_radio_regs_5G[1]);
18858 write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18859 pi->calibration_cache.
18860 txcal_radio_regs_5G[2]);
18861 write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18862 pi->calibration_cache.
18863 txcal_radio_regs_5G[3]);
18864 }
18865
18866 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18867 &pi->calibration_cache.
18868 rxcal_coeffs_5G);
18869 }
18870
18871 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18872 for (coreNum = 0; coreNum <= 1; coreNum++) {
18873
18874 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18875 LOFT_FINE_I,
18876 txcal_radio_regs[2 * coreNum]);
18877 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18878 LOFT_FINE_Q,
18879 txcal_radio_regs[2 * coreNum + 1]);
18880
18881 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18882 LOFT_COARSE_I,
18883 txcal_radio_regs[2 * coreNum + 4]);
18884 WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18885 LOFT_COARSE_Q,
18886 txcal_radio_regs[2 * coreNum + 5]);
18887 }
18888 }
18889 }
18890
18891 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18892 {
18893 u32 idx;
18894 u16 iqloCalbuf[7];
18895 u32 iqcomp, locomp, curr_locomp;
18896 s8 locomp_i, locomp_q;
18897 s8 curr_locomp_i, curr_locomp_q;
18898 u32 tbl_id, tbl_len, tbl_offset;
18899 u32 regval[128];
18900
18901 if (pi->phyhang_avoid)
18902 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18903
18904 wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18905
18906 tbl_len = 128;
18907 tbl_offset = 320;
18908 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18909 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18910 iqcomp =
18911 (tbl_id ==
18912 26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18913 (iqloCalbuf[1] & 0x3ff)
18914 : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18915 (iqloCalbuf[3] & 0x3ff);
18916
18917 for (idx = 0; idx < tbl_len; idx++)
18918 regval[idx] = iqcomp;
18919 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18920 regval);
18921 }
18922
18923 tbl_offset = 448;
18924 for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18925 tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18926
18927 locomp =
18928 (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18929 locomp_i = (s8) ((locomp >> 8) & 0xff);
18930 locomp_q = (s8) ((locomp) & 0xff);
18931 for (idx = 0; idx < tbl_len; idx++) {
18932 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18933 curr_locomp_i = locomp_i;
18934 curr_locomp_q = locomp_q;
18935 } else {
18936 curr_locomp_i = (s8) ((locomp_i *
18937 nphy_tpc_loscale[idx] +
18938 128) >> 8);
18939 curr_locomp_q =
18940 (s8) ((locomp_q *
18941 nphy_tpc_loscale[idx] +
18942 128) >> 8);
18943 }
18944 curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18945 curr_locomp |= (u32) (curr_locomp_q & 0xff);
18946 regval[idx] = curr_locomp;
18947 }
18948 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18949 regval);
18950 }
18951
18952 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18953
18954 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18955 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18956 }
18957
18958 if (pi->phyhang_avoid)
18959 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18960 }
18961
18962 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18963 {
18964 u8 tx_lpf_bw = 0;
18965
18966 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18967 if (CHSPEC_IS40(pi->radio_chanspec))
18968 tx_lpf_bw = 3;
18969 else
18970 tx_lpf_bw = 1;
18971
18972 if (PHY_IPA(pi)) {
18973 if (CHSPEC_IS40(pi->radio_chanspec))
18974 tx_lpf_bw = 5;
18975 else
18976 tx_lpf_bw = 4;
18977 }
18978
18979 write_phy_reg(pi, 0xe8,
18980 (tx_lpf_bw << 0) |
18981 (tx_lpf_bw << 3) |
18982 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18983
18984 if (PHY_IPA(pi)) {
18985
18986 if (CHSPEC_IS40(pi->radio_chanspec))
18987 tx_lpf_bw = 4;
18988 else
18989 tx_lpf_bw = 1;
18990
18991 write_phy_reg(pi, 0xe9,
18992 (tx_lpf_bw << 0) |
18993 (tx_lpf_bw << 3) |
18994 (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18995 }
18996 }
18997 }
18998
18999 static void
19000 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19001 {
19002 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19003 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19004 CHSPEC_IS40(pi->radio_chanspec)) {
19005 if (!pi->nphy_anarxlpf_adjusted) {
19006 write_radio_reg(pi,
19007 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19008 RADIO_2056_RX0),
19009 ((pi->nphy_rccal_value +
19010 reduction_factr) | 0x80));
19011
19012 pi->nphy_anarxlpf_adjusted = true;
19013 }
19014 } else {
19015 if (pi->nphy_anarxlpf_adjusted) {
19016 write_radio_reg(pi,
19017 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19018 RADIO_2056_RX0),
19019 (pi->nphy_rccal_value | 0x80));
19020
19021 pi->nphy_anarxlpf_adjusted = false;
19022 }
19023 }
19024 }
19025 }
19026
19027 static void
19028 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19029 int *tone_id_buf, u32 *noise_var_buf)
19030 {
19031 int i;
19032 u32 offset;
19033 int tone_id;
19034 int tbllen =
19035 CHSPEC_IS40(pi->radio_chanspec) ?
19036 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19037
19038 if (pi->nphy_noisevars_adjusted) {
19039 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19040 tone_id = pi->nphy_saved_noisevars.tone_id[i];
19041 offset = (tone_id >= 0) ?
19042 ((tone_id *
19043 2) + 1) : (tbllen + (tone_id * 2) + 1);
19044 wlc_phy_table_write_nphy(
19045 pi, NPHY_TBL_ID_NOISEVAR, 1,
19046 offset, 32,
19047 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19048 }
19049
19050 pi->nphy_saved_noisevars.bufcount = 0;
19051 pi->nphy_noisevars_adjusted = false;
19052 }
19053
19054 if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19055 pi->nphy_saved_noisevars.bufcount = 0;
19056
19057 for (i = 0; i < ntones; i++) {
19058 tone_id = tone_id_buf[i];
19059 offset = (tone_id >= 0) ?
19060 ((tone_id * 2) + 1) :
19061 (tbllen + (tone_id * 2) + 1);
19062 pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19063 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19064 offset, 32,
19065 &pi->nphy_saved_noisevars.
19066 min_noise_vars[i]);
19067 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19068 offset, 32, &noise_var_buf[i]);
19069 pi->nphy_saved_noisevars.bufcount++;
19070 }
19071
19072 pi->nphy_noisevars_adjusted = true;
19073 }
19074 }
19075
19076 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19077 {
19078 u16 regval;
19079
19080 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19081 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19082 CHSPEC_IS40(pi->radio_chanspec)) {
19083 if (!pi->nphy_crsminpwr_adjusted) {
19084 regval = read_phy_reg(pi, 0x27d);
19085 pi->nphy_crsminpwr[0] = regval & 0xff;
19086 regval &= 0xff00;
19087 regval |= (u16) minpwr;
19088 write_phy_reg(pi, 0x27d, regval);
19089
19090 regval = read_phy_reg(pi, 0x280);
19091 pi->nphy_crsminpwr[1] = regval & 0xff;
19092 regval &= 0xff00;
19093 regval |= (u16) minpwr;
19094 write_phy_reg(pi, 0x280, regval);
19095
19096 regval = read_phy_reg(pi, 0x283);
19097 pi->nphy_crsminpwr[2] = regval & 0xff;
19098 regval &= 0xff00;
19099 regval |= (u16) minpwr;
19100 write_phy_reg(pi, 0x283, regval);
19101
19102 pi->nphy_crsminpwr_adjusted = true;
19103 }
19104 } else {
19105 if (pi->nphy_crsminpwr_adjusted) {
19106 regval = read_phy_reg(pi, 0x27d);
19107 regval &= 0xff00;
19108 regval |= pi->nphy_crsminpwr[0];
19109 write_phy_reg(pi, 0x27d, regval);
19110
19111 regval = read_phy_reg(pi, 0x280);
19112 regval &= 0xff00;
19113 regval |= pi->nphy_crsminpwr[1];
19114 write_phy_reg(pi, 0x280, regval);
19115
19116 regval = read_phy_reg(pi, 0x283);
19117 regval &= 0xff00;
19118 regval |= pi->nphy_crsminpwr[2];
19119 write_phy_reg(pi, 0x283, regval);
19120
19121 pi->nphy_crsminpwr_adjusted = false;
19122 }
19123 }
19124 }
19125 }
19126
19127 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19128 {
19129 u16 cur_channel = 0;
19130 int nphy_adj_tone_id_buf[] = { 57, 58 };
19131 u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19132 bool isAdjustNoiseVar = false;
19133 uint numTonesAdjust = 0;
19134 u32 tempval = 0;
19135
19136 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19137 if (pi->phyhang_avoid)
19138 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19139
19140 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19141
19142 if (pi->nphy_gband_spurwar_en) {
19143
19144 wlc_phy_adjust_rx_analpfbw_nphy(
19145 pi,
19146 NPHY_ANARXLPFBW_REDUCTIONFACT);
19147
19148 if (CHSPEC_IS2G(pi->radio_chanspec)) {
19149 if ((cur_channel == 11)
19150 && CHSPEC_IS40(pi->radio_chanspec))
19151 wlc_phy_adjust_min_noisevar_nphy(
19152 pi, 2,
19153 nphy_adj_tone_id_buf,
19154 nphy_adj_noise_var_buf);
19155 else
19156 wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19157 NULL,
19158 NULL);
19159 }
19160
19161 wlc_phy_adjust_crsminpwr_nphy(pi,
19162 NPHY_ADJUSTED_MINCRSPOWER);
19163 }
19164
19165 if ((pi->nphy_gband_spurwar2_en)
19166 && CHSPEC_IS2G(pi->radio_chanspec)) {
19167
19168 if (CHSPEC_IS40(pi->radio_chanspec)) {
19169 switch (cur_channel) {
19170 case 3:
19171 nphy_adj_tone_id_buf[0] = 57;
19172 nphy_adj_tone_id_buf[1] = 58;
19173 nphy_adj_noise_var_buf[0] = 0x22f;
19174 nphy_adj_noise_var_buf[1] = 0x25f;
19175 isAdjustNoiseVar = true;
19176 break;
19177 case 4:
19178 nphy_adj_tone_id_buf[0] = 41;
19179 nphy_adj_tone_id_buf[1] = 42;
19180 nphy_adj_noise_var_buf[0] = 0x22f;
19181 nphy_adj_noise_var_buf[1] = 0x25f;
19182 isAdjustNoiseVar = true;
19183 break;
19184 case 5:
19185 nphy_adj_tone_id_buf[0] = 25;
19186 nphy_adj_tone_id_buf[1] = 26;
19187 nphy_adj_noise_var_buf[0] = 0x24f;
19188 nphy_adj_noise_var_buf[1] = 0x25f;
19189 isAdjustNoiseVar = true;
19190 break;
19191 case 6:
19192 nphy_adj_tone_id_buf[0] = 9;
19193 nphy_adj_tone_id_buf[1] = 10;
19194 nphy_adj_noise_var_buf[0] = 0x22f;
19195 nphy_adj_noise_var_buf[1] = 0x24f;
19196 isAdjustNoiseVar = true;
19197 break;
19198 case 7:
19199 nphy_adj_tone_id_buf[0] = 121;
19200 nphy_adj_tone_id_buf[1] = 122;
19201 nphy_adj_noise_var_buf[0] = 0x18f;
19202 nphy_adj_noise_var_buf[1] = 0x24f;
19203 isAdjustNoiseVar = true;
19204 break;
19205 case 8:
19206 nphy_adj_tone_id_buf[0] = 105;
19207 nphy_adj_tone_id_buf[1] = 106;
19208 nphy_adj_noise_var_buf[0] = 0x22f;
19209 nphy_adj_noise_var_buf[1] = 0x25f;
19210 isAdjustNoiseVar = true;
19211 break;
19212 case 9:
19213 nphy_adj_tone_id_buf[0] = 89;
19214 nphy_adj_tone_id_buf[1] = 90;
19215 nphy_adj_noise_var_buf[0] = 0x22f;
19216 nphy_adj_noise_var_buf[1] = 0x24f;
19217 isAdjustNoiseVar = true;
19218 break;
19219 case 10:
19220 nphy_adj_tone_id_buf[0] = 73;
19221 nphy_adj_tone_id_buf[1] = 74;
19222 nphy_adj_noise_var_buf[0] = 0x22f;
19223 nphy_adj_noise_var_buf[1] = 0x24f;
19224 isAdjustNoiseVar = true;
19225 break;
19226 default:
19227 isAdjustNoiseVar = false;
19228 break;
19229 }
19230 }
19231
19232 if (isAdjustNoiseVar) {
19233 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19234
19235 wlc_phy_adjust_min_noisevar_nphy(
19236 pi,
19237 numTonesAdjust,
19238 nphy_adj_tone_id_buf,
19239 nphy_adj_noise_var_buf);
19240
19241 tempval = 0;
19242
19243 } else {
19244 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19245 NULL);
19246 }
19247 }
19248
19249 if ((pi->nphy_aband_spurwar_en) &&
19250 (CHSPEC_IS5G(pi->radio_chanspec))) {
19251 switch (cur_channel) {
19252 case 54:
19253 nphy_adj_tone_id_buf[0] = 32;
19254 nphy_adj_noise_var_buf[0] = 0x25f;
19255 break;
19256 case 38:
19257 case 102:
19258 case 118:
19259 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19260 (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19261 nphy_adj_tone_id_buf[0] = 32;
19262 nphy_adj_noise_var_buf[0] = 0x21f;
19263 } else {
19264 nphy_adj_tone_id_buf[0] = 0;
19265 nphy_adj_noise_var_buf[0] = 0x0;
19266 }
19267 break;
19268 case 134:
19269 nphy_adj_tone_id_buf[0] = 32;
19270 nphy_adj_noise_var_buf[0] = 0x21f;
19271 break;
19272 case 151:
19273 nphy_adj_tone_id_buf[0] = 16;
19274 nphy_adj_noise_var_buf[0] = 0x23f;
19275 break;
19276 case 153:
19277 case 161:
19278 nphy_adj_tone_id_buf[0] = 48;
19279 nphy_adj_noise_var_buf[0] = 0x23f;
19280 break;
19281 default:
19282 nphy_adj_tone_id_buf[0] = 0;
19283 nphy_adj_noise_var_buf[0] = 0x0;
19284 break;
19285 }
19286
19287 if (nphy_adj_tone_id_buf[0]
19288 && nphy_adj_noise_var_buf[0])
19289 wlc_phy_adjust_min_noisevar_nphy(
19290 pi, 1,
19291 nphy_adj_tone_id_buf,
19292 nphy_adj_noise_var_buf);
19293 else
19294 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19295 NULL);
19296 }
19297
19298 if (pi->phyhang_avoid)
19299 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19300 }
19301 }
19302
19303 void wlc_phy_init_nphy(struct brcms_phy *pi)
19304 {
19305 u16 val;
19306 u16 clip1_ths[2];
19307 struct nphy_txgains target_gain;
19308 u8 tx_pwr_ctrl_state;
19309 bool do_nphy_cal = false;
19310 uint core;
19311 u32 d11_clk_ctl_st;
19312 bool do_rssi_cal = false;
19313
19314 core = 0;
19315
19316 if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19317 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19318
19319 if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19320 ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19321 (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19322 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19323 (CHSPEC_IS2G(pi->radio_chanspec)))
19324 bcma_cc_set32(&pi->d11core->bus->drv_cc,
19325 BCMA_CC_CHIPCTL, 0x40);
19326 }
19327
19328 if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19329 bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19330 ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19331
19332 if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19333 CHSPEC_IS40(pi->radio_chanspec)) {
19334
19335 d11_clk_ctl_st = bcma_read32(pi->d11core,
19336 D11REGOFFS(clk_ctl_st));
19337 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19338 ~(CCS_FORCEHT | CCS_HTAREQ));
19339
19340 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19341 d11_clk_ctl_st);
19342 }
19343
19344 pi->use_int_tx_iqlo_cal_nphy =
19345 (PHY_IPA(pi) ||
19346 (NREV_GE(pi->pubpi.phy_rev, 7) ||
19347 (NREV_GE(pi->pubpi.phy_rev, 5)
19348 && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19349
19350 pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19351
19352 pi->nphy_deaf_count = 0;
19353
19354 wlc_phy_tbl_init_nphy(pi);
19355
19356 pi->nphy_crsminpwr_adjusted = false;
19357 pi->nphy_noisevars_adjusted = false;
19358
19359 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19360 write_phy_reg(pi, 0xe7, 0);
19361 write_phy_reg(pi, 0xec, 0);
19362 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19363 write_phy_reg(pi, 0x342, 0);
19364 write_phy_reg(pi, 0x343, 0);
19365 write_phy_reg(pi, 0x346, 0);
19366 write_phy_reg(pi, 0x347, 0);
19367 }
19368 write_phy_reg(pi, 0xe5, 0);
19369 write_phy_reg(pi, 0xe6, 0);
19370 } else {
19371 write_phy_reg(pi, 0xec, 0);
19372 }
19373
19374 write_phy_reg(pi, 0x91, 0);
19375 write_phy_reg(pi, 0x92, 0);
19376 if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19377 write_phy_reg(pi, 0x93, 0);
19378 write_phy_reg(pi, 0x94, 0);
19379 }
19380
19381 and_phy_reg(pi, 0xa1, ~3);
19382
19383 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19384 write_phy_reg(pi, 0x8f, 0);
19385 write_phy_reg(pi, 0xa5, 0);
19386 } else {
19387 write_phy_reg(pi, 0xa5, 0);
19388 }
19389
19390 if (NREV_IS(pi->pubpi.phy_rev, 2))
19391 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19392 else if (NREV_LT(pi->pubpi.phy_rev, 2))
19393 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19394
19395 write_phy_reg(pi, 0x203, 32);
19396 write_phy_reg(pi, 0x201, 32);
19397
19398 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19399 write_phy_reg(pi, 0x20d, 160);
19400 else
19401 write_phy_reg(pi, 0x20d, 184);
19402
19403 write_phy_reg(pi, 0x13a, 200);
19404
19405 write_phy_reg(pi, 0x70, 80);
19406
19407 write_phy_reg(pi, 0x1ff, 48);
19408
19409 if (NREV_LT(pi->pubpi.phy_rev, 8))
19410 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19411
19412 wlc_phy_stf_chain_upd_nphy(pi);
19413
19414 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19415 write_phy_reg(pi, 0x180, 0xaa8);
19416 write_phy_reg(pi, 0x181, 0x9a4);
19417 }
19418
19419 if (PHY_IPA(pi)) {
19420 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19421
19422 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19423 0x29b, (0x1 << 0), (1) << 0);
19424
19425 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19426 0x29c, (0x1ff << 7),
19427 (pi->nphy_papd_epsilon_offset[core]) << 7);
19428
19429 }
19430
19431 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19432 } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19433 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19434 }
19435
19436 wlc_phy_workarounds_nphy(pi);
19437
19438 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19439
19440 val = read_phy_reg(pi, 0x01);
19441 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19442 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19443 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19444
19445 wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19446
19447 wlc_phy_pa_override_nphy(pi, OFF);
19448 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19449 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19450 wlc_phy_pa_override_nphy(pi, ON);
19451
19452 wlc_phy_classifier_nphy(pi, 0, 0);
19453 wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19454
19455 if (CHSPEC_IS2G(pi->radio_chanspec))
19456 wlc_phy_bphy_init_nphy(pi);
19457
19458 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19459 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19460
19461 wlc_phy_txpwr_fixpower_nphy(pi);
19462
19463 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19464
19465 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19466
19467 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19468 u32 *tx_pwrctrl_tbl = NULL;
19469 u16 idx;
19470 s16 pga_gn = 0;
19471 s16 pad_gn = 0;
19472 s32 rfpwr_offset;
19473
19474 if (PHY_IPA(pi)) {
19475 tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19476 } else {
19477 if (CHSPEC_IS5G(pi->radio_chanspec)) {
19478 if (NREV_IS(pi->pubpi.phy_rev, 3))
19479 tx_pwrctrl_tbl =
19480 nphy_tpc_5GHz_txgain_rev3;
19481 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19482 tx_pwrctrl_tbl =
19483 (pi->srom_fem5g.extpagain ==
19484 3) ?
19485 nphy_tpc_5GHz_txgain_HiPwrEPA :
19486 nphy_tpc_5GHz_txgain_rev4;
19487 else
19488 tx_pwrctrl_tbl =
19489 nphy_tpc_5GHz_txgain_rev5;
19490 } else {
19491 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19492 if (pi->pubpi.radiorev == 5)
19493 tx_pwrctrl_tbl =
19494 nphy_tpc_txgain_epa_2057rev5;
19495 else if (pi->pubpi.radiorev == 3)
19496 tx_pwrctrl_tbl =
19497 nphy_tpc_txgain_epa_2057rev3;
19498 } else {
19499 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19500 (pi->srom_fem2g.extpagain == 3))
19501 tx_pwrctrl_tbl =
19502 nphy_tpc_txgain_HiPwrEPA;
19503 else
19504 tx_pwrctrl_tbl =
19505 nphy_tpc_txgain_rev3;
19506 }
19507 }
19508 }
19509
19510 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19511 192, 32, tx_pwrctrl_tbl);
19512 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19513 192, 32, tx_pwrctrl_tbl);
19514
19515 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19516
19517 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19518
19519 for (idx = 0; idx < 128; idx++) {
19520 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19521 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19522 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19523 pad_gn);
19524 wlc_phy_table_write_nphy(
19525 pi,
19526 NPHY_TBL_ID_CORE1TXPWRCTL,
19527 1, 576 + idx, 32,
19528 &rfpwr_offset);
19529 wlc_phy_table_write_nphy(
19530 pi,
19531 NPHY_TBL_ID_CORE2TXPWRCTL,
19532 1, 576 + idx, 32,
19533 &rfpwr_offset);
19534 }
19535 } else {
19536
19537 for (idx = 0; idx < 128; idx++) {
19538 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19539 if (CHSPEC_IS2G(pi->radio_chanspec))
19540 rfpwr_offset = (s16)
19541 nphy_papd_pga_gain_delta_ipa_2g
19542 [pga_gn];
19543 else
19544 rfpwr_offset = (s16)
19545 nphy_papd_pga_gain_delta_ipa_5g
19546 [pga_gn];
19547
19548 wlc_phy_table_write_nphy(
19549 pi,
19550 NPHY_TBL_ID_CORE1TXPWRCTL,
19551 1, 576 + idx, 32,
19552 &rfpwr_offset);
19553 wlc_phy_table_write_nphy(
19554 pi,
19555 NPHY_TBL_ID_CORE2TXPWRCTL,
19556 1, 576 + idx, 32,
19557 &rfpwr_offset);
19558 }
19559
19560 }
19561 } else {
19562
19563 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19564 192, 32, nphy_tpc_txgain);
19565 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19566 192, 32, nphy_tpc_txgain);
19567 }
19568
19569 if (pi->sh->phyrxchain != 0x3)
19570 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19571 pi->sh->phyrxchain);
19572
19573 if (PHY_PERICAL_MPHASE_PENDING(pi))
19574 wlc_phy_cal_perical_mphase_restart(pi);
19575
19576 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19577 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19578 (pi->nphy_rssical_chanspec_2G == 0) :
19579 (pi->nphy_rssical_chanspec_5G == 0);
19580
19581 if (do_rssi_cal)
19582 wlc_phy_rssi_cal_nphy(pi);
19583 else
19584 wlc_phy_restore_rssical_nphy(pi);
19585 } else {
19586 wlc_phy_rssi_cal_nphy(pi);
19587 }
19588
19589 if (!SCAN_RM_IN_PROGRESS(pi))
19590 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19591 (pi->nphy_iqcal_chanspec_2G == 0) :
19592 (pi->nphy_iqcal_chanspec_5G == 0);
19593
19594 if (!pi->do_initcal)
19595 do_nphy_cal = false;
19596
19597 if (do_nphy_cal) {
19598
19599 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19600
19601 if (pi->antsel_type == ANTSEL_2x3)
19602 wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19603 true);
19604
19605 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19606 wlc_phy_rssi_cal_nphy(pi);
19607
19608 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19609 pi->nphy_cal_orig_pwr_idx[0] =
19610 pi->nphy_txpwrindex[PHY_CORE_0]
19611 .
19612 index_internal;
19613 pi->nphy_cal_orig_pwr_idx[1] =
19614 pi->nphy_txpwrindex[PHY_CORE_1]
19615 .
19616 index_internal;
19617
19618 wlc_phy_precal_txgain_nphy(pi);
19619 target_gain =
19620 wlc_phy_get_tx_gain_nphy(pi);
19621 }
19622
19623 if (wlc_phy_cal_txiqlo_nphy
19624 (pi, target_gain, true,
19625 false) == 0) {
19626 if (wlc_phy_cal_rxiq_nphy
19627 (pi, target_gain, 2,
19628 false) == 0)
19629 wlc_phy_savecal_nphy(pi);
19630
19631 }
19632 } else if (pi->mphase_cal_phase_id ==
19633 MPHASE_CAL_STATE_IDLE) {
19634 wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19635 PHY_PERICAL_PHYINIT);
19636 }
19637 } else {
19638 wlc_phy_restorecal_nphy(pi);
19639 }
19640
19641 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19642
19643 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19644
19645 wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19646
19647 if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19648
19649 write_phy_reg(pi, 0x70, 50);
19650
19651 wlc_phy_txlpfbw_nphy(pi);
19652
19653 wlc_phy_spurwar_nphy(pi);
19654
19655 }
19656
19657 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19658 {
19659 u16 val;
19660
19661 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19662
19663 val = read_phy_reg(pi, 0x01);
19664 write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19665 udelay(1);
19666 write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19667
19668 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19669
19670 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19671 }
19672
19673 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19674 {
19675 u16 rfctrlintc_override_val;
19676
19677 if (!en) {
19678
19679 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19680 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19681
19682 if (NREV_GE(pi->pubpi.phy_rev, 7))
19683 rfctrlintc_override_val = 0x1480;
19684 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19685 rfctrlintc_override_val =
19686 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19687 else
19688 rfctrlintc_override_val =
19689 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19690
19691 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19692 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19693 } else {
19694 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19695 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19696 }
19697
19698 }
19699
19700 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19701 {
19702
19703 u16 txrx_chain =
19704 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19705 bool CoreActv_override = false;
19706
19707 if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19708 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19709 CoreActv_override = true;
19710
19711 if (NREV_LE(pi->pubpi.phy_rev, 2))
19712 and_phy_reg(pi, 0xa0, ~0x20);
19713 } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19714 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19715 CoreActv_override = true;
19716
19717 if (NREV_LE(pi->pubpi.phy_rev, 2))
19718 or_phy_reg(pi, 0xa0, 0x20);
19719 }
19720
19721 mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19722
19723 if (CoreActv_override) {
19724 pi->nphy_perical = PHY_PERICAL_DISABLE;
19725 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19726 } else {
19727 pi->nphy_perical = PHY_PERICAL_MPHASE;
19728 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19729 }
19730 }
19731
19732 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19733 {
19734 u16 regval;
19735 u16 tbl_buf[16];
19736 uint i;
19737 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19738 u16 tbl_opcode;
19739 bool suspend;
19740
19741 pi->sh->phyrxchain = rxcore_bitmask;
19742
19743 if (!pi->sh->clk)
19744 return;
19745
19746 suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19747 MCTL_EN_MAC));
19748 if (!suspend)
19749 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19750
19751 if (pi->phyhang_avoid)
19752 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19753
19754 regval = read_phy_reg(pi, 0xa2);
19755 regval &= ~(0xf << 4);
19756 regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19757 write_phy_reg(pi, 0xa2, regval);
19758
19759 if ((rxcore_bitmask & 0x3) != 0x3) {
19760
19761 write_phy_reg(pi, 0x20e, 1);
19762
19763 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19764 if (pi->rx2tx_biasentry == -1) {
19765 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19766 ARRAY_SIZE(tbl_buf), 80,
19767 16, tbl_buf);
19768
19769 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19770 if (tbl_buf[i] ==
19771 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19772 pi->rx2tx_biasentry = (u8) i;
19773 tbl_opcode =
19774 NPHY_REV3_RFSEQ_CMD_NOP;
19775 wlc_phy_table_write_nphy(
19776 pi,
19777 NPHY_TBL_ID_RFSEQ,
19778 1, i,
19779 16,
19780 &tbl_opcode);
19781 break;
19782 } else if (tbl_buf[i] ==
19783 NPHY_REV3_RFSEQ_CMD_END)
19784 break;
19785 }
19786 }
19787 }
19788 } else {
19789
19790 write_phy_reg(pi, 0x20e, 30);
19791
19792 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19793 if (pi->rx2tx_biasentry != -1) {
19794 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19795 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19796 1, pi->rx2tx_biasentry,
19797 16, &tbl_opcode);
19798 pi->rx2tx_biasentry = -1;
19799 }
19800 }
19801 }
19802
19803 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19804
19805 if (pi->phyhang_avoid)
19806 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19807
19808 if (!suspend)
19809 wlapi_enable_mac(pi->sh->physhim);
19810 }
19811
19812 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19813 {
19814 u16 regval, rxen_bits;
19815 struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19816
19817 regval = read_phy_reg(pi, 0xa2);
19818 rxen_bits = (regval >> 4) & 0xf;
19819
19820 return (u8) rxen_bits;
19821 }
19822
19823 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19824 {
19825 return PHY_IPA(pi);
19826 }
19827
19828 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19829 {
19830 }
19831
19832 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19833 {
19834
19835 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19836 and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19837
19838 or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19839 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19840
19841 }
19842
19843 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19844 {
19845 struct radio_20xx_regs *regs_2057_ptr = NULL;
19846
19847 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19848 regs_2057_ptr = regs_2057_rev4;
19849 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19850 || NREV_IS(pi->pubpi.phy_rev, 9)) {
19851 switch (pi->pubpi.radiorev) {
19852 case 5:
19853
19854 if (NREV_IS(pi->pubpi.phy_rev, 8))
19855 regs_2057_ptr = regs_2057_rev5;
19856 else if (NREV_IS(pi->pubpi.phy_rev, 9))
19857 regs_2057_ptr = regs_2057_rev5v1;
19858 break;
19859
19860 case 7:
19861
19862 regs_2057_ptr = regs_2057_rev7;
19863 break;
19864
19865 case 8:
19866
19867 regs_2057_ptr = regs_2057_rev8;
19868 break;
19869
19870 default:
19871 break;
19872 }
19873 }
19874
19875 wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19876 }
19877
19878 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19879 {
19880 u16 rcal_reg = 0;
19881 int i;
19882
19883 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19884
19885 if (pi->pubpi.radiorev == 5) {
19886
19887 and_phy_reg(pi, 0x342, ~(0x1 << 1));
19888
19889 udelay(10);
19890
19891 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19892 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19893 0x1);
19894 }
19895 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19896
19897 udelay(10);
19898
19899 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19900
19901 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19902 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19903 if (rcal_reg & 0x1)
19904 break;
19905
19906 udelay(100);
19907 }
19908
19909 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19910 "HW error: radio calib2"))
19911 return 0;
19912
19913 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19914
19915 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19916
19917 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19918 if (pi->pubpi.radiorev == 5) {
19919
19920 mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19921 mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19922 0x0);
19923 }
19924
19925 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19926
19927 mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19928 rcal_reg);
19929 mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19930 rcal_reg << 2);
19931 }
19932
19933 } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19934 u16 savereg;
19935
19936 savereg =
19937 read_radio_reg(
19938 pi,
19939 RADIO_2056_SYN_PLL_MAST2 |
19940 RADIO_2056_SYN);
19941 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19942 savereg | 0x7);
19943 udelay(10);
19944
19945 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19946 0x1);
19947 udelay(10);
19948
19949 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19950 0x9);
19951
19952 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19953 rcal_reg = read_radio_reg(
19954 pi,
19955 RADIO_2056_SYN_RCAL_CODE_OUT |
19956 RADIO_2056_SYN);
19957 if (rcal_reg & 0x80)
19958 break;
19959
19960 udelay(100);
19961 }
19962
19963 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19964 "HW error: radio calib3"))
19965 return 0;
19966
19967 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19968 0x1);
19969
19970 rcal_reg =
19971 read_radio_reg(pi,
19972 RADIO_2056_SYN_RCAL_CODE_OUT |
19973 RADIO_2056_SYN);
19974
19975 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19976 0x0);
19977
19978 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19979 savereg);
19980
19981 return rcal_reg & 0x1f;
19982 }
19983 return rcal_reg & 0x3e;
19984 }
19985
19986 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19987 {
19988 u16 rccal_valid;
19989 int i;
19990 bool chip43226_6362A0;
19991
19992 chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19993 || (pi->pubpi.radiorev == 4)
19994 || (pi->pubpi.radiorev == 6));
19995
19996 rccal_valid = 0;
19997 if (chip43226_6362A0) {
19998 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19999 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20000 } else {
20001 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20002
20003 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20004 }
20005 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20006 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20007
20008 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20009 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20010 if (rccal_valid & 0x2)
20011 break;
20012
20013 udelay(500);
20014 }
20015
20016 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20017
20018 rccal_valid = 0;
20019 if (chip43226_6362A0) {
20020 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20021 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20022 } else {
20023 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20024
20025 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20026 }
20027 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20028 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20029
20030 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20031 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20032 if (rccal_valid & 0x2)
20033 break;
20034
20035 udelay(500);
20036 }
20037
20038 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20039
20040 rccal_valid = 0;
20041 if (chip43226_6362A0) {
20042 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20043
20044 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20045 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20046 } else {
20047 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20048 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20049 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20050 }
20051 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20052
20053 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20054 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20055 if (rccal_valid & 0x2)
20056 break;
20057
20058 udelay(500);
20059 }
20060
20061 if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20062 return 0;
20063
20064 write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20065
20066 return rccal_valid;
20067 }
20068
20069 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20070 {
20071
20072 mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20073
20074 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20075 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20076 mdelay(2);
20077 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20078 mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20079
20080 if (pi->phy_init_por) {
20081 wlc_phy_radio205x_rcal(pi);
20082 wlc_phy_radio2057_rccal(pi);
20083 }
20084
20085 mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20086 }
20087
20088 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20089 {
20090 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20091 const struct radio_regs *regs_TX_2056_ptr = NULL;
20092 const struct radio_regs *regs_RX_2056_ptr = NULL;
20093
20094 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20095 regs_SYN_2056_ptr = regs_SYN_2056;
20096 regs_TX_2056_ptr = regs_TX_2056;
20097 regs_RX_2056_ptr = regs_RX_2056;
20098 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20099 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20100 regs_TX_2056_ptr = regs_TX_2056_A1;
20101 regs_RX_2056_ptr = regs_RX_2056_A1;
20102 } else {
20103 switch (pi->pubpi.radiorev) {
20104 case 5:
20105 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20106 regs_TX_2056_ptr = regs_TX_2056_rev5;
20107 regs_RX_2056_ptr = regs_RX_2056_rev5;
20108 break;
20109
20110 case 6:
20111 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20112 regs_TX_2056_ptr = regs_TX_2056_rev6;
20113 regs_RX_2056_ptr = regs_RX_2056_rev6;
20114 break;
20115
20116 case 7:
20117 case 9:
20118 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20119 regs_TX_2056_ptr = regs_TX_2056_rev7;
20120 regs_RX_2056_ptr = regs_RX_2056_rev7;
20121 break;
20122
20123 case 8:
20124 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20125 regs_TX_2056_ptr = regs_TX_2056_rev8;
20126 regs_RX_2056_ptr = regs_RX_2056_rev8;
20127 break;
20128
20129 case 11:
20130 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20131 regs_TX_2056_ptr = regs_TX_2056_rev11;
20132 regs_RX_2056_ptr = regs_RX_2056_rev11;
20133 break;
20134
20135 default:
20136 break;
20137 }
20138 }
20139
20140 wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20141
20142 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20143
20144 wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20145
20146 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20147
20148 wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20149 }
20150
20151 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20152 {
20153 mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20154
20155 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20156 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20157 udelay(1000);
20158 mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20159
20160 if ((pi->sh->boardflags2 & BFL2_LEGACY)
20161 || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20162 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20163 else
20164 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20165
20166 mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20167
20168 if (pi->phy_init_por)
20169 wlc_phy_radio205x_rcal(pi);
20170 }
20171
20172 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20173 {
20174
20175 and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20176 or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20177
20178 or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20179 }
20180
20181 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20182 {
20183 wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20184 }
20185
20186 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20187 {
20188
20189 and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20190 ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20191
20192 if (((pi->sh->sromrev >= 4)
20193 && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20194 || ((pi->sh->sromrev < 4))) {
20195 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20196 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20197 }
20198
20199 mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20200 write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20201
20202 and_radio_reg(pi, RADIO_2055_CAL_MISC,
20203 ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20204
20205 or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20206
20207 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20208
20209 udelay(1000);
20210
20211 or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20212
20213 SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20214 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20215
20216 if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20217 RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20218 "HW error: radio calibration1\n"))
20219 return;
20220
20221 and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20222 ~(RADIO_2055_CAL_LPO_ENABLE));
20223
20224 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20225
20226 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20227 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20228
20229 write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20230 write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20231
20232 mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20233 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20234 mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20235 RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20236 if (pi->nphy_gain_boost) {
20237 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20238 ~(RADIO_2055_GAINBST_DISABLE));
20239 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20240 ~(RADIO_2055_GAINBST_DISABLE));
20241 } else {
20242 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20243 RADIO_2055_GAINBST_DISABLE);
20244 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20245 RADIO_2055_GAINBST_DISABLE);
20246 }
20247
20248 udelay(2);
20249 }
20250
20251 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20252 {
20253 if (on) {
20254 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20255 if (!pi->radio_is_on) {
20256 wlc_phy_radio_preinit_205x(pi);
20257 wlc_phy_radio_init_2057(pi);
20258 wlc_phy_radio_postinit_2057(pi);
20259 }
20260
20261 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20262 pi->radio_chanspec);
20263 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20264 wlc_phy_radio_preinit_205x(pi);
20265 wlc_phy_radio_init_2056(pi);
20266 wlc_phy_radio_postinit_2056(pi);
20267
20268 wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20269 pi->radio_chanspec);
20270 } else {
20271 wlc_phy_radio_preinit_2055(pi);
20272 wlc_phy_radio_init_2055(pi);
20273 wlc_phy_radio_postinit_2055(pi);
20274 }
20275
20276 pi->radio_is_on = true;
20277
20278 } else {
20279
20280 if (NREV_GE(pi->pubpi.phy_rev, 3)
20281 && NREV_LT(pi->pubpi.phy_rev, 7)) {
20282 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20283 mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20284
20285 write_radio_reg(pi,
20286 RADIO_2056_TX_PADA_BOOST_TUNE |
20287 RADIO_2056_TX0, 0);
20288 write_radio_reg(pi,
20289 RADIO_2056_TX_PADG_BOOST_TUNE |
20290 RADIO_2056_TX0, 0);
20291 write_radio_reg(pi,
20292 RADIO_2056_TX_PGAA_BOOST_TUNE |
20293 RADIO_2056_TX0, 0);
20294 write_radio_reg(pi,
20295 RADIO_2056_TX_PGAG_BOOST_TUNE |
20296 RADIO_2056_TX0, 0);
20297 mod_radio_reg(pi,
20298 RADIO_2056_TX_MIXA_BOOST_TUNE |
20299 RADIO_2056_TX0, 0xf0, 0);
20300 write_radio_reg(pi,
20301 RADIO_2056_TX_MIXG_BOOST_TUNE |
20302 RADIO_2056_TX0, 0);
20303
20304 write_radio_reg(pi,
20305 RADIO_2056_TX_PADA_BOOST_TUNE |
20306 RADIO_2056_TX1, 0);
20307 write_radio_reg(pi,
20308 RADIO_2056_TX_PADG_BOOST_TUNE |
20309 RADIO_2056_TX1, 0);
20310 write_radio_reg(pi,
20311 RADIO_2056_TX_PGAA_BOOST_TUNE |
20312 RADIO_2056_TX1, 0);
20313 write_radio_reg(pi,
20314 RADIO_2056_TX_PGAG_BOOST_TUNE |
20315 RADIO_2056_TX1, 0);
20316 mod_radio_reg(pi,
20317 RADIO_2056_TX_MIXA_BOOST_TUNE |
20318 RADIO_2056_TX1, 0xf0, 0);
20319 write_radio_reg(pi,
20320 RADIO_2056_TX_MIXG_BOOST_TUNE |
20321 RADIO_2056_TX1, 0);
20322
20323 pi->radio_is_on = false;
20324 }
20325
20326 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20327 and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20328 pi->radio_is_on = false;
20329 }
20330
20331 }
20332 }
20333
20334 static bool
20335 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20336 const struct chan_info_nphy_radio2057 **t0,
20337 const struct chan_info_nphy_radio205x **t1,
20338 const struct chan_info_nphy_radio2057_rev5 **t2,
20339 const struct chan_info_nphy_2055 **t3)
20340 {
20341 uint i;
20342 const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20343 const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20344 const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20345 u32 tbl_len = 0;
20346
20347 int freq = 0;
20348
20349 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20350
20351 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20352
20353 chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20354 tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20355
20356 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20357 || NREV_IS(pi->pubpi.phy_rev, 9)) {
20358 switch (pi->pubpi.radiorev) {
20359
20360 case 5:
20361
20362 if (pi->pubpi.radiover == 0x0) {
20363
20364 chan_info_tbl_p_2 =
20365 chan_info_nphyrev8_2057_rev5;
20366 tbl_len = ARRAY_SIZE(
20367 chan_info_nphyrev8_2057_rev5);
20368
20369 } else if (pi->pubpi.radiover == 0x1) {
20370
20371 chan_info_tbl_p_2 =
20372 chan_info_nphyrev9_2057_rev5v1;
20373 tbl_len = ARRAY_SIZE(
20374 chan_info_nphyrev9_2057_rev5v1);
20375
20376 }
20377 break;
20378
20379 case 7:
20380 chan_info_tbl_p_0 =
20381 chan_info_nphyrev8_2057_rev7;
20382 tbl_len = ARRAY_SIZE(
20383 chan_info_nphyrev8_2057_rev7);
20384 break;
20385
20386 case 8:
20387 chan_info_tbl_p_0 =
20388 chan_info_nphyrev8_2057_rev8;
20389 tbl_len = ARRAY_SIZE(
20390 chan_info_nphyrev8_2057_rev8);
20391 break;
20392
20393 default:
20394 break;
20395 }
20396 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20397
20398 chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20399 tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20400 } else {
20401 goto fail;
20402 }
20403
20404 for (i = 0; i < tbl_len; i++) {
20405 if (pi->pubpi.radiorev == 5) {
20406
20407 if (chan_info_tbl_p_2[i].chan == channel)
20408 break;
20409 } else {
20410
20411 if (chan_info_tbl_p_0[i].chan == channel)
20412 break;
20413 }
20414 }
20415
20416 if (i >= tbl_len)
20417 goto fail;
20418
20419 if (pi->pubpi.radiorev == 5) {
20420 *t2 = &chan_info_tbl_p_2[i];
20421 freq = chan_info_tbl_p_2[i].freq;
20422 } else {
20423 *t0 = &chan_info_tbl_p_0[i];
20424 freq = chan_info_tbl_p_0[i].freq;
20425 }
20426
20427 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20428 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20429 chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20430 tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20431 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20432 chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20433 tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20434 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20435 || NREV_IS(pi->pubpi.phy_rev, 6)) {
20436 switch (pi->pubpi.radiorev) {
20437 case 5:
20438 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20439 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20440 break;
20441 case 6:
20442 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20443 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20444 break;
20445 case 7:
20446 case 9:
20447 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20448 tbl_len =
20449 ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20450 break;
20451 case 8:
20452 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20453 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20454 break;
20455 case 11:
20456 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20457 tbl_len = ARRAY_SIZE(
20458 chan_info_nphyrev6_2056v11);
20459 break;
20460 default:
20461 break;
20462 }
20463 }
20464
20465 for (i = 0; i < tbl_len; i++) {
20466 if (chan_info_tbl_p_1[i].chan == channel)
20467 break;
20468 }
20469
20470 if (i >= tbl_len)
20471 goto fail;
20472
20473 *t1 = &chan_info_tbl_p_1[i];
20474 freq = chan_info_tbl_p_1[i].freq;
20475
20476 } else {
20477 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20478 if (chan_info_nphy_2055[i].chan == channel)
20479 break;
20480
20481 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20482 goto fail;
20483
20484 *t3 = &chan_info_nphy_2055[i];
20485 freq = chan_info_nphy_2055[i].freq;
20486 }
20487
20488 *f = freq;
20489 return true;
20490
20491 fail:
20492 *f = WL_CHAN_FREQ_RANGE_2G;
20493 return false;
20494 }
20495
20496 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20497 {
20498 int freq;
20499 const struct chan_info_nphy_radio2057 *t0 = NULL;
20500 const struct chan_info_nphy_radio205x *t1 = NULL;
20501 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20502 const struct chan_info_nphy_2055 *t3 = NULL;
20503
20504 if (channel == 0)
20505 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20506
20507 wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20508
20509 if (CHSPEC_IS2G(pi->radio_chanspec))
20510 return WL_CHAN_FREQ_RANGE_2G;
20511
20512 if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20513 return WL_CHAN_FREQ_RANGE_5GL;
20514 else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20515 return WL_CHAN_FREQ_RANGE_5GM;
20516 else
20517 return WL_CHAN_FREQ_RANGE_5GH;
20518 }
20519
20520 static void
20521 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20522 const struct chan_info_nphy_2055 *ci)
20523 {
20524
20525 write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20526 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20527 write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20528 write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20529
20530 BRCMS_PHY_WAR_PR51571(pi);
20531
20532 write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20533 write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20534 write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20535 write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20536
20537 BRCMS_PHY_WAR_PR51571(pi);
20538
20539 write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20540 write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20541 write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20542 write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20543
20544 BRCMS_PHY_WAR_PR51571(pi);
20545
20546 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20547 ci->RF_core1_lgbuf_a_tune);
20548 write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20549 ci->RF_core1_lgbuf_g_tune);
20550 write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20551 write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20552 ci->RF_core1_tx_pga_pad_tn);
20553
20554 BRCMS_PHY_WAR_PR51571(pi);
20555
20556 write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20557 ci->RF_core1_tx_mx_bgtrim);
20558 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20559 ci->RF_core2_lgbuf_a_tune);
20560 write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20561 ci->RF_core2_lgbuf_g_tune);
20562 write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20563
20564 BRCMS_PHY_WAR_PR51571(pi);
20565
20566 write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20567 ci->RF_core2_tx_pga_pad_tn);
20568 write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20569 ci->RF_core2_tx_mx_bgtrim);
20570
20571 udelay(50);
20572
20573 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20574 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20575
20576 BRCMS_PHY_WAR_PR51571(pi);
20577
20578 write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20579
20580 udelay(300);
20581 }
20582
20583 static void
20584 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20585 const struct chan_info_nphy_radio205x *ci)
20586 {
20587 const struct radio_regs *regs_SYN_2056_ptr = NULL;
20588
20589 write_radio_reg(pi,
20590 RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20591 ci->RF_SYN_pll_vcocal1);
20592 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20593 ci->RF_SYN_pll_vcocal2);
20594 write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20595 ci->RF_SYN_pll_refdiv);
20596 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20597 ci->RF_SYN_pll_mmd2);
20598 write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20599 ci->RF_SYN_pll_mmd1);
20600 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20601 ci->RF_SYN_pll_loopfilter1);
20602 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20603 ci->RF_SYN_pll_loopfilter2);
20604 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20605 ci->RF_SYN_pll_loopfilter3);
20606 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20607 ci->RF_SYN_pll_loopfilter4);
20608 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20609 ci->RF_SYN_pll_loopfilter5);
20610 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20611 ci->RF_SYN_reserved_addr27);
20612 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20613 ci->RF_SYN_reserved_addr28);
20614 write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20615 ci->RF_SYN_reserved_addr29);
20616 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20617 ci->RF_SYN_logen_VCOBUF1);
20618 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20619 ci->RF_SYN_logen_MIXER2);
20620 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20621 ci->RF_SYN_logen_BUF3);
20622 write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20623 ci->RF_SYN_logen_BUF4);
20624
20625 write_radio_reg(pi,
20626 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20627 ci->RF_RX0_lnaa_tune);
20628 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20629 ci->RF_RX0_lnag_tune);
20630 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20631 ci->RF_TX0_intpaa_boost_tune);
20632 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20633 ci->RF_TX0_intpag_boost_tune);
20634 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20635 ci->RF_TX0_pada_boost_tune);
20636 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20637 ci->RF_TX0_padg_boost_tune);
20638 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20639 ci->RF_TX0_pgaa_boost_tune);
20640 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20641 ci->RF_TX0_pgag_boost_tune);
20642 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20643 ci->RF_TX0_mixa_boost_tune);
20644 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20645 ci->RF_TX0_mixg_boost_tune);
20646
20647 write_radio_reg(pi,
20648 RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20649 ci->RF_RX1_lnaa_tune);
20650 write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20651 ci->RF_RX1_lnag_tune);
20652 write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20653 ci->RF_TX1_intpaa_boost_tune);
20654 write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20655 ci->RF_TX1_intpag_boost_tune);
20656 write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20657 ci->RF_TX1_pada_boost_tune);
20658 write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20659 ci->RF_TX1_padg_boost_tune);
20660 write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20661 ci->RF_TX1_pgaa_boost_tune);
20662 write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20663 ci->RF_TX1_pgag_boost_tune);
20664 write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20665 ci->RF_TX1_mixa_boost_tune);
20666 write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20667 ci->RF_TX1_mixg_boost_tune);
20668
20669 if (NREV_IS(pi->pubpi.phy_rev, 3))
20670 regs_SYN_2056_ptr = regs_SYN_2056;
20671 else if (NREV_IS(pi->pubpi.phy_rev, 4))
20672 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20673 else {
20674 switch (pi->pubpi.radiorev) {
20675 case 5:
20676 regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20677 break;
20678 case 6:
20679 regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20680 break;
20681 case 7:
20682 case 9:
20683 regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20684 break;
20685 case 8:
20686 regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20687 break;
20688 case 11:
20689 regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20690 break;
20691 }
20692 }
20693 if (CHSPEC_IS2G(pi->radio_chanspec))
20694 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20695 RADIO_2056_SYN,
20696 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20697 else
20698 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20699 RADIO_2056_SYN,
20700 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20701
20702 if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20703 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20704 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20705 RADIO_2056_SYN, 0x1f);
20706 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20707 RADIO_2056_SYN, 0x1f);
20708
20709 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20710 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20711 write_radio_reg(pi,
20712 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20713 RADIO_2056_SYN, 0x14);
20714 write_radio_reg(pi,
20715 RADIO_2056_SYN_PLL_CP2 |
20716 RADIO_2056_SYN, 0x00);
20717 } else {
20718 write_radio_reg(pi,
20719 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20720 RADIO_2056_SYN, 0xb);
20721 write_radio_reg(pi,
20722 RADIO_2056_SYN_PLL_CP2 |
20723 RADIO_2056_SYN, 0x14);
20724 }
20725 }
20726 }
20727
20728 if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20729 (CHSPEC_IS2G(pi->radio_chanspec))) {
20730 write_radio_reg(pi,
20731 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20732 0x1f);
20733 write_radio_reg(pi,
20734 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20735 0x1f);
20736 write_radio_reg(pi,
20737 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20738 0xb);
20739 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20740 0x20);
20741 }
20742
20743 if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20744 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20745 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20746 RADIO_2056_SYN, 0x1f);
20747 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20748 RADIO_2056_SYN, 0x1f);
20749 write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20750 RADIO_2056_SYN, 0x5);
20751 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20752 RADIO_2056_SYN, 0xc);
20753 }
20754 }
20755
20756 if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20757 u16 pag_boost_tune;
20758 u16 padg_boost_tune;
20759 u16 pgag_boost_tune;
20760 u16 mixg_boost_tune;
20761 u16 bias, cascbias;
20762 uint core;
20763
20764 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20765
20766 if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20767
20768 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20769 PADG_IDAC, 0xcc);
20770
20771 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20772 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20773 bias = 0x40;
20774 cascbias = 0x45;
20775 pag_boost_tune = 0x5;
20776 pgag_boost_tune = 0x33;
20777 padg_boost_tune = 0x77;
20778 mixg_boost_tune = 0x55;
20779 } else {
20780 bias = 0x25;
20781 cascbias = 0x20;
20782
20783 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20784 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20785 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20786 bias = 0x2a;
20787 cascbias = 0x38;
20788 }
20789
20790 pag_boost_tune = 0x4;
20791 pgag_boost_tune = 0x03;
20792 padg_boost_tune = 0x77;
20793 mixg_boost_tune = 0x65;
20794 }
20795
20796 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20797 INTPAG_IMAIN_STAT, bias);
20798 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20799 INTPAG_IAUX_STAT, bias);
20800 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20801 INTPAG_CASCBIAS, cascbias);
20802
20803 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20804 INTPAG_BOOST_TUNE,
20805 pag_boost_tune);
20806 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20807 PGAG_BOOST_TUNE,
20808 pgag_boost_tune);
20809 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20810 PADG_BOOST_TUNE,
20811 padg_boost_tune);
20812 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20813 MIXG_BOOST_TUNE,
20814 mixg_boost_tune);
20815 } else {
20816
20817 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20818 0x40 : 0x20;
20819
20820 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20821 INTPAG_IMAIN_STAT, bias);
20822 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20823 INTPAG_IAUX_STAT, bias);
20824 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20825 INTPAG_CASCBIAS, 0x30);
20826 }
20827 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20828 0xee);
20829 }
20830 }
20831
20832 if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20833 && CHSPEC_IS5G(pi->radio_chanspec)) {
20834 u16 paa_boost_tune;
20835 u16 pada_boost_tune;
20836 u16 pgaa_boost_tune;
20837 u16 mixa_boost_tune;
20838 u16 freq, pabias, cascbias;
20839 uint core;
20840
20841 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20842
20843 if (freq < 5150) {
20844
20845 paa_boost_tune = 0xa;
20846 pada_boost_tune = 0x77;
20847 pgaa_boost_tune = 0xf;
20848 mixa_boost_tune = 0xf;
20849 } else if (freq < 5340) {
20850
20851 paa_boost_tune = 0x8;
20852 pada_boost_tune = 0x77;
20853 pgaa_boost_tune = 0xfb;
20854 mixa_boost_tune = 0xf;
20855 } else if (freq < 5650) {
20856
20857 paa_boost_tune = 0x0;
20858 pada_boost_tune = 0x77;
20859 pgaa_boost_tune = 0xb;
20860 mixa_boost_tune = 0xf;
20861 } else {
20862
20863 paa_boost_tune = 0x0;
20864 pada_boost_tune = 0x77;
20865 if (freq != 5825)
20866 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20867 else
20868 pgaa_boost_tune = 6;
20869
20870 mixa_boost_tune = 0xf;
20871 }
20872
20873 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20874 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20875 INTPAA_BOOST_TUNE, paa_boost_tune);
20876 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20877 PADA_BOOST_TUNE, pada_boost_tune);
20878 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20879 PGAA_BOOST_TUNE, pgaa_boost_tune);
20880 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20881 MIXA_BOOST_TUNE, mixa_boost_tune);
20882
20883 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20884 TXSPARE1, 0x30);
20885 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20886 PA_SPARE2, 0xee);
20887
20888 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20889 PADA_CASCBIAS, 0x3);
20890
20891 cascbias = 0x30;
20892
20893 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20894 pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20895 pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20896 cascbias = 0x35;
20897
20898 pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20899
20900 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20901 INTPAA_IAUX_STAT, pabias);
20902 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20903 INTPAA_IMAIN_STAT, pabias);
20904 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20905 INTPAA_CASCBIAS, cascbias);
20906 }
20907 }
20908
20909 udelay(50);
20910
20911 wlc_phy_radio205x_vcocal_nphy(pi);
20912 }
20913
20914 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20915 {
20916 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20917 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20918 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20919 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20920 (1 << 2));
20921 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20922 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20923 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20924 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20925 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20926 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20927 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20928 }
20929
20930 udelay(300);
20931 }
20932
20933 static void
20934 wlc_phy_chanspec_radio2057_setup(
20935 struct brcms_phy *pi,
20936 const struct chan_info_nphy_radio2057 *ci,
20937 const struct chan_info_nphy_radio2057_rev5 *
20938 ci2)
20939 {
20940 int coreNum;
20941 u16 txmix2g_tune_boost_pu = 0;
20942 u16 pad2g_tune_pus = 0;
20943
20944 if (pi->pubpi.radiorev == 5) {
20945
20946 write_radio_reg(pi,
20947 RADIO_2057_VCOCAL_COUNTVAL0,
20948 ci2->RF_vcocal_countval0);
20949 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20950 ci2->RF_vcocal_countval1);
20951 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20952 ci2->RF_rfpll_refmaster_sparextalsize);
20953 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20954 ci2->RF_rfpll_loopfilter_r1);
20955 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20956 ci2->RF_rfpll_loopfilter_c2);
20957 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20958 ci2->RF_rfpll_loopfilter_c1);
20959 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20960 ci2->RF_cp_kpd_idac);
20961 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20962 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20963 write_radio_reg(pi,
20964 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20965 write_radio_reg(pi,
20966 RADIO_2057_LOGEN_MX2G_TUNE,
20967 ci2->RF_logen_mx2g_tune);
20968 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20969 ci2->RF_logen_indbuf2g_tune);
20970
20971 write_radio_reg(pi,
20972 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20973 ci2->RF_txmix2g_tune_boost_pu_core0);
20974 write_radio_reg(pi,
20975 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20976 ci2->RF_pad2g_tune_pus_core0);
20977 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20978 ci2->RF_lna2g_tune_core0);
20979
20980 write_radio_reg(pi,
20981 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20982 ci2->RF_txmix2g_tune_boost_pu_core1);
20983 write_radio_reg(pi,
20984 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20985 ci2->RF_pad2g_tune_pus_core1);
20986 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20987 ci2->RF_lna2g_tune_core1);
20988
20989 } else {
20990
20991 write_radio_reg(pi,
20992 RADIO_2057_VCOCAL_COUNTVAL0,
20993 ci->RF_vcocal_countval0);
20994 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20995 ci->RF_vcocal_countval1);
20996 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20997 ci->RF_rfpll_refmaster_sparextalsize);
20998 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20999 ci->RF_rfpll_loopfilter_r1);
21000 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21001 ci->RF_rfpll_loopfilter_c2);
21002 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21003 ci->RF_rfpll_loopfilter_c1);
21004 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21005 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21006 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21007 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21008 write_radio_reg(pi,
21009 RADIO_2057_LOGEN_MX2G_TUNE,
21010 ci->RF_logen_mx2g_tune);
21011 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21012 ci->RF_logen_mx5g_tune);
21013 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21014 ci->RF_logen_indbuf2g_tune);
21015 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21016 ci->RF_logen_indbuf5g_tune);
21017
21018 write_radio_reg(pi,
21019 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21020 ci->RF_txmix2g_tune_boost_pu_core0);
21021 write_radio_reg(pi,
21022 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21023 ci->RF_pad2g_tune_pus_core0);
21024 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21025 ci->RF_pga_boost_tune_core0);
21026 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21027 ci->RF_txmix5g_boost_tune_core0);
21028 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21029 ci->RF_pad5g_tune_misc_pus_core0);
21030 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21031 ci->RF_lna2g_tune_core0);
21032 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21033 ci->RF_lna5g_tune_core0);
21034
21035 write_radio_reg(pi,
21036 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21037 ci->RF_txmix2g_tune_boost_pu_core1);
21038 write_radio_reg(pi,
21039 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21040 ci->RF_pad2g_tune_pus_core1);
21041 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21042 ci->RF_pga_boost_tune_core1);
21043 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21044 ci->RF_txmix5g_boost_tune_core1);
21045 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21046 ci->RF_pad5g_tune_misc_pus_core1);
21047 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21048 ci->RF_lna2g_tune_core1);
21049 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21050 ci->RF_lna5g_tune_core1);
21051 }
21052
21053 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21054
21055 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21056 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21057 0x3f);
21058 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21059 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21060 0x8);
21061 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21062 0x8);
21063 } else {
21064 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21065 0x1f);
21066 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21067 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21068 0x8);
21069 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21070 0x8);
21071 }
21072 } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21073 (pi->pubpi.radiorev == 8)) {
21074
21075 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21076 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21077 0x1b);
21078 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21079 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21080 0xa);
21081 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21082 0xa);
21083 } else {
21084 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21085 0x1f);
21086 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21087 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21088 0x8);
21089 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21090 0x8);
21091 }
21092
21093 }
21094
21095 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21096 if (PHY_IPA(pi)) {
21097 if (pi->pubpi.radiorev == 3)
21098 txmix2g_tune_boost_pu = 0x6b;
21099
21100 if (pi->pubpi.radiorev == 5)
21101 pad2g_tune_pus = 0x73;
21102
21103 } else {
21104 if (pi->pubpi.radiorev != 5) {
21105 pad2g_tune_pus = 0x3;
21106
21107 txmix2g_tune_boost_pu = 0x61;
21108 }
21109 }
21110
21111 for (coreNum = 0; coreNum <= 1; coreNum++) {
21112
21113 if (txmix2g_tune_boost_pu != 0)
21114 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21115 TXMIX2G_TUNE_BOOST_PU,
21116 txmix2g_tune_boost_pu);
21117
21118 if (pad2g_tune_pus != 0)
21119 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21120 PAD2G_TUNE_PUS,
21121 pad2g_tune_pus);
21122 }
21123 }
21124
21125 udelay(50);
21126
21127 wlc_phy_radio205x_vcocal_nphy(pi);
21128 }
21129
21130 static void
21131 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21132 const struct nphy_sfo_cfg *ci)
21133 {
21134 u16 val;
21135
21136 val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21137 if (CHSPEC_IS5G(chanspec) && !val) {
21138
21139 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21140 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21141 (val | MAC_PHY_FORCE_CLK));
21142
21143 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21144 (BBCFG_RESETCCA | BBCFG_RESETRX));
21145
21146 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21147
21148 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21149 } else if (!CHSPEC_IS5G(chanspec) && val) {
21150
21151 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21152
21153 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21154 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21155 (val | MAC_PHY_FORCE_CLK));
21156
21157 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21158 (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21159
21160 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21161 }
21162
21163 write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21164 write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21165 write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21166
21167 write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21168 write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21169 write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21170
21171 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21172 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21173
21174 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21175 } else {
21176 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21177 NPHY_ClassifierCtrl_ofdm_en);
21178
21179 if (CHSPEC_IS2G(chanspec))
21180 and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21181 }
21182
21183 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21184 wlc_phy_txpwr_fixpower_nphy(pi);
21185
21186 if (NREV_LT(pi->pubpi.phy_rev, 3))
21187 wlc_phy_adjust_lnagaintbl_nphy(pi);
21188
21189 wlc_phy_txlpfbw_nphy(pi);
21190
21191 if (NREV_GE(pi->pubpi.phy_rev, 3)
21192 && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21193 u8 spuravoid = 0;
21194
21195 val = CHSPEC_CHANNEL(chanspec);
21196 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21197 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21198 if ((val == 13) || (val == 14) || (val == 153))
21199 spuravoid = 1;
21200 } else if (((val >= 5) && (val <= 8)) || (val == 13)
21201 || (val == 14)) {
21202 spuravoid = 1;
21203 }
21204 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21205 if (val == 54)
21206 spuravoid = 1;
21207 } else if (pi->nphy_aband_spurwar_en &&
21208 ((val == 38) || (val == 102) || (val == 118))) {
21209 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21210 && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21211 spuravoid = 0;
21212 } else {
21213 spuravoid = 1;
21214 }
21215 }
21216
21217 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21218 spuravoid = 1;
21219
21220 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21221 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21222 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21223 spuravoid);
21224 } else {
21225 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21226 bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21227 spuravoid);
21228 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21229 }
21230
21231 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21232 (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21233 if (spuravoid == 1) {
21234 bcma_write16(pi->d11core,
21235 D11REGOFFS(tsf_clk_frac_l),
21236 0x5341);
21237 bcma_write16(pi->d11core,
21238 D11REGOFFS(tsf_clk_frac_h), 0x8);
21239 } else {
21240 bcma_write16(pi->d11core,
21241 D11REGOFFS(tsf_clk_frac_l),
21242 0x8889);
21243 bcma_write16(pi->d11core,
21244 D11REGOFFS(tsf_clk_frac_h), 0x8);
21245 }
21246 }
21247
21248 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21249 (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21250 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21251
21252 mod_phy_reg(pi, 0x01, (0x1 << 15),
21253 ((spuravoid > 0) ? (0x1 << 15) : 0));
21254
21255 wlc_phy_resetcca_nphy(pi);
21256
21257 pi->phy_isspuravoid = (spuravoid > 0);
21258 }
21259
21260 if (NREV_LT(pi->pubpi.phy_rev, 7))
21261 write_phy_reg(pi, 0x17e, 0x3830);
21262
21263 wlc_phy_spurwar_nphy(pi);
21264 }
21265
21266 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21267 {
21268 int freq;
21269 const struct chan_info_nphy_radio2057 *t0 = NULL;
21270 const struct chan_info_nphy_radio205x *t1 = NULL;
21271 const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21272 const struct chan_info_nphy_2055 *t3 = NULL;
21273
21274 if (!wlc_phy_chan2freq_nphy
21275 (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21276 return;
21277
21278 wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21279
21280 if (CHSPEC_BW(chanspec) != pi->bw)
21281 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21282
21283 if (CHSPEC_IS40(chanspec)) {
21284 if (CHSPEC_SB_UPPER(chanspec)) {
21285 or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21286 if (NREV_GE(pi->pubpi.phy_rev, 7))
21287 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21288 } else {
21289 and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21290 if (NREV_GE(pi->pubpi.phy_rev, 7))
21291 and_phy_reg(pi, 0x310,
21292 (~PRIM_SEL_UP20 & 0xffff));
21293 }
21294 }
21295
21296 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21297 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21298
21299 if ((pi->pubpi.radiorev <= 4)
21300 || (pi->pubpi.radiorev == 6)) {
21301 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21302 0x2,
21303 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21304 : 0));
21305 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21306 0x2,
21307 (CHSPEC_IS5G(chanspec) ? (1 << 1)
21308 : 0));
21309 }
21310
21311 wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21312 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21313 (pi->pubpi.radiorev == 5) ?
21314 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21315 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21316
21317 } else {
21318
21319 mod_radio_reg(pi,
21320 RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21321 0x4,
21322 (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21323 wlc_phy_chanspec_radio2056_setup(pi, t1);
21324
21325 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21326 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21327 }
21328
21329 } else {
21330
21331 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21332 (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21333 : (0x05 << 4)));
21334
21335 wlc_phy_chanspec_radio2055_setup(pi, t3);
21336 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21337 (const struct nphy_sfo_cfg *)
21338 &(t3->PHY_BW1a));
21339 }
21340
21341 }
21342
21343 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21344 {
21345 struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21346 u16 mask = 0xfc00;
21347 u32 mc = 0;
21348
21349 if (NREV_GE(pi->pubpi.phy_rev, 7))
21350 return;
21351
21352 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21353 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21354
21355 if (!lut_init)
21356 return;
21357
21358 if (pi->srom_fem2g.antswctrllut == 0) {
21359 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21360 1, 0x02, 16, &v0);
21361 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21362 1, 0x03, 16, &v1);
21363 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21364 1, 0x08, 16, &v2);
21365 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21366 1, 0x0C, 16, &v3);
21367 }
21368
21369 if (pi->srom_fem5g.antswctrllut == 0) {
21370 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21371 1, 0x12, 16, &v0);
21372 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21373 1, 0x13, 16, &v1);
21374 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21375 1, 0x18, 16, &v2);
21376 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21377 1, 0x1C, 16, &v3);
21378 }
21379 } else {
21380
21381 write_phy_reg(pi, 0xc8, 0x0);
21382 write_phy_reg(pi, 0xc9, 0x0);
21383
21384 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21385
21386 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21387 mc &= ~MCTL_GPOUT_SEL_MASK;
21388 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21389
21390 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21391
21392 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21393
21394 if (lut_init) {
21395 write_phy_reg(pi, 0xf8, 0x02d8);
21396 write_phy_reg(pi, 0xf9, 0x0301);
21397 write_phy_reg(pi, 0xfa, 0x02d8);
21398 write_phy_reg(pi, 0xfb, 0x0301);
21399 }
21400 }
21401 }
21402
21403 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21404 {
21405 u16 curr_ctl, new_ctl;
21406 bool suspended = false;
21407
21408 if (D11REV_IS(pi->sh->corerev, 16)) {
21409 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21410 MCTL_EN_MAC) ? false : true;
21411 if (!suspended)
21412 wlapi_suspend_mac_and_wait(pi->sh->physhim);
21413 }
21414
21415 curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21416
21417 new_ctl = (curr_ctl & (~mask)) | (val & mask);
21418
21419 mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21420
21421 if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21422 wlapi_enable_mac(pi->sh->physhim);
21423
21424 return new_ctl;
21425 }
21426
21427 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21428 {
21429 u16 trigger_mask, status_mask;
21430 u16 orig_RfseqCoreActv;
21431
21432 switch (cmd) {
21433 case NPHY_RFSEQ_RX2TX:
21434 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21435 status_mask = NPHY_RfseqStatus_rx2tx;
21436 break;
21437 case NPHY_RFSEQ_TX2RX:
21438 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21439 status_mask = NPHY_RfseqStatus_tx2rx;
21440 break;
21441 case NPHY_RFSEQ_RESET2RX:
21442 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21443 status_mask = NPHY_RfseqStatus_reset2rx;
21444 break;
21445 case NPHY_RFSEQ_UPDATEGAINH:
21446 trigger_mask = NPHY_RfseqTrigger_updategainh;
21447 status_mask = NPHY_RfseqStatus_updategainh;
21448 break;
21449 case NPHY_RFSEQ_UPDATEGAINL:
21450 trigger_mask = NPHY_RfseqTrigger_updategainl;
21451 status_mask = NPHY_RfseqStatus_updategainl;
21452 break;
21453 case NPHY_RFSEQ_UPDATEGAINU:
21454 trigger_mask = NPHY_RfseqTrigger_updategainu;
21455 status_mask = NPHY_RfseqStatus_updategainu;
21456 break;
21457 default:
21458 return;
21459 }
21460
21461 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21462 or_phy_reg(pi, 0xa1,
21463 (NPHY_RfseqMode_CoreActv_override |
21464 NPHY_RfseqMode_Trigger_override));
21465 or_phy_reg(pi, 0xa3, trigger_mask);
21466 SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21467 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21468 WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21469 }
21470
21471 static void
21472 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21473 u8 core_mask, u8 off)
21474 {
21475 u16 rfmxgain = 0, lpfgain = 0;
21476 u16 tgain = 0;
21477
21478 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21479
21480 switch (cmd) {
21481 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21482 wlc_phy_rfctrl_override_nphy_rev7(
21483 pi, (0x1 << 5),
21484 value, core_mask, off,
21485 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21486 wlc_phy_rfctrl_override_nphy_rev7(
21487 pi, (0x1 << 4), value,
21488 core_mask, off,
21489 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21490 wlc_phy_rfctrl_override_nphy_rev7(
21491 pi, (0x1 << 3), value,
21492 core_mask, off,
21493 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21494 break;
21495 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21496 wlc_phy_rfctrl_override_nphy_rev7(
21497 pi, (0x1 << 2),
21498 value, core_mask, off,
21499 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21500 wlc_phy_rfctrl_override_nphy_rev7(
21501 pi, (0x1 << 1), value,
21502 core_mask, off,
21503 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21504 wlc_phy_rfctrl_override_nphy_rev7(
21505 pi, (0x1 << 0), value,
21506 core_mask, off,
21507 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21508 wlc_phy_rfctrl_override_nphy_rev7(
21509 pi, (0x1 << 1), value,
21510 core_mask, off,
21511 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21512 wlc_phy_rfctrl_override_nphy_rev7(
21513 pi, (0x1 << 11), 0,
21514 core_mask, off,
21515 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21516 break;
21517 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21518 wlc_phy_rfctrl_override_nphy_rev7(
21519 pi, (0x1 << 2),
21520 value, core_mask, off,
21521 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21522 wlc_phy_rfctrl_override_nphy_rev7(
21523 pi, (0x1 << 1), value,
21524 core_mask, off,
21525 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21526 wlc_phy_rfctrl_override_nphy_rev7(
21527 pi, (0x1 << 0), value,
21528 core_mask, off,
21529 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21530 wlc_phy_rfctrl_override_nphy_rev7(
21531 pi, (0x1 << 2), value,
21532 core_mask, off,
21533 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21534 wlc_phy_rfctrl_override_nphy_rev7(
21535 pi, (0x1 << 11), 1,
21536 core_mask, off,
21537 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21538 break;
21539 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21540 rfmxgain = value & 0x000ff;
21541 lpfgain = value & 0x0ff00;
21542 lpfgain = lpfgain >> 8;
21543
21544 wlc_phy_rfctrl_override_nphy_rev7(
21545 pi, (0x1 << 11),
21546 rfmxgain, core_mask,
21547 off,
21548 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21549 wlc_phy_rfctrl_override_nphy_rev7(
21550 pi, (0x3 << 13),
21551 lpfgain, core_mask,
21552 off,
21553 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21554 break;
21555 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21556 tgain = value & 0x7fff;
21557 lpfgain = value & 0x8000;
21558 lpfgain = lpfgain >> 14;
21559
21560 wlc_phy_rfctrl_override_nphy_rev7(
21561 pi, (0x1 << 12),
21562 tgain, core_mask, off,
21563 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21564 wlc_phy_rfctrl_override_nphy_rev7(
21565 pi, (0x1 << 13),
21566 lpfgain, core_mask,
21567 off,
21568 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21569 break;
21570 }
21571 }
21572 }
21573
21574 static void
21575 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21576 u8 coresel, u8 rail, u8 rssi_type)
21577 {
21578 u16 valuetostuff;
21579
21580 offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21581 NPHY_RSSICAL_MAXREAD : offset;
21582 offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21583 -NPHY_RSSICAL_MAXREAD - 1 : offset;
21584
21585 valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21586
21587 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21588 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21589 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21590 write_phy_reg(pi, 0x1a6, valuetostuff);
21591
21592 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21593 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21594 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21595 write_phy_reg(pi, 0x1ac, valuetostuff);
21596
21597 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21598 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21599 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21600 write_phy_reg(pi, 0x1b2, valuetostuff);
21601
21602 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21603 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21604 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21605 write_phy_reg(pi, 0x1b8, valuetostuff);
21606
21607 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21608 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21609 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21610 write_phy_reg(pi, 0x1a4, valuetostuff);
21611
21612 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21613 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21614 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21615 write_phy_reg(pi, 0x1aa, valuetostuff);
21616
21617 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21618 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21619 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21620 write_phy_reg(pi, 0x1b0, valuetostuff);
21621
21622 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21623 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21624 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21625 write_phy_reg(pi, 0x1b6, valuetostuff);
21626
21627 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21628 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21629 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21630 write_phy_reg(pi, 0x1a5, valuetostuff);
21631 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21632 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21633 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21634 write_phy_reg(pi, 0x1ab, valuetostuff);
21635
21636 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21637 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21638 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21639 write_phy_reg(pi, 0x1b1, valuetostuff);
21640
21641 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21642 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21643 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21644 write_phy_reg(pi, 0x1b7, valuetostuff);
21645
21646 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21647 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21648 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21649 write_phy_reg(pi, 0x1a7, valuetostuff);
21650 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21651 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21652 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21653 write_phy_reg(pi, 0x1ad, valuetostuff);
21654 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21655 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21656 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21657 write_phy_reg(pi, 0x1b3, valuetostuff);
21658 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21659 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21660 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21661 write_phy_reg(pi, 0x1b9, valuetostuff);
21662
21663 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21664 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21665 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21666 write_phy_reg(pi, 0x1a8, valuetostuff);
21667
21668 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21669 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21670 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21671 write_phy_reg(pi, 0x1ae, valuetostuff);
21672
21673 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21674 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21675 (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21676 write_phy_reg(pi, 0x1b4, valuetostuff);
21677
21678 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21679 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21680 (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21681 write_phy_reg(pi, 0x1ba, valuetostuff);
21682
21683 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21684 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21685 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21686 write_phy_reg(pi, 0x1a9, valuetostuff);
21687 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21688 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21689 (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21690 write_phy_reg(pi, 0x1b5, valuetostuff);
21691
21692 if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21693 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21694 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21695 write_phy_reg(pi, 0x1af, valuetostuff);
21696
21697 if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21698 (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21699 (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21700 write_phy_reg(pi, 0x1bb, valuetostuff);
21701 }
21702
21703 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21704 {
21705 if (PHY_IPA(pi)) {
21706 if (NREV_GE(pi->pubpi.phy_rev, 7))
21707 write_radio_reg(pi,
21708 ((core == PHY_CORE_0) ?
21709 RADIO_2057_TX0_TX_SSI_MUX :
21710 RADIO_2057_TX1_TX_SSI_MUX),
21711 (CHSPEC_IS5G(pi->radio_chanspec) ?
21712 0xc : 0xe));
21713 else
21714 write_radio_reg(pi,
21715 RADIO_2056_TX_TX_SSI_MUX |
21716 ((core == PHY_CORE_0) ?
21717 RADIO_2056_TX0 : RADIO_2056_TX1),
21718 (CHSPEC_IS5G(pi->radio_chanspec) ?
21719 0xc : 0xe));
21720 } else {
21721 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21722 write_radio_reg(pi,
21723 ((core == PHY_CORE_0) ?
21724 RADIO_2057_TX0_TX_SSI_MUX :
21725 RADIO_2057_TX1_TX_SSI_MUX),
21726 0x11);
21727
21728 if (pi->pubpi.radioid == BCM2057_ID)
21729 write_radio_reg(pi,
21730 RADIO_2057_IQTEST_SEL_PU, 0x1);
21731
21732 } else {
21733 write_radio_reg(pi,
21734 RADIO_2056_TX_TX_SSI_MUX |
21735 ((core == PHY_CORE_0) ?
21736 RADIO_2056_TX0 : RADIO_2056_TX1),
21737 0x11);
21738 }
21739 }
21740 }
21741
21742 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21743 {
21744 u16 mask, val;
21745 u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21746 startseq;
21747 u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21748 rfctrlovr_trigger_val;
21749 u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21750 u16 rfctrlcmd_val, rfctrlovr_val;
21751 u8 core;
21752
21753 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21754 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21755 mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21756 mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21757
21758 mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21759 mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21760
21761 mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21762 mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21763
21764 mask = (0x1 << 2) |
21765 (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21766 mod_phy_reg(pi, 0xf9, mask, 0);
21767 mod_phy_reg(pi, 0xfb, mask, 0);
21768
21769 } else {
21770 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21771 if (core_code == RADIO_MIMO_CORESEL_CORE1
21772 && core == PHY_CORE_1)
21773 continue;
21774 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21775 && core == PHY_CORE_0)
21776 continue;
21777
21778 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21779 0x8f : 0xa5, (0x1 << 9), 1 << 9);
21780
21781 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21782 rssi_type == NPHY_RSSI_SEL_W2 ||
21783 rssi_type == NPHY_RSSI_SEL_NB) {
21784 mod_phy_reg(pi,
21785 (core ==
21786 PHY_CORE_0) ? 0xa6 : 0xa7,
21787 (0x3 << 8), 0);
21788
21789 mask = (0x1 << 2) |
21790 (0x1 << 3) |
21791 (0x1 << 4) | (0x1 << 5);
21792 mod_phy_reg(pi,
21793 (core ==
21794 PHY_CORE_0) ? 0xf9 : 0xfb,
21795 mask, 0);
21796
21797 if (rssi_type == NPHY_RSSI_SEL_W1) {
21798 if (CHSPEC_IS5G(
21799 pi->radio_chanspec)) {
21800 mask = (0x1 << 2);
21801 val = 1 << 2;
21802 } else {
21803 mask = (0x1 << 3);
21804 val = 1 << 3;
21805 }
21806 } else if (rssi_type ==
21807 NPHY_RSSI_SEL_W2) {
21808 mask = (0x1 << 4);
21809 val = 1 << 4;
21810 } else {
21811 mask = (0x1 << 5);
21812 val = 1 << 5;
21813 }
21814 mod_phy_reg(pi,
21815 (core ==
21816 PHY_CORE_0) ? 0xf9 : 0xfb,
21817 mask, val);
21818
21819 mask = (0x1 << 5);
21820 val = 1 << 5;
21821 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21822 0xe5 : 0xe6, mask, val);
21823 } else {
21824 if (rssi_type == NPHY_RSSI_SEL_TBD) {
21825 mask = (0x3 << 8);
21826 val = 1 << 8;
21827 mod_phy_reg(pi,
21828 (core ==
21829 PHY_CORE_0) ? 0xa6
21830 : 0xa7, mask, val);
21831 mask = (0x3 << 10);
21832 val = 1 << 10;
21833 mod_phy_reg(pi,
21834 (core ==
21835 PHY_CORE_0) ? 0xa6
21836 : 0xa7, mask, val);
21837 } else if (rssi_type ==
21838 NPHY_RSSI_SEL_IQ) {
21839 mask = (0x3 << 8);
21840 val = 2 << 8;
21841 mod_phy_reg(pi,
21842 (core ==
21843 PHY_CORE_0) ? 0xa6
21844 : 0xa7, mask, val);
21845 mask = (0x3 << 10);
21846 val = 2 << 10;
21847 mod_phy_reg(pi,
21848 (core ==
21849 PHY_CORE_0) ? 0xa6
21850 : 0xa7, mask, val);
21851 } else {
21852 mask = (0x3 << 8);
21853 val = 3 << 8;
21854 mod_phy_reg(pi,
21855 (core ==
21856 PHY_CORE_0) ? 0xa6
21857 : 0xa7, mask, val);
21858 mask = (0x3 << 10);
21859 val = 3 << 10;
21860 mod_phy_reg(pi,
21861 (core ==
21862 PHY_CORE_0) ? 0xa6
21863 : 0xa7, mask, val);
21864 brcms_phy_wr_tx_mux(pi, core);
21865 afectrlovr_rssi_val = 1 << 9;
21866 mod_phy_reg(pi,
21867 (core ==
21868 PHY_CORE_0) ? 0x8f
21869 : 0xa5, (0x1 << 9),
21870 afectrlovr_rssi_val);
21871 }
21872 }
21873 }
21874 }
21875 } else {
21876
21877 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21878 (rssi_type == NPHY_RSSI_SEL_W2) ||
21879 (rssi_type == NPHY_RSSI_SEL_NB))
21880 val = 0x0;
21881 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21882 val = 0x1;
21883 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21884 val = 0x2;
21885 else
21886 val = 0x3;
21887
21888 mask = ((0x3 << 12) | (0x3 << 14));
21889 val = (val << 12) | (val << 14);
21890 mod_phy_reg(pi, 0xa6, mask, val);
21891 mod_phy_reg(pi, 0xa7, mask, val);
21892
21893 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21894 (rssi_type == NPHY_RSSI_SEL_W2) ||
21895 (rssi_type == NPHY_RSSI_SEL_NB)) {
21896 if (rssi_type == NPHY_RSSI_SEL_W1)
21897 val = 0x1;
21898 if (rssi_type == NPHY_RSSI_SEL_W2)
21899 val = 0x2;
21900 if (rssi_type == NPHY_RSSI_SEL_NB)
21901 val = 0x3;
21902
21903 mask = (0x3 << 4);
21904 val = (val << 4);
21905 mod_phy_reg(pi, 0x7a, mask, val);
21906 mod_phy_reg(pi, 0x7d, mask, val);
21907 }
21908
21909 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21910 afectrlovr_rssi_val = 0;
21911 rfctrlcmd_rxen_val = 0;
21912 rfctrlcmd_coresel_val = 0;
21913 rfctrlovr_rssi_val = 0;
21914 rfctrlovr_rxen_val = 0;
21915 rfctrlovr_coresel_val = 0;
21916 rfctrlovr_trigger_val = 0;
21917 startseq = 0;
21918 } else {
21919 afectrlovr_rssi_val = 1;
21920 rfctrlcmd_rxen_val = 1;
21921 rfctrlcmd_coresel_val = core_code;
21922 rfctrlovr_rssi_val = 1;
21923 rfctrlovr_rxen_val = 1;
21924 rfctrlovr_coresel_val = 1;
21925 rfctrlovr_trigger_val = 1;
21926 startseq = 1;
21927 }
21928
21929 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21930 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21931 12) | (afectrlovr_rssi_val << 13);
21932 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21933 afectrlovr_rssi_val);
21934
21935 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21936 (rssi_type == NPHY_RSSI_SEL_W2) ||
21937 (rssi_type == NPHY_RSSI_SEL_NB)) {
21938 rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21939 rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21940 (rfctrlcmd_coresel_val << 3);
21941
21942 rfctrlovr_mask = ((0x1 << 5) |
21943 (0x1 << 12) |
21944 (0x1 << 1) | (0x1 << 0));
21945 rfctrlovr_val = (rfctrlovr_rssi_val <<
21946 5) |
21947 (rfctrlovr_rxen_val << 12) |
21948 (rfctrlovr_coresel_val << 1) |
21949 (rfctrlovr_trigger_val << 0);
21950
21951 mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21952 mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21953
21954 mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21955 udelay(20);
21956
21957 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21958 }
21959 }
21960 }
21961
21962 int
21963 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21964 u8 nsamps)
21965 {
21966 s16 rssi0, rssi1;
21967 u16 afectrlCore1_save = 0;
21968 u16 afectrlCore2_save = 0;
21969 u16 afectrlOverride1_save = 0;
21970 u16 afectrlOverride2_save = 0;
21971 u16 rfctrlOverrideAux0_save = 0;
21972 u16 rfctrlOverrideAux1_save = 0;
21973 u16 rfctrlMiscReg1_save = 0;
21974 u16 rfctrlMiscReg2_save = 0;
21975 u16 rfctrlcmd_save = 0;
21976 u16 rfctrloverride_save = 0;
21977 u16 rfctrlrssiothers1_save = 0;
21978 u16 rfctrlrssiothers2_save = 0;
21979 s8 tmp_buf[4];
21980 u8 ctr = 0, samp = 0;
21981 s32 rssi_out_val;
21982 u16 gpiosel_orig;
21983
21984 afectrlCore1_save = read_phy_reg(pi, 0xa6);
21985 afectrlCore2_save = read_phy_reg(pi, 0xa7);
21986 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21987 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21988 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21989 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21990 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21991 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21992 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21993 } else {
21994 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21995 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21996 rfctrloverride_save = read_phy_reg(pi, 0xec);
21997 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21998 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21999 }
22000
22001 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22002
22003 gpiosel_orig = read_phy_reg(pi, 0xca);
22004 if (NREV_LT(pi->pubpi.phy_rev, 2))
22005 write_phy_reg(pi, 0xca, 5);
22006
22007 for (ctr = 0; ctr < 4; ctr++)
22008 rssi_buf[ctr] = 0;
22009
22010 for (samp = 0; samp < nsamps; samp++) {
22011 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22012 rssi0 = read_phy_reg(pi, 0x1c9);
22013 rssi1 = read_phy_reg(pi, 0x1ca);
22014 } else {
22015 rssi0 = read_phy_reg(pi, 0x219);
22016 rssi1 = read_phy_reg(pi, 0x21a);
22017 }
22018
22019 ctr = 0;
22020 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22021 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22022 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22023 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22024
22025 for (ctr = 0; ctr < 4; ctr++)
22026 rssi_buf[ctr] += tmp_buf[ctr];
22027
22028 }
22029
22030 rssi_out_val = rssi_buf[3] & 0xff;
22031 rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22032 rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22033 rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22034
22035 if (NREV_LT(pi->pubpi.phy_rev, 2))
22036 write_phy_reg(pi, 0xca, gpiosel_orig);
22037
22038 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22039 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22040 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22041 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22042 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22043 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22044 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22045 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22046 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22047 } else {
22048 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22049 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22050 write_phy_reg(pi, 0xec, rfctrloverride_save);
22051 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22052 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22053 }
22054
22055 return rssi_out_val;
22056 }
22057
22058 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22059 {
22060 u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22061 u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22062 u16 pwrdet_rxtx_core1_save;
22063 u16 pwrdet_rxtx_core2_save;
22064 u16 afectrlCore1_save;
22065 u16 afectrlCore2_save;
22066 u16 afectrlOverride_save;
22067 u16 afectrlOverride2_save;
22068 u16 pd_pll_ts_save;
22069 u16 gpioSel_save;
22070 s32 radio_temp[4];
22071 s32 radio_temp2[4];
22072 u16 syn_tempprocsense_save;
22073 s16 offset = 0;
22074
22075 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22076 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22077 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22078 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22079 s32 auxADC_Vl;
22080 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22081 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22082 u16 RSSIMultCoef0QPowerDet_save;
22083 u16 tempsense_Rcal;
22084
22085 syn_tempprocsense_save =
22086 read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22087
22088 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22089 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22090 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22091 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22092 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22093 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22094 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22095 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22096 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22097
22098 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22099 &auxADC_Vmid_save);
22100 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22101 &auxADC_Av_save);
22102 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22103 &auxADC_rssi_ctrlL_save);
22104 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22105 &auxADC_rssi_ctrlH_save);
22106
22107 write_phy_reg(pi, 0x1ae, 0x0);
22108
22109 auxADC_rssi_ctrlL = 0x0;
22110 auxADC_rssi_ctrlH = 0x20;
22111 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22112 &auxADC_rssi_ctrlL);
22113 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22114 &auxADC_rssi_ctrlH);
22115
22116 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22117
22118 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22119 tempsense_Rcal | 0x01);
22120
22121 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22122 1, 0, 0,
22123 NPHY_REV7_RFCTRLOVERRIDE_ID2);
22124 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22125 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22126 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22127 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22128
22129 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22130 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22131 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22132 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22133 udelay(5);
22134 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22135 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22136 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22137 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22138 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22139 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22140 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22141 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22142 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22143 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22144
22145 auxADC_Vmid = 0xA3;
22146 auxADC_Av = 0x0;
22147 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22148 &auxADC_Vmid);
22149 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22150 &auxADC_Av);
22151
22152 udelay(3);
22153
22154 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22155 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22156 tempsense_Rcal | 0x03);
22157
22158 udelay(5);
22159 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22160
22161 auxADC_Av = 0x7;
22162 if (radio_temp[1] + radio_temp2[1] < -30) {
22163 auxADC_Vmid = 0x45;
22164 auxADC_Vl = 263;
22165 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22166 auxADC_Vmid = 0x200;
22167 auxADC_Vl = 467;
22168 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22169 auxADC_Vmid = 0x266;
22170 auxADC_Vl = 634;
22171 } else {
22172 auxADC_Vmid = 0x2D5;
22173 auxADC_Vl = 816;
22174 }
22175
22176 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22177 &auxADC_Vmid);
22178 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22179 &auxADC_Av);
22180
22181 udelay(3);
22182
22183 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22184 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22185 tempsense_Rcal | 0x01);
22186
22187 udelay(5);
22188 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22189
22190 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22191 syn_tempprocsense_save);
22192
22193 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22194 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22195 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22196 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22197 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22198 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22199 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22200 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22201 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22202
22203 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22204 &auxADC_Vmid_save);
22205 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22206 &auxADC_Av_save);
22207 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22208 &auxADC_rssi_ctrlL_save);
22209 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22210 &auxADC_rssi_ctrlH_save);
22211
22212 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22213 radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22214 + 88 * (auxADC_Vl) - 27111 +
22215 128) / 256;
22216 } else {
22217 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22218 + 82 * (auxADC_Vl) - 28861 +
22219 128) / 256;
22220 }
22221
22222 offset = (s16) pi->phy_tempsense_offset;
22223
22224 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22225 syn_tempprocsense_save =
22226 read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22227
22228 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22229 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22230 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22231 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22232 gpioSel_save = read_phy_reg(pi, 0xca);
22233
22234 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22235
22236 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22237 if (NREV_LT(pi->pubpi.phy_rev, 7))
22238 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22239
22240 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22241 if (NREV_GE(pi->pubpi.phy_rev, 7))
22242 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22243 else
22244 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22245
22246 radio_temp[0] =
22247 (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22248
22249 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22250 syn_tempprocsense_save);
22251
22252 write_phy_reg(pi, 0xca, gpioSel_save);
22253 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22254 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22255 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22256 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22257
22258 offset = (s16) pi->phy_tempsense_offset;
22259 } else {
22260
22261 pwrdet_rxtx_core1_save =
22262 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22263 pwrdet_rxtx_core2_save =
22264 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22265 core1_txrf_iqcal1_save =
22266 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22267 core1_txrf_iqcal2_save =
22268 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22269 core2_txrf_iqcal1_save =
22270 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22271 core2_txrf_iqcal2_save =
22272 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22273 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22274
22275 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22276 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22277 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22278 gpioSel_save = read_phy_reg(pi, 0xca);
22279
22280 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22281 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22282 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22283 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22284 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22285 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22286 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22287
22288 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22289 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22290
22291 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22292 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22293
22294 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22295 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22296
22297 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22298 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22299 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22300 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22301
22302 radio_temp[0] =
22303 (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22304 radio_temp[3]);
22305
22306 radio_temp[0] =
22307 (radio_temp[0] +
22308 (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22309
22310 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22311
22312 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22313 pwrdet_rxtx_core1_save);
22314 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22315 pwrdet_rxtx_core2_save);
22316 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22317 core1_txrf_iqcal1_save);
22318 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22319 core2_txrf_iqcal1_save);
22320 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22321 core1_txrf_iqcal2_save);
22322 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22323 core2_txrf_iqcal2_save);
22324 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22325
22326 write_phy_reg(pi, 0xca, gpioSel_save);
22327 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22328 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22329 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22330 }
22331
22332 return (s16) radio_temp[0] + offset;
22333 }
22334
22335 static void
22336 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22337 {
22338 u8 core;
22339
22340 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22341 if (rssi_type == NPHY_RSSI_SEL_NB) {
22342 if (core == PHY_CORE_0) {
22343 mod_radio_reg(pi,
22344 RADIO_2055_CORE1_B0_NBRSSI_VCM,
22345 RADIO_2055_NBRSSI_VCM_I_MASK,
22346 vcm_buf[2 *
22347 core] <<
22348 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22349 mod_radio_reg(pi,
22350 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22351 RADIO_2055_NBRSSI_VCM_Q_MASK,
22352 vcm_buf[2 * core +
22353 1] <<
22354 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22355 } else {
22356 mod_radio_reg(pi,
22357 RADIO_2055_CORE2_B0_NBRSSI_VCM,
22358 RADIO_2055_NBRSSI_VCM_I_MASK,
22359 vcm_buf[2 *
22360 core] <<
22361 RADIO_2055_NBRSSI_VCM_I_SHIFT);
22362 mod_radio_reg(pi,
22363 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22364 RADIO_2055_NBRSSI_VCM_Q_MASK,
22365 vcm_buf[2 * core +
22366 1] <<
22367 RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22368 }
22369 } else {
22370 if (core == PHY_CORE_0)
22371 mod_radio_reg(pi,
22372 RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22373 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22374 vcm_buf[2 *
22375 core] <<
22376 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22377 else
22378 mod_radio_reg(pi,
22379 RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22380 RADIO_2055_WBRSSI_VCM_IQ_MASK,
22381 vcm_buf[2 *
22382 core] <<
22383 RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22384 }
22385 }
22386 }
22387
22388 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22389 {
22390 u16 classif_state;
22391 u16 clip_state[2];
22392 u16 clip_off[] = { 0xffff, 0xffff };
22393 s32 target_code;
22394 u8 vcm, min_vcm;
22395 u8 vcm_final = 0;
22396 u8 result_idx;
22397 s32 poll_results[8][4] = {
22398 {0, 0, 0, 0},
22399 {0, 0, 0, 0},
22400 {0, 0, 0, 0},
22401 {0, 0, 0, 0},
22402 {0, 0, 0, 0},
22403 {0, 0, 0, 0},
22404 {0, 0, 0, 0},
22405 {0, 0, 0, 0}
22406 };
22407 s32 poll_result_core[4] = { 0, 0, 0, 0 };
22408 s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22409 s32 fine_digital_offset[4];
22410 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22411 s32 min_poll;
22412 u8 vcm_level_max;
22413 u8 core;
22414 u8 wb_cnt;
22415 u8 rssi_type;
22416 u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22417 u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22418 u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22419 u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22420 u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22421 u16 NPHY_RfctrlCmd_save;
22422 u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22423 u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22424 u8 rxcore_state;
22425 u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22426 u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22427 u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22428 u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22429
22430 NPHY_REV7_RfctrlOverride3_save =
22431 NPHY_REV7_RfctrlOverride4_save =
22432 NPHY_REV7_RfctrlOverride5_save =
22433 NPHY_REV7_RfctrlOverride6_save =
22434 NPHY_REV7_RfctrlMiscReg3_save =
22435 NPHY_REV7_RfctrlMiscReg4_save =
22436 NPHY_REV7_RfctrlMiscReg5_save =
22437 NPHY_REV7_RfctrlMiscReg6_save = 0;
22438
22439 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22440 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22441 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22442 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22443
22444 NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22445 NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22446 NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22447 NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22448 NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22449 NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22450 NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22451 NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22452 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22453 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22454 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22455 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22456 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22457 }
22458 NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22459 NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22460 NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22461 NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22462 NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22463 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22464 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22465 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22466 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22467 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22468 }
22469 NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22470 NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22471
22472 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22473 RADIO_MIMO_CORESEL_ALLRXTX);
22474 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22475 RADIO_MIMO_CORESEL_ALLRXTX);
22476
22477 if (NREV_GE(pi->pubpi.phy_rev, 7))
22478 wlc_phy_rfctrl_override_1tomany_nphy(
22479 pi,
22480 NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22481 0, 0, 0);
22482 else
22483 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22484
22485 if (NREV_GE(pi->pubpi.phy_rev, 7))
22486 wlc_phy_rfctrl_override_1tomany_nphy(
22487 pi,
22488 NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22489 1, 0, 0);
22490 else
22491 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22492
22493 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22494 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22495 1, 0, 0,
22496 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22497 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22498 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22499 } else {
22500 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22501 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22502 }
22503
22504 if (CHSPEC_IS5G(pi->radio_chanspec)) {
22505 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22506 wlc_phy_rfctrl_override_nphy_rev7(
22507 pi, (0x1 << 5),
22508 0, 0, 0,
22509 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22510 wlc_phy_rfctrl_override_nphy_rev7(
22511 pi, (0x1 << 4), 1, 0,
22512 0,
22513 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22514 } else {
22515 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22516 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22517 }
22518
22519 } else {
22520 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22521 wlc_phy_rfctrl_override_nphy_rev7(
22522 pi, (0x1 << 4),
22523 0, 0, 0,
22524 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22525 wlc_phy_rfctrl_override_nphy_rev7(
22526 pi, (0x1 << 5), 1, 0,
22527 0,
22528 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22529 } else {
22530 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22531 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22532 }
22533 }
22534
22535 rxcore_state = wlc_phy_rxcore_getstate_nphy(
22536 (struct brcms_phy_pub *) pi);
22537
22538 vcm_level_max = 8;
22539
22540 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22541
22542 if ((rxcore_state & (1 << core)) == 0)
22543 continue;
22544
22545 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22546 core ==
22547 PHY_CORE_0 ?
22548 RADIO_MIMO_CORESEL_CORE1 :
22549 RADIO_MIMO_CORESEL_CORE2,
22550 NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22551 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22552 core ==
22553 PHY_CORE_0 ?
22554 RADIO_MIMO_CORESEL_CORE1 :
22555 RADIO_MIMO_CORESEL_CORE2,
22556 NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22557
22558 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22559 if (NREV_GE(pi->pubpi.phy_rev, 7))
22560 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22561 RADIO_2057_NB_MASTER_CORE0 :
22562 RADIO_2057_NB_MASTER_CORE1,
22563 RADIO_2057_VCM_MASK, vcm);
22564 else
22565 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22566 ((core ==
22567 PHY_CORE_0) ? RADIO_2056_RX0 :
22568 RADIO_2056_RX1),
22569 RADIO_2056_VCM_MASK,
22570 vcm << RADIO_2056_RSSI_VCM_SHIFT);
22571
22572 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22573 &poll_results[vcm][0],
22574 NPHY_RSSICAL_NPOLL);
22575 }
22576
22577 for (result_idx = 0; result_idx < 4; result_idx++) {
22578 if ((core == result_idx / 2) &&
22579 (result_idx % 2 == 0)) {
22580
22581 min_d = NPHY_RSSICAL_MAXD;
22582 min_vcm = 0;
22583 min_poll =
22584 NPHY_RSSICAL_MAXREAD *
22585 NPHY_RSSICAL_NPOLL + 1;
22586 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22587 curr_d =
22588 poll_results[vcm][result_idx] *
22589 poll_results[vcm][result_idx] +
22590 poll_results[vcm][result_idx +
22591 1] *
22592 poll_results[vcm][result_idx +
22593 1];
22594 if (curr_d < min_d) {
22595 min_d = curr_d;
22596 min_vcm = vcm;
22597 }
22598 if (poll_results[vcm][result_idx] <
22599 min_poll)
22600 min_poll =
22601 poll_results[vcm]
22602 [result_idx];
22603 }
22604 vcm_final = min_vcm;
22605 poll_results_min[result_idx] = min_poll;
22606 }
22607 }
22608
22609 if (NREV_GE(pi->pubpi.phy_rev, 7))
22610 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22611 RADIO_2057_NB_MASTER_CORE0 :
22612 RADIO_2057_NB_MASTER_CORE1,
22613 RADIO_2057_VCM_MASK, vcm_final);
22614 else
22615 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22616 ((core ==
22617 PHY_CORE_0) ? RADIO_2056_RX0 :
22618 RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22619 vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22620
22621 for (result_idx = 0; result_idx < 4; result_idx++) {
22622 if (core == result_idx / 2) {
22623 fine_digital_offset[result_idx] =
22624 (NPHY_RSSICAL_NB_TARGET *
22625 NPHY_RSSICAL_NPOLL) -
22626 poll_results[vcm_final][result_idx];
22627 if (fine_digital_offset[result_idx] < 0) {
22628 fine_digital_offset[result_idx] =
22629 abs(fine_digital_offset
22630 [result_idx]);
22631 fine_digital_offset[result_idx] +=
22632 (NPHY_RSSICAL_NPOLL / 2);
22633 fine_digital_offset[result_idx] /=
22634 NPHY_RSSICAL_NPOLL;
22635 fine_digital_offset[result_idx] =
22636 -fine_digital_offset[
22637 result_idx];
22638 } else {
22639 fine_digital_offset[result_idx] +=
22640 (NPHY_RSSICAL_NPOLL / 2);
22641 fine_digital_offset[result_idx] /=
22642 NPHY_RSSICAL_NPOLL;
22643 }
22644
22645 if (poll_results_min[result_idx] ==
22646 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22647 fine_digital_offset[result_idx] =
22648 (NPHY_RSSICAL_NB_TARGET -
22649 NPHY_RSSICAL_MAXREAD - 1);
22650
22651 wlc_phy_scale_offset_rssi_nphy(
22652 pi, 0x0,
22653 (s8)
22654 fine_digital_offset
22655 [result_idx],
22656 (result_idx / 2 == 0) ?
22657 RADIO_MIMO_CORESEL_CORE1 :
22658 RADIO_MIMO_CORESEL_CORE2,
22659 (result_idx % 2 == 0) ?
22660 NPHY_RAIL_I : NPHY_RAIL_Q,
22661 NPHY_RSSI_SEL_NB);
22662 }
22663 }
22664
22665 }
22666
22667 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22668
22669 if ((rxcore_state & (1 << core)) == 0)
22670 continue;
22671
22672 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22673 if (wb_cnt == 0) {
22674 rssi_type = NPHY_RSSI_SEL_W1;
22675 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22676 } else {
22677 rssi_type = NPHY_RSSI_SEL_W2;
22678 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22679 }
22680
22681 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22682 core ==
22683 PHY_CORE_0 ?
22684 RADIO_MIMO_CORESEL_CORE1
22685 :
22686 RADIO_MIMO_CORESEL_CORE2,
22687 NPHY_RAIL_I, rssi_type);
22688 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22689 core ==
22690 PHY_CORE_0 ?
22691 RADIO_MIMO_CORESEL_CORE1
22692 :
22693 RADIO_MIMO_CORESEL_CORE2,
22694 NPHY_RAIL_Q, rssi_type);
22695
22696 wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22697 NPHY_RSSICAL_NPOLL);
22698
22699 for (result_idx = 0; result_idx < 4; result_idx++) {
22700 if (core == result_idx / 2) {
22701 fine_digital_offset[result_idx] =
22702 (target_code *
22703 NPHY_RSSICAL_NPOLL) -
22704 poll_result_core[result_idx];
22705 if (fine_digital_offset[result_idx] <
22706 0) {
22707 fine_digital_offset[result_idx]
22708 = abs(
22709 fine_digital_offset
22710 [result_idx]);
22711 fine_digital_offset[result_idx]
22712 += (NPHY_RSSICAL_NPOLL
22713 / 2);
22714 fine_digital_offset[result_idx]
22715 /= NPHY_RSSICAL_NPOLL;
22716 fine_digital_offset[result_idx]
22717 = -fine_digital_offset
22718 [result_idx];
22719 } else {
22720 fine_digital_offset[result_idx]
22721 += (NPHY_RSSICAL_NPOLL
22722 / 2);
22723 fine_digital_offset[result_idx]
22724 /= NPHY_RSSICAL_NPOLL;
22725 }
22726
22727 wlc_phy_scale_offset_rssi_nphy(
22728 pi, 0x0,
22729 (s8)
22730 fine_digital_offset
22731 [core *
22732 2],
22733 (core == PHY_CORE_0) ?
22734 RADIO_MIMO_CORESEL_CORE1 :
22735 RADIO_MIMO_CORESEL_CORE2,
22736 (result_idx % 2 == 0) ?
22737 NPHY_RAIL_I :
22738 NPHY_RAIL_Q,
22739 rssi_type);
22740 }
22741 }
22742
22743 }
22744 }
22745
22746 write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22747 write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22748
22749 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22750
22751 mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22752 mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22753 mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22754
22755 mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22756 mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22757 mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22758
22759 write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22760 write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22761 write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22762 write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22763 write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22764 write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22765 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22766 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22767 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22768 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22769 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22770 }
22771 write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22772 write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22773 write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22774 write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22775 write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22776 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22777 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22778 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22779 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22780 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22781 }
22782 write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22783 write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22784
22785 if (CHSPEC_IS2G(pi->radio_chanspec)) {
22786 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22787 pi->rssical_cache.rssical_radio_regs_2G[0] =
22788 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22789 pi->rssical_cache.rssical_radio_regs_2G[1] =
22790 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22791 } else {
22792 pi->rssical_cache.rssical_radio_regs_2G[0] =
22793 read_radio_reg(pi,
22794 RADIO_2056_RX_RSSI_MISC |
22795 RADIO_2056_RX0);
22796 pi->rssical_cache.rssical_radio_regs_2G[1] =
22797 read_radio_reg(pi,
22798 RADIO_2056_RX_RSSI_MISC |
22799 RADIO_2056_RX1);
22800 }
22801
22802 pi->rssical_cache.rssical_phyregs_2G[0] =
22803 read_phy_reg(pi, 0x1a6);
22804 pi->rssical_cache.rssical_phyregs_2G[1] =
22805 read_phy_reg(pi, 0x1ac);
22806 pi->rssical_cache.rssical_phyregs_2G[2] =
22807 read_phy_reg(pi, 0x1b2);
22808 pi->rssical_cache.rssical_phyregs_2G[3] =
22809 read_phy_reg(pi, 0x1b8);
22810 pi->rssical_cache.rssical_phyregs_2G[4] =
22811 read_phy_reg(pi, 0x1a4);
22812 pi->rssical_cache.rssical_phyregs_2G[5] =
22813 read_phy_reg(pi, 0x1aa);
22814 pi->rssical_cache.rssical_phyregs_2G[6] =
22815 read_phy_reg(pi, 0x1b0);
22816 pi->rssical_cache.rssical_phyregs_2G[7] =
22817 read_phy_reg(pi, 0x1b6);
22818 pi->rssical_cache.rssical_phyregs_2G[8] =
22819 read_phy_reg(pi, 0x1a5);
22820 pi->rssical_cache.rssical_phyregs_2G[9] =
22821 read_phy_reg(pi, 0x1ab);
22822 pi->rssical_cache.rssical_phyregs_2G[10] =
22823 read_phy_reg(pi, 0x1b1);
22824 pi->rssical_cache.rssical_phyregs_2G[11] =
22825 read_phy_reg(pi, 0x1b7);
22826
22827 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22828 } else {
22829 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22830 pi->rssical_cache.rssical_radio_regs_5G[0] =
22831 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22832 pi->rssical_cache.rssical_radio_regs_5G[1] =
22833 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22834 } else {
22835 pi->rssical_cache.rssical_radio_regs_5G[0] =
22836 read_radio_reg(pi,
22837 RADIO_2056_RX_RSSI_MISC |
22838 RADIO_2056_RX0);
22839 pi->rssical_cache.rssical_radio_regs_5G[1] =
22840 read_radio_reg(pi,
22841 RADIO_2056_RX_RSSI_MISC |
22842 RADIO_2056_RX1);
22843 }
22844
22845 pi->rssical_cache.rssical_phyregs_5G[0] =
22846 read_phy_reg(pi, 0x1a6);
22847 pi->rssical_cache.rssical_phyregs_5G[1] =
22848 read_phy_reg(pi, 0x1ac);
22849 pi->rssical_cache.rssical_phyregs_5G[2] =
22850 read_phy_reg(pi, 0x1b2);
22851 pi->rssical_cache.rssical_phyregs_5G[3] =
22852 read_phy_reg(pi, 0x1b8);
22853 pi->rssical_cache.rssical_phyregs_5G[4] =
22854 read_phy_reg(pi, 0x1a4);
22855 pi->rssical_cache.rssical_phyregs_5G[5] =
22856 read_phy_reg(pi, 0x1aa);
22857 pi->rssical_cache.rssical_phyregs_5G[6] =
22858 read_phy_reg(pi, 0x1b0);
22859 pi->rssical_cache.rssical_phyregs_5G[7] =
22860 read_phy_reg(pi, 0x1b6);
22861 pi->rssical_cache.rssical_phyregs_5G[8] =
22862 read_phy_reg(pi, 0x1a5);
22863 pi->rssical_cache.rssical_phyregs_5G[9] =
22864 read_phy_reg(pi, 0x1ab);
22865 pi->rssical_cache.rssical_phyregs_5G[10] =
22866 read_phy_reg(pi, 0x1b1);
22867 pi->rssical_cache.rssical_phyregs_5G[11] =
22868 read_phy_reg(pi, 0x1b7);
22869
22870 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22871 }
22872
22873 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22874 wlc_phy_clip_det_nphy(pi, 1, clip_state);
22875 }
22876
22877 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22878 {
22879 s32 target_code;
22880 u16 classif_state;
22881 u16 clip_state[2];
22882 u16 rssi_ctrl_state[2], pd_state[2];
22883 u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22884 u16 rfctrlintc_override_val;
22885 u16 clip_off[] = { 0xffff, 0xffff };
22886 u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22887 u8 vcm, min_vcm, vcm_tmp[4];
22888 u8 vcm_final[4] = { 0, 0, 0, 0 };
22889 u8 result_idx, ctr;
22890 s32 poll_results[4][4] = {
22891 {0, 0, 0, 0},
22892 {0, 0, 0, 0},
22893 {0, 0, 0, 0},
22894 {0, 0, 0, 0}
22895 };
22896 s32 poll_miniq[4][2] = {
22897 {0, 0},
22898 {0, 0},
22899 {0, 0},
22900 {0, 0}
22901 };
22902 s32 min_d, curr_d;
22903 s32 fine_digital_offset[4];
22904 s32 poll_results_min[4] = { 0, 0, 0, 0 };
22905 s32 min_poll;
22906
22907 switch (rssi_type) {
22908 case NPHY_RSSI_SEL_NB:
22909 target_code = NPHY_RSSICAL_NB_TARGET;
22910 break;
22911 case NPHY_RSSI_SEL_W1:
22912 target_code = NPHY_RSSICAL_W1_TARGET;
22913 break;
22914 case NPHY_RSSI_SEL_W2:
22915 target_code = NPHY_RSSICAL_W2_TARGET;
22916 break;
22917 default:
22918 return;
22919 }
22920
22921 classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22922 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22923 wlc_phy_clip_det_nphy(pi, 0, clip_state);
22924 wlc_phy_clip_det_nphy(pi, 1, clip_off);
22925
22926 rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22927 rfctrlintc_override_val =
22928 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22929
22930 rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22931 rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22932 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22933 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22934
22935 rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22936 rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22937 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22938 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22939
22940 pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22941 RADIO_2055_WBRSSI_G2_PD;
22942 pd_state[0] =
22943 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22944 pd_state[1] =
22945 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22946 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22947 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22948 rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22949 RADIO_2055_WBRSSI_G2_SEL;
22950 rssi_ctrl_state[0] =
22951 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22952 rssi_ctrl_state[1] =
22953 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22954 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22955
22956 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22957 NPHY_RAIL_I, rssi_type);
22958 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22959 NPHY_RAIL_Q, rssi_type);
22960
22961 for (vcm = 0; vcm < 4; vcm++) {
22962
22963 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22964 if (rssi_type != NPHY_RSSI_SEL_W2)
22965 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22966
22967 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22968 NPHY_RSSICAL_NPOLL);
22969
22970 if ((rssi_type == NPHY_RSSI_SEL_W1)
22971 || (rssi_type == NPHY_RSSI_SEL_W2)) {
22972 for (ctr = 0; ctr < 2; ctr++)
22973 poll_miniq[vcm][ctr] =
22974 min(poll_results[vcm][ctr * 2 + 0],
22975 poll_results[vcm][ctr * 2 + 1]);
22976 }
22977 }
22978
22979 for (result_idx = 0; result_idx < 4; result_idx++) {
22980 min_d = NPHY_RSSICAL_MAXD;
22981 min_vcm = 0;
22982 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22983 for (vcm = 0; vcm < 4; vcm++) {
22984 curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22985 poll_results[vcm][result_idx] :
22986 poll_miniq[vcm][result_idx / 2]) -
22987 (target_code * NPHY_RSSICAL_NPOLL));
22988 if (curr_d < min_d) {
22989 min_d = curr_d;
22990 min_vcm = vcm;
22991 }
22992 if (poll_results[vcm][result_idx] < min_poll)
22993 min_poll = poll_results[vcm][result_idx];
22994 }
22995 vcm_final[result_idx] = min_vcm;
22996 poll_results_min[result_idx] = min_poll;
22997 }
22998
22999 if (rssi_type != NPHY_RSSI_SEL_W2)
23000 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23001
23002 for (result_idx = 0; result_idx < 4; result_idx++) {
23003 fine_digital_offset[result_idx] =
23004 (target_code * NPHY_RSSICAL_NPOLL) -
23005 poll_results[vcm_final[result_idx]][result_idx];
23006 if (fine_digital_offset[result_idx] < 0) {
23007 fine_digital_offset[result_idx] =
23008 abs(fine_digital_offset[result_idx]);
23009 fine_digital_offset[result_idx] +=
23010 (NPHY_RSSICAL_NPOLL / 2);
23011 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23012 fine_digital_offset[result_idx] =
23013 -fine_digital_offset[result_idx];
23014 } else {
23015 fine_digital_offset[result_idx] +=
23016 (NPHY_RSSICAL_NPOLL / 2);
23017 fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23018 }
23019
23020 if (poll_results_min[result_idx] ==
23021 NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23022 fine_digital_offset[result_idx] =
23023 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23024
23025 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23026 (s8)
23027 fine_digital_offset[result_idx],
23028 (result_idx / 2 ==
23029 0) ? RADIO_MIMO_CORESEL_CORE1 :
23030 RADIO_MIMO_CORESEL_CORE2,
23031 (result_idx % 2 ==
23032 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23033 rssi_type);
23034 }
23035
23036 mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23037 mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23038 if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23039 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23040 NPHY_RSSI_SEL_NB);
23041 else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23042 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23043 NPHY_RSSI_SEL_W1);
23044 else /* RADIO_2055_WBRSSI_G2_SEL */
23045 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23046 NPHY_RSSI_SEL_W2);
23047 if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23048 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23049 NPHY_RSSI_SEL_NB);
23050 else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23051 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23052 NPHY_RSSI_SEL_W1);
23053 else /* RADIO_2055_WBRSSI_G1_SEL */
23054 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23055 NPHY_RSSI_SEL_W2);
23056 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23057
23058 write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23059 write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23060 write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23061 write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23062
23063 wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23064 wlc_phy_clip_det_nphy(pi, 1, clip_state);
23065
23066 wlc_phy_resetcca_nphy(pi);
23067 }
23068
23069 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23070 {
23071 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23072 wlc_phy_rssi_cal_nphy_rev3(pi);
23073 } else {
23074 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23075 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23076 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23077 }
23078 }
23079
23080 int
23081 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23082 {
23083 s16 rxpwr, rxpwr0, rxpwr1;
23084 s16 phyRx0_l, phyRx2_l;
23085
23086 rxpwr = 0;
23087 rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23088 rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23089
23090 if (rxpwr0 > 127)
23091 rxpwr0 -= 256;
23092 if (rxpwr1 > 127)
23093 rxpwr1 -= 256;
23094
23095 phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23096 phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23097 if (phyRx2_l > 127)
23098 phyRx2_l -= 256;
23099
23100 if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23101 rxpwr0 = rxpwr1;
23102 rxpwr1 = phyRx2_l;
23103 }
23104
23105 if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23106 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23107 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23108 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23109 else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23110 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23111
23112 return rxpwr;
23113 }
23114
23115 static void
23116 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23117 u16 num_samps)
23118 {
23119 u16 t;
23120 u32 *data_buf = NULL;
23121
23122 data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23123 if (data_buf == NULL)
23124 return;
23125
23126 if (pi->phyhang_avoid)
23127 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23128
23129 for (t = 0; t < num_samps; t++)
23130 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23131 (((unsigned int)tone_buf[t].q) & 0x3ff);
23132 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23133 data_buf);
23134
23135 kfree(data_buf);
23136
23137 if (pi->phyhang_avoid)
23138 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23139 }
23140
23141 static u16
23142 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23143 u8 dac_test_mode)
23144 {
23145 u8 phy_bw, is_phybw40;
23146 u16 num_samps, t, spur;
23147 s32 theta = 0, rot = 0;
23148 u32 tbl_len;
23149 struct cordic_iq *tone_buf = NULL;
23150
23151 is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23152 phy_bw = (is_phybw40 == 1) ? 40 : 20;
23153 tbl_len = (phy_bw << 3);
23154
23155 if (dac_test_mode == 1) {
23156 spur = read_phy_reg(pi, 0x01);
23157 spur = (spur >> 15) & 1;
23158 phy_bw = (spur == 1) ? 82 : 80;
23159 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23160
23161 tbl_len = (phy_bw << 1);
23162 }
23163
23164 tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23165 if (tone_buf == NULL)
23166 return 0;
23167
23168 num_samps = (u16) tbl_len;
23169 rot = ((f_kHz * 36) / phy_bw) / 100;
23170 theta = 0;
23171
23172 for (t = 0; t < num_samps; t++) {
23173
23174 tone_buf[t] = cordic_calc_iq(theta);
23175
23176 theta += rot;
23177
23178 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23179 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23180 }
23181
23182 wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23183
23184 kfree(tone_buf);
23185
23186 return num_samps;
23187 }
23188
23189 static void
23190 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23191 u16 wait, u8 iqmode, u8 dac_test_mode,
23192 bool modify_bbmult)
23193 {
23194 u16 bb_mult;
23195 u8 phy_bw, sample_cmd;
23196 u16 orig_RfseqCoreActv;
23197 u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23198 lpf_bw_ctl_miscreg4;
23199
23200 if (pi->phyhang_avoid)
23201 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23202
23203 phy_bw = 20;
23204 if (CHSPEC_IS40(pi->radio_chanspec))
23205 phy_bw = 40;
23206
23207 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23208
23209 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23210 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23211 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23212 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23213 (0x7 << 8);
23214 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23215 (0x7 << 8);
23216 } else {
23217 wlc_phy_rfctrl_override_nphy_rev7(
23218 pi,
23219 (0x1 << 7),
23220 wlc_phy_read_lpf_bw_ctl_nphy
23221 (pi,
23222 0), 0, 0,
23223 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23224
23225 pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23226
23227 lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23228 (0x7 << 8);
23229 lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23230 (0x7 << 8);
23231 }
23232 }
23233
23234 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23235
23236 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23237 &bb_mult);
23238 pi->nphy_bb_mult_save =
23239 BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23240 }
23241
23242 if (modify_bbmult) {
23243 bb_mult = (phy_bw == 20) ? 100 : 71;
23244 bb_mult = (bb_mult << 8) + bb_mult;
23245 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23246 &bb_mult);
23247 }
23248
23249 if (pi->phyhang_avoid)
23250 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23251
23252 write_phy_reg(pi, 0xc6, num_samps - 1);
23253
23254 if (loops != 0xffff)
23255 write_phy_reg(pi, 0xc4, loops - 1);
23256 else
23257 write_phy_reg(pi, 0xc4, loops);
23258
23259 write_phy_reg(pi, 0xc5, wait);
23260
23261 orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23262 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23263 if (iqmode) {
23264
23265 and_phy_reg(pi, 0xc2, 0x7FFF);
23266
23267 or_phy_reg(pi, 0xc2, 0x8000);
23268 } else {
23269
23270 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23271 write_phy_reg(pi, 0xc3, sample_cmd);
23272 }
23273
23274 SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23275
23276 write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23277 }
23278
23279 int
23280 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23281 u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23282 {
23283 u16 num_samps;
23284 u16 loops = 0xffff;
23285 u16 wait = 0;
23286
23287 num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23288 dac_test_mode);
23289 if (num_samps == 0)
23290 return -EBADE;
23291
23292 wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23293 dac_test_mode, modify_bbmult);
23294
23295 return 0;
23296 }
23297
23298 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23299 {
23300 u16 playback_status;
23301 u16 bb_mult;
23302
23303 if (pi->phyhang_avoid)
23304 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23305
23306 playback_status = read_phy_reg(pi, 0xc7);
23307 if (playback_status & 0x1)
23308 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23309 else if (playback_status & 0x2)
23310 and_phy_reg(pi, 0xc2,
23311 (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23312
23313 and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23314
23315 if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23316
23317 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23318 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23319 &bb_mult);
23320
23321 pi->nphy_bb_mult_save = 0;
23322 }
23323
23324 if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23325 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23326 wlc_phy_rfctrl_override_nphy_rev7(
23327 pi,
23328 (0x1 << 7),
23329 0, 0, 1,
23330 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23331 pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23332 }
23333 }
23334
23335 if (pi->phyhang_avoid)
23336 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23337 }
23338
23339 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23340 {
23341 u32 *tx_pwrctrl_tbl = NULL;
23342 uint phyrev = pi->pubpi.phy_rev;
23343
23344 if (PHY_IPA(pi)) {
23345 tx_pwrctrl_tbl =
23346 wlc_phy_get_ipa_gaintbl_nphy(pi);
23347 } else {
23348 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23349 if (NREV_IS(phyrev, 3))
23350 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23351 else if (NREV_IS(phyrev, 4))
23352 tx_pwrctrl_tbl =
23353 (pi->srom_fem5g.extpagain == 3) ?
23354 nphy_tpc_5GHz_txgain_HiPwrEPA :
23355 nphy_tpc_5GHz_txgain_rev4;
23356 else
23357 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23358 } else {
23359 if (NREV_GE(phyrev, 7)) {
23360 if (pi->pubpi.radiorev == 3)
23361 tx_pwrctrl_tbl =
23362 nphy_tpc_txgain_epa_2057rev3;
23363 else if (pi->pubpi.radiorev == 5)
23364 tx_pwrctrl_tbl =
23365 nphy_tpc_txgain_epa_2057rev5;
23366 } else {
23367 if (NREV_GE(phyrev, 5) &&
23368 (pi->srom_fem2g.extpagain == 3))
23369 tx_pwrctrl_tbl =
23370 nphy_tpc_txgain_HiPwrEPA;
23371 else
23372 tx_pwrctrl_tbl =
23373 nphy_tpc_txgain_rev3;
23374 }
23375 }
23376 }
23377 return tx_pwrctrl_tbl;
23378 }
23379
23380 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23381 {
23382 u16 base_idx[2], curr_gain[2];
23383 u8 core_no;
23384 struct nphy_txgains target_gain;
23385 u32 *tx_pwrctrl_tbl = NULL;
23386
23387 if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23388 if (pi->phyhang_avoid)
23389 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23390
23391 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23392 curr_gain);
23393
23394 if (pi->phyhang_avoid)
23395 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23396
23397 for (core_no = 0; core_no < 2; core_no++) {
23398 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23399 target_gain.ipa[core_no] =
23400 curr_gain[core_no] & 0x0007;
23401 target_gain.pad[core_no] =
23402 ((curr_gain[core_no] & 0x00F8) >> 3);
23403 target_gain.pga[core_no] =
23404 ((curr_gain[core_no] & 0x0F00) >> 8);
23405 target_gain.txgm[core_no] =
23406 ((curr_gain[core_no] & 0x7000) >> 12);
23407 target_gain.txlpf[core_no] =
23408 ((curr_gain[core_no] & 0x8000) >> 15);
23409 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23410 target_gain.ipa[core_no] =
23411 curr_gain[core_no] & 0x000F;
23412 target_gain.pad[core_no] =
23413 ((curr_gain[core_no] & 0x00F0) >> 4);
23414 target_gain.pga[core_no] =
23415 ((curr_gain[core_no] & 0x0F00) >> 8);
23416 target_gain.txgm[core_no] =
23417 ((curr_gain[core_no] & 0x7000) >> 12);
23418 } else {
23419 target_gain.ipa[core_no] =
23420 curr_gain[core_no] & 0x0003;
23421 target_gain.pad[core_no] =
23422 ((curr_gain[core_no] & 0x000C) >> 2);
23423 target_gain.pga[core_no] =
23424 ((curr_gain[core_no] & 0x0070) >> 4);
23425 target_gain.txgm[core_no] =
23426 ((curr_gain[core_no] & 0x0380) >> 7);
23427 }
23428 }
23429 } else {
23430 uint phyrev = pi->pubpi.phy_rev;
23431
23432 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23433 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23434 for (core_no = 0; core_no < 2; core_no++) {
23435 if (NREV_GE(phyrev, 3)) {
23436 tx_pwrctrl_tbl =
23437 brcms_phy_get_tx_pwrctrl_tbl(pi);
23438 if (NREV_GE(phyrev, 7)) {
23439 target_gain.ipa[core_no] =
23440 (tx_pwrctrl_tbl
23441 [base_idx[core_no]]
23442 >> 16) & 0x7;
23443 target_gain.pad[core_no] =
23444 (tx_pwrctrl_tbl
23445 [base_idx[core_no]]
23446 >> 19) & 0x1f;
23447 target_gain.pga[core_no] =
23448 (tx_pwrctrl_tbl
23449 [base_idx[core_no]]
23450 >> 24) & 0xf;
23451 target_gain.txgm[core_no] =
23452 (tx_pwrctrl_tbl
23453 [base_idx[core_no]]
23454 >> 28) & 0x7;
23455 target_gain.txlpf[core_no] =
23456 (tx_pwrctrl_tbl
23457 [base_idx[core_no]]
23458 >> 31) & 0x1;
23459 } else {
23460 target_gain.ipa[core_no] =
23461 (tx_pwrctrl_tbl
23462 [base_idx[core_no]]
23463 >> 16) & 0xf;
23464 target_gain.pad[core_no] =
23465 (tx_pwrctrl_tbl
23466 [base_idx[core_no]]
23467 >> 20) & 0xf;
23468 target_gain.pga[core_no] =
23469 (tx_pwrctrl_tbl
23470 [base_idx[core_no]]
23471 >> 24) & 0xf;
23472 target_gain.txgm[core_no] =
23473 (tx_pwrctrl_tbl
23474 [base_idx[core_no]]
23475 >> 28) & 0x7;
23476 }
23477 } else {
23478 target_gain.ipa[core_no] =
23479 (nphy_tpc_txgain[base_idx[core_no]] >>
23480 16) & 0x3;
23481 target_gain.pad[core_no] =
23482 (nphy_tpc_txgain[base_idx[core_no]] >>
23483 18) & 0x3;
23484 target_gain.pga[core_no] =
23485 (nphy_tpc_txgain[base_idx[core_no]] >>
23486 20) & 0x7;
23487 target_gain.txgm[core_no] =
23488 (nphy_tpc_txgain[base_idx[core_no]] >>
23489 23) & 0x7;
23490 }
23491 }
23492 }
23493
23494 return target_gain;
23495 }
23496
23497 static void
23498 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23499 struct nphy_txgains target_gain,
23500 struct nphy_iqcal_params *params)
23501 {
23502 u8 k;
23503 int idx;
23504 u16 gain_index;
23505 u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23506
23507 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23508 if (NREV_GE(pi->pubpi.phy_rev, 7))
23509 params->txlpf = target_gain.txlpf[core_no];
23510
23511 params->txgm = target_gain.txgm[core_no];
23512 params->pga = target_gain.pga[core_no];
23513 params->pad = target_gain.pad[core_no];
23514 params->ipa = target_gain.ipa[core_no];
23515 if (NREV_GE(pi->pubpi.phy_rev, 7))
23516 params->cal_gain =
23517 ((params->txlpf << 15) | (params->txgm << 12) |
23518 (params->pga << 8) |
23519 (params->pad << 3) | (params->ipa));
23520 else
23521 params->cal_gain =
23522 ((params->txgm << 12) | (params->pga << 8) |
23523 (params->pad << 4) | (params->ipa));
23524
23525 params->ncorr[0] = 0x79;
23526 params->ncorr[1] = 0x79;
23527 params->ncorr[2] = 0x79;
23528 params->ncorr[3] = 0x79;
23529 params->ncorr[4] = 0x79;
23530 } else {
23531
23532 gain_index = ((target_gain.pad[core_no] << 0) |
23533 (target_gain.pga[core_no] << 4) |
23534 (target_gain.txgm[core_no] << 8));
23535
23536 idx = -1;
23537 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23538 if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23539 gain_index) {
23540 idx = k;
23541 break;
23542 }
23543 }
23544
23545 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23546 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23547 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23548 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23549 (params->pad << 2));
23550 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23551 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23552 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23553 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23554 }
23555 }
23556
23557 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23558 {
23559 u16 jtag_core, core;
23560
23561 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23562
23563 for (core = 0; core <= 1; core++) {
23564
23565 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23566 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23567 TX_SSI_MASTER);
23568
23569 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23570 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23571 IQCAL_VCM_HG);
23572
23573 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23574 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23575 IQCAL_IDAC);
23576
23577 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23578 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23579 TSSI_VCM);
23580
23581 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23582
23583 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23584 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23585 TX_SSI_MUX);
23586
23587 if (pi->pubpi.radiorev != 5)
23588 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23589 READ_RADIO_REG3(pi, RADIO_2057, TX,
23590 core,
23591 TSSIA);
23592
23593 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23594 READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23595
23596 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23597 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23598 TSSI_MISC1);
23599
23600 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23601 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23602 TX_SSI_MASTER, 0x0a);
23603 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23604 IQCAL_VCM_HG, 0x43);
23605 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23606 IQCAL_IDAC, 0x55);
23607 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23608 TSSI_VCM, 0x00);
23609 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23610 TSSIG, 0x00);
23611 if (pi->use_int_tx_iqlo_cal_nphy) {
23612 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23613 core, TX_SSI_MUX, 0x4);
23614 if (!(pi->
23615 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23616 WRITE_RADIO_REG3(pi, RADIO_2057,
23617 TX, core,
23618 TSSIA, 0x31);
23619 else
23620 WRITE_RADIO_REG3(pi, RADIO_2057,
23621 TX, core,
23622 TSSIA, 0x21);
23623 }
23624 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23625 TSSI_MISC1, 0x00);
23626 } else {
23627 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23628 TX_SSI_MASTER, 0x06);
23629 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23630 IQCAL_VCM_HG, 0x43);
23631 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23632 IQCAL_IDAC, 0x55);
23633 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23634 TSSI_VCM, 0x00);
23635
23636 if (pi->pubpi.radiorev != 5)
23637 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23638 core, TSSIA, 0x00);
23639 if (pi->use_int_tx_iqlo_cal_nphy) {
23640 WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23641 core, TX_SSI_MUX,
23642 0x06);
23643 if (!(pi->
23644 internal_tx_iqlo_cal_tapoff_intpa_nphy))
23645 WRITE_RADIO_REG3(pi, RADIO_2057,
23646 TX, core,
23647 TSSIG, 0x31);
23648 else
23649 WRITE_RADIO_REG3(pi, RADIO_2057,
23650 TX, core,
23651 TSSIG, 0x21);
23652 }
23653 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23654 TSSI_MISC1, 0x00);
23655 }
23656 }
23657 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23658
23659 for (core = 0; core <= 1; core++) {
23660 jtag_core =
23661 (core ==
23662 PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23663
23664 pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23665 read_radio_reg(pi,
23666 RADIO_2056_TX_TX_SSI_MASTER |
23667 jtag_core);
23668
23669 pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23670 read_radio_reg(pi,
23671 RADIO_2056_TX_IQCAL_VCM_HG |
23672 jtag_core);
23673
23674 pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23675 read_radio_reg(pi,
23676 RADIO_2056_TX_IQCAL_IDAC |
23677 jtag_core);
23678
23679 pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23680 read_radio_reg(
23681 pi,
23682 RADIO_2056_TX_TSSI_VCM |
23683 jtag_core);
23684
23685 pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23686 read_radio_reg(pi,
23687 RADIO_2056_TX_TX_AMP_DET |
23688 jtag_core);
23689
23690 pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23691 read_radio_reg(pi,
23692 RADIO_2056_TX_TX_SSI_MUX |
23693 jtag_core);
23694
23695 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23696 read_radio_reg(pi,
23697 RADIO_2056_TX_TSSIA | jtag_core);
23698
23699 pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23700 read_radio_reg(pi,
23701 RADIO_2056_TX_TSSIG | jtag_core);
23702
23703 pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23704 read_radio_reg(pi,
23705 RADIO_2056_TX_TSSI_MISC1 |
23706 jtag_core);
23707
23708 pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23709 read_radio_reg(pi,
23710 RADIO_2056_TX_TSSI_MISC2 |
23711 jtag_core);
23712
23713 pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23714 read_radio_reg(pi,
23715 RADIO_2056_TX_TSSI_MISC3 |
23716 jtag_core);
23717
23718 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23719 write_radio_reg(pi,
23720 RADIO_2056_TX_TX_SSI_MASTER |
23721 jtag_core, 0x0a);
23722 write_radio_reg(pi,
23723 RADIO_2056_TX_IQCAL_VCM_HG |
23724 jtag_core, 0x40);
23725 write_radio_reg(pi,
23726 RADIO_2056_TX_IQCAL_IDAC |
23727 jtag_core, 0x55);
23728 write_radio_reg(pi,
23729 RADIO_2056_TX_TSSI_VCM |
23730 jtag_core, 0x00);
23731 write_radio_reg(pi,
23732 RADIO_2056_TX_TX_AMP_DET |
23733 jtag_core, 0x00);
23734
23735 if (PHY_IPA(pi)) {
23736 write_radio_reg(
23737 pi,
23738 RADIO_2056_TX_TX_SSI_MUX
23739 | jtag_core, 0x4);
23740 write_radio_reg(pi,
23741 RADIO_2056_TX_TSSIA |
23742 jtag_core, 0x1);
23743 } else {
23744 write_radio_reg(
23745 pi,
23746 RADIO_2056_TX_TX_SSI_MUX
23747 | jtag_core, 0x00);
23748 write_radio_reg(pi,
23749 RADIO_2056_TX_TSSIA |
23750 jtag_core, 0x2f);
23751 }
23752 write_radio_reg(pi,
23753 RADIO_2056_TX_TSSIG | jtag_core,
23754 0x00);
23755 write_radio_reg(pi,
23756 RADIO_2056_TX_TSSI_MISC1 |
23757 jtag_core, 0x00);
23758
23759 write_radio_reg(pi,
23760 RADIO_2056_TX_TSSI_MISC2 |
23761 jtag_core, 0x00);
23762 write_radio_reg(pi,
23763 RADIO_2056_TX_TSSI_MISC3 |
23764 jtag_core, 0x00);
23765 } else {
23766 write_radio_reg(pi,
23767 RADIO_2056_TX_TX_SSI_MASTER |
23768 jtag_core, 0x06);
23769 write_radio_reg(pi,
23770 RADIO_2056_TX_IQCAL_VCM_HG |
23771 jtag_core, 0x40);
23772 write_radio_reg(pi,
23773 RADIO_2056_TX_IQCAL_IDAC |
23774 jtag_core, 0x55);
23775 write_radio_reg(pi,
23776 RADIO_2056_TX_TSSI_VCM |
23777 jtag_core, 0x00);
23778 write_radio_reg(pi,
23779 RADIO_2056_TX_TX_AMP_DET |
23780 jtag_core, 0x00);
23781 write_radio_reg(pi,
23782 RADIO_2056_TX_TSSIA | jtag_core,
23783 0x00);
23784
23785 if (PHY_IPA(pi)) {
23786
23787 write_radio_reg(
23788 pi,
23789 RADIO_2056_TX_TX_SSI_MUX
23790 | jtag_core, 0x06);
23791 if (NREV_LT(pi->pubpi.phy_rev, 5))
23792 write_radio_reg(
23793 pi,
23794 RADIO_2056_TX_TSSIG
23795 | jtag_core,
23796 0x11);
23797 else
23798 write_radio_reg(
23799 pi,
23800 RADIO_2056_TX_TSSIG
23801 | jtag_core,
23802 0x1);
23803 } else {
23804 write_radio_reg(
23805 pi,
23806 RADIO_2056_TX_TX_SSI_MUX
23807 | jtag_core, 0x00);
23808 write_radio_reg(pi,
23809 RADIO_2056_TX_TSSIG |
23810 jtag_core, 0x20);
23811 }
23812
23813 write_radio_reg(pi,
23814 RADIO_2056_TX_TSSI_MISC1 |
23815 jtag_core, 0x00);
23816 write_radio_reg(pi,
23817 RADIO_2056_TX_TSSI_MISC2 |
23818 jtag_core, 0x00);
23819 write_radio_reg(pi,
23820 RADIO_2056_TX_TSSI_MISC3 |
23821 jtag_core, 0x00);
23822 }
23823 }
23824 } else {
23825
23826 pi->tx_rx_cal_radio_saveregs[0] =
23827 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23828 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23829 pi->tx_rx_cal_radio_saveregs[1] =
23830 read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23831 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23832
23833 pi->tx_rx_cal_radio_saveregs[2] =
23834 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23835 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23836 pi->tx_rx_cal_radio_saveregs[3] =
23837 read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23838 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23839
23840 pi->tx_rx_cal_radio_saveregs[4] =
23841 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23842 pi->tx_rx_cal_radio_saveregs[5] =
23843 read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23844
23845 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23846 0) {
23847
23848 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23849 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23850 } else {
23851
23852 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23853 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23854 }
23855
23856 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23857
23858 or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23859 or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23860 } else {
23861
23862 and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23863 and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23864 }
23865 }
23866 }
23867
23868 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23869 {
23870 u16 jtag_core, core;
23871
23872 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23873 for (core = 0; core <= 1; core++) {
23874
23875 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23876 TX_SSI_MASTER,
23877 pi->
23878 tx_rx_cal_radio_saveregs[(core * 11) +
23879 0]);
23880
23881 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23882 pi->
23883 tx_rx_cal_radio_saveregs[(core * 11) +
23884 1]);
23885
23886 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23887 pi->
23888 tx_rx_cal_radio_saveregs[(core * 11) +
23889 2]);
23890
23891 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23892 pi->
23893 tx_rx_cal_radio_saveregs[(core * 11) +
23894 3]);
23895
23896 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23897 pi->
23898 tx_rx_cal_radio_saveregs[(core * 11) +
23899 5]);
23900
23901 if (pi->pubpi.radiorev != 5)
23902 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23903 TSSIA,
23904 pi->tx_rx_cal_radio_saveregs
23905 [(core * 11) + 6]);
23906
23907 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23908 pi->
23909 tx_rx_cal_radio_saveregs[(core * 11) +
23910 7]);
23911
23912 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23913 pi->
23914 tx_rx_cal_radio_saveregs[(core * 11) +
23915 8]);
23916 }
23917 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23918 for (core = 0; core <= 1; core++) {
23919 jtag_core = (core == PHY_CORE_0) ?
23920 RADIO_2056_TX0 : RADIO_2056_TX1;
23921
23922 write_radio_reg(pi,
23923 RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23924 pi->
23925 tx_rx_cal_radio_saveregs[(core * 11) +
23926 0]);
23927
23928 write_radio_reg(pi,
23929 RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23930 pi->
23931 tx_rx_cal_radio_saveregs[(core * 11) +
23932 1]);
23933
23934 write_radio_reg(pi,
23935 RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23936 pi->
23937 tx_rx_cal_radio_saveregs[(core * 11) +
23938 2]);
23939
23940 write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23941 pi->
23942 tx_rx_cal_radio_saveregs[(core * 11) +
23943 3]);
23944
23945 write_radio_reg(pi,
23946 RADIO_2056_TX_TX_AMP_DET | jtag_core,
23947 pi->
23948 tx_rx_cal_radio_saveregs[(core * 11) +
23949 4]);
23950
23951 write_radio_reg(pi,
23952 RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23953 pi->
23954 tx_rx_cal_radio_saveregs[(core * 11) +
23955 5]);
23956
23957 write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23958 pi->
23959 tx_rx_cal_radio_saveregs[(core * 11) +
23960 6]);
23961
23962 write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23963 pi->
23964 tx_rx_cal_radio_saveregs[(core * 11) +
23965 7]);
23966
23967 write_radio_reg(pi,
23968 RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23969 pi->
23970 tx_rx_cal_radio_saveregs[(core * 11) +
23971 8]);
23972
23973 write_radio_reg(pi,
23974 RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23975 pi->
23976 tx_rx_cal_radio_saveregs[(core * 11) +
23977 9]);
23978
23979 write_radio_reg(pi,
23980 RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23981 pi->
23982 tx_rx_cal_radio_saveregs[(core * 11) +
23983 10]);
23984 }
23985 } else {
23986
23987 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23988 pi->tx_rx_cal_radio_saveregs[0]);
23989 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23990 pi->tx_rx_cal_radio_saveregs[1]);
23991 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23992 pi->tx_rx_cal_radio_saveregs[2]);
23993 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23994 pi->tx_rx_cal_radio_saveregs[3]);
23995 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23996 pi->tx_rx_cal_radio_saveregs[4]);
23997 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23998 pi->tx_rx_cal_radio_saveregs[5]);
23999 }
24000 }
24001
24002 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24003 {
24004 u16 val, mask;
24005
24006 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24007 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24008 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24009
24010 mask = ((0x3 << 8) | (0x3 << 10));
24011 val = (0x2 << 8);
24012 val |= (0x2 << 10);
24013 mod_phy_reg(pi, 0xa6, mask, val);
24014 mod_phy_reg(pi, 0xa7, mask, val);
24015
24016 val = read_phy_reg(pi, 0x8f);
24017 pi->tx_rx_cal_phy_saveregs[2] = val;
24018 val |= ((0x1 << 9) | (0x1 << 10));
24019 write_phy_reg(pi, 0x8f, val);
24020
24021 val = read_phy_reg(pi, 0xa5);
24022 pi->tx_rx_cal_phy_saveregs[3] = val;
24023 val |= ((0x1 << 9) | (0x1 << 10));
24024 write_phy_reg(pi, 0xa5, val);
24025
24026 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24027 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24028
24029 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24030 &val);
24031 pi->tx_rx_cal_phy_saveregs[5] = val;
24032 val = 0;
24033 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24034 &val);
24035
24036 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24037 &val);
24038 pi->tx_rx_cal_phy_saveregs[6] = val;
24039 val = 0;
24040 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24041 &val);
24042
24043 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24044 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24045
24046 if (!(pi->use_int_tx_iqlo_cal_nphy))
24047 wlc_phy_rfctrlintc_override_nphy(
24048 pi,
24049 NPHY_RfctrlIntc_override_PA,
24050 1,
24051 RADIO_MIMO_CORESEL_CORE1
24052 |
24053 RADIO_MIMO_CORESEL_CORE2);
24054 else
24055 wlc_phy_rfctrlintc_override_nphy(
24056 pi,
24057 NPHY_RfctrlIntc_override_PA,
24058 0,
24059 RADIO_MIMO_CORESEL_CORE1
24060 |
24061 RADIO_MIMO_CORESEL_CORE2);
24062
24063 wlc_phy_rfctrlintc_override_nphy(pi,
24064 NPHY_RfctrlIntc_override_TRSW,
24065 0x2, RADIO_MIMO_CORESEL_CORE1);
24066 wlc_phy_rfctrlintc_override_nphy(pi,
24067 NPHY_RfctrlIntc_override_TRSW,
24068 0x8, RADIO_MIMO_CORESEL_CORE2);
24069
24070 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24071 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24072 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24073 0x29b, (0x1 << 0), (0) << 0);
24074
24075 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24076 0x29b, (0x1 << 0), (0) << 0);
24077
24078 if (NREV_IS(pi->pubpi.phy_rev, 7)
24079 || NREV_GE(pi->pubpi.phy_rev, 8))
24080 wlc_phy_rfctrl_override_nphy_rev7(
24081 pi, (0x1 << 7),
24082 wlc_phy_read_lpf_bw_ctl_nphy
24083 (pi,
24084 0), 0, 0,
24085 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24086
24087 if (pi->use_int_tx_iqlo_cal_nphy
24088 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24089
24090 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24091
24092 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24093 1 << 4);
24094
24095 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24096 mod_radio_reg(
24097 pi,
24098 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24099 1, 0);
24100 mod_radio_reg(
24101 pi,
24102 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24103 1, 0);
24104 } else {
24105 mod_radio_reg(
24106 pi,
24107 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24108 1, 0);
24109 mod_radio_reg(
24110 pi,
24111 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24112 1, 0);
24113 }
24114 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24115 wlc_phy_rfctrl_override_nphy_rev7(
24116 pi,
24117 (0x1 << 3), 0,
24118 0x3, 0,
24119 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24120 }
24121 }
24122 } else {
24123 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24124 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24125
24126 mask = ((0x3 << 12) | (0x3 << 14));
24127 val = (0x2 << 12);
24128 val |= (0x2 << 14);
24129 mod_phy_reg(pi, 0xa6, mask, val);
24130 mod_phy_reg(pi, 0xa7, mask, val);
24131
24132 val = read_phy_reg(pi, 0xa5);
24133 pi->tx_rx_cal_phy_saveregs[2] = val;
24134 val |= ((0x1 << 12) | (0x1 << 13));
24135 write_phy_reg(pi, 0xa5, val);
24136
24137 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24138 &val);
24139 pi->tx_rx_cal_phy_saveregs[3] = val;
24140 val |= 0x2000;
24141 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24142 &val);
24143
24144 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24145 &val);
24146 pi->tx_rx_cal_phy_saveregs[4] = val;
24147 val |= 0x2000;
24148 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24149 &val);
24150
24151 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24152 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24153 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24154 write_phy_reg(pi, 0x91, val);
24155 write_phy_reg(pi, 0x92, val);
24156 }
24157 }
24158
24159 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24160 {
24161 u16 mask;
24162
24163 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24164 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24165 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24166 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24167 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24168 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24169
24170 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24171 &pi->tx_rx_cal_phy_saveregs[5]);
24172 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24173 &pi->tx_rx_cal_phy_saveregs[6]);
24174
24175 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24176 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24177
24178 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24179 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24180
24181 if (NREV_IS(pi->pubpi.phy_rev, 7)
24182 || NREV_GE(pi->pubpi.phy_rev, 8))
24183 wlc_phy_rfctrl_override_nphy_rev7(
24184 pi, (0x1 << 7), 0, 0,
24185 1,
24186 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24187
24188 wlc_phy_resetcca_nphy(pi);
24189
24190 if (pi->use_int_tx_iqlo_cal_nphy
24191 && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24192
24193 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24194 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24195 mod_radio_reg(
24196 pi,
24197 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24198 1, 1);
24199 mod_radio_reg(
24200 pi,
24201 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24202 1, 1);
24203 } else {
24204 mod_radio_reg(
24205 pi,
24206 RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24207 1, 1);
24208 mod_radio_reg(
24209 pi,
24210 RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24211 1, 1);
24212 }
24213
24214 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24215 0);
24216 } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24217 wlc_phy_rfctrl_override_nphy_rev7(
24218 pi,
24219 (0x1 << 3), 0,
24220 0x3, 1,
24221 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24222 }
24223 }
24224 } else {
24225 mask = ((0x3 << 12) | (0x3 << 14));
24226 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24227 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24228 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24229
24230 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24231 &pi->tx_rx_cal_phy_saveregs[3]);
24232
24233 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24234 &pi->tx_rx_cal_phy_saveregs[4]);
24235
24236 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24237 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24238 }
24239 }
24240
24241 void
24242 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24243 {
24244 u16 tssi_reg;
24245 s32 temp, pwrindex[2];
24246 s32 idle_tssi[2];
24247 s32 rssi_buf[4];
24248 s32 tssival[2];
24249 u8 tssi_type;
24250
24251 tssi_reg = read_phy_reg(pi, 0x1e9);
24252
24253 temp = (s32) (tssi_reg & 0x3f);
24254 idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24255
24256 temp = (s32) ((tssi_reg >> 8) & 0x3f);
24257 idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24258
24259 tssi_type =
24260 CHSPEC_IS5G(pi->radio_chanspec) ?
24261 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24262
24263 wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24264
24265 tssival[0] = rssi_buf[0] / ((s32) num_samps);
24266 tssival[1] = rssi_buf[2] / ((s32) num_samps);
24267
24268 pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24269 pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24270
24271 if (pwrindex[0] < 0)
24272 pwrindex[0] = 0;
24273 else if (pwrindex[0] > 63)
24274 pwrindex[0] = 63;
24275
24276 if (pwrindex[1] < 0)
24277 pwrindex[1] = 0;
24278 else if (pwrindex[1] > 63)
24279 pwrindex[1] = 63;
24280
24281 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24282 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24283 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24284 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24285 }
24286
24287 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24288 {
24289 int index;
24290 u32 bbmult_scale;
24291 u16 bbmult;
24292 u16 tblentry;
24293
24294 struct nphy_txiqcal_ladder ladder_lo[] = {
24295 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24296 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24297 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24298 };
24299
24300 struct nphy_txiqcal_ladder ladder_iq[] = {
24301 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24302 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24303 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24304 };
24305
24306 bbmult = (core == PHY_CORE_0) ?
24307 ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24308 (pi->nphy_txcal_bbmult & 0xff);
24309
24310 for (index = 0; index < 18; index++) {
24311 bbmult_scale = ladder_lo[index].percent * bbmult;
24312 bbmult_scale /= 100;
24313
24314 tblentry =
24315 ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24316 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24317 &tblentry);
24318
24319 bbmult_scale = ladder_iq[index].percent * bbmult;
24320 bbmult_scale /= 100;
24321
24322 tblentry =
24323 ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24324 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24325 16, &tblentry);
24326 }
24327 }
24328
24329 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24330 {
24331 u16 tmp;
24332 tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24333
24334 tmp = (tmp & (0x7f << 8)) >> 8;
24335 return (u8) tmp;
24336 }
24337
24338 static void
24339 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24340 {
24341 mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24342
24343 if (NREV_GT(pi->pubpi.phy_rev, 1))
24344 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24345 }
24346
24347 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24348 {
24349 u16 m0m1;
24350
24351 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24352
24353 return m0m1;
24354 }
24355
24356 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24357 {
24358 u16 m0m1 = (u16) ((m0 << 8) | m1);
24359
24360 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24361 wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24362 }
24363
24364 static void
24365 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24366 struct nphy_papd_restore_state *state, u8 core)
24367 {
24368 s32 tone_freq;
24369 u8 off_core;
24370 u16 mixgain = 0;
24371
24372 off_core = core ^ 0x1;
24373 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24374
24375 if (NREV_IS(pi->pubpi.phy_rev, 7)
24376 || NREV_GE(pi->pubpi.phy_rev, 8))
24377 wlc_phy_rfctrl_override_nphy_rev7(
24378 pi, (0x1 << 7),
24379 wlc_phy_read_lpf_bw_ctl_nphy
24380 (pi,
24381 0), 0, 0,
24382 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24383
24384 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24385 if (pi->pubpi.radiorev == 5)
24386 mixgain = (core == 0) ? 0x20 : 0x00;
24387 else if ((pi->pubpi.radiorev == 7)
24388 || (pi->pubpi.radiorev == 8))
24389 mixgain = 0x00;
24390 else if ((pi->pubpi.radiorev <= 4)
24391 || (pi->pubpi.radiorev == 6))
24392 mixgain = 0x00;
24393 } else {
24394 if ((pi->pubpi.radiorev == 4) ||
24395 (pi->pubpi.radiorev == 6))
24396 mixgain = 0x50;
24397 else if ((pi->pubpi.radiorev == 3)
24398 || (pi->pubpi.radiorev == 7)
24399 || (pi->pubpi.radiorev == 8))
24400 mixgain = 0x0;
24401 }
24402
24403 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24404 mixgain, (1 << core), 0,
24405 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24406
24407 wlc_phy_rfctrl_override_1tomany_nphy(
24408 pi,
24409 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24410 1, (1 << core), 0);
24411 wlc_phy_rfctrl_override_1tomany_nphy(
24412 pi,
24413 NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24414 0, (1 << off_core), 0);
24415
24416 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24417 0, 0x3, 0,
24418 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24419 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24420 (1 << core), 0,
24421 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24422 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24423 (1 << core), 0,
24424 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24425 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24426 (1 << core), 0,
24427 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24428 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24429 (1 << core), 0,
24430 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24431 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24432 (1 << core), 0,
24433 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24434 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24435 (1 << core), 0,
24436 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24437 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24438 (1 << core), 0,
24439 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24440
24441 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24442 0, (1 << core), 0,
24443 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24444 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24445 (1 << core), 0,
24446 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24447
24448 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24449 0xa6 : 0xa7);
24450 state->afeoverride[core] =
24451 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24452 state->afectrl[off_core] =
24453 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24454 state->afeoverride[off_core] =
24455 read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24456
24457 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24458 (0x1 << 2), 0);
24459 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24460 0xa5), (0x1 << 2), (0x1 << 2));
24461
24462 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24463 (0x1 << 2), (0x1 << 2));
24464 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24465 0x8f), (0x1 << 2), (0x1 << 2));
24466
24467 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24468 state->pwrup[core] =
24469 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24470 TXRXCOUPLE_2G_PWRUP);
24471 state->atten[core] =
24472 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24473 TXRXCOUPLE_2G_ATTEN);
24474 state->pwrup[off_core] =
24475 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24476 TXRXCOUPLE_2G_PWRUP);
24477 state->atten[off_core] =
24478 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24479 TXRXCOUPLE_2G_ATTEN);
24480
24481 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24482 TXRXCOUPLE_2G_PWRUP, 0xc);
24483
24484 if ((pi->pubpi.radiorev == 3) ||
24485 (pi->pubpi.radiorev == 4) ||
24486 (pi->pubpi.radiorev == 6))
24487 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24488 TXRXCOUPLE_2G_ATTEN, 0xf0);
24489 else if (pi->pubpi.radiorev == 5)
24490 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24491 TXRXCOUPLE_2G_ATTEN,
24492 (core == 0) ? 0xf7 : 0xf2);
24493 else if ((pi->pubpi.radiorev == 7)
24494 || (pi->pubpi.radiorev == 8))
24495 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24496 TXRXCOUPLE_2G_ATTEN, 0xf0);
24497
24498 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24499 TXRXCOUPLE_2G_PWRUP, 0x0);
24500 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24501 TXRXCOUPLE_2G_ATTEN, 0xff);
24502 } else {
24503 state->pwrup[core] =
24504 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24505 TXRXCOUPLE_5G_PWRUP);
24506 state->atten[core] =
24507 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24508 TXRXCOUPLE_5G_ATTEN);
24509 state->pwrup[off_core] =
24510 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24511 TXRXCOUPLE_5G_PWRUP);
24512 state->atten[off_core] =
24513 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24514 TXRXCOUPLE_5G_ATTEN);
24515
24516 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24517 TXRXCOUPLE_5G_PWRUP, 0xc);
24518
24519 if ((pi->pubpi.radiorev == 7)
24520 || (pi->pubpi.radiorev == 8))
24521 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24522 TXRXCOUPLE_5G_ATTEN, 0xf4);
24523
24524 else
24525 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24526 TXRXCOUPLE_5G_ATTEN, 0xf0);
24527
24528 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24529 TXRXCOUPLE_5G_PWRUP, 0x0);
24530 WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24531 TXRXCOUPLE_5G_ATTEN, 0xff);
24532 }
24533
24534 tone_freq = 4000;
24535
24536 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24537
24538 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24539 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24540
24541 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24542 0x2a4, (0x1 << 13), (1) << 13);
24543
24544 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24545 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24546
24547 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24548 0x2a4, (0x1 << 13), (0) << 13);
24549
24550 } else {
24551
24552 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24553
24554 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24555
24556 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24557
24558 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24559 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24560
24561 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24562 0xa6 : 0xa7);
24563 state->afeoverride[core] =
24564 read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24565
24566 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24567 (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24568 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24569 0xa5),
24570 (0x1 << 0) |
24571 (0x1 << 1) |
24572 (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24573
24574 state->vga_master[core] =
24575 READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24576 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24577 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24578 state->fbmix[core] =
24579 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24580 TXFBMIX_G);
24581 state->intpa_master[core] =
24582 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24583 INTPAG_MASTER);
24584
24585 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24586 0x03);
24587 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24588 INTPAG_MASTER, 0x04);
24589 } else {
24590 state->fbmix[core] =
24591 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24592 TXFBMIX_A);
24593 state->intpa_master[core] =
24594 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24595 INTPAA_MASTER);
24596
24597 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24598 0x03);
24599 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24600 INTPAA_MASTER, 0x04);
24601
24602 }
24603
24604 tone_freq = 4000;
24605
24606 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24607
24608 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24609 0x29b, (0x1 << 0), (1) << 0);
24610
24611 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24612 0x29b, (0x1 << 0), (0) << 0);
24613
24614 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24615 }
24616 }
24617
24618 static void
24619 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24620 struct nphy_papd_restore_state *state)
24621 {
24622 u8 core;
24623
24624 wlc_phy_stopplayback_nphy(pi);
24625
24626 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24627
24628 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24629
24630 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24631 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24632 TXRXCOUPLE_2G_PWRUP, 0);
24633 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24634 TXRXCOUPLE_2G_ATTEN,
24635 state->atten[core]);
24636 } else {
24637 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24638 TXRXCOUPLE_5G_PWRUP, 0);
24639 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24640 TXRXCOUPLE_5G_ATTEN,
24641 state->atten[core]);
24642 }
24643 }
24644
24645 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24646 wlc_phy_rfctrl_override_nphy_rev7(
24647 pi, (0x1 << 2),
24648 1, 0x3, 0,
24649 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24650 else
24651 wlc_phy_rfctrl_override_nphy_rev7(
24652 pi, (0x1 << 2),
24653 0, 0x3, 1,
24654 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24655
24656 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24657 0, 0x3, 1,
24658 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24659 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24660 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24661 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24662 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24663 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24664 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24665 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24666 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24667 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24668 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24669 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24670 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24671 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24672 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24673 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24674 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24675 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24676 NPHY_REV7_RFCTRLOVERRIDE_ID2);
24677 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24678 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24679 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24680 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24681 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24682 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24683 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24684 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24685 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24686 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24687 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24688 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24689
24690 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24691
24692 write_phy_reg(pi, (core == PHY_CORE_0) ?
24693 0xa6 : 0xa7, state->afectrl[core]);
24694 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24695 0xa5, state->afeoverride[core]);
24696 }
24697
24698 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24699 (state->mm & 0xff));
24700
24701 if (NREV_IS(pi->pubpi.phy_rev, 7)
24702 || NREV_GE(pi->pubpi.phy_rev, 8))
24703 wlc_phy_rfctrl_override_nphy_rev7(
24704 pi, (0x1 << 7), 0, 0,
24705 1,
24706 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24707 } else {
24708 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24709 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24710 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24711
24712 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24713 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24714
24715 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24716
24717 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24718 state->vga_master[core]);
24719 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24720 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24721 TXFBMIX_G, state->fbmix[core]);
24722 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24723 INTPAG_MASTER,
24724 state->intpa_master[core]);
24725 } else {
24726 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24727 TXFBMIX_A, state->fbmix[core]);
24728 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24729 INTPAA_MASTER,
24730 state->intpa_master[core]);
24731 }
24732
24733 write_phy_reg(pi, (core == PHY_CORE_0) ?
24734 0xa6 : 0xa7, state->afectrl[core]);
24735 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24736 0xa5, state->afeoverride[core]);
24737 }
24738
24739 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24740 (state->mm & 0xff));
24741
24742 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24743 }
24744 }
24745
24746 static void
24747 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24748 u32 end)
24749 {
24750 u32 *buf, *src, *dst, sz;
24751
24752 sz = end - start + 1;
24753
24754 buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24755 if (NULL == buf)
24756 return;
24757
24758 src = buf;
24759 dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24760
24761 wlc_phy_table_read_nphy(pi,
24762 (core ==
24763 PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24764 NPHY_TBL_ID_EPSILONTBL1),
24765 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24766
24767 do {
24768 u32 phy_a1, phy_a2;
24769 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24770
24771 phy_a1 = end - min(end, (winsz >> 1));
24772 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24773 end + (winsz >> 1));
24774 phy_a3 = phy_a2 - phy_a1 + 1;
24775 phy_a6 = 0;
24776 phy_a7 = 0;
24777
24778 do {
24779 wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24780 &phy_a5);
24781 phy_a6 += phy_a4;
24782 phy_a7 += phy_a5;
24783 } while (phy_a2-- != phy_a1);
24784
24785 phy_a6 /= phy_a3;
24786 phy_a7 /= phy_a3;
24787 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24788 } while (end-- != start);
24789
24790 wlc_phy_table_write_nphy(pi,
24791 (core ==
24792 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24793 NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24794
24795 kfree(buf);
24796 }
24797
24798 static void
24799 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24800 enum phy_cal_mode cal_mode, u8 core)
24801 {
24802 u16 phy_a1, phy_a2, phy_a3;
24803 u16 phy_a4, phy_a5;
24804 bool phy_a6;
24805 u8 phy_a7, m[2];
24806 u32 phy_a8 = 0;
24807 struct nphy_txgains phy_a9;
24808
24809 if (NREV_LT(pi->pubpi.phy_rev, 3))
24810 return;
24811
24812 phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24813
24814 phy_a6 = ((cal_mode == CAL_GCTRL)
24815 || (cal_mode == CAL_SOFT)) ? true : false;
24816
24817 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24818
24819 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24820
24821 if (CHSPEC_IS2G(pi->radio_chanspec))
24822 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24823 (phy_a9.txgm[core] << 12) |
24824 (phy_a9.pga[core] << 8) |
24825 (txgains->gains.pad[core] << 3) |
24826 (phy_a9.ipa[core]));
24827 else
24828 phy_a5 = ((phy_a9.txlpf[core] << 15) |
24829 (phy_a9.txgm[core] << 12) |
24830 (txgains->gains.pga[core] << 8) |
24831 (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24832
24833 wlc_phy_rfctrl_override_1tomany_nphy(
24834 pi,
24835 NPHY_REV7_RfctrlOverride_cmd_txgain,
24836 phy_a5, (1 << core), 0);
24837
24838 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24839 if ((pi->pubpi.radiorev <= 4)
24840 || (pi->pubpi.radiorev == 6))
24841 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24842 60 : 79;
24843 else
24844 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24845 45 : 64;
24846 } else {
24847 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24848 }
24849
24850 m[phy_a7] = 0;
24851 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24852
24853 phy_a2 = 63;
24854
24855 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24856 if ((pi->pubpi.radiorev == 4)
24857 || (pi->pubpi.radiorev == 6)) {
24858 phy_a1 = 30;
24859 phy_a3 = 30;
24860 } else {
24861 phy_a1 = 25;
24862 phy_a3 = 25;
24863 }
24864 } else {
24865 if ((pi->pubpi.radiorev == 5)
24866 || (pi->pubpi.radiorev == 7)
24867 || (pi->pubpi.radiorev == 8)) {
24868 phy_a1 = 25;
24869 phy_a3 = 25;
24870 } else {
24871 phy_a1 = 35;
24872 phy_a3 = 35;
24873 }
24874 }
24875
24876 if (cal_mode == CAL_GCTRL) {
24877 if ((pi->pubpi.radiorev == 5)
24878 && (CHSPEC_IS2G(pi->radio_chanspec)))
24879 phy_a1 = 55;
24880 else if (((pi->pubpi.radiorev == 7) &&
24881 (CHSPEC_IS2G(pi->radio_chanspec))) ||
24882 ((pi->pubpi.radiorev == 8) &&
24883 (CHSPEC_IS2G(pi->radio_chanspec))))
24884 phy_a1 = 60;
24885 else
24886 phy_a1 = 63;
24887
24888 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24889
24890 phy_a1 = 35;
24891 phy_a3 = 35;
24892 }
24893
24894 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24895 0x29b, (0x1 << 0), (1) << 0);
24896
24897 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24898 0x29b, (0x1 << 0), (0) << 0);
24899
24900 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24901 0x2a4, (0x1 << 13), (1) << 13);
24902
24903 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24904 0x2a4, (0x1 << 13), (0) << 13);
24905
24906 write_phy_reg(pi, 0x2a1, 0x80);
24907 write_phy_reg(pi, 0x2a2, 0x100);
24908
24909 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24910 0x2a4, (0x7 << 4), (11) << 4);
24911
24912 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24913 0x2a4, (0x7 << 8), (11) << 8);
24914
24915 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24916 0x2a4, (0x7 << 0), (0x3) << 0);
24917
24918 write_phy_reg(pi, 0x2e5, 0x20);
24919
24920 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24921
24922 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24923
24924 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24925
24926 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24927 1, ((core == 0) ? 1 : 2), 0,
24928 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24929 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24930 0, ((core == 0) ? 2 : 1), 0,
24931 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24932
24933 write_phy_reg(pi, 0x2be, 1);
24934 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24935
24936 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24937 0, 0x3, 0,
24938 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24939
24940 wlc_phy_table_write_nphy(pi,
24941 (core ==
24942 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24943 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24944 32, &phy_a8);
24945
24946 if (cal_mode != CAL_GCTRL) {
24947 if (CHSPEC_IS5G(pi->radio_chanspec))
24948 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24949 }
24950
24951 wlc_phy_rfctrl_override_1tomany_nphy(
24952 pi,
24953 NPHY_REV7_RfctrlOverride_cmd_txgain,
24954 phy_a5, (1 << core), 1);
24955
24956 } else {
24957
24958 if (txgains) {
24959 if (txgains->useindex) {
24960 phy_a4 = 15 - ((txgains->index) >> 3);
24961 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24962 if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24963 pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24964 phy_a5 = 0x10f7 | (phy_a4 << 8);
24965 } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24966 phy_a5 = 0x00f7 | (phy_a4 << 8);
24967 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24968 phy_a5 = 0x10f7 | (phy_a4 << 8);
24969 } else {
24970 phy_a5 = 0x50f7 | (phy_a4 << 8);
24971 }
24972 } else {
24973 phy_a5 = 0x70f7 | (phy_a4 << 8);
24974 }
24975 wlc_phy_rfctrl_override_nphy(pi,
24976 (0x1 << 13),
24977 phy_a5,
24978 (1 << core), 0);
24979 } else {
24980 wlc_phy_rfctrl_override_nphy(pi,
24981 (0x1 << 13),
24982 0x5bf7,
24983 (1 << core), 0);
24984 }
24985 }
24986
24987 if (CHSPEC_IS2G(pi->radio_chanspec))
24988 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24989 else
24990 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24991
24992 m[phy_a7] = 0;
24993 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24994
24995 phy_a2 = 63;
24996
24997 if (cal_mode == CAL_FULL) {
24998 phy_a1 = 25;
24999 phy_a3 = 25;
25000 } else if (cal_mode == CAL_SOFT) {
25001 phy_a1 = 25;
25002 phy_a3 = 25;
25003 } else if (cal_mode == CAL_GCTRL) {
25004 phy_a1 = 63;
25005 phy_a3 = 25;
25006 } else {
25007
25008 phy_a1 = 25;
25009 phy_a3 = 25;
25010 }
25011
25012 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25013 0x29b, (0x1 << 0), (1) << 0);
25014
25015 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25016 0x29b, (0x1 << 0), (0) << 0);
25017
25018 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25019 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25020 0x2a4, (0x1 << 13), (1) << 13);
25021
25022 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25023 0x2a4, (0x1 << 13), (0) << 13);
25024
25025 write_phy_reg(pi, 0x2a1, 0x20);
25026 write_phy_reg(pi, 0x2a2, 0x60);
25027
25028 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25029 0x2a4, (0xf << 4), (9) << 4);
25030
25031 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25032 0x2a4, (0xf << 8), (9) << 8);
25033
25034 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25035 0x2a4, (0xf << 0), (0x2) << 0);
25036
25037 write_phy_reg(pi, 0x2e5, 0x20);
25038 } else {
25039 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25040 0x2a4, (0x1 << 11), (1) << 11);
25041
25042 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25043 0x2a4, (0x1 << 11), (0) << 11);
25044
25045 write_phy_reg(pi, 0x2a1, 0x80);
25046 write_phy_reg(pi, 0x2a2, 0x600);
25047
25048 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25049 0x2a4, (0x7 << 4), (0) << 4);
25050
25051 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25052 0x2a4, (0x7 << 8), (0) << 8);
25053
25054 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25055 0x2a4, (0x7 << 0), (0x3) << 0);
25056
25057 mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25058
25059 }
25060
25061 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25062
25063 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25064
25065 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25066
25067 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25068
25069 write_phy_reg(pi, 0x2be, 1);
25070 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25071
25072 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25073
25074 wlc_phy_table_write_nphy(pi,
25075 (core ==
25076 PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25077 : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25078 32, &phy_a8);
25079
25080 if (cal_mode != CAL_GCTRL)
25081 wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25082 }
25083 }
25084
25085 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25086 {
25087 int phy_a1;
25088 int phy_a2;
25089 bool phy_a3;
25090 struct nphy_ipa_txcalgains phy_a4;
25091 bool phy_a5 = false;
25092 bool phy_a6 = true;
25093 s32 phy_a7, phy_a8;
25094 u32 phy_a9;
25095 int phy_a10;
25096 bool phy_a11 = false;
25097 int phy_a12;
25098 u8 phy_a13 = 0;
25099 u8 phy_a14;
25100 u8 *phy_a15 = NULL;
25101
25102 phy_a4.useindex = true;
25103 phy_a12 = start_gain;
25104
25105 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25106
25107 phy_a2 = 20;
25108 phy_a1 = 1;
25109
25110 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25111 if (pi->pubpi.radiorev == 5) {
25112
25113 phy_a15 = pad_gain_codes_used_2057rev5;
25114 phy_a13 =
25115 ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25116
25117 } else if ((pi->pubpi.radiorev == 7)
25118 || (pi->pubpi.radiorev == 8)) {
25119
25120 phy_a15 = pad_gain_codes_used_2057rev7;
25121 phy_a13 =
25122 ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25123
25124 } else {
25125
25126 phy_a15 = pad_all_gain_codes_2057;
25127 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25128 1;
25129 }
25130
25131 } else {
25132
25133 phy_a15 = pga_all_gain_codes_2057;
25134 phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25135 }
25136
25137 phy_a14 = 0;
25138
25139 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25140 if (CHSPEC_IS2G(pi->radio_chanspec))
25141 phy_a4.gains.pad[core] =
25142 (u16) phy_a15[phy_a12];
25143 else
25144 phy_a4.gains.pga[core] =
25145 (u16) phy_a15[phy_a12];
25146
25147 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25148
25149 wlc_phy_table_read_nphy(pi,
25150 (core ==
25151 PHY_CORE_0 ?
25152 NPHY_TBL_ID_EPSILONTBL0 :
25153 NPHY_TBL_ID_EPSILONTBL1), 1,
25154 63, 32, &phy_a9);
25155
25156 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25157
25158 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25159 (phy_a8 == 4095) || (phy_a8 == -4096));
25160
25161 if (!phy_a6 && (phy_a3 != phy_a5)) {
25162 if (!phy_a3)
25163 phy_a12 -= (u8) phy_a1;
25164
25165 phy_a11 = true;
25166 break;
25167 }
25168
25169 if (phy_a3)
25170 phy_a12 += (u8) phy_a1;
25171 else
25172 phy_a12 -= (u8) phy_a1;
25173
25174 if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25175 if (phy_a12 < phy_a14)
25176 phy_a12 = phy_a14;
25177 else
25178 phy_a12 = phy_a13;
25179
25180 phy_a11 = true;
25181 break;
25182 }
25183
25184 phy_a6 = false;
25185 phy_a5 = phy_a3;
25186 }
25187
25188 } else {
25189 phy_a2 = 10;
25190 phy_a1 = 8;
25191 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25192 phy_a4.index = (u8) phy_a12;
25193 wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25194
25195 wlc_phy_table_read_nphy(pi,
25196 (core ==
25197 PHY_CORE_0 ?
25198 NPHY_TBL_ID_EPSILONTBL0 :
25199 NPHY_TBL_ID_EPSILONTBL1), 1,
25200 63, 32, &phy_a9);
25201
25202 wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25203
25204 phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25205 (phy_a8 == 4095) || (phy_a8 == -4096));
25206
25207 if (!phy_a6 && (phy_a3 != phy_a5)) {
25208 if (!phy_a3)
25209 phy_a12 -= (u8) phy_a1;
25210
25211 phy_a11 = true;
25212 break;
25213 }
25214
25215 if (phy_a3)
25216 phy_a12 += (u8) phy_a1;
25217 else
25218 phy_a12 -= (u8) phy_a1;
25219
25220 if ((phy_a12 < 0) || (phy_a12 > 127)) {
25221 if (phy_a12 < 0)
25222 phy_a12 = 0;
25223 else
25224 phy_a12 = 127;
25225
25226 phy_a11 = true;
25227 break;
25228 }
25229
25230 phy_a6 = false;
25231 phy_a5 = phy_a3;
25232 }
25233
25234 }
25235
25236 if (NREV_GE(pi->pubpi.phy_rev, 7))
25237 return (u8) phy_a15[phy_a12];
25238 else
25239 return (u8) phy_a12;
25240
25241 }
25242
25243 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25244 {
25245 struct nphy_ipa_txcalgains phy_b1[2];
25246 struct nphy_papd_restore_state phy_b2;
25247 bool phy_b3;
25248 u8 phy_b4;
25249 u8 phy_b5;
25250 s16 phy_b6, phy_b7, phy_b8;
25251 u16 phy_b9;
25252 s16 phy_b10, phy_b11, phy_b12;
25253
25254 phy_b11 = 0;
25255 phy_b12 = 0;
25256 phy_b7 = 0;
25257 phy_b8 = 0;
25258 phy_b6 = 0;
25259
25260 if (pi->nphy_papd_skip == 1)
25261 return;
25262
25263 phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25264 MCTL_EN_MAC));
25265 if (!phy_b3)
25266 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25267
25268 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25269
25270 pi->nphy_force_papd_cal = false;
25271
25272 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25273 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25274 wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25275
25276 pi->nphy_papd_last_cal = pi->sh->now;
25277 pi->nphy_papd_recal_counter++;
25278
25279 phy_b4 = pi->nphy_txpwrctrl;
25280 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25281
25282 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25283 nphy_papd_scaltbl);
25284 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25285 nphy_papd_scaltbl);
25286
25287 phy_b9 = read_phy_reg(pi, 0x01);
25288 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25289
25290 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25291 s32 i, val = 0;
25292 for (i = 0; i < 64; i++)
25293 wlc_phy_table_write_nphy(pi,
25294 ((phy_b5 ==
25295 PHY_CORE_0) ?
25296 NPHY_TBL_ID_EPSILONTBL0 :
25297 NPHY_TBL_ID_EPSILONTBL1), 1,
25298 i, 32, &val);
25299 }
25300
25301 wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25302
25303 phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25304 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25305 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25306
25307 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25308 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25309 if ((pi->pubpi.radiorev == 3)
25310 || (pi->pubpi.radiorev == 4)
25311 || (pi->pubpi.radiorev == 6)) {
25312 pi->nphy_papd_cal_gain_index[phy_b5] =
25313 23;
25314 } else if (pi->pubpi.radiorev == 5) {
25315 pi->nphy_papd_cal_gain_index[phy_b5] =
25316 0;
25317 pi->nphy_papd_cal_gain_index[phy_b5] =
25318 wlc_phy_a3_nphy(
25319 pi,
25320 pi->
25321 nphy_papd_cal_gain_index
25322 [phy_b5],
25323 phy_b5);
25324
25325 } else if ((pi->pubpi.radiorev == 7)
25326 || (pi->pubpi.radiorev == 8)) {
25327
25328 pi->nphy_papd_cal_gain_index[phy_b5] =
25329 0;
25330 pi->nphy_papd_cal_gain_index[phy_b5] =
25331 wlc_phy_a3_nphy(
25332 pi,
25333 pi->
25334 nphy_papd_cal_gain_index
25335 [phy_b5],
25336 phy_b5);
25337
25338 }
25339
25340 phy_b1[phy_b5].gains.pad[phy_b5] =
25341 pi->nphy_papd_cal_gain_index[phy_b5];
25342
25343 } else {
25344 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25345 pi->nphy_papd_cal_gain_index[phy_b5] =
25346 wlc_phy_a3_nphy(
25347 pi,
25348 pi->
25349 nphy_papd_cal_gain_index
25350 [phy_b5], phy_b5);
25351 phy_b1[phy_b5].gains.pga[phy_b5] =
25352 pi->nphy_papd_cal_gain_index[phy_b5];
25353 }
25354 } else {
25355 phy_b1[phy_b5].useindex = true;
25356 phy_b1[phy_b5].index = 16;
25357 phy_b1[phy_b5].index =
25358 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25359 phy_b5);
25360
25361 pi->nphy_papd_cal_gain_index[phy_b5] =
25362 15 - ((phy_b1[phy_b5].index) >> 3);
25363 }
25364
25365 switch (pi->nphy_papd_cal_type) {
25366 case 0:
25367 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25368 break;
25369 case 1:
25370 wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25371 break;
25372 }
25373
25374 if (NREV_GE(pi->pubpi.phy_rev, 7))
25375 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25376 }
25377
25378 if (NREV_LT(pi->pubpi.phy_rev, 7))
25379 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25380
25381 for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25382 int eps_offset = 0;
25383
25384 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25385 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25386 if (pi->pubpi.radiorev == 3)
25387 eps_offset = -2;
25388 else if (pi->pubpi.radiorev == 5)
25389 eps_offset = 3;
25390 else
25391 eps_offset = -1;
25392 } else {
25393 eps_offset = 2;
25394 }
25395
25396 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25397 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25398 phy_b10 = 0;
25399 if ((pi->pubpi.radiorev == 3) ||
25400 (pi->pubpi.radiorev == 4) ||
25401 (pi->pubpi.radiorev == 6)) {
25402 phy_b12 = -(
25403 nphy_papd_padgain_dlt_2g_2057rev3n4
25404 [phy_b8] + 1) / 2;
25405 phy_b10 = -1;
25406 } else if (pi->pubpi.radiorev == 5) {
25407 phy_b12 = -(
25408 nphy_papd_padgain_dlt_2g_2057rev5
25409 [phy_b8] + 1) / 2;
25410 } else if ((pi->pubpi.radiorev == 7) ||
25411 (pi->pubpi.radiorev == 8)) {
25412 phy_b12 = -(
25413 nphy_papd_padgain_dlt_2g_2057rev7
25414 [phy_b8] + 1) / 2;
25415 }
25416 } else {
25417 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25418 if ((pi->pubpi.radiorev == 3) ||
25419 (pi->pubpi.radiorev == 4) ||
25420 (pi->pubpi.radiorev == 6))
25421 phy_b11 =
25422 -(nphy_papd_pgagain_dlt_5g_2057
25423 [phy_b7]
25424 + 1) / 2;
25425 else if ((pi->pubpi.radiorev == 7)
25426 || (pi->pubpi.radiorev == 8))
25427 phy_b11 = -(
25428 nphy_papd_pgagain_dlt_5g_2057rev7
25429 [phy_b7] + 1) / 2;
25430
25431 phy_b10 = -9;
25432 }
25433
25434 if (CHSPEC_IS2G(pi->radio_chanspec))
25435 phy_b6 =
25436 -60 + 27 + eps_offset + phy_b12 +
25437 phy_b10;
25438 else
25439 phy_b6 =
25440 -60 + 27 + eps_offset + phy_b11 +
25441 phy_b10;
25442
25443 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25444 0x29c, (0x1ff << 7), (phy_b6) << 7);
25445
25446 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25447 } else {
25448 if (NREV_LT(pi->pubpi.phy_rev, 5))
25449 eps_offset = 4;
25450 else
25451 eps_offset = 2;
25452
25453 phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25454
25455 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25456 phy_b11 =
25457 -(nphy_papd_pga_gain_delta_ipa_2g[
25458 phy_b7] +
25459 1) / 2;
25460 phy_b10 = 0;
25461 } else {
25462 phy_b11 =
25463 -(nphy_papd_pga_gain_delta_ipa_5g[
25464 phy_b7] +
25465 1) / 2;
25466 phy_b10 = -9;
25467 }
25468
25469 phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25470
25471 mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25472 0x29c, (0x1ff << 7), (phy_b6) << 7);
25473
25474 pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25475 }
25476 }
25477
25478 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25479 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25480
25481 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25482 0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25483
25484 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25485 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25486 0x2a4, (0x1 << 13), (0) << 13);
25487
25488 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25489 0x2a4, (0x1 << 13), (0) << 13);
25490
25491 } else {
25492 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25493 0x2a4, (0x1 << 11), (0) << 11);
25494
25495 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25496 0x2a4, (0x1 << 11), (0) << 11);
25497
25498 }
25499 pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25500
25501 write_phy_reg(pi, 0x01, phy_b9);
25502
25503 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25504
25505 wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25506 if (phy_b4 == PHY_TPC_HW_OFF) {
25507 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25508 (s8) (pi->nphy_txpwrindex[0].
25509 index_internal), false);
25510 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25511 (s8) (pi->nphy_txpwrindex[1].
25512 index_internal), false);
25513 }
25514
25515 wlc_phy_stay_in_carriersearch_nphy(pi, false);
25516
25517 if (!phy_b3)
25518 wlapi_enable_mac(pi->sh->physhim);
25519 }
25520
25521 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25522 {
25523 struct nphy_txgains target_gain;
25524 u8 tx_pwr_ctrl_state;
25525 bool fullcal = true;
25526 bool restore_tx_gain = false;
25527 bool mphase;
25528
25529 if (PHY_MUTED(pi))
25530 return;
25531
25532 if (caltype == PHY_PERICAL_AUTO)
25533 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25534 else if (caltype == PHY_PERICAL_PARTIAL)
25535 fullcal = false;
25536
25537 if (pi->cal_type_override != PHY_PERICAL_AUTO)
25538 fullcal =
25539 (pi->cal_type_override ==
25540 PHY_PERICAL_FULL) ? true : false;
25541
25542 if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25543 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25544 wlc_phy_cal_perical_mphase_restart(pi);
25545 }
25546
25547 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25548 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25549
25550 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25551
25552 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25553
25554 if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25555 (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25556 pi->nphy_cal_orig_pwr_idx[0] =
25557 (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25558 pi->nphy_cal_orig_pwr_idx[1] =
25559 (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25560
25561 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25562 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25563 0x110, 16,
25564 pi->nphy_cal_orig_tx_gain);
25565 } else {
25566 pi->nphy_cal_orig_tx_gain[0] = 0;
25567 pi->nphy_cal_orig_tx_gain[1] = 0;
25568 }
25569 }
25570 target_gain = wlc_phy_get_tx_gain_nphy(pi);
25571 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25572 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25573
25574 if (pi->antsel_type == ANTSEL_2x3)
25575 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25576
25577 mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25578 if (!mphase) {
25579
25580 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25581 wlc_phy_precal_txgain_nphy(pi);
25582 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25583 restore_tx_gain = true;
25584
25585 target_gain = pi->nphy_cal_target_gain;
25586 }
25587 if (0 ==
25588 wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25589 mphase)) {
25590 if (PHY_IPA(pi))
25591 wlc_phy_a4(pi, true);
25592
25593 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25594 wlapi_enable_mac(pi->sh->physhim);
25595 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25596 10000);
25597 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25598 wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25599
25600 if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25601 (pi->first_cal_after_assoc ||
25602 (pi->cal_type_override ==
25603 PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25604 wlc_phy_savecal_nphy(pi);
25605
25606 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25607
25608 pi->nphy_perical_last = pi->sh->now;
25609 }
25610 }
25611 if (caltype != PHY_PERICAL_AUTO)
25612 wlc_phy_rssi_cal_nphy(pi);
25613
25614 if (pi->first_cal_after_assoc
25615 || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25616 pi->first_cal_after_assoc = false;
25617 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25618 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25619 }
25620
25621 if (NREV_GE(pi->pubpi.phy_rev, 3))
25622 wlc_phy_radio205x_vcocal_nphy(pi);
25623 } else {
25624 switch (pi->mphase_cal_phase_id) {
25625 case MPHASE_CAL_STATE_INIT:
25626 pi->nphy_perical_last = pi->sh->now;
25627 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25628
25629 if (NREV_GE(pi->pubpi.phy_rev, 3))
25630 wlc_phy_precal_txgain_nphy(pi);
25631
25632 pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25633 pi->mphase_cal_phase_id++;
25634 break;
25635
25636 case MPHASE_CAL_STATE_TXPHASE0:
25637 case MPHASE_CAL_STATE_TXPHASE1:
25638 case MPHASE_CAL_STATE_TXPHASE2:
25639 case MPHASE_CAL_STATE_TXPHASE3:
25640 case MPHASE_CAL_STATE_TXPHASE4:
25641 case MPHASE_CAL_STATE_TXPHASE5:
25642 if ((pi->radar_percal_mask & 0x10) != 0)
25643 pi->nphy_rxcal_active = true;
25644
25645 if (wlc_phy_cal_txiqlo_nphy
25646 (pi, pi->nphy_cal_target_gain, fullcal,
25647 true) != 0) {
25648
25649 wlc_phy_cal_perical_mphase_reset(pi);
25650 break;
25651 }
25652
25653 if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25654 (pi->mphase_cal_phase_id ==
25655 MPHASE_CAL_STATE_TXPHASE4))
25656 pi->mphase_cal_phase_id += 2;
25657 else
25658 pi->mphase_cal_phase_id++;
25659 break;
25660
25661 case MPHASE_CAL_STATE_PAPDCAL:
25662 if ((pi->radar_percal_mask & 0x2) != 0)
25663 pi->nphy_rxcal_active = true;
25664
25665 if (PHY_IPA(pi))
25666 wlc_phy_a4(pi, true);
25667
25668 pi->mphase_cal_phase_id++;
25669 break;
25670
25671 case MPHASE_CAL_STATE_RXCAL:
25672 if ((pi->radar_percal_mask & 0x1) != 0)
25673 pi->nphy_rxcal_active = true;
25674 if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25675 (pi->first_cal_after_assoc ||
25676 (pi->cal_type_override ==
25677 PHY_PERICAL_FULL)) ? 2 : 0,
25678 false) == 0)
25679 wlc_phy_savecal_nphy(pi);
25680
25681 pi->mphase_cal_phase_id++;
25682 break;
25683
25684 case MPHASE_CAL_STATE_RSSICAL:
25685 if ((pi->radar_percal_mask & 0x4) != 0)
25686 pi->nphy_rxcal_active = true;
25687 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25688 wlc_phy_rssi_cal_nphy(pi);
25689
25690 if (NREV_GE(pi->pubpi.phy_rev, 3))
25691 wlc_phy_radio205x_vcocal_nphy(pi);
25692
25693 restore_tx_gain = true;
25694
25695 if (pi->first_cal_after_assoc)
25696 pi->mphase_cal_phase_id++;
25697 else
25698 wlc_phy_cal_perical_mphase_reset(pi);
25699
25700 break;
25701
25702 case MPHASE_CAL_STATE_IDLETSSI:
25703 if ((pi->radar_percal_mask & 0x8) != 0)
25704 pi->nphy_rxcal_active = true;
25705
25706 if (pi->first_cal_after_assoc) {
25707 pi->first_cal_after_assoc = false;
25708 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25709 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25710 }
25711
25712 wlc_phy_cal_perical_mphase_reset(pi);
25713 break;
25714
25715 default:
25716 wlc_phy_cal_perical_mphase_reset(pi);
25717 break;
25718 }
25719 }
25720
25721 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25722 if (restore_tx_gain) {
25723 if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25724
25725 wlc_phy_txpwr_index_nphy(pi, 1,
25726 pi->
25727 nphy_cal_orig_pwr_idx
25728 [0], false);
25729 wlc_phy_txpwr_index_nphy(pi, 2,
25730 pi->
25731 nphy_cal_orig_pwr_idx
25732 [1], false);
25733
25734 pi->nphy_txpwrindex[0].index = -1;
25735 pi->nphy_txpwrindex[1].index = -1;
25736 } else {
25737 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25738 (s8) (pi->
25739 nphy_txpwrindex
25740 [0].
25741 index_internal),
25742 false);
25743 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25744 (s8) (pi->
25745 nphy_txpwrindex
25746 [1].
25747 index_internal),
25748 false);
25749 }
25750 }
25751 }
25752
25753 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25754 wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25755 wlapi_enable_mac(pi->sh->physhim);
25756 }
25757
25758 int
25759 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25760 bool fullcal, bool mphase)
25761 {
25762 u16 val;
25763 u16 tbl_buf[11];
25764 u8 cal_cnt;
25765 u16 cal_cmd;
25766 u8 num_cals, max_cal_cmds;
25767 u16 core_no, cal_type;
25768 u16 diq_start = 0;
25769 u8 phy_bw;
25770 u16 max_val;
25771 u16 tone_freq;
25772 u16 gain_save[2];
25773 u16 cal_gain[2];
25774 struct nphy_iqcal_params cal_params[2];
25775 u32 tbl_len;
25776 void *tbl_ptr;
25777 bool ladder_updated[2];
25778 u8 mphase_cal_lastphase = 0;
25779 int bcmerror = 0;
25780 bool phyhang_avoid_state = false;
25781
25782 u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25783 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25784 0x1902,
25785 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25786 0x6407
25787 };
25788
25789 u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25790 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25791 0x3200,
25792 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25793 0x6407
25794 };
25795
25796 u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25797 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25798 0x1202,
25799 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25800 0x4707
25801 };
25802
25803 u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25804 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25805 0x2300,
25806 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25807 0x4707
25808 };
25809
25810 u16 tbl_tx_iqlo_cal_startcoefs[] = {
25811 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25812 0x0000
25813 };
25814
25815 u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25816 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25817 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25818 };
25819
25820 u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25821 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25822 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25823 };
25824
25825 u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25826 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25827 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25828 0x0000
25829 };
25830
25831 u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25832 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25833 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25834 };
25835
25836 u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25837 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25838 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25839 };
25840
25841 wlc_phy_stay_in_carriersearch_nphy(pi, true);
25842
25843 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25844 phyhang_avoid_state = pi->phyhang_avoid;
25845 pi->phyhang_avoid = false;
25846 }
25847
25848 if (CHSPEC_IS40(pi->radio_chanspec))
25849 phy_bw = 40;
25850 else
25851 phy_bw = 20;
25852
25853 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25854
25855 for (core_no = 0; core_no <= 1; core_no++) {
25856 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25857 &cal_params[core_no]);
25858 cal_gain[core_no] = cal_params[core_no].cal_gain;
25859 }
25860
25861 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25862
25863 wlc_phy_txcal_radio_setup_nphy(pi);
25864
25865 wlc_phy_txcal_physetup_nphy(pi);
25866
25867 ladder_updated[0] = ladder_updated[1] = false;
25868 if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25869 (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25870 && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25871
25872 if (phy_bw == 40) {
25873 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25874 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25875 } else {
25876 tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25877 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25878 }
25879 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25880 16, tbl_ptr);
25881
25882 if (phy_bw == 40) {
25883 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25884 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25885 } else {
25886 tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25887 tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25888 }
25889 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25890 16, tbl_ptr);
25891 }
25892
25893 if (NREV_GE(pi->pubpi.phy_rev, 7))
25894 write_phy_reg(pi, 0xc2, 0x8ad9);
25895 else
25896 write_phy_reg(pi, 0xc2, 0x8aa9);
25897
25898 max_val = 250;
25899 tone_freq = (phy_bw == 20) ? 2500 : 5000;
25900
25901 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25902 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25903 bcmerror = 0;
25904 } else {
25905 bcmerror =
25906 wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25907 false);
25908 }
25909
25910 if (bcmerror == 0) {
25911
25912 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25913 tbl_ptr = pi->mphase_txcal_bestcoeffs;
25914 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25915 if (NREV_LT(pi->pubpi.phy_rev, 3))
25916 tbl_len -= 2;
25917 } else {
25918 if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25919
25920 tbl_ptr = pi->nphy_txiqlocal_bestc;
25921 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25922 if (NREV_LT(pi->pubpi.phy_rev, 3))
25923 tbl_len -= 2;
25924 } else {
25925
25926 fullcal = true;
25927
25928 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25929 tbl_ptr =
25930 tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25931 tbl_len = ARRAY_SIZE(
25932 tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25933 } else {
25934 tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25935 tbl_len = ARRAY_SIZE(
25936 tbl_tx_iqlo_cal_startcoefs);
25937 }
25938 }
25939 }
25940 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25941 16, tbl_ptr);
25942
25943 if (fullcal) {
25944 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25945 ARRAY_SIZE(
25946 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25947 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25948 } else {
25949 max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25950 ARRAY_SIZE(
25951 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25952 ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25953 }
25954
25955 if (mphase) {
25956 cal_cnt = pi->mphase_txcal_cmdidx;
25957 if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25958 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25959 else
25960 num_cals = max_cal_cmds;
25961 } else {
25962 cal_cnt = 0;
25963 num_cals = max_cal_cmds;
25964 }
25965
25966 for (; cal_cnt < num_cals; cal_cnt++) {
25967
25968 if (fullcal) {
25969 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25970 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25971 [cal_cnt] :
25972 tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25973 } else {
25974 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25975 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25976 cal_cnt]
25977 : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25978 }
25979
25980 core_no = ((cal_cmd & 0x3000) >> 12);
25981 cal_type = ((cal_cmd & 0x0F00) >> 8);
25982
25983 if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25984 (NREV_IS(pi->pubpi.phy_rev, 5) &&
25985 PHY_IPA(pi)
25986 && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25987 if (!ladder_updated[core_no]) {
25988 wlc_phy_update_txcal_ladder_nphy(
25989 pi,
25990 core_no);
25991 ladder_updated[core_no] = true;
25992 }
25993 }
25994
25995 val =
25996 (cal_params[core_no].
25997 ncorr[cal_type] << 8) | NPHY_N_GCTL;
25998 write_phy_reg(pi, 0xc1, val);
25999
26000 if ((cal_type == 1) || (cal_type == 3)
26001 || (cal_type == 4)) {
26002
26003 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26004 1, 69 + core_no, 16,
26005 tbl_buf);
26006
26007 diq_start = tbl_buf[0];
26008
26009 tbl_buf[0] = 0;
26010 wlc_phy_table_write_nphy(pi,
26011 NPHY_TBL_ID_IQLOCAL, 1,
26012 69 + core_no, 16,
26013 tbl_buf);
26014 }
26015
26016 write_phy_reg(pi, 0xc0, cal_cmd);
26017
26018 SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26019 20000);
26020 if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26021 "HW error: txiq calib"))
26022 return -EIO;
26023
26024 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26025 tbl_len, 96, 16, tbl_buf);
26026 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26027 tbl_len, 64, 16, tbl_buf);
26028
26029 if ((cal_type == 1) || (cal_type == 3)
26030 || (cal_type == 4)) {
26031
26032 tbl_buf[0] = diq_start;
26033
26034 }
26035
26036 }
26037
26038 if (mphase) {
26039 pi->mphase_txcal_cmdidx = num_cals;
26040 if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26041 pi->mphase_txcal_cmdidx = 0;
26042 }
26043
26044 mphase_cal_lastphase =
26045 (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26046 MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26047
26048 if (!mphase
26049 || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26050
26051 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26052 16, tbl_buf);
26053 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26054 16, tbl_buf);
26055
26056 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26057
26058 tbl_buf[0] = 0;
26059 tbl_buf[1] = 0;
26060 tbl_buf[2] = 0;
26061 tbl_buf[3] = 0;
26062
26063 }
26064 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26065 16, tbl_buf);
26066
26067 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26068 16, tbl_buf);
26069 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26070 16, tbl_buf);
26071
26072 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26073 16, tbl_buf);
26074
26075 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26076 if (NREV_LT(pi->pubpi.phy_rev, 3))
26077 tbl_len -= 2;
26078
26079 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26080 tbl_len, 96, 16,
26081 pi->nphy_txiqlocal_bestc);
26082
26083 pi->nphy_txiqlocal_coeffsvalid = true;
26084 pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26085 } else {
26086 tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26087 if (NREV_LT(pi->pubpi.phy_rev, 3))
26088 tbl_len -= 2;
26089
26090 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26091 tbl_len, 96, 16,
26092 pi->mphase_txcal_bestcoeffs);
26093 }
26094
26095 wlc_phy_stopplayback_nphy(pi);
26096
26097 write_phy_reg(pi, 0xc2, 0x0000);
26098
26099 }
26100
26101 wlc_phy_txcal_phycleanup_nphy(pi);
26102
26103 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26104 gain_save);
26105
26106 wlc_phy_txcal_radio_cleanup_nphy(pi);
26107
26108 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26109 if (!mphase
26110 || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26111 wlc_phy_tx_iq_war_nphy(pi);
26112 }
26113
26114 if (NREV_GE(pi->pubpi.phy_rev, 4))
26115 pi->phyhang_avoid = phyhang_avoid_state;
26116
26117 wlc_phy_stay_in_carriersearch_nphy(pi, false);
26118
26119 return bcmerror;
26120 }
26121
26122 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26123 {
26124 u16 tbl_buf[7];
26125
26126 if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26127 (pi->nphy_txiqlocal_coeffsvalid)) {
26128 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26129 ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26130
26131 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26132 (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26133 (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26134 (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26135
26136 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26137 16, pi->nphy_txiqlocal_bestc);
26138
26139 tbl_buf[0] = 0;
26140 tbl_buf[1] = 0;
26141 tbl_buf[2] = 0;
26142 tbl_buf[3] = 0;
26143 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26144 16, tbl_buf);
26145
26146 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26147 16,
26148 &pi->nphy_txiqlocal_bestc[5]);
26149
26150 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26151 16,
26152 &pi->nphy_txiqlocal_bestc[5]);
26153 }
26154 }
26155 }
26156
26157 void
26158 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26159 struct nphy_iq_comp *pcomp)
26160 {
26161 if (write) {
26162 write_phy_reg(pi, 0x9a, pcomp->a0);
26163 write_phy_reg(pi, 0x9b, pcomp->b0);
26164 write_phy_reg(pi, 0x9c, pcomp->a1);
26165 write_phy_reg(pi, 0x9d, pcomp->b1);
26166 } else {
26167 pcomp->a0 = read_phy_reg(pi, 0x9a);
26168 pcomp->b0 = read_phy_reg(pi, 0x9b);
26169 pcomp->a1 = read_phy_reg(pi, 0x9c);
26170 pcomp->b1 = read_phy_reg(pi, 0x9d);
26171 }
26172 }
26173
26174 void
26175 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26176 u16 num_samps, u8 wait_time, u8 wait_for_crs)
26177 {
26178 u8 core;
26179
26180 write_phy_reg(pi, 0x12b, num_samps);
26181 mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26182 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26183 (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26184
26185 mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26186
26187 SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26188 10000);
26189 if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26190 "HW error: rxiq est"))
26191 return;
26192
26193 if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26194 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26195 est[core].i_pwr =
26196 (read_phy_reg(pi,
26197 NPHY_IqestipwrAccHi(core)) << 16)
26198 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26199 est[core].q_pwr =
26200 (read_phy_reg(pi,
26201 NPHY_IqestqpwrAccHi(core)) << 16)
26202 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26203 est[core].iq_prod =
26204 (read_phy_reg(pi,
26205 NPHY_IqestIqAccHi(core)) << 16) |
26206 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26207 }
26208 }
26209 }
26210
26211 #define CAL_RETRY_CNT 2
26212 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26213 {
26214 u8 curr_core;
26215 struct phy_iq_est est[PHY_CORE_MAX];
26216 struct nphy_iq_comp old_comp, new_comp;
26217 s32 iq = 0;
26218 u32 ii = 0, qq = 0;
26219 s16 iq_nbits, qq_nbits, brsh, arsh;
26220 s32 a, b, temp;
26221 int bcmerror = 0;
26222 uint cal_retry = 0;
26223
26224 if (core_mask == 0x0)
26225 return;
26226
26227 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26228 new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26229 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26230
26231 cal_try:
26232 wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26233
26234 new_comp = old_comp;
26235
26236 for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26237
26238 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26239 iq = est[curr_core].iq_prod;
26240 ii = est[curr_core].i_pwr;
26241 qq = est[curr_core].q_pwr;
26242 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26243 iq = est[curr_core].iq_prod;
26244 ii = est[curr_core].i_pwr;
26245 qq = est[curr_core].q_pwr;
26246 } else {
26247 continue;
26248 }
26249
26250 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26251 bcmerror = -EBADE;
26252 break;
26253 }
26254
26255 iq_nbits = wlc_phy_nbits(iq);
26256 qq_nbits = wlc_phy_nbits(qq);
26257
26258 arsh = 10 - (30 - iq_nbits);
26259 if (arsh >= 0) {
26260 a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26261 temp = (s32) (ii >> arsh);
26262 if (temp == 0) {
26263 bcmerror = -EBADE;
26264 break;
26265 }
26266 } else {
26267 a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26268 temp = (s32) (ii << -arsh);
26269 if (temp == 0) {
26270 bcmerror = -EBADE;
26271 break;
26272 }
26273 }
26274
26275 a /= temp;
26276
26277 brsh = qq_nbits - 31 + 20;
26278 if (brsh >= 0) {
26279 b = (qq << (31 - qq_nbits));
26280 temp = (s32) (ii >> brsh);
26281 if (temp == 0) {
26282 bcmerror = -EBADE;
26283 break;
26284 }
26285 } else {
26286 b = (qq << (31 - qq_nbits));
26287 temp = (s32) (ii << -brsh);
26288 if (temp == 0) {
26289 bcmerror = -EBADE;
26290 break;
26291 }
26292 }
26293 b /= temp;
26294 b -= a * a;
26295 b = (s32) int_sqrt((unsigned long) b);
26296 b -= (1 << 10);
26297
26298 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26299 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26300 new_comp.a0 = (s16) a & 0x3ff;
26301 new_comp.b0 = (s16) b & 0x3ff;
26302 } else {
26303
26304 new_comp.a0 = (s16) b & 0x3ff;
26305 new_comp.b0 = (s16) a & 0x3ff;
26306 }
26307 }
26308 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26309 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26310 new_comp.a1 = (s16) a & 0x3ff;
26311 new_comp.b1 = (s16) b & 0x3ff;
26312 } else {
26313
26314 new_comp.a1 = (s16) b & 0x3ff;
26315 new_comp.b1 = (s16) a & 0x3ff;
26316 }
26317 }
26318 }
26319
26320 if (bcmerror != 0) {
26321 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26322
26323 if (cal_retry < CAL_RETRY_CNT) {
26324 cal_retry++;
26325 goto cal_try;
26326 }
26327
26328 new_comp = old_comp;
26329 }
26330
26331 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26332 }
26333
26334 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26335 {
26336 u16 offtune_val;
26337 u16 bias_g = 0;
26338 u16 bias_a = 0;
26339
26340 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26341 if (rx_core == PHY_CORE_0) {
26342 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26343 pi->tx_rx_cal_radio_saveregs[0] =
26344 read_radio_reg(pi,
26345 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26346 pi->tx_rx_cal_radio_saveregs[1] =
26347 read_radio_reg(pi,
26348 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26349
26350 write_radio_reg(pi,
26351 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26352 0x3);
26353 write_radio_reg(pi,
26354 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26355 0xaf);
26356
26357 } else {
26358 pi->tx_rx_cal_radio_saveregs[0] =
26359 read_radio_reg(pi,
26360 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26361 pi->tx_rx_cal_radio_saveregs[1] =
26362 read_radio_reg(pi,
26363 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26364
26365 write_radio_reg(
26366 pi,
26367 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26368 0x3);
26369 write_radio_reg(
26370 pi,
26371 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26372 0x7f);
26373 }
26374
26375 } else {
26376 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26377 pi->tx_rx_cal_radio_saveregs[0] =
26378 read_radio_reg(pi,
26379 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26380 pi->tx_rx_cal_radio_saveregs[1] =
26381 read_radio_reg(pi,
26382 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26383
26384 write_radio_reg(
26385 pi,
26386 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26387 0x3);
26388 write_radio_reg(
26389 pi,
26390 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26391 0xaf);
26392
26393 } else {
26394 pi->tx_rx_cal_radio_saveregs[0] =
26395 read_radio_reg(pi,
26396 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26397 pi->tx_rx_cal_radio_saveregs[1] =
26398 read_radio_reg(pi,
26399 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26400
26401 write_radio_reg(pi,
26402 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26403 0x3);
26404 write_radio_reg(pi,
26405 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26406 0x7f);
26407 }
26408 }
26409
26410 } else {
26411 if (rx_core == PHY_CORE_0) {
26412 pi->tx_rx_cal_radio_saveregs[0] =
26413 read_radio_reg(pi,
26414 RADIO_2056_TX_RXIQCAL_TXMUX |
26415 RADIO_2056_TX1);
26416 pi->tx_rx_cal_radio_saveregs[1] =
26417 read_radio_reg(pi,
26418 RADIO_2056_RX_RXIQCAL_RXMUX |
26419 RADIO_2056_RX0);
26420
26421 if (pi->pubpi.radiorev >= 5) {
26422 pi->tx_rx_cal_radio_saveregs[2] =
26423 read_radio_reg(pi,
26424 RADIO_2056_RX_RXSPARE2 |
26425 RADIO_2056_RX0);
26426 pi->tx_rx_cal_radio_saveregs[3] =
26427 read_radio_reg(pi,
26428 RADIO_2056_TX_TXSPARE2 |
26429 RADIO_2056_TX1);
26430 }
26431
26432 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26433
26434 if (pi->pubpi.radiorev >= 5) {
26435 pi->tx_rx_cal_radio_saveregs[4] =
26436 read_radio_reg(pi,
26437 RADIO_2056_RX_LNAA_MASTER
26438 | RADIO_2056_RX0);
26439
26440 write_radio_reg(
26441 pi,
26442 RADIO_2056_RX_LNAA_MASTER
26443 | RADIO_2056_RX0, 0x40);
26444
26445 write_radio_reg(pi,
26446 RADIO_2056_TX_TXSPARE2 |
26447 RADIO_2056_TX1, bias_a);
26448
26449 write_radio_reg(pi,
26450 RADIO_2056_RX_RXSPARE2 |
26451 RADIO_2056_RX0, bias_a);
26452 } else {
26453 pi->tx_rx_cal_radio_saveregs[4] =
26454 read_radio_reg(pi,
26455 RADIO_2056_RX_LNAA_TUNE
26456 | RADIO_2056_RX0);
26457
26458 offtune_val =
26459 (pi->tx_rx_cal_radio_saveregs
26460 [2] & 0xF0) >> 8;
26461 offtune_val =
26462 (offtune_val <= 0x7) ? 0xF : 0;
26463
26464 mod_radio_reg(pi,
26465 RADIO_2056_RX_LNAA_TUNE |
26466 RADIO_2056_RX0, 0xF0,
26467 (offtune_val << 8));
26468 }
26469
26470 write_radio_reg(pi,
26471 RADIO_2056_TX_RXIQCAL_TXMUX |
26472 RADIO_2056_TX1, 0x9);
26473 write_radio_reg(pi,
26474 RADIO_2056_RX_RXIQCAL_RXMUX |
26475 RADIO_2056_RX0, 0x9);
26476 } else {
26477 if (pi->pubpi.radiorev >= 5) {
26478 pi->tx_rx_cal_radio_saveregs[4] =
26479 read_radio_reg(
26480 pi,
26481 RADIO_2056_RX_LNAG_MASTER
26482 | RADIO_2056_RX0);
26483
26484 write_radio_reg(
26485 pi,
26486 RADIO_2056_RX_LNAG_MASTER
26487 | RADIO_2056_RX0, 0x40);
26488
26489 write_radio_reg(
26490 pi,
26491 RADIO_2056_TX_TXSPARE2
26492 |
26493 RADIO_2056_TX1, bias_g);
26494
26495 write_radio_reg(
26496 pi,
26497 RADIO_2056_RX_RXSPARE2
26498 |
26499 RADIO_2056_RX0, bias_g);
26500
26501 } else {
26502 pi->tx_rx_cal_radio_saveregs[4] =
26503 read_radio_reg(
26504 pi,
26505 RADIO_2056_RX_LNAG_TUNE
26506 | RADIO_2056_RX0);
26507
26508 offtune_val =
26509 (pi->
26510 tx_rx_cal_radio_saveregs[2] &
26511 0xF0) >> 8;
26512 offtune_val =
26513 (offtune_val <= 0x7) ? 0xF : 0;
26514
26515 mod_radio_reg(pi,
26516 RADIO_2056_RX_LNAG_TUNE |
26517 RADIO_2056_RX0, 0xF0,
26518 (offtune_val << 8));
26519 }
26520
26521 write_radio_reg(pi,
26522 RADIO_2056_TX_RXIQCAL_TXMUX |
26523 RADIO_2056_TX1, 0x6);
26524 write_radio_reg(pi,
26525 RADIO_2056_RX_RXIQCAL_RXMUX |
26526 RADIO_2056_RX0, 0x6);
26527 }
26528
26529 } else {
26530 pi->tx_rx_cal_radio_saveregs[0] =
26531 read_radio_reg(pi,
26532 RADIO_2056_TX_RXIQCAL_TXMUX |
26533 RADIO_2056_TX0);
26534 pi->tx_rx_cal_radio_saveregs[1] =
26535 read_radio_reg(pi,
26536 RADIO_2056_RX_RXIQCAL_RXMUX |
26537 RADIO_2056_RX1);
26538
26539 if (pi->pubpi.radiorev >= 5) {
26540 pi->tx_rx_cal_radio_saveregs[2] =
26541 read_radio_reg(pi,
26542 RADIO_2056_RX_RXSPARE2 |
26543 RADIO_2056_RX1);
26544 pi->tx_rx_cal_radio_saveregs[3] =
26545 read_radio_reg(pi,
26546 RADIO_2056_TX_TXSPARE2 |
26547 RADIO_2056_TX0);
26548 }
26549
26550 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26551
26552 if (pi->pubpi.radiorev >= 5) {
26553 pi->tx_rx_cal_radio_saveregs[4] =
26554 read_radio_reg(
26555 pi,
26556 RADIO_2056_RX_LNAA_MASTER
26557 | RADIO_2056_RX1);
26558
26559 write_radio_reg(
26560 pi,
26561 RADIO_2056_RX_LNAA_MASTER |
26562 RADIO_2056_RX1, 0x40);
26563
26564 write_radio_reg(
26565 pi,
26566 RADIO_2056_TX_TXSPARE2
26567 |
26568 RADIO_2056_TX0, bias_a);
26569
26570 write_radio_reg(
26571 pi,
26572 RADIO_2056_RX_RXSPARE2
26573 |
26574 RADIO_2056_RX1, bias_a);
26575 } else {
26576 pi->tx_rx_cal_radio_saveregs[4] =
26577 read_radio_reg(
26578 pi,
26579 RADIO_2056_RX_LNAA_TUNE
26580 | RADIO_2056_RX1);
26581
26582 offtune_val =
26583 (pi->
26584 tx_rx_cal_radio_saveregs[2] &
26585 0xF0) >> 8;
26586 offtune_val =
26587 (offtune_val <= 0x7) ? 0xF : 0;
26588
26589 mod_radio_reg(pi,
26590 RADIO_2056_RX_LNAA_TUNE |
26591 RADIO_2056_RX1, 0xF0,
26592 (offtune_val << 8));
26593 }
26594
26595 write_radio_reg(pi,
26596 RADIO_2056_TX_RXIQCAL_TXMUX |
26597 RADIO_2056_TX0, 0x9);
26598 write_radio_reg(pi,
26599 RADIO_2056_RX_RXIQCAL_RXMUX |
26600 RADIO_2056_RX1, 0x9);
26601 } else {
26602 if (pi->pubpi.radiorev >= 5) {
26603 pi->tx_rx_cal_radio_saveregs[4] =
26604 read_radio_reg(
26605 pi,
26606 RADIO_2056_RX_LNAG_MASTER
26607 | RADIO_2056_RX1);
26608
26609 write_radio_reg(
26610 pi,
26611 RADIO_2056_RX_LNAG_MASTER
26612 | RADIO_2056_RX1, 0x40);
26613
26614 write_radio_reg(
26615 pi,
26616 RADIO_2056_TX_TXSPARE2
26617 |
26618 RADIO_2056_TX0, bias_g);
26619
26620 write_radio_reg(
26621 pi,
26622 RADIO_2056_RX_RXSPARE2
26623 |
26624 RADIO_2056_RX1, bias_g);
26625 } else {
26626 pi->tx_rx_cal_radio_saveregs[4] =
26627 read_radio_reg(
26628 pi,
26629 RADIO_2056_RX_LNAG_TUNE
26630 | RADIO_2056_RX1);
26631
26632 offtune_val =
26633 (pi->
26634 tx_rx_cal_radio_saveregs[2] &
26635 0xF0) >> 8;
26636 offtune_val =
26637 (offtune_val <= 0x7) ? 0xF : 0;
26638
26639 mod_radio_reg(pi,
26640 RADIO_2056_RX_LNAG_TUNE |
26641 RADIO_2056_RX1, 0xF0,
26642 (offtune_val << 8));
26643 }
26644
26645 write_radio_reg(pi,
26646 RADIO_2056_TX_RXIQCAL_TXMUX |
26647 RADIO_2056_TX0, 0x6);
26648 write_radio_reg(pi,
26649 RADIO_2056_RX_RXIQCAL_RXMUX |
26650 RADIO_2056_RX1, 0x6);
26651 }
26652 }
26653 }
26654 }
26655
26656 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26657 {
26658 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26659 if (rx_core == PHY_CORE_0) {
26660 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26661 write_radio_reg(
26662 pi,
26663 RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26664 pi->
26665 tx_rx_cal_radio_saveregs[0]);
26666 write_radio_reg(
26667 pi,
26668 RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26669 pi->
26670 tx_rx_cal_radio_saveregs[1]);
26671
26672 } else {
26673 write_radio_reg(
26674 pi,
26675 RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26676 pi->
26677 tx_rx_cal_radio_saveregs[0]);
26678 write_radio_reg(
26679 pi,
26680 RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26681 pi->
26682 tx_rx_cal_radio_saveregs[1]);
26683 }
26684
26685 } else {
26686 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26687 write_radio_reg(
26688 pi,
26689 RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26690 pi->
26691 tx_rx_cal_radio_saveregs[0]);
26692 write_radio_reg(
26693 pi,
26694 RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26695 pi->
26696 tx_rx_cal_radio_saveregs[1]);
26697
26698 } else {
26699 write_radio_reg(
26700 pi,
26701 RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26702 pi->
26703 tx_rx_cal_radio_saveregs[0]);
26704 write_radio_reg(
26705 pi,
26706 RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26707 pi->
26708 tx_rx_cal_radio_saveregs[1]);
26709 }
26710 }
26711
26712 } else {
26713 if (rx_core == PHY_CORE_0) {
26714 write_radio_reg(pi,
26715 RADIO_2056_TX_RXIQCAL_TXMUX |
26716 RADIO_2056_TX1,
26717 pi->tx_rx_cal_radio_saveregs[0]);
26718
26719 write_radio_reg(pi,
26720 RADIO_2056_RX_RXIQCAL_RXMUX |
26721 RADIO_2056_RX0,
26722 pi->tx_rx_cal_radio_saveregs[1]);
26723
26724 if (pi->pubpi.radiorev >= 5) {
26725 write_radio_reg(pi,
26726 RADIO_2056_RX_RXSPARE2 |
26727 RADIO_2056_RX0,
26728 pi->
26729 tx_rx_cal_radio_saveregs[2]);
26730
26731 write_radio_reg(pi,
26732 RADIO_2056_TX_TXSPARE2 |
26733 RADIO_2056_TX1,
26734 pi->
26735 tx_rx_cal_radio_saveregs[3]);
26736 }
26737
26738 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26739 if (pi->pubpi.radiorev >= 5)
26740 write_radio_reg(
26741 pi,
26742 RADIO_2056_RX_LNAA_MASTER
26743 | RADIO_2056_RX0,
26744 pi->
26745 tx_rx_cal_radio_saveregs
26746 [4]);
26747 else
26748 write_radio_reg(
26749 pi,
26750 RADIO_2056_RX_LNAA_TUNE
26751 | RADIO_2056_RX0,
26752 pi->
26753 tx_rx_cal_radio_saveregs
26754 [4]);
26755 } else {
26756 if (pi->pubpi.radiorev >= 5)
26757 write_radio_reg(
26758 pi,
26759 RADIO_2056_RX_LNAG_MASTER
26760 | RADIO_2056_RX0,
26761 pi->
26762 tx_rx_cal_radio_saveregs
26763 [4]);
26764 else
26765 write_radio_reg(
26766 pi,
26767 RADIO_2056_RX_LNAG_TUNE
26768 | RADIO_2056_RX0,
26769 pi->
26770 tx_rx_cal_radio_saveregs
26771 [4]);
26772 }
26773
26774 } else {
26775 write_radio_reg(pi,
26776 RADIO_2056_TX_RXIQCAL_TXMUX |
26777 RADIO_2056_TX0,
26778 pi->tx_rx_cal_radio_saveregs[0]);
26779
26780 write_radio_reg(pi,
26781 RADIO_2056_RX_RXIQCAL_RXMUX |
26782 RADIO_2056_RX1,
26783 pi->tx_rx_cal_radio_saveregs[1]);
26784
26785 if (pi->pubpi.radiorev >= 5) {
26786 write_radio_reg(pi,
26787 RADIO_2056_RX_RXSPARE2 |
26788 RADIO_2056_RX1,
26789 pi->
26790 tx_rx_cal_radio_saveregs[2]);
26791
26792 write_radio_reg(pi,
26793 RADIO_2056_TX_TXSPARE2 |
26794 RADIO_2056_TX0,
26795 pi->
26796 tx_rx_cal_radio_saveregs[3]);
26797 }
26798
26799 if (CHSPEC_IS5G(pi->radio_chanspec)) {
26800 if (pi->pubpi.radiorev >= 5)
26801 write_radio_reg(
26802 pi,
26803 RADIO_2056_RX_LNAA_MASTER
26804 | RADIO_2056_RX1,
26805 pi->
26806 tx_rx_cal_radio_saveregs
26807 [4]);
26808 else
26809 write_radio_reg(
26810 pi,
26811 RADIO_2056_RX_LNAA_TUNE
26812 | RADIO_2056_RX1,
26813 pi->
26814 tx_rx_cal_radio_saveregs
26815 [4]);
26816 } else {
26817 if (pi->pubpi.radiorev >= 5)
26818 write_radio_reg(
26819 pi,
26820 RADIO_2056_RX_LNAG_MASTER
26821 | RADIO_2056_RX1,
26822 pi->
26823 tx_rx_cal_radio_saveregs
26824 [4]);
26825 else
26826 write_radio_reg(
26827 pi,
26828 RADIO_2056_RX_LNAG_TUNE
26829 | RADIO_2056_RX1,
26830 pi->
26831 tx_rx_cal_radio_saveregs
26832 [4]);
26833 }
26834 }
26835 }
26836 }
26837
26838 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26839 {
26840 u8 tx_core;
26841 u16 rx_antval, tx_antval;
26842
26843 if (NREV_GE(pi->pubpi.phy_rev, 7))
26844 tx_core = rx_core;
26845 else
26846 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26847
26848 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26849 pi->tx_rx_cal_phy_saveregs[1] =
26850 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26851 pi->tx_rx_cal_phy_saveregs[2] =
26852 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26853 pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26854 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26855 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26856 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26857 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26858 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26859 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26860 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26861 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26862 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26863 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26864 }
26865
26866 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26867 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26868 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26869 0x29b, (0x1 << 0), (0) << 0);
26870
26871 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26872 0x29b, (0x1 << 0), (0) << 0);
26873
26874 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26875
26876 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26877
26878 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26879
26880 } else {
26881
26882 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26883 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26884 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26885 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26886 }
26887
26888 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26889 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26890 (0x1 << 2), (0x1 << 2));
26891 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26892 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26893 (0x1 << 0) | (0x1 << 1), 0);
26894 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26895 0x8f : 0xa5,
26896 (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26897 }
26898
26899 wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26900 RADIO_MIMO_CORESEL_CORE1 |
26901 RADIO_MIMO_CORESEL_CORE2);
26902
26903 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26904 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26905 0, 0, 0,
26906 NPHY_REV7_RFCTRLOVERRIDE_ID0);
26907 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26908 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26909 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26910 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26911 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26912 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26913 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26914 NPHY_REV7_RFCTRLOVERRIDE_ID2);
26915 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26916 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26917 if (CHSPEC_IS40(pi->radio_chanspec))
26918 wlc_phy_rfctrl_override_nphy_rev7(
26919 pi,
26920 (0x1 << 7),
26921 2, 0, 0,
26922 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26923 else
26924 wlc_phy_rfctrl_override_nphy_rev7(
26925 pi,
26926 (0x1 << 7),
26927 0, 0, 0,
26928 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26929
26930 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26931 0, 0, 0,
26932 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26933 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26934 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26935 } else {
26936 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26937 }
26938
26939 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26940
26941 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26942
26943 wlc_phy_rfctrlintc_override_nphy(pi,
26944 NPHY_RfctrlIntc_override_TRSW,
26945 0x1, rx_core + 1);
26946 } else {
26947
26948 if (rx_core == PHY_CORE_0) {
26949 rx_antval = 0x1;
26950 tx_antval = 0x8;
26951 } else {
26952 rx_antval = 0x4;
26953 tx_antval = 0x2;
26954 }
26955
26956 wlc_phy_rfctrlintc_override_nphy(pi,
26957 NPHY_RfctrlIntc_override_TRSW,
26958 rx_antval, rx_core + 1);
26959 wlc_phy_rfctrlintc_override_nphy(pi,
26960 NPHY_RfctrlIntc_override_TRSW,
26961 tx_antval, tx_core + 1);
26962 }
26963 }
26964
26965 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26966 {
26967
26968 write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26969 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26970 pi->tx_rx_cal_phy_saveregs[1]);
26971 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26972 pi->tx_rx_cal_phy_saveregs[2]);
26973 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26974 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26975
26976 write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26977 write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26978 write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26979 write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26980 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26981 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26982 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26983 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26984 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26985 }
26986
26987 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26988 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26989 }
26990
26991 static void
26992 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26993 u16 *rxgain, u8 cal_type)
26994 {
26995
26996 u16 num_samps;
26997 struct phy_iq_est est[PHY_CORE_MAX];
26998 u8 tx_core;
26999 struct nphy_iq_comp save_comp, zero_comp;
27000 u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27001 thresh_pwr = 10000;
27002 s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27003 bool gainctrl_done = false;
27004 u8 mix_tia_gain = 3;
27005 s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27006 s8 curr_gaintbl_index = 3;
27007 u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27008 const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27009 u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27010 int fine_gain_idx;
27011 s8 txpwrindex;
27012 u16 nphy_rxcal_txgain[2];
27013
27014 if (NREV_GE(pi->pubpi.phy_rev, 7))
27015 tx_core = rx_core;
27016 else
27017 tx_core = 1 - rx_core;
27018
27019 num_samps = 1024;
27020 desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27021
27022 wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27023 zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27024 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27025
27026 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27027 if (NREV_GE(pi->pubpi.phy_rev, 7))
27028 mix_tia_gain = 3;
27029 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27030 mix_tia_gain = 4;
27031 else
27032 mix_tia_gain = 6;
27033 if (NREV_GE(pi->pubpi.phy_rev, 7))
27034 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27035 else
27036 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27037 } else {
27038 if (NREV_GE(pi->pubpi.phy_rev, 7))
27039 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27040 else
27041 nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27042 }
27043
27044 do {
27045
27046 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27047 0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27048 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27049 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27050 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27051 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27052 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27053
27054 if (NREV_GE(pi->pubpi.phy_rev, 7))
27055 wlc_phy_rfctrl_override_1tomany_nphy(
27056 pi,
27057 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27058 ((lpf_biq1 << 12) |
27059 (lpf_biq0 << 8) |
27060 (mix_tia_gain << 4) | (lna2 << 2)
27061 | lna1), 0x3, 0);
27062 else
27063 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27064 ((hpvga << 12) |
27065 (lpf_biq1 << 10) |
27066 (lpf_biq0 << 8) |
27067 (mix_tia_gain << 4) |
27068 (lna2 << 2) | lna1), 0x3,
27069 0);
27070
27071 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27072
27073 if (txpwrindex == -1) {
27074 nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27075 nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27076 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27077 2, 0x110, 16,
27078 nphy_rxcal_txgain);
27079 } else {
27080 wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27081 false);
27082 }
27083
27084 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27085 NPHY_RXCAL_TONEFREQ_40MHz :
27086 NPHY_RXCAL_TONEFREQ_20MHz,
27087 NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27088
27089 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27090 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27091 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27092 curr_pwr = i_pwr + q_pwr;
27093
27094 switch (gainctrl_dirn) {
27095 case NPHY_RXCAL_GAIN_INIT:
27096 if (curr_pwr > thresh_pwr) {
27097 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27098 prev_gaintbl_index = curr_gaintbl_index;
27099 curr_gaintbl_index--;
27100 } else {
27101 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27102 prev_gaintbl_index = curr_gaintbl_index;
27103 curr_gaintbl_index++;
27104 }
27105 break;
27106
27107 case NPHY_RXCAL_GAIN_UP:
27108 if (curr_pwr > thresh_pwr) {
27109 gainctrl_done = true;
27110 optim_pwr = prev_pwr;
27111 optim_gaintbl_index = prev_gaintbl_index;
27112 } else {
27113 prev_gaintbl_index = curr_gaintbl_index;
27114 curr_gaintbl_index++;
27115 }
27116 break;
27117
27118 case NPHY_RXCAL_GAIN_DOWN:
27119 if (curr_pwr > thresh_pwr) {
27120 prev_gaintbl_index = curr_gaintbl_index;
27121 curr_gaintbl_index--;
27122 } else {
27123 gainctrl_done = true;
27124 optim_pwr = curr_pwr;
27125 optim_gaintbl_index = curr_gaintbl_index;
27126 }
27127 break;
27128
27129 default:
27130 break;
27131 }
27132
27133 if ((curr_gaintbl_index < 0) ||
27134 (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27135 gainctrl_done = true;
27136 optim_pwr = curr_pwr;
27137 optim_gaintbl_index = prev_gaintbl_index;
27138 } else {
27139 prev_pwr = curr_pwr;
27140 }
27141
27142 wlc_phy_stopplayback_nphy(pi);
27143 } while (!gainctrl_done);
27144
27145 hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27146 lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27147 lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27148 lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27149 lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27150 txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27151
27152 actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27153 delta_pwr = desired_log2_pwr - actual_log2_pwr;
27154
27155 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27156 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27157
27158 if (fine_gain_idx + (int)lpf_biq0 > 10)
27159 lpf_biq1 = 10 - lpf_biq0;
27160 else
27161 lpf_biq1 = (u16) max(fine_gain_idx, 0);
27162
27163 wlc_phy_rfctrl_override_1tomany_nphy(
27164 pi,
27165 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27166 ((lpf_biq1 << 12) |
27167 (lpf_biq0 << 8) |
27168 (mix_tia_gain << 4) |
27169 (lna2 << 2) | lna1), 0x3,
27170 0);
27171 } else {
27172 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27173 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27174 ((hpvga << 12) |
27175 (lpf_biq1 << 10) |
27176 (lpf_biq0 << 8) |
27177 (mix_tia_gain << 4) |
27178 (lna2 << 2) |
27179 lna1), 0x3, 0);
27180 }
27181
27182 if (rxgain != NULL) {
27183 *rxgain++ = lna1;
27184 *rxgain++ = lna2;
27185 *rxgain++ = mix_tia_gain;
27186 *rxgain++ = lpf_biq0;
27187 *rxgain++ = lpf_biq1;
27188 *rxgain = hpvga;
27189 }
27190
27191 wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27192 }
27193
27194 static void
27195 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27196 u8 cal_type)
27197 {
27198 wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27199 }
27200
27201 static u8
27202 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27203 {
27204 u32 target_bws[2] = { 9500, 21000 };
27205 u32 ref_tones[2] = { 3000, 6000 };
27206 u32 target_bw, ref_tone;
27207
27208 u32 target_pwr_ratios[2] = { 28606, 18468 };
27209 u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27210
27211 u16 start_rccal_ovr_val = 128;
27212 u16 txlpf_rccal_lpc_ovr_val = 128;
27213 u16 rxlpf_rccal_hpc_ovr_val = 159;
27214
27215 u16 orig_txlpf_rccal_lpc_ovr_val;
27216 u16 orig_rxlpf_rccal_hpc_ovr_val;
27217 u16 radio_addr_offset_rx;
27218 u16 radio_addr_offset_tx;
27219 u16 orig_dcBypass;
27220 u16 orig_RxStrnFilt40Num[6];
27221 u16 orig_RxStrnFilt40Den[4];
27222 u16 orig_rfctrloverride[2];
27223 u16 orig_rfctrlauxreg[2];
27224 u16 orig_rfctrlrssiothers;
27225 u16 tx_lpf_bw = 4;
27226
27227 u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27228 u16 lpf_hpc = 7, hpvga_hpc = 7;
27229
27230 s8 rccal_stepsize;
27231 u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27232 u32 ref_iq_vals = 0, target_iq_vals = 0;
27233 u16 num_samps, log_num_samps = 10;
27234 struct phy_iq_est est[PHY_CORE_MAX];
27235
27236 if (NREV_GE(pi->pubpi.phy_rev, 7))
27237 return 0;
27238
27239 num_samps = (1 << log_num_samps);
27240
27241 if (CHSPEC_IS40(pi->radio_chanspec)) {
27242 target_bw = target_bws[1];
27243 target_pwr_ratio = target_pwr_ratios[1];
27244 ref_tone = ref_tones[1];
27245 rx_lpf_bw = rx_lpf_bws[1];
27246 } else {
27247 target_bw = target_bws[0];
27248 target_pwr_ratio = target_pwr_ratios[0];
27249 ref_tone = ref_tones[0];
27250 rx_lpf_bw = rx_lpf_bws[0];
27251 }
27252
27253 if (core_idx == 0) {
27254 radio_addr_offset_rx = RADIO_2056_RX0;
27255 radio_addr_offset_tx =
27256 (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27257 } else {
27258 radio_addr_offset_rx = RADIO_2056_RX1;
27259 radio_addr_offset_tx =
27260 (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27261 }
27262
27263 orig_txlpf_rccal_lpc_ovr_val =
27264 read_radio_reg(pi,
27265 (RADIO_2056_TX_TXLPF_RCCAL |
27266 radio_addr_offset_tx));
27267 orig_rxlpf_rccal_hpc_ovr_val =
27268 read_radio_reg(pi,
27269 (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27270 radio_addr_offset_rx));
27271
27272 orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27273
27274 orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27275 orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27276 orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27277 orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27278 orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27279 orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27280 orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27281 orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27282 orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27283 orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27284
27285 orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27286 orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27287 orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27288 orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27289 orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27290
27291 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27292 txlpf_rccal_lpc_ovr_val);
27293
27294 write_radio_reg(pi,
27295 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27296 rxlpf_rccal_hpc_ovr_val);
27297
27298 mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27299
27300 write_phy_reg(pi, 0x267, 0x02d4);
27301 write_phy_reg(pi, 0x268, 0x0000);
27302 write_phy_reg(pi, 0x269, 0x0000);
27303 write_phy_reg(pi, 0x26a, 0x0000);
27304 write_phy_reg(pi, 0x26b, 0x0000);
27305 write_phy_reg(pi, 0x26c, 0x02d4);
27306 write_phy_reg(pi, 0x26d, 0x0000);
27307 write_phy_reg(pi, 0x26e, 0x0000);
27308 write_phy_reg(pi, 0x26f, 0x0000);
27309 write_phy_reg(pi, 0x270, 0x0000);
27310
27311 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27312 or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27313 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27314 or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27315
27316 mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27317 (0x7 << 10), (tx_lpf_bw << 10));
27318 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27319 (0x7 << 0), (hpvga_hpc << 0));
27320 mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27321 (0x7 << 4), (lpf_hpc << 4));
27322 mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27323 (0x7 << 8), (rx_lpf_bw << 8));
27324
27325 rccal_stepsize = 16;
27326 rccal_val = start_rccal_ovr_val + rccal_stepsize;
27327
27328 while (rccal_stepsize >= 0) {
27329 write_radio_reg(pi,
27330 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27331 radio_addr_offset_rx), rccal_val);
27332
27333 if (rccal_stepsize == 16) {
27334
27335 wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27336 0, 1, false);
27337 udelay(2);
27338
27339 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27340
27341 if (core_idx == 0)
27342 ref_iq_vals =
27343 max_t(u32, (est[0].i_pwr +
27344 est[0].q_pwr) >>
27345 (log_num_samps + 1),
27346 1);
27347 else
27348 ref_iq_vals =
27349 max_t(u32, (est[1].i_pwr +
27350 est[1].q_pwr) >>
27351 (log_num_samps + 1),
27352 1);
27353
27354 wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27355 0, 1, false);
27356 udelay(2);
27357 }
27358
27359 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27360
27361 if (core_idx == 0)
27362 target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27363 (log_num_samps + 1);
27364 else
27365 target_iq_vals =
27366 (est[1].i_pwr +
27367 est[1].q_pwr) >> (log_num_samps + 1);
27368
27369 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27370
27371 if (rccal_stepsize == 0)
27372 rccal_stepsize--;
27373 else if (rccal_stepsize == 1) {
27374 last_rccal_val = rccal_val;
27375 rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27376 last_pwr_ratio = pwr_ratio;
27377 rccal_stepsize--;
27378 } else {
27379 rccal_stepsize = (rccal_stepsize >> 1);
27380 rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27381 rccal_stepsize : (-rccal_stepsize));
27382 }
27383
27384 if (rccal_stepsize == -1) {
27385 best_rccal_val =
27386 (abs((int)last_pwr_ratio -
27387 (int)target_pwr_ratio) <
27388 abs((int)pwr_ratio -
27389 (int)target_pwr_ratio)) ? last_rccal_val :
27390 rccal_val;
27391
27392 if (CHSPEC_IS40(pi->radio_chanspec)) {
27393 if ((best_rccal_val > 140)
27394 || (best_rccal_val < 135))
27395 best_rccal_val = 138;
27396 } else {
27397 if ((best_rccal_val > 142)
27398 || (best_rccal_val < 137))
27399 best_rccal_val = 140;
27400 }
27401
27402 write_radio_reg(pi,
27403 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27404 radio_addr_offset_rx), best_rccal_val);
27405 }
27406 }
27407
27408 wlc_phy_stopplayback_nphy(pi);
27409
27410 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27411 orig_txlpf_rccal_lpc_ovr_val);
27412 write_radio_reg(pi,
27413 (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27414 orig_rxlpf_rccal_hpc_ovr_val);
27415
27416 mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27417
27418 write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27419 write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27420 write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27421 write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27422 write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27423 write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27424 write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27425 write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27426 write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27427 write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27428
27429 write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27430 write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27431 write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27432 write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27433 write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27434
27435 pi->nphy_anarxlpf_adjusted = false;
27436
27437 return best_rccal_val - 0x80;
27438 }
27439
27440 #define WAIT_FOR_SCOPE 4000
27441 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27442 struct nphy_txgains target_gain,
27443 u8 cal_type, bool debug)
27444 {
27445 u16 orig_BBConfig;
27446 u8 core_no, rx_core;
27447 u8 best_rccal[2];
27448 u16 gain_save[2];
27449 u16 cal_gain[2];
27450 struct nphy_iqcal_params cal_params[2];
27451 u8 rxcore_state;
27452 s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27453 s8 txlpf_idac;
27454 bool phyhang_avoid_state = false;
27455 bool skip_rxiqcal = false;
27456
27457 orig_BBConfig = read_phy_reg(pi, 0x01);
27458 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27459
27460 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27461
27462 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27463 phyhang_avoid_state = pi->phyhang_avoid;
27464 pi->phyhang_avoid = false;
27465 }
27466
27467 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27468
27469 for (core_no = 0; core_no <= 1; core_no++) {
27470 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27471 &cal_params[core_no]);
27472 cal_gain[core_no] = cal_params[core_no].cal_gain;
27473 }
27474
27475 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27476
27477 rxcore_state = wlc_phy_rxcore_getstate_nphy(
27478 (struct brcms_phy_pub *) pi);
27479
27480 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27481
27482 skip_rxiqcal =
27483 ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27484
27485 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27486
27487 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27488
27489 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27490
27491 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27492
27493 wlc_phy_tx_tone_nphy(pi,
27494 (CHSPEC_IS40(
27495 pi->radio_chanspec)) ?
27496 NPHY_RXCAL_TONEFREQ_40MHz :
27497 NPHY_RXCAL_TONEFREQ_20MHz,
27498 NPHY_RXCAL_TONEAMP, 0, cal_type,
27499 false);
27500
27501 if (debug)
27502 mdelay(WAIT_FOR_SCOPE);
27503
27504 wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27505 wlc_phy_stopplayback_nphy(pi);
27506 }
27507
27508 if (((cal_type == 1) || (cal_type == 2))
27509 && NREV_LT(pi->pubpi.phy_rev, 7)) {
27510
27511 if (rx_core == PHY_CORE_1) {
27512
27513 if (rxcore_state == 1)
27514 wlc_phy_rxcore_setstate_nphy(
27515 (struct brcms_phy_pub *) pi, 3);
27516
27517 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27518 1);
27519
27520 best_rccal[rx_core] =
27521 wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27522 pi->nphy_rccal_value = best_rccal[rx_core];
27523
27524 if (rxcore_state == 1)
27525 wlc_phy_rxcore_setstate_nphy(
27526 (struct brcms_phy_pub *) pi,
27527 rxcore_state);
27528 }
27529 }
27530
27531 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27532
27533 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27534 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27535 }
27536
27537 if ((cal_type == 1) || (cal_type == 2)) {
27538
27539 best_rccal[0] = best_rccal[1];
27540 write_radio_reg(pi,
27541 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27542 RADIO_2056_RX0), (best_rccal[0] | 0x80));
27543
27544 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27545 rxlpf_rccal_hpc =
27546 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27547 txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27548
27549 if (PHY_IPA(pi)) {
27550 txlpf_rccal_lpc +=
27551 (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27552 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27553 0x0e : 0x13;
27554 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27555 TXLPF_IDAC_4, txlpf_idac);
27556 }
27557
27558 rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27559 0);
27560 txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27561 0);
27562
27563 write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27564 ((rx_core ==
27565 PHY_CORE_0) ? RADIO_2056_RX0 :
27566 RADIO_2056_RX1)),
27567 (rxlpf_rccal_hpc | 0x80));
27568
27569 write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27570 ((rx_core ==
27571 PHY_CORE_0) ? RADIO_2056_TX0 :
27572 RADIO_2056_TX1)),
27573 (txlpf_rccal_lpc | 0x80));
27574 }
27575 }
27576
27577 write_phy_reg(pi, 0x01, orig_BBConfig);
27578
27579 wlc_phy_resetcca_nphy(pi);
27580
27581 if (NREV_GE(pi->pubpi.phy_rev, 7))
27582 wlc_phy_rfctrl_override_1tomany_nphy(
27583 pi,
27584 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27585 0, 0x3, 1);
27586 else
27587 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27588
27589 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27590
27591 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27592 gain_save);
27593
27594 if (NREV_GE(pi->pubpi.phy_rev, 4))
27595 pi->phyhang_avoid = phyhang_avoid_state;
27596
27597 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27598
27599 return 0;
27600 }
27601
27602 static int
27603 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27604 struct nphy_txgains target_gain, bool debug)
27605 {
27606 struct phy_iq_est est[PHY_CORE_MAX];
27607 u8 core_num, rx_core, tx_core;
27608 u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27609 u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27610 u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27611 s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27612 s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27613 u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27614 u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27615 u16 num_samps;
27616 u32 i_pwr, q_pwr, tot_pwr[3];
27617 u8 gain_pass, use_hpf_num;
27618 u16 mask, val1, val2;
27619 u16 core_no;
27620 u16 gain_save[2];
27621 u16 cal_gain[2];
27622 struct nphy_iqcal_params cal_params[2];
27623 u8 phy_bw;
27624 int bcmerror = 0;
27625 bool first_playtone = true;
27626
27627 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27628
27629 if (NREV_LT(pi->pubpi.phy_rev, 2))
27630 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27631
27632 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27633
27634 for (core_no = 0; core_no <= 1; core_no++) {
27635 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27636 &cal_params[core_no]);
27637 cal_gain[core_no] = cal_params[core_no].cal_gain;
27638 }
27639
27640 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27641
27642 num_samps = 1024;
27643 desired_log2_pwr = 13;
27644
27645 for (core_num = 0; core_num < 2; core_num++) {
27646
27647 rx_core = core_num;
27648 tx_core = 1 - core_num;
27649
27650 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27651 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27652 0xa6 : 0xa7);
27653 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27654 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27655 0x91 : 0x92);
27656 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27657 0x91 : 0x92);
27658
27659 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27660 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27661
27662 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27663 ((0x1 << 1) | (0x1 << 2)));
27664 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27665
27666 if (((pi->nphy_rxcalparams) & 0xff000000))
27667 write_phy_reg(pi,
27668 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27669 (CHSPEC_IS5G(pi->radio_chanspec) ?
27670 0x140 : 0x110));
27671 else
27672 write_phy_reg(pi,
27673 (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27674 (CHSPEC_IS5G(pi->radio_chanspec) ?
27675 0x180 : 0x120));
27676
27677 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27678 (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27679 0x114));
27680
27681 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27682 if (rx_core == PHY_CORE_0) {
27683 val1 = RADIO_2055_COUPLE_RX_MASK;
27684 val2 = RADIO_2055_COUPLE_TX_MASK;
27685 } else {
27686 val1 = RADIO_2055_COUPLE_TX_MASK;
27687 val2 = RADIO_2055_COUPLE_RX_MASK;
27688 }
27689
27690 if ((pi->nphy_rxcalparams & 0x10000)) {
27691 mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27692 val1);
27693 mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27694 val2);
27695 }
27696
27697 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27698
27699 if (debug)
27700 mdelay(WAIT_FOR_SCOPE);
27701
27702 if (gain_pass < 3) {
27703 curr_lna = lna_vals[gain_pass];
27704 curr_hpf1 = hpf1_vals[gain_pass];
27705 curr_hpf2 = hpf2_vals[gain_pass];
27706 } else {
27707
27708 if (tot_pwr[1] > 10000) {
27709 curr_lna = lna_vals[2];
27710 curr_hpf1 = hpf1_vals[2];
27711 curr_hpf2 = hpf2_vals[2];
27712 use_hpf_num = 1;
27713 curr_hpf = curr_hpf1;
27714 actual_log2_pwr =
27715 wlc_phy_nbits(tot_pwr[2]);
27716 } else {
27717 if (tot_pwr[0] > 10000) {
27718 curr_lna = lna_vals[1];
27719 curr_hpf1 = hpf1_vals[1];
27720 curr_hpf2 = hpf2_vals[1];
27721 use_hpf_num = 1;
27722 curr_hpf = curr_hpf1;
27723 actual_log2_pwr =
27724 wlc_phy_nbits(
27725 tot_pwr[1]);
27726 } else {
27727 curr_lna = lna_vals[0];
27728 curr_hpf1 = hpf1_vals[0];
27729 curr_hpf2 = hpf2_vals[0];
27730 use_hpf_num = 2;
27731 curr_hpf = curr_hpf2;
27732 actual_log2_pwr =
27733 wlc_phy_nbits(
27734 tot_pwr[0]);
27735 }
27736 }
27737
27738 hpf_change = desired_log2_pwr - actual_log2_pwr;
27739 curr_hpf += hpf_change;
27740 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27741 if (use_hpf_num == 1)
27742 curr_hpf1 = curr_hpf;
27743 else
27744 curr_hpf2 = curr_hpf;
27745 }
27746
27747 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27748 ((curr_hpf2 << 8) |
27749 (curr_hpf1 << 4) |
27750 (curr_lna << 2)), 0x3, 0);
27751 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27752
27753 wlc_phy_stopplayback_nphy(pi);
27754
27755 if (first_playtone) {
27756 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27757 (u16) (pi->nphy_rxcalparams &
27758 0xffff), 0, 0, true);
27759 first_playtone = false;
27760 } else {
27761 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27762 40 : 20;
27763 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27764 0, 0, 0, true);
27765 }
27766
27767 if (bcmerror == 0) {
27768 if (gain_pass < 3) {
27769
27770 wlc_phy_rx_iq_est_nphy(pi, est,
27771 num_samps, 32,
27772 0);
27773 i_pwr = (est[rx_core].i_pwr +
27774 num_samps / 2) / num_samps;
27775 q_pwr = (est[rx_core].q_pwr +
27776 num_samps / 2) / num_samps;
27777 tot_pwr[gain_pass] = i_pwr + q_pwr;
27778 } else {
27779
27780 wlc_phy_calc_rx_iq_comp_nphy(pi,
27781 (1 <<
27782 rx_core));
27783 }
27784
27785 wlc_phy_stopplayback_nphy(pi);
27786 }
27787
27788 if (bcmerror != 0)
27789 break;
27790 }
27791
27792 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27793 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27794
27795 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27796 0x92, orig_RfctrlIntcTx);
27797 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27798 0x92, orig_RfctrlIntcRx);
27799 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27800 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27801 0xa7, orig_AfectrlCore);
27802 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27803
27804 if (bcmerror != 0)
27805 break;
27806 }
27807
27808 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27809 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27810
27811 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27812 gain_save);
27813
27814 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27815
27816 return bcmerror;
27817 }
27818
27819 int
27820 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27821 u8 cal_type, bool debug)
27822 {
27823 if (NREV_GE(pi->pubpi.phy_rev, 7))
27824 cal_type = 0;
27825
27826 if (NREV_GE(pi->pubpi.phy_rev, 3))
27827 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27828 debug);
27829 else
27830 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27831 }
27832
27833 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27834 {
27835 uint core;
27836 u32 txgain;
27837 u16 rad_gain, dac_gain, bbmult, m1m2;
27838 u8 txpi[2], chan_freq_range;
27839 s32 rfpwr_offset;
27840
27841 if (pi->phyhang_avoid)
27842 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27843
27844 if (pi->sh->sromrev < 4) {
27845 txpi[0] = txpi[1] = 72;
27846 } else {
27847
27848 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27849 switch (chan_freq_range) {
27850 case WL_CHAN_FREQ_RANGE_2G:
27851 case WL_CHAN_FREQ_RANGE_5GL:
27852 case WL_CHAN_FREQ_RANGE_5GM:
27853 case WL_CHAN_FREQ_RANGE_5GH:
27854 txpi[0] = 0;
27855 txpi[1] = 0;
27856 break;
27857 default:
27858 txpi[0] = txpi[1] = 91;
27859 break;
27860 }
27861 }
27862
27863 if (NREV_GE(pi->pubpi.phy_rev, 7))
27864 txpi[0] = txpi[1] = 30;
27865 else if (NREV_GE(pi->pubpi.phy_rev, 3))
27866 txpi[0] = txpi[1] = 40;
27867
27868 if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27869
27870 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27871 (txpi[1] < 40) || (txpi[1] > 100))
27872 txpi[0] = txpi[1] = 91;
27873 }
27874
27875 pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27876 pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27877 pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27878 pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27879
27880 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27881 uint phyrev = pi->pubpi.phy_rev;
27882
27883 if (NREV_GE(phyrev, 3)) {
27884 if (PHY_IPA(pi)) {
27885 u32 *tx_gaintbl =
27886 wlc_phy_get_ipa_gaintbl_nphy(pi);
27887 txgain = tx_gaintbl[txpi[core]];
27888 } else {
27889 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27890 if (NREV_IS(phyrev, 3)) {
27891 txgain =
27892 nphy_tpc_5GHz_txgain_rev3
27893 [txpi[core]];
27894 } else if (NREV_IS(phyrev, 4)) {
27895 txgain = (
27896 pi->srom_fem5g.extpagain ==
27897 3) ?
27898 nphy_tpc_5GHz_txgain_HiPwrEPA
27899 [txpi[core]] :
27900 nphy_tpc_5GHz_txgain_rev4
27901 [txpi[core]];
27902 } else {
27903 txgain =
27904 nphy_tpc_5GHz_txgain_rev5
27905 [txpi[core]];
27906 }
27907 } else {
27908 if (NREV_GE(phyrev, 5) &&
27909 (pi->srom_fem2g.extpagain == 3)) {
27910 txgain =
27911 nphy_tpc_txgain_HiPwrEPA
27912 [txpi[core]];
27913 } else {
27914 txgain = nphy_tpc_txgain_rev3
27915 [txpi[core]];
27916 }
27917 }
27918 }
27919 } else {
27920 txgain = nphy_tpc_txgain[txpi[core]];
27921 }
27922
27923 if (NREV_GE(phyrev, 3))
27924 rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27925 else
27926 rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27927
27928 if (NREV_GE(phyrev, 7))
27929 dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27930 else
27931 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27932
27933 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27934
27935 if (NREV_GE(phyrev, 3))
27936 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27937 0xa5), (0x1 << 8), (0x1 << 8));
27938 else
27939 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27940
27941 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27942
27943 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27944 &rad_gain);
27945
27946 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27947 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27948 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27949 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27950
27951 if (PHY_IPA(pi)) {
27952 wlc_phy_table_read_nphy(pi,
27953 (core ==
27954 PHY_CORE_0 ?
27955 NPHY_TBL_ID_CORE1TXPWRCTL :
27956 NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27957 576 + txpi[core], 32,
27958 &rfpwr_offset);
27959
27960 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27961 0x29b, (0x1ff << 4),
27962 ((s16) rfpwr_offset) << 4);
27963
27964 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27965 0x29b, (0x1 << 2), (1) << 2);
27966
27967 }
27968 }
27969
27970 and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27971
27972 if (pi->phyhang_avoid)
27973 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27974 }
27975
27976 static void
27977 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27978 u8 tmp_max_pwr, u8 rate_start,
27979 u8 rate_end)
27980 {
27981 u8 rate;
27982 u8 word_num, nibble_num;
27983 u8 tmp_nibble;
27984
27985 for (rate = rate_start; rate <= rate_end; rate++) {
27986 word_num = (rate - rate_start) >> 2;
27987 nibble_num = (rate - rate_start) & 0x3;
27988 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27989
27990 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27991 }
27992 }
27993
27994 static void
27995 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27996 u8 rate_start, u8 rate_end)
27997 {
27998 u8 rate;
27999
28000 for (rate = rate_start; rate <= rate_end; rate++)
28001 srom_max[rate] -= 2 * pwr_offset;
28002 }
28003
28004 void
28005 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28006 u8 rate_mcs_end, u8 rate_ofdm_start)
28007 {
28008 u8 rate1, rate2;
28009
28010 rate2 = rate_ofdm_start;
28011 for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28012 power[rate1] = power[rate2];
28013 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28014 }
28015 power[rate_mcs_end] = power[rate_mcs_end - 1];
28016 }
28017
28018 void
28019 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28020 u8 rate_ofdm_end, u8 rate_mcs_start)
28021 {
28022 u8 rate1, rate2;
28023
28024 for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28025 rate1 <= rate_ofdm_end; rate1++, rate2++) {
28026 power[rate1] = power[rate2];
28027 if (rate1 == rate_ofdm_start)
28028 power[++rate1] = power[rate2];
28029 }
28030 }
28031
28032 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28033 {
28034 uint rate1, rate2, band_num;
28035 u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28036 u8 tmp_max_pwr = 0;
28037 u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28038 u8 *tx_srom_max_rate = NULL;
28039
28040 for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28041 band_num++) {
28042 switch (band_num) {
28043 case 0:
28044
28045 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28046 pi->nphy_pwrctrl_info[1].max_pwr_2g);
28047
28048 pwr_offsets1[0] = pi->cck2gpo;
28049 wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28050 pwr_offsets1,
28051 tmp_max_pwr,
28052 TXP_FIRST_CCK,
28053 TXP_LAST_CCK);
28054
28055 pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28056 pwr_offsets1[1] =
28057 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28058
28059 pwr_offsets2 = pi->mcs2gpo;
28060
28061 tmp_cddpo = pi->cdd2gpo;
28062 tmp_stbcpo = pi->stbc2gpo;
28063 tmp_bw40po = pi->bw402gpo;
28064
28065 tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28066 break;
28067 case 1:
28068
28069 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28070 pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28071
28072 pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28073 pwr_offsets1[1] =
28074 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28075
28076 pwr_offsets2 = pi->mcs5gpo;
28077
28078 tmp_cddpo = pi->cdd5gpo;
28079 tmp_stbcpo = pi->stbc5gpo;
28080 tmp_bw40po = pi->bw405gpo;
28081
28082 tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28083 break;
28084 case 2:
28085
28086 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28087 pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28088
28089 pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28090 pwr_offsets1[1] =
28091 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28092
28093 pwr_offsets2 = pi->mcs5glpo;
28094
28095 tmp_cddpo = pi->cdd5glpo;
28096 tmp_stbcpo = pi->stbc5glpo;
28097 tmp_bw40po = pi->bw405glpo;
28098
28099 tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28100 break;
28101 case 3:
28102
28103 tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28104 pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28105
28106 pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28107 pwr_offsets1[1] =
28108 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28109
28110 pwr_offsets2 = pi->mcs5ghpo;
28111
28112 tmp_cddpo = pi->cdd5ghpo;
28113 tmp_stbcpo = pi->stbc5ghpo;
28114 tmp_bw40po = pi->bw405ghpo;
28115
28116 tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28117 break;
28118 }
28119
28120 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28121 tmp_max_pwr, TXP_FIRST_OFDM,
28122 TXP_LAST_OFDM);
28123
28124 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28125 TXP_FIRST_MCS_20_SISO,
28126 TXP_LAST_MCS_20_SISO,
28127 TXP_FIRST_OFDM);
28128
28129 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28130 tmp_max_pwr,
28131 TXP_FIRST_MCS_20_CDD,
28132 TXP_LAST_MCS_20_CDD);
28133
28134 if (NREV_GE(pi->pubpi.phy_rev, 3))
28135 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28136 TXP_FIRST_MCS_20_CDD,
28137 TXP_LAST_MCS_20_CDD);
28138
28139 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28140 TXP_FIRST_OFDM_20_CDD,
28141 TXP_LAST_OFDM_20_CDD,
28142 TXP_FIRST_MCS_20_CDD);
28143
28144 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28145 tmp_max_pwr,
28146 TXP_FIRST_MCS_20_STBC,
28147 TXP_LAST_MCS_20_STBC);
28148
28149 if (NREV_GE(pi->pubpi.phy_rev, 3))
28150 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28151 tmp_stbcpo,
28152 TXP_FIRST_MCS_20_STBC,
28153 TXP_LAST_MCS_20_STBC);
28154
28155 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28156 &pwr_offsets2[2], tmp_max_pwr,
28157 TXP_FIRST_MCS_20_SDM,
28158 TXP_LAST_MCS_20_SDM);
28159
28160 if (NPHY_IS_SROM_REINTERPRET) {
28161
28162 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28163 &pwr_offsets2[4],
28164 tmp_max_pwr,
28165 TXP_FIRST_MCS_40_SISO,
28166 TXP_LAST_MCS_40_SISO);
28167
28168 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28169 TXP_FIRST_OFDM_40_SISO,
28170 TXP_LAST_OFDM_40_SISO,
28171 TXP_FIRST_MCS_40_SISO);
28172
28173 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28174 &pwr_offsets2[4],
28175 tmp_max_pwr,
28176 TXP_FIRST_MCS_40_CDD,
28177 TXP_LAST_MCS_40_CDD);
28178
28179 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28180 TXP_FIRST_MCS_40_CDD,
28181 TXP_LAST_MCS_40_CDD);
28182
28183 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28184 TXP_FIRST_OFDM_40_CDD,
28185 TXP_LAST_OFDM_40_CDD,
28186 TXP_FIRST_MCS_40_CDD);
28187
28188 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28189 &pwr_offsets2[4],
28190 tmp_max_pwr,
28191 TXP_FIRST_MCS_40_STBC,
28192 TXP_LAST_MCS_40_STBC);
28193
28194 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28195 tmp_stbcpo,
28196 TXP_FIRST_MCS_40_STBC,
28197 TXP_LAST_MCS_40_STBC);
28198
28199 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28200 &pwr_offsets2[6],
28201 tmp_max_pwr,
28202 TXP_FIRST_MCS_40_SDM,
28203 TXP_LAST_MCS_40_SDM);
28204 } else {
28205
28206 for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28207 TXP_FIRST_OFDM;
28208 rate1 <= TXP_LAST_MCS_40_SDM;
28209 rate1++, rate2++)
28210 tx_srom_max_rate[rate1] =
28211 tx_srom_max_rate[rate2];
28212 }
28213
28214 if (NREV_GE(pi->pubpi.phy_rev, 3))
28215 wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28216 tmp_bw40po,
28217 TXP_FIRST_OFDM_40_SISO,
28218 TXP_LAST_MCS_40_SDM);
28219
28220 tx_srom_max_rate[TXP_MCS_32] =
28221 tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28222 }
28223
28224 return;
28225 }
28226
28227 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28228 {
28229 u8 tx_pwr_ctrl_state;
28230 wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28231 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28232
28233 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28234
28235 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28236 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28237 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28238 udelay(1);
28239 }
28240
28241 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28242
28243 if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28244 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28245 }
28246
28247 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28248 {
28249 return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28250 (0x1 << 14) | (0x1 << 13));
28251 }
28252
28253 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28254 {
28255 u16 tmp;
28256 u16 pwr_idx[2];
28257
28258 if (wlc_phy_txpwr_ison_nphy(pi)) {
28259 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28260 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28261
28262 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28263 } else {
28264 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28265 << 8) |
28266 (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28267 }
28268
28269 return tmp;
28270 }
28271
28272 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28273 {
28274 if (PHY_IPA(pi)
28275 && (pi->nphy_force_papd_cal
28276 || (wlc_phy_txpwr_ison_nphy(pi)
28277 &&
28278 (((u32)
28279 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28280 pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28281 || ((u32)
28282 abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28283 pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28284 wlc_phy_a4(pi, true);
28285 }
28286
28287 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28288 {
28289 u16 mask = 0, val = 0, ishw = 0;
28290 u8 ctr;
28291 uint core;
28292 u32 tbl_offset;
28293 u32 tbl_len;
28294 u16 regval[84];
28295
28296 if (pi->phyhang_avoid)
28297 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28298
28299 switch (ctrl_type) {
28300 case PHY_TPC_HW_OFF:
28301 case PHY_TPC_HW_ON:
28302 pi->nphy_txpwrctrl = ctrl_type;
28303 break;
28304 default:
28305 break;
28306 }
28307
28308 if (ctrl_type == PHY_TPC_HW_OFF) {
28309 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28310
28311 if (wlc_phy_txpwr_ison_nphy(pi)) {
28312 for (core = 0; core < pi->pubpi.phy_corenum;
28313 core++)
28314 pi->nphy_txpwr_idx[core] =
28315 wlc_phy_txpwr_idx_cur_get_nphy(
28316 pi,
28317 (u8) core);
28318 }
28319
28320 }
28321
28322 tbl_len = 84;
28323 tbl_offset = 64;
28324 for (ctr = 0; ctr < tbl_len; ctr++)
28325 regval[ctr] = 0;
28326 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28327 regval);
28328 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28329 regval);
28330
28331 if (NREV_GE(pi->pubpi.phy_rev, 3))
28332 and_phy_reg(pi, 0x1e7,
28333 (u16) (~((0x1 << 15) |
28334 (0x1 << 14) | (0x1 << 13))));
28335 else
28336 and_phy_reg(pi, 0x1e7,
28337 (u16) (~((0x1 << 14) | (0x1 << 13))));
28338
28339 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28340 or_phy_reg(pi, 0x8f, (0x1 << 8));
28341 or_phy_reg(pi, 0xa5, (0x1 << 8));
28342 } else {
28343 or_phy_reg(pi, 0xa5, (0x1 << 14));
28344 }
28345
28346 if (NREV_IS(pi->pubpi.phy_rev, 2))
28347 mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28348 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28349 mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28350
28351 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28352 pi->bw == WL_CHANSPEC_BW_40)
28353 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28354 MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28355
28356 } else {
28357
28358 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28359 8, pi->adj_pwr_tbl_nphy);
28360 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28361 8, pi->adj_pwr_tbl_nphy);
28362
28363 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28364 mask = (0x1 << 14) | (0x1 << 13);
28365 val = (ishw << 14) | (ishw << 13);
28366
28367 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28368 mask |= (0x1 << 15);
28369 val |= (ishw << 15);
28370 }
28371
28372 mod_phy_reg(pi, 0x1e7, mask, val);
28373
28374 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28375 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28376 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28377 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28378 } else {
28379 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28380 if (NREV_GT(pi->pubpi.phy_rev, 1))
28381 mod_phy_reg(pi, 0x222,
28382 (0xff << 0), 0x64);
28383 }
28384 }
28385
28386 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28387 if ((pi->nphy_txpwr_idx[0] != 128)
28388 && (pi->nphy_txpwr_idx[1] != 128))
28389 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28390 pi->
28391 nphy_txpwr_idx
28392 [0],
28393 pi->
28394 nphy_txpwr_idx
28395 [1]);
28396 }
28397
28398 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28399 and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28400 and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28401 } else {
28402 and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28403 }
28404
28405 if (NREV_IS(pi->pubpi.phy_rev, 2))
28406 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28407 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28408 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28409
28410 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28411 pi->bw == WL_CHANSPEC_BW_40)
28412 wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28413 0x0, BRCM_BAND_ALL);
28414
28415 if (PHY_IPA(pi)) {
28416 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28417 0x29b, (0x1 << 2), (0) << 2);
28418
28419 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28420 0x29b, (0x1 << 2), (0) << 2);
28421
28422 }
28423
28424 }
28425
28426 if (pi->phyhang_avoid)
28427 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28428 }
28429
28430 void
28431 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28432 bool restore_cals)
28433 {
28434 u8 core, txpwrctl_tbl;
28435 u16 tx_ind0, iq_ind0, lo_ind0;
28436 u16 m1m2;
28437 u32 txgain;
28438 u16 rad_gain, dac_gain;
28439 u8 bbmult;
28440 u32 iqcomp;
28441 u16 iqcomp_a, iqcomp_b;
28442 u32 locomp;
28443 u16 tmpval;
28444 u8 tx_pwr_ctrl_state;
28445 s32 rfpwr_offset;
28446 u16 regval[2];
28447
28448 if (pi->phyhang_avoid)
28449 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28450
28451 tx_ind0 = 192;
28452 iq_ind0 = 320;
28453 lo_ind0 = 448;
28454
28455 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28456
28457 if ((core_mask & (1 << core)) == 0)
28458 continue;
28459
28460 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28461
28462 if (txpwrindex < 0) {
28463 if (pi->nphy_txpwrindex[core].index < 0)
28464 continue;
28465
28466 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28467 mod_phy_reg(pi, 0x8f,
28468 (0x1 << 8),
28469 pi->nphy_txpwrindex[core].
28470 AfectrlOverride);
28471 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28472 pi->nphy_txpwrindex[core].
28473 AfectrlOverride);
28474 } else {
28475 mod_phy_reg(pi, 0xa5,
28476 (0x1 << 14),
28477 pi->nphy_txpwrindex[core].
28478 AfectrlOverride);
28479 }
28480
28481 write_phy_reg(pi, (core == PHY_CORE_0) ?
28482 0xaa : 0xab,
28483 pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28484
28485 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28486 &pi->nphy_txpwrindex[core].
28487 rad_gain);
28488
28489 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28490 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28491 m1m2 |= ((core == PHY_CORE_0) ?
28492 (pi->nphy_txpwrindex[core].bbmult << 8) :
28493 (pi->nphy_txpwrindex[core].bbmult << 0));
28494 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28495
28496 if (restore_cals) {
28497 wlc_phy_table_write_nphy(
28498 pi, 15, 2, (80 + 2 * core), 16,
28499 &pi->nphy_txpwrindex[core].iqcomp_a);
28500 wlc_phy_table_write_nphy(
28501 pi, 15, 1, (85 + core), 16,
28502 &pi->nphy_txpwrindex[core].locomp);
28503 wlc_phy_table_write_nphy(
28504 pi, 15, 1, (93 + core), 16,
28505 &pi->nphy_txpwrindex[core].locomp);
28506 }
28507
28508 wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28509
28510 pi->nphy_txpwrindex[core].index_internal =
28511 pi->nphy_txpwrindex[core].index_internal_save;
28512 } else {
28513
28514 if (pi->nphy_txpwrindex[core].index < 0) {
28515
28516 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28517 mod_phy_reg(pi, 0x8f,
28518 (0x1 << 8),
28519 pi->nphy_txpwrindex[core].
28520 AfectrlOverride);
28521 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28522 pi->nphy_txpwrindex[core].
28523 AfectrlOverride);
28524 } else {
28525 pi->nphy_txpwrindex[core].
28526 AfectrlOverride =
28527 read_phy_reg(pi, 0xa5);
28528 }
28529
28530 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28531 read_phy_reg(pi, (core == PHY_CORE_0) ?
28532 0xaa : 0xab);
28533
28534 wlc_phy_table_read_nphy(pi, 7, 1,
28535 (0x110 + core), 16,
28536 &pi->
28537 nphy_txpwrindex[core].
28538 rad_gain);
28539
28540 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28541 &tmpval);
28542 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28543 tmpval &= 0xff;
28544 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28545
28546 wlc_phy_table_read_nphy(pi, 15, 2,
28547 (80 + 2 * core), 16,
28548 &pi->
28549 nphy_txpwrindex[core].
28550 iqcomp_a);
28551
28552 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28553 16,
28554 &pi->
28555 nphy_txpwrindex[core].
28556 locomp);
28557
28558 pi->nphy_txpwrindex[core].index_internal_save =
28559 pi->nphy_txpwrindex[core].
28560 index_internal;
28561 }
28562
28563 tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28564 wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28565
28566 if (NREV_IS(pi->pubpi.phy_rev, 1))
28567 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28568
28569 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28570 (tx_ind0 + txpwrindex), 32,
28571 &txgain);
28572
28573 if (NREV_GE(pi->pubpi.phy_rev, 3))
28574 rad_gain = (txgain >> 16) &
28575 ((1 << (32 - 16 + 1)) - 1);
28576 else
28577 rad_gain = (txgain >> 16) &
28578 ((1 << (28 - 16 + 1)) - 1);
28579
28580 dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28581 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28582
28583 if (NREV_GE(pi->pubpi.phy_rev, 3))
28584 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28585 0xa5), (0x1 << 8), (0x1 << 8));
28586 else
28587 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28588
28589 write_phy_reg(pi, (core == PHY_CORE_0) ?
28590 0xaa : 0xab, dac_gain);
28591
28592 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28593 &rad_gain);
28594
28595 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28596 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28597 m1m2 |= ((core == PHY_CORE_0) ?
28598 (bbmult << 8) : (bbmult << 0));
28599
28600 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28601
28602 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28603 (iq_ind0 + txpwrindex), 32,
28604 &iqcomp);
28605 iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28606 iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28607
28608 if (restore_cals) {
28609 regval[0] = (u16) iqcomp_a;
28610 regval[1] = (u16) iqcomp_b;
28611 wlc_phy_table_write_nphy(pi, 15, 2,
28612 (80 + 2 * core), 16,
28613 regval);
28614 }
28615
28616 wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28617 (lo_ind0 + txpwrindex), 32,
28618 &locomp);
28619 if (restore_cals)
28620 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28621 16, &locomp);
28622
28623 if (NREV_IS(pi->pubpi.phy_rev, 1))
28624 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28625
28626 if (PHY_IPA(pi)) {
28627 wlc_phy_table_read_nphy(pi,
28628 (core == PHY_CORE_0 ?
28629 NPHY_TBL_ID_CORE1TXPWRCTL :
28630 NPHY_TBL_ID_CORE2TXPWRCTL),
28631 1, 576 + txpwrindex, 32,
28632 &rfpwr_offset);
28633
28634 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28635 0x29b, (0x1ff << 4),
28636 ((s16) rfpwr_offset) << 4);
28637
28638 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28639 0x29b, (0x1 << 2), (1) << 2);
28640
28641 }
28642
28643 wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28644 }
28645
28646 pi->nphy_txpwrindex[core].index = txpwrindex;
28647 }
28648
28649 if (pi->phyhang_avoid)
28650 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28651 }
28652
28653 void
28654 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28655 u8 txp_rate_idx)
28656 {
28657 u8 chan_freq_range;
28658
28659 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28660 switch (chan_freq_range) {
28661 case WL_CHAN_FREQ_RANGE_2G:
28662 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28663 break;
28664 case WL_CHAN_FREQ_RANGE_5GM:
28665 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28666 break;
28667 case WL_CHAN_FREQ_RANGE_5GL:
28668 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28669 break;
28670 case WL_CHAN_FREQ_RANGE_5GH:
28671 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28672 break;
28673 default:
28674 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28675 break;
28676 }
28677
28678 return;
28679 }
28680
28681 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28682 {
28683 u16 clip_off[] = { 0xffff, 0xffff };
28684
28685 if (enable) {
28686 if (pi->nphy_deaf_count == 0) {
28687 pi->classifier_state =
28688 wlc_phy_classifier_nphy(pi, 0, 0);
28689 wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28690 wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28691 wlc_phy_clip_det_nphy(pi, 1, clip_off);
28692 }
28693
28694 pi->nphy_deaf_count++;
28695
28696 wlc_phy_resetcca_nphy(pi);
28697
28698 } else {
28699 pi->nphy_deaf_count--;
28700
28701 if (pi->nphy_deaf_count == 0) {
28702 wlc_phy_classifier_nphy(pi, (0x7 << 0),
28703 pi->classifier_state);
28704 wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28705 }
28706 }
28707 }
28708
28709 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28710 {
28711 wlapi_suspend_mac_and_wait(pi->sh->physhim);
28712
28713 if (mode) {
28714 if (pi->nphy_deaf_count == 0)
28715 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28716 } else if (pi->nphy_deaf_count > 0) {
28717 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28718 }
28719
28720 wlapi_enable_mac(pi->sh->physhim);
28721 }
This page took 0.904298 seconds and 5 git commands to generate.