staging: brcm80211: changing interface to n-phy rssi compute function
[pandora-kernel.git] / drivers / staging / 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 #include <linux/kernel.h>
18 #include <linux/delay.h>
19 #include <linux/cordic.h>
20
21 #include <brcm_hw_ids.h>
22 #include <aiutils.h>
23 #include <chipcommon.h>
24 #include <pmu.h>
25 #include <d11.h>
26 #include <phy_shim.h>
27 #include "phy_int.h"
28 #include "phy_hal.h"
29 #include "phy_radio.h"
30 #include "phyreg_n.h"
31 #include "phytbl_n.h"
32
33 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
34         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
35                        ((core == PHY_CORE_0) ? \
36                         radio_type##_##jspace##0 : \
37                         radio_type##_##jspace##1))
38
39 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
40         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
41                         ((core ==  PHY_CORE_0) ? \
42                          radio_type##_##jspace##0 : \
43                          radio_type##_##jspace##1), value)
44
45 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
46         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
47
48 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
49         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
50                             radio_type##_##jspace##0##_##reg_name : \
51                             radio_type##_##jspace##1##_##reg_name))
52
53 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
54         write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
55                              radio_type##_##jspace##0##_##reg_name : \
56                              radio_type##_##jspace##1##_##reg_name), \
57                         value)
58
59 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
60         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
61                              radio_type##_##reg_name##_##jspace##0 : \
62                              radio_type##_##reg_name##_##jspace##1))
63
64 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
65         write_radio_reg(pi, ((core == PHY_CORE_0) ? \
66                         radio_type##_##reg_name##_##jspace##0 : \
67                         radio_type##_##reg_name##_##jspace##1), \
68                         value)
69
70 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
71 #define NPHY_ACI_CHANNEL_DELTA 5
72 #define NPHY_ACI_CHANNEL_SKIP 4
73 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
74 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
75 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
76 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
77 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
78 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
79
80 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
81
82 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
83
84 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
85
86 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
87
88 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
89
90 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
91
92 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
93
94 #define NPHY_NOISE_ASSOC_ENTER_TH  400
95
96 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
97
98 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
99 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
100
101 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
102
103 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
104
105 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
106
107 #define NPHY_RSSICAL_MAXREAD 31
108
109 #define NPHY_RSSICAL_NPOLL 8
110 #define NPHY_RSSICAL_MAXD  (1<<20)
111 #define NPHY_MIN_RXIQ_PWR 2
112
113 #define NPHY_RSSICAL_W1_TARGET 25
114 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
115 #define NPHY_RSSICAL_NB_TARGET 0
116
117 #define NPHY_RSSICAL_W1_TARGET_REV3 29
118 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
119
120 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
121 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
122 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
123 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
124                                         NPHY_RSSICAL_MAXREAD)
125 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
126 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
127                                         NPHY_RSSICAL_MAXREAD)
128 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
129 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
130                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
131 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
132                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
133 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
134                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
135
136 #define NPHY_IQCAL_NUMGAINS 9
137 #define NPHY_N_GCTL 0x66
138
139 #define NPHY_PAPD_EPS_TBL_SIZE 64
140 #define NPHY_PAPD_SCL_TBL_SIZE 64
141 #define NPHY_NUM_DIG_FILT_COEFFS 15
142
143 #define NPHY_PAPD_COMP_OFF 0
144 #define NPHY_PAPD_COMP_ON  1
145
146 #define NPHY_SROM_TEMPSHIFT             32
147 #define NPHY_SROM_MAXTEMPOFFSET         16
148 #define NPHY_SROM_MINTEMPOFFSET         -16
149
150 #define NPHY_CAL_MAXTEMPDELTA           64
151
152 #define NPHY_NOISEVAR_TBLLEN40 256
153 #define NPHY_NOISEVAR_TBLLEN20 128
154
155 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
156
157 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
158
159 /* 5357 Chip specific ChipControl register bits */
160 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
161 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
162
163 #define NPHY_CAL_TSSISAMPS      64
164 #define NPHY_TEST_TONE_FREQ_40MHz 4000
165 #define NPHY_TEST_TONE_FREQ_20MHz 2500
166
167 #define MAX_205x_RCAL_WAITLOOPS 10000
168
169 #define NPHY_RXCAL_TONEAMP 181
170 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
171 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
172
173 #define TXFILT_SHAPING_OFDM20   0
174 #define TXFILT_SHAPING_OFDM40   1
175 #define TXFILT_SHAPING_CCK      2
176 #define TXFILT_DEFAULT_OFDM20   3
177 #define TXFILT_DEFAULT_OFDM40   4
178
179 struct nphy_iqcal_params {
180         u16 txlpf;
181         u16 txgm;
182         u16 pga;
183         u16 pad;
184         u16 ipa;
185         u16 cal_gain;
186         u16 ncorr[5];
187 };
188
189 struct nphy_txiqcal_ladder {
190         u8 percent;
191         u8 g_env;
192 };
193
194 struct nphy_ipa_txcalgains {
195         struct nphy_txgains gains;
196         bool useindex;
197         u8 index;
198 };
199
200 struct nphy_papd_restore_state {
201         u16 fbmix[2];
202         u16 vga_master[2];
203         u16 intpa_master[2];
204         u16 afectrl[2];
205         u16 afeoverride[2];
206         u16 pwrup[2];
207         u16 atten[2];
208         u16 mm;
209 };
210
211 struct nphy_ipa_txrxgain {
212         u16 hpvga;
213         u16 lpf_biq1;
214         u16 lpf_biq0;
215         u16 lna2;
216         u16 lna1;
217         s8 txpwrindex;
218 };
219
220 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
221
222 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
223         {0, 0, 0, 0, 0, 100},
224         {0, 0, 0, 0, 0, 50},
225         {0, 0, 0, 0, 0, -1},
226         {0, 0, 0, 3, 0, -1},
227         {0, 0, 3, 3, 0, -1},
228         {0, 2, 3, 3, 0, -1}
229 };
230
231 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
232         {0, 0, 0, 0, 0, 128},
233         {0, 0, 0, 0, 0, 70},
234         {0, 0, 0, 0, 0, 20},
235         {0, 0, 0, 3, 0, 20},
236         {0, 0, 3, 3, 0, 20},
237         {0, 2, 3, 3, 0, 20}
238 };
239
240 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
241         {0, 0, 0, 0, 0, 100},
242         {0, 0, 0, 0, 0, 50},
243         {0, 0, 0, 0, 0, -1},
244         {0, 0, 0, 3, 0, -1},
245         {0, 0, 3, 3, 0, -1},
246         {0, 0, 5, 3, 0, -1}
247 };
248
249 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
250         {0, 0, 0, 0, 0, 10},
251         {0, 0, 0, 1, 0, 10},
252         {0, 0, 1, 2, 0, 10},
253         {0, 0, 1, 3, 0, 10},
254         {0, 0, 4, 3, 0, 10},
255         {0, 0, 6, 3, 0, 10}
256 };
257
258 enum {
259         NPHY_RXCAL_GAIN_INIT = 0,
260         NPHY_RXCAL_GAIN_UP,
261         NPHY_RXCAL_GAIN_DOWN
262 };
263
264 #define wlc_phy_get_papd_nphy(pi) \
265         (read_phy_reg((pi), 0x1e7) & \
266          ((0x1 << 15) | \
267           (0x1 << 14) | \
268           (0x1 << 13)))
269
270 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
271         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
272          230, -44, 230, 201, -191, 201},
273         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
274          26, 34, -32, 34},
275         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
276          121, -73, 121, 91, 124, 91},
277         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
278          151, 301, 151, 602, -752, 602},
279         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
280          12, 25, 12, 13, 27, 13},
281         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
282          230, -44, 230, 201, -191, 201},
283         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
284          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
285 };
286
287 struct chan_info_nphy_2055 {
288         u16 chan;
289         u16 freq;
290         uint unknown;
291         u8 RF_pll_ref;
292         u8 RF_rf_pll_mod1;
293         u8 RF_rf_pll_mod0;
294         u8 RF_vco_cap_tail;
295         u8 RF_vco_cal1;
296         u8 RF_vco_cal2;
297         u8 RF_pll_lf_c1;
298         u8 RF_pll_lf_r1;
299         u8 RF_pll_lf_c2;
300         u8 RF_lgbuf_cen_buf;
301         u8 RF_lgen_tune1;
302         u8 RF_lgen_tune2;
303         u8 RF_core1_lgbuf_a_tune;
304         u8 RF_core1_lgbuf_g_tune;
305         u8 RF_core1_rxrf_reg1;
306         u8 RF_core1_tx_pga_pad_tn;
307         u8 RF_core1_tx_mx_bgtrim;
308         u8 RF_core2_lgbuf_a_tune;
309         u8 RF_core2_lgbuf_g_tune;
310         u8 RF_core2_rxrf_reg1;
311         u8 RF_core2_tx_pga_pad_tn;
312         u8 RF_core2_tx_mx_bgtrim;
313         u16 PHY_BW1a;
314         u16 PHY_BW2;
315         u16 PHY_BW3;
316         u16 PHY_BW4;
317         u16 PHY_BW5;
318         u16 PHY_BW6;
319 };
320
321 struct chan_info_nphy_radio205x {
322         u16 chan;
323         u16 freq;
324         u8 RF_SYN_pll_vcocal1;
325         u8 RF_SYN_pll_vcocal2;
326         u8 RF_SYN_pll_refdiv;
327         u8 RF_SYN_pll_mmd2;
328         u8 RF_SYN_pll_mmd1;
329         u8 RF_SYN_pll_loopfilter1;
330         u8 RF_SYN_pll_loopfilter2;
331         u8 RF_SYN_pll_loopfilter3;
332         u8 RF_SYN_pll_loopfilter4;
333         u8 RF_SYN_pll_loopfilter5;
334         u8 RF_SYN_reserved_addr27;
335         u8 RF_SYN_reserved_addr28;
336         u8 RF_SYN_reserved_addr29;
337         u8 RF_SYN_logen_VCOBUF1;
338         u8 RF_SYN_logen_MIXER2;
339         u8 RF_SYN_logen_BUF3;
340         u8 RF_SYN_logen_BUF4;
341         u8 RF_RX0_lnaa_tune;
342         u8 RF_RX0_lnag_tune;
343         u8 RF_TX0_intpaa_boost_tune;
344         u8 RF_TX0_intpag_boost_tune;
345         u8 RF_TX0_pada_boost_tune;
346         u8 RF_TX0_padg_boost_tune;
347         u8 RF_TX0_pgaa_boost_tune;
348         u8 RF_TX0_pgag_boost_tune;
349         u8 RF_TX0_mixa_boost_tune;
350         u8 RF_TX0_mixg_boost_tune;
351         u8 RF_RX1_lnaa_tune;
352         u8 RF_RX1_lnag_tune;
353         u8 RF_TX1_intpaa_boost_tune;
354         u8 RF_TX1_intpag_boost_tune;
355         u8 RF_TX1_pada_boost_tune;
356         u8 RF_TX1_padg_boost_tune;
357         u8 RF_TX1_pgaa_boost_tune;
358         u8 RF_TX1_pgag_boost_tune;
359         u8 RF_TX1_mixa_boost_tune;
360         u8 RF_TX1_mixg_boost_tune;
361         u16 PHY_BW1a;
362         u16 PHY_BW2;
363         u16 PHY_BW3;
364         u16 PHY_BW4;
365         u16 PHY_BW5;
366         u16 PHY_BW6;
367 };
368
369 struct chan_info_nphy_radio2057 {
370         u16 chan;
371         u16 freq;
372         u8 RF_vcocal_countval0;
373         u8 RF_vcocal_countval1;
374         u8 RF_rfpll_refmaster_sparextalsize;
375         u8 RF_rfpll_loopfilter_r1;
376         u8 RF_rfpll_loopfilter_c2;
377         u8 RF_rfpll_loopfilter_c1;
378         u8 RF_cp_kpd_idac;
379         u8 RF_rfpll_mmd0;
380         u8 RF_rfpll_mmd1;
381         u8 RF_vcobuf_tune;
382         u8 RF_logen_mx2g_tune;
383         u8 RF_logen_mx5g_tune;
384         u8 RF_logen_indbuf2g_tune;
385         u8 RF_logen_indbuf5g_tune;
386         u8 RF_txmix2g_tune_boost_pu_core0;
387         u8 RF_pad2g_tune_pus_core0;
388         u8 RF_pga_boost_tune_core0;
389         u8 RF_txmix5g_boost_tune_core0;
390         u8 RF_pad5g_tune_misc_pus_core0;
391         u8 RF_lna2g_tune_core0;
392         u8 RF_lna5g_tune_core0;
393         u8 RF_txmix2g_tune_boost_pu_core1;
394         u8 RF_pad2g_tune_pus_core1;
395         u8 RF_pga_boost_tune_core1;
396         u8 RF_txmix5g_boost_tune_core1;
397         u8 RF_pad5g_tune_misc_pus_core1;
398         u8 RF_lna2g_tune_core1;
399         u8 RF_lna5g_tune_core1;
400         u16 PHY_BW1a;
401         u16 PHY_BW2;
402         u16 PHY_BW3;
403         u16 PHY_BW4;
404         u16 PHY_BW5;
405         u16 PHY_BW6;
406 };
407
408 struct chan_info_nphy_radio2057_rev5 {
409         u16 chan;
410         u16 freq;
411         u8 RF_vcocal_countval0;
412         u8 RF_vcocal_countval1;
413         u8 RF_rfpll_refmaster_sparextalsize;
414         u8 RF_rfpll_loopfilter_r1;
415         u8 RF_rfpll_loopfilter_c2;
416         u8 RF_rfpll_loopfilter_c1;
417         u8 RF_cp_kpd_idac;
418         u8 RF_rfpll_mmd0;
419         u8 RF_rfpll_mmd1;
420         u8 RF_vcobuf_tune;
421         u8 RF_logen_mx2g_tune;
422         u8 RF_logen_indbuf2g_tune;
423         u8 RF_txmix2g_tune_boost_pu_core0;
424         u8 RF_pad2g_tune_pus_core0;
425         u8 RF_lna2g_tune_core0;
426         u8 RF_txmix2g_tune_boost_pu_core1;
427         u8 RF_pad2g_tune_pus_core1;
428         u8 RF_lna2g_tune_core1;
429         u16 PHY_BW1a;
430         u16 PHY_BW2;
431         u16 PHY_BW3;
432         u16 PHY_BW4;
433         u16 PHY_BW5;
434         u16 PHY_BW6;
435 };
436
437 struct nphy_sfo_cfg {
438         u16 PHY_BW1a;
439         u16 PHY_BW2;
440         u16 PHY_BW3;
441         u16 PHY_BW4;
442         u16 PHY_BW5;
443         u16 PHY_BW6;
444 };
445
446 static struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
447         {
448          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
449          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
450          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
451         {
452          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
453          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
454          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
455         {
456          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
457          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
458          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
459         {
460          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
461          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
462          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
463         {
464          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
465          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
466          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
467         {
468          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
469          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
470          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
471         {
472          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
473          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
474          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
475         {
476          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
477          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
478          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
479         {
480          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
481          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
482          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
483         {
484          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
485          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
486          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
487         {
488          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
489          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
490          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
491         {
492          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
493          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
494          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
495         {
496          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
497          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
498          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
499         {
500          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
501          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
502          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
503         {
504          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
505          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
506          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
507         {
508          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
509          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
510          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
511         {
512          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
513          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
514          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
515         {
516          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
517          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
518          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
519         {
520          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
521          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
522          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
523         {
524          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
525          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
526          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
527         {
528          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
529          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
530          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
531         {
532          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
533          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
534          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
535         {
536          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
537          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
538          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
539         {
540          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
541          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
542          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
543         {
544          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
545          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
546          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
547         {
548          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
549          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
550          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
551         {
552          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
553          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
554          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
555         {
556          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
557          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
558          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
559         {
560          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
561          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
562          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
563         {
564          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
565          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
566          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
567         {
568          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
569          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
570          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
571         {
572          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
573          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
574          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
575         {
576          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
577          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
578          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
579         {
580          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
581          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
582          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
583         {
584          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
585          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
586          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
587         {
588          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
589          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
590          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
591         {
592          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
593          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
594          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
595         {
596          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
597          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
598          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
599         {
600          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
601          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
602          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
603         {
604          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
605          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
606          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
607         {
608          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
609          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
610          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
611         {
612          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
613          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
614          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
615         {
616          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
617          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
618          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
619         {
620          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
621          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
622          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
623         {
624          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
625          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
626          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
627         {
628          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
629          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
630          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
631         {
632          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
633          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
634          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
635         {
636          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
637          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
638          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
639         {
640          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
641          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
642          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
643         {
644          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
645          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
646          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
647         {
648          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
649          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
650          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
651         {
652          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
653          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
654          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
655         {
656          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
657          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
658          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
659         {
660          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
661          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
662          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
663         {
664          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
665          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
666          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
667         {
668          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
669          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
670          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
671         {
672          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
673          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
674          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
675         {
676          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
677          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
678          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
679         {
680          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
681          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
682          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
683         {
684          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
685          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
686          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
687         {
688          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
689          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
690          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
691         {
692          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
693          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
694          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
695         {
696          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
697          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
698          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
699         {
700          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
701          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
702          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
703         {
704          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
705          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
706          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
707         {
708          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
709          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
710          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
711         {
712          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
713          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
714          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
715         {
716          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
717          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
718          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
719         {
720          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
721          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
722          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
723         {
724          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
725          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
726          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
727         {
728          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
729          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
730          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
731         {
732          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
733          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
734          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
735         {
736          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
737          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
738          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
739         {
740          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
741          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
742          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
743         {
744          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
745          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
746          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
747         {
748          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
749          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
750          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
751         {
752          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
753          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
754          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
755         {
756          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
757          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
758          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
759         {
760          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
761          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
762          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
763         {
764          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
765          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
766          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
767         {
768          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
769          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
770          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
771         {
772          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
773          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
774          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
775         {
776          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
777          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
778          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
779         {
780          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
781          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
782          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
783         {
784          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
785          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
786          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
787         {
788          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
789          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
790          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
791         {
792          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
793          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
794          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
795         {
796          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
797          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
798          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
799         {
800          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
801          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
802          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
803         {
804          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
805          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
806          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
807         {
808          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
809          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
810          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
811         {
812          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
813          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
814          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
815         {
816          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
817          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
818          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
819         {
820          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
821          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
822          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
823         {
824          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
825          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
826          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
827         {
828          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
829          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
830          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
831         {
832          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
833          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
834          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
835         {
836          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
837          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
838          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
839         {
840          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
841          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
842          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
843         {
844          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
845          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
846          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
847         {
848          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
849          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
850          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
851         {
852          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
853          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
854          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
855         {
856          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
857          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
858          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
859         {
860          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
861          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
862          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
863         {
864          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
865          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
866          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
867         {
868          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
869          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
870          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
871         {
872          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
873          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
874          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
875         {
876          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
877          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
878          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
879         {
880          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
881          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
882          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
883         {
884          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
885          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
886          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
887         {
888          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
889          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
890          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
891         {
892          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
893          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
894          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
895         {
896          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
897          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
898          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
899         {
900          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
901          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
902          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
903         {
904          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
905          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
906          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
907         {
908          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
909          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
910          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
911         {
912          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
913          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
914          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
915         {
916          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
917          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
918          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
919         {
920          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
921          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
922          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
923         {
924          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
925          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
926          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
927         {
928          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
929          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
930          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
931         {
932          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
933          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
934          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
935         {
936          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
937          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
938          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
939         {
940          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
941          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
942          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
943 };
944
945 static struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
946         {
947          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
948          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
949          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
950          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
951         {
952          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
953          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
954          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
955          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
956         {
957          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
958          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
959          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
960          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
961         {
962          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
963          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
964          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
965          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
966         {
967          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
968          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
969          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
970          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
971         {
972          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
973          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
974          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
975          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
976         {
977          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
978          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
979          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
980          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
981         {
982          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
983          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
984          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
985          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
986         {
987          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
988          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
989          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
990          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
991         {
992          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
993          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
994          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
995          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
996         {
997          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
998          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
999          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1000          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1001         {
1002          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1003          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1004          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1005          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1006         {
1007          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1008          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1009          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1010          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1011         {
1012          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1013          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1014          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1015          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1016         {
1017          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1018          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1019          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1020          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1021         {
1022          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1023          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1024          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1025          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1026         {
1027          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1028          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1029          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1030          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1031         {
1032          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1033          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1034          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1035          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1036         {
1037          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1038          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1039          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1040          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1041         {
1042          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1043          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1044          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1045          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1046         {
1047          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1048          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1049          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1050          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1051         {
1052          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1053          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1054          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1055          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1056         {
1057          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1058          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1059          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1060          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1061         {
1062          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1063          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1064          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1065          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1066         {
1067          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1068          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1069          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1070          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1071         {
1072          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1073          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1074          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1075          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1076         {
1077          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1078          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1079          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1080          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1081         {
1082          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1083          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1084          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1085          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1086         {
1087          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1088          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1089          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1090          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1091         {
1092          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1093          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1094          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1095          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1096         {
1097          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1098          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1099          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1100          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1101         {
1102          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1103          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1104          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1105          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1106         {
1107          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1108          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1109          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1110          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1111         {
1112          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1113          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1114          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1115          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1116         {
1117          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1118          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1119          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1120          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1121         {
1122          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1123          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1124          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1125          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1126         {
1127          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1128          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1129          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1130          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1131         {
1132          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1133          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1134          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1135          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1136         {
1137          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1138          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1139          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1140          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1141         {
1142          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1143          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1144          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1145          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1146         {
1147          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1148          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1149          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1150          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1151         {
1152          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1153          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1154          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1155          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1156         {
1157          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1158          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1159          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1160          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1161         {
1162          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1163          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1164          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1165          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1166         {
1167          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1168          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1169          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1170          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1171         {
1172          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1173          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1174          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1175          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1176         {
1177          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1178          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1179          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1180          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1181         {
1182          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1183          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1184          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1185          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1186         {
1187          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1188          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1189          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1190          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1191         {
1192          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1193          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1194          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1195          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1196         {
1197          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1198          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1199          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1200          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1201         {
1202          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1203          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1204          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1205          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1206         {
1207          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1208          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1209          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1210          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1211         {
1212          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1213          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1214          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1215          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1216         {
1217          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1218          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1219          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1220          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1221         {
1222          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1223          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1224          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1225          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1226         {
1227          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1228          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1229          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1230          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1231         {
1232          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1233          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1234          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1235          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1236         {
1237          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1238          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1239          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1240          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1241         {
1242          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1243          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1244          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1245          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1246         {
1247          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1248          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1249          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1250          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1251         {
1252          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1253          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1254          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1255          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1256         {
1257          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1258          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1259          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1260          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1261         {
1262          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1263          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1264          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1265          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1266         {
1267          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1268          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1269          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1270          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1271         {
1272          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1273          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1274          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1275          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1276         {
1277          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1278          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1279          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1280          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1281         {
1282          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1283          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1284          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1285          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1286         {
1287          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1288          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1289          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1290          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1291         {
1292          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1293          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1294          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1295          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1296         {
1297          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1298          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1299          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1300          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1301         {
1302          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1303          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1304          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1305          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1306         {
1307          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1308          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1309          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1310          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1311         {
1312          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1313          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1314          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1315          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1316         {
1317          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1318          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1319          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1320          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1321         {
1322          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1323          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1324          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1325          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1326         {
1327          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1328          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1329          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1330          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1331         {
1332          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1333          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1334          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1335          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1336         {
1337          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1338          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1339          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1340          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1341         {
1342          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1343          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1344          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1345          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1346         {
1347          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1348          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1349          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1350          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1351         {
1352          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1353          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1354          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1355          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1356         {
1357          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1358          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1359          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1360          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1361         {
1362          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1363          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1364          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1365          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1366         {
1367          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1368          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1369          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1370          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1371         {
1372          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1373          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1374          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1375          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1376         {
1377          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1378          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1379          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1380          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1381         {
1382          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1383          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1384          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1385          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1386         {
1387          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1388          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1389          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1390          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1391         {
1392          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1393          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1394          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1395          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1396         {
1397          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1398          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1399          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1400          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1401         {
1402          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1403          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1404          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1405          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1406         {
1407          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1408          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1409          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1410          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1411         {
1412          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1413          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1414          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1415          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1416         {
1417          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1418          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1419          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1420          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1421         {
1422          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1423          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1424          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1425          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1426         {
1427          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1428          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1429          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1430          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1431         {
1432          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1433          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1434          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1435          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1436         {
1437          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1438          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1439          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1440          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1441         {
1442          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1443          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1444          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1445          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1446         {
1447          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1448          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1449          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1450          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1451         {
1452          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1453          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1454          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1455          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1456         {
1457          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1458          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1459          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1460          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1461         {
1462          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1463          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1464          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1465          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1466         {
1467          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1468          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1469          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1470          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1471         {
1472          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1473          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1474          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1475          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1476         {
1477          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1478          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1479          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1480          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1481         {
1482          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1483          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1484          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1485          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1486         {
1487          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1488          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1489          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1490          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1491         {
1492          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1493          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1494          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1495          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1496         {
1497          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1498          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1499          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1500          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1501         {
1502          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1503          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1504          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1505          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1506         {
1507          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1508          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1509          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1510          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1511         {
1512          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1513          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1514          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1515          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1516         {
1517          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1518          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1519          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1520          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1521         {
1522          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1523          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1524          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1525          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1526         {
1527          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1528          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1529          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1530          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1531         {
1532          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1533          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1534          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1535          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1536         {
1537          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1538          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1539          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1540          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1541         {
1542          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1543          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1544          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1545          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1546         {
1547          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1548          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1549          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1550          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1551         {
1552          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1553          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1554          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1555          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1556         {
1557          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1558          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1559          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1560          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1561         {
1562          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1563          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1564          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1565          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1566 };
1567
1568 static struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1569         {
1570          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1571          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1572          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1573          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1574         {
1575          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1576          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1577          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1578          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1579         {
1580          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1581          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1582          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1583          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1584         {
1585          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1586          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1587          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1588          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1589         {
1590          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1591          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1592          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1593          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1594         {
1595          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1596          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1597          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1598          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1599         {
1600          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1601          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1602          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1603          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1604         {
1605          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1606          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1607          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1608          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1609         {
1610          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1611          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1612          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1613          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1614         {
1615          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1616          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1617          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1618          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1619         {
1620          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1621          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1622          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1623          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1624         {
1625          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1626          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1627          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1628          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1629         {
1630          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1631          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1632          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1633          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1634         {
1635          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1636          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1637          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1638          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1639         {
1640          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1641          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1642          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1643          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1644         {
1645          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1646          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1647          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1648          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1649         {
1650          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1651          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1652          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1653          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1654         {
1655          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1656          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1657          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1658          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1659         {
1660          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1661          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1662          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1663          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1664         {
1665          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1666          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1667          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1668          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1669         {
1670          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1671          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1672          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1673          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1674         {
1675          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1676          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1677          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1678          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1679         {
1680          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1681          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1682          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1683          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1684         {
1685          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1686          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1687          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1688          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1689         {
1690          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1691          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1692          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1693          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1694         {
1695          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1696          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1697          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1698          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1699         {
1700          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1701          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1702          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1703          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1704         {
1705          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1706          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1707          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1708          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1709         {
1710          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1711          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1712          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1713          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1714         {
1715          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1716          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1717          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1718          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1719         {
1720          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1721          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1722          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1723          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1724         {
1725          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1726          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1727          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1728          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1729         {
1730          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1731          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1732          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1733          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1734         {
1735          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1736          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1737          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1738          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1739         {
1740          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1741          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1742          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1743          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1744         {
1745          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1746          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1747          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1748          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1749         {
1750          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1751          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1752          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1753          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1754         {
1755          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1756          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1757          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1758          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1759         {
1760          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1761          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1762          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1763          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1764         {
1765          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1766          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1767          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1768          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1769         {
1770          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1771          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1772          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1773          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1774         {
1775          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1776          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1777          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1778          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1779         {
1780          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1781          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1782          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1783          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1784         {
1785          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1786          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1787          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1788          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1789         {
1790          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1791          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1792          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1793          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1794         {
1795          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1796          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1797          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1798          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1799         {
1800          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1801          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1802          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1803          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1804         {
1805          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1806          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1807          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1808          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1809         {
1810          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1811          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1812          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1813          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1814         {
1815          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1816          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1817          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1818          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1819         {
1820          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1821          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1822          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1823          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1824         {
1825          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1826          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1827          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1828          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1829         {
1830          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1831          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1832          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1833          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1834         {
1835          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1836          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1837          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1838          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1839         {
1840          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1841          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1842          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1843          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1844         {
1845          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1846          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1847          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1848          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1849         {
1850          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1851          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1852          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1853          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1854         {
1855          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1856          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1857          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1858          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1859         {
1860          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1861          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1862          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1863          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1864         {
1865          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1866          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1867          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1868          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1869         {
1870          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1871          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1872          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1873          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1874         {
1875          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1876          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1877          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1878          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1879         {
1880          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1881          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1882          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1883          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1884         {
1885          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1886          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1887          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1888          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1889         {
1890          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1891          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1892          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1893          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1894         {
1895          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1896          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1897          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1898          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1899         {
1900          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1901          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1902          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1903          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1904         {
1905          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1906          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1907          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1908          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1909         {
1910          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1911          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1912          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1913          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1914         {
1915          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1916          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1917          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1918          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1919         {
1920          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1921          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1922          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1923          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1924         {
1925          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1926          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1927          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1928          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1929         {
1930          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1931          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1932          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1933          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1934         {
1935          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1936          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1937          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1938          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1939         {
1940          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1941          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1942          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1943          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1944         {
1945          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1946          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1947          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1948          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1949         {
1950          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1951          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1952          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1953          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1954         {
1955          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1956          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1957          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1958          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1959         {
1960          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1961          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1962          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1963          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1964         {
1965          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1966          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1967          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1968          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1969         {
1970          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1971          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1972          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1973          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1974         {
1975          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1976          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1977          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1978          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1979         {
1980          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1981          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1982          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1983          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1984         {
1985          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1986          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1987          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1988          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1989         {
1990          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1991          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1992          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1993          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1994         {
1995          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1996          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1997          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1998          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1999         {
2000          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2001          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2002          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2003          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2004         {
2005          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2006          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2007          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2008          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2009         {
2010          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2011          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2012          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2013          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2014         {
2015          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2016          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2017          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2018          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2019         {
2020          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2021          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2022          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2023          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2024         {
2025          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2026          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2027          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2028          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2029         {
2030          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2031          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2032          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2033          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2034         {
2035          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2036          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2037          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2038          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2039         {
2040          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2041          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2042          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2043          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2044         {
2045          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2046          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2047          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2048          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2049         {
2050          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2051          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2052          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2053          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2054         {
2055          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2056          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2057          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2058          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2059         {
2060          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2061          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2062          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2063          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2064         {
2065          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2066          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2067          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2068          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2069         {
2070          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2071          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2072          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2073          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2074         {
2075          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2076          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2077          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2078          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2079         {
2080          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2081          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2082          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2083          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2084         {
2085          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2086          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2087          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2088          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2089         {
2090          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2091          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2092          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2093          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2094         {
2095          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2096          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2097          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2098          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2099         {
2100          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2101          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2102          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2103          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2104         {
2105          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2106          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2107          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2108          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2109         {
2110          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2111          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2112          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2113          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2114         {
2115          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2116          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2117          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2118          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2119         {
2120          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2121          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2122          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2123          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2124         {
2125          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2126          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2127          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2128          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2129         {
2130          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2131          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2132          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2133          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2134         {
2135          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2136          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2137          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2138          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2139         {
2140          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2141          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2142          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2143          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2144         {
2145          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2146          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2147          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2148          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2149         {
2150          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2151          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2152          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2153          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2154         {
2155          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2156          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2157          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2158          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2159         {
2160          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2161          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2162          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2163          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2164         {
2165          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2166          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2167          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2168          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2169         {
2170          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2171          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2172          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2173          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2174         {
2175          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2176          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2177          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2178          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2179         {
2180          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2181          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2182          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2183          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2184         {
2185          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2186          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2187          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2188          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2189 };
2190
2191 static struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2192         {
2193          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2194          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2195          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2196          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2197         {
2198          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2199          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2200          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2201          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2202         {
2203          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2204          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2205          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2206          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2207         {
2208          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2209          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2210          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2211          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2212         {
2213          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2214          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2215          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2216          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2217         {
2218          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2219          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2220          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2221          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2222         {
2223          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2224          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2225          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2226          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2227         {
2228          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2229          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2230          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2231          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2232         {
2233          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2234          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2235          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2236          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2237         {
2238          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2239          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2240          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2241          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2242         {
2243          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2244          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2245          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2246          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2247         {
2248          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2249          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2250          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2251          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2252         {
2253          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2254          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2255          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2256          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2257         {
2258          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2259          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2260          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2261          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2262         {
2263          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2264          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2265          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2266          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2267         {
2268          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2269          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2270          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2271          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2272         {
2273          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2274          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2275          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2276          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2277         {
2278          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2279          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2280          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2281          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2282         {
2283          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2284          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2285          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2286          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2287         {
2288          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2289          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2290          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2291          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2292         {
2293          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2294          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2295          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2296          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2297         {
2298          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2299          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2300          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2301          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2302         {
2303          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2304          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2305          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2306          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2307         {
2308          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2309          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2310          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2311          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2312         {
2313          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2314          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2315          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2316          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2317         {
2318          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2319          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2320          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2321          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2322         {
2323          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2324          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2325          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2326          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2327         {
2328          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2329          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2330          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2331          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2332         {
2333          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2334          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2335          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2336          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2337         {
2338          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2339          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2340          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2341          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2342         {
2343          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2344          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2345          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2346          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2347         {
2348          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2349          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2350          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2351          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2352         {
2353          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2354          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2355          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2356          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2357         {
2358          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2359          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2360          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2361          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2362         {
2363          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2364          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2365          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2366          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2367         {
2368          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2369          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2370          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2371          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2372         {
2373          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2374          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2375          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2376          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2377         {
2378          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2379          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2380          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2381          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2382         {
2383          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2384          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2385          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2386          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2387         {
2388          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2389          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2390          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2391          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2392         {
2393          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2394          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2395          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2396          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2397         {
2398          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2399          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2400          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2401          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2402         {
2403          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2404          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2405          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2406          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2407         {
2408          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2409          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2410          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2411          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2412         {
2413          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2414          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2415          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2416          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2417         {
2418          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2419          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2420          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2421          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2422         {
2423          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2424          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2425          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2426          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2427         {
2428          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2429          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2430          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2431          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2432         {
2433          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2434          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2435          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2436          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2437         {
2438          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2439          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2440          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2441          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2442         {
2443          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2444          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2445          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2446          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2447         {
2448          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2449          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2450          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2451          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2452         {
2453          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2454          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2455          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2456          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2457         {
2458          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2459          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2460          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2461          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2462         {
2463          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2464          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2465          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2466          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2467         {
2468          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2469          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2470          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2471          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2472         {
2473          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2474          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2475          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2476          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2477         {
2478          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2479          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2480          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2481          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2482         {
2483          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2484          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2485          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2486          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2487         {
2488          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2489          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2490          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2491          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2492         {
2493          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2494          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2495          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2496          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2497         {
2498          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2499          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2500          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2501          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2502         {
2503          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2504          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2505          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2506          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2507         {
2508          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2509          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2510          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2511          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2512         {
2513          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2514          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2515          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2516          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2517         {
2518          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2519          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2520          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2521          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2522         {
2523          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2524          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2525          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2526          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2527         {
2528          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2529          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2530          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2531          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2532         {
2533          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2534          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2535          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2536          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2537         {
2538          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2539          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2540          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2541          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2542         {
2543          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2544          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2545          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2546          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2547         {
2548          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2549          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2550          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2551          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2552         {
2553          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2554          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2555          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2556          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2557         {
2558          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2559          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2560          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2561          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2562         {
2563          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2564          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2565          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2566          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2567         {
2568          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2569          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2570          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2571          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2572         {
2573          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2574          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2575          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2576          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2577         {
2578          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2579          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2580          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2581          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2582         {
2583          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2584          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2585          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2586          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2587         {
2588          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2589          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2590          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2591          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2592         {
2593          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2594          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2595          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2596          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2597         {
2598          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2599          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2600          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2601          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2602         {
2603          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2604          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2605          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2606          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2607         {
2608          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2609          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2610          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2611          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2612         {
2613          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2614          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2615          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2616          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2617         {
2618          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2619          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2620          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2621          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2622         {
2623          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2624          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2625          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2626          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2627         {
2628          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2629          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2630          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2631          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2632         {
2633          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2634          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2635          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2636          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2637         {
2638          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2639          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2640          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2641          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2642         {
2643          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2644          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2645          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2646          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2647         {
2648          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2649          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2650          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2651          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2652         {
2653          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2654          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2655          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2656          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2657         {
2658          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2659          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2660          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2661          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2662         {
2663          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2664          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2665          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2666          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2667         {
2668          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2669          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2670          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2671          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2672         {
2673          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2674          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2675          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2676          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2677         {
2678          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2679          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2680          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2681          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2682         {
2683          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2684          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2685          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2686          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2687         {
2688          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2689          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2690          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2691          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2692         {
2693          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2694          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2695          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2696          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2697         {
2698          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2699          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2700          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2701          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2702         {
2703          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2704          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2705          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2706          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2707         {
2708          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2709          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2710          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2711          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2712         {
2713          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2714          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2715          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2716          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2717         {
2718          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2719          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2720          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2721          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2722         {
2723          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2724          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2725          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2726          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2727         {
2728          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2729          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2730          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2731          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2732         {
2733          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2734          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2735          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2736          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2737         {
2738          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2739          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2740          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2741          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2742         {
2743          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2744          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2745          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2746          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2747         {
2748          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2749          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2750          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2751          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2752         {
2753          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2754          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2755          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2756          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2757         {
2758          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2759          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2760          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2761          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2762         {
2763          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2764          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2765          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2766          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2767         {
2768          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2769          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2770          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2771          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2772         {
2773          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2774          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2775          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2776          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2777         {
2778          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2779          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2780          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2781          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2782         {
2783          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2784          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2785          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2786          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2787         {
2788          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2789          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2790          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2791          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2792         {
2793          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2794          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2795          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2796          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2797         {
2798          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2799          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2800          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2801          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2802         {
2803          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2804          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2805          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2806          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2807         {
2808          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2809          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2810          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2811          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2812 };
2813
2814 static struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2815         {
2816          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2817          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2818          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2819          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2820         {
2821          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2822          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2823          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2824          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2825         {
2826          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2827          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2828          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2829          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2830         {
2831          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2832          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2833          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2834          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2835         {
2836          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2837          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2838          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2839          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2840         {
2841          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2842          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2843          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2844          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2845         {
2846          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2847          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2848          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2849          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2850         {
2851          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2852          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2853          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2854          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2855         {
2856          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2857          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2858          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2859          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2860         {
2861          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2862          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2863          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2864          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2865         {
2866          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2867          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2868          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2869          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2870         {
2871          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2872          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2873          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2874          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2875         {
2876          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2877          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2878          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2879          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2880         {
2881          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2882          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2883          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2884          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2885         {
2886          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2887          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2888          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2889          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2890         {
2891          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2892          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2893          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2894          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2895         {
2896          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2897          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2898          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2899          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2900         {
2901          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2902          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2903          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2904          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2905         {
2906          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2907          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2908          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2909          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2910         {
2911          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2912          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2913          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2914          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2915         {
2916          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2917          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2918          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2919          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2920         {
2921          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2922          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2923          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2924          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2925         {
2926          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2927          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2928          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2929          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2930         {
2931          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2932          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2933          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2934          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2935         {
2936          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2937          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2938          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2939          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2940         {
2941          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2942          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2943          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2944          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2945         {
2946          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2947          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2948          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2949          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2950         {
2951          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2952          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2953          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2954          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2955         {
2956          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2957          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2958          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2959          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2960         {
2961          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2962          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2963          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2964          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2965         {
2966          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2967          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2968          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2969          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2970         {
2971          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2972          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2973          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2974          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2975         {
2976          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2977          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2978          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2979          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2980         {
2981          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2982          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2983          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2984          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2985         {
2986          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2987          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2988          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2989          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2990         {
2991          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2992          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2993          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2994          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2995         {
2996          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2997          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2998          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2999          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3000         {
3001          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3002          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3003          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3004          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3005         {
3006          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3007          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3008          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3009          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3010         {
3011          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3012          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3013          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3014          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3015         {
3016          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3017          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3018          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3019          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3020         {
3021          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3022          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3023          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3024          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3025         {
3026          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3027          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3028          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3029          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3030         {
3031          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3032          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3033          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3034          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3035         {
3036          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3037          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3038          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3039          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3040         {
3041          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3042          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3043          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3044          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3045         {
3046          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3047          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3048          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3049          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3050         {
3051          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3052          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3053          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3054          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3055         {
3056          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3057          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3058          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3059          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3060         {
3061          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3062          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3063          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3064          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3065         {
3066          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3067          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3068          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3069          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3070         {
3071          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3072          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3073          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3074          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3075         {
3076          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3077          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3078          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3079          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3080         {
3081          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3082          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3083          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3084          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3085         {
3086          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3087          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3088          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3089          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3090         {
3091          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3092          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3093          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3094          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3095         {
3096          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3097          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3098          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3099          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3100         {
3101          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3102          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3103          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3104          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3105         {
3106          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3107          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3108          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3109          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3110         {
3111          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3112          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3113          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3114          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3115         {
3116          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3117          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3118          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3119          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3120         {
3121          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3122          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3123          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3124          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3125         {
3126          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3127          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3128          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3129          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3130         {
3131          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3132          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3133          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3134          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3135         {
3136          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3137          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3138          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3139          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3140         {
3141          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3142          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3143          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3144          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3145         {
3146          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3147          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3148          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3149          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3150         {
3151          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3152          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3153          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3154          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3155         {
3156          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3157          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3158          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3159          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3160         {
3161          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3162          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3163          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3164          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3165         {
3166          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3167          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3168          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3169          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3170         {
3171          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3172          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3173          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3174          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3175         {
3176          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3177          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3178          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3179          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3180         {
3181          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3182          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3183          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3184          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3185         {
3186          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3187          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3188          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3189          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3190         {
3191          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3192          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3193          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3194          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3195         {
3196          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3197          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3198          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3199          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3200         {
3201          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3202          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3203          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3204          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3205         {
3206          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3207          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3208          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3209          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3210         {
3211          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3212          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3213          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3214          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3215         {
3216          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3217          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3218          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3219          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3220         {
3221          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3222          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3223          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3224          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3225         {
3226          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3227          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3228          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3229          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3230         {
3231          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3232          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3233          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3234          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3235         {
3236          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3237          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3238          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3239          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3240         {
3241          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3242          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3243          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3244          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3245         {
3246          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3247          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3248          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3249          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3250         {
3251          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3252          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3253          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3254          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3255         {
3256          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3257          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3258          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3259          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3260         {
3261          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3262          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3263          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3264          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3265         {
3266          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3267          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3268          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3269          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3270         {
3271          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3272          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3273          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3274          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3275         {
3276          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3277          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3278          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3279          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3280         {
3281          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3282          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3283          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3284          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3285         {
3286          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3287          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3288          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3289          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3290         {
3291          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3292          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3293          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3294          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3295         {
3296          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3297          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3298          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3299          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3300         {
3301          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3302          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3303          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3304          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3305         {
3306          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3307          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3308          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3309          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3310         {
3311          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3312          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3313          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3314          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3315         {
3316          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3317          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3318          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3319          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3320         {
3321          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3322          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3323          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3324          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3325         {
3326          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3327          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3328          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3329          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3330         {
3331          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3332          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3333          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3334          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3335         {
3336          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3337          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3338          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3339          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3340         {
3341          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3342          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3343          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3344          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3345         {
3346          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3347          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3348          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3349          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3350         {
3351          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3352          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3353          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3354          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3355         {
3356          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3357          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3358          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3359          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3360         {
3361          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3362          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3363          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3364          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3365         {
3366          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3367          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3368          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3369          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3370         {
3371          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3372          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3373          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3374          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3375         {
3376          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3377          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3378          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3379          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3380         {
3381          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3382          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3383          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3384          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3385         {
3386          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3387          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3388          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3389          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3390         {
3391          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3392          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3393          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3394          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3395         {
3396          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3397          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3398          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3399          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3400         {
3401          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3402          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3403          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3404          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3405         {
3406          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3407          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3408          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3409          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3410         {
3411          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3412          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3413          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3414          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3415         {
3416          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3417          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3418          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3419          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3420         {
3421          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3422          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3423          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3424          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3425         {
3426          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3427          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3428          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3429          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3430         {
3431          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3432          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3433          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3434          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3435 };
3436
3437 static struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3438         {
3439          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3440          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3441          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3442          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3443         {
3444          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3445          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3446          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3447          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3448         {
3449          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3450          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3451          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3452          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3453         {
3454          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3455          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3456          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3457          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3458         {
3459          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3460          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3461          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3462          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3463         {
3464          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3465          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3466          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3467          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3468         {
3469          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3470          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3471          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3472          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3473         {
3474          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3475          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3476          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3477          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3478         {
3479          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3480          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3481          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3482          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3483         {
3484          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3485          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3486          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3487          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3488         {
3489          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3490          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3491          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3492          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3493         {
3494          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3495          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3496          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3497          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3498         {
3499          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3500          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3501          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3502          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3503         {
3504          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3505          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3506          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3507          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3508         {
3509          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3510          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3511          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3512          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3513         {
3514          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3515          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3516          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3517          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3518         {
3519          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3520          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3521          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3522          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3523         {
3524          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3525          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3526          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3527          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3528         {
3529          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3530          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3531          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3532          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3533         {
3534          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3535          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3536          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3537          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3538         {
3539          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3540          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3541          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3542          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3543         {
3544          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3545          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3546          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3547          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3548         {
3549          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3550          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3551          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3552          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3553         {
3554          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3555          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3556          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3557          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3558         {
3559          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3560          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3561          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3562          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3563         {
3564          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3565          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3566          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3567          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3568         {
3569          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3570          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3571          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3572          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3573         {
3574          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3575          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3576          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3577          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3578         {
3579          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3580          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3581          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3582          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3583         {
3584          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3585          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3586          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3587          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3588         {
3589          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3590          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3591          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3592          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3593         {
3594          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3595          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3596          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3597          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3598         {
3599          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3600          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3601          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3602          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3603         {
3604          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3605          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3606          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3607          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3608         {
3609          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3610          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3611          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3612          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3613         {
3614          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3615          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3616          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3617          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3618         {
3619          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3620          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3621          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3622          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3623         {
3624          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3625          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3626          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3627          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3628         {
3629          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3630          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3631          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3632          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3633         {
3634          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3635          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3636          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3637          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3638         {
3639          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3640          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3641          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3642          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3643         {
3644          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3645          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3646          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3647          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3648         {
3649          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3650          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3651          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3652          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3653         {
3654          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3655          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3656          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3657          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3658         {
3659          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3660          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3661          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3662          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3663         {
3664          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3665          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3666          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3667          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3668         {
3669          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3670          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3671          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3672          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3673         {
3674          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3675          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3676          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3677          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3678         {
3679          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3680          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3681          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3682          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3683         {
3684          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3685          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3686          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3687          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3688         {
3689          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3690          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3691          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3692          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3693         {
3694          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3695          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3696          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3697          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3698         {
3699          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3700          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3701          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3702          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3703         {
3704          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3705          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3706          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3707          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3708         {
3709          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3710          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3711          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3712          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3713         {
3714          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3715          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3716          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3717          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3718         {
3719          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3720          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3721          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3722          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3723         {
3724          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3725          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3726          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3727          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3728         {
3729          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3730          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3731          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3732          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3733         {
3734          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3735          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3736          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3737          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3738         {
3739          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3740          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3741          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3742          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3743         {
3744          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3745          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3746          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3747          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3748         {
3749          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3750          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3751          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3752          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3753         {
3754          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3755          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3756          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3757          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3758         {
3759          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3760          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3761          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3762          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3763         {
3764          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3765          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3766          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3767          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3768         {
3769          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3770          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3771          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3772          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3773         {
3774          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3775          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3776          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3777          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3778         {
3779          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3780          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3781          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3782          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3783         {
3784          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3785          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3786          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3787          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3788         {
3789          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3790          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3791          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3792          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3793         {
3794          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3795          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3796          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3797          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3798         {
3799          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3800          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3801          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3802          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3803         {
3804          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3805          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3806          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3807          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3808         {
3809          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3810          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3811          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3812          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3813         {
3814          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3815          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3816          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3817          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3818         {
3819          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3820          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3821          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3822          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3823         {
3824          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3825          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3826          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3827          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3828         {
3829          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3830          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3831          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3832          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3833         {
3834          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3835          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3836          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3837          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3838         {
3839          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3840          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3841          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3842          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3843         {
3844          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3845          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3846          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3847          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3848         {
3849          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3850          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3851          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3852          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3853         {
3854          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3855          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3856          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3857          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3858         {
3859          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3860          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3861          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3862          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3863         {
3864          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3865          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3866          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3867          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3868         {
3869          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3870          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3871          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3872          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3873         {
3874          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3875          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3876          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3877          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3878         {
3879          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3880          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3881          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3882          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3883         {
3884          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3885          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3886          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3887          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3888         {
3889          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3890          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3891          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3892          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3893         {
3894          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3895          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3896          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3897          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3898         {
3899          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3900          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3901          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3902          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3903         {
3904          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3905          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3906          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3907          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3908         {
3909          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3910          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3911          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3912          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3913         {
3914          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3915          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3916          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3917          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3918         {
3919          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3920          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3921          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3922          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3923         {
3924          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3925          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3926          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3927          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3928         {
3929          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3930          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3931          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3932          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3933         {
3934          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3935          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3936          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3937          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3938         {
3939          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3940          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3941          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3942          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3943         {
3944          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3945          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3946          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3947          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3948         {
3949          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3950          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3951          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3952          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3953         {
3954          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3955          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3956          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3957          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3958         {
3959          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3960          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3961          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3962          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3963         {
3964          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3965          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3966          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3967          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3968         {
3969          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3970          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3971          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3972          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3973         {
3974          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3975          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3976          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3977          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3978         {
3979          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3980          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3981          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3982          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3983         {
3984          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3985          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3986          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3987          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3988         {
3989          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3990          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3991          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3992          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3993         {
3994          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3995          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3996          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3997          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3998         {
3999          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4000          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4001          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4002          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4003         {
4004          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4005          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4006          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4007          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4008         {
4009          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4010          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4011          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4012          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4013         {
4014          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4015          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4016          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4017          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4018         {
4019          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4020          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4021          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4022          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4023         {
4024          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4025          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4026          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4027          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4028         {
4029          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4030          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4031          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4032          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4033         {
4034          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4035          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4036          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4037          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4038         {
4039          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4040          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4041          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4042          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4043         {
4044          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4045          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4046          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4047          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4048         {
4049          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4050          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4051          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4052          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4053         {
4054          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4055          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4056          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4057          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4058 };
4059
4060 static struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4061         {
4062          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4063          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4064          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4065          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4066         {
4067          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4068          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4069          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4070          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4071         {
4072          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4073          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4074          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4075          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4076         {
4077          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4078          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4079          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4080          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4081         {
4082          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4083          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4084          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4085          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4086         {
4087          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4088          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4089          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4090          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4091         {
4092          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4093          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4094          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4095          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4096         {
4097          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4098          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4099          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4100          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4101         {
4102          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4103          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4104          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4105          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4106         {
4107          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4108          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4109          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4110          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4111         {
4112          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4113          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4114          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4115          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4116         {
4117          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4118          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4119          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4120          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4121         {
4122          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4123          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4124          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4125          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4126         {
4127          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4128          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4129          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4130          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4131         {
4132          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4133          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4134          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4135          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4136         {
4137          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4138          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4139          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4140          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4141         {
4142          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4143          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4144          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4145          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4146         {
4147          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4148          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4149          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4150          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4151         {
4152          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4153          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4154          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4155          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4156         {
4157          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4158          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4159          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4160          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4161         {
4162          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4163          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4164          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4165          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4166         {
4167          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4168          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4169          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4170          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4171         {
4172          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4173          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4174          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4175          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4176         {
4177          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4178          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4179          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4180          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4181         {
4182          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4183          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4184          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4185          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4186         {
4187          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4188          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4189          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4190          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4191         {
4192          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4193          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4194          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4195          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4196         {
4197          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4198          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4199          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4200          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4201         {
4202          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4203          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4204          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4205          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4206         {
4207          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4208          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4209          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4210          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4211         {
4212          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4213          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4214          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4215          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4216         {
4217          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4218          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4219          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4220          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4221         {
4222          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4223          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4224          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4225          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4226         {
4227          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4228          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4229          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4230          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4231         {
4232          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4233          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4234          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4235          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4236         {
4237          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4238          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4239          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4240          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4241         {
4242          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4243          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4244          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4245          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4246         {
4247          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4248          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4249          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4250          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4251         {
4252          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4253          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4254          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4255          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4256         {
4257          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4258          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4259          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4260          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4261         {
4262          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4263          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4264          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4265          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4266         {
4267          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4268          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4269          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4270          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4271         {
4272          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4273          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4274          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4275          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4276         {
4277          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4278          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4279          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4280          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4281         {
4282          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4283          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4284          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4285          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4286         {
4287          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4288          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4289          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4290          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4291         {
4292          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4293          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4294          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4295          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4296         {
4297          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4298          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4299          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4300          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4301         {
4302          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4303          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4304          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4305          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4306         {
4307          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4308          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4309          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4310          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4311         {
4312          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4313          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4314          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4315          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4316         {
4317          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4318          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4319          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4320          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4321         {
4322          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4323          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4324          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4325          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4326         {
4327          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4328          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4329          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4330          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4331         {
4332          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4333          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4334          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4335          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4336         {
4337          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4338          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4339          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4340          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4341         {
4342          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4343          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4344          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4345          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4346         {
4347          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4348          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4349          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4350          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4351         {
4352          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4353          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4354          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4355          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4356         {
4357          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4358          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4359          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4360          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4361         {
4362          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4363          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4364          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4365          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4366         {
4367          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4368          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4369          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4370          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4371         {
4372          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4373          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4374          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4375          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4376         {
4377          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4378          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4379          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4380          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4381         {
4382          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4383          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4384          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4385          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4386         {
4387          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4388          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4389          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4390          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4391         {
4392          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4393          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4394          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4395          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4396         {
4397          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4398          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4399          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4400          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4401         {
4402          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4403          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4404          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4405          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4406         {
4407          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4408          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4409          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4410          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4411         {
4412          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4413          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4414          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4415          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4416         {
4417          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4418          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4419          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4420          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4421         {
4422          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4423          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4424          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4425          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4426         {
4427          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4428          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4429          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4430          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4431         {
4432          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4433          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4434          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4435          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4436         {
4437          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4438          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4439          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4440          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4441         {
4442          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4443          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4444          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4445          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4446         {
4447          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4448          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4449          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4450          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4451         {
4452          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4453          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4454          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4455          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4456         {
4457          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4458          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4459          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4460          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4461         {
4462          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4463          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4464          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4465          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4466         {
4467          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4468          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4469          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4470          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4471         {
4472          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4473          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4474          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4475          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4476         {
4477          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4478          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4479          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4480          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4481         {
4482          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4483          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4484          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4485          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4486         {
4487          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4488          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4489          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4490          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4491         {
4492          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4493          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4494          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4495          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4496         {
4497          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4498          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4499          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4500          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4501         {
4502          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4503          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4504          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4505          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4506         {
4507          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4508          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4509          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4510          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4511         {
4512          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4513          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4514          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4515          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4516         {
4517          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4518          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4519          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4520          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4521         {
4522          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4523          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4524          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4525          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4526         {
4527          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4528          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4529          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4530          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4531         {
4532          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4533          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4534          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4535          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4536         {
4537          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4538          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4539          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4540          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4541         {
4542          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4543          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4544          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4545          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4546         {
4547          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4548          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4549          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4550          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4551         {
4552          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4553          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4554          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4555          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4556         {
4557          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4558          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4559          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4560          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4561         {
4562          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4563          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4564          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4565          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4566         {
4567          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4568          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4569          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4570          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4571         {
4572          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4573          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4574          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4575          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4576         {
4577          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4578          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4579          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4580          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4581         {
4582          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4583          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4584          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4585          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4586         {
4587          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4588          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4589          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4590          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4591         {
4592          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4593          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4594          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4595          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4596         {
4597          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4598          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4599          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4600          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4601         {
4602          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4603          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4604          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4605          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4606         {
4607          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4608          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4609          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4610          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4611         {
4612          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4613          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4614          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4615          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4616         {
4617          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4618          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4619          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4620          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4621         {
4622          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4623          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4624          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4625          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4626         {
4627          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4628          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4629          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4630          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4631         {
4632          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4633          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4634          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4635          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4636         {
4637          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4638          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4639          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4640          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4641         {
4642          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4643          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4644          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4645          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4646         {
4647          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4648          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4649          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4650          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4651         {
4652          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4653          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4654          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4655          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4656         {
4657          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4658          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4659          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4660          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4661         {
4662          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4663          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4664          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4665          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4666         {
4667          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4668          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4669          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4670          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4671         {
4672          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4673          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4674          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4675          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4676         {
4677          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4678          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4679          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4680          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4681 };
4682
4683 static struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4684         {
4685          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4686          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4687          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4688          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4689         {
4690          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4691          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4692          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4693          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4694         {
4695          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4696          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4697          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4698          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4699         {
4700          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4701          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4702          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4703          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4704         {
4705          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4706          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4707          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4708          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4709         {
4710          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4711          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4712          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4713          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4714         {
4715          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4716          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4717          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4718          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4719         {
4720          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4721          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4722          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4723          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4724         {
4725          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4726          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4727          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4728          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4729         {
4730          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4731          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4732          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4733          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4734         {
4735          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4736          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4737          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4738          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4739         {
4740          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4741          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4742          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4743          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4744         {
4745          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4746          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4747          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4748          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4749         {
4750          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4751          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4752          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4753          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4754         {
4755          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4756          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4757          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4758          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4759         {
4760          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4761          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4762          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4763          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4764         {
4765          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4766          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4767          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4768          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4769         {
4770          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4771          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4772          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4773          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4774         {
4775          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4776          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4777          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4778          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4779         {
4780          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4781          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4782          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4783          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4784         {
4785          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4786          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4787          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4788          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4789         {
4790          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4791          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4792          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4793          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4794         {
4795          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4796          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4797          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4798          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4799         {
4800          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4801          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4802          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4803          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4804         {
4805          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4806          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4807          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4808          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4809         {
4810          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4811          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4812          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4813          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4814         {
4815          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4816          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4817          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4818          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4819         {
4820          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4821          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4822          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4823          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4824         {
4825          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4826          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4827          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4828          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4829         {
4830          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4831          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4832          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4833          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4834         {
4835          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4836          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4837          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4838          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4839         {
4840          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4841          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4842          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4843          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4844         {
4845          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4846          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4847          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4848          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4849         {
4850          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4851          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4852          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4853          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4854         {
4855          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4856          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4857          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4858          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4859         {
4860          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4861          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4862          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4863          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4864         {
4865          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4866          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4867          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4868          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4869         {
4870          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4871          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4872          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4873          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4874         {
4875          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4876          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4877          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4878          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4879         {
4880          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4881          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4882          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4883          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4884         {
4885          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4886          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4887          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4888          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4889         {
4890          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4891          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4892          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4893          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4894         {
4895          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4896          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4897          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4898          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4899         {
4900          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4901          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4902          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4903          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4904         {
4905          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4906          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4907          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4908          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4909         {
4910          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4911          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4912          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4913          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4914         {
4915          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4916          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4917          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4918          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4919         {
4920          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4921          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4922          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4923          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4924         {
4925          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4926          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4927          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4928          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4929         {
4930          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4931          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4932          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4933          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4934         {
4935          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4936          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4937          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4938          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4939         {
4940          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4941          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4942          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4943          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4944         {
4945          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4946          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4947          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4948          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4949         {
4950          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4951          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4952          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4953          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4954         {
4955          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4956          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4957          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4958          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4959         {
4960          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4961          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4962          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4963          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4964         {
4965          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4966          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4967          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4968          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4969         {
4970          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4971          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4972          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4973          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4974         {
4975          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4976          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4977          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4978          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4979         {
4980          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4981          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4982          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4983          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4984         {
4985          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4986          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4987          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4988          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4989         {
4990          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4991          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4992          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4993          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4994         {
4995          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4996          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4997          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4998          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4999         {
5000          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5001          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5002          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5003          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5004         {
5005          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5006          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5007          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5008          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5009         {
5010          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5011          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5012          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5013          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5014         {
5015          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5016          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5017          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5018          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5019         {
5020          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5021          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5022          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5023          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5024         {
5025          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5026          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5027          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5028          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5029         {
5030          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5031          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5032          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5033          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5034         {
5035          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5036          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5037          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5038          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5039         {
5040          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5041          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5042          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5043          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5044         {
5045          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5046          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5047          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5048          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5049         {
5050          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5051          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5052          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5053          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5054         {
5055          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5056          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5057          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5058          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5059         {
5060          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5061          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5062          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5063          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5064         {
5065          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5066          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5067          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5068          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5069         {
5070          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5071          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5072          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5073          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5074         {
5075          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5076          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5077          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5078          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5079         {
5080          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5081          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5082          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5083          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5084         {
5085          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5086          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5087          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5088          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5089         {
5090          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5091          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5092          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5093          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5094         {
5095          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5096          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5097          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5098          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5099         {
5100          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5101          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5102          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5103          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5104         {
5105          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5106          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5107          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5108          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5109         {
5110          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5111          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5112          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5113          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5114         {
5115          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5116          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5117          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5118          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5119         {
5120          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5121          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5122          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5123          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5124         {
5125          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5126          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5127          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5128          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5129         {
5130          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5131          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5132          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5133          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5134         {
5135          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5136          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5137          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5138          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5139         {
5140          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5141          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5142          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5143          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5144         {
5145          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5146          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5147          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5148          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5149         {
5150          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5151          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5152          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5153          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5154         {
5155          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5156          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5157          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5158          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5159         {
5160          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5161          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5162          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5163          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5164         {
5165          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5166          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5167          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5168          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5169         {
5170          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5171          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5172          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5173          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5174         {
5175          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5176          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5177          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5178          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5179         {
5180          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5181          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5182          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5183          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5184         {
5185          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5186          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5187          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5188          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5189         {
5190          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5191          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5192          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5193          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5194         {
5195          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5196          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5197          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5198          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5199         {
5200          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5201          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5202          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5203          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5204         {
5205          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5206          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5207          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5208          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5209         {
5210          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5211          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5212          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5213          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5214         {
5215          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5216          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5217          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5218          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5219         {
5220          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5221          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5222          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5223          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5224         {
5225          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5226          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5227          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5228          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5229         {
5230          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5231          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5232          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5233          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5234         {
5235          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5236          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5237          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5238          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5239         {
5240          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5241          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5242          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5243          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5244         {
5245          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5246          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5247          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5248          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5249         {
5250          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5251          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5252          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5253          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5254         {
5255          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5256          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5257          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5258          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5259         {
5260          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5261          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5262          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5263          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5264         {
5265          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5266          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5267          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5268          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5269         {
5270          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5271          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5272          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5273          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5274         {
5275          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5276          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5277          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5278          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5279         {
5280          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5281          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5282          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5283          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5284         {
5285          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5286          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5287          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5288          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5289         {
5290          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5291          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5292          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5293          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5294         {
5295          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5296          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5297          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5298          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5299         {
5300          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5301          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5302          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5303          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5304 };
5305
5306 static struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5307         {
5308          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5309          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5310          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5311          0x0215,
5312          0x0216,
5313          },
5314         {
5315          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5316          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5317          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5318          0x0214,
5319          0x0215,
5320          },
5321         {
5322          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5323          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5324          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5325          0x0213,
5326          0x0214,
5327          },
5328         {
5329          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5330          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5331          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5332          0x0212,
5333          0x0213,
5334          },
5335         {
5336          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5337          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5338          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5339          0x0211,
5340          0x0212,
5341          },
5342         {
5343          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5344          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5345          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5346          0x020f,
5347          0x0211,
5348          },
5349         {
5350          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5351          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5352          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5353          0x020e,
5354          0x020f,
5355          },
5356         {
5357          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5358          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5359          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5360          0x020d,
5361          0x020e,
5362          },
5363         {
5364          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5365          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5366          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5367          0x020c,
5368          0x020d,
5369          },
5370         {
5371          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5372          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5373          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5374          0x020b,
5375          0x020c,
5376          },
5377         {
5378          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5379          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5380          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5381          0x020a,
5382          0x020b,
5383          },
5384         {
5385          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5386          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5387          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5388          0x0209,
5389          0x020a,
5390          },
5391         {
5392          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5393          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5394          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5395          0x0208,
5396          0x0209,
5397          },
5398         {
5399          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5400          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5401          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5402          0x0207,
5403          0x0208,
5404          },
5405         {
5406          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5407          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5408          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5409          0x0206,
5410          0x0207,
5411          },
5412         {
5413          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5414          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5415          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5416          0x0205,
5417          0x0206,
5418          },
5419         {
5420          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5421          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5422          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5423          0x0204,
5424          0x0205,
5425          },
5426         {
5427          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5428          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5429          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5430          0x0203,
5431          0x0204,
5432          },
5433         {
5434          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5435          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5436          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5437          0x0202,
5438          0x0203,
5439          },
5440         {
5441          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5442          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5443          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5444          0x0201,
5445          0x0202,
5446          },
5447         {
5448          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5449          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5450          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5451          0x0200,
5452          0x0201,
5453          },
5454         {
5455          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5456          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5457          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5458          0x01ff,
5459          0x0200,
5460          },
5461         {
5462          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5463          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5464          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5465          0x01fe,
5466          0x01ff,
5467          },
5468         {
5469          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5470          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5471          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5472          0x01fc,
5473          0x01fd,
5474          },
5475         {
5476          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5477          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5478          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5479          0x01fb,
5480          0x01fc,
5481          },
5482         {
5483          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5484          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5485          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5486          0x01fa,
5487          0x01fb,
5488          },
5489         {
5490          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5491          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5492          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5493          0x01f9,
5494          0x01fa,
5495          },
5496         {
5497          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5498          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5499          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5500          0x01f8,
5501          0x01f9,
5502          },
5503         {
5504          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5505          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5506          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5507          0x01f7,
5508          0x01f8,
5509          },
5510         {
5511          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5512          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5513          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5514          0x01f6,
5515          0x01f7,
5516          },
5517         {
5518          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5519          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5520          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5521          0x01f5,
5522          0x01f6,
5523          },
5524         {
5525          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5526          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5527          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5528          0x01f4,
5529          0x01f5,
5530          },
5531         {
5532          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5533          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5534          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5535          0x01f3,
5536          0x01f4,
5537          },
5538         {
5539          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5540          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5541          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5542          0x01f2,
5543          0x01f3,
5544          },
5545         {
5546          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5547          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5548          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5549          0x01f1,
5550          0x01f2,
5551          },
5552         {
5553          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5554          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5555          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5556          0x01f0,
5557          0x01f1,
5558          },
5559         {
5560          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5561          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5562          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5563          0x01f0,
5564          0x01f0,
5565          },
5566         {
5567          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5568          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5569          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5570          0x01ef,
5571          0x01f0,
5572          },
5573         {
5574          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5575          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5576          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5577          0x01ee,
5578          0x01ef,
5579          },
5580         {
5581          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5582          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5583          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5584          0x01ed,
5585          0x01ee,
5586          },
5587         {
5588          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5589          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5590          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5591          0x01ec,
5592          0x01ed,
5593          },
5594         {
5595          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5596          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5597          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5598          0x01eb,
5599          0x01ec,
5600          },
5601         {
5602          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5603          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5604          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5605          0x01ea,
5606          0x01eb,
5607          },
5608         {
5609          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5610          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5611          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5612          0x01e9,
5613          0x01ea,
5614          },
5615         {
5616          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5617          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5618          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5619          0x01e8,
5620          0x01e9,
5621          },
5622         {
5623          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5624          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5625          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5626          0x01e7,
5627          0x01e8,
5628          },
5629         {
5630          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5631          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5632          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5633          0x01e6,
5634          0x01e7,
5635          },
5636         {
5637          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5638          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5639          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5640          0x01e5,
5641          0x01e6,
5642          },
5643         {
5644          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5645          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5646          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5647          0x01e5,
5648          0x01e5,
5649          },
5650         {
5651          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5652          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5653          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5654          0x01e4,
5655          0x01e5,
5656          },
5657         {
5658          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5659          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5660          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5661          0x01e3,
5662          0x01e4,
5663          },
5664         {
5665          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5666          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5667          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5668          0x01e2,
5669          0x01e3,
5670          },
5671         {
5672          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5673          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5674          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5675          0x01e1,
5676          0x01e2,
5677          },
5678         {
5679          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5680          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5681          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5682          0x01e0,
5683          0x01e1,
5684          },
5685         {
5686          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5687          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5688          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5689          0x01df,
5690          0x01e0,
5691          },
5692         {
5693          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5694          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5695          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5696          0x01de,
5697          0x01df,
5698          },
5699         {
5700          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5701          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5702          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5703          0x01dd,
5704          0x01de,
5705          },
5706         {
5707          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5708          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5709          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5710          0x01dd,
5711          0x01dd,
5712          },
5713         {
5714          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5715          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5716          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5717          0x01dc,
5718          0x01dd,
5719          },
5720         {
5721          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5722          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5723          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5724          0x01db,
5725          0x01dc,
5726          },
5727         {
5728          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5729          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5730          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5731          0x01da,
5732          0x01db,
5733          },
5734         {
5735          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5736          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5737          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5738          0x01d9,
5739          0x01da,
5740          },
5741         {
5742          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5743          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5744          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5745          0x01d8,
5746          0x01d9,
5747          },
5748         {
5749          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5750          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5751          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5752          0x01d7,
5753          0x01d8,
5754          },
5755         {
5756          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5757          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5758          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5759          0x01d7,
5760          0x01d7,
5761          },
5762         {
5763          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5764          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5765          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5766          0x01d6,
5767          0x01d7,
5768          },
5769         {
5770          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5771          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5772          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5773          0x01d5,
5774          0x01d6,
5775          },
5776         {
5777          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5778          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5779          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5780          0x01d4,
5781          0x01d5,
5782          },
5783         {
5784          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5785          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5786          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5787          0x01d3,
5788          0x01d4,
5789          },
5790         {
5791          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5792          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5793          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5794          0x01d2,
5795          0x01d3,
5796          },
5797         {
5798          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5799          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5800          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5801          0x01d2,
5802          0x01d2,
5803          },
5804         {
5805          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5806          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5807          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5808          0x01d1,
5809          0x01d2,
5810          },
5811         {
5812          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5813          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5814          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5815          0x01d0,
5816          0x01d1,
5817          },
5818         {
5819          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5820          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5821          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5822          0x01cf,
5823          0x01d0,
5824          },
5825         {
5826          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5827          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5828          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5829          0x01ce,
5830          0x01cf,
5831          },
5832         {
5833          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5834          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5835          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5836          0x01ce,
5837          0x01ce,
5838          },
5839         {
5840          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5841          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5842          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5843          0x01cd,
5844          0x01ce,
5845          },
5846         {
5847          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5848          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5849          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5850          0x01cc,
5851          0x01cd,
5852          },
5853         {
5854          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5855          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5856          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5857          0x01cb,
5858          0x01cc,
5859          },
5860         {
5861          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5862          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5863          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5864          0x01ca,
5865          0x01cb,
5866          },
5867         {
5868          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5869          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5870          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5871          0x01ca,
5872          0x01cb,
5873          },
5874         {
5875          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5876          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5877          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5878          0x01c9,
5879          0x01ca,
5880          },
5881         {
5882          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5883          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5884          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5885          0x01c9,
5886          0x01ca,
5887          },
5888         {
5889          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5890          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5891          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5892          0x01c9,
5893          0x01c9,
5894          },
5895         {
5896          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5897          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5898          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5899          0x01c8,
5900          0x01c9,
5901          },
5902         {
5903          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5904          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5905          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5906          0x01c8,
5907          0x01c9,
5908          },
5909         {
5910          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5911          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5912          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5913          0x01c8,
5914          0x01c8,
5915          },
5916         {
5917          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5918          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5919          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5920          0x01c7,
5921          0x01c8,
5922          },
5923         {
5924          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5925          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5926          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5927          0x01c7,
5928          0x01c8,
5929          },
5930         {
5931          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5932          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5933          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5934          0x01c6,
5935          0x01c7,
5936          },
5937         {
5938          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5939          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5940          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5941          0x01c6,
5942          0x01c7,
5943          },
5944         {
5945          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5946          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5947          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5948          0x01c6,
5949          0x01c6,
5950          },
5951         {
5952          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5953          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5954          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5955          0x01c5,
5956          0x01c6,
5957          },
5958         {
5959          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5960          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5961          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5962          0x01c5,
5963          0x01c6,
5964          },
5965         {
5966          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5967          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5968          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5969          0x01c4,
5970          0x01c5,
5971          },
5972         {
5973          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5974          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5975          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5976          0x01c4,
5977          0x01c5,
5978          },
5979         {
5980          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5981          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5982          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5983          0x01c4,
5984          0x01c4,
5985          },
5986         {
5987          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5988          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5989          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5990          0x01c3,
5991          0x01c4,
5992          },
5993         {
5994          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5995          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5996          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
5997          0x01c3,
5998          0x01c4,
5999          },
6000         {
6001          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6002          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6003          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6004          0x01c2,
6005          0x01c3,
6006          },
6007         {
6008          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6009          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6010          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6011          0x01c2,
6012          0x01c3,
6013          },
6014         {
6015          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6016          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6017          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6018          0x01c2,
6019          0x01c2,
6020          },
6021         {
6022          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6023          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6024          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6025          0x01c1,
6026          0x01c2,
6027          },
6028         {
6029          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6030          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6031          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6032          0x01c0,
6033          0x01c1,
6034          },
6035         {
6036          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6037          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6038          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6039          0x01bf,
6040          0x01c0,
6041          },
6042         {
6043          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6044          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6045          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6046          0x01bf,
6047          0x01bf,
6048          },
6049         {
6050          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6051          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6052          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6053          0x01be,
6054          0x01bf,
6055          },
6056         {
6057          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6058          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6059          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6060          0x01bd,
6061          0x01be,
6062          },
6063         {
6064          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6065          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6066          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6067          0x01bc,
6068          0x01bd,
6069          },
6070         {
6071          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6072          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6073          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6074          0x043f,
6075          0x0443,
6076          },
6077         {
6078          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6079          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6080          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6081          0x043d,
6082          0x0441,
6083          },
6084         {
6085          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6086          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6087          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6088          0x043a,
6089          0x043f,
6090          },
6091         {
6092          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6093          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6094          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6095          0x0438,
6096          0x043d,
6097          },
6098         {
6099          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6100          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6101          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6102          0x0436,
6103          0x043a,
6104          },
6105         {
6106          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6107          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6108          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6109          0x0434,
6110          0x0438,
6111          },
6112         {
6113          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6114          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6115          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6116          0x0431,
6117          0x0436,
6118          },
6119         {
6120          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6121          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6122          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6123          0x042f,
6124          0x0434,
6125          },
6126         {
6127          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6128          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6129          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6130          0x042d,
6131          0x0431,
6132          },
6133         {
6134          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6135          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6136          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6137          0x042b,
6138          0x042f,
6139          },
6140         {
6141          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6142          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6143          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6144          0x0429,
6145          0x042d,
6146          },
6147         {
6148          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6149          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6150          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6151          0x0427,
6152          0x042b,
6153          },
6154         {
6155          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6156          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6157          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6158          0x0424,
6159          0x0429,
6160          },
6161         {
6162          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6163          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6164          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6165          0x041f,
6166          0x0424}
6167 };
6168
6169 static struct chan_info_nphy_radio2057_rev5 chan_info_nphyrev8_2057_rev5[] = {
6170         {
6171          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6172          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6173          0x043a, 0x043f, 0x0443},
6174         {
6175          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6176          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6177          0x0438, 0x043d, 0x0441},
6178         {
6179          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6180          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6181          0x0436, 0x043a, 0x043f},
6182         {
6183          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6184          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6185          0x0434, 0x0438, 0x043d},
6186         {
6187          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6188          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6189          0x0431, 0x0436, 0x043a},
6190         {
6191          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6192          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6193          0x042f, 0x0434, 0x0438},
6194         {
6195          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6196          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6197          0x042d, 0x0431, 0x0436},
6198         {
6199          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6200          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6201          0x042b, 0x042f, 0x0434},
6202         {
6203          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6204          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6205          0x0429, 0x042d, 0x0431},
6206         {
6207          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6208          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6209          0x0427, 0x042b, 0x042f},
6210         {
6211          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6212          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6213          0x0424, 0x0429, 0x042d},
6214         {
6215          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6216          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6217          0x0422, 0x0427, 0x042b},
6218         {
6219          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6220          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6221          0x0420, 0x0424, 0x0429},
6222         {
6223          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6224          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6225          0x041b, 0x041f, 0x0424}
6226 };
6227
6228 static struct chan_info_nphy_radio2057_rev5 chan_info_nphyrev9_2057_rev5v1[] = {
6229         {
6230          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6231          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6232          0x043a, 0x043f, 0x0443},
6233         {
6234          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6235          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6236          0x0438, 0x043d, 0x0441},
6237         {
6238          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6239          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6240          0x0436, 0x043a, 0x043f},
6241         {
6242          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6243          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6244          0x0434, 0x0438, 0x043d},
6245         {
6246          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6247          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6248          0x0431, 0x0436, 0x043a},
6249         {
6250          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6251          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6252          0x042f, 0x0434, 0x0438},
6253         {
6254          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6255          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6256          0x042d, 0x0431, 0x0436},
6257         {
6258          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6259          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6260          0x042b, 0x042f, 0x0434},
6261         {
6262          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6263          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6264          0x0429, 0x042d, 0x0431},
6265         {
6266          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6267          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6268          0x0427, 0x042b, 0x042f},
6269         {
6270          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6271          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6272          0x0424, 0x0429, 0x042d},
6273         {
6274          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6275          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6276          0x0422, 0x0427, 0x042b},
6277         {
6278          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6279          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6280          0x0420, 0x0424, 0x0429},
6281         {
6282          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6283          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6284          0x041b, 0x041f, 0x0424}
6285 };
6286
6287 static struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6288         {
6289          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6290          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6291          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6292          0x0215,
6293          0x0216},
6294         {
6295          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6296          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6297          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6298          0x0214,
6299          0x0215},
6300         {
6301          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6302          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6303          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6304          0x0213,
6305          0x0214},
6306         {
6307          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6308          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6309          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6310          0x0212,
6311          0x0213},
6312         {
6313          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6314          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6315          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6316          0x0211,
6317          0x0212},
6318         {
6319          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6320          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6321          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6322          0x020f,
6323          0x0211},
6324         {
6325          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6326          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6327          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6328          0x020e,
6329          0x020f},
6330         {
6331          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6332          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6333          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6334          0x020d,
6335          0x020e},
6336         {
6337          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6338          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6339          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6340          0x020c,
6341          0x020d},
6342         {
6343          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6344          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6345          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6346          0x020b,
6347          0x020c},
6348         {
6349          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6350          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6351          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6352          0x020a,
6353          0x020b},
6354         {
6355          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6356          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6357          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6358          0x0209,
6359          0x020a},
6360         {
6361          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6362          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6363          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6364          0x0208,
6365          0x0209},
6366         {
6367          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6368          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6369          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6370          0x0207,
6371          0x0208},
6372         {
6373          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6374          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6375          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6376          0x0206,
6377          0x0207},
6378         {
6379          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6380          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6381          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6382          0x0205,
6383          0x0206},
6384         {
6385          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6386          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6387          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6388          0x0204,
6389          0x0205},
6390         {
6391          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6392          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6393          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6394          0x0203,
6395          0x0204},
6396         {
6397          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6398          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6399          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6400          0x0202,
6401          0x0203},
6402         {
6403          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6404          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6405          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6406          0x0201,
6407          0x0202},
6408         {
6409          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6410          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6411          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6412          0x0200,
6413          0x0201},
6414         {
6415          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6416          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6417          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6418          0x01ff,
6419          0x0200},
6420         {
6421          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6422          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6423          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6424          0x01fe,
6425          0x01ff},
6426         {
6427          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6428          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6429          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6430          0x01fc,
6431          0x01fd},
6432         {
6433          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6434          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6435          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6436          0x01fb,
6437          0x01fc},
6438         {
6439          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6440          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6441          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6442          0x01fa,
6443          0x01fb},
6444         {
6445          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6446          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6447          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6448          0x01f9,
6449          0x01fa},
6450         {
6451          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6452          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6453          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6454          0x01f8,
6455          0x01f9},
6456         {
6457          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6458          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6459          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6460          0x01f7,
6461          0x01f8},
6462         {
6463          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6464          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6465          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6466          0x01f6,
6467          0x01f7},
6468         {
6469          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6470          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6471          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6472          0x01f5,
6473          0x01f6},
6474         {
6475          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6476          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6477          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6478          0x01f4,
6479          0x01f5},
6480         {
6481          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6482          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6483          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6484          0x01f3,
6485          0x01f4},
6486         {
6487          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6488          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6489          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6490          0x01f2,
6491          0x01f3},
6492         {
6493          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6494          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6495          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6496          0x01f1,
6497          0x01f2},
6498         {
6499          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6500          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6501          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6502          0x01f0,
6503          0x01f1},
6504         {
6505          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6506          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6507          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6508          0x01f0,
6509          0x01f0},
6510         {
6511          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6512          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6513          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6514          0x01ef,
6515          0x01f0},
6516         {
6517          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6518          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6519          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6520          0x01ee,
6521          0x01ef},
6522         {
6523          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6524          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6525          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6526          0x01ed,
6527          0x01ee},
6528         {
6529          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6530          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6531          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6532          0x01ec,
6533          0x01ed},
6534         {
6535          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6536          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6537          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6538          0x01eb,
6539          0x01ec},
6540         {
6541          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6542          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6543          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6544          0x01ea,
6545          0x01eb},
6546         {
6547          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6548          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6549          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6550          0x01e9,
6551          0x01ea},
6552         {
6553          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6554          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6555          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6556          0x01e8,
6557          0x01e9},
6558         {
6559          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6560          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6561          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6562          0x01e7,
6563          0x01e8},
6564         {
6565          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6566          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6567          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6568          0x01e6,
6569          0x01e7},
6570         {
6571          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6572          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6573          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6574          0x01e5,
6575          0x01e6},
6576         {
6577          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6578          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6579          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6580          0x01e5,
6581          0x01e5},
6582         {
6583          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6584          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6585          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6586          0x01e4,
6587          0x01e5},
6588         {
6589          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6590          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6591          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6592          0x01e3,
6593          0x01e4},
6594         {
6595          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6596          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6597          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6598          0x01e2,
6599          0x01e3},
6600         {
6601          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6602          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6603          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6604          0x01e1,
6605          0x01e2},
6606         {
6607          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6608          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6609          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6610          0x01e0,
6611          0x01e1},
6612         {
6613          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6614          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6615          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6616          0x01df,
6617          0x01e0},
6618         {
6619          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6620          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6621          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6622          0x01de,
6623          0x01df},
6624         {
6625          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6626          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6627          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6628          0x01dd,
6629          0x01de},
6630         {
6631          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6632          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6633          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6634          0x01dd,
6635          0x01dd},
6636         {
6637          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6638          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6639          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6640          0x01dc,
6641          0x01dd},
6642         {
6643          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6644          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6645          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6646          0x01db,
6647          0x01dc},
6648         {
6649          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6650          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6651          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6652          0x01da,
6653          0x01db},
6654         {
6655          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6656          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6657          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6658          0x01d9,
6659          0x01da},
6660         {
6661          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6662          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6663          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6664          0x01d8,
6665          0x01d9},
6666         {
6667          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6668          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6669          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6670          0x01d7,
6671          0x01d8},
6672         {
6673          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6674          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6675          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6676          0x01d7,
6677          0x01d7},
6678         {
6679          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6680          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6681          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6682          0x01d6,
6683          0x01d7},
6684         {
6685          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6686          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6687          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6688          0x01d5,
6689          0x01d6},
6690         {
6691          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6692          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6693          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6694          0x01d4,
6695          0x01d5},
6696         {
6697          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6698          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6699          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6700          0x01d3,
6701          0x01d4},
6702         {
6703          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6704          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6705          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6706          0x01d2,
6707          0x01d3},
6708         {
6709          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6710          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6711          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6712          0x01d2,
6713          0x01d2},
6714         {
6715          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6716          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6717          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6718          0x01d1,
6719          0x01d2},
6720         {
6721          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6722          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6723          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6724          0x01d0,
6725          0x01d1},
6726         {
6727          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6728          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6729          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6730          0x01cf,
6731          0x01d0},
6732         {
6733          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6734          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6735          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6736          0x01ce,
6737          0x01cf},
6738         {
6739          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6740          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6741          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6742          0x01ce,
6743          0x01ce},
6744         {
6745          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6746          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6747          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6748          0x01cd,
6749          0x01ce},
6750         {
6751          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6752          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6753          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6754          0x01cc,
6755          0x01cd},
6756         {
6757          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6758          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6759          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6760          0x01cb,
6761          0x01cc},
6762         {
6763          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6764          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6765          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6766          0x01ca,
6767          0x01cb},
6768         {
6769          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6770          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6771          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6772          0x01ca,
6773          0x01cb},
6774         {
6775          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6776          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6777          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6778          0x01c9,
6779          0x01ca},
6780         {
6781          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6782          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6783          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6784          0x01c9,
6785          0x01ca},
6786         {
6787          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6788          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6789          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6790          0x01c9,
6791          0x01c9},
6792         {
6793          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6794          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6795          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6796          0x01c8,
6797          0x01c9},
6798         {
6799          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6800          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6801          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6802          0x01c8,
6803          0x01c9},
6804         {
6805          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6806          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6807          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6808          0x01c8,
6809          0x01c8},
6810         {
6811          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6812          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6813          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6814          0x01c7,
6815          0x01c8},
6816         {
6817          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6818          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6819          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6820          0x01c7,
6821          0x01c8},
6822         {
6823          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6824          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6825          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6826          0x01c6,
6827          0x01c7},
6828         {
6829          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6830          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6831          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6832          0x01c6,
6833          0x01c7},
6834         {
6835          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6836          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6837          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6838          0x01c6,
6839          0x01c6},
6840         {
6841          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6842          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6843          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6844          0x01c5,
6845          0x01c6},
6846         {
6847          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6848          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6849          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6850          0x01c5,
6851          0x01c6},
6852         {
6853          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6854          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6855          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6856          0x01c4,
6857          0x01c5},
6858         {
6859          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6860          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6861          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6862          0x01c4,
6863          0x01c5},
6864         {
6865          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6866          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6867          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6868          0x01c4,
6869          0x01c4},
6870         {
6871          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6872          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6873          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6874          0x01c3,
6875          0x01c4},
6876         {
6877          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6878          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6879          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6880          0x01c3,
6881          0x01c4},
6882         {
6883          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6884          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6885          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6886          0x01c2,
6887          0x01c3},
6888         {
6889          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6890          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6891          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6892          0x01c2,
6893          0x01c3},
6894         {
6895          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6896          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6897          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6898          0x01c2,
6899          0x01c2},
6900         {
6901          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6902          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6903          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6904          0x01c1,
6905          0x01c2},
6906         {
6907          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6908          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6909          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6910          0x01c0,
6911          0x01c1},
6912         {
6913          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6914          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6915          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6916          0x01bf,
6917          0x01c0},
6918         {
6919          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6920          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6921          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6922          0x01bf,
6923          0x01bf},
6924         {
6925          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6926          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6927          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6928          0x01be,
6929          0x01bf},
6930         {
6931          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6932          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6933          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6934          0x01bd,
6935          0x01be},
6936         {
6937          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6938          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6939          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6940          0x01bc,
6941          0x01bd},
6942         {
6943          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6944          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6945          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6946          0x043f,
6947          0x0443},
6948         {
6949          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6950          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6951          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6952          0x043d,
6953          0x0441},
6954         {
6955          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6956          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6957          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6958          0x043a,
6959          0x043f},
6960         {
6961          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6962          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6963          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6964          0x0438,
6965          0x043d},
6966         {
6967          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6968          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6969          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6970          0x0436,
6971          0x043a},
6972         {
6973          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6974          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6975          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6976          0x0434,
6977          0x0438},
6978         {
6979          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6980          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6981          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6982          0x0431,
6983          0x0436},
6984         {
6985          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6986          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6987          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6988          0x042f,
6989          0x0434},
6990         {
6991          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6992          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6993          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6994          0x042d,
6995          0x0431},
6996         {
6997          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6998          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6999          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7000          0x042b,
7001          0x042f},
7002         {
7003          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7004          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7005          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7006          0x0429,
7007          0x042d},
7008         {
7009          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7010          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7011          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7012          0x0427,
7013          0x042b},
7014         {
7015          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7016          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7017          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7018          0x0424,
7019          0x0429},
7020         {
7021          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7022          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7023          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7024          0x041f,
7025          0x0424}
7026 };
7027
7028 static struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7029         {
7030          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7031          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7032          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7033          0x0214,
7034          0x0215},
7035         {
7036          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7037          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7038          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7039          0x0213,
7040          0x0214},
7041         {
7042          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7043          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7044          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7045          0x0212,
7046          0x0213},
7047         {
7048          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7049          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7050          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7051          0x0211,
7052          0x0212},
7053         {
7054          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7055          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7056          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7057          0x020f,
7058          0x0211},
7059         {
7060          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7061          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7062          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7063          0x020e,
7064          0x020f},
7065         {
7066          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7067          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7068          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7069          0x020d,
7070          0x020e},
7071         {
7072          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7073          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7074          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7075          0x020c,
7076          0x020d},
7077         {
7078          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7079          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7080          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7081          0x020b,
7082          0x020c},
7083         {
7084          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7085          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7086          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7087          0x020a,
7088          0x020b},
7089         {
7090          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7091          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7092          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7093          0x0209,
7094          0x020a},
7095         {
7096          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7097          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7098          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7099          0x0208,
7100          0x0209},
7101         {
7102          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7103          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7104          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7105          0x0207,
7106          0x0208},
7107         {
7108          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7109          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7110          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7111          0x0206,
7112          0x0207},
7113         {
7114          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7115          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7116          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7117          0x0205,
7118          0x0206},
7119         {
7120          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7121          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7122          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7123          0x0204,
7124          0x0205},
7125         {
7126          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7127          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7128          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7129          0x0203,
7130          0x0204},
7131         {
7132          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7133          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7134          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7135          0x0202,
7136          0x0203},
7137         {
7138          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7139          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7140          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7141          0x0201,
7142          0x0202},
7143         {
7144          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7145          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7146          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7147          0x0200,
7148          0x0201},
7149         {
7150          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7151          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7152          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7153          0x01ff,
7154          0x0200},
7155         {
7156          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7157          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7158          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7159          0x01fe,
7160          0x01ff},
7161         {
7162          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7163          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7164          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7165          0x01fc,
7166          0x01fd},
7167         {
7168          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7169          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7170          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7171          0x01fb,
7172          0x01fc},
7173         {
7174          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7175          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7176          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7177          0x01fa,
7178          0x01fb},
7179         {
7180          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7181          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7182          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7183          0x01f9,
7184          0x01fa},
7185         {
7186          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7187          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7188          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7189          0x01f8,
7190          0x01f9},
7191         {
7192          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7193          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7194          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7195          0x01f7,
7196          0x01f8},
7197         {
7198          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7199          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7200          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7201          0x01f6,
7202          0x01f7},
7203         {
7204          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7205          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7206          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7207          0x01f5,
7208          0x01f6},
7209         {
7210          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7211          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7212          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7213          0x01f4,
7214          0x01f5},
7215         {
7216          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7217          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7218          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7219          0x01f3,
7220          0x01f4},
7221         {
7222          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7223          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7224          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7225          0x01f2,
7226          0x01f3},
7227         {
7228          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7229          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7230          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7231          0x01f1,
7232          0x01f2},
7233         {
7234          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7235          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7236          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7237          0x01f0,
7238          0x01f1},
7239         {
7240          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7241          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7242          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7243          0x01f0,
7244          0x01f0},
7245         {
7246          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7247          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7248          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7249          0x01ef,
7250          0x01f0},
7251         {
7252          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7253          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7254          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7255          0x01ee,
7256          0x01ef},
7257         {
7258          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7259          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7260          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7261          0x01ed,
7262          0x01ee},
7263         {
7264          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7265          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7266          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7267          0x01ec,
7268          0x01ed},
7269         {
7270          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7271          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7272          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7273          0x01eb,
7274          0x01ec},
7275         {
7276          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7277          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7278          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7279          0x01ea,
7280          0x01eb},
7281         {
7282          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7283          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7284          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7285          0x01e9,
7286          0x01ea},
7287         {
7288          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7289          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7290          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7291          0x01e8,
7292          0x01e9},
7293         {
7294          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7295          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7296          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7297          0x01e7,
7298          0x01e8},
7299         {
7300          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7301          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7302          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7303          0x01e6,
7304          0x01e7},
7305         {
7306          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7307          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7308          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7309          0x01e5,
7310          0x01e6},
7311         {
7312          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7313          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7314          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7315          0x01e5,
7316          0x01e5},
7317         {
7318          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7319          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7320          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7321          0x01e4,
7322          0x01e5},
7323         {
7324          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7325          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7326          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7327          0x01e3,
7328          0x01e4},
7329         {
7330          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7331          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7332          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7333          0x01e2,
7334          0x01e3},
7335         {
7336          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7337          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7338          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7339          0x01e1,
7340          0x01e2},
7341         {
7342          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7343          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7344          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7345          0x01e0,
7346          0x01e1},
7347         {
7348          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7349          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7350          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7351          0x01df,
7352          0x01e0},
7353         {
7354          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7355          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7356          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7357          0x01de,
7358          0x01df},
7359         {
7360          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7361          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7362          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7363          0x01dd,
7364          0x01de},
7365         {
7366          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7367          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7368          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7369          0x01dd,
7370          0x01dd},
7371         {
7372          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7373          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7374          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7375          0x01dc,
7376          0x01dd},
7377         {
7378          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7379          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7380          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7381          0x01db,
7382          0x01dc},
7383         {
7384          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7385          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7386          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7387          0x01da,
7388          0x01db},
7389         {
7390          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7391          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7392          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7393          0x01d9,
7394          0x01da},
7395         {
7396          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7397          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7398          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7399          0x01d8,
7400          0x01d9},
7401         {
7402          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7403          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7404          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7405          0x01d7,
7406          0x01d8},
7407         {
7408          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7409          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7410          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7411          0x01d7,
7412          0x01d7},
7413         {
7414          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7415          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7416          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7417          0x01d6,
7418          0x01d7},
7419         {
7420          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7421          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7422          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7423          0x01d5,
7424          0x01d6},
7425         {
7426          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7427          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7428          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7429          0x01d4,
7430          0x01d5},
7431         {
7432          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7433          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7434          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7435          0x01d3,
7436          0x01d4},
7437         {
7438          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7439          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7440          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7441          0x01d2,
7442          0x01d3},
7443         {
7444          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7445          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7446          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7447          0x01d2,
7448          0x01d2},
7449         {
7450          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7451          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7452          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7453          0x01d1,
7454          0x01d2},
7455         {
7456          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7457          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7458          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7459          0x01d0,
7460          0x01d1},
7461         {
7462          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7463          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7464          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7465          0x01cf,
7466          0x01d0},
7467         {
7468          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7469          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7470          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7471          0x01ce,
7472          0x01cf},
7473         {
7474          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7475          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7476          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7477          0x01ce,
7478          0x01ce},
7479         {
7480          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7481          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7482          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7483          0x01cd,
7484          0x01ce},
7485         {
7486          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7487          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7488          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7489          0x01cc,
7490          0x01cd},
7491         {
7492          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7493          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7494          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7495          0x01cb,
7496          0x01cc},
7497         {
7498          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7499          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7500          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7501          0x01ca,
7502          0x01cb},
7503         {
7504          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7505          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7506          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7507          0x01ca,
7508          0x01cb},
7509         {
7510          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7511          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7512          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7513          0x01c9,
7514          0x01ca},
7515         {
7516          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7517          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7518          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7519          0x01c9,
7520          0x01ca},
7521         {
7522          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7523          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7524          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7525          0x01c9,
7526          0x01c9},
7527         {
7528          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7529          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7530          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7531          0x01c8,
7532          0x01c9},
7533         {
7534          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7535          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7536          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7537          0x01c8,
7538          0x01c9},
7539         {
7540          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7541          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7542          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7543          0x01c8,
7544          0x01c8},
7545         {
7546          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7547          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7548          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7549          0x01c7,
7550          0x01c8},
7551         {
7552          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7553          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7554          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7555          0x01c7,
7556          0x01c8},
7557         {
7558          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7559          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7560          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7561          0x01c6,
7562          0x01c7},
7563         {
7564          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7565          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7566          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7567          0x01c6,
7568          0x01c7},
7569         {
7570          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7571          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7572          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7573          0x01c6,
7574          0x01c6},
7575         {
7576          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7577          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7578          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7579          0x01c5,
7580          0x01c6},
7581         {
7582          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7583          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7584          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7585          0x01c5,
7586          0x01c6},
7587         {
7588          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7589          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7590          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7591          0x01c4,
7592          0x01c5},
7593         {
7594          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7595          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7596          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7597          0x01c4,
7598          0x01c5},
7599         {
7600          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7601          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7602          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7603          0x01c4,
7604          0x01c4},
7605         {
7606          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7607          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7608          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7609          0x01c3,
7610          0x01c4},
7611         {
7612          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7613          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7614          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7615          0x01c3,
7616          0x01c4},
7617         {
7618          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7619          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7620          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7621          0x01c2,
7622          0x01c3},
7623         {
7624          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7625          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7626          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7627          0x01c2,
7628          0x01c3},
7629         {
7630          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7631          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7632          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7633          0x01c2,
7634          0x01c2},
7635         {
7636          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7637          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7638          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7639          0x01c1,
7640          0x01c2},
7641         {
7642          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7643          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7644          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7645          0x01c0,
7646          0x01c1},
7647         {
7648          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7649          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7650          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7651          0x01bf,
7652          0x01c0},
7653         {
7654          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7655          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7656          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7657          0x01bf,
7658          0x01bf},
7659         {
7660          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7661          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7662          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7663          0x01be,
7664          0x01bf},
7665         {
7666          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7667          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7668          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7669          0x01bd,
7670          0x01be},
7671         {
7672          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7673          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7674          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7675          0x01bc,
7676          0x01bd},
7677         {
7678          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7679          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7680          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7681          0x043f,
7682          0x0443},
7683         {
7684          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7685          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7686          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7687          0x043d,
7688          0x0441},
7689         {
7690          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7691          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7692          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7693          0x043a,
7694          0x043f},
7695         {
7696          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7697          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7698          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7699          0x0438,
7700          0x043d},
7701         {
7702          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7703          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7704          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7705          0x0436,
7706          0x043a},
7707         {
7708          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7709          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7710          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7711          0x0434,
7712          0x0438},
7713         {
7714          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7715          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7716          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7717          0x0431,
7718          0x0436},
7719         {
7720          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7721          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7722          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7723          0x042f,
7724          0x0434},
7725         {
7726          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7727          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7728          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7729          0x042d,
7730          0x0431},
7731         {
7732          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7733          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7734          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7735          0x042b,
7736          0x042f},
7737         {
7738          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7739          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7740          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7741          0x0429,
7742          0x042d},
7743         {
7744          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7745          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7746          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7747          0x0427,
7748          0x042b},
7749         {
7750          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7751          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7752          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7753          0x0424,
7754          0x0429},
7755         {
7756          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7757          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7758          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7759          0x041f,
7760          0x0424}
7761 };
7762
7763 struct radio_regs regs_2055[] = {
7764         {0x02, 0x80, 0x80, 0, 0},
7765         {0x03, 0, 0, 0, 0},
7766         {0x04, 0x27, 0x27, 0, 0},
7767         {0x05, 0, 0, 0, 0},
7768         {0x06, 0x27, 0x27, 0, 0},
7769         {0x07, 0x7f, 0x7f, 1, 1},
7770         {0x08, 0x7, 0x7, 1, 1},
7771         {0x09, 0x7f, 0x7f, 1, 1},
7772         {0x0A, 0x7, 0x7, 1, 1},
7773         {0x0B, 0x15, 0x15, 0, 0},
7774         {0x0C, 0x15, 0x15, 0, 0},
7775         {0x0D, 0x4f, 0x4f, 1, 1},
7776         {0x0E, 0x5, 0x5, 1, 1},
7777         {0x0F, 0x4f, 0x4f, 1, 1},
7778         {0x10, 0x5, 0x5, 1, 1},
7779         {0x11, 0xd0, 0xd0, 0, 0},
7780         {0x12, 0x2, 0x2, 0, 0},
7781         {0x13, 0, 0, 0, 0},
7782         {0x14, 0x40, 0x40, 0, 0},
7783         {0x15, 0, 0, 0, 0},
7784         {0x16, 0, 0, 0, 0},
7785         {0x17, 0, 0, 0, 0},
7786         {0x18, 0, 0, 0, 0},
7787         {0x19, 0, 0, 0, 0},
7788         {0x1A, 0, 0, 0, 0},
7789         {0x1B, 0, 0, 0, 0},
7790         {0x1C, 0, 0, 0, 0},
7791         {0x1D, 0xc0, 0xc0, 0, 0},
7792         {0x1E, 0xff, 0xff, 0, 0},
7793         {0x1F, 0xc0, 0xc0, 0, 0},
7794         {0x20, 0xff, 0xff, 0, 0},
7795         {0x21, 0xc0, 0xc0, 0, 0},
7796         {0x22, 0, 0, 0, 0},
7797         {0x23, 0x2c, 0x2c, 0, 0},
7798         {0x24, 0, 0, 0, 0},
7799         {0x25, 0, 0, 0, 0},
7800         {0x26, 0, 0, 0, 0},
7801         {0x27, 0, 0, 0, 0},
7802         {0x28, 0, 0, 0, 0},
7803         {0x29, 0, 0, 0, 0},
7804         {0x2A, 0, 0, 0, 0},
7805         {0x2B, 0, 0, 0, 0},
7806         {0x2C, 0, 0, 0, 0},
7807         {0x2D, 0xa4, 0xa4, 0, 0},
7808         {0x2E, 0x38, 0x38, 0, 0},
7809         {0x2F, 0, 0, 0, 0},
7810         {0x30, 0x4, 0x4, 1, 1},
7811         {0x31, 0, 0, 0, 0},
7812         {0x32, 0xa, 0xa, 0, 0},
7813         {0x33, 0x87, 0x87, 0, 0},
7814         {0x34, 0x9, 0x9, 0, 0},
7815         {0x35, 0x70, 0x70, 0, 0},
7816         {0x36, 0x11, 0x11, 0, 0},
7817         {0x37, 0x18, 0x18, 1, 1},
7818         {0x38, 0x6, 0x6, 0, 0},
7819         {0x39, 0x4, 0x4, 1, 1},
7820         {0x3A, 0x6, 0x6, 0, 0},
7821         {0x3B, 0x9e, 0x9e, 0, 0},
7822         {0x3C, 0x9, 0x9, 0, 0},
7823         {0x3D, 0xc8, 0xc8, 1, 1},
7824         {0x3E, 0x88, 0x88, 0, 0},
7825         {0x3F, 0, 0, 0, 0},
7826         {0x40, 0, 0, 0, 0},
7827         {0x41, 0, 0, 0, 0},
7828         {0x42, 0x1, 0x1, 0, 0},
7829         {0x43, 0x2, 0x2, 0, 0},
7830         {0x44, 0x96, 0x96, 0, 0},
7831         {0x45, 0x3e, 0x3e, 0, 0},
7832         {0x46, 0x3e, 0x3e, 0, 0},
7833         {0x47, 0x13, 0x13, 0, 0},
7834         {0x48, 0x2, 0x2, 0, 0},
7835         {0x49, 0x15, 0x15, 0, 0},
7836         {0x4A, 0x7, 0x7, 0, 0},
7837         {0x4B, 0, 0, 0, 0},
7838         {0x4C, 0, 0, 0, 0},
7839         {0x4D, 0, 0, 0, 0},
7840         {0x4E, 0, 0, 0, 0},
7841         {0x4F, 0, 0, 0, 0},
7842         {0x50, 0x8, 0x8, 0, 0},
7843         {0x51, 0x8, 0x8, 0, 0},
7844         {0x52, 0x6, 0x6, 0, 0},
7845         {0x53, 0x84, 0x84, 1, 1},
7846         {0x54, 0xc3, 0xc3, 0, 0},
7847         {0x55, 0x8f, 0x8f, 0, 0},
7848         {0x56, 0xff, 0xff, 0, 0},
7849         {0x57, 0xff, 0xff, 0, 0},
7850         {0x58, 0x88, 0x88, 0, 0},
7851         {0x59, 0x88, 0x88, 0, 0},
7852         {0x5A, 0, 0, 0, 0},
7853         {0x5B, 0xcc, 0xcc, 0, 0},
7854         {0x5C, 0x6, 0x6, 0, 0},
7855         {0x5D, 0x80, 0x80, 0, 0},
7856         {0x5E, 0x80, 0x80, 0, 0},
7857         {0x5F, 0xf8, 0xf8, 0, 0},
7858         {0x60, 0x88, 0x88, 0, 0},
7859         {0x61, 0x88, 0x88, 0, 0},
7860         {0x62, 0x88, 0x8, 1, 1},
7861         {0x63, 0x88, 0x88, 0, 0},
7862         {0x64, 0, 0, 0, 0},
7863         {0x65, 0x1, 0x1, 1, 1},
7864         {0x66, 0x8a, 0x8a, 0, 0},
7865         {0x67, 0x8, 0x8, 0, 0},
7866         {0x68, 0x83, 0x83, 0, 0},
7867         {0x69, 0x6, 0x6, 0, 0},
7868         {0x6A, 0xa0, 0xa0, 0, 0},
7869         {0x6B, 0xa, 0xa, 0, 0},
7870         {0x6C, 0x87, 0x87, 1, 1},
7871         {0x6D, 0x2a, 0x2a, 0, 0},
7872         {0x6E, 0x2a, 0x2a, 0, 0},
7873         {0x6F, 0x2a, 0x2a, 0, 0},
7874         {0x70, 0x2a, 0x2a, 0, 0},
7875         {0x71, 0x18, 0x18, 0, 0},
7876         {0x72, 0x6a, 0x6a, 1, 1},
7877         {0x73, 0xab, 0xab, 1, 1},
7878         {0x74, 0x13, 0x13, 1, 1},
7879         {0x75, 0xc1, 0xc1, 1, 1},
7880         {0x76, 0xaa, 0xaa, 1, 1},
7881         {0x77, 0x87, 0x87, 1, 1},
7882         {0x78, 0, 0, 0, 0},
7883         {0x79, 0x6, 0x6, 0, 0},
7884         {0x7A, 0x7, 0x7, 0, 0},
7885         {0x7B, 0x7, 0x7, 0, 0},
7886         {0x7C, 0x15, 0x15, 0, 0},
7887         {0x7D, 0x55, 0x55, 0, 0},
7888         {0x7E, 0x97, 0x97, 1, 1},
7889         {0x7F, 0x8, 0x8, 0, 0},
7890         {0x80, 0x14, 0x14, 1, 1},
7891         {0x81, 0x33, 0x33, 0, 0},
7892         {0x82, 0x88, 0x88, 0, 0},
7893         {0x83, 0x6, 0x6, 0, 0},
7894         {0x84, 0x3, 0x3, 1, 1},
7895         {0x85, 0xa, 0xa, 0, 0},
7896         {0x86, 0x3, 0x3, 1, 1},
7897         {0x87, 0x2a, 0x2a, 0, 0},
7898         {0x88, 0xa4, 0xa4, 0, 0},
7899         {0x89, 0x18, 0x18, 0, 0},
7900         {0x8A, 0x28, 0x28, 0, 0},
7901         {0x8B, 0, 0, 0, 0},
7902         {0x8C, 0x4a, 0x4a, 0, 0},
7903         {0x8D, 0, 0, 0, 0},
7904         {0x8E, 0xf8, 0xf8, 0, 0},
7905         {0x8F, 0x88, 0x88, 0, 0},
7906         {0x90, 0x88, 0x88, 0, 0},
7907         {0x91, 0x88, 0x8, 1, 1},
7908         {0x92, 0x88, 0x88, 0, 0},
7909         {0x93, 0, 0, 0, 0},
7910         {0x94, 0x1, 0x1, 1, 1},
7911         {0x95, 0x8a, 0x8a, 0, 0},
7912         {0x96, 0x8, 0x8, 0, 0},
7913         {0x97, 0x83, 0x83, 0, 0},
7914         {0x98, 0x6, 0x6, 0, 0},
7915         {0x99, 0xa0, 0xa0, 0, 0},
7916         {0x9A, 0xa, 0xa, 0, 0},
7917         {0x9B, 0x87, 0x87, 1, 1},
7918         {0x9C, 0x2a, 0x2a, 0, 0},
7919         {0x9D, 0x2a, 0x2a, 0, 0},
7920         {0x9E, 0x2a, 0x2a, 0, 0},
7921         {0x9F, 0x2a, 0x2a, 0, 0},
7922         {0xA0, 0x18, 0x18, 0, 0},
7923         {0xA1, 0x6a, 0x6a, 1, 1},
7924         {0xA2, 0xab, 0xab, 1, 1},
7925         {0xA3, 0x13, 0x13, 1, 1},
7926         {0xA4, 0xc1, 0xc1, 1, 1},
7927         {0xA5, 0xaa, 0xaa, 1, 1},
7928         {0xA6, 0x87, 0x87, 1, 1},
7929         {0xA7, 0, 0, 0, 0},
7930         {0xA8, 0x6, 0x6, 0, 0},
7931         {0xA9, 0x7, 0x7, 0, 0},
7932         {0xAA, 0x7, 0x7, 0, 0},
7933         {0xAB, 0x15, 0x15, 0, 0},
7934         {0xAC, 0x55, 0x55, 0, 0},
7935         {0xAD, 0x97, 0x97, 1, 1},
7936         {0xAE, 0x8, 0x8, 0, 0},
7937         {0xAF, 0x14, 0x14, 1, 1},
7938         {0xB0, 0x33, 0x33, 0, 0},
7939         {0xB1, 0x88, 0x88, 0, 0},
7940         {0xB2, 0x6, 0x6, 0, 0},
7941         {0xB3, 0x3, 0x3, 1, 1},
7942         {0xB4, 0xa, 0xa, 0, 0},
7943         {0xB5, 0x3, 0x3, 1, 1},
7944         {0xB6, 0x2a, 0x2a, 0, 0},
7945         {0xB7, 0xa4, 0xa4, 0, 0},
7946         {0xB8, 0x18, 0x18, 0, 0},
7947         {0xB9, 0x28, 0x28, 0, 0},
7948         {0xBA, 0, 0, 0, 0},
7949         {0xBB, 0x4a, 0x4a, 0, 0},
7950         {0xBC, 0, 0, 0, 0},
7951         {0xBD, 0x71, 0x71, 0, 0},
7952         {0xBE, 0x72, 0x72, 0, 0},
7953         {0xBF, 0x73, 0x73, 0, 0},
7954         {0xC0, 0x74, 0x74, 0, 0},
7955         {0xC1, 0x75, 0x75, 0, 0},
7956         {0xC2, 0x76, 0x76, 0, 0},
7957         {0xC3, 0x77, 0x77, 0, 0},
7958         {0xC4, 0x78, 0x78, 0, 0},
7959         {0xC5, 0x79, 0x79, 0, 0},
7960         {0xC6, 0x7a, 0x7a, 0, 0},
7961         {0xC7, 0, 0, 0, 0},
7962         {0xC8, 0, 0, 0, 0},
7963         {0xC9, 0, 0, 0, 0},
7964         {0xCA, 0, 0, 0, 0},
7965         {0xCB, 0, 0, 0, 0},
7966         {0xCC, 0, 0, 0, 0},
7967         {0xCD, 0, 0, 0, 0},
7968         {0xCE, 0x6, 0x6, 0, 0},
7969         {0xCF, 0, 0, 0, 0},
7970         {0xD0, 0, 0, 0, 0},
7971         {0xD1, 0x18, 0x18, 0, 0},
7972         {0xD2, 0x88, 0x88, 0, 0},
7973         {0xD3, 0, 0, 0, 0},
7974         {0xD4, 0, 0, 0, 0},
7975         {0xD5, 0, 0, 0, 0},
7976         {0xD6, 0, 0, 0, 0},
7977         {0xD7, 0, 0, 0, 0},
7978         {0xD8, 0, 0, 0, 0},
7979         {0xD9, 0, 0, 0, 0},
7980         {0xDA, 0x6, 0x6, 0, 0},
7981         {0xDB, 0, 0, 0, 0},
7982         {0xDC, 0, 0, 0, 0},
7983         {0xDD, 0x18, 0x18, 0, 0},
7984         {0xDE, 0x88, 0x88, 0, 0},
7985         {0xDF, 0, 0, 0, 0},
7986         {0xE0, 0, 0, 0, 0},
7987         {0xE1, 0, 0, 0, 0},
7988         {0xE2, 0, 0, 0, 0},
7989         {0xFFFF, 0, 0, 0, 0},
7990 };
7991
7992 struct radio_regs regs_SYN_2056[] = {
7993         {0x02, 0, 0, 0, 0},
7994         {0x03, 0, 0, 0, 0},
7995         {0x04, 0, 0, 0, 0},
7996         {0x05, 0, 0, 0, 0},
7997         {0x06, 0, 0, 0, 0},
7998         {0x07, 0, 0, 0, 0},
7999         {0x08, 0, 0, 0, 0},
8000         {0x09, 0x1, 0x1, 0, 0},
8001         {0x0A, 0, 0, 0, 0},
8002         {0x0B, 0, 0, 0, 0},
8003         {0x0C, 0, 0, 0, 0},
8004         {0x0D, 0, 0, 0, 0},
8005         {0x0E, 0, 0, 0, 0},
8006         {0x0F, 0, 0, 0, 0},
8007         {0x10, 0, 0, 0, 0},
8008         {0x11, 0, 0, 0, 0},
8009         {0x12, 0, 0, 0, 0},
8010         {0x13, 0, 0, 0, 0},
8011         {0x14, 0, 0, 0, 0},
8012         {0x15, 0, 0, 0, 0},
8013         {0x16, 0, 0, 0, 0},
8014         {0x17, 0, 0, 0, 0},
8015         {0x18, 0, 0, 0, 0},
8016         {0x19, 0, 0, 0, 0},
8017         {0x1A, 0, 0, 0, 0},
8018         {0x1B, 0, 0, 0, 0},
8019         {0x1C, 0, 0, 0, 0},
8020         {0x1D, 0, 0, 0, 0},
8021         {0x1E, 0, 0, 0, 0},
8022         {0x1F, 0, 0, 0, 0},
8023         {0x20, 0, 0, 0, 0},
8024         {0x21, 0, 0, 0, 0},
8025         {0x22, 0x60, 0x60, 0, 0},
8026         {0x23, 0x6, 0x6, 0, 0},
8027         {0x24, 0xc, 0xc, 0, 0},
8028         {0x25, 0, 0, 0, 0},
8029         {0x26, 0, 0, 0, 0},
8030         {0x27, 0, 0, 0, 0},
8031         {0x28, 0x1, 0x1, 0, 0},
8032         {0x29, 0, 0, 0, 0},
8033         {0x2A, 0, 0, 0, 0},
8034         {0x2B, 0, 0, 0, 0},
8035         {0x2C, 0, 0, 0, 0},
8036         {0x2D, 0, 0, 0, 0},
8037         {0x2E, 0xd, 0xd, 0, 0},
8038         {0x2F, 0x1f, 0x1f, 0, 0},
8039         {0x30, 0x15, 0x15, 0, 0},
8040         {0x31, 0xf, 0xf, 0, 0},
8041         {0x32, 0, 0, 0, 0},
8042         {0x33, 0, 0, 0, 0},
8043         {0x34, 0, 0, 0, 0},
8044         {0x35, 0, 0, 0, 0},
8045         {0x36, 0, 0, 0, 0},
8046         {0x37, 0, 0, 0, 0},
8047         {0x38, 0, 0, 0, 0},
8048         {0x39, 0, 0, 0, 0},
8049         {0x3A, 0, 0, 0, 0},
8050         {0x3B, 0, 0, 0, 0},
8051         {0x3C, 0x13, 0x13, 0, 0},
8052         {0x3D, 0xf, 0xf, 0, 0},
8053         {0x3E, 0x18, 0x18, 0, 0},
8054         {0x3F, 0, 0, 0, 0},
8055         {0x40, 0, 0, 0, 0},
8056         {0x41, 0x20, 0x20, 0, 0},
8057         {0x42, 0x20, 0x20, 0, 0},
8058         {0x43, 0, 0, 0, 0},
8059         {0x44, 0x77, 0x77, 0, 0},
8060         {0x45, 0x7, 0x7, 0, 0},
8061         {0x46, 0x1, 0x1, 0, 0},
8062         {0x47, 0x4, 0x4, 0, 0},
8063         {0x48, 0xf, 0xf, 0, 0},
8064         {0x49, 0x30, 0x30, 0, 0},
8065         {0x4A, 0x32, 0x32, 0, 0},
8066         {0x4B, 0xd, 0xd, 0, 0},
8067         {0x4C, 0xd, 0xd, 0, 0},
8068         {0x4D, 0x4, 0x4, 0, 0},
8069         {0x4E, 0x6, 0x6, 0, 0},
8070         {0x4F, 0x1, 0x1, 0, 0},
8071         {0x50, 0x1c, 0x1c, 0, 0},
8072         {0x51, 0x2, 0x2, 0, 0},
8073         {0x52, 0x2, 0x2, 0, 0},
8074         {0x53, 0xf7, 0xf7, 1, 1},
8075         {0x54, 0xb4, 0xb4, 0, 0},
8076         {0x55, 0xd2, 0xd2, 0, 0},
8077         {0x56, 0, 0, 0, 0},
8078         {0x57, 0, 0, 0, 0},
8079         {0x58, 0x4, 0x4, 0, 0},
8080         {0x59, 0x96, 0x96, 0, 0},
8081         {0x5A, 0x3e, 0x3e, 0, 0},
8082         {0x5B, 0x3e, 0x3e, 0, 0},
8083         {0x5C, 0x13, 0x13, 0, 0},
8084         {0x5D, 0x2, 0x2, 0, 0},
8085         {0x5E, 0, 0, 0, 0},
8086         {0x5F, 0x7, 0x7, 0, 0},
8087         {0x60, 0x7, 0x7, 1, 1},
8088         {0x61, 0x8, 0x8, 0, 0},
8089         {0x62, 0x3, 0x3, 0, 0},
8090         {0x63, 0, 0, 0, 0},
8091         {0x64, 0, 0, 0, 0},
8092         {0x65, 0, 0, 0, 0},
8093         {0x66, 0, 0, 0, 0},
8094         {0x67, 0, 0, 0, 0},
8095         {0x68, 0x40, 0x40, 0, 0},
8096         {0x69, 0, 0, 0, 0},
8097         {0x6A, 0, 0, 0, 0},
8098         {0x6B, 0, 0, 0, 0},
8099         {0x6C, 0, 0, 0, 0},
8100         {0x6D, 0x1, 0x1, 0, 0},
8101         {0x6E, 0, 0, 0, 0},
8102         {0x6F, 0, 0, 0, 0},
8103         {0x70, 0x60, 0x60, 0, 0},
8104         {0x71, 0x66, 0x66, 0, 0},
8105         {0x72, 0xc, 0xc, 0, 0},
8106         {0x73, 0x66, 0x66, 0, 0},
8107         {0x74, 0x8f, 0x8f, 1, 1},
8108         {0x75, 0, 0, 0, 0},
8109         {0x76, 0xcc, 0xcc, 0, 0},
8110         {0x77, 0x1, 0x1, 0, 0},
8111         {0x78, 0x66, 0x66, 0, 0},
8112         {0x79, 0x66, 0x66, 0, 0},
8113         {0x7A, 0, 0, 0, 0},
8114         {0x7B, 0, 0, 0, 0},
8115         {0x7C, 0, 0, 0, 0},
8116         {0x7D, 0, 0, 0, 0},
8117         {0x7E, 0, 0, 0, 0},
8118         {0x7F, 0, 0, 0, 0},
8119         {0x80, 0, 0, 0, 0},
8120         {0x81, 0, 0, 0, 0},
8121         {0x82, 0, 0, 0, 0},
8122         {0x83, 0, 0, 0, 0},
8123         {0x84, 0, 0, 0, 0},
8124         {0x85, 0xff, 0xff, 0, 0},
8125         {0x86, 0, 0, 0, 0},
8126         {0x87, 0, 0, 0, 0},
8127         {0x88, 0, 0, 0, 0},
8128         {0x89, 0, 0, 0, 0},
8129         {0x8A, 0, 0, 0, 0},
8130         {0x8B, 0, 0, 0, 0},
8131         {0x8C, 0, 0, 0, 0},
8132         {0x8D, 0, 0, 0, 0},
8133         {0x8E, 0, 0, 0, 0},
8134         {0x8F, 0, 0, 0, 0},
8135         {0x90, 0, 0, 0, 0},
8136         {0x91, 0, 0, 0, 0},
8137         {0x92, 0, 0, 0, 0},
8138         {0x93, 0, 0, 0, 0},
8139         {0x94, 0, 0, 0, 0},
8140         {0x95, 0, 0, 0, 0},
8141         {0x96, 0, 0, 0, 0},
8142         {0x97, 0, 0, 0, 0},
8143         {0x98, 0, 0, 0, 0},
8144         {0x99, 0, 0, 0, 0},
8145         {0x9A, 0, 0, 0, 0},
8146         {0x9B, 0, 0, 0, 0},
8147         {0x9C, 0, 0, 0, 0},
8148         {0x9D, 0, 0, 0, 0},
8149         {0x9E, 0, 0, 0, 0},
8150         {0x9F, 0x6, 0x6, 0, 0},
8151         {0xA0, 0x66, 0x66, 0, 0},
8152         {0xA1, 0x66, 0x66, 0, 0},
8153         {0xA2, 0x66, 0x66, 0, 0},
8154         {0xA3, 0x66, 0x66, 0, 0},
8155         {0xA4, 0x66, 0x66, 0, 0},
8156         {0xA5, 0x66, 0x66, 0, 0},
8157         {0xA6, 0x66, 0x66, 0, 0},
8158         {0xA7, 0x66, 0x66, 0, 0},
8159         {0xA8, 0x66, 0x66, 0, 0},
8160         {0xA9, 0x66, 0x66, 0, 0},
8161         {0xAA, 0x66, 0x66, 0, 0},
8162         {0xAB, 0x66, 0x66, 0, 0},
8163         {0xAC, 0x66, 0x66, 0, 0},
8164         {0xAD, 0x66, 0x66, 0, 0},
8165         {0xAE, 0x66, 0x66, 0, 0},
8166         {0xAF, 0x66, 0x66, 0, 0},
8167         {0xB0, 0x66, 0x66, 0, 0},
8168         {0xB1, 0x66, 0x66, 0, 0},
8169         {0xB2, 0x66, 0x66, 0, 0},
8170         {0xB3, 0xa, 0xa, 0, 0},
8171         {0xB4, 0, 0, 0, 0},
8172         {0xB5, 0, 0, 0, 0},
8173         {0xB6, 0, 0, 0, 0},
8174         {0xFFFF, 0, 0, 0, 0}
8175 };
8176
8177 struct radio_regs regs_TX_2056[] = {
8178         {0x02, 0, 0, 0, 0},
8179         {0x03, 0, 0, 0, 0},
8180         {0x04, 0, 0, 0, 0},
8181         {0x05, 0, 0, 0, 0},
8182         {0x06, 0, 0, 0, 0},
8183         {0x07, 0, 0, 0, 0},
8184         {0x08, 0, 0, 0, 0},
8185         {0x09, 0, 0, 0, 0},
8186         {0x0A, 0, 0, 0, 0},
8187         {0x0B, 0, 0, 0, 0},
8188         {0x0C, 0, 0, 0, 0},
8189         {0x0D, 0, 0, 0, 0},
8190         {0x0E, 0, 0, 0, 0},
8191         {0x0F, 0, 0, 0, 0},
8192         {0x10, 0, 0, 0, 0},
8193         {0x11, 0, 0, 0, 0},
8194         {0x12, 0, 0, 0, 0},
8195         {0x13, 0, 0, 0, 0},
8196         {0x14, 0, 0, 0, 0},
8197         {0x15, 0, 0, 0, 0},
8198         {0x16, 0, 0, 0, 0},
8199         {0x17, 0, 0, 0, 0},
8200         {0x18, 0, 0, 0, 0},
8201         {0x19, 0, 0, 0, 0},
8202         {0x1A, 0, 0, 0, 0},
8203         {0x1B, 0, 0, 0, 0},
8204         {0x1C, 0, 0, 0, 0},
8205         {0x1D, 0, 0, 0, 0},
8206         {0x1E, 0, 0, 0, 0},
8207         {0x1F, 0, 0, 0, 0},
8208         {0x20, 0, 0, 0, 0},
8209         {0x21, 0x88, 0x88, 0, 0},
8210         {0x22, 0x88, 0x88, 0, 0},
8211         {0x23, 0x88, 0x88, 0, 0},
8212         {0x24, 0x88, 0x88, 0, 0},
8213         {0x25, 0xc, 0xc, 0, 0},
8214         {0x26, 0, 0, 0, 0},
8215         {0x27, 0x3, 0x3, 0, 0},
8216         {0x28, 0, 0, 0, 0},
8217         {0x29, 0x3, 0x3, 0, 0},
8218         {0x2A, 0x37, 0x37, 0, 0},
8219         {0x2B, 0x3, 0x3, 0, 0},
8220         {0x2C, 0, 0, 0, 0},
8221         {0x2D, 0, 0, 0, 0},
8222         {0x2E, 0x1, 0x1, 0, 0},
8223         {0x2F, 0x1, 0x1, 0, 0},
8224         {0x30, 0, 0, 0, 0},
8225         {0x31, 0, 0, 0, 0},
8226         {0x32, 0, 0, 0, 0},
8227         {0x33, 0x11, 0x11, 0, 0},
8228         {0x34, 0x11, 0x11, 0, 0},
8229         {0x35, 0, 0, 0, 0},
8230         {0x36, 0, 0, 0, 0},
8231         {0x37, 0x3, 0x3, 0, 0},
8232         {0x38, 0xf, 0xf, 0, 0},
8233         {0x39, 0, 0, 0, 0},
8234         {0x3A, 0x2d, 0x2d, 0, 0},
8235         {0x3B, 0, 0, 0, 0},
8236         {0x3C, 0x6e, 0x6e, 0, 0},
8237         {0x3D, 0xf0, 0xf0, 1, 1},
8238         {0x3E, 0, 0, 0, 0},
8239         {0x3F, 0, 0, 0, 0},
8240         {0x40, 0, 0, 0, 0},
8241         {0x41, 0x3, 0x3, 0, 0},
8242         {0x42, 0x3, 0x3, 0, 0},
8243         {0x43, 0, 0, 0, 0},
8244         {0x44, 0x1e, 0x1e, 0, 0},
8245         {0x45, 0, 0, 0, 0},
8246         {0x46, 0x6e, 0x6e, 0, 0},
8247         {0x47, 0xf0, 0xf0, 1, 1},
8248         {0x48, 0, 0, 0, 0},
8249         {0x49, 0x2, 0x2, 0, 0},
8250         {0x4A, 0xff, 0xff, 1, 1},
8251         {0x4B, 0xc, 0xc, 0, 0},
8252         {0x4C, 0, 0, 0, 0},
8253         {0x4D, 0x38, 0x38, 0, 0},
8254         {0x4E, 0x70, 0x70, 1, 1},
8255         {0x4F, 0x2, 0x2, 0, 0},
8256         {0x50, 0x88, 0x88, 0, 0},
8257         {0x51, 0xc, 0xc, 0, 0},
8258         {0x52, 0, 0, 0, 0},
8259         {0x53, 0x8, 0x8, 0, 0},
8260         {0x54, 0x70, 0x70, 1, 1},
8261         {0x55, 0x2, 0x2, 0, 0},
8262         {0x56, 0xff, 0xff, 1, 1},
8263         {0x57, 0, 0, 0, 0},
8264         {0x58, 0x83, 0x83, 0, 0},
8265         {0x59, 0x77, 0x77, 1, 1},
8266         {0x5A, 0, 0, 0, 0},
8267         {0x5B, 0x2, 0x2, 0, 0},
8268         {0x5C, 0x88, 0x88, 0, 0},
8269         {0x5D, 0, 0, 0, 0},
8270         {0x5E, 0x8, 0x8, 0, 0},
8271         {0x5F, 0x77, 0x77, 1, 1},
8272         {0x60, 0x1, 0x1, 0, 0},
8273         {0x61, 0, 0, 0, 0},
8274         {0x62, 0x7, 0x7, 0, 0},
8275         {0x63, 0, 0, 0, 0},
8276         {0x64, 0x7, 0x7, 0, 0},
8277         {0x65, 0, 0, 0, 0},
8278         {0x66, 0, 0, 0, 0},
8279         {0x67, 0x74, 0x74, 1, 1},
8280         {0x68, 0, 0, 0, 0},
8281         {0x69, 0xa, 0xa, 0, 0},
8282         {0x6A, 0, 0, 0, 0},
8283         {0x6B, 0, 0, 0, 0},
8284         {0x6C, 0, 0, 0, 0},
8285         {0x6D, 0, 0, 0, 0},
8286         {0x6E, 0, 0, 0, 0},
8287         {0x6F, 0, 0, 0, 0},
8288         {0x70, 0, 0, 0, 0},
8289         {0x71, 0x2, 0x2, 0, 0},
8290         {0x72, 0, 0, 0, 0},
8291         {0x73, 0, 0, 0, 0},
8292         {0x74, 0xe, 0xe, 0, 0},
8293         {0x75, 0xe, 0xe, 0, 0},
8294         {0x76, 0xe, 0xe, 0, 0},
8295         {0x77, 0x13, 0x13, 0, 0},
8296         {0x78, 0x13, 0x13, 0, 0},
8297         {0x79, 0x1b, 0x1b, 0, 0},
8298         {0x7A, 0x1b, 0x1b, 0, 0},
8299         {0x7B, 0x55, 0x55, 0, 0},
8300         {0x7C, 0x5b, 0x5b, 0, 0},
8301         {0x7D, 0, 0, 0, 0},
8302         {0x7E, 0, 0, 0, 0},
8303         {0x7F, 0, 0, 0, 0},
8304         {0x80, 0, 0, 0, 0},
8305         {0x81, 0, 0, 0, 0},
8306         {0x82, 0, 0, 0, 0},
8307         {0x83, 0, 0, 0, 0},
8308         {0x84, 0, 0, 0, 0},
8309         {0x85, 0, 0, 0, 0},
8310         {0x86, 0, 0, 0, 0},
8311         {0x87, 0, 0, 0, 0},
8312         {0x88, 0, 0, 0, 0},
8313         {0x89, 0, 0, 0, 0},
8314         {0x8A, 0, 0, 0, 0},
8315         {0x8B, 0, 0, 0, 0},
8316         {0x8C, 0, 0, 0, 0},
8317         {0x8D, 0, 0, 0, 0},
8318         {0x8E, 0, 0, 0, 0},
8319         {0x8F, 0, 0, 0, 0},
8320         {0x90, 0, 0, 0, 0},
8321         {0x91, 0, 0, 0, 0},
8322         {0x92, 0, 0, 0, 0},
8323         {0xFFFF, 0, 0, 0, 0}
8324 };
8325
8326 struct radio_regs regs_RX_2056[] = {
8327         {0x02, 0, 0, 0, 0},
8328         {0x03, 0, 0, 0, 0},
8329         {0x04, 0, 0, 0, 0},
8330         {0x05, 0, 0, 0, 0},
8331         {0x06, 0, 0, 0, 0},
8332         {0x07, 0, 0, 0, 0},
8333         {0x08, 0, 0, 0, 0},
8334         {0x09, 0, 0, 0, 0},
8335         {0x0A, 0, 0, 0, 0},
8336         {0x0B, 0, 0, 0, 0},
8337         {0x0C, 0, 0, 0, 0},
8338         {0x0D, 0, 0, 0, 0},
8339         {0x0E, 0, 0, 0, 0},
8340         {0x0F, 0, 0, 0, 0},
8341         {0x10, 0, 0, 0, 0},
8342         {0x11, 0, 0, 0, 0},
8343         {0x12, 0, 0, 0, 0},
8344         {0x13, 0, 0, 0, 0},
8345         {0x14, 0, 0, 0, 0},
8346         {0x15, 0, 0, 0, 0},
8347         {0x16, 0, 0, 0, 0},
8348         {0x17, 0, 0, 0, 0},
8349         {0x18, 0, 0, 0, 0},
8350         {0x19, 0, 0, 0, 0},
8351         {0x1A, 0, 0, 0, 0},
8352         {0x1B, 0, 0, 0, 0},
8353         {0x1C, 0, 0, 0, 0},
8354         {0x1D, 0, 0, 0, 0},
8355         {0x1E, 0, 0, 0, 0},
8356         {0x1F, 0, 0, 0, 0},
8357         {0x20, 0x3, 0x3, 0, 0},
8358         {0x21, 0, 0, 0, 0},
8359         {0x22, 0, 0, 0, 0},
8360         {0x23, 0x90, 0x90, 0, 0},
8361         {0x24, 0x55, 0x55, 0, 0},
8362         {0x25, 0x15, 0x15, 0, 0},
8363         {0x26, 0x5, 0x5, 0, 0},
8364         {0x27, 0x15, 0x15, 0, 0},
8365         {0x28, 0x5, 0x5, 0, 0},
8366         {0x29, 0x20, 0x20, 0, 0},
8367         {0x2A, 0x11, 0x11, 0, 0},
8368         {0x2B, 0x90, 0x90, 0, 0},
8369         {0x2C, 0, 0, 0, 0},
8370         {0x2D, 0x88, 0x88, 0, 0},
8371         {0x2E, 0x32, 0x32, 0, 0},
8372         {0x2F, 0x77, 0x77, 0, 0},
8373         {0x30, 0x17, 0x17, 1, 1},
8374         {0x31, 0xff, 0xff, 1, 1},
8375         {0x32, 0x20, 0x20, 0, 0},
8376         {0x33, 0, 0, 0, 0},
8377         {0x34, 0x88, 0x88, 0, 0},
8378         {0x35, 0x32, 0x32, 0, 0},
8379         {0x36, 0x77, 0x77, 0, 0},
8380         {0x37, 0x17, 0x17, 1, 1},
8381         {0x38, 0xf0, 0xf0, 1, 1},
8382         {0x39, 0x20, 0x20, 0, 0},
8383         {0x3A, 0x8, 0x8, 0, 0},
8384         {0x3B, 0x99, 0x99, 0, 0},
8385         {0x3C, 0, 0, 0, 0},
8386         {0x3D, 0x44, 0x44, 1, 1},
8387         {0x3E, 0, 0, 0, 0},
8388         {0x3F, 0x44, 0x44, 0, 0},
8389         {0x40, 0xf, 0xf, 1, 1},
8390         {0x41, 0x6, 0x6, 0, 0},
8391         {0x42, 0x4, 0x4, 0, 0},
8392         {0x43, 0x50, 0x50, 1, 1},
8393         {0x44, 0x8, 0x8, 0, 0},
8394         {0x45, 0x99, 0x99, 0, 0},
8395         {0x46, 0, 0, 0, 0},
8396         {0x47, 0x11, 0x11, 0, 0},
8397         {0x48, 0, 0, 0, 0},
8398         {0x49, 0x44, 0x44, 0, 0},
8399         {0x4A, 0x7, 0x7, 0, 0},
8400         {0x4B, 0x6, 0x6, 0, 0},
8401         {0x4C, 0x4, 0x4, 0, 0},
8402         {0x4D, 0, 0, 0, 0},
8403         {0x4E, 0, 0, 0, 0},
8404         {0x4F, 0x66, 0x66, 0, 0},
8405         {0x50, 0x66, 0x66, 0, 0},
8406         {0x51, 0x57, 0x57, 0, 0},
8407         {0x52, 0x57, 0x57, 0, 0},
8408         {0x53, 0x44, 0x44, 0, 0},
8409         {0x54, 0, 0, 0, 0},
8410         {0x55, 0, 0, 0, 0},
8411         {0x56, 0x8, 0x8, 0, 0},
8412         {0x57, 0x8, 0x8, 0, 0},
8413         {0x58, 0x7, 0x7, 0, 0},
8414         {0x59, 0x22, 0x22, 0, 0},
8415         {0x5A, 0x22, 0x22, 0, 0},
8416         {0x5B, 0x2, 0x2, 0, 0},
8417         {0x5C, 0x23, 0x23, 0, 0},
8418         {0x5D, 0x7, 0x7, 0, 0},
8419         {0x5E, 0x55, 0x55, 0, 0},
8420         {0x5F, 0x23, 0x23, 0, 0},
8421         {0x60, 0x41, 0x41, 0, 0},
8422         {0x61, 0x1, 0x1, 0, 0},
8423         {0x62, 0xa, 0xa, 0, 0},
8424         {0x63, 0, 0, 0, 0},
8425         {0x64, 0, 0, 0, 0},
8426         {0x65, 0, 0, 0, 0},
8427         {0x66, 0, 0, 0, 0},
8428         {0x67, 0, 0, 0, 0},
8429         {0x68, 0, 0, 0, 0},
8430         {0x69, 0, 0, 0, 0},
8431         {0x6A, 0, 0, 0, 0},
8432         {0x6B, 0xc, 0xc, 0, 0},
8433         {0x6C, 0, 0, 0, 0},
8434         {0x6D, 0, 0, 0, 0},
8435         {0x6E, 0, 0, 0, 0},
8436         {0x6F, 0, 0, 0, 0},
8437         {0x70, 0, 0, 0, 0},
8438         {0x71, 0, 0, 0, 0},
8439         {0x72, 0x22, 0x22, 0, 0},
8440         {0x73, 0x22, 0x22, 0, 0},
8441         {0x74, 0x2, 0x2, 0, 0},
8442         {0x75, 0xa, 0xa, 0, 0},
8443         {0x76, 0x1, 0x1, 0, 0},
8444         {0x77, 0x22, 0x22, 0, 0},
8445         {0x78, 0x30, 0x30, 0, 0},
8446         {0x79, 0, 0, 0, 0},
8447         {0x7A, 0, 0, 0, 0},
8448         {0x7B, 0, 0, 0, 0},
8449         {0x7C, 0, 0, 0, 0},
8450         {0x7D, 0, 0, 0, 0},
8451         {0x7E, 0, 0, 0, 0},
8452         {0x7F, 0, 0, 0, 0},
8453         {0x80, 0, 0, 0, 0},
8454         {0x81, 0, 0, 0, 0},
8455         {0x82, 0, 0, 0, 0},
8456         {0x83, 0, 0, 0, 0},
8457         {0x84, 0, 0, 0, 0},
8458         {0x85, 0, 0, 0, 0},
8459         {0x86, 0, 0, 0, 0},
8460         {0x87, 0, 0, 0, 0},
8461         {0x88, 0, 0, 0, 0},
8462         {0x89, 0, 0, 0, 0},
8463         {0x8A, 0, 0, 0, 0},
8464         {0x8B, 0, 0, 0, 0},
8465         {0x8C, 0, 0, 0, 0},
8466         {0x8D, 0, 0, 0, 0},
8467         {0x8E, 0, 0, 0, 0},
8468         {0x8F, 0, 0, 0, 0},
8469         {0x90, 0, 0, 0, 0},
8470         {0x91, 0, 0, 0, 0},
8471         {0x92, 0, 0, 0, 0},
8472         {0x93, 0, 0, 0, 0},
8473         {0x94, 0, 0, 0, 0},
8474         {0xFFFF, 0, 0, 0, 0}
8475 };
8476
8477 struct radio_regs regs_SYN_2056_A1[] = {
8478         {0x02, 0, 0, 0, 0},
8479         {0x03, 0, 0, 0, 0},
8480         {0x04, 0, 0, 0, 0},
8481         {0x05, 0, 0, 0, 0},
8482         {0x06, 0, 0, 0, 0},
8483         {0x07, 0, 0, 0, 0},
8484         {0x08, 0, 0, 0, 0},
8485         {0x09, 0x1, 0x1, 0, 0},
8486         {0x0A, 0, 0, 0, 0},
8487         {0x0B, 0, 0, 0, 0},
8488         {0x0C, 0, 0, 0, 0},
8489         {0x0D, 0, 0, 0, 0},
8490         {0x0E, 0, 0, 0, 0},
8491         {0x0F, 0, 0, 0, 0},
8492         {0x10, 0, 0, 0, 0},
8493         {0x11, 0, 0, 0, 0},
8494         {0x12, 0, 0, 0, 0},
8495         {0x13, 0, 0, 0, 0},
8496         {0x14, 0, 0, 0, 0},
8497         {0x15, 0, 0, 0, 0},
8498         {0x16, 0, 0, 0, 0},
8499         {0x17, 0, 0, 0, 0},
8500         {0x18, 0, 0, 0, 0},
8501         {0x19, 0, 0, 0, 0},
8502         {0x1A, 0, 0, 0, 0},
8503         {0x1B, 0, 0, 0, 0},
8504         {0x1C, 0, 0, 0, 0},
8505         {0x1D, 0, 0, 0, 0},
8506         {0x1E, 0, 0, 0, 0},
8507         {0x1F, 0, 0, 0, 0},
8508         {0x20, 0, 0, 0, 0},
8509         {0x21, 0, 0, 0, 0},
8510         {0x22, 0x60, 0x60, 0, 0},
8511         {0x23, 0x6, 0x6, 0, 0},
8512         {0x24, 0xc, 0xc, 0, 0},
8513         {0x25, 0, 0, 0, 0},
8514         {0x26, 0, 0, 0, 0},
8515         {0x27, 0, 0, 0, 0},
8516         {0x28, 0x1, 0x1, 0, 0},
8517         {0x29, 0, 0, 0, 0},
8518         {0x2A, 0, 0, 0, 0},
8519         {0x2B, 0, 0, 0, 0},
8520         {0x2C, 0, 0, 0, 0},
8521         {0x2D, 0, 0, 0, 0},
8522         {0x2E, 0xd, 0xd, 0, 0},
8523         {0x2F, 0x1f, 0x1f, 0, 0},
8524         {0x30, 0x15, 0x15, 0, 0},
8525         {0x31, 0xf, 0xf, 0, 0},
8526         {0x32, 0, 0, 0, 0},
8527         {0x33, 0, 0, 0, 0},
8528         {0x34, 0, 0, 0, 0},
8529         {0x35, 0, 0, 0, 0},
8530         {0x36, 0, 0, 0, 0},
8531         {0x37, 0, 0, 0, 0},
8532         {0x38, 0, 0, 0, 0},
8533         {0x39, 0, 0, 0, 0},
8534         {0x3A, 0, 0, 0, 0},
8535         {0x3B, 0, 0, 0, 0},
8536         {0x3C, 0x13, 0x13, 0, 0},
8537         {0x3D, 0xf, 0xf, 0, 0},
8538         {0x3E, 0x18, 0x18, 0, 0},
8539         {0x3F, 0, 0, 0, 0},
8540         {0x40, 0, 0, 0, 0},
8541         {0x41, 0x20, 0x20, 0, 0},
8542         {0x42, 0x20, 0x20, 0, 0},
8543         {0x43, 0, 0, 0, 0},
8544         {0x44, 0x77, 0x77, 0, 0},
8545         {0x45, 0x7, 0x7, 0, 0},
8546         {0x46, 0x1, 0x1, 0, 0},
8547         {0x47, 0x4, 0x4, 0, 0},
8548         {0x48, 0xf, 0xf, 0, 0},
8549         {0x49, 0x30, 0x30, 0, 0},
8550         {0x4A, 0x32, 0x32, 0, 0},
8551         {0x4B, 0xd, 0xd, 0, 0},
8552         {0x4C, 0xd, 0xd, 0, 0},
8553         {0x4D, 0x4, 0x4, 0, 0},
8554         {0x4E, 0x6, 0x6, 0, 0},
8555         {0x4F, 0x1, 0x1, 0, 0},
8556         {0x50, 0x1c, 0x1c, 0, 0},
8557         {0x51, 0x2, 0x2, 0, 0},
8558         {0x52, 0x2, 0x2, 0, 0},
8559         {0x53, 0xf7, 0xf7, 1, 1},
8560         {0x54, 0xb4, 0xb4, 0, 0},
8561         {0x55, 0xd2, 0xd2, 0, 0},
8562         {0x56, 0, 0, 0, 0},
8563         {0x57, 0, 0, 0, 0},
8564         {0x58, 0x4, 0x4, 0, 0},
8565         {0x59, 0x96, 0x96, 0, 0},
8566         {0x5A, 0x3e, 0x3e, 0, 0},
8567         {0x5B, 0x3e, 0x3e, 0, 0},
8568         {0x5C, 0x13, 0x13, 0, 0},
8569         {0x5D, 0x2, 0x2, 0, 0},
8570         {0x5E, 0, 0, 0, 0},
8571         {0x5F, 0x7, 0x7, 0, 0},
8572         {0x60, 0x7, 0x7, 1, 1},
8573         {0x61, 0x8, 0x8, 0, 0},
8574         {0x62, 0x3, 0x3, 0, 0},
8575         {0x63, 0, 0, 0, 0},
8576         {0x64, 0, 0, 0, 0},
8577         {0x65, 0, 0, 0, 0},
8578         {0x66, 0, 0, 0, 0},
8579         {0x67, 0, 0, 0, 0},
8580         {0x68, 0x40, 0x40, 0, 0},
8581         {0x69, 0, 0, 0, 0},
8582         {0x6A, 0, 0, 0, 0},
8583         {0x6B, 0, 0, 0, 0},
8584         {0x6C, 0, 0, 0, 0},
8585         {0x6D, 0x1, 0x1, 0, 0},
8586         {0x6E, 0, 0, 0, 0},
8587         {0x6F, 0, 0, 0, 0},
8588         {0x70, 0x60, 0x60, 0, 0},
8589         {0x71, 0x66, 0x66, 0, 0},
8590         {0x72, 0xc, 0xc, 0, 0},
8591         {0x73, 0x66, 0x66, 0, 0},
8592         {0x74, 0x8f, 0x8f, 1, 1},
8593         {0x75, 0, 0, 0, 0},
8594         {0x76, 0xcc, 0xcc, 0, 0},
8595         {0x77, 0x1, 0x1, 0, 0},
8596         {0x78, 0x66, 0x66, 0, 0},
8597         {0x79, 0x66, 0x66, 0, 0},
8598         {0x7A, 0, 0, 0, 0},
8599         {0x7B, 0, 0, 0, 0},
8600         {0x7C, 0, 0, 0, 0},
8601         {0x7D, 0, 0, 0, 0},
8602         {0x7E, 0, 0, 0, 0},
8603         {0x7F, 0, 0, 0, 0},
8604         {0x80, 0, 0, 0, 0},
8605         {0x81, 0, 0, 0, 0},
8606         {0x82, 0, 0, 0, 0},
8607         {0x83, 0, 0, 0, 0},
8608         {0x84, 0, 0, 0, 0},
8609         {0x85, 0xff, 0xff, 0, 0},
8610         {0x86, 0, 0, 0, 0},
8611         {0x87, 0, 0, 0, 0},
8612         {0x88, 0, 0, 0, 0},
8613         {0x89, 0, 0, 0, 0},
8614         {0x8A, 0, 0, 0, 0},
8615         {0x8B, 0, 0, 0, 0},
8616         {0x8C, 0, 0, 0, 0},
8617         {0x8D, 0, 0, 0, 0},
8618         {0x8E, 0, 0, 0, 0},
8619         {0x8F, 0, 0, 0, 0},
8620         {0x90, 0, 0, 0, 0},
8621         {0x91, 0, 0, 0, 0},
8622         {0x92, 0, 0, 0, 0},
8623         {0x93, 0, 0, 0, 0},
8624         {0x94, 0, 0, 0, 0},
8625         {0x95, 0, 0, 0, 0},
8626         {0x96, 0, 0, 0, 0},
8627         {0x97, 0, 0, 0, 0},
8628         {0x98, 0, 0, 0, 0},
8629         {0x99, 0, 0, 0, 0},
8630         {0x9A, 0, 0, 0, 0},
8631         {0x9B, 0, 0, 0, 0},
8632         {0x9C, 0, 0, 0, 0},
8633         {0x9D, 0, 0, 0, 0},
8634         {0x9E, 0, 0, 0, 0},
8635         {0x9F, 0x6, 0x6, 0, 0},
8636         {0xA0, 0x66, 0x66, 0, 0},
8637         {0xA1, 0x66, 0x66, 0, 0},
8638         {0xA2, 0x66, 0x66, 0, 0},
8639         {0xA3, 0x66, 0x66, 0, 0},
8640         {0xA4, 0x66, 0x66, 0, 0},
8641         {0xA5, 0x66, 0x66, 0, 0},
8642         {0xA6, 0x66, 0x66, 0, 0},
8643         {0xA7, 0x66, 0x66, 0, 0},
8644         {0xA8, 0x66, 0x66, 0, 0},
8645         {0xA9, 0x66, 0x66, 0, 0},
8646         {0xAA, 0x66, 0x66, 0, 0},
8647         {0xAB, 0x66, 0x66, 0, 0},
8648         {0xAC, 0x66, 0x66, 0, 0},
8649         {0xAD, 0x66, 0x66, 0, 0},
8650         {0xAE, 0x66, 0x66, 0, 0},
8651         {0xAF, 0x66, 0x66, 0, 0},
8652         {0xB0, 0x66, 0x66, 0, 0},
8653         {0xB1, 0x66, 0x66, 0, 0},
8654         {0xB2, 0x66, 0x66, 0, 0},
8655         {0xB3, 0xa, 0xa, 0, 0},
8656         {0xB4, 0, 0, 0, 0},
8657         {0xB5, 0, 0, 0, 0},
8658         {0xB6, 0, 0, 0, 0},
8659         {0xFFFF, 0, 0, 0, 0}
8660 };
8661
8662 struct radio_regs regs_TX_2056_A1[] = {
8663         {0x02, 0, 0, 0, 0},
8664         {0x03, 0, 0, 0, 0},
8665         {0x04, 0, 0, 0, 0},
8666         {0x05, 0, 0, 0, 0},
8667         {0x06, 0, 0, 0, 0},
8668         {0x07, 0, 0, 0, 0},
8669         {0x08, 0, 0, 0, 0},
8670         {0x09, 0, 0, 0, 0},
8671         {0x0A, 0, 0, 0, 0},
8672         {0x0B, 0, 0, 0, 0},
8673         {0x0C, 0, 0, 0, 0},
8674         {0x0D, 0, 0, 0, 0},
8675         {0x0E, 0, 0, 0, 0},
8676         {0x0F, 0, 0, 0, 0},
8677         {0x10, 0, 0, 0, 0},
8678         {0x11, 0, 0, 0, 0},
8679         {0x12, 0, 0, 0, 0},
8680         {0x13, 0, 0, 0, 0},
8681         {0x14, 0, 0, 0, 0},
8682         {0x15, 0, 0, 0, 0},
8683         {0x16, 0, 0, 0, 0},
8684         {0x17, 0, 0, 0, 0},
8685         {0x18, 0, 0, 0, 0},
8686         {0x19, 0, 0, 0, 0},
8687         {0x1A, 0, 0, 0, 0},
8688         {0x1B, 0, 0, 0, 0},
8689         {0x1C, 0, 0, 0, 0},
8690         {0x1D, 0, 0, 0, 0},
8691         {0x1E, 0, 0, 0, 0},
8692         {0x1F, 0, 0, 0, 0},
8693         {0x20, 0, 0, 0, 0},
8694         {0x21, 0x88, 0x88, 0, 0},
8695         {0x22, 0x88, 0x88, 0, 0},
8696         {0x23, 0x88, 0x88, 0, 0},
8697         {0x24, 0x88, 0x88, 0, 0},
8698         {0x25, 0xc, 0xc, 0, 0},
8699         {0x26, 0, 0, 0, 0},
8700         {0x27, 0x3, 0x3, 0, 0},
8701         {0x28, 0, 0, 0, 0},
8702         {0x29, 0x3, 0x3, 0, 0},
8703         {0x2A, 0x37, 0x37, 0, 0},
8704         {0x2B, 0x3, 0x3, 0, 0},
8705         {0x2C, 0, 0, 0, 0},
8706         {0x2D, 0, 0, 0, 0},
8707         {0x2E, 0x1, 0x1, 0, 0},
8708         {0x2F, 0x1, 0x1, 0, 0},
8709         {0x30, 0, 0, 0, 0},
8710         {0x31, 0, 0, 0, 0},
8711         {0x32, 0, 0, 0, 0},
8712         {0x33, 0x11, 0x11, 0, 0},
8713         {0x34, 0x11, 0x11, 0, 0},
8714         {0x35, 0, 0, 0, 0},
8715         {0x36, 0, 0, 0, 0},
8716         {0x37, 0x3, 0x3, 0, 0},
8717         {0x38, 0xf, 0xf, 0, 0},
8718         {0x39, 0, 0, 0, 0},
8719         {0x3A, 0x2d, 0x2d, 0, 0},
8720         {0x3B, 0, 0, 0, 0},
8721         {0x3C, 0x6e, 0x6e, 0, 0},
8722         {0x3D, 0xf0, 0xf0, 1, 1},
8723         {0x3E, 0, 0, 0, 0},
8724         {0x3F, 0, 0, 0, 0},
8725         {0x40, 0, 0, 0, 0},
8726         {0x41, 0x3, 0x3, 0, 0},
8727         {0x42, 0x3, 0x3, 0, 0},
8728         {0x43, 0, 0, 0, 0},
8729         {0x44, 0x1e, 0x1e, 0, 0},
8730         {0x45, 0, 0, 0, 0},
8731         {0x46, 0x6e, 0x6e, 0, 0},
8732         {0x47, 0xf0, 0xf0, 1, 1},
8733         {0x48, 0, 0, 0, 0},
8734         {0x49, 0x2, 0x2, 0, 0},
8735         {0x4A, 0xff, 0xff, 1, 1},
8736         {0x4B, 0xc, 0xc, 0, 0},
8737         {0x4C, 0, 0, 0, 0},
8738         {0x4D, 0x38, 0x38, 0, 0},
8739         {0x4E, 0x70, 0x70, 1, 1},
8740         {0x4F, 0x2, 0x2, 0, 0},
8741         {0x50, 0x88, 0x88, 0, 0},
8742         {0x51, 0xc, 0xc, 0, 0},
8743         {0x52, 0, 0, 0, 0},
8744         {0x53, 0x8, 0x8, 0, 0},
8745         {0x54, 0x70, 0x70, 1, 1},
8746         {0x55, 0x2, 0x2, 0, 0},
8747         {0x56, 0xff, 0xff, 1, 1},
8748         {0x57, 0, 0, 0, 0},
8749         {0x58, 0x83, 0x83, 0, 0},
8750         {0x59, 0x77, 0x77, 1, 1},
8751         {0x5A, 0, 0, 0, 0},
8752         {0x5B, 0x2, 0x2, 0, 0},
8753         {0x5C, 0x88, 0x88, 0, 0},
8754         {0x5D, 0, 0, 0, 0},
8755         {0x5E, 0x8, 0x8, 0, 0},
8756         {0x5F, 0x77, 0x77, 1, 1},
8757         {0x60, 0x1, 0x1, 0, 0},
8758         {0x61, 0, 0, 0, 0},
8759         {0x62, 0x7, 0x7, 0, 0},
8760         {0x63, 0, 0, 0, 0},
8761         {0x64, 0x7, 0x7, 0, 0},
8762         {0x65, 0, 0, 0, 0},
8763         {0x66, 0, 0, 0, 0},
8764         {0x67, 0x72, 0x72, 1, 1},
8765         {0x68, 0, 0, 0, 0},
8766         {0x69, 0xa, 0xa, 0, 0},
8767         {0x6A, 0, 0, 0, 0},
8768         {0x6B, 0, 0, 0, 0},
8769         {0x6C, 0, 0, 0, 0},
8770         {0x6D, 0, 0, 0, 0},
8771         {0x6E, 0, 0, 0, 0},
8772         {0x6F, 0, 0, 0, 0},
8773         {0x70, 0, 0, 0, 0},
8774         {0x71, 0x2, 0x2, 0, 0},
8775         {0x72, 0, 0, 0, 0},
8776         {0x73, 0, 0, 0, 0},
8777         {0x74, 0xe, 0xe, 0, 0},
8778         {0x75, 0xe, 0xe, 0, 0},
8779         {0x76, 0xe, 0xe, 0, 0},
8780         {0x77, 0x13, 0x13, 0, 0},
8781         {0x78, 0x13, 0x13, 0, 0},
8782         {0x79, 0x1b, 0x1b, 0, 0},
8783         {0x7A, 0x1b, 0x1b, 0, 0},
8784         {0x7B, 0x55, 0x55, 0, 0},
8785         {0x7C, 0x5b, 0x5b, 0, 0},
8786         {0x7D, 0, 0, 0, 0},
8787         {0x7E, 0, 0, 0, 0},
8788         {0x7F, 0, 0, 0, 0},
8789         {0x80, 0, 0, 0, 0},
8790         {0x81, 0, 0, 0, 0},
8791         {0x82, 0, 0, 0, 0},
8792         {0x83, 0, 0, 0, 0},
8793         {0x84, 0, 0, 0, 0},
8794         {0x85, 0, 0, 0, 0},
8795         {0x86, 0, 0, 0, 0},
8796         {0x87, 0, 0, 0, 0},
8797         {0x88, 0, 0, 0, 0},
8798         {0x89, 0, 0, 0, 0},
8799         {0x8A, 0, 0, 0, 0},
8800         {0x8B, 0, 0, 0, 0},
8801         {0x8C, 0, 0, 0, 0},
8802         {0x8D, 0, 0, 0, 0},
8803         {0x8E, 0, 0, 0, 0},
8804         {0x8F, 0, 0, 0, 0},
8805         {0x90, 0, 0, 0, 0},
8806         {0x91, 0, 0, 0, 0},
8807         {0x92, 0, 0, 0, 0},
8808         {0xFFFF, 0, 0, 0, 0}
8809 };
8810
8811 struct radio_regs regs_RX_2056_A1[] = {
8812         {0x02, 0, 0, 0, 0},
8813         {0x03, 0, 0, 0, 0},
8814         {0x04, 0, 0, 0, 0},
8815         {0x05, 0, 0, 0, 0},
8816         {0x06, 0, 0, 0, 0},
8817         {0x07, 0, 0, 0, 0},
8818         {0x08, 0, 0, 0, 0},
8819         {0x09, 0, 0, 0, 0},
8820         {0x0A, 0, 0, 0, 0},
8821         {0x0B, 0, 0, 0, 0},
8822         {0x0C, 0, 0, 0, 0},
8823         {0x0D, 0, 0, 0, 0},
8824         {0x0E, 0, 0, 0, 0},
8825         {0x0F, 0, 0, 0, 0},
8826         {0x10, 0, 0, 0, 0},
8827         {0x11, 0, 0, 0, 0},
8828         {0x12, 0, 0, 0, 0},
8829         {0x13, 0, 0, 0, 0},
8830         {0x14, 0, 0, 0, 0},
8831         {0x15, 0, 0, 0, 0},
8832         {0x16, 0, 0, 0, 0},
8833         {0x17, 0, 0, 0, 0},
8834         {0x18, 0, 0, 0, 0},
8835         {0x19, 0, 0, 0, 0},
8836         {0x1A, 0, 0, 0, 0},
8837         {0x1B, 0, 0, 0, 0},
8838         {0x1C, 0, 0, 0, 0},
8839         {0x1D, 0, 0, 0, 0},
8840         {0x1E, 0, 0, 0, 0},
8841         {0x1F, 0, 0, 0, 0},
8842         {0x20, 0x3, 0x3, 0, 0},
8843         {0x21, 0, 0, 0, 0},
8844         {0x22, 0, 0, 0, 0},
8845         {0x23, 0x90, 0x90, 0, 0},
8846         {0x24, 0x55, 0x55, 0, 0},
8847         {0x25, 0x15, 0x15, 0, 0},
8848         {0x26, 0x5, 0x5, 0, 0},
8849         {0x27, 0x15, 0x15, 0, 0},
8850         {0x28, 0x5, 0x5, 0, 0},
8851         {0x29, 0x20, 0x20, 0, 0},
8852         {0x2A, 0x11, 0x11, 0, 0},
8853         {0x2B, 0x90, 0x90, 0, 0},
8854         {0x2C, 0, 0, 0, 0},
8855         {0x2D, 0x88, 0x88, 0, 0},
8856         {0x2E, 0x32, 0x32, 0, 0},
8857         {0x2F, 0x77, 0x77, 0, 0},
8858         {0x30, 0x17, 0x17, 1, 1},
8859         {0x31, 0xff, 0xff, 1, 1},
8860         {0x32, 0x20, 0x20, 0, 0},
8861         {0x33, 0, 0, 0, 0},
8862         {0x34, 0x88, 0x88, 0, 0},
8863         {0x35, 0x32, 0x32, 0, 0},
8864         {0x36, 0x77, 0x77, 0, 0},
8865         {0x37, 0x17, 0x17, 1, 1},
8866         {0x38, 0xf0, 0xf0, 1, 1},
8867         {0x39, 0x20, 0x20, 0, 0},
8868         {0x3A, 0x8, 0x8, 0, 0},
8869         {0x3B, 0x55, 0x55, 1, 1},
8870         {0x3C, 0, 0, 0, 0},
8871         {0x3D, 0x44, 0x44, 1, 1},
8872         {0x3E, 0, 0, 0, 0},
8873         {0x3F, 0x44, 0x44, 0, 0},
8874         {0x40, 0xf, 0xf, 1, 1},
8875         {0x41, 0x6, 0x6, 0, 0},
8876         {0x42, 0x4, 0x4, 0, 0},
8877         {0x43, 0x50, 0x50, 1, 1},
8878         {0x44, 0x8, 0x8, 0, 0},
8879         {0x45, 0x55, 0x55, 1, 1},
8880         {0x46, 0, 0, 0, 0},
8881         {0x47, 0x11, 0x11, 0, 0},
8882         {0x48, 0, 0, 0, 0},
8883         {0x49, 0x44, 0x44, 0, 0},
8884         {0x4A, 0x7, 0x7, 0, 0},
8885         {0x4B, 0x6, 0x6, 0, 0},
8886         {0x4C, 0x4, 0x4, 0, 0},
8887         {0x4D, 0, 0, 0, 0},
8888         {0x4E, 0, 0, 0, 0},
8889         {0x4F, 0x26, 0x26, 1, 1},
8890         {0x50, 0x26, 0x26, 1, 1},
8891         {0x51, 0xf, 0xf, 1, 1},
8892         {0x52, 0xf, 0xf, 1, 1},
8893         {0x53, 0x44, 0x44, 0, 0},
8894         {0x54, 0, 0, 0, 0},
8895         {0x55, 0, 0, 0, 0},
8896         {0x56, 0x8, 0x8, 0, 0},
8897         {0x57, 0x8, 0x8, 0, 0},
8898         {0x58, 0x7, 0x7, 0, 0},
8899         {0x59, 0x22, 0x22, 0, 0},
8900         {0x5A, 0x22, 0x22, 0, 0},
8901         {0x5B, 0x2, 0x2, 0, 0},
8902         {0x5C, 0x2f, 0x2f, 1, 1},
8903         {0x5D, 0x7, 0x7, 0, 0},
8904         {0x5E, 0x55, 0x55, 0, 0},
8905         {0x5F, 0x23, 0x23, 0, 0},
8906         {0x60, 0x41, 0x41, 0, 0},
8907         {0x61, 0x1, 0x1, 0, 0},
8908         {0x62, 0xa, 0xa, 0, 0},
8909         {0x63, 0, 0, 0, 0},
8910         {0x64, 0, 0, 0, 0},
8911         {0x65, 0, 0, 0, 0},
8912         {0x66, 0, 0, 0, 0},
8913         {0x67, 0, 0, 0, 0},
8914         {0x68, 0, 0, 0, 0},
8915         {0x69, 0, 0, 0, 0},
8916         {0x6A, 0, 0, 0, 0},
8917         {0x6B, 0xc, 0xc, 0, 0},
8918         {0x6C, 0, 0, 0, 0},
8919         {0x6D, 0, 0, 0, 0},
8920         {0x6E, 0, 0, 0, 0},
8921         {0x6F, 0, 0, 0, 0},
8922         {0x70, 0, 0, 0, 0},
8923         {0x71, 0, 0, 0, 0},
8924         {0x72, 0x22, 0x22, 0, 0},
8925         {0x73, 0x22, 0x22, 0, 0},
8926         {0x74, 0, 0, 1, 1},
8927         {0x75, 0xa, 0xa, 0, 0},
8928         {0x76, 0x1, 0x1, 0, 0},
8929         {0x77, 0x22, 0x22, 0, 0},
8930         {0x78, 0x30, 0x30, 0, 0},
8931         {0x79, 0, 0, 0, 0},
8932         {0x7A, 0, 0, 0, 0},
8933         {0x7B, 0, 0, 0, 0},
8934         {0x7C, 0, 0, 0, 0},
8935         {0x7D, 0, 0, 0, 0},
8936         {0x7E, 0, 0, 0, 0},
8937         {0x7F, 0, 0, 0, 0},
8938         {0x80, 0, 0, 0, 0},
8939         {0x81, 0, 0, 0, 0},
8940         {0x82, 0, 0, 0, 0},
8941         {0x83, 0, 0, 0, 0},
8942         {0x84, 0, 0, 0, 0},
8943         {0x85, 0, 0, 0, 0},
8944         {0x86, 0, 0, 0, 0},
8945         {0x87, 0, 0, 0, 0},
8946         {0x88, 0, 0, 0, 0},
8947         {0x89, 0, 0, 0, 0},
8948         {0x8A, 0, 0, 0, 0},
8949         {0x8B, 0, 0, 0, 0},
8950         {0x8C, 0, 0, 0, 0},
8951         {0x8D, 0, 0, 0, 0},
8952         {0x8E, 0, 0, 0, 0},
8953         {0x8F, 0, 0, 0, 0},
8954         {0x90, 0, 0, 0, 0},
8955         {0x91, 0, 0, 0, 0},
8956         {0x92, 0, 0, 0, 0},
8957         {0x93, 0, 0, 0, 0},
8958         {0x94, 0, 0, 0, 0},
8959         {0xFFFF, 0, 0, 0, 0}
8960 };
8961
8962 struct radio_regs regs_SYN_2056_rev5[] = {
8963         {0x02, 0, 0, 0, 0},
8964         {0x03, 0, 0, 0, 0},
8965         {0x04, 0, 0, 0, 0},
8966         {0x05, 0, 0, 0, 0},
8967         {0x06, 0, 0, 0, 0},
8968         {0x07, 0, 0, 0, 0},
8969         {0x08, 0, 0, 0, 0},
8970         {0x09, 0x1, 0x1, 0, 0},
8971         {0x0A, 0, 0, 0, 0},
8972         {0x0B, 0, 0, 0, 0},
8973         {0x0C, 0, 0, 0, 0},
8974         {0x0D, 0, 0, 0, 0},
8975         {0x0E, 0, 0, 0, 0},
8976         {0x0F, 0, 0, 0, 0},
8977         {0x10, 0, 0, 0, 0},
8978         {0x11, 0, 0, 0, 0},
8979         {0x12, 0, 0, 0, 0},
8980         {0x13, 0, 0, 0, 0},
8981         {0x14, 0, 0, 0, 0},
8982         {0x15, 0, 0, 0, 0},
8983         {0x16, 0, 0, 0, 0},
8984         {0x17, 0, 0, 0, 0},
8985         {0x18, 0, 0, 0, 0},
8986         {0x19, 0, 0, 0, 0},
8987         {0x1A, 0, 0, 0, 0},
8988         {0x1B, 0, 0, 0, 0},
8989         {0x1C, 0, 0, 0, 0},
8990         {0x1D, 0, 0, 0, 0},
8991         {0x1E, 0, 0, 0, 0},
8992         {0x1F, 0, 0, 0, 0},
8993         {0x20, 0, 0, 0, 0},
8994         {0x21, 0, 0, 0, 0},
8995         {0x22, 0x60, 0x60, 0, 0},
8996         {0x23, 0x6, 0x6, 0, 0},
8997         {0x24, 0xc, 0xc, 0, 0},
8998         {0x25, 0, 0, 0, 0},
8999         {0x26, 0, 0, 0, 0},
9000         {0x27, 0, 0, 0, 0},
9001         {0x28, 0x1, 0x1, 0, 0},
9002         {0x29, 0, 0, 0, 0},
9003         {0x2A, 0, 0, 0, 0},
9004         {0x2B, 0, 0, 0, 0},
9005         {0x2C, 0, 0, 0, 0},
9006         {0x2D, 0, 0, 0, 0},
9007         {0x2E, 0, 0, 0, 0},
9008         {0x2F, 0x1f, 0x1f, 0, 0},
9009         {0x30, 0x15, 0x15, 0, 0},
9010         {0x31, 0xf, 0xf, 0, 0},
9011         {0x32, 0, 0, 0, 0},
9012         {0x33, 0, 0, 0, 0},
9013         {0x34, 0, 0, 0, 0},
9014         {0x35, 0, 0, 0, 0},
9015         {0x36, 0, 0, 0, 0},
9016         {0x37, 0, 0, 0, 0},
9017         {0x38, 0, 0, 0, 0},
9018         {0x39, 0, 0, 0, 0},
9019         {0x3A, 0, 0, 0, 0},
9020         {0x3B, 0, 0, 0, 0},
9021         {0x3C, 0x13, 0x13, 0, 0},
9022         {0x3D, 0xf, 0xf, 0, 0},
9023         {0x3E, 0x18, 0x18, 0, 0},
9024         {0x3F, 0, 0, 0, 0},
9025         {0x40, 0, 0, 0, 0},
9026         {0x41, 0x20, 0x20, 0, 0},
9027         {0x42, 0x20, 0x20, 0, 0},
9028         {0x43, 0, 0, 0, 0},
9029         {0x44, 0x77, 0x77, 0, 0},
9030         {0x45, 0x7, 0x7, 0, 0},
9031         {0x46, 0x1, 0x1, 0, 0},
9032         {0x47, 0x4, 0x4, 0, 0},
9033         {0x48, 0xf, 0xf, 0, 0},
9034         {0x49, 0x30, 0x30, 0, 0},
9035         {0x4A, 0x32, 0x32, 0, 0},
9036         {0x4B, 0xd, 0xd, 0, 0},
9037         {0x4C, 0xd, 0xd, 0, 0},
9038         {0x4D, 0x4, 0x4, 0, 0},
9039         {0x4E, 0x6, 0x6, 0, 0},
9040         {0x4F, 0x1, 0x1, 0, 0},
9041         {0x50, 0x1c, 0x1c, 0, 0},
9042         {0x51, 0x2, 0x2, 0, 0},
9043         {0x52, 0x2, 0x2, 0, 0},
9044         {0x53, 0xf7, 0xf7, 1, 1},
9045         {0x54, 0xb4, 0xb4, 0, 0},
9046         {0x55, 0xd2, 0xd2, 0, 0},
9047         {0x56, 0, 0, 0, 0},
9048         {0x57, 0, 0, 0, 0},
9049         {0x58, 0x4, 0x4, 0, 0},
9050         {0x59, 0x96, 0x96, 0, 0},
9051         {0x5A, 0x3e, 0x3e, 0, 0},
9052         {0x5B, 0x3e, 0x3e, 0, 0},
9053         {0x5C, 0x13, 0x13, 0, 0},
9054         {0x5D, 0x2, 0x2, 0, 0},
9055         {0x5E, 0, 0, 0, 0},
9056         {0x5F, 0x7, 0x7, 0, 0},
9057         {0x60, 0x7, 0x7, 1, 1},
9058         {0x61, 0x8, 0x8, 0, 0},
9059         {0x62, 0x3, 0x3, 0, 0},
9060         {0x63, 0, 0, 0, 0},
9061         {0x64, 0, 0, 0, 0},
9062         {0x65, 0, 0, 0, 0},
9063         {0x66, 0, 0, 0, 0},
9064         {0x67, 0, 0, 0, 0},
9065         {0x68, 0x40, 0x40, 0, 0},
9066         {0x69, 0, 0, 0, 0},
9067         {0x6A, 0, 0, 0, 0},
9068         {0x6B, 0, 0, 0, 0},
9069         {0x6C, 0, 0, 0, 0},
9070         {0x6D, 0x1, 0x1, 0, 0},
9071         {0x6E, 0, 0, 0, 0},
9072         {0x6F, 0, 0, 0, 0},
9073         {0x70, 0x60, 0x60, 0, 0},
9074         {0x71, 0x66, 0x66, 0, 0},
9075         {0x72, 0xc, 0xc, 0, 0},
9076         {0x73, 0x66, 0x66, 0, 0},
9077         {0x74, 0x8f, 0x8f, 1, 1},
9078         {0x75, 0, 0, 0, 0},
9079         {0x76, 0xcc, 0xcc, 0, 0},
9080         {0x77, 0x1, 0x1, 0, 0},
9081         {0x78, 0x66, 0x66, 0, 0},
9082         {0x79, 0x66, 0x66, 0, 0},
9083         {0x7A, 0, 0, 0, 0},
9084         {0x7B, 0, 0, 0, 0},
9085         {0x7C, 0, 0, 0, 0},
9086         {0x7D, 0, 0, 0, 0},
9087         {0x7E, 0, 0, 0, 0},
9088         {0x7F, 0, 0, 0, 0},
9089         {0x80, 0, 0, 0, 0},
9090         {0x81, 0, 0, 0, 0},
9091         {0x82, 0, 0, 0, 0},
9092         {0x83, 0, 0, 0, 0},
9093         {0x84, 0, 0, 0, 0},
9094         {0x85, 0xff, 0xff, 0, 0},
9095         {0x86, 0, 0, 0, 0},
9096         {0x87, 0, 0, 0, 0},
9097         {0x88, 0, 0, 0, 0},
9098         {0x89, 0, 0, 0, 0},
9099         {0x8A, 0, 0, 0, 0},
9100         {0x8B, 0, 0, 0, 0},
9101         {0x8C, 0, 0, 0, 0},
9102         {0x8D, 0, 0, 0, 0},
9103         {0x8E, 0, 0, 0, 0},
9104         {0x8F, 0, 0, 0, 0},
9105         {0x90, 0, 0, 0, 0},
9106         {0x91, 0, 0, 0, 0},
9107         {0x92, 0, 0, 0, 0},
9108         {0x93, 0, 0, 0, 0},
9109         {0x94, 0, 0, 0, 0},
9110         {0x95, 0, 0, 0, 0},
9111         {0x96, 0, 0, 0, 0},
9112         {0x97, 0, 0, 0, 0},
9113         {0x98, 0, 0, 0, 0},
9114         {0x99, 0, 0, 0, 0},
9115         {0x9A, 0, 0, 0, 0},
9116         {0x9B, 0, 0, 0, 0},
9117         {0x9C, 0, 0, 0, 0},
9118         {0x9D, 0, 0, 0, 0},
9119         {0x9E, 0, 0, 0, 0},
9120         {0x9F, 0x6, 0x6, 0, 0},
9121         {0xA0, 0x66, 0x66, 0, 0},
9122         {0xA1, 0x66, 0x66, 0, 0},
9123         {0xA2, 0x66, 0x66, 0, 0},
9124         {0xA3, 0x66, 0x66, 0, 0},
9125         {0xA4, 0x66, 0x66, 0, 0},
9126         {0xA5, 0x66, 0x66, 0, 0},
9127         {0xA6, 0x66, 0x66, 0, 0},
9128         {0xA7, 0x66, 0x66, 0, 0},
9129         {0xA8, 0x66, 0x66, 0, 0},
9130         {0xA9, 0x66, 0x66, 0, 0},
9131         {0xAA, 0x66, 0x66, 0, 0},
9132         {0xAB, 0x66, 0x66, 0, 0},
9133         {0xAC, 0x66, 0x66, 0, 0},
9134         {0xAD, 0x66, 0x66, 0, 0},
9135         {0xAE, 0x66, 0x66, 0, 0},
9136         {0xAF, 0x66, 0x66, 0, 0},
9137         {0xB0, 0x66, 0x66, 0, 0},
9138         {0xB1, 0x66, 0x66, 0, 0},
9139         {0xB2, 0x66, 0x66, 0, 0},
9140         {0xB3, 0xa, 0xa, 0, 0},
9141         {0xB4, 0, 0, 0, 0},
9142         {0xB5, 0, 0, 0, 0},
9143         {0xB6, 0, 0, 0, 0},
9144         {0xFFFF, 0, 0, 0, 0}
9145 };
9146
9147 struct radio_regs regs_TX_2056_rev5[] = {
9148         {0x02, 0, 0, 0, 0},
9149         {0x03, 0, 0, 0, 0},
9150         {0x04, 0, 0, 0, 0},
9151         {0x05, 0, 0, 0, 0},
9152         {0x06, 0, 0, 0, 0},
9153         {0x07, 0, 0, 0, 0},
9154         {0x08, 0, 0, 0, 0},
9155         {0x09, 0, 0, 0, 0},
9156         {0x0A, 0, 0, 0, 0},
9157         {0x0B, 0, 0, 0, 0},
9158         {0x0C, 0, 0, 0, 0},
9159         {0x0D, 0, 0, 0, 0},
9160         {0x0E, 0, 0, 0, 0},
9161         {0x0F, 0, 0, 0, 0},
9162         {0x10, 0, 0, 0, 0},
9163         {0x11, 0, 0, 0, 0},
9164         {0x12, 0, 0, 0, 0},
9165         {0x13, 0, 0, 0, 0},
9166         {0x14, 0, 0, 0, 0},
9167         {0x15, 0, 0, 0, 0},
9168         {0x16, 0, 0, 0, 0},
9169         {0x17, 0, 0, 0, 0},
9170         {0x18, 0, 0, 0, 0},
9171         {0x19, 0, 0, 0, 0},
9172         {0x1A, 0, 0, 0, 0},
9173         {0x1B, 0, 0, 0, 0},
9174         {0x1C, 0, 0, 0, 0},
9175         {0x1D, 0, 0, 0, 0},
9176         {0x1E, 0, 0, 0, 0},
9177         {0x1F, 0, 0, 0, 0},
9178         {0x20, 0, 0, 0, 0},
9179         {0x21, 0x88, 0x88, 0, 0},
9180         {0x22, 0x88, 0x88, 0, 0},
9181         {0x23, 0x88, 0x88, 0, 0},
9182         {0x24, 0x88, 0x88, 0, 0},
9183         {0x25, 0xc, 0xc, 0, 0},
9184         {0x26, 0, 0, 0, 0},
9185         {0x27, 0x3, 0x3, 0, 0},
9186         {0x28, 0, 0, 0, 0},
9187         {0x29, 0x3, 0x3, 0, 0},
9188         {0x2A, 0x37, 0x37, 0, 0},
9189         {0x2B, 0x3, 0x3, 0, 0},
9190         {0x2C, 0, 0, 0, 0},
9191         {0x2D, 0, 0, 0, 0},
9192         {0x2E, 0x1, 0x1, 0, 0},
9193         {0x2F, 0x1, 0x1, 0, 0},
9194         {0x30, 0, 0, 0, 0},
9195         {0x31, 0, 0, 0, 0},
9196         {0x32, 0, 0, 0, 0},
9197         {0x33, 0x11, 0x11, 0, 0},
9198         {0x34, 0x11, 0x11, 0, 0},
9199         {0x35, 0, 0, 0, 0},
9200         {0x36, 0, 0, 0, 0},
9201         {0x37, 0x3, 0x3, 0, 0},
9202         {0x38, 0xf, 0xf, 0, 0},
9203         {0x39, 0, 0, 0, 0},
9204         {0x3A, 0x2d, 0x2d, 0, 0},
9205         {0x3B, 0, 0, 0, 0},
9206         {0x3C, 0x6e, 0x6e, 0, 0},
9207         {0x3D, 0xf0, 0xf0, 1, 1},
9208         {0x3E, 0, 0, 0, 0},
9209         {0x3F, 0, 0, 0, 0},
9210         {0x40, 0, 0, 0, 0},
9211         {0x41, 0x3, 0x3, 0, 0},
9212         {0x42, 0x3, 0x3, 0, 0},
9213         {0x43, 0, 0, 0, 0},
9214         {0x44, 0x1e, 0x1e, 0, 0},
9215         {0x45, 0, 0, 0, 0},
9216         {0x46, 0x6e, 0x6e, 0, 0},
9217         {0x47, 0xf0, 0xf0, 1, 1},
9218         {0x48, 0, 0, 0, 0},
9219         {0x49, 0x2, 0x2, 0, 0},
9220         {0x4A, 0xff, 0xff, 1, 1},
9221         {0x4B, 0xc, 0xc, 0, 0},
9222         {0x4C, 0, 0, 0, 0},
9223         {0x4D, 0x38, 0x38, 0, 0},
9224         {0x4E, 0x70, 0x70, 1, 1},
9225         {0x4F, 0x2, 0x2, 0, 0},
9226         {0x50, 0x88, 0x88, 0, 0},
9227         {0x51, 0xc, 0xc, 0, 0},
9228         {0x52, 0, 0, 0, 0},
9229         {0x53, 0x8, 0x8, 0, 0},
9230         {0x54, 0x70, 0x70, 1, 1},
9231         {0x55, 0x2, 0x2, 0, 0},
9232         {0x56, 0xff, 0xff, 1, 1},
9233         {0x57, 0, 0, 0, 0},
9234         {0x58, 0x83, 0x83, 0, 0},
9235         {0x59, 0x77, 0x77, 1, 1},
9236         {0x5A, 0, 0, 0, 0},
9237         {0x5B, 0x2, 0x2, 0, 0},
9238         {0x5C, 0x88, 0x88, 0, 0},
9239         {0x5D, 0, 0, 0, 0},
9240         {0x5E, 0x8, 0x8, 0, 0},
9241         {0x5F, 0x77, 0x77, 1, 1},
9242         {0x60, 0x1, 0x1, 0, 0},
9243         {0x61, 0, 0, 0, 0},
9244         {0x62, 0x7, 0x7, 0, 0},
9245         {0x63, 0, 0, 0, 0},
9246         {0x64, 0x7, 0x7, 0, 0},
9247         {0x65, 0, 0, 0, 0},
9248         {0x66, 0, 0, 0, 0},
9249         {0x67, 0, 0, 1, 1},
9250         {0x68, 0, 0, 0, 0},
9251         {0x69, 0xa, 0xa, 0, 0},
9252         {0x6A, 0, 0, 0, 0},
9253         {0x6B, 0, 0, 0, 0},
9254         {0x6C, 0, 0, 0, 0},
9255         {0x6D, 0, 0, 0, 0},
9256         {0x6E, 0, 0, 0, 0},
9257         {0x6F, 0, 0, 0, 0},
9258         {0x70, 0, 0, 0, 0},
9259         {0x71, 0x2, 0x2, 0, 0},
9260         {0x72, 0, 0, 0, 0},
9261         {0x73, 0, 0, 0, 0},
9262         {0x74, 0xe, 0xe, 0, 0},
9263         {0x75, 0xe, 0xe, 0, 0},
9264         {0x76, 0xe, 0xe, 0, 0},
9265         {0x77, 0x13, 0x13, 0, 0},
9266         {0x78, 0x13, 0x13, 0, 0},
9267         {0x79, 0x1b, 0x1b, 0, 0},
9268         {0x7A, 0x1b, 0x1b, 0, 0},
9269         {0x7B, 0x55, 0x55, 0, 0},
9270         {0x7C, 0x5b, 0x5b, 0, 0},
9271         {0x7D, 0, 0, 0, 0},
9272         {0x7E, 0, 0, 0, 0},
9273         {0x7F, 0, 0, 0, 0},
9274         {0x80, 0, 0, 0, 0},
9275         {0x81, 0, 0, 0, 0},
9276         {0x82, 0, 0, 0, 0},
9277         {0x83, 0, 0, 0, 0},
9278         {0x84, 0, 0, 0, 0},
9279         {0x85, 0, 0, 0, 0},
9280         {0x86, 0, 0, 0, 0},
9281         {0x87, 0, 0, 0, 0},
9282         {0x88, 0, 0, 0, 0},
9283         {0x89, 0, 0, 0, 0},
9284         {0x8A, 0, 0, 0, 0},
9285         {0x8B, 0, 0, 0, 0},
9286         {0x8C, 0, 0, 0, 0},
9287         {0x8D, 0, 0, 0, 0},
9288         {0x8E, 0, 0, 0, 0},
9289         {0x8F, 0, 0, 0, 0},
9290         {0x90, 0, 0, 0, 0},
9291         {0x91, 0, 0, 0, 0},
9292         {0x92, 0, 0, 0, 0},
9293         {0x93, 0x70, 0x70, 0, 0},
9294         {0x94, 0x70, 0x70, 0, 0},
9295         {0x95, 0x71, 0x71, 1, 1},
9296         {0x96, 0x71, 0x71, 1, 1},
9297         {0x97, 0x72, 0x72, 1, 1},
9298         {0x98, 0x73, 0x73, 1, 1},
9299         {0x99, 0x74, 0x74, 1, 1},
9300         {0x9A, 0x75, 0x75, 1, 1},
9301         {0xFFFF, 0, 0, 0, 0}
9302 };
9303
9304 struct radio_regs regs_RX_2056_rev5[] = {
9305         {0x02, 0, 0, 0, 0},
9306         {0x03, 0, 0, 0, 0},
9307         {0x04, 0, 0, 0, 0},
9308         {0x05, 0, 0, 0, 0},
9309         {0x06, 0, 0, 0, 0},
9310         {0x07, 0, 0, 0, 0},
9311         {0x08, 0, 0, 0, 0},
9312         {0x09, 0, 0, 0, 0},
9313         {0x0A, 0, 0, 0, 0},
9314         {0x0B, 0, 0, 0, 0},
9315         {0x0C, 0, 0, 0, 0},
9316         {0x0D, 0, 0, 0, 0},
9317         {0x0E, 0, 0, 0, 0},
9318         {0x0F, 0, 0, 0, 0},
9319         {0x10, 0, 0, 0, 0},
9320         {0x11, 0, 0, 0, 0},
9321         {0x12, 0, 0, 0, 0},
9322         {0x13, 0, 0, 0, 0},
9323         {0x14, 0, 0, 0, 0},
9324         {0x15, 0, 0, 0, 0},
9325         {0x16, 0, 0, 0, 0},
9326         {0x17, 0, 0, 0, 0},
9327         {0x18, 0, 0, 0, 0},
9328         {0x19, 0, 0, 0, 0},
9329         {0x1A, 0, 0, 0, 0},
9330         {0x1B, 0, 0, 0, 0},
9331         {0x1C, 0, 0, 0, 0},
9332         {0x1D, 0, 0, 0, 0},
9333         {0x1E, 0, 0, 0, 0},
9334         {0x1F, 0, 0, 0, 0},
9335         {0x20, 0x3, 0x3, 0, 0},
9336         {0x21, 0, 0, 0, 0},
9337         {0x22, 0, 0, 0, 0},
9338         {0x23, 0x90, 0x90, 0, 0},
9339         {0x24, 0x55, 0x55, 0, 0},
9340         {0x25, 0x15, 0x15, 0, 0},
9341         {0x26, 0x5, 0x5, 0, 0},
9342         {0x27, 0x15, 0x15, 0, 0},
9343         {0x28, 0x5, 0x5, 0, 0},
9344         {0x29, 0x20, 0x20, 0, 0},
9345         {0x2A, 0x11, 0x11, 0, 0},
9346         {0x2B, 0x90, 0x90, 0, 0},
9347         {0x2C, 0, 0, 0, 0},
9348         {0x2D, 0x88, 0x88, 0, 0},
9349         {0x2E, 0x32, 0x32, 0, 0},
9350         {0x2F, 0x77, 0x77, 0, 0},
9351         {0x30, 0x17, 0x17, 1, 1},
9352         {0x31, 0xff, 0xff, 1, 1},
9353         {0x32, 0x20, 0x20, 0, 0},
9354         {0x33, 0, 0, 0, 0},
9355         {0x34, 0x88, 0x88, 0, 0},
9356         {0x35, 0x32, 0x32, 0, 0},
9357         {0x36, 0x77, 0x77, 0, 0},
9358         {0x37, 0x17, 0x17, 1, 1},
9359         {0x38, 0xf0, 0xf0, 1, 1},
9360         {0x39, 0x20, 0x20, 0, 0},
9361         {0x3A, 0x8, 0x8, 0, 0},
9362         {0x3B, 0x55, 0x55, 1, 1},
9363         {0x3C, 0, 0, 0, 0},
9364         {0x3D, 0x88, 0x88, 1, 1},
9365         {0x3E, 0, 0, 0, 0},
9366         {0x3F, 0, 0, 1, 1},
9367         {0x40, 0x7, 0x7, 1, 1},
9368         {0x41, 0x6, 0x6, 0, 0},
9369         {0x42, 0x4, 0x4, 0, 0},
9370         {0x43, 0, 0, 0, 0},
9371         {0x44, 0x8, 0x8, 0, 0},
9372         {0x45, 0x55, 0x55, 1, 1},
9373         {0x46, 0, 0, 0, 0},
9374         {0x47, 0x11, 0x11, 0, 0},
9375         {0x48, 0, 0, 0, 0},
9376         {0x49, 0, 0, 1, 1},
9377         {0x4A, 0x7, 0x7, 0, 0},
9378         {0x4B, 0x6, 0x6, 0, 0},
9379         {0x4C, 0x4, 0x4, 0, 0},
9380         {0x4D, 0, 0, 0, 0},
9381         {0x4E, 0, 0, 0, 0},
9382         {0x4F, 0x26, 0x26, 1, 1},
9383         {0x50, 0x26, 0x26, 1, 1},
9384         {0x51, 0xf, 0xf, 1, 1},
9385         {0x52, 0xf, 0xf, 1, 1},
9386         {0x53, 0x44, 0x44, 0, 0},
9387         {0x54, 0, 0, 0, 0},
9388         {0x55, 0, 0, 0, 0},
9389         {0x56, 0x8, 0x8, 0, 0},
9390         {0x57, 0x8, 0x8, 0, 0},
9391         {0x58, 0x7, 0x7, 0, 0},
9392         {0x59, 0x22, 0x22, 0, 0},
9393         {0x5A, 0x22, 0x22, 0, 0},
9394         {0x5B, 0x2, 0x2, 0, 0},
9395         {0x5C, 0x4, 0x4, 1, 1},
9396         {0x5D, 0x7, 0x7, 0, 0},
9397         {0x5E, 0x55, 0x55, 0, 0},
9398         {0x5F, 0x23, 0x23, 0, 0},
9399         {0x60, 0x41, 0x41, 0, 0},
9400         {0x61, 0x1, 0x1, 0, 0},
9401         {0x62, 0xa, 0xa, 0, 0},
9402         {0x63, 0, 0, 0, 0},
9403         {0x64, 0, 0, 0, 0},
9404         {0x65, 0, 0, 0, 0},
9405         {0x66, 0, 0, 0, 0},
9406         {0x67, 0, 0, 0, 0},
9407         {0x68, 0, 0, 0, 0},
9408         {0x69, 0, 0, 0, 0},
9409         {0x6A, 0, 0, 0, 0},
9410         {0x6B, 0xc, 0xc, 0, 0},
9411         {0x6C, 0, 0, 0, 0},
9412         {0x6D, 0, 0, 0, 0},
9413         {0x6E, 0, 0, 0, 0},
9414         {0x6F, 0, 0, 0, 0},
9415         {0x70, 0, 0, 0, 0},
9416         {0x71, 0, 0, 0, 0},
9417         {0x72, 0x22, 0x22, 0, 0},
9418         {0x73, 0x22, 0x22, 0, 0},
9419         {0x74, 0, 0, 1, 1},
9420         {0x75, 0xa, 0xa, 0, 0},
9421         {0x76, 0x1, 0x1, 0, 0},
9422         {0x77, 0x22, 0x22, 0, 0},
9423         {0x78, 0x30, 0x30, 0, 0},
9424         {0x79, 0, 0, 0, 0},
9425         {0x7A, 0, 0, 0, 0},
9426         {0x7B, 0, 0, 0, 0},
9427         {0x7C, 0, 0, 0, 0},
9428         {0x7D, 0, 0, 0, 0},
9429         {0x7E, 0, 0, 0, 0},
9430         {0x7F, 0, 0, 0, 0},
9431         {0x80, 0, 0, 0, 0},
9432         {0x81, 0, 0, 0, 0},
9433         {0x82, 0, 0, 0, 0},
9434         {0x83, 0, 0, 0, 0},
9435         {0x84, 0, 0, 0, 0},
9436         {0x85, 0, 0, 0, 0},
9437         {0x86, 0, 0, 0, 0},
9438         {0x87, 0, 0, 0, 0},
9439         {0x88, 0, 0, 0, 0},
9440         {0x89, 0, 0, 0, 0},
9441         {0x8A, 0, 0, 0, 0},
9442         {0x8B, 0, 0, 0, 0},
9443         {0x8C, 0, 0, 0, 0},
9444         {0x8D, 0, 0, 0, 0},
9445         {0x8E, 0, 0, 0, 0},
9446         {0x8F, 0, 0, 0, 0},
9447         {0x90, 0, 0, 0, 0},
9448         {0x91, 0, 0, 0, 0},
9449         {0x92, 0, 0, 0, 0},
9450         {0x93, 0, 0, 0, 0},
9451         {0x94, 0, 0, 0, 0},
9452         {0xFFFF, 0, 0, 0, 0}
9453 };
9454
9455 struct radio_regs regs_SYN_2056_rev6[] = {
9456         {0x02, 0, 0, 0, 0},
9457         {0x03, 0, 0, 0, 0},
9458         {0x04, 0, 0, 0, 0},
9459         {0x05, 0, 0, 0, 0},
9460         {0x06, 0, 0, 0, 0},
9461         {0x07, 0, 0, 0, 0},
9462         {0x08, 0, 0, 0, 0},
9463         {0x09, 0x1, 0x1, 0, 0},
9464         {0x0A, 0, 0, 0, 0},
9465         {0x0B, 0, 0, 0, 0},
9466         {0x0C, 0, 0, 0, 0},
9467         {0x0D, 0, 0, 0, 0},
9468         {0x0E, 0, 0, 0, 0},
9469         {0x0F, 0, 0, 0, 0},
9470         {0x10, 0, 0, 0, 0},
9471         {0x11, 0, 0, 0, 0},
9472         {0x12, 0, 0, 0, 0},
9473         {0x13, 0, 0, 0, 0},
9474         {0x14, 0, 0, 0, 0},
9475         {0x15, 0, 0, 0, 0},
9476         {0x16, 0, 0, 0, 0},
9477         {0x17, 0, 0, 0, 0},
9478         {0x18, 0, 0, 0, 0},
9479         {0x19, 0, 0, 0, 0},
9480         {0x1A, 0, 0, 0, 0},
9481         {0x1B, 0, 0, 0, 0},
9482         {0x1C, 0, 0, 0, 0},
9483         {0x1D, 0, 0, 0, 0},
9484         {0x1E, 0, 0, 0, 0},
9485         {0x1F, 0, 0, 0, 0},
9486         {0x20, 0, 0, 0, 0},
9487         {0x21, 0, 0, 0, 0},
9488         {0x22, 0x60, 0x60, 0, 0},
9489         {0x23, 0x6, 0x6, 0, 0},
9490         {0x24, 0xc, 0xc, 0, 0},
9491         {0x25, 0, 0, 0, 0},
9492         {0x26, 0, 0, 0, 0},
9493         {0x27, 0, 0, 0, 0},
9494         {0x28, 0x1, 0x1, 0, 0},
9495         {0x29, 0, 0, 0, 0},
9496         {0x2A, 0, 0, 0, 0},
9497         {0x2B, 0, 0, 0, 0},
9498         {0x2C, 0, 0, 0, 0},
9499         {0x2D, 0, 0, 0, 0},
9500         {0x2E, 0, 0, 0, 0},
9501         {0x2F, 0x1f, 0x1f, 0, 0},
9502         {0x30, 0x15, 0x15, 0, 0},
9503         {0x31, 0xf, 0xf, 0, 0},
9504         {0x32, 0, 0, 0, 0},
9505         {0x33, 0, 0, 0, 0},
9506         {0x34, 0, 0, 0, 0},
9507         {0x35, 0, 0, 0, 0},
9508         {0x36, 0, 0, 0, 0},
9509         {0x37, 0, 0, 0, 0},
9510         {0x38, 0, 0, 0, 0},
9511         {0x39, 0, 0, 0, 0},
9512         {0x3A, 0, 0, 0, 0},
9513         {0x3B, 0, 0, 0, 0},
9514         {0x3C, 0x13, 0x13, 0, 0},
9515         {0x3D, 0xf, 0xf, 0, 0},
9516         {0x3E, 0x18, 0x18, 0, 0},
9517         {0x3F, 0, 0, 0, 0},
9518         {0x40, 0, 0, 0, 0},
9519         {0x41, 0x20, 0x20, 0, 0},
9520         {0x42, 0x20, 0x20, 0, 0},
9521         {0x43, 0, 0, 0, 0},
9522         {0x44, 0x77, 0x77, 0, 0},
9523         {0x45, 0x7, 0x7, 0, 0},
9524         {0x46, 0x1, 0x1, 0, 0},
9525         {0x47, 0x4, 0x4, 0, 0},
9526         {0x48, 0xf, 0xf, 0, 0},
9527         {0x49, 0x30, 0x30, 0, 0},
9528         {0x4A, 0x32, 0x32, 0, 0},
9529         {0x4B, 0xd, 0xd, 0, 0},
9530         {0x4C, 0xd, 0xd, 0, 0},
9531         {0x4D, 0x4, 0x4, 0, 0},
9532         {0x4E, 0x6, 0x6, 0, 0},
9533         {0x4F, 0x1, 0x1, 0, 0},
9534         {0x50, 0x1c, 0x1c, 0, 0},
9535         {0x51, 0x2, 0x2, 0, 0},
9536         {0x52, 0x2, 0x2, 0, 0},
9537         {0x53, 0xf7, 0xf7, 1, 1},
9538         {0x54, 0xb4, 0xb4, 0, 0},
9539         {0x55, 0xd2, 0xd2, 0, 0},
9540         {0x56, 0, 0, 0, 0},
9541         {0x57, 0, 0, 0, 0},
9542         {0x58, 0x4, 0x4, 0, 0},
9543         {0x59, 0x96, 0x96, 0, 0},
9544         {0x5A, 0x3e, 0x3e, 0, 0},
9545         {0x5B, 0x3e, 0x3e, 0, 0},
9546         {0x5C, 0x13, 0x13, 0, 0},
9547         {0x5D, 0x2, 0x2, 0, 0},
9548         {0x5E, 0, 0, 0, 0},
9549         {0x5F, 0x7, 0x7, 0, 0},
9550         {0x60, 0x7, 0x7, 1, 1},
9551         {0x61, 0x8, 0x8, 0, 0},
9552         {0x62, 0x3, 0x3, 0, 0},
9553         {0x63, 0, 0, 0, 0},
9554         {0x64, 0, 0, 0, 0},
9555         {0x65, 0, 0, 0, 0},
9556         {0x66, 0, 0, 0, 0},
9557         {0x67, 0, 0, 0, 0},
9558         {0x68, 0x40, 0x40, 0, 0},
9559         {0x69, 0, 0, 0, 0},
9560         {0x6A, 0, 0, 0, 0},
9561         {0x6B, 0, 0, 0, 0},
9562         {0x6C, 0, 0, 0, 0},
9563         {0x6D, 0x1, 0x1, 0, 0},
9564         {0x6E, 0, 0, 0, 0},
9565         {0x6F, 0, 0, 0, 0},
9566         {0x70, 0x60, 0x60, 0, 0},
9567         {0x71, 0x66, 0x66, 0, 0},
9568         {0x72, 0xc, 0xc, 0, 0},
9569         {0x73, 0x66, 0x66, 0, 0},
9570         {0x74, 0x8f, 0x8f, 1, 1},
9571         {0x75, 0, 0, 0, 0},
9572         {0x76, 0xcc, 0xcc, 0, 0},
9573         {0x77, 0x1, 0x1, 0, 0},
9574         {0x78, 0x66, 0x66, 0, 0},
9575         {0x79, 0x66, 0x66, 0, 0},
9576         {0x7A, 0, 0, 0, 0},
9577         {0x7B, 0, 0, 0, 0},
9578         {0x7C, 0, 0, 0, 0},
9579         {0x7D, 0, 0, 0, 0},
9580         {0x7E, 0, 0, 0, 0},
9581         {0x7F, 0, 0, 0, 0},
9582         {0x80, 0, 0, 0, 0},
9583         {0x81, 0, 0, 0, 0},
9584         {0x82, 0, 0, 0, 0},
9585         {0x83, 0, 0, 0, 0},
9586         {0x84, 0, 0, 0, 0},
9587         {0x85, 0xff, 0xff, 0, 0},
9588         {0x86, 0, 0, 0, 0},
9589         {0x87, 0, 0, 0, 0},
9590         {0x88, 0, 0, 0, 0},
9591         {0x89, 0, 0, 0, 0},
9592         {0x8A, 0, 0, 0, 0},
9593         {0x8B, 0, 0, 0, 0},
9594         {0x8C, 0, 0, 0, 0},
9595         {0x8D, 0, 0, 0, 0},
9596         {0x8E, 0, 0, 0, 0},
9597         {0x8F, 0, 0, 0, 0},
9598         {0x90, 0, 0, 0, 0},
9599         {0x91, 0, 0, 0, 0},
9600         {0x92, 0, 0, 0, 0},
9601         {0x93, 0, 0, 0, 0},
9602         {0x94, 0, 0, 0, 0},
9603         {0x95, 0, 0, 0, 0},
9604         {0x96, 0, 0, 0, 0},
9605         {0x97, 0, 0, 0, 0},
9606         {0x98, 0, 0, 0, 0},
9607         {0x99, 0, 0, 0, 0},
9608         {0x9A, 0, 0, 0, 0},
9609         {0x9B, 0, 0, 0, 0},
9610         {0x9C, 0, 0, 0, 0},
9611         {0x9D, 0, 0, 0, 0},
9612         {0x9E, 0, 0, 0, 0},
9613         {0x9F, 0x6, 0x6, 0, 0},
9614         {0xA0, 0x66, 0x66, 0, 0},
9615         {0xA1, 0x66, 0x66, 0, 0},
9616         {0xA2, 0x66, 0x66, 0, 0},
9617         {0xA3, 0x66, 0x66, 0, 0},
9618         {0xA4, 0x66, 0x66, 0, 0},
9619         {0xA5, 0x66, 0x66, 0, 0},
9620         {0xA6, 0x66, 0x66, 0, 0},
9621         {0xA7, 0x66, 0x66, 0, 0},
9622         {0xA8, 0x66, 0x66, 0, 0},
9623         {0xA9, 0x66, 0x66, 0, 0},
9624         {0xAA, 0x66, 0x66, 0, 0},
9625         {0xAB, 0x66, 0x66, 0, 0},
9626         {0xAC, 0x66, 0x66, 0, 0},
9627         {0xAD, 0x66, 0x66, 0, 0},
9628         {0xAE, 0x66, 0x66, 0, 0},
9629         {0xAF, 0x66, 0x66, 0, 0},
9630         {0xB0, 0x66, 0x66, 0, 0},
9631         {0xB1, 0x66, 0x66, 0, 0},
9632         {0xB2, 0x66, 0x66, 0, 0},
9633         {0xB3, 0xa, 0xa, 0, 0},
9634         {0xB4, 0, 0, 0, 0},
9635         {0xB5, 0, 0, 0, 0},
9636         {0xB6, 0, 0, 0, 0},
9637         {0xFFFF, 0, 0, 0, 0}
9638 };
9639
9640 struct radio_regs regs_TX_2056_rev6[] = {
9641         {0x02, 0, 0, 0, 0},
9642         {0x03, 0, 0, 0, 0},
9643         {0x04, 0, 0, 0, 0},
9644         {0x05, 0, 0, 0, 0},
9645         {0x06, 0, 0, 0, 0},
9646         {0x07, 0, 0, 0, 0},
9647         {0x08, 0, 0, 0, 0},
9648         {0x09, 0, 0, 0, 0},
9649         {0x0A, 0, 0, 0, 0},
9650         {0x0B, 0, 0, 0, 0},
9651         {0x0C, 0, 0, 0, 0},
9652         {0x0D, 0, 0, 0, 0},
9653         {0x0E, 0, 0, 0, 0},
9654         {0x0F, 0, 0, 0, 0},
9655         {0x10, 0, 0, 0, 0},
9656         {0x11, 0, 0, 0, 0},
9657         {0x12, 0, 0, 0, 0},
9658         {0x13, 0, 0, 0, 0},
9659         {0x14, 0, 0, 0, 0},
9660         {0x15, 0, 0, 0, 0},
9661         {0x16, 0, 0, 0, 0},
9662         {0x17, 0, 0, 0, 0},
9663         {0x18, 0, 0, 0, 0},
9664         {0x19, 0, 0, 0, 0},
9665         {0x1A, 0, 0, 0, 0},
9666         {0x1B, 0, 0, 0, 0},
9667         {0x1C, 0, 0, 0, 0},
9668         {0x1D, 0, 0, 0, 0},
9669         {0x1E, 0, 0, 0, 0},
9670         {0x1F, 0, 0, 0, 0},
9671         {0x20, 0, 0, 0, 0},
9672         {0x21, 0x88, 0x88, 0, 0},
9673         {0x22, 0x88, 0x88, 0, 0},
9674         {0x23, 0x88, 0x88, 0, 0},
9675         {0x24, 0x88, 0x88, 0, 0},
9676         {0x25, 0xc, 0xc, 0, 0},
9677         {0x26, 0, 0, 0, 0},
9678         {0x27, 0x3, 0x3, 0, 0},
9679         {0x28, 0, 0, 0, 0},
9680         {0x29, 0x3, 0x3, 0, 0},
9681         {0x2A, 0x37, 0x37, 0, 0},
9682         {0x2B, 0x3, 0x3, 0, 0},
9683         {0x2C, 0, 0, 0, 0},
9684         {0x2D, 0, 0, 0, 0},
9685         {0x2E, 0x1, 0x1, 0, 0},
9686         {0x2F, 0x1, 0x1, 0, 0},
9687         {0x30, 0, 0, 0, 0},
9688         {0x31, 0, 0, 0, 0},
9689         {0x32, 0, 0, 0, 0},
9690         {0x33, 0x11, 0x11, 0, 0},
9691         {0x34, 0xee, 0xee, 1, 1},
9692         {0x35, 0, 0, 0, 0},
9693         {0x36, 0, 0, 0, 0},
9694         {0x37, 0x3, 0x3, 0, 0},
9695         {0x38, 0x50, 0x50, 1, 1},
9696         {0x39, 0, 0, 0, 0},
9697         {0x3A, 0x50, 0x50, 1, 1},
9698         {0x3B, 0, 0, 0, 0},
9699         {0x3C, 0x6e, 0x6e, 0, 0},
9700         {0x3D, 0xf0, 0xf0, 1, 1},
9701         {0x3E, 0, 0, 0, 0},
9702         {0x3F, 0, 0, 0, 0},
9703         {0x40, 0, 0, 0, 0},
9704         {0x41, 0x3, 0x3, 0, 0},
9705         {0x42, 0x3, 0x3, 0, 0},
9706         {0x43, 0, 0, 0, 0},
9707         {0x44, 0x1e, 0x1e, 0, 0},
9708         {0x45, 0, 0, 0, 0},
9709         {0x46, 0x6e, 0x6e, 0, 0},
9710         {0x47, 0xf0, 0xf0, 1, 1},
9711         {0x48, 0, 0, 0, 0},
9712         {0x49, 0x2, 0x2, 0, 0},
9713         {0x4A, 0xff, 0xff, 1, 1},
9714         {0x4B, 0xc, 0xc, 0, 0},
9715         {0x4C, 0, 0, 0, 0},
9716         {0x4D, 0x38, 0x38, 0, 0},
9717         {0x4E, 0x70, 0x70, 1, 1},
9718         {0x4F, 0x2, 0x2, 0, 0},
9719         {0x50, 0x88, 0x88, 0, 0},
9720         {0x51, 0xc, 0xc, 0, 0},
9721         {0x52, 0, 0, 0, 0},
9722         {0x53, 0x8, 0x8, 0, 0},
9723         {0x54, 0x70, 0x70, 1, 1},
9724         {0x55, 0x2, 0x2, 0, 0},
9725         {0x56, 0xff, 0xff, 1, 1},
9726         {0x57, 0, 0, 0, 0},
9727         {0x58, 0x83, 0x83, 0, 0},
9728         {0x59, 0x77, 0x77, 1, 1},
9729         {0x5A, 0, 0, 0, 0},
9730         {0x5B, 0x2, 0x2, 0, 0},
9731         {0x5C, 0x88, 0x88, 0, 0},
9732         {0x5D, 0, 0, 0, 0},
9733         {0x5E, 0x8, 0x8, 0, 0},
9734         {0x5F, 0x77, 0x77, 1, 1},
9735         {0x60, 0x1, 0x1, 0, 0},
9736         {0x61, 0, 0, 0, 0},
9737         {0x62, 0x7, 0x7, 0, 0},
9738         {0x63, 0, 0, 0, 0},
9739         {0x64, 0x7, 0x7, 0, 0},
9740         {0x65, 0, 0, 0, 0},
9741         {0x66, 0, 0, 0, 0},
9742         {0x67, 0, 0, 1, 1},
9743         {0x68, 0, 0, 0, 0},
9744         {0x69, 0xa, 0xa, 0, 0},
9745         {0x6A, 0, 0, 0, 0},
9746         {0x6B, 0, 0, 0, 0},
9747         {0x6C, 0, 0, 0, 0},
9748         {0x6D, 0, 0, 0, 0},
9749         {0x6E, 0, 0, 0, 0},
9750         {0x6F, 0, 0, 0, 0},
9751         {0x70, 0, 0, 0, 0},
9752         {0x71, 0x2, 0x2, 0, 0},
9753         {0x72, 0, 0, 0, 0},
9754         {0x73, 0, 0, 0, 0},
9755         {0x74, 0xe, 0xe, 0, 0},
9756         {0x75, 0xe, 0xe, 0, 0},
9757         {0x76, 0xe, 0xe, 0, 0},
9758         {0x77, 0x13, 0x13, 0, 0},
9759         {0x78, 0x13, 0x13, 0, 0},
9760         {0x79, 0x1b, 0x1b, 0, 0},
9761         {0x7A, 0x1b, 0x1b, 0, 0},
9762         {0x7B, 0x55, 0x55, 0, 0},
9763         {0x7C, 0x5b, 0x5b, 0, 0},
9764         {0x7D, 0x30, 0x30, 1, 1},
9765         {0x7E, 0, 0, 0, 0},
9766         {0x7F, 0, 0, 0, 0},
9767         {0x80, 0, 0, 0, 0},
9768         {0x81, 0, 0, 0, 0},
9769         {0x82, 0, 0, 0, 0},
9770         {0x83, 0, 0, 0, 0},
9771         {0x84, 0, 0, 0, 0},
9772         {0x85, 0, 0, 0, 0},
9773         {0x86, 0, 0, 0, 0},
9774         {0x87, 0, 0, 0, 0},
9775         {0x88, 0, 0, 0, 0},
9776         {0x89, 0, 0, 0, 0},
9777         {0x8A, 0, 0, 0, 0},
9778         {0x8B, 0, 0, 0, 0},
9779         {0x8C, 0, 0, 0, 0},
9780         {0x8D, 0, 0, 0, 0},
9781         {0x8E, 0, 0, 0, 0},
9782         {0x8F, 0, 0, 0, 0},
9783         {0x90, 0, 0, 0, 0},
9784         {0x91, 0, 0, 0, 0},
9785         {0x92, 0, 0, 0, 0},
9786         {0x93, 0x70, 0x70, 0, 0},
9787         {0x94, 0x70, 0x70, 0, 0},
9788         {0x95, 0x70, 0x70, 0, 0},
9789         {0x96, 0x70, 0x70, 0, 0},
9790         {0x97, 0x70, 0x70, 0, 0},
9791         {0x98, 0x70, 0x70, 0, 0},
9792         {0x99, 0x70, 0x70, 0, 0},
9793         {0x9A, 0x70, 0x70, 0, 0},
9794         {0xFFFF, 0, 0, 0, 0}
9795 };
9796
9797 struct radio_regs regs_RX_2056_rev6[] = {
9798         {0x02, 0, 0, 0, 0},
9799         {0x03, 0, 0, 0, 0},
9800         {0x04, 0, 0, 0, 0},
9801         {0x05, 0, 0, 0, 0},
9802         {0x06, 0, 0, 0, 0},
9803         {0x07, 0, 0, 0, 0},
9804         {0x08, 0, 0, 0, 0},
9805         {0x09, 0, 0, 0, 0},
9806         {0x0A, 0, 0, 0, 0},
9807         {0x0B, 0, 0, 0, 0},
9808         {0x0C, 0, 0, 0, 0},
9809         {0x0D, 0, 0, 0, 0},
9810         {0x0E, 0, 0, 0, 0},
9811         {0x0F, 0, 0, 0, 0},
9812         {0x10, 0, 0, 0, 0},
9813         {0x11, 0, 0, 0, 0},
9814         {0x12, 0, 0, 0, 0},
9815         {0x13, 0, 0, 0, 0},
9816         {0x14, 0, 0, 0, 0},
9817         {0x15, 0, 0, 0, 0},
9818         {0x16, 0, 0, 0, 0},
9819         {0x17, 0, 0, 0, 0},
9820         {0x18, 0, 0, 0, 0},
9821         {0x19, 0, 0, 0, 0},
9822         {0x1A, 0, 0, 0, 0},
9823         {0x1B, 0, 0, 0, 0},
9824         {0x1C, 0, 0, 0, 0},
9825         {0x1D, 0, 0, 0, 0},
9826         {0x1E, 0, 0, 0, 0},
9827         {0x1F, 0, 0, 0, 0},
9828         {0x20, 0x3, 0x3, 0, 0},
9829         {0x21, 0, 0, 0, 0},
9830         {0x22, 0, 0, 0, 0},
9831         {0x23, 0x90, 0x90, 0, 0},
9832         {0x24, 0x55, 0x55, 0, 0},
9833         {0x25, 0x15, 0x15, 0, 0},
9834         {0x26, 0x5, 0x5, 0, 0},
9835         {0x27, 0x15, 0x15, 0, 0},
9836         {0x28, 0x5, 0x5, 0, 0},
9837         {0x29, 0x20, 0x20, 0, 0},
9838         {0x2A, 0x11, 0x11, 0, 0},
9839         {0x2B, 0x90, 0x90, 0, 0},
9840         {0x2C, 0, 0, 0, 0},
9841         {0x2D, 0x88, 0x88, 0, 0},
9842         {0x2E, 0x32, 0x32, 0, 0},
9843         {0x2F, 0x77, 0x77, 0, 0},
9844         {0x30, 0x17, 0x17, 1, 1},
9845         {0x31, 0xff, 0xff, 1, 1},
9846         {0x32, 0x20, 0x20, 0, 0},
9847         {0x33, 0, 0, 0, 0},
9848         {0x34, 0x88, 0x88, 0, 0},
9849         {0x35, 0x32, 0x32, 0, 0},
9850         {0x36, 0x77, 0x77, 0, 0},
9851         {0x37, 0x17, 0x17, 1, 1},
9852         {0x38, 0xf0, 0xf0, 1, 1},
9853         {0x39, 0x20, 0x20, 0, 0},
9854         {0x3A, 0x8, 0x8, 0, 0},
9855         {0x3B, 0x55, 0x55, 1, 1},
9856         {0x3C, 0, 0, 0, 0},
9857         {0x3D, 0x88, 0x88, 1, 1},
9858         {0x3E, 0, 0, 0, 0},
9859         {0x3F, 0x44, 0x44, 0, 0},
9860         {0x40, 0x7, 0x7, 1, 1},
9861         {0x41, 0x6, 0x6, 0, 0},
9862         {0x42, 0x4, 0x4, 0, 0},
9863         {0x43, 0, 0, 0, 0},
9864         {0x44, 0x8, 0x8, 0, 0},
9865         {0x45, 0x55, 0x55, 1, 1},
9866         {0x46, 0, 0, 0, 0},
9867         {0x47, 0x11, 0x11, 0, 0},
9868         {0x48, 0, 0, 0, 0},
9869         {0x49, 0x44, 0x44, 0, 0},
9870         {0x4A, 0x7, 0x7, 0, 0},
9871         {0x4B, 0x6, 0x6, 0, 0},
9872         {0x4C, 0x4, 0x4, 0, 0},
9873         {0x4D, 0, 0, 0, 0},
9874         {0x4E, 0, 0, 0, 0},
9875         {0x4F, 0x26, 0x26, 1, 1},
9876         {0x50, 0x26, 0x26, 1, 1},
9877         {0x51, 0xf, 0xf, 1, 1},
9878         {0x52, 0xf, 0xf, 1, 1},
9879         {0x53, 0x44, 0x44, 0, 0},
9880         {0x54, 0, 0, 0, 0},
9881         {0x55, 0, 0, 0, 0},
9882         {0x56, 0x8, 0x8, 0, 0},
9883         {0x57, 0x8, 0x8, 0, 0},
9884         {0x58, 0x7, 0x7, 0, 0},
9885         {0x59, 0x22, 0x22, 0, 0},
9886         {0x5A, 0x22, 0x22, 0, 0},
9887         {0x5B, 0x2, 0x2, 0, 0},
9888         {0x5C, 0x4, 0x4, 1, 1},
9889         {0x5D, 0x7, 0x7, 0, 0},
9890         {0x5E, 0x55, 0x55, 0, 0},
9891         {0x5F, 0x23, 0x23, 0, 0},
9892         {0x60, 0x41, 0x41, 0, 0},
9893         {0x61, 0x1, 0x1, 0, 0},
9894         {0x62, 0xa, 0xa, 0, 0},
9895         {0x63, 0, 0, 0, 0},
9896         {0x64, 0, 0, 0, 0},
9897         {0x65, 0, 0, 0, 0},
9898         {0x66, 0, 0, 0, 0},
9899         {0x67, 0, 0, 0, 0},
9900         {0x68, 0, 0, 0, 0},
9901         {0x69, 0, 0, 0, 0},
9902         {0x6A, 0, 0, 0, 0},
9903         {0x6B, 0xc, 0xc, 0, 0},
9904         {0x6C, 0, 0, 0, 0},
9905         {0x6D, 0, 0, 0, 0},
9906         {0x6E, 0, 0, 0, 0},
9907         {0x6F, 0, 0, 0, 0},
9908         {0x70, 0, 0, 0, 0},
9909         {0x71, 0, 0, 0, 0},
9910         {0x72, 0x22, 0x22, 0, 0},
9911         {0x73, 0x22, 0x22, 0, 0},
9912         {0x74, 0, 0, 1, 1},
9913         {0x75, 0xa, 0xa, 0, 0},
9914         {0x76, 0x1, 0x1, 0, 0},
9915         {0x77, 0x22, 0x22, 0, 0},
9916         {0x78, 0x30, 0x30, 0, 0},
9917         {0x79, 0, 0, 0, 0},
9918         {0x7A, 0, 0, 0, 0},
9919         {0x7B, 0, 0, 0, 0},
9920         {0x7C, 0, 0, 0, 0},
9921         {0x7D, 0x5, 0x5, 1, 1},
9922         {0x7E, 0, 0, 0, 0},
9923         {0x7F, 0, 0, 0, 0},
9924         {0x80, 0, 0, 0, 0},
9925         {0x81, 0, 0, 0, 0},
9926         {0x82, 0, 0, 0, 0},
9927         {0x83, 0, 0, 0, 0},
9928         {0x84, 0, 0, 0, 0},
9929         {0x85, 0, 0, 0, 0},
9930         {0x86, 0, 0, 0, 0},
9931         {0x87, 0, 0, 0, 0},
9932         {0x88, 0, 0, 0, 0},
9933         {0x89, 0, 0, 0, 0},
9934         {0x8A, 0, 0, 0, 0},
9935         {0x8B, 0, 0, 0, 0},
9936         {0x8C, 0, 0, 0, 0},
9937         {0x8D, 0, 0, 0, 0},
9938         {0x8E, 0, 0, 0, 0},
9939         {0x8F, 0, 0, 0, 0},
9940         {0x90, 0, 0, 0, 0},
9941         {0x91, 0, 0, 0, 0},
9942         {0x92, 0, 0, 0, 0},
9943         {0x93, 0, 0, 0, 0},
9944         {0x94, 0, 0, 0, 0},
9945         {0xFFFF, 0, 0, 0, 0}
9946 };
9947
9948 struct radio_regs regs_SYN_2056_rev7[] = {
9949         {0x02, 0, 0, 0, 0},
9950         {0x03, 0, 0, 0, 0},
9951         {0x04, 0, 0, 0, 0},
9952         {0x05, 0, 0, 0, 0},
9953         {0x06, 0, 0, 0, 0},
9954         {0x07, 0, 0, 0, 0},
9955         {0x08, 0, 0, 0, 0},
9956         {0x09, 0x1, 0x1, 0, 0},
9957         {0x0A, 0, 0, 0, 0},
9958         {0x0B, 0, 0, 0, 0},
9959         {0x0C, 0, 0, 0, 0},
9960         {0x0D, 0, 0, 0, 0},
9961         {0x0E, 0, 0, 0, 0},
9962         {0x0F, 0, 0, 0, 0},
9963         {0x10, 0, 0, 0, 0},
9964         {0x11, 0, 0, 0, 0},
9965         {0x12, 0, 0, 0, 0},
9966         {0x13, 0, 0, 0, 0},
9967         {0x14, 0, 0, 0, 0},
9968         {0x15, 0, 0, 0, 0},
9969         {0x16, 0, 0, 0, 0},
9970         {0x17, 0, 0, 0, 0},
9971         {0x18, 0, 0, 0, 0},
9972         {0x19, 0, 0, 0, 0},
9973         {0x1A, 0, 0, 0, 0},
9974         {0x1B, 0, 0, 0, 0},
9975         {0x1C, 0, 0, 0, 0},
9976         {0x1D, 0, 0, 0, 0},
9977         {0x1E, 0, 0, 0, 0},
9978         {0x1F, 0, 0, 0, 0},
9979         {0x20, 0, 0, 0, 0},
9980         {0x21, 0, 0, 0, 0},
9981         {0x22, 0x60, 0x60, 0, 0},
9982         {0x23, 0x6, 0x6, 0, 0},
9983         {0x24, 0xc, 0xc, 0, 0},
9984         {0x25, 0, 0, 0, 0},
9985         {0x26, 0, 0, 0, 0},
9986         {0x27, 0, 0, 0, 0},
9987         {0x28, 0x1, 0x1, 0, 0},
9988         {0x29, 0, 0, 0, 0},
9989         {0x2A, 0, 0, 0, 0},
9990         {0x2B, 0, 0, 0, 0},
9991         {0x2C, 0, 0, 0, 0},
9992         {0x2D, 0, 0, 0, 0},
9993         {0x2E, 0, 0, 0, 0},
9994         {0x2F, 0x1f, 0x1f, 0, 0},
9995         {0x30, 0x15, 0x15, 0, 0},
9996         {0x31, 0xf, 0xf, 0, 0},
9997         {0x32, 0, 0, 0, 0},
9998         {0x33, 0, 0, 0, 0},
9999         {0x34, 0, 0, 0, 0},
10000         {0x35, 0, 0, 0, 0},
10001         {0x36, 0, 0, 0, 0},
10002         {0x37, 0, 0, 0, 0},
10003         {0x38, 0, 0, 0, 0},
10004         {0x39, 0, 0, 0, 0},
10005         {0x3A, 0, 0, 0, 0},
10006         {0x3B, 0, 0, 0, 0},
10007         {0x3C, 0x13, 0x13, 0, 0},
10008         {0x3D, 0xf, 0xf, 0, 0},
10009         {0x3E, 0x18, 0x18, 0, 0},
10010         {0x3F, 0, 0, 0, 0},
10011         {0x40, 0, 0, 0, 0},
10012         {0x41, 0x20, 0x20, 0, 0},
10013         {0x42, 0x20, 0x20, 0, 0},
10014         {0x43, 0, 0, 0, 0},
10015         {0x44, 0x77, 0x77, 0, 0},
10016         {0x45, 0x7, 0x7, 0, 0},
10017         {0x46, 0x1, 0x1, 0, 0},
10018         {0x47, 0x4, 0x4, 0, 0},
10019         {0x48, 0xf, 0xf, 0, 0},
10020         {0x49, 0x30, 0x30, 0, 0},
10021         {0x4A, 0x32, 0x32, 0, 0},
10022         {0x4B, 0xd, 0xd, 0, 0},
10023         {0x4C, 0xd, 0xd, 0, 0},
10024         {0x4D, 0x4, 0x4, 0, 0},
10025         {0x4E, 0x6, 0x6, 0, 0},
10026         {0x4F, 0x1, 0x1, 0, 0},
10027         {0x50, 0x1c, 0x1c, 0, 0},
10028         {0x51, 0x2, 0x2, 0, 0},
10029         {0x52, 0x2, 0x2, 0, 0},
10030         {0x53, 0xf7, 0xf7, 1, 1},
10031         {0x54, 0xb4, 0xb4, 0, 0},
10032         {0x55, 0xd2, 0xd2, 0, 0},
10033         {0x56, 0, 0, 0, 0},
10034         {0x57, 0, 0, 0, 0},
10035         {0x58, 0x4, 0x4, 0, 0},
10036         {0x59, 0x96, 0x96, 0, 0},
10037         {0x5A, 0x3e, 0x3e, 0, 0},
10038         {0x5B, 0x3e, 0x3e, 0, 0},
10039         {0x5C, 0x13, 0x13, 0, 0},
10040         {0x5D, 0x2, 0x2, 0, 0},
10041         {0x5E, 0, 0, 0, 0},
10042         {0x5F, 0x7, 0x7, 0, 0},
10043         {0x60, 0x7, 0x7, 1, 1},
10044         {0x61, 0x8, 0x8, 0, 0},
10045         {0x62, 0x3, 0x3, 0, 0},
10046         {0x63, 0, 0, 0, 0},
10047         {0x64, 0, 0, 0, 0},
10048         {0x65, 0, 0, 0, 0},
10049         {0x66, 0, 0, 0, 0},
10050         {0x67, 0, 0, 0, 0},
10051         {0x68, 0x40, 0x40, 0, 0},
10052         {0x69, 0, 0, 0, 0},
10053         {0x6A, 0, 0, 0, 0},
10054         {0x6B, 0, 0, 0, 0},
10055         {0x6C, 0, 0, 0, 0},
10056         {0x6D, 0x1, 0x1, 0, 0},
10057         {0x6E, 0, 0, 0, 0},
10058         {0x6F, 0, 0, 0, 0},
10059         {0x70, 0x60, 0x60, 0, 0},
10060         {0x71, 0x66, 0x66, 0, 0},
10061         {0x72, 0xc, 0xc, 0, 0},
10062         {0x73, 0x66, 0x66, 0, 0},
10063         {0x74, 0x8f, 0x8f, 1, 1},
10064         {0x75, 0, 0, 0, 0},
10065         {0x76, 0xcc, 0xcc, 0, 0},
10066         {0x77, 0x1, 0x1, 0, 0},
10067         {0x78, 0x66, 0x66, 0, 0},
10068         {0x79, 0x66, 0x66, 0, 0},
10069         {0x7A, 0, 0, 0, 0},
10070         {0x7B, 0, 0, 0, 0},
10071         {0x7C, 0, 0, 0, 0},
10072         {0x7D, 0, 0, 0, 0},
10073         {0x7E, 0, 0, 0, 0},
10074         {0x7F, 0, 0, 0, 0},
10075         {0x80, 0, 0, 0, 0},
10076         {0x81, 0, 0, 0, 0},
10077         {0x82, 0, 0, 0, 0},
10078         {0x83, 0, 0, 0, 0},
10079         {0x84, 0, 0, 0, 0},
10080         {0x85, 0xff, 0xff, 0, 0},
10081         {0x86, 0, 0, 0, 0},
10082         {0x87, 0, 0, 0, 0},
10083         {0x88, 0, 0, 0, 0},
10084         {0x89, 0, 0, 0, 0},
10085         {0x8A, 0, 0, 0, 0},
10086         {0x8B, 0, 0, 0, 0},
10087         {0x8C, 0, 0, 0, 0},
10088         {0x8D, 0, 0, 0, 0},
10089         {0x8E, 0, 0, 0, 0},
10090         {0x8F, 0, 0, 0, 0},
10091         {0x90, 0, 0, 0, 0},
10092         {0x91, 0, 0, 0, 0},
10093         {0x92, 0, 0, 0, 0},
10094         {0x93, 0, 0, 0, 0},
10095         {0x94, 0, 0, 0, 0},
10096         {0x95, 0, 0, 0, 0},
10097         {0x96, 0, 0, 0, 0},
10098         {0x97, 0, 0, 0, 0},
10099         {0x98, 0, 0, 0, 0},
10100         {0x99, 0, 0, 0, 0},
10101         {0x9A, 0, 0, 0, 0},
10102         {0x9B, 0, 0, 0, 0},
10103         {0x9C, 0, 0, 0, 0},
10104         {0x9D, 0, 0, 0, 0},
10105         {0x9E, 0, 0, 0, 0},
10106         {0x9F, 0x6, 0x6, 0, 0},
10107         {0xA0, 0x66, 0x66, 0, 0},
10108         {0xA1, 0x66, 0x66, 0, 0},
10109         {0xA2, 0x66, 0x66, 0, 0},
10110         {0xA3, 0x66, 0x66, 0, 0},
10111         {0xA4, 0x66, 0x66, 0, 0},
10112         {0xA5, 0x66, 0x66, 0, 0},
10113         {0xA6, 0x66, 0x66, 0, 0},
10114         {0xA7, 0x66, 0x66, 0, 0},
10115         {0xA8, 0x66, 0x66, 0, 0},
10116         {0xA9, 0x66, 0x66, 0, 0},
10117         {0xAA, 0x66, 0x66, 0, 0},
10118         {0xAB, 0x66, 0x66, 0, 0},
10119         {0xAC, 0x66, 0x66, 0, 0},
10120         {0xAD, 0x66, 0x66, 0, 0},
10121         {0xAE, 0x66, 0x66, 0, 0},
10122         {0xAF, 0x66, 0x66, 0, 0},
10123         {0xB0, 0x66, 0x66, 0, 0},
10124         {0xB1, 0x66, 0x66, 0, 0},
10125         {0xB2, 0x66, 0x66, 0, 0},
10126         {0xB3, 0xa, 0xa, 0, 0},
10127         {0xB4, 0, 0, 0, 0},
10128         {0xB5, 0, 0, 0, 0},
10129         {0xB6, 0, 0, 0, 0},
10130         {0xFFFF, 0, 0, 0, 0},
10131 };
10132
10133 struct radio_regs regs_TX_2056_rev7[] = {
10134         {0x02, 0, 0, 0, 0},
10135         {0x03, 0, 0, 0, 0},
10136         {0x04, 0, 0, 0, 0},
10137         {0x05, 0, 0, 0, 0},
10138         {0x06, 0, 0, 0, 0},
10139         {0x07, 0, 0, 0, 0},
10140         {0x08, 0, 0, 0, 0},
10141         {0x09, 0, 0, 0, 0},
10142         {0x0A, 0, 0, 0, 0},
10143         {0x0B, 0, 0, 0, 0},
10144         {0x0C, 0, 0, 0, 0},
10145         {0x0D, 0, 0, 0, 0},
10146         {0x0E, 0, 0, 0, 0},
10147         {0x0F, 0, 0, 0, 0},
10148         {0x10, 0, 0, 0, 0},
10149         {0x11, 0, 0, 0, 0},
10150         {0x12, 0, 0, 0, 0},
10151         {0x13, 0, 0, 0, 0},
10152         {0x14, 0, 0, 0, 0},
10153         {0x15, 0, 0, 0, 0},
10154         {0x16, 0, 0, 0, 0},
10155         {0x17, 0, 0, 0, 0},
10156         {0x18, 0, 0, 0, 0},
10157         {0x19, 0, 0, 0, 0},
10158         {0x1A, 0, 0, 0, 0},
10159         {0x1B, 0, 0, 0, 0},
10160         {0x1C, 0, 0, 0, 0},
10161         {0x1D, 0, 0, 0, 0},
10162         {0x1E, 0, 0, 0, 0},
10163         {0x1F, 0, 0, 0, 0},
10164         {0x20, 0, 0, 0, 0},
10165         {0x21, 0x88, 0x88, 0, 0},
10166         {0x22, 0x88, 0x88, 0, 0},
10167         {0x23, 0x88, 0x88, 0, 0},
10168         {0x24, 0x88, 0x88, 0, 0},
10169         {0x25, 0xc, 0xc, 0, 0},
10170         {0x26, 0, 0, 0, 0},
10171         {0x27, 0x3, 0x3, 0, 0},
10172         {0x28, 0, 0, 0, 0},
10173         {0x29, 0x3, 0x3, 0, 0},
10174         {0x2A, 0x37, 0x37, 0, 0},
10175         {0x2B, 0x3, 0x3, 0, 0},
10176         {0x2C, 0, 0, 0, 0},
10177         {0x2D, 0, 0, 0, 0},
10178         {0x2E, 0x1, 0x1, 0, 0},
10179         {0x2F, 0x1, 0x1, 0, 0},
10180         {0x30, 0, 0, 0, 0},
10181         {0x31, 0, 0, 0, 0},
10182         {0x32, 0, 0, 0, 0},
10183         {0x33, 0x11, 0x11, 0, 0},
10184         {0x34, 0xee, 0xee, 1, 1},
10185         {0x35, 0, 0, 0, 0},
10186         {0x36, 0, 0, 0, 0},
10187         {0x37, 0x3, 0x3, 0, 0},
10188         {0x38, 0x50, 0x50, 1, 1},
10189         {0x39, 0, 0, 0, 0},
10190         {0x3A, 0x50, 0x50, 1, 1},
10191         {0x3B, 0, 0, 0, 0},
10192         {0x3C, 0x6e, 0x6e, 0, 0},
10193         {0x3D, 0xf0, 0xf0, 1, 1},
10194         {0x3E, 0, 0, 0, 0},
10195         {0x3F, 0, 0, 0, 0},
10196         {0x40, 0, 0, 0, 0},
10197         {0x41, 0x3, 0x3, 0, 0},
10198         {0x42, 0x3, 0x3, 0, 0},
10199         {0x43, 0, 0, 0, 0},
10200         {0x44, 0x1e, 0x1e, 0, 0},
10201         {0x45, 0, 0, 0, 0},
10202         {0x46, 0x6e, 0x6e, 0, 0},
10203         {0x47, 0xf0, 0xf0, 1, 1},
10204         {0x48, 0, 0, 0, 0},
10205         {0x49, 0x2, 0x2, 0, 0},
10206         {0x4A, 0xff, 0xff, 1, 1},
10207         {0x4B, 0xc, 0xc, 0, 0},
10208         {0x4C, 0, 0, 0, 0},
10209         {0x4D, 0x38, 0x38, 0, 0},
10210         {0x4E, 0x70, 0x70, 1, 1},
10211         {0x4F, 0x2, 0x2, 0, 0},
10212         {0x50, 0x88, 0x88, 0, 0},
10213         {0x51, 0xc, 0xc, 0, 0},
10214         {0x52, 0, 0, 0, 0},
10215         {0x53, 0x8, 0x8, 0, 0},
10216         {0x54, 0x70, 0x70, 1, 1},
10217         {0x55, 0x2, 0x2, 0, 0},
10218         {0x56, 0xff, 0xff, 1, 1},
10219         {0x57, 0, 0, 0, 0},
10220         {0x58, 0x83, 0x83, 0, 0},
10221         {0x59, 0x77, 0x77, 1, 1},
10222         {0x5A, 0, 0, 0, 0},
10223         {0x5B, 0x2, 0x2, 0, 0},
10224         {0x5C, 0x88, 0x88, 0, 0},
10225         {0x5D, 0, 0, 0, 0},
10226         {0x5E, 0x8, 0x8, 0, 0},
10227         {0x5F, 0x77, 0x77, 1, 1},
10228         {0x60, 0x1, 0x1, 0, 0},
10229         {0x61, 0, 0, 0, 0},
10230         {0x62, 0x7, 0x7, 0, 0},
10231         {0x63, 0, 0, 0, 0},
10232         {0x64, 0x7, 0x7, 0, 0},
10233         {0x65, 0, 0, 0, 0},
10234         {0x66, 0, 0, 0, 0},
10235         {0x67, 0, 0, 1, 1},
10236         {0x68, 0, 0, 0, 0},
10237         {0x69, 0xa, 0xa, 0, 0},
10238         {0x6A, 0, 0, 0, 0},
10239         {0x6B, 0, 0, 0, 0},
10240         {0x6C, 0, 0, 0, 0},
10241         {0x6D, 0, 0, 0, 0},
10242         {0x6E, 0, 0, 0, 0},
10243         {0x6F, 0, 0, 0, 0},
10244         {0x70, 0, 0, 0, 0},
10245         {0x71, 0x2, 0x2, 0, 0},
10246         {0x72, 0, 0, 0, 0},
10247         {0x73, 0, 0, 0, 0},
10248         {0x74, 0xe, 0xe, 0, 0},
10249         {0x75, 0xe, 0xe, 0, 0},
10250         {0x76, 0xe, 0xe, 0, 0},
10251         {0x77, 0x13, 0x13, 0, 0},
10252         {0x78, 0x13, 0x13, 0, 0},
10253         {0x79, 0x1b, 0x1b, 0, 0},
10254         {0x7A, 0x1b, 0x1b, 0, 0},
10255         {0x7B, 0x55, 0x55, 0, 0},
10256         {0x7C, 0x5b, 0x5b, 0, 0},
10257         {0x7D, 0x30, 0x30, 1, 1},
10258         {0x7E, 0, 0, 0, 0},
10259         {0x7F, 0, 0, 0, 0},
10260         {0x80, 0, 0, 0, 0},
10261         {0x81, 0, 0, 0, 0},
10262         {0x82, 0, 0, 0, 0},
10263         {0x83, 0, 0, 0, 0},
10264         {0x84, 0, 0, 0, 0},
10265         {0x85, 0, 0, 0, 0},
10266         {0x86, 0, 0, 0, 0},
10267         {0x87, 0, 0, 0, 0},
10268         {0x88, 0, 0, 0, 0},
10269         {0x89, 0, 0, 0, 0},
10270         {0x8A, 0, 0, 0, 0},
10271         {0x8B, 0, 0, 0, 0},
10272         {0x8C, 0, 0, 0, 0},
10273         {0x8D, 0, 0, 0, 0},
10274         {0x8E, 0, 0, 0, 0},
10275         {0x8F, 0, 0, 0, 0},
10276         {0x90, 0, 0, 0, 0},
10277         {0x91, 0, 0, 0, 0},
10278         {0x92, 0, 0, 0, 0},
10279         {0x93, 0x70, 0x70, 0, 0},
10280         {0x94, 0x70, 0x70, 0, 0},
10281         {0x95, 0x71, 0x71, 1, 1},
10282         {0x96, 0x71, 0x71, 1, 1},
10283         {0x97, 0x72, 0x72, 1, 1},
10284         {0x98, 0x73, 0x73, 1, 1},
10285         {0x99, 0x74, 0x74, 1, 1},
10286         {0x9A, 0x75, 0x75, 1, 1},
10287         {0xFFFF, 0, 0, 0, 0},
10288 };
10289
10290 struct radio_regs regs_RX_2056_rev7[] = {
10291         {0x02, 0, 0, 0, 0},
10292         {0x03, 0, 0, 0, 0},
10293         {0x04, 0, 0, 0, 0},
10294         {0x05, 0, 0, 0, 0},
10295         {0x06, 0, 0, 0, 0},
10296         {0x07, 0, 0, 0, 0},
10297         {0x08, 0, 0, 0, 0},
10298         {0x09, 0, 0, 0, 0},
10299         {0x0A, 0, 0, 0, 0},
10300         {0x0B, 0, 0, 0, 0},
10301         {0x0C, 0, 0, 0, 0},
10302         {0x0D, 0, 0, 0, 0},
10303         {0x0E, 0, 0, 0, 0},
10304         {0x0F, 0, 0, 0, 0},
10305         {0x10, 0, 0, 0, 0},
10306         {0x11, 0, 0, 0, 0},
10307         {0x12, 0, 0, 0, 0},
10308         {0x13, 0, 0, 0, 0},
10309         {0x14, 0, 0, 0, 0},
10310         {0x15, 0, 0, 0, 0},
10311         {0x16, 0, 0, 0, 0},
10312         {0x17, 0, 0, 0, 0},
10313         {0x18, 0, 0, 0, 0},
10314         {0x19, 0, 0, 0, 0},
10315         {0x1A, 0, 0, 0, 0},
10316         {0x1B, 0, 0, 0, 0},
10317         {0x1C, 0, 0, 0, 0},
10318         {0x1D, 0, 0, 0, 0},
10319         {0x1E, 0, 0, 0, 0},
10320         {0x1F, 0, 0, 0, 0},
10321         {0x20, 0x3, 0x3, 0, 0},
10322         {0x21, 0, 0, 0, 0},
10323         {0x22, 0, 0, 0, 0},
10324         {0x23, 0x90, 0x90, 0, 0},
10325         {0x24, 0x55, 0x55, 0, 0},
10326         {0x25, 0x15, 0x15, 0, 0},
10327         {0x26, 0x5, 0x5, 0, 0},
10328         {0x27, 0x15, 0x15, 0, 0},
10329         {0x28, 0x5, 0x5, 0, 0},
10330         {0x29, 0x20, 0x20, 0, 0},
10331         {0x2A, 0x11, 0x11, 0, 0},
10332         {0x2B, 0x90, 0x90, 0, 0},
10333         {0x2C, 0, 0, 0, 0},
10334         {0x2D, 0x88, 0x88, 0, 0},
10335         {0x2E, 0x32, 0x32, 0, 0},
10336         {0x2F, 0x77, 0x77, 0, 0},
10337         {0x30, 0x17, 0x17, 1, 1},
10338         {0x31, 0xff, 0xff, 1, 1},
10339         {0x32, 0x20, 0x20, 0, 0},
10340         {0x33, 0, 0, 0, 0},
10341         {0x34, 0x88, 0x88, 0, 0},
10342         {0x35, 0x32, 0x32, 0, 0},
10343         {0x36, 0x77, 0x77, 0, 0},
10344         {0x37, 0x17, 0x17, 1, 1},
10345         {0x38, 0xf0, 0xf0, 1, 1},
10346         {0x39, 0x20, 0x20, 0, 0},
10347         {0x3A, 0x8, 0x8, 0, 0},
10348         {0x3B, 0x55, 0x55, 1, 1},
10349         {0x3C, 0, 0, 0, 0},
10350         {0x3D, 0x88, 0x88, 1, 1},
10351         {0x3E, 0, 0, 0, 0},
10352         {0x3F, 0, 0, 1, 1},
10353         {0x40, 0x7, 0x7, 1, 1},
10354         {0x41, 0x6, 0x6, 0, 0},
10355         {0x42, 0x4, 0x4, 0, 0},
10356         {0x43, 0, 0, 0, 0},
10357         {0x44, 0x8, 0x8, 0, 0},
10358         {0x45, 0x55, 0x55, 1, 1},
10359         {0x46, 0, 0, 0, 0},
10360         {0x47, 0x11, 0x11, 0, 0},
10361         {0x48, 0, 0, 0, 0},
10362         {0x49, 0, 0, 1, 1},
10363         {0x4A, 0x7, 0x7, 0, 0},
10364         {0x4B, 0x6, 0x6, 0, 0},
10365         {0x4C, 0x4, 0x4, 0, 0},
10366         {0x4D, 0, 0, 0, 0},
10367         {0x4E, 0, 0, 0, 0},
10368         {0x4F, 0x26, 0x26, 1, 1},
10369         {0x50, 0x26, 0x26, 1, 1},
10370         {0x51, 0xf, 0xf, 1, 1},
10371         {0x52, 0xf, 0xf, 1, 1},
10372         {0x53, 0x44, 0x44, 0, 0},
10373         {0x54, 0, 0, 0, 0},
10374         {0x55, 0, 0, 0, 0},
10375         {0x56, 0x8, 0x8, 0, 0},
10376         {0x57, 0x8, 0x8, 0, 0},
10377         {0x58, 0x7, 0x7, 0, 0},
10378         {0x59, 0x22, 0x22, 0, 0},
10379         {0x5A, 0x22, 0x22, 0, 0},
10380         {0x5B, 0x2, 0x2, 0, 0},
10381         {0x5C, 0x4, 0x4, 1, 1},
10382         {0x5D, 0x7, 0x7, 0, 0},
10383         {0x5E, 0x55, 0x55, 0, 0},
10384         {0x5F, 0x23, 0x23, 0, 0},
10385         {0x60, 0x41, 0x41, 0, 0},
10386         {0x61, 0x1, 0x1, 0, 0},
10387         {0x62, 0xa, 0xa, 0, 0},
10388         {0x63, 0, 0, 0, 0},
10389         {0x64, 0, 0, 0, 0},
10390         {0x65, 0, 0, 0, 0},
10391         {0x66, 0, 0, 0, 0},
10392         {0x67, 0, 0, 0, 0},
10393         {0x68, 0, 0, 0, 0},
10394         {0x69, 0, 0, 0, 0},
10395         {0x6A, 0, 0, 0, 0},
10396         {0x6B, 0xc, 0xc, 0, 0},
10397         {0x6C, 0, 0, 0, 0},
10398         {0x6D, 0, 0, 0, 0},
10399         {0x6E, 0, 0, 0, 0},
10400         {0x6F, 0, 0, 0, 0},
10401         {0x70, 0, 0, 0, 0},
10402         {0x71, 0, 0, 0, 0},
10403         {0x72, 0x22, 0x22, 0, 0},
10404         {0x73, 0x22, 0x22, 0, 0},
10405         {0x74, 0, 0, 1, 1},
10406         {0x75, 0xa, 0xa, 0, 0},
10407         {0x76, 0x1, 0x1, 0, 0},
10408         {0x77, 0x22, 0x22, 0, 0},
10409         {0x78, 0x30, 0x30, 0, 0},
10410         {0x79, 0, 0, 0, 0},
10411         {0x7A, 0, 0, 0, 0},
10412         {0x7B, 0, 0, 0, 0},
10413         {0x7C, 0, 0, 0, 0},
10414         {0x7D, 0, 0, 0, 0},
10415         {0x7E, 0, 0, 0, 0},
10416         {0x7F, 0, 0, 0, 0},
10417         {0x80, 0, 0, 0, 0},
10418         {0x81, 0, 0, 0, 0},
10419         {0x82, 0, 0, 0, 0},
10420         {0x83, 0, 0, 0, 0},
10421         {0x84, 0, 0, 0, 0},
10422         {0x85, 0, 0, 0, 0},
10423         {0x86, 0, 0, 0, 0},
10424         {0x87, 0, 0, 0, 0},
10425         {0x88, 0, 0, 0, 0},
10426         {0x89, 0, 0, 0, 0},
10427         {0x8A, 0, 0, 0, 0},
10428         {0x8B, 0, 0, 0, 0},
10429         {0x8C, 0, 0, 0, 0},
10430         {0x8D, 0, 0, 0, 0},
10431         {0x8E, 0, 0, 0, 0},
10432         {0x8F, 0, 0, 0, 0},
10433         {0x90, 0, 0, 0, 0},
10434         {0x91, 0, 0, 0, 0},
10435         {0x92, 0, 0, 0, 0},
10436         {0x93, 0, 0, 0, 0},
10437         {0x94, 0, 0, 0, 0},
10438         {0xFFFF, 0, 0, 0, 0},
10439 };
10440
10441 struct radio_regs regs_SYN_2056_rev8[] = {
10442         {0x02, 0, 0, 0, 0},
10443         {0x03, 0, 0, 0, 0},
10444         {0x04, 0, 0, 0, 0},
10445         {0x05, 0, 0, 0, 0},
10446         {0x06, 0, 0, 0, 0},
10447         {0x07, 0, 0, 0, 0},
10448         {0x08, 0, 0, 0, 0},
10449         {0x09, 0x1, 0x1, 0, 0},
10450         {0x0A, 0, 0, 0, 0},
10451         {0x0B, 0, 0, 0, 0},
10452         {0x0C, 0, 0, 0, 0},
10453         {0x0D, 0, 0, 0, 0},
10454         {0x0E, 0, 0, 0, 0},
10455         {0x0F, 0, 0, 0, 0},
10456         {0x10, 0, 0, 0, 0},
10457         {0x11, 0, 0, 0, 0},
10458         {0x12, 0, 0, 0, 0},
10459         {0x13, 0, 0, 0, 0},
10460         {0x14, 0, 0, 0, 0},
10461         {0x15, 0, 0, 0, 0},
10462         {0x16, 0, 0, 0, 0},
10463         {0x17, 0, 0, 0, 0},
10464         {0x18, 0, 0, 0, 0},
10465         {0x19, 0, 0, 0, 0},
10466         {0x1A, 0, 0, 0, 0},
10467         {0x1B, 0, 0, 0, 0},
10468         {0x1C, 0, 0, 0, 0},
10469         {0x1D, 0, 0, 0, 0},
10470         {0x1E, 0, 0, 0, 0},
10471         {0x1F, 0, 0, 0, 0},
10472         {0x20, 0, 0, 0, 0},
10473         {0x21, 0, 0, 0, 0},
10474         {0x22, 0x60, 0x60, 0, 0},
10475         {0x23, 0x6, 0x6, 0, 0},
10476         {0x24, 0xc, 0xc, 0, 0},
10477         {0x25, 0, 0, 0, 0},
10478         {0x26, 0, 0, 0, 0},
10479         {0x27, 0, 0, 0, 0},
10480         {0x28, 0x1, 0x1, 0, 0},
10481         {0x29, 0, 0, 0, 0},
10482         {0x2A, 0, 0, 0, 0},
10483         {0x2B, 0, 0, 0, 0},
10484         {0x2C, 0, 0, 0, 0},
10485         {0x2D, 0, 0, 0, 0},
10486         {0x2E, 0, 0, 0, 0},
10487         {0x2F, 0x1f, 0x1f, 0, 0},
10488         {0x30, 0x15, 0x15, 0, 0},
10489         {0x31, 0xf, 0xf, 0, 0},
10490         {0x32, 0, 0, 0, 0},
10491         {0x33, 0, 0, 0, 0},
10492         {0x34, 0, 0, 0, 0},
10493         {0x35, 0, 0, 0, 0},
10494         {0x36, 0, 0, 0, 0},
10495         {0x37, 0, 0, 0, 0},
10496         {0x38, 0, 0, 0, 0},
10497         {0x39, 0, 0, 0, 0},
10498         {0x3A, 0, 0, 0, 0},
10499         {0x3B, 0, 0, 0, 0},
10500         {0x3C, 0x13, 0x13, 0, 0},
10501         {0x3D, 0xf, 0xf, 0, 0},
10502         {0x3E, 0x18, 0x18, 0, 0},
10503         {0x3F, 0, 0, 0, 0},
10504         {0x40, 0, 0, 0, 0},
10505         {0x41, 0x20, 0x20, 0, 0},
10506         {0x42, 0x20, 0x20, 0, 0},
10507         {0x43, 0, 0, 0, 0},
10508         {0x44, 0x77, 0x77, 0, 0},
10509         {0x45, 0x7, 0x7, 0, 0},
10510         {0x46, 0x1, 0x1, 0, 0},
10511         {0x47, 0x4, 0x4, 0, 0},
10512         {0x48, 0xf, 0xf, 0, 0},
10513         {0x49, 0x30, 0x30, 0, 0},
10514         {0x4A, 0x32, 0x32, 0, 0},
10515         {0x4B, 0xd, 0xd, 0, 0},
10516         {0x4C, 0xd, 0xd, 0, 0},
10517         {0x4D, 0x4, 0x4, 0, 0},
10518         {0x4E, 0x6, 0x6, 0, 0},
10519         {0x4F, 0x1, 0x1, 0, 0},
10520         {0x50, 0x1c, 0x1c, 0, 0},
10521         {0x51, 0x2, 0x2, 0, 0},
10522         {0x52, 0x2, 0x2, 0, 0},
10523         {0x53, 0xf7, 0xf7, 1, 1},
10524         {0x54, 0xb4, 0xb4, 0, 0},
10525         {0x55, 0xd2, 0xd2, 0, 0},
10526         {0x56, 0, 0, 0, 0},
10527         {0x57, 0, 0, 0, 0},
10528         {0x58, 0x4, 0x4, 0, 0},
10529         {0x59, 0x96, 0x96, 0, 0},
10530         {0x5A, 0x3e, 0x3e, 0, 0},
10531         {0x5B, 0x3e, 0x3e, 0, 0},
10532         {0x5C, 0x13, 0x13, 0, 0},
10533         {0x5D, 0x2, 0x2, 0, 0},
10534         {0x5E, 0, 0, 0, 0},
10535         {0x5F, 0x7, 0x7, 0, 0},
10536         {0x60, 0x7, 0x7, 1, 1},
10537         {0x61, 0x8, 0x8, 0, 0},
10538         {0x62, 0x3, 0x3, 0, 0},
10539         {0x63, 0, 0, 0, 0},
10540         {0x64, 0, 0, 0, 0},
10541         {0x65, 0, 0, 0, 0},
10542         {0x66, 0, 0, 0, 0},
10543         {0x67, 0, 0, 0, 0},
10544         {0x68, 0x40, 0x40, 0, 0},
10545         {0x69, 0, 0, 0, 0},
10546         {0x6A, 0, 0, 0, 0},
10547         {0x6B, 0, 0, 0, 0},
10548         {0x6C, 0, 0, 0, 0},
10549         {0x6D, 0x1, 0x1, 0, 0},
10550         {0x6E, 0, 0, 0, 0},
10551         {0x6F, 0, 0, 0, 0},
10552         {0x70, 0x60, 0x60, 0, 0},
10553         {0x71, 0x66, 0x66, 0, 0},
10554         {0x72, 0xc, 0xc, 0, 0},
10555         {0x73, 0x66, 0x66, 0, 0},
10556         {0x74, 0x8f, 0x8f, 1, 1},
10557         {0x75, 0, 0, 0, 0},
10558         {0x76, 0xcc, 0xcc, 0, 0},
10559         {0x77, 0x1, 0x1, 0, 0},
10560         {0x78, 0x66, 0x66, 0, 0},
10561         {0x79, 0x66, 0x66, 0, 0},
10562         {0x7A, 0, 0, 0, 0},
10563         {0x7B, 0, 0, 0, 0},
10564         {0x7C, 0, 0, 0, 0},
10565         {0x7D, 0, 0, 0, 0},
10566         {0x7E, 0, 0, 0, 0},
10567         {0x7F, 0, 0, 0, 0},
10568         {0x80, 0, 0, 0, 0},
10569         {0x81, 0, 0, 0, 0},
10570         {0x82, 0, 0, 0, 0},
10571         {0x83, 0, 0, 0, 0},
10572         {0x84, 0, 0, 0, 0},
10573         {0x85, 0xff, 0xff, 0, 0},
10574         {0x86, 0, 0, 0, 0},
10575         {0x87, 0, 0, 0, 0},
10576         {0x88, 0, 0, 0, 0},
10577         {0x89, 0, 0, 0, 0},
10578         {0x8A, 0, 0, 0, 0},
10579         {0x8B, 0, 0, 0, 0},
10580         {0x8C, 0, 0, 0, 0},
10581         {0x8D, 0, 0, 0, 0},
10582         {0x8E, 0, 0, 0, 0},
10583         {0x8F, 0, 0, 0, 0},
10584         {0x90, 0, 0, 0, 0},
10585         {0x91, 0, 0, 0, 0},
10586         {0x92, 0, 0, 0, 0},
10587         {0x93, 0, 0, 0, 0},
10588         {0x94, 0, 0, 0, 0},
10589         {0x95, 0, 0, 0, 0},
10590         {0x96, 0, 0, 0, 0},
10591         {0x97, 0, 0, 0, 0},
10592         {0x98, 0, 0, 0, 0},
10593         {0x99, 0, 0, 0, 0},
10594         {0x9A, 0, 0, 0, 0},
10595         {0x9B, 0, 0, 0, 0},
10596         {0x9C, 0, 0, 0, 0},
10597         {0x9D, 0, 0, 0, 0},
10598         {0x9E, 0, 0, 0, 0},
10599         {0x9F, 0x6, 0x6, 0, 0},
10600         {0xA0, 0x66, 0x66, 0, 0},
10601         {0xA1, 0x66, 0x66, 0, 0},
10602         {0xA2, 0x66, 0x66, 0, 0},
10603         {0xA3, 0x66, 0x66, 0, 0},
10604         {0xA4, 0x66, 0x66, 0, 0},
10605         {0xA5, 0x66, 0x66, 0, 0},
10606         {0xA6, 0x66, 0x66, 0, 0},
10607         {0xA7, 0x66, 0x66, 0, 0},
10608         {0xA8, 0x66, 0x66, 0, 0},
10609         {0xA9, 0x66, 0x66, 0, 0},
10610         {0xAA, 0x66, 0x66, 0, 0},
10611         {0xAB, 0x66, 0x66, 0, 0},
10612         {0xAC, 0x66, 0x66, 0, 0},
10613         {0xAD, 0x66, 0x66, 0, 0},
10614         {0xAE, 0x66, 0x66, 0, 0},
10615         {0xAF, 0x66, 0x66, 0, 0},
10616         {0xB0, 0x66, 0x66, 0, 0},
10617         {0xB1, 0x66, 0x66, 0, 0},
10618         {0xB2, 0x66, 0x66, 0, 0},
10619         {0xB3, 0xa, 0xa, 0, 0},
10620         {0xB4, 0, 0, 0, 0},
10621         {0xB5, 0, 0, 0, 0},
10622         {0xB6, 0, 0, 0, 0},
10623         {0xFFFF, 0, 0, 0, 0},
10624 };
10625
10626 struct radio_regs regs_TX_2056_rev8[] = {
10627         {0x02, 0, 0, 0, 0},
10628         {0x03, 0, 0, 0, 0},
10629         {0x04, 0, 0, 0, 0},
10630         {0x05, 0, 0, 0, 0},
10631         {0x06, 0, 0, 0, 0},
10632         {0x07, 0, 0, 0, 0},
10633         {0x08, 0, 0, 0, 0},
10634         {0x09, 0, 0, 0, 0},
10635         {0x0A, 0, 0, 0, 0},
10636         {0x0B, 0, 0, 0, 0},
10637         {0x0C, 0, 0, 0, 0},
10638         {0x0D, 0, 0, 0, 0},
10639         {0x0E, 0, 0, 0, 0},
10640         {0x0F, 0, 0, 0, 0},
10641         {0x10, 0, 0, 0, 0},
10642         {0x11, 0, 0, 0, 0},
10643         {0x12, 0, 0, 0, 0},
10644         {0x13, 0, 0, 0, 0},
10645         {0x14, 0, 0, 0, 0},
10646         {0x15, 0, 0, 0, 0},
10647         {0x16, 0, 0, 0, 0},
10648         {0x17, 0, 0, 0, 0},
10649         {0x18, 0, 0, 0, 0},
10650         {0x19, 0, 0, 0, 0},
10651         {0x1A, 0, 0, 0, 0},
10652         {0x1B, 0, 0, 0, 0},
10653         {0x1C, 0, 0, 0, 0},
10654         {0x1D, 0, 0, 0, 0},
10655         {0x1E, 0, 0, 0, 0},
10656         {0x1F, 0, 0, 0, 0},
10657         {0x20, 0, 0, 0, 0},
10658         {0x21, 0x88, 0x88, 0, 0},
10659         {0x22, 0x88, 0x88, 0, 0},
10660         {0x23, 0x88, 0x88, 0, 0},
10661         {0x24, 0x88, 0x88, 0, 0},
10662         {0x25, 0xc, 0xc, 0, 0},
10663         {0x26, 0, 0, 0, 0},
10664         {0x27, 0x3, 0x3, 0, 0},
10665         {0x28, 0, 0, 0, 0},
10666         {0x29, 0x3, 0x3, 0, 0},
10667         {0x2A, 0x37, 0x37, 0, 0},
10668         {0x2B, 0x3, 0x3, 0, 0},
10669         {0x2C, 0, 0, 0, 0},
10670         {0x2D, 0, 0, 0, 0},
10671         {0x2E, 0x1, 0x1, 0, 0},
10672         {0x2F, 0x1, 0x1, 0, 0},
10673         {0x30, 0, 0, 0, 0},
10674         {0x31, 0, 0, 0, 0},
10675         {0x32, 0, 0, 0, 0},
10676         {0x33, 0x11, 0x11, 0, 0},
10677         {0x34, 0xee, 0xee, 1, 1},
10678         {0x35, 0, 0, 0, 0},
10679         {0x36, 0, 0, 0, 0},
10680         {0x37, 0x3, 0x3, 0, 0},
10681         {0x38, 0x50, 0x50, 1, 1},
10682         {0x39, 0, 0, 0, 0},
10683         {0x3A, 0x50, 0x50, 1, 1},
10684         {0x3B, 0, 0, 0, 0},
10685         {0x3C, 0x6e, 0x6e, 0, 0},
10686         {0x3D, 0xf0, 0xf0, 1, 1},
10687         {0x3E, 0, 0, 0, 0},
10688         {0x3F, 0, 0, 0, 0},
10689         {0x40, 0, 0, 0, 0},
10690         {0x41, 0x3, 0x3, 0, 0},
10691         {0x42, 0x3, 0x3, 0, 0},
10692         {0x43, 0, 0, 0, 0},
10693         {0x44, 0x1e, 0x1e, 0, 0},
10694         {0x45, 0, 0, 0, 0},
10695         {0x46, 0x6e, 0x6e, 0, 0},
10696         {0x47, 0xf0, 0xf0, 1, 1},
10697         {0x48, 0, 0, 0, 0},
10698         {0x49, 0x2, 0x2, 0, 0},
10699         {0x4A, 0xff, 0xff, 1, 1},
10700         {0x4B, 0xc, 0xc, 0, 0},
10701         {0x4C, 0, 0, 0, 0},
10702         {0x4D, 0x38, 0x38, 0, 0},
10703         {0x4E, 0x70, 0x70, 1, 1},
10704         {0x4F, 0x2, 0x2, 0, 0},
10705         {0x50, 0x88, 0x88, 0, 0},
10706         {0x51, 0xc, 0xc, 0, 0},
10707         {0x52, 0, 0, 0, 0},
10708         {0x53, 0x8, 0x8, 0, 0},
10709         {0x54, 0x70, 0x70, 1, 1},
10710         {0x55, 0x2, 0x2, 0, 0},
10711         {0x56, 0xff, 0xff, 1, 1},
10712         {0x57, 0, 0, 0, 0},
10713         {0x58, 0x83, 0x83, 0, 0},
10714         {0x59, 0x77, 0x77, 1, 1},
10715         {0x5A, 0, 0, 0, 0},
10716         {0x5B, 0x2, 0x2, 0, 0},
10717         {0x5C, 0x88, 0x88, 0, 0},
10718         {0x5D, 0, 0, 0, 0},
10719         {0x5E, 0x8, 0x8, 0, 0},
10720         {0x5F, 0x77, 0x77, 1, 1},
10721         {0x60, 0x1, 0x1, 0, 0},
10722         {0x61, 0, 0, 0, 0},
10723         {0x62, 0x7, 0x7, 0, 0},
10724         {0x63, 0, 0, 0, 0},
10725         {0x64, 0x7, 0x7, 0, 0},
10726         {0x65, 0, 0, 0, 0},
10727         {0x66, 0, 0, 0, 0},
10728         {0x67, 0, 0, 1, 1},
10729         {0x68, 0, 0, 0, 0},
10730         {0x69, 0xa, 0xa, 0, 0},
10731         {0x6A, 0, 0, 0, 0},
10732         {0x6B, 0, 0, 0, 0},
10733         {0x6C, 0, 0, 0, 0},
10734         {0x6D, 0, 0, 0, 0},
10735         {0x6E, 0, 0, 0, 0},
10736         {0x6F, 0, 0, 0, 0},
10737         {0x70, 0, 0, 0, 0},
10738         {0x71, 0x2, 0x2, 0, 0},
10739         {0x72, 0, 0, 0, 0},
10740         {0x73, 0, 0, 0, 0},
10741         {0x74, 0xe, 0xe, 0, 0},
10742         {0x75, 0xe, 0xe, 0, 0},
10743         {0x76, 0xe, 0xe, 0, 0},
10744         {0x77, 0x13, 0x13, 0, 0},
10745         {0x78, 0x13, 0x13, 0, 0},
10746         {0x79, 0x1b, 0x1b, 0, 0},
10747         {0x7A, 0x1b, 0x1b, 0, 0},
10748         {0x7B, 0x55, 0x55, 0, 0},
10749         {0x7C, 0x5b, 0x5b, 0, 0},
10750         {0x7D, 0x30, 0x30, 1, 1},
10751         {0x7E, 0, 0, 0, 0},
10752         {0x7F, 0, 0, 0, 0},
10753         {0x80, 0, 0, 0, 0},
10754         {0x81, 0, 0, 0, 0},
10755         {0x82, 0, 0, 0, 0},
10756         {0x83, 0, 0, 0, 0},
10757         {0x84, 0, 0, 0, 0},
10758         {0x85, 0, 0, 0, 0},
10759         {0x86, 0, 0, 0, 0},
10760         {0x87, 0, 0, 0, 0},
10761         {0x88, 0, 0, 0, 0},
10762         {0x89, 0, 0, 0, 0},
10763         {0x8A, 0, 0, 0, 0},
10764         {0x8B, 0, 0, 0, 0},
10765         {0x8C, 0, 0, 0, 0},
10766         {0x8D, 0, 0, 0, 0},
10767         {0x8E, 0, 0, 0, 0},
10768         {0x8F, 0, 0, 0, 0},
10769         {0x90, 0, 0, 0, 0},
10770         {0x91, 0, 0, 0, 0},
10771         {0x92, 0, 0, 0, 0},
10772         {0x93, 0x70, 0x70, 0, 0},
10773         {0x94, 0x70, 0x70, 0, 0},
10774         {0x95, 0x70, 0x70, 0, 0},
10775         {0x96, 0x70, 0x70, 0, 0},
10776         {0x97, 0x70, 0x70, 0, 0},
10777         {0x98, 0x70, 0x70, 0, 0},
10778         {0x99, 0x70, 0x70, 0, 0},
10779         {0x9A, 0x70, 0x70, 0, 0},
10780         {0xFFFF, 0, 0, 0, 0},
10781 };
10782
10783 struct radio_regs regs_RX_2056_rev8[] = {
10784         {0x02, 0, 0, 0, 0},
10785         {0x03, 0, 0, 0, 0},
10786         {0x04, 0, 0, 0, 0},
10787         {0x05, 0, 0, 0, 0},
10788         {0x06, 0, 0, 0, 0},
10789         {0x07, 0, 0, 0, 0},
10790         {0x08, 0, 0, 0, 0},
10791         {0x09, 0, 0, 0, 0},
10792         {0x0A, 0, 0, 0, 0},
10793         {0x0B, 0, 0, 0, 0},
10794         {0x0C, 0, 0, 0, 0},
10795         {0x0D, 0, 0, 0, 0},
10796         {0x0E, 0, 0, 0, 0},
10797         {0x0F, 0, 0, 0, 0},
10798         {0x10, 0, 0, 0, 0},
10799         {0x11, 0, 0, 0, 0},
10800         {0x12, 0, 0, 0, 0},
10801         {0x13, 0, 0, 0, 0},
10802         {0x14, 0, 0, 0, 0},
10803         {0x15, 0, 0, 0, 0},
10804         {0x16, 0, 0, 0, 0},
10805         {0x17, 0, 0, 0, 0},
10806         {0x18, 0, 0, 0, 0},
10807         {0x19, 0, 0, 0, 0},
10808         {0x1A, 0, 0, 0, 0},
10809         {0x1B, 0, 0, 0, 0},
10810         {0x1C, 0, 0, 0, 0},
10811         {0x1D, 0, 0, 0, 0},
10812         {0x1E, 0, 0, 0, 0},
10813         {0x1F, 0, 0, 0, 0},
10814         {0x20, 0x3, 0x3, 0, 0},
10815         {0x21, 0, 0, 0, 0},
10816         {0x22, 0, 0, 0, 0},
10817         {0x23, 0x90, 0x90, 0, 0},
10818         {0x24, 0x55, 0x55, 0, 0},
10819         {0x25, 0x15, 0x15, 0, 0},
10820         {0x26, 0x5, 0x5, 0, 0},
10821         {0x27, 0x15, 0x15, 0, 0},
10822         {0x28, 0x5, 0x5, 0, 0},
10823         {0x29, 0x20, 0x20, 0, 0},
10824         {0x2A, 0x11, 0x11, 0, 0},
10825         {0x2B, 0x90, 0x90, 0, 0},
10826         {0x2C, 0, 0, 0, 0},
10827         {0x2D, 0x88, 0x88, 0, 0},
10828         {0x2E, 0x32, 0x32, 0, 0},
10829         {0x2F, 0x77, 0x77, 0, 0},
10830         {0x30, 0x17, 0x17, 1, 1},
10831         {0x31, 0xff, 0xff, 1, 1},
10832         {0x32, 0x20, 0x20, 0, 0},
10833         {0x33, 0, 0, 0, 0},
10834         {0x34, 0x88, 0x88, 0, 0},
10835         {0x35, 0x32, 0x32, 0, 0},
10836         {0x36, 0x77, 0x77, 0, 0},
10837         {0x37, 0x17, 0x17, 1, 1},
10838         {0x38, 0xf0, 0xf0, 1, 1},
10839         {0x39, 0x20, 0x20, 0, 0},
10840         {0x3A, 0x8, 0x8, 0, 0},
10841         {0x3B, 0x55, 0x55, 1, 1},
10842         {0x3C, 0, 0, 0, 0},
10843         {0x3D, 0x88, 0x88, 1, 1},
10844         {0x3E, 0, 0, 0, 0},
10845         {0x3F, 0x44, 0x44, 0, 0},
10846         {0x40, 0x7, 0x7, 1, 1},
10847         {0x41, 0x6, 0x6, 0, 0},
10848         {0x42, 0x4, 0x4, 0, 0},
10849         {0x43, 0, 0, 0, 0},
10850         {0x44, 0x8, 0x8, 0, 0},
10851         {0x45, 0x55, 0x55, 1, 1},
10852         {0x46, 0, 0, 0, 0},
10853         {0x47, 0x11, 0x11, 0, 0},
10854         {0x48, 0, 0, 0, 0},
10855         {0x49, 0x44, 0x44, 0, 0},
10856         {0x4A, 0x7, 0x7, 0, 0},
10857         {0x4B, 0x6, 0x6, 0, 0},
10858         {0x4C, 0x4, 0x4, 0, 0},
10859         {0x4D, 0, 0, 0, 0},
10860         {0x4E, 0, 0, 0, 0},
10861         {0x4F, 0x26, 0x26, 1, 1},
10862         {0x50, 0x26, 0x26, 1, 1},
10863         {0x51, 0xf, 0xf, 1, 1},
10864         {0x52, 0xf, 0xf, 1, 1},
10865         {0x53, 0x44, 0x44, 0, 0},
10866         {0x54, 0, 0, 0, 0},
10867         {0x55, 0, 0, 0, 0},
10868         {0x56, 0x8, 0x8, 0, 0},
10869         {0x57, 0x8, 0x8, 0, 0},
10870         {0x58, 0x7, 0x7, 0, 0},
10871         {0x59, 0x22, 0x22, 0, 0},
10872         {0x5A, 0x22, 0x22, 0, 0},
10873         {0x5B, 0x2, 0x2, 0, 0},
10874         {0x5C, 0x4, 0x4, 1, 1},
10875         {0x5D, 0x7, 0x7, 0, 0},
10876         {0x5E, 0x55, 0x55, 0, 0},
10877         {0x5F, 0x23, 0x23, 0, 0},
10878         {0x60, 0x41, 0x41, 0, 0},
10879         {0x61, 0x1, 0x1, 0, 0},
10880         {0x62, 0xa, 0xa, 0, 0},
10881         {0x63, 0, 0, 0, 0},
10882         {0x64, 0, 0, 0, 0},
10883         {0x65, 0, 0, 0, 0},
10884         {0x66, 0, 0, 0, 0},
10885         {0x67, 0, 0, 0, 0},
10886         {0x68, 0, 0, 0, 0},
10887         {0x69, 0, 0, 0, 0},
10888         {0x6A, 0, 0, 0, 0},
10889         {0x6B, 0xc, 0xc, 0, 0},
10890         {0x6C, 0, 0, 0, 0},
10891         {0x6D, 0, 0, 0, 0},
10892         {0x6E, 0, 0, 0, 0},
10893         {0x6F, 0, 0, 0, 0},
10894         {0x70, 0, 0, 0, 0},
10895         {0x71, 0, 0, 0, 0},
10896         {0x72, 0x22, 0x22, 0, 0},
10897         {0x73, 0x22, 0x22, 0, 0},
10898         {0x74, 0, 0, 1, 1},
10899         {0x75, 0xa, 0xa, 0, 0},
10900         {0x76, 0x1, 0x1, 0, 0},
10901         {0x77, 0x22, 0x22, 0, 0},
10902         {0x78, 0x30, 0x30, 0, 0},
10903         {0x79, 0, 0, 0, 0},
10904         {0x7A, 0, 0, 0, 0},
10905         {0x7B, 0, 0, 0, 0},
10906         {0x7C, 0, 0, 0, 0},
10907         {0x7D, 0x5, 0x5, 1, 1},
10908         {0x7E, 0, 0, 0, 0},
10909         {0x7F, 0, 0, 0, 0},
10910         {0x80, 0, 0, 0, 0},
10911         {0x81, 0, 0, 0, 0},
10912         {0x82, 0, 0, 0, 0},
10913         {0x83, 0, 0, 0, 0},
10914         {0x84, 0, 0, 0, 0},
10915         {0x85, 0, 0, 0, 0},
10916         {0x86, 0, 0, 0, 0},
10917         {0x87, 0, 0, 0, 0},
10918         {0x88, 0, 0, 0, 0},
10919         {0x89, 0, 0, 0, 0},
10920         {0x8A, 0, 0, 0, 0},
10921         {0x8B, 0, 0, 0, 0},
10922         {0x8C, 0, 0, 0, 0},
10923         {0x8D, 0, 0, 0, 0},
10924         {0x8E, 0, 0, 0, 0},
10925         {0x8F, 0, 0, 0, 0},
10926         {0x90, 0, 0, 0, 0},
10927         {0x91, 0, 0, 0, 0},
10928         {0x92, 0, 0, 0, 0},
10929         {0x93, 0, 0, 0, 0},
10930         {0x94, 0, 0, 0, 0},
10931         {0xFFFF, 0, 0, 0, 0},
10932 };
10933
10934 static const struct radio_regs regs_SYN_2056_rev11[] = {
10935         {0x02, 0, 0, 0, 0},
10936         {0x03, 0, 0, 0, 0},
10937         {0x04, 0, 0, 0, 0},
10938         {0x05, 0, 0, 0, 0},
10939         {0x06, 0, 0, 0, 0},
10940         {0x07, 0, 0, 0, 0},
10941         {0x08, 0, 0, 0, 0},
10942         {0x09, 0x1, 0x1, 0, 0},
10943         {0x0A, 0, 0, 0, 0},
10944         {0x0B, 0, 0, 0, 0},
10945         {0x0C, 0, 0, 0, 0},
10946         {0x0D, 0, 0, 0, 0},
10947         {0x0E, 0, 0, 0, 0},
10948         {0x0F, 0, 0, 0, 0},
10949         {0x10, 0, 0, 0, 0},
10950         {0x11, 0, 0, 0, 0},
10951         {0x12, 0, 0, 0, 0},
10952         {0x13, 0, 0, 0, 0},
10953         {0x14, 0, 0, 0, 0},
10954         {0x15, 0, 0, 0, 0},
10955         {0x16, 0, 0, 0, 0},
10956         {0x17, 0, 0, 0, 0},
10957         {0x18, 0, 0, 0, 0},
10958         {0x19, 0, 0, 0, 0},
10959         {0x1A, 0, 0, 0, 0},
10960         {0x1B, 0, 0, 0, 0},
10961         {0x1C, 0, 0, 0, 0},
10962         {0x1D, 0, 0, 0, 0},
10963         {0x1E, 0, 0, 0, 0},
10964         {0x1F, 0, 0, 0, 0},
10965         {0x20, 0, 0, 0, 0},
10966         {0x21, 0, 0, 0, 0},
10967         {0x22, 0x60, 0x60, 0, 0},
10968         {0x23, 0x6, 0x6, 0, 0},
10969         {0x24, 0xc, 0xc, 0, 0},
10970         {0x25, 0, 0, 0, 0},
10971         {0x26, 0, 0, 0, 0},
10972         {0x27, 0, 0, 0, 0},
10973         {0x28, 0x1, 0x1, 0, 0},
10974         {0x29, 0, 0, 0, 0},
10975         {0x2A, 0, 0, 0, 0},
10976         {0x2B, 0, 0, 0, 0},
10977         {0x2C, 0, 0, 0, 0},
10978         {0x2D, 0, 0, 0, 0},
10979         {0x2E, 0, 0, 0, 0},
10980         {0x2F, 0x1f, 0x1f, 0, 0},
10981         {0x30, 0x15, 0x15, 0, 0},
10982         {0x31, 0xf, 0xf, 0, 0},
10983         {0x32, 0, 0, 0, 0},
10984         {0x33, 0, 0, 0, 0},
10985         {0x34, 0, 0, 0, 0},
10986         {0x35, 0, 0, 0, 0},
10987         {0x36, 0, 0, 0, 0},
10988         {0x37, 0, 0, 0, 0},
10989         {0x38, 0, 0, 0, 0},
10990         {0x39, 0, 0, 0, 0},
10991         {0x3A, 0, 0, 0, 0},
10992         {0x3B, 0, 0, 0, 0},
10993         {0x3C, 0x13, 0x13, 0, 0},
10994         {0x3D, 0xf, 0xf, 0, 0},
10995         {0x3E, 0x18, 0x18, 0, 0},
10996         {0x3F, 0, 0, 0, 0},
10997         {0x40, 0, 0, 0, 0},
10998         {0x41, 0x20, 0x20, 0, 0},
10999         {0x42, 0x20, 0x20, 0, 0},
11000         {0x43, 0, 0, 0, 0},
11001         {0x44, 0x77, 0x77, 0, 0},
11002         {0x45, 0x7, 0x7, 0, 0},
11003         {0x46, 0x1, 0x1, 0, 0},
11004         {0x47, 0x6, 0x6, 1, 1},
11005         {0x48, 0xf, 0xf, 0, 0},
11006         {0x49, 0x3f, 0x3f, 1, 1},
11007         {0x4A, 0x32, 0x32, 0, 0},
11008         {0x4B, 0x6, 0x6, 1, 1},
11009         {0x4C, 0x6, 0x6, 1, 1},
11010         {0x4D, 0x4, 0x4, 0, 0},
11011         {0x4E, 0x2b, 0x2b, 1, 1},
11012         {0x4F, 0x1, 0x1, 0, 0},
11013         {0x50, 0x1c, 0x1c, 0, 0},
11014         {0x51, 0x2, 0x2, 0, 0},
11015         {0x52, 0x2, 0x2, 0, 0},
11016         {0x53, 0xf7, 0xf7, 1, 1},
11017         {0x54, 0xb4, 0xb4, 0, 0},
11018         {0x55, 0xd2, 0xd2, 0, 0},
11019         {0x56, 0, 0, 0, 0},
11020         {0x57, 0, 0, 0, 0},
11021         {0x58, 0x4, 0x4, 0, 0},
11022         {0x59, 0x96, 0x96, 0, 0},
11023         {0x5A, 0x3e, 0x3e, 0, 0},
11024         {0x5B, 0x3e, 0x3e, 0, 0},
11025         {0x5C, 0x13, 0x13, 0, 0},
11026         {0x5D, 0x2, 0x2, 0, 0},
11027         {0x5E, 0, 0, 0, 0},
11028         {0x5F, 0x7, 0x7, 0, 0},
11029         {0x60, 0x7, 0x7, 1, 1},
11030         {0x61, 0x8, 0x8, 0, 0},
11031         {0x62, 0x3, 0x3, 0, 0},
11032         {0x63, 0, 0, 0, 0},
11033         {0x64, 0, 0, 0, 0},
11034         {0x65, 0, 0, 0, 0},
11035         {0x66, 0, 0, 0, 0},
11036         {0x67, 0, 0, 0, 0},
11037         {0x68, 0x40, 0x40, 0, 0},
11038         {0x69, 0, 0, 0, 0},
11039         {0x6A, 0, 0, 0, 0},
11040         {0x6B, 0, 0, 0, 0},
11041         {0x6C, 0, 0, 0, 0},
11042         {0x6D, 0x1, 0x1, 0, 0},
11043         {0x6E, 0, 0, 0, 0},
11044         {0x6F, 0, 0, 0, 0},
11045         {0x70, 0x60, 0x60, 0, 0},
11046         {0x71, 0x66, 0x66, 0, 0},
11047         {0x72, 0xc, 0xc, 0, 0},
11048         {0x73, 0x66, 0x66, 0, 0},
11049         {0x74, 0x8f, 0x8f, 1, 1},
11050         {0x75, 0, 0, 0, 0},
11051         {0x76, 0xcc, 0xcc, 0, 0},
11052         {0x77, 0x1, 0x1, 0, 0},
11053         {0x78, 0x66, 0x66, 0, 0},
11054         {0x79, 0x66, 0x66, 0, 0},
11055         {0x7A, 0, 0, 0, 0},
11056         {0x7B, 0, 0, 0, 0},
11057         {0x7C, 0, 0, 0, 0},
11058         {0x7D, 0, 0, 0, 0},
11059         {0x7E, 0, 0, 0, 0},
11060         {0x7F, 0, 0, 0, 0},
11061         {0x80, 0, 0, 0, 0},
11062         {0x81, 0, 0, 0, 0},
11063         {0x82, 0, 0, 0, 0},
11064         {0x83, 0, 0, 0, 0},
11065         {0x84, 0, 0, 0, 0},
11066         {0x85, 0xff, 0xff, 0, 0},
11067         {0x86, 0, 0, 0, 0},
11068         {0x87, 0, 0, 0, 0},
11069         {0x88, 0, 0, 0, 0},
11070         {0x89, 0, 0, 0, 0},
11071         {0x8A, 0, 0, 0, 0},
11072         {0x8B, 0, 0, 0, 0},
11073         {0x8C, 0, 0, 0, 0},
11074         {0x8D, 0, 0, 0, 0},
11075         {0x8E, 0, 0, 0, 0},
11076         {0x8F, 0, 0, 0, 0},
11077         {0x90, 0, 0, 0, 0},
11078         {0x91, 0, 0, 0, 0},
11079         {0x92, 0, 0, 0, 0},
11080         {0x93, 0, 0, 0, 0},
11081         {0x94, 0, 0, 0, 0},
11082         {0x95, 0, 0, 0, 0},
11083         {0x96, 0, 0, 0, 0},
11084         {0x97, 0, 0, 0, 0},
11085         {0x98, 0, 0, 0, 0},
11086         {0x99, 0, 0, 0, 0},
11087         {0x9A, 0, 0, 0, 0},
11088         {0x9B, 0, 0, 0, 0},
11089         {0x9C, 0, 0, 0, 0},
11090         {0x9D, 0, 0, 0, 0},
11091         {0x9E, 0, 0, 0, 0},
11092         {0x9F, 0x6, 0x6, 0, 0},
11093         {0xA0, 0x66, 0x66, 0, 0},
11094         {0xA1, 0x66, 0x66, 0, 0},
11095         {0xA2, 0x66, 0x66, 0, 0},
11096         {0xA3, 0x66, 0x66, 0, 0},
11097         {0xA4, 0x66, 0x66, 0, 0},
11098         {0xA5, 0x66, 0x66, 0, 0},
11099         {0xA6, 0x66, 0x66, 0, 0},
11100         {0xA7, 0x66, 0x66, 0, 0},
11101         {0xA8, 0x66, 0x66, 0, 0},
11102         {0xA9, 0x66, 0x66, 0, 0},
11103         {0xAA, 0x66, 0x66, 0, 0},
11104         {0xAB, 0x66, 0x66, 0, 0},
11105         {0xAC, 0x66, 0x66, 0, 0},
11106         {0xAD, 0x66, 0x66, 0, 0},
11107         {0xAE, 0x66, 0x66, 0, 0},
11108         {0xAF, 0x66, 0x66, 0, 0},
11109         {0xB0, 0x66, 0x66, 0, 0},
11110         {0xB1, 0x66, 0x66, 0, 0},
11111         {0xB2, 0x66, 0x66, 0, 0},
11112         {0xB3, 0xa, 0xa, 0, 0},
11113         {0xB4, 0, 0, 0, 0},
11114         {0xB5, 0, 0, 0, 0},
11115         {0xB6, 0, 0, 0, 0},
11116         {0xFFFF, 0, 0, 0, 0},
11117 };
11118
11119 static const struct radio_regs regs_TX_2056_rev11[] = {
11120         {0x02, 0, 0, 0, 0},
11121         {0x03, 0, 0, 0, 0},
11122         {0x04, 0, 0, 0, 0},
11123         {0x05, 0, 0, 0, 0},
11124         {0x06, 0, 0, 0, 0},
11125         {0x07, 0, 0, 0, 0},
11126         {0x08, 0, 0, 0, 0},
11127         {0x09, 0, 0, 0, 0},
11128         {0x0A, 0, 0, 0, 0},
11129         {0x0B, 0, 0, 0, 0},
11130         {0x0C, 0, 0, 0, 0},
11131         {0x0D, 0, 0, 0, 0},
11132         {0x0E, 0, 0, 0, 0},
11133         {0x0F, 0, 0, 0, 0},
11134         {0x10, 0, 0, 0, 0},
11135         {0x11, 0, 0, 0, 0},
11136         {0x12, 0, 0, 0, 0},
11137         {0x13, 0, 0, 0, 0},
11138         {0x14, 0, 0, 0, 0},
11139         {0x15, 0, 0, 0, 0},
11140         {0x16, 0, 0, 0, 0},
11141         {0x17, 0, 0, 0, 0},
11142         {0x18, 0, 0, 0, 0},
11143         {0x19, 0, 0, 0, 0},
11144         {0x1A, 0, 0, 0, 0},
11145         {0x1B, 0, 0, 0, 0},
11146         {0x1C, 0, 0, 0, 0},
11147         {0x1D, 0, 0, 0, 0},
11148         {0x1E, 0, 0, 0, 0},
11149         {0x1F, 0, 0, 0, 0},
11150         {0x20, 0, 0, 0, 0},
11151         {0x21, 0x88, 0x88, 0, 0},
11152         {0x22, 0x88, 0x88, 0, 0},
11153         {0x23, 0x88, 0x88, 0, 0},
11154         {0x24, 0x88, 0x88, 0, 0},
11155         {0x25, 0xc, 0xc, 0, 0},
11156         {0x26, 0, 0, 0, 0},
11157         {0x27, 0x3, 0x3, 0, 0},
11158         {0x28, 0, 0, 0, 0},
11159         {0x29, 0x3, 0x3, 0, 0},
11160         {0x2A, 0x37, 0x37, 0, 0},
11161         {0x2B, 0x3, 0x3, 0, 0},
11162         {0x2C, 0, 0, 0, 0},
11163         {0x2D, 0, 0, 0, 0},
11164         {0x2E, 0x1, 0x1, 0, 0},
11165         {0x2F, 0x1, 0x1, 0, 0},
11166         {0x30, 0, 0, 0, 0},
11167         {0x31, 0, 0, 0, 0},
11168         {0x32, 0, 0, 0, 0},
11169         {0x33, 0x11, 0x11, 0, 0},
11170         {0x34, 0xee, 0xee, 1, 1},
11171         {0x35, 0, 0, 0, 0},
11172         {0x36, 0, 0, 0, 0},
11173         {0x37, 0x3, 0x3, 0, 0},
11174         {0x38, 0x50, 0x50, 1, 1},
11175         {0x39, 0, 0, 0, 0},
11176         {0x3A, 0x50, 0x50, 1, 1},
11177         {0x3B, 0, 0, 0, 0},
11178         {0x3C, 0x6e, 0x6e, 0, 0},
11179         {0x3D, 0xf0, 0xf0, 1, 1},
11180         {0x3E, 0, 0, 0, 0},
11181         {0x3F, 0, 0, 0, 0},
11182         {0x40, 0, 0, 0, 0},
11183         {0x41, 0x3, 0x3, 0, 0},
11184         {0x42, 0x3, 0x3, 0, 0},
11185         {0x43, 0, 0, 0, 0},
11186         {0x44, 0x1e, 0x1e, 0, 0},
11187         {0x45, 0, 0, 0, 0},
11188         {0x46, 0x6e, 0x6e, 0, 0},
11189         {0x47, 0xf0, 0xf0, 1, 1},
11190         {0x48, 0, 0, 0, 0},
11191         {0x49, 0x2, 0x2, 0, 0},
11192         {0x4A, 0xff, 0xff, 1, 1},
11193         {0x4B, 0xc, 0xc, 0, 0},
11194         {0x4C, 0, 0, 0, 0},
11195         {0x4D, 0x38, 0x38, 0, 0},
11196         {0x4E, 0x70, 0x70, 1, 1},
11197         {0x4F, 0x2, 0x2, 0, 0},
11198         {0x50, 0x88, 0x88, 0, 0},
11199         {0x51, 0xc, 0xc, 0, 0},
11200         {0x52, 0, 0, 0, 0},
11201         {0x53, 0x8, 0x8, 0, 0},
11202         {0x54, 0x70, 0x70, 1, 1},
11203         {0x55, 0x2, 0x2, 0, 0},
11204         {0x56, 0xff, 0xff, 1, 1},
11205         {0x57, 0, 0, 0, 0},
11206         {0x58, 0x83, 0x83, 0, 0},
11207         {0x59, 0x77, 0x77, 1, 1},
11208         {0x5A, 0, 0, 0, 0},
11209         {0x5B, 0x2, 0x2, 0, 0},
11210         {0x5C, 0x88, 0x88, 0, 0},
11211         {0x5D, 0, 0, 0, 0},
11212         {0x5E, 0x8, 0x8, 0, 0},
11213         {0x5F, 0x77, 0x77, 1, 1},
11214         {0x60, 0x1, 0x1, 0, 0},
11215         {0x61, 0, 0, 0, 0},
11216         {0x62, 0x7, 0x7, 0, 0},
11217         {0x63, 0, 0, 0, 0},
11218         {0x64, 0x7, 0x7, 0, 0},
11219         {0x65, 0, 0, 0, 0},
11220         {0x66, 0, 0, 0, 0},
11221         {0x67, 0, 0, 1, 1},
11222         {0x68, 0, 0, 0, 0},
11223         {0x69, 0xa, 0xa, 0, 0},
11224         {0x6A, 0, 0, 0, 0},
11225         {0x6B, 0, 0, 0, 0},
11226         {0x6C, 0, 0, 0, 0},
11227         {0x6D, 0, 0, 0, 0},
11228         {0x6E, 0, 0, 0, 0},
11229         {0x6F, 0, 0, 0, 0},
11230         {0x70, 0, 0, 0, 0},
11231         {0x71, 0x2, 0x2, 0, 0},
11232         {0x72, 0, 0, 0, 0},
11233         {0x73, 0, 0, 0, 0},
11234         {0x74, 0xe, 0xe, 0, 0},
11235         {0x75, 0xe, 0xe, 0, 0},
11236         {0x76, 0xe, 0xe, 0, 0},
11237         {0x77, 0x13, 0x13, 0, 0},
11238         {0x78, 0x13, 0x13, 0, 0},
11239         {0x79, 0x1b, 0x1b, 0, 0},
11240         {0x7A, 0x1b, 0x1b, 0, 0},
11241         {0x7B, 0x55, 0x55, 0, 0},
11242         {0x7C, 0x5b, 0x5b, 0, 0},
11243         {0x7D, 0x30, 0x30, 1, 1},
11244         {0x7E, 0, 0, 0, 0},
11245         {0x7F, 0, 0, 0, 0},
11246         {0x80, 0, 0, 0, 0},
11247         {0x81, 0, 0, 0, 0},
11248         {0x82, 0, 0, 0, 0},
11249         {0x83, 0, 0, 0, 0},
11250         {0x84, 0, 0, 0, 0},
11251         {0x85, 0, 0, 0, 0},
11252         {0x86, 0, 0, 0, 0},
11253         {0x87, 0, 0, 0, 0},
11254         {0x88, 0, 0, 0, 0},
11255         {0x89, 0, 0, 0, 0},
11256         {0x8A, 0, 0, 0, 0},
11257         {0x8B, 0, 0, 0, 0},
11258         {0x8C, 0, 0, 0, 0},
11259         {0x8D, 0, 0, 0, 0},
11260         {0x8E, 0, 0, 0, 0},
11261         {0x8F, 0, 0, 0, 0},
11262         {0x90, 0, 0, 0, 0},
11263         {0x91, 0, 0, 0, 0},
11264         {0x92, 0, 0, 0, 0},
11265         {0x93, 0x70, 0x70, 0, 0},
11266         {0x94, 0x70, 0x70, 0, 0},
11267         {0x95, 0x70, 0x70, 0, 0},
11268         {0x96, 0x70, 0x70, 0, 0},
11269         {0x97, 0x70, 0x70, 0, 0},
11270         {0x98, 0x70, 0x70, 0, 0},
11271         {0x99, 0x70, 0x70, 0, 0},
11272         {0x9A, 0x70, 0x70, 0, 0},
11273         {0xFFFF, 0, 0, 0, 0},
11274 };
11275
11276 static const struct radio_regs regs_RX_2056_rev11[] = {
11277         {0x02, 0, 0, 0, 0},
11278         {0x03, 0, 0, 0, 0},
11279         {0x04, 0, 0, 0, 0},
11280         {0x05, 0, 0, 0, 0},
11281         {0x06, 0, 0, 0, 0},
11282         {0x07, 0, 0, 0, 0},
11283         {0x08, 0, 0, 0, 0},
11284         {0x09, 0, 0, 0, 0},
11285         {0x0A, 0, 0, 0, 0},
11286         {0x0B, 0, 0, 0, 0},
11287         {0x0C, 0, 0, 0, 0},
11288         {0x0D, 0, 0, 0, 0},
11289         {0x0E, 0, 0, 0, 0},
11290         {0x0F, 0, 0, 0, 0},
11291         {0x10, 0, 0, 0, 0},
11292         {0x11, 0, 0, 0, 0},
11293         {0x12, 0, 0, 0, 0},
11294         {0x13, 0, 0, 0, 0},
11295         {0x14, 0, 0, 0, 0},
11296         {0x15, 0, 0, 0, 0},
11297         {0x16, 0, 0, 0, 0},
11298         {0x17, 0, 0, 0, 0},
11299         {0x18, 0, 0, 0, 0},
11300         {0x19, 0, 0, 0, 0},
11301         {0x1A, 0, 0, 0, 0},
11302         {0x1B, 0, 0, 0, 0},
11303         {0x1C, 0, 0, 0, 0},
11304         {0x1D, 0, 0, 0, 0},
11305         {0x1E, 0, 0, 0, 0},
11306         {0x1F, 0, 0, 0, 0},
11307         {0x20, 0x3, 0x3, 0, 0},
11308         {0x21, 0, 0, 0, 0},
11309         {0x22, 0, 0, 0, 0},
11310         {0x23, 0x90, 0x90, 0, 0},
11311         {0x24, 0x55, 0x55, 0, 0},
11312         {0x25, 0x15, 0x15, 0, 0},
11313         {0x26, 0x5, 0x5, 0, 0},
11314         {0x27, 0x15, 0x15, 0, 0},
11315         {0x28, 0x5, 0x5, 0, 0},
11316         {0x29, 0x20, 0x20, 0, 0},
11317         {0x2A, 0x11, 0x11, 0, 0},
11318         {0x2B, 0x90, 0x90, 0, 0},
11319         {0x2C, 0, 0, 0, 0},
11320         {0x2D, 0x88, 0x88, 0, 0},
11321         {0x2E, 0x32, 0x32, 0, 0},
11322         {0x2F, 0x77, 0x77, 0, 0},
11323         {0x30, 0x17, 0x17, 1, 1},
11324         {0x31, 0xff, 0xff, 1, 1},
11325         {0x32, 0x20, 0x20, 0, 0},
11326         {0x33, 0, 0, 0, 0},
11327         {0x34, 0x88, 0x88, 0, 0},
11328         {0x35, 0x32, 0x32, 0, 0},
11329         {0x36, 0x77, 0x77, 0, 0},
11330         {0x37, 0x17, 0x17, 1, 1},
11331         {0x38, 0xf0, 0xf0, 1, 1},
11332         {0x39, 0x20, 0x20, 0, 0},
11333         {0x3A, 0x8, 0x8, 0, 0},
11334         {0x3B, 0x55, 0x55, 1, 1},
11335         {0x3C, 0, 0, 0, 0},
11336         {0x3D, 0x88, 0x88, 1, 1},
11337         {0x3E, 0, 0, 0, 0},
11338         {0x3F, 0x44, 0x44, 0, 0},
11339         {0x40, 0x7, 0x7, 1, 1},
11340         {0x41, 0x6, 0x6, 0, 0},
11341         {0x42, 0x4, 0x4, 0, 0},
11342         {0x43, 0, 0, 0, 0},
11343         {0x44, 0x8, 0x8, 0, 0},
11344         {0x45, 0x55, 0x55, 1, 1},
11345         {0x46, 0, 0, 0, 0},
11346         {0x47, 0x11, 0x11, 0, 0},
11347         {0x48, 0, 0, 0, 0},
11348         {0x49, 0x44, 0x44, 0, 0},
11349         {0x4A, 0x7, 0x7, 0, 0},
11350         {0x4B, 0x6, 0x6, 0, 0},
11351         {0x4C, 0x4, 0x4, 0, 0},
11352         {0x4D, 0, 0, 0, 0},
11353         {0x4E, 0, 0, 0, 0},
11354         {0x4F, 0x26, 0x26, 1, 1},
11355         {0x50, 0x26, 0x26, 1, 1},
11356         {0x51, 0xf, 0xf, 1, 1},
11357         {0x52, 0xf, 0xf, 1, 1},
11358         {0x53, 0x44, 0x44, 0, 0},
11359         {0x54, 0, 0, 0, 0},
11360         {0x55, 0, 0, 0, 0},
11361         {0x56, 0x8, 0x8, 0, 0},
11362         {0x57, 0x8, 0x8, 0, 0},
11363         {0x58, 0x7, 0x7, 0, 0},
11364         {0x59, 0x22, 0x22, 0, 0},
11365         {0x5A, 0x22, 0x22, 0, 0},
11366         {0x5B, 0x2, 0x2, 0, 0},
11367         {0x5C, 0x4, 0x4, 1, 1},
11368         {0x5D, 0x7, 0x7, 0, 0},
11369         {0x5E, 0x55, 0x55, 0, 0},
11370         {0x5F, 0x23, 0x23, 0, 0},
11371         {0x60, 0x41, 0x41, 0, 0},
11372         {0x61, 0x1, 0x1, 0, 0},
11373         {0x62, 0xa, 0xa, 0, 0},
11374         {0x63, 0, 0, 0, 0},
11375         {0x64, 0, 0, 0, 0},
11376         {0x65, 0, 0, 0, 0},
11377         {0x66, 0, 0, 0, 0},
11378         {0x67, 0, 0, 0, 0},
11379         {0x68, 0, 0, 0, 0},
11380         {0x69, 0, 0, 0, 0},
11381         {0x6A, 0, 0, 0, 0},
11382         {0x6B, 0xc, 0xc, 0, 0},
11383         {0x6C, 0, 0, 0, 0},
11384         {0x6D, 0, 0, 0, 0},
11385         {0x6E, 0, 0, 0, 0},
11386         {0x6F, 0, 0, 0, 0},
11387         {0x70, 0, 0, 0, 0},
11388         {0x71, 0, 0, 0, 0},
11389         {0x72, 0x22, 0x22, 0, 0},
11390         {0x73, 0x22, 0x22, 0, 0},
11391         {0x74, 0, 0, 1, 1},
11392         {0x75, 0xa, 0xa, 0, 0},
11393         {0x76, 0x1, 0x1, 0, 0},
11394         {0x77, 0x22, 0x22, 0, 0},
11395         {0x78, 0x30, 0x30, 0, 0},
11396         {0x79, 0, 0, 0, 0},
11397         {0x7A, 0, 0, 0, 0},
11398         {0x7B, 0, 0, 0, 0},
11399         {0x7C, 0, 0, 0, 0},
11400         {0x7D, 0x5, 0x5, 1, 1},
11401         {0x7E, 0, 0, 0, 0},
11402         {0x7F, 0, 0, 0, 0},
11403         {0x80, 0, 0, 0, 0},
11404         {0x81, 0, 0, 0, 0},
11405         {0x82, 0, 0, 0, 0},
11406         {0x83, 0, 0, 0, 0},
11407         {0x84, 0, 0, 0, 0},
11408         {0x85, 0, 0, 0, 0},
11409         {0x86, 0, 0, 0, 0},
11410         {0x87, 0, 0, 0, 0},
11411         {0x88, 0, 0, 0, 0},
11412         {0x89, 0, 0, 0, 0},
11413         {0x8A, 0, 0, 0, 0},
11414         {0x8B, 0, 0, 0, 0},
11415         {0x8C, 0, 0, 0, 0},
11416         {0x8D, 0, 0, 0, 0},
11417         {0x8E, 0, 0, 0, 0},
11418         {0x8F, 0, 0, 0, 0},
11419         {0x90, 0, 0, 0, 0},
11420         {0x91, 0, 0, 0, 0},
11421         {0x92, 0, 0, 0, 0},
11422         {0x93, 0, 0, 0, 0},
11423         {0x94, 0, 0, 0, 0},
11424         {0xFFFF, 0, 0, 0, 0},
11425 };
11426
11427 struct radio_20xx_regs regs_2057_rev4[] = {
11428         {0x00, 0x84, 0},
11429         {0x01, 0, 0},
11430         {0x02, 0x60, 0},
11431         {0x03, 0x1f, 0},
11432         {0x04, 0x4, 0},
11433         {0x05, 0x2, 0},
11434         {0x06, 0x1, 0},
11435         {0x07, 0x1, 0},
11436         {0x08, 0x1, 0},
11437         {0x09, 0x69, 0},
11438         {0x0A, 0x66, 0},
11439         {0x0B, 0x6, 0},
11440         {0x0C, 0x18, 0},
11441         {0x0D, 0x3, 0},
11442         {0x0E, 0x20, 1},
11443         {0x0F, 0x20, 0},
11444         {0x10, 0, 0},
11445         {0x11, 0x7c, 0},
11446         {0x12, 0x42, 0},
11447         {0x13, 0xbd, 0},
11448         {0x14, 0x7, 0},
11449         {0x15, 0xf7, 0},
11450         {0x16, 0x8, 0},
11451         {0x17, 0x17, 0},
11452         {0x18, 0x7, 0},
11453         {0x19, 0, 0},
11454         {0x1A, 0x2, 0},
11455         {0x1B, 0x13, 0},
11456         {0x1C, 0x3e, 0},
11457         {0x1D, 0x3e, 0},
11458         {0x1E, 0x96, 0},
11459         {0x1F, 0x4, 0},
11460         {0x20, 0, 0},
11461         {0x21, 0, 0},
11462         {0x22, 0x17, 0},
11463         {0x23, 0x4, 0},
11464         {0x24, 0x1, 0},
11465         {0x25, 0x6, 0},
11466         {0x26, 0x4, 0},
11467         {0x27, 0xd, 0},
11468         {0x28, 0xd, 0},
11469         {0x29, 0x30, 0},
11470         {0x2A, 0x32, 0},
11471         {0x2B, 0x8, 0},
11472         {0x2C, 0x1c, 0},
11473         {0x2D, 0x2, 0},
11474         {0x2E, 0x4, 0},
11475         {0x2F, 0x7f, 0},
11476         {0x30, 0x27, 0},
11477         {0x31, 0, 1},
11478         {0x32, 0, 1},
11479         {0x33, 0, 1},
11480         {0x34, 0, 0},
11481         {0x35, 0x26, 1},
11482         {0x36, 0x18, 0},
11483         {0x37, 0x7, 0},
11484         {0x38, 0x66, 0},
11485         {0x39, 0x66, 0},
11486         {0x3A, 0x66, 0},
11487         {0x3B, 0x66, 0},
11488         {0x3C, 0xff, 1},
11489         {0x3D, 0xff, 1},
11490         {0x3E, 0xff, 1},
11491         {0x3F, 0xff, 1},
11492         {0x40, 0x16, 0},
11493         {0x41, 0x7, 0},
11494         {0x42, 0x19, 0},
11495         {0x43, 0x7, 0},
11496         {0x44, 0x6, 0},
11497         {0x45, 0x3, 0},
11498         {0x46, 0x1, 0},
11499         {0x47, 0x7, 0},
11500         {0x48, 0x33, 0},
11501         {0x49, 0x5, 0},
11502         {0x4A, 0x77, 0},
11503         {0x4B, 0x66, 0},
11504         {0x4C, 0x66, 0},
11505         {0x4D, 0, 0},
11506         {0x4E, 0x4, 0},
11507         {0x4F, 0xc, 0},
11508         {0x50, 0, 0},
11509         {0x51, 0x75, 0},
11510         {0x56, 0x7, 0},
11511         {0x57, 0, 0},
11512         {0x58, 0, 0},
11513         {0x59, 0xa8, 0},
11514         {0x5A, 0, 0},
11515         {0x5B, 0x1f, 0},
11516         {0x5C, 0x30, 0},
11517         {0x5D, 0x1, 0},
11518         {0x5E, 0x30, 0},
11519         {0x5F, 0x70, 0},
11520         {0x60, 0, 0},
11521         {0x61, 0, 0},
11522         {0x62, 0x33, 1},
11523         {0x63, 0x19, 0},
11524         {0x64, 0x62, 0},
11525         {0x65, 0, 0},
11526         {0x66, 0x11, 0},
11527         {0x69, 0, 0},
11528         {0x6A, 0x7e, 0},
11529         {0x6B, 0x3f, 0},
11530         {0x6C, 0x7f, 0},
11531         {0x6D, 0x78, 0},
11532         {0x6E, 0xc8, 0},
11533         {0x6F, 0x88, 0},
11534         {0x70, 0x8, 0},
11535         {0x71, 0xf, 0},
11536         {0x72, 0xbc, 0},
11537         {0x73, 0x8, 0},
11538         {0x74, 0x60, 0},
11539         {0x75, 0x1e, 0},
11540         {0x76, 0x70, 0},
11541         {0x77, 0, 0},
11542         {0x78, 0, 0},
11543         {0x79, 0, 0},
11544         {0x7A, 0x33, 0},
11545         {0x7B, 0x1e, 0},
11546         {0x7C, 0x62, 0},
11547         {0x7D, 0x11, 0},
11548         {0x80, 0x3c, 0},
11549         {0x81, 0x9c, 0},
11550         {0x82, 0xa, 0},
11551         {0x83, 0x9d, 0},
11552         {0x84, 0xa, 0},
11553         {0x85, 0, 0},
11554         {0x86, 0x40, 0},
11555         {0x87, 0x40, 0},
11556         {0x88, 0x88, 0},
11557         {0x89, 0x10, 0},
11558         {0x8A, 0xf0, 1},
11559         {0x8B, 0x10, 1},
11560         {0x8C, 0xf0, 1},
11561         {0x8D, 0, 0},
11562         {0x8E, 0, 0},
11563         {0x8F, 0x10, 0},
11564         {0x90, 0x55, 0},
11565         {0x91, 0x3f, 1},
11566         {0x92, 0x36, 1},
11567         {0x93, 0, 0},
11568         {0x94, 0, 0},
11569         {0x95, 0, 0},
11570         {0x96, 0x87, 0},
11571         {0x97, 0x11, 0},
11572         {0x98, 0, 0},
11573         {0x99, 0x33, 0},
11574         {0x9A, 0x88, 0},
11575         {0x9B, 0, 0},
11576         {0x9C, 0x87, 0},
11577         {0x9D, 0x11, 0},
11578         {0x9E, 0, 0},
11579         {0x9F, 0x33, 0},
11580         {0xA0, 0x88, 0},
11581         {0xA1, 0xe1, 0},
11582         {0xA2, 0x3f, 0},
11583         {0xA3, 0x44, 0},
11584         {0xA4, 0x8c, 1},
11585         {0xA5, 0x6d, 0},
11586         {0xA6, 0x22, 0},
11587         {0xA7, 0xbe, 0},
11588         {0xA8, 0x55, 1},
11589         {0xA9, 0xc, 0},
11590         {0xAA, 0xc, 0},
11591         {0xAB, 0xaa, 0},
11592         {0xAC, 0x2, 0},
11593         {0xAD, 0, 0},
11594         {0xAE, 0x10, 0},
11595         {0xAF, 0x1, 1},
11596         {0xB0, 0, 0},
11597         {0xB1, 0, 0},
11598         {0xB2, 0x80, 0},
11599         {0xB3, 0x60, 0},
11600         {0xB4, 0x44, 0},
11601         {0xB5, 0x55, 0},
11602         {0xB6, 0x1, 0},
11603         {0xB7, 0x55, 0},
11604         {0xB8, 0x1, 0},
11605         {0xB9, 0x5, 0},
11606         {0xBA, 0x55, 0},
11607         {0xBB, 0x55, 0},
11608         {0xC1, 0, 0},
11609         {0xC2, 0, 0},
11610         {0xC3, 0, 0},
11611         {0xC4, 0, 0},
11612         {0xC5, 0, 0},
11613         {0xC6, 0, 0},
11614         {0xC7, 0, 0},
11615         {0xC8, 0, 0},
11616         {0xC9, 0, 0},
11617         {0xCA, 0, 0},
11618         {0xCB, 0, 0},
11619         {0xCC, 0, 0},
11620         {0xCD, 0, 0},
11621         {0xCE, 0x5e, 0},
11622         {0xCF, 0xc, 0},
11623         {0xD0, 0xc, 0},
11624         {0xD1, 0xc, 0},
11625         {0xD2, 0, 0},
11626         {0xD3, 0x2b, 0},
11627         {0xD4, 0xc, 0},
11628         {0xD5, 0, 0},
11629         {0xD6, 0x75, 0},
11630         {0xDB, 0x7, 0},
11631         {0xDC, 0, 0},
11632         {0xDD, 0, 0},
11633         {0xDE, 0xa8, 0},
11634         {0xDF, 0, 0},
11635         {0xE0, 0x1f, 0},
11636         {0xE1, 0x30, 0},
11637         {0xE2, 0x1, 0},
11638         {0xE3, 0x30, 0},
11639         {0xE4, 0x70, 0},
11640         {0xE5, 0, 0},
11641         {0xE6, 0, 0},
11642         {0xE7, 0x33, 0},
11643         {0xE8, 0x19, 0},
11644         {0xE9, 0x62, 0},
11645         {0xEA, 0, 0},
11646         {0xEB, 0x11, 0},
11647         {0xEE, 0, 0},
11648         {0xEF, 0x7e, 0},
11649         {0xF0, 0x3f, 0},
11650         {0xF1, 0x7f, 0},
11651         {0xF2, 0x78, 0},
11652         {0xF3, 0xc8, 0},
11653         {0xF4, 0x88, 0},
11654         {0xF5, 0x8, 0},
11655         {0xF6, 0xf, 0},
11656         {0xF7, 0xbc, 0},
11657         {0xF8, 0x8, 0},
11658         {0xF9, 0x60, 0},
11659         {0xFA, 0x1e, 0},
11660         {0xFB, 0x70, 0},
11661         {0xFC, 0, 0},
11662         {0xFD, 0, 0},
11663         {0xFE, 0, 0},
11664         {0xFF, 0x33, 0},
11665         {0x100, 0x1e, 0},
11666         {0x101, 0x62, 0},
11667         {0x102, 0x11, 0},
11668         {0x105, 0x3c, 0},
11669         {0x106, 0x9c, 0},
11670         {0x107, 0xa, 0},
11671         {0x108, 0x9d, 0},
11672         {0x109, 0xa, 0},
11673         {0x10A, 0, 0},
11674         {0x10B, 0x40, 0},
11675         {0x10C, 0x40, 0},
11676         {0x10D, 0x88, 0},
11677         {0x10E, 0x10, 0},
11678         {0x10F, 0xf0, 1},
11679         {0x110, 0x10, 1},
11680         {0x111, 0xf0, 1},
11681         {0x112, 0, 0},
11682         {0x113, 0, 0},
11683         {0x114, 0x10, 0},
11684         {0x115, 0x55, 0},
11685         {0x116, 0x3f, 1},
11686         {0x117, 0x36, 1},
11687         {0x118, 0, 0},
11688         {0x119, 0, 0},
11689         {0x11A, 0, 0},
11690         {0x11B, 0x87, 0},
11691         {0x11C, 0x11, 0},
11692         {0x11D, 0, 0},
11693         {0x11E, 0x33, 0},
11694         {0x11F, 0x88, 0},
11695         {0x120, 0, 0},
11696         {0x121, 0x87, 0},
11697         {0x122, 0x11, 0},
11698         {0x123, 0, 0},
11699         {0x124, 0x33, 0},
11700         {0x125, 0x88, 0},
11701         {0x126, 0xe1, 0},
11702         {0x127, 0x3f, 0},
11703         {0x128, 0x44, 0},
11704         {0x129, 0x8c, 1},
11705         {0x12A, 0x6d, 0},
11706         {0x12B, 0x22, 0},
11707         {0x12C, 0xbe, 0},
11708         {0x12D, 0x55, 1},
11709         {0x12E, 0xc, 0},
11710         {0x12F, 0xc, 0},
11711         {0x130, 0xaa, 0},
11712         {0x131, 0x2, 0},
11713         {0x132, 0, 0},
11714         {0x133, 0x10, 0},
11715         {0x134, 0x1, 1},
11716         {0x135, 0, 0},
11717         {0x136, 0, 0},
11718         {0x137, 0x80, 0},
11719         {0x138, 0x60, 0},
11720         {0x139, 0x44, 0},
11721         {0x13A, 0x55, 0},
11722         {0x13B, 0x1, 0},
11723         {0x13C, 0x55, 0},
11724         {0x13D, 0x1, 0},
11725         {0x13E, 0x5, 0},
11726         {0x13F, 0x55, 0},
11727         {0x140, 0x55, 0},
11728         {0x146, 0, 0},
11729         {0x147, 0, 0},
11730         {0x148, 0, 0},
11731         {0x149, 0, 0},
11732         {0x14A, 0, 0},
11733         {0x14B, 0, 0},
11734         {0x14C, 0, 0},
11735         {0x14D, 0, 0},
11736         {0x14E, 0, 0},
11737         {0x14F, 0, 0},
11738         {0x150, 0, 0},
11739         {0x151, 0, 0},
11740         {0x152, 0, 0},
11741         {0x153, 0, 0},
11742         {0x154, 0xc, 0},
11743         {0x155, 0xc, 0},
11744         {0x156, 0xc, 0},
11745         {0x157, 0, 0},
11746         {0x158, 0x2b, 0},
11747         {0x159, 0x84, 0},
11748         {0x15A, 0x15, 0},
11749         {0x15B, 0xf, 0},
11750         {0x15C, 0, 0},
11751         {0x15D, 0, 0},
11752         {0x15E, 0, 1},
11753         {0x15F, 0, 1},
11754         {0x160, 0, 1},
11755         {0x161, 0, 1},
11756         {0x162, 0, 1},
11757         {0x163, 0, 1},
11758         {0x164, 0, 0},
11759         {0x165, 0, 0},
11760         {0x166, 0, 0},
11761         {0x167, 0, 0},
11762         {0x168, 0, 0},
11763         {0x169, 0x2, 1},
11764         {0x16A, 0, 1},
11765         {0x16B, 0, 1},
11766         {0x16C, 0, 1},
11767         {0x16D, 0, 0},
11768         {0x170, 0, 0},
11769         {0x171, 0x77, 0},
11770         {0x172, 0x77, 0},
11771         {0x173, 0x77, 0},
11772         {0x174, 0x77, 0},
11773         {0x175, 0, 0},
11774         {0x176, 0x3, 0},
11775         {0x177, 0x37, 0},
11776         {0x178, 0x3, 0},
11777         {0x179, 0, 0},
11778         {0x17A, 0x21, 0},
11779         {0x17B, 0x21, 0},
11780         {0x17C, 0, 0},
11781         {0x17D, 0xaa, 0},
11782         {0x17E, 0, 0},
11783         {0x17F, 0xaa, 0},
11784         {0x180, 0, 0},
11785         {0x190, 0, 0},
11786         {0x191, 0x77, 0},
11787         {0x192, 0x77, 0},
11788         {0x193, 0x77, 0},
11789         {0x194, 0x77, 0},
11790         {0x195, 0, 0},
11791         {0x196, 0x3, 0},
11792         {0x197, 0x37, 0},
11793         {0x198, 0x3, 0},
11794         {0x199, 0, 0},
11795         {0x19A, 0x21, 0},
11796         {0x19B, 0x21, 0},
11797         {0x19C, 0, 0},
11798         {0x19D, 0xaa, 0},
11799         {0x19E, 0, 0},
11800         {0x19F, 0xaa, 0},
11801         {0x1A0, 0, 0},
11802         {0x1A1, 0x2, 0},
11803         {0x1A2, 0xf, 0},
11804         {0x1A3, 0xf, 0},
11805         {0x1A4, 0, 1},
11806         {0x1A5, 0, 1},
11807         {0x1A6, 0, 1},
11808         {0x1A7, 0x2, 0},
11809         {0x1A8, 0xf, 0},
11810         {0x1A9, 0xf, 0},
11811         {0x1AA, 0, 1},
11812         {0x1AB, 0, 1},
11813         {0x1AC, 0, 1},
11814         {0xFFFF, 0, 0},
11815 };
11816
11817 struct radio_20xx_regs regs_2057_rev5[] = {
11818         {0x00, 0, 1},
11819         {0x01, 0x57, 1},
11820         {0x02, 0x20, 1},
11821         {0x03, 0x1f, 0},
11822         {0x04, 0x4, 0},
11823         {0x05, 0x2, 0},
11824         {0x06, 0x1, 0},
11825         {0x07, 0x1, 0},
11826         {0x08, 0x1, 0},
11827         {0x09, 0x69, 0},
11828         {0x0A, 0x66, 0},
11829         {0x0B, 0x6, 0},
11830         {0x0C, 0x18, 0},
11831         {0x0D, 0x3, 0},
11832         {0x0E, 0x20, 0},
11833         {0x0F, 0x20, 0},
11834         {0x10, 0, 0},
11835         {0x11, 0x7c, 0},
11836         {0x12, 0x42, 0},
11837         {0x13, 0xbd, 0},
11838         {0x14, 0x7, 0},
11839         {0x15, 0x87, 0},
11840         {0x16, 0x8, 0},
11841         {0x17, 0x17, 0},
11842         {0x18, 0x7, 0},
11843         {0x19, 0, 0},
11844         {0x1A, 0x2, 0},
11845         {0x1B, 0x13, 0},
11846         {0x1C, 0x3e, 0},
11847         {0x1D, 0x3e, 0},
11848         {0x1E, 0x96, 0},
11849         {0x1F, 0x4, 0},
11850         {0x20, 0, 0},
11851         {0x21, 0, 0},
11852         {0x22, 0x17, 0},
11853         {0x23, 0x6, 1},
11854         {0x24, 0x1, 0},
11855         {0x25, 0x6, 0},
11856         {0x26, 0x4, 0},
11857         {0x27, 0xd, 0},
11858         {0x28, 0xd, 0},
11859         {0x29, 0x30, 0},
11860         {0x2A, 0x32, 0},
11861         {0x2B, 0x8, 0},
11862         {0x2C, 0x1c, 0},
11863         {0x2D, 0x2, 0},
11864         {0x2E, 0x4, 0},
11865         {0x2F, 0x7f, 0},
11866         {0x30, 0x27, 0},
11867         {0x31, 0, 1},
11868         {0x32, 0, 1},
11869         {0x33, 0, 1},
11870         {0x34, 0, 0},
11871         {0x35, 0x20, 0},
11872         {0x36, 0x18, 0},
11873         {0x37, 0x7, 0},
11874         {0x38, 0x66, 0},
11875         {0x39, 0x66, 0},
11876         {0x3C, 0xff, 0},
11877         {0x3D, 0xff, 0},
11878         {0x40, 0x16, 0},
11879         {0x41, 0x7, 0},
11880         {0x45, 0x3, 0},
11881         {0x46, 0x1, 0},
11882         {0x47, 0x7, 0},
11883         {0x4B, 0x66, 0},
11884         {0x4C, 0x66, 0},
11885         {0x4D, 0, 0},
11886         {0x4E, 0x4, 0},
11887         {0x4F, 0xc, 0},
11888         {0x50, 0, 0},
11889         {0x51, 0x70, 1},
11890         {0x56, 0x7, 0},
11891         {0x57, 0, 0},
11892         {0x58, 0, 0},
11893         {0x59, 0x88, 1},
11894         {0x5A, 0, 0},
11895         {0x5B, 0x1f, 0},
11896         {0x5C, 0x20, 1},
11897         {0x5D, 0x1, 0},
11898         {0x5E, 0x30, 0},
11899         {0x5F, 0x70, 0},
11900         {0x60, 0, 0},
11901         {0x61, 0, 0},
11902         {0x62, 0x33, 1},
11903         {0x63, 0xf, 1},
11904         {0x64, 0xf, 1},
11905         {0x65, 0, 0},
11906         {0x66, 0x11, 0},
11907         {0x80, 0x3c, 0},
11908         {0x81, 0x1, 1},
11909         {0x82, 0xa, 0},
11910         {0x85, 0, 0},
11911         {0x86, 0x40, 0},
11912         {0x87, 0x40, 0},
11913         {0x88, 0x88, 0},
11914         {0x89, 0x10, 0},
11915         {0x8A, 0xf0, 0},
11916         {0x8B, 0x10, 0},
11917         {0x8C, 0xf0, 0},
11918         {0x8F, 0x10, 0},
11919         {0x90, 0x55, 0},
11920         {0x91, 0x3f, 1},
11921         {0x92, 0x36, 1},
11922         {0x93, 0, 0},
11923         {0x94, 0, 0},
11924         {0x95, 0, 0},
11925         {0x96, 0x87, 0},
11926         {0x97, 0x11, 0},
11927         {0x98, 0, 0},
11928         {0x99, 0x33, 0},
11929         {0x9A, 0x88, 0},
11930         {0xA1, 0x20, 1},
11931         {0xA2, 0x3f, 0},
11932         {0xA3, 0x44, 0},
11933         {0xA4, 0x8c, 0},
11934         {0xA5, 0x6c, 0},
11935         {0xA6, 0x22, 0},
11936         {0xA7, 0xbe, 0},
11937         {0xA8, 0x55, 0},
11938         {0xAA, 0xc, 0},
11939         {0xAB, 0xaa, 0},
11940         {0xAC, 0x2, 0},
11941         {0xAD, 0, 0},
11942         {0xAE, 0x10, 0},
11943         {0xAF, 0x1, 0},
11944         {0xB0, 0, 0},
11945         {0xB1, 0, 0},
11946         {0xB2, 0x80, 0},
11947         {0xB3, 0x60, 0},
11948         {0xB4, 0x44, 0},
11949         {0xB5, 0x55, 0},
11950         {0xB6, 0x1, 0},
11951         {0xB7, 0x55, 0},
11952         {0xB8, 0x1, 0},
11953         {0xB9, 0x5, 0},
11954         {0xBA, 0x55, 0},
11955         {0xBB, 0x55, 0},
11956         {0xC3, 0, 0},
11957         {0xC4, 0, 0},
11958         {0xC5, 0, 0},
11959         {0xC6, 0, 0},
11960         {0xC7, 0, 0},
11961         {0xC8, 0, 0},
11962         {0xC9, 0, 0},
11963         {0xCA, 0, 0},
11964         {0xCB, 0, 0},
11965         {0xCD, 0, 0},
11966         {0xCE, 0x5e, 0},
11967         {0xCF, 0xc, 0},
11968         {0xD0, 0xc, 0},
11969         {0xD1, 0xc, 0},
11970         {0xD2, 0, 0},
11971         {0xD3, 0x2b, 0},
11972         {0xD4, 0xc, 0},
11973         {0xD5, 0, 0},
11974         {0xD6, 0x70, 1},
11975         {0xDB, 0x7, 0},
11976         {0xDC, 0, 0},
11977         {0xDD, 0, 0},
11978         {0xDE, 0x88, 1},
11979         {0xDF, 0, 0},
11980         {0xE0, 0x1f, 0},
11981         {0xE1, 0x20, 1},
11982         {0xE2, 0x1, 0},
11983         {0xE3, 0x30, 0},
11984         {0xE4, 0x70, 0},
11985         {0xE5, 0, 0},
11986         {0xE6, 0, 0},
11987         {0xE7, 0x33, 0},
11988         {0xE8, 0xf, 1},
11989         {0xE9, 0xf, 1},
11990         {0xEA, 0, 0},
11991         {0xEB, 0x11, 0},
11992         {0x105, 0x3c, 0},
11993         {0x106, 0x1, 1},
11994         {0x107, 0xa, 0},
11995         {0x10A, 0, 0},
11996         {0x10B, 0x40, 0},
11997         {0x10C, 0x40, 0},
11998         {0x10D, 0x88, 0},
11999         {0x10E, 0x10, 0},
12000         {0x10F, 0xf0, 0},
12001         {0x110, 0x10, 0},
12002         {0x111, 0xf0, 0},
12003         {0x114, 0x10, 0},
12004         {0x115, 0x55, 0},
12005         {0x116, 0x3f, 1},
12006         {0x117, 0x36, 1},
12007         {0x118, 0, 0},
12008         {0x119, 0, 0},
12009         {0x11A, 0, 0},
12010         {0x11B, 0x87, 0},
12011         {0x11C, 0x11, 0},
12012         {0x11D, 0, 0},
12013         {0x11E, 0x33, 0},
12014         {0x11F, 0x88, 0},
12015         {0x126, 0x20, 1},
12016         {0x127, 0x3f, 0},
12017         {0x128, 0x44, 0},
12018         {0x129, 0x8c, 0},
12019         {0x12A, 0x6c, 0},
12020         {0x12B, 0x22, 0},
12021         {0x12C, 0xbe, 0},
12022         {0x12D, 0x55, 0},
12023         {0x12F, 0xc, 0},
12024         {0x130, 0xaa, 0},
12025         {0x131, 0x2, 0},
12026         {0x132, 0, 0},
12027         {0x133, 0x10, 0},
12028         {0x134, 0x1, 0},
12029         {0x135, 0, 0},
12030         {0x136, 0, 0},
12031         {0x137, 0x80, 0},
12032         {0x138, 0x60, 0},
12033         {0x139, 0x44, 0},
12034         {0x13A, 0x55, 0},
12035         {0x13B, 0x1, 0},
12036         {0x13C, 0x55, 0},
12037         {0x13D, 0x1, 0},
12038         {0x13E, 0x5, 0},
12039         {0x13F, 0x55, 0},
12040         {0x140, 0x55, 0},
12041         {0x148, 0, 0},
12042         {0x149, 0, 0},
12043         {0x14A, 0, 0},
12044         {0x14B, 0, 0},
12045         {0x14C, 0, 0},
12046         {0x14D, 0, 0},
12047         {0x14E, 0, 0},
12048         {0x14F, 0, 0},
12049         {0x150, 0, 0},
12050         {0x154, 0xc, 0},
12051         {0x155, 0xc, 0},
12052         {0x156, 0xc, 0},
12053         {0x157, 0, 0},
12054         {0x158, 0x2b, 0},
12055         {0x159, 0x84, 0},
12056         {0x15A, 0x15, 0},
12057         {0x15B, 0xf, 0},
12058         {0x15C, 0, 0},
12059         {0x15D, 0, 0},
12060         {0x15E, 0, 1},
12061         {0x15F, 0, 1},
12062         {0x160, 0, 1},
12063         {0x161, 0, 1},
12064         {0x162, 0, 1},
12065         {0x163, 0, 1},
12066         {0x164, 0, 0},
12067         {0x165, 0, 0},
12068         {0x166, 0, 0},
12069         {0x167, 0, 0},
12070         {0x168, 0, 0},
12071         {0x169, 0, 0},
12072         {0x16A, 0, 1},
12073         {0x16B, 0, 1},
12074         {0x16C, 0, 1},
12075         {0x16D, 0, 0},
12076         {0x170, 0, 0},
12077         {0x171, 0x77, 0},
12078         {0x172, 0x77, 0},
12079         {0x173, 0x77, 0},
12080         {0x174, 0x77, 0},
12081         {0x175, 0, 0},
12082         {0x176, 0x3, 0},
12083         {0x177, 0x37, 0},
12084         {0x178, 0x3, 0},
12085         {0x179, 0, 0},
12086         {0x17B, 0x21, 0},
12087         {0x17C, 0, 0},
12088         {0x17D, 0xaa, 0},
12089         {0x17E, 0, 0},
12090         {0x190, 0, 0},
12091         {0x191, 0x77, 0},
12092         {0x192, 0x77, 0},
12093         {0x193, 0x77, 0},
12094         {0x194, 0x77, 0},
12095         {0x195, 0, 0},
12096         {0x196, 0x3, 0},
12097         {0x197, 0x37, 0},
12098         {0x198, 0x3, 0},
12099         {0x199, 0, 0},
12100         {0x19B, 0x21, 0},
12101         {0x19C, 0, 0},
12102         {0x19D, 0xaa, 0},
12103         {0x19E, 0, 0},
12104         {0x1A1, 0x2, 0},
12105         {0x1A2, 0xf, 0},
12106         {0x1A3, 0xf, 0},
12107         {0x1A4, 0, 1},
12108         {0x1A5, 0, 1},
12109         {0x1A6, 0, 1},
12110         {0x1A7, 0x2, 0},
12111         {0x1A8, 0xf, 0},
12112         {0x1A9, 0xf, 0},
12113         {0x1AA, 0, 1},
12114         {0x1AB, 0, 1},
12115         {0x1AC, 0, 1},
12116         {0x1AD, 0x84, 0},
12117         {0x1AE, 0x60, 0},
12118         {0x1AF, 0x47, 0},
12119         {0x1B0, 0x47, 0},
12120         {0x1B1, 0, 0},
12121         {0x1B2, 0, 0},
12122         {0x1B3, 0, 0},
12123         {0x1B4, 0, 0},
12124         {0x1B5, 0, 0},
12125         {0x1B6, 0, 0},
12126         {0x1B7, 0xc, 1},
12127         {0x1B8, 0, 0},
12128         {0x1B9, 0, 0},
12129         {0x1BA, 0, 0},
12130         {0x1BB, 0, 0},
12131         {0x1BC, 0, 0},
12132         {0x1BD, 0, 0},
12133         {0x1BE, 0, 0},
12134         {0x1BF, 0, 0},
12135         {0x1C0, 0, 0},
12136         {0x1C1, 0x1, 1},
12137         {0x1C2, 0x80, 1},
12138         {0x1C3, 0, 0},
12139         {0x1C4, 0, 0},
12140         {0x1C5, 0, 0},
12141         {0x1C6, 0, 0},
12142         {0x1C7, 0, 0},
12143         {0x1C8, 0, 0},
12144         {0x1C9, 0, 0},
12145         {0x1CA, 0, 0},
12146         {0xFFFF, 0, 0}
12147 };
12148
12149 struct radio_20xx_regs regs_2057_rev5v1[] = {
12150         {0x00, 0x15, 1},
12151         {0x01, 0x57, 1},
12152         {0x02, 0x20, 1},
12153         {0x03, 0x1f, 0},
12154         {0x04, 0x4, 0},
12155         {0x05, 0x2, 0},
12156         {0x06, 0x1, 0},
12157         {0x07, 0x1, 0},
12158         {0x08, 0x1, 0},
12159         {0x09, 0x69, 0},
12160         {0x0A, 0x66, 0},
12161         {0x0B, 0x6, 0},
12162         {0x0C, 0x18, 0},
12163         {0x0D, 0x3, 0},
12164         {0x0E, 0x20, 0},
12165         {0x0F, 0x20, 0},
12166         {0x10, 0, 0},
12167         {0x11, 0x7c, 0},
12168         {0x12, 0x42, 0},
12169         {0x13, 0xbd, 0},
12170         {0x14, 0x7, 0},
12171         {0x15, 0x87, 0},
12172         {0x16, 0x8, 0},
12173         {0x17, 0x17, 0},
12174         {0x18, 0x7, 0},
12175         {0x19, 0, 0},
12176         {0x1A, 0x2, 0},
12177         {0x1B, 0x13, 0},
12178         {0x1C, 0x3e, 0},
12179         {0x1D, 0x3e, 0},
12180         {0x1E, 0x96, 0},
12181         {0x1F, 0x4, 0},
12182         {0x20, 0, 0},
12183         {0x21, 0, 0},
12184         {0x22, 0x17, 0},
12185         {0x23, 0x6, 1},
12186         {0x24, 0x1, 0},
12187         {0x25, 0x6, 0},
12188         {0x26, 0x4, 0},
12189         {0x27, 0xd, 0},
12190         {0x28, 0xd, 0},
12191         {0x29, 0x30, 0},
12192         {0x2A, 0x32, 0},
12193         {0x2B, 0x8, 0},
12194         {0x2C, 0x1c, 0},
12195         {0x2D, 0x2, 0},
12196         {0x2E, 0x4, 0},
12197         {0x2F, 0x7f, 0},
12198         {0x30, 0x27, 0},
12199         {0x31, 0, 1},
12200         {0x32, 0, 1},
12201         {0x33, 0, 1},
12202         {0x34, 0, 0},
12203         {0x35, 0x20, 0},
12204         {0x36, 0x18, 0},
12205         {0x37, 0x7, 0},
12206         {0x38, 0x66, 0},
12207         {0x39, 0x66, 0},
12208         {0x3C, 0xff, 0},
12209         {0x3D, 0xff, 0},
12210         {0x40, 0x16, 0},
12211         {0x41, 0x7, 0},
12212         {0x45, 0x3, 0},
12213         {0x46, 0x1, 0},
12214         {0x47, 0x7, 0},
12215         {0x4B, 0x66, 0},
12216         {0x4C, 0x66, 0},
12217         {0x4D, 0, 0},
12218         {0x4E, 0x4, 0},
12219         {0x4F, 0xc, 0},
12220         {0x50, 0, 0},
12221         {0x51, 0x70, 1},
12222         {0x56, 0x7, 0},
12223         {0x57, 0, 0},
12224         {0x58, 0, 0},
12225         {0x59, 0x88, 1},
12226         {0x5A, 0, 0},
12227         {0x5B, 0x1f, 0},
12228         {0x5C, 0x20, 1},
12229         {0x5D, 0x1, 0},
12230         {0x5E, 0x30, 0},
12231         {0x5F, 0x70, 0},
12232         {0x60, 0, 0},
12233         {0x61, 0, 0},
12234         {0x62, 0x33, 1},
12235         {0x63, 0xf, 1},
12236         {0x64, 0xf, 1},
12237         {0x65, 0, 0},
12238         {0x66, 0x11, 0},
12239         {0x80, 0x3c, 0},
12240         {0x81, 0x1, 1},
12241         {0x82, 0xa, 0},
12242         {0x85, 0, 0},
12243         {0x86, 0x40, 0},
12244         {0x87, 0x40, 0},
12245         {0x88, 0x88, 0},
12246         {0x89, 0x10, 0},
12247         {0x8A, 0xf0, 0},
12248         {0x8B, 0x10, 0},
12249         {0x8C, 0xf0, 0},
12250         {0x8F, 0x10, 0},
12251         {0x90, 0x55, 0},
12252         {0x91, 0x3f, 1},
12253         {0x92, 0x36, 1},
12254         {0x93, 0, 0},
12255         {0x94, 0, 0},
12256         {0x95, 0, 0},
12257         {0x96, 0x87, 0},
12258         {0x97, 0x11, 0},
12259         {0x98, 0, 0},
12260         {0x99, 0x33, 0},
12261         {0x9A, 0x88, 0},
12262         {0xA1, 0x20, 1},
12263         {0xA2, 0x3f, 0},
12264         {0xA3, 0x44, 0},
12265         {0xA4, 0x8c, 0},
12266         {0xA5, 0x6c, 0},
12267         {0xA6, 0x22, 0},
12268         {0xA7, 0xbe, 0},
12269         {0xA8, 0x55, 0},
12270         {0xAA, 0xc, 0},
12271         {0xAB, 0xaa, 0},
12272         {0xAC, 0x2, 0},
12273         {0xAD, 0, 0},
12274         {0xAE, 0x10, 0},
12275         {0xAF, 0x1, 0},
12276         {0xB0, 0, 0},
12277         {0xB1, 0, 0},
12278         {0xB2, 0x80, 0},
12279         {0xB3, 0x60, 0},
12280         {0xB4, 0x44, 0},
12281         {0xB5, 0x55, 0},
12282         {0xB6, 0x1, 0},
12283         {0xB7, 0x55, 0},
12284         {0xB8, 0x1, 0},
12285         {0xB9, 0x5, 0},
12286         {0xBA, 0x55, 0},
12287         {0xBB, 0x55, 0},
12288         {0xC3, 0, 0},
12289         {0xC4, 0, 0},
12290         {0xC5, 0, 0},
12291         {0xC6, 0, 0},
12292         {0xC7, 0, 0},
12293         {0xC8, 0, 0},
12294         {0xC9, 0x1, 1},
12295         {0xCA, 0, 0},
12296         {0xCB, 0, 0},
12297         {0xCD, 0, 0},
12298         {0xCE, 0x5e, 0},
12299         {0xCF, 0xc, 0},
12300         {0xD0, 0xc, 0},
12301         {0xD1, 0xc, 0},
12302         {0xD2, 0, 0},
12303         {0xD3, 0x2b, 0},
12304         {0xD4, 0xc, 0},
12305         {0xD5, 0, 0},
12306         {0xD6, 0x70, 1},
12307         {0xDB, 0x7, 0},
12308         {0xDC, 0, 0},
12309         {0xDD, 0, 0},
12310         {0xDE, 0x88, 1},
12311         {0xDF, 0, 0},
12312         {0xE0, 0x1f, 0},
12313         {0xE1, 0x20, 1},
12314         {0xE2, 0x1, 0},
12315         {0xE3, 0x30, 0},
12316         {0xE4, 0x70, 0},
12317         {0xE5, 0, 0},
12318         {0xE6, 0, 0},
12319         {0xE7, 0x33, 0},
12320         {0xE8, 0xf, 1},
12321         {0xE9, 0xf, 1},
12322         {0xEA, 0, 0},
12323         {0xEB, 0x11, 0},
12324         {0x105, 0x3c, 0},
12325         {0x106, 0x1, 1},
12326         {0x107, 0xa, 0},
12327         {0x10A, 0, 0},
12328         {0x10B, 0x40, 0},
12329         {0x10C, 0x40, 0},
12330         {0x10D, 0x88, 0},
12331         {0x10E, 0x10, 0},
12332         {0x10F, 0xf0, 0},
12333         {0x110, 0x10, 0},
12334         {0x111, 0xf0, 0},
12335         {0x114, 0x10, 0},
12336         {0x115, 0x55, 0},
12337         {0x116, 0x3f, 1},
12338         {0x117, 0x36, 1},
12339         {0x118, 0, 0},
12340         {0x119, 0, 0},
12341         {0x11A, 0, 0},
12342         {0x11B, 0x87, 0},
12343         {0x11C, 0x11, 0},
12344         {0x11D, 0, 0},
12345         {0x11E, 0x33, 0},
12346         {0x11F, 0x88, 0},
12347         {0x126, 0x20, 1},
12348         {0x127, 0x3f, 0},
12349         {0x128, 0x44, 0},
12350         {0x129, 0x8c, 0},
12351         {0x12A, 0x6c, 0},
12352         {0x12B, 0x22, 0},
12353         {0x12C, 0xbe, 0},
12354         {0x12D, 0x55, 0},
12355         {0x12F, 0xc, 0},
12356         {0x130, 0xaa, 0},
12357         {0x131, 0x2, 0},
12358         {0x132, 0, 0},
12359         {0x133, 0x10, 0},
12360         {0x134, 0x1, 0},
12361         {0x135, 0, 0},
12362         {0x136, 0, 0},
12363         {0x137, 0x80, 0},
12364         {0x138, 0x60, 0},
12365         {0x139, 0x44, 0},
12366         {0x13A, 0x55, 0},
12367         {0x13B, 0x1, 0},
12368         {0x13C, 0x55, 0},
12369         {0x13D, 0x1, 0},
12370         {0x13E, 0x5, 0},
12371         {0x13F, 0x55, 0},
12372         {0x140, 0x55, 0},
12373         {0x148, 0, 0},
12374         {0x149, 0, 0},
12375         {0x14A, 0, 0},
12376         {0x14B, 0, 0},
12377         {0x14C, 0, 0},
12378         {0x14D, 0, 0},
12379         {0x14E, 0x1, 1},
12380         {0x14F, 0, 0},
12381         {0x150, 0, 0},
12382         {0x154, 0xc, 0},
12383         {0x155, 0xc, 0},
12384         {0x156, 0xc, 0},
12385         {0x157, 0, 0},
12386         {0x158, 0x2b, 0},
12387         {0x159, 0x84, 0},
12388         {0x15A, 0x15, 0},
12389         {0x15B, 0xf, 0},
12390         {0x15C, 0, 0},
12391         {0x15D, 0, 0},
12392         {0x15E, 0, 1},
12393         {0x15F, 0, 1},
12394         {0x160, 0, 1},
12395         {0x161, 0, 1},
12396         {0x162, 0, 1},
12397         {0x163, 0, 1},
12398         {0x164, 0, 0},
12399         {0x165, 0, 0},
12400         {0x166, 0, 0},
12401         {0x167, 0, 0},
12402         {0x168, 0, 0},
12403         {0x169, 0, 0},
12404         {0x16A, 0, 1},
12405         {0x16B, 0, 1},
12406         {0x16C, 0, 1},
12407         {0x16D, 0, 0},
12408         {0x170, 0, 0},
12409         {0x171, 0x77, 0},
12410         {0x172, 0x77, 0},
12411         {0x173, 0x77, 0},
12412         {0x174, 0x77, 0},
12413         {0x175, 0, 0},
12414         {0x176, 0x3, 0},
12415         {0x177, 0x37, 0},
12416         {0x178, 0x3, 0},
12417         {0x179, 0, 0},
12418         {0x17B, 0x21, 0},
12419         {0x17C, 0, 0},
12420         {0x17D, 0xaa, 0},
12421         {0x17E, 0, 0},
12422         {0x190, 0, 0},
12423         {0x191, 0x77, 0},
12424         {0x192, 0x77, 0},
12425         {0x193, 0x77, 0},
12426         {0x194, 0x77, 0},
12427         {0x195, 0, 0},
12428         {0x196, 0x3, 0},
12429         {0x197, 0x37, 0},
12430         {0x198, 0x3, 0},
12431         {0x199, 0, 0},
12432         {0x19B, 0x21, 0},
12433         {0x19C, 0, 0},
12434         {0x19D, 0xaa, 0},
12435         {0x19E, 0, 0},
12436         {0x1A1, 0x2, 0},
12437         {0x1A2, 0xf, 0},
12438         {0x1A3, 0xf, 0},
12439         {0x1A4, 0, 1},
12440         {0x1A5, 0, 1},
12441         {0x1A6, 0, 1},
12442         {0x1A7, 0x2, 0},
12443         {0x1A8, 0xf, 0},
12444         {0x1A9, 0xf, 0},
12445         {0x1AA, 0, 1},
12446         {0x1AB, 0, 1},
12447         {0x1AC, 0, 1},
12448         {0x1AD, 0x84, 0},
12449         {0x1AE, 0x60, 0},
12450         {0x1AF, 0x47, 0},
12451         {0x1B0, 0x47, 0},
12452         {0x1B1, 0, 0},
12453         {0x1B2, 0, 0},
12454         {0x1B3, 0, 0},
12455         {0x1B4, 0, 0},
12456         {0x1B5, 0, 0},
12457         {0x1B6, 0, 0},
12458         {0x1B7, 0xc, 1},
12459         {0x1B8, 0, 0},
12460         {0x1B9, 0, 0},
12461         {0x1BA, 0, 0},
12462         {0x1BB, 0, 0},
12463         {0x1BC, 0, 0},
12464         {0x1BD, 0, 0},
12465         {0x1BE, 0, 0},
12466         {0x1BF, 0, 0},
12467         {0x1C0, 0, 0},
12468         {0x1C1, 0x1, 1},
12469         {0x1C2, 0x80, 1},
12470         {0x1C3, 0, 0},
12471         {0x1C4, 0, 0},
12472         {0x1C5, 0, 0},
12473         {0x1C6, 0, 0},
12474         {0x1C7, 0, 0},
12475         {0x1C8, 0, 0},
12476         {0x1C9, 0, 0},
12477         {0x1CA, 0, 0},
12478         {0xFFFF, 0, 0}
12479 };
12480
12481 struct radio_20xx_regs regs_2057_rev7[] = {
12482         {0x00, 0, 1},
12483         {0x01, 0x57, 1},
12484         {0x02, 0x20, 1},
12485         {0x03, 0x1f, 0},
12486         {0x04, 0x4, 0},
12487         {0x05, 0x2, 0},
12488         {0x06, 0x1, 0},
12489         {0x07, 0x1, 0},
12490         {0x08, 0x1, 0},
12491         {0x09, 0x69, 0},
12492         {0x0A, 0x66, 0},
12493         {0x0B, 0x6, 0},
12494         {0x0C, 0x18, 0},
12495         {0x0D, 0x3, 0},
12496         {0x0E, 0x20, 0},
12497         {0x0F, 0x20, 0},
12498         {0x10, 0, 0},
12499         {0x11, 0x7c, 0},
12500         {0x12, 0x42, 0},
12501         {0x13, 0xbd, 0},
12502         {0x14, 0x7, 0},
12503         {0x15, 0x87, 0},
12504         {0x16, 0x8, 0},
12505         {0x17, 0x17, 0},
12506         {0x18, 0x7, 0},
12507         {0x19, 0, 0},
12508         {0x1A, 0x2, 0},
12509         {0x1B, 0x13, 0},
12510         {0x1C, 0x3e, 0},
12511         {0x1D, 0x3e, 0},
12512         {0x1E, 0x96, 0},
12513         {0x1F, 0x4, 0},
12514         {0x20, 0, 0},
12515         {0x21, 0, 0},
12516         {0x22, 0x17, 0},
12517         {0x23, 0x6, 0},
12518         {0x24, 0x1, 0},
12519         {0x25, 0x6, 0},
12520         {0x26, 0x4, 0},
12521         {0x27, 0xd, 0},
12522         {0x28, 0xd, 0},
12523         {0x29, 0x30, 0},
12524         {0x2A, 0x32, 0},
12525         {0x2B, 0x8, 0},
12526         {0x2C, 0x1c, 0},
12527         {0x2D, 0x2, 0},
12528         {0x2E, 0x4, 0},
12529         {0x2F, 0x7f, 0},
12530         {0x30, 0x27, 0},
12531         {0x31, 0, 1},
12532         {0x32, 0, 1},
12533         {0x33, 0, 1},
12534         {0x34, 0, 0},
12535         {0x35, 0x20, 0},
12536         {0x36, 0x18, 0},
12537         {0x37, 0x7, 0},
12538         {0x38, 0x66, 0},
12539         {0x39, 0x66, 0},
12540         {0x3A, 0x66, 0},
12541         {0x3B, 0x66, 0},
12542         {0x3C, 0xff, 0},
12543         {0x3D, 0xff, 0},
12544         {0x3E, 0xff, 0},
12545         {0x3F, 0xff, 0},
12546         {0x40, 0x16, 0},
12547         {0x41, 0x7, 0},
12548         {0x42, 0x19, 0},
12549         {0x43, 0x7, 0},
12550         {0x44, 0x6, 0},
12551         {0x45, 0x3, 0},
12552         {0x46, 0x1, 0},
12553         {0x47, 0x7, 0},
12554         {0x48, 0x33, 0},
12555         {0x49, 0x5, 0},
12556         {0x4A, 0x77, 0},
12557         {0x4B, 0x66, 0},
12558         {0x4C, 0x66, 0},
12559         {0x4D, 0, 0},
12560         {0x4E, 0x4, 0},
12561         {0x4F, 0xc, 0},
12562         {0x50, 0, 0},
12563         {0x51, 0x70, 1},
12564         {0x56, 0x7, 0},
12565         {0x57, 0, 0},
12566         {0x58, 0, 0},
12567         {0x59, 0x88, 1},
12568         {0x5A, 0, 0},
12569         {0x5B, 0x1f, 0},
12570         {0x5C, 0x20, 1},
12571         {0x5D, 0x1, 0},
12572         {0x5E, 0x30, 0},
12573         {0x5F, 0x70, 0},
12574         {0x60, 0, 0},
12575         {0x61, 0, 0},
12576         {0x62, 0x33, 1},
12577         {0x63, 0xf, 1},
12578         {0x64, 0x13, 1},
12579         {0x65, 0, 0},
12580         {0x66, 0xee, 1},
12581         {0x69, 0, 0},
12582         {0x6A, 0x7e, 0},
12583         {0x6B, 0x3f, 0},
12584         {0x6C, 0x7f, 0},
12585         {0x6D, 0x78, 0},
12586         {0x6E, 0x58, 1},
12587         {0x6F, 0x88, 0},
12588         {0x70, 0x8, 0},
12589         {0x71, 0xf, 0},
12590         {0x72, 0xbc, 0},
12591         {0x73, 0x8, 0},
12592         {0x74, 0x60, 0},
12593         {0x75, 0x13, 1},
12594         {0x76, 0x70, 0},
12595         {0x77, 0, 0},
12596         {0x78, 0, 0},
12597         {0x79, 0, 0},
12598         {0x7A, 0x33, 0},
12599         {0x7B, 0x13, 1},
12600         {0x7C, 0x14, 1},
12601         {0x7D, 0xee, 1},
12602         {0x80, 0x3c, 0},
12603         {0x81, 0x1, 1},
12604         {0x82, 0xa, 0},
12605         {0x83, 0x9d, 0},
12606         {0x84, 0xa, 0},
12607         {0x85, 0, 0},
12608         {0x86, 0x40, 0},
12609         {0x87, 0x40, 0},
12610         {0x88, 0x88, 0},
12611         {0x89, 0x10, 0},
12612         {0x8A, 0xf0, 0},
12613         {0x8B, 0x10, 0},
12614         {0x8C, 0xf0, 0},
12615         {0x8D, 0, 0},
12616         {0x8E, 0, 0},
12617         {0x8F, 0x10, 0},
12618         {0x90, 0x55, 0},
12619         {0x91, 0x3f, 1},
12620         {0x92, 0x36, 1},
12621         {0x93, 0, 0},
12622         {0x94, 0, 0},
12623         {0x95, 0, 0},
12624         {0x96, 0x87, 0},
12625         {0x97, 0x11, 0},
12626         {0x98, 0, 0},
12627         {0x99, 0x33, 0},
12628         {0x9A, 0x88, 0},
12629         {0x9B, 0, 0},
12630         {0x9C, 0x87, 0},
12631         {0x9D, 0x11, 0},
12632         {0x9E, 0, 0},
12633         {0x9F, 0x33, 0},
12634         {0xA0, 0x88, 0},
12635         {0xA1, 0x20, 1},
12636         {0xA2, 0x3f, 0},
12637         {0xA3, 0x44, 0},
12638         {0xA4, 0x8c, 0},
12639         {0xA5, 0x6c, 0},
12640         {0xA6, 0x22, 0},
12641         {0xA7, 0xbe, 0},
12642         {0xA8, 0x55, 0},
12643         {0xAA, 0xc, 0},
12644         {0xAB, 0xaa, 0},
12645         {0xAC, 0x2, 0},
12646         {0xAD, 0, 0},
12647         {0xAE, 0x10, 0},
12648         {0xAF, 0x1, 0},
12649         {0xB0, 0, 0},
12650         {0xB1, 0, 0},
12651         {0xB2, 0x80, 0},
12652         {0xB3, 0x60, 0},
12653         {0xB4, 0x44, 0},
12654         {0xB5, 0x55, 0},
12655         {0xB6, 0x1, 0},
12656         {0xB7, 0x55, 0},
12657         {0xB8, 0x1, 0},
12658         {0xB9, 0x5, 0},
12659         {0xBA, 0x55, 0},
12660         {0xBB, 0x55, 0},
12661         {0xC1, 0, 0},
12662         {0xC2, 0, 0},
12663         {0xC3, 0, 0},
12664         {0xC4, 0, 0},
12665         {0xC5, 0, 0},
12666         {0xC6, 0, 0},
12667         {0xC7, 0, 0},
12668         {0xC8, 0, 0},
12669         {0xC9, 0, 0},
12670         {0xCA, 0, 0},
12671         {0xCB, 0, 0},
12672         {0xCC, 0, 0},
12673         {0xCD, 0, 0},
12674         {0xCE, 0x5e, 0},
12675         {0xCF, 0xc, 0},
12676         {0xD0, 0xc, 0},
12677         {0xD1, 0xc, 0},
12678         {0xD2, 0, 0},
12679         {0xD3, 0x2b, 0},
12680         {0xD4, 0xc, 0},
12681         {0xD5, 0, 0},
12682         {0xD6, 0x70, 1},
12683         {0xDB, 0x7, 0},
12684         {0xDC, 0, 0},
12685         {0xDD, 0, 0},
12686         {0xDE, 0x88, 1},
12687         {0xDF, 0, 0},
12688         {0xE0, 0x1f, 0},
12689         {0xE1, 0x20, 1},
12690         {0xE2, 0x1, 0},
12691         {0xE3, 0x30, 0},
12692         {0xE4, 0x70, 0},
12693         {0xE5, 0, 0},
12694         {0xE6, 0, 0},
12695         {0xE7, 0x33, 0},
12696         {0xE8, 0xf, 1},
12697         {0xE9, 0x13, 1},
12698         {0xEA, 0, 0},
12699         {0xEB, 0xee, 1},
12700         {0xEE, 0, 0},
12701         {0xEF, 0x7e, 0},
12702         {0xF0, 0x3f, 0},
12703         {0xF1, 0x7f, 0},
12704         {0xF2, 0x78, 0},
12705         {0xF3, 0x58, 1},
12706         {0xF4, 0x88, 0},
12707         {0xF5, 0x8, 0},
12708         {0xF6, 0xf, 0},
12709         {0xF7, 0xbc, 0},
12710         {0xF8, 0x8, 0},
12711         {0xF9, 0x60, 0},
12712         {0xFA, 0x13, 1},
12713         {0xFB, 0x70, 0},
12714         {0xFC, 0, 0},
12715         {0xFD, 0, 0},
12716         {0xFE, 0, 0},
12717         {0xFF, 0x33, 0},
12718         {0x100, 0x13, 1},
12719         {0x101, 0x14, 1},
12720         {0x102, 0xee, 1},
12721         {0x105, 0x3c, 0},
12722         {0x106, 0x1, 1},
12723         {0x107, 0xa, 0},
12724         {0x108, 0x9d, 0},
12725         {0x109, 0xa, 0},
12726         {0x10A, 0, 0},
12727         {0x10B, 0x40, 0},
12728         {0x10C, 0x40, 0},
12729         {0x10D, 0x88, 0},
12730         {0x10E, 0x10, 0},
12731         {0x10F, 0xf0, 0},
12732         {0x110, 0x10, 0},
12733         {0x111, 0xf0, 0},
12734         {0x112, 0, 0},
12735         {0x113, 0, 0},
12736         {0x114, 0x10, 0},
12737         {0x115, 0x55, 0},
12738         {0x116, 0x3f, 1},
12739         {0x117, 0x36, 1},
12740         {0x118, 0, 0},
12741         {0x119, 0, 0},
12742         {0x11A, 0, 0},
12743         {0x11B, 0x87, 0},
12744         {0x11C, 0x11, 0},
12745         {0x11D, 0, 0},
12746         {0x11E, 0x33, 0},
12747         {0x11F, 0x88, 0},
12748         {0x120, 0, 0},
12749         {0x121, 0x87, 0},
12750         {0x122, 0x11, 0},
12751         {0x123, 0, 0},
12752         {0x124, 0x33, 0},
12753         {0x125, 0x88, 0},
12754         {0x126, 0x20, 1},
12755         {0x127, 0x3f, 0},
12756         {0x128, 0x44, 0},
12757         {0x129, 0x8c, 0},
12758         {0x12A, 0x6c, 0},
12759         {0x12B, 0x22, 0},
12760         {0x12C, 0xbe, 0},
12761         {0x12D, 0x55, 0},
12762         {0x12F, 0xc, 0},
12763         {0x130, 0xaa, 0},
12764         {0x131, 0x2, 0},
12765         {0x132, 0, 0},
12766         {0x133, 0x10, 0},
12767         {0x134, 0x1, 0},
12768         {0x135, 0, 0},
12769         {0x136, 0, 0},
12770         {0x137, 0x80, 0},
12771         {0x138, 0x60, 0},
12772         {0x139, 0x44, 0},
12773         {0x13A, 0x55, 0},
12774         {0x13B, 0x1, 0},
12775         {0x13C, 0x55, 0},
12776         {0x13D, 0x1, 0},
12777         {0x13E, 0x5, 0},
12778         {0x13F, 0x55, 0},
12779         {0x140, 0x55, 0},
12780         {0x146, 0, 0},
12781         {0x147, 0, 0},
12782         {0x148, 0, 0},
12783         {0x149, 0, 0},
12784         {0x14A, 0, 0},
12785         {0x14B, 0, 0},
12786         {0x14C, 0, 0},
12787         {0x14D, 0, 0},
12788         {0x14E, 0, 0},
12789         {0x14F, 0, 0},
12790         {0x150, 0, 0},
12791         {0x151, 0, 0},
12792         {0x154, 0xc, 0},
12793         {0x155, 0xc, 0},
12794         {0x156, 0xc, 0},
12795         {0x157, 0, 0},
12796         {0x158, 0x2b, 0},
12797         {0x159, 0x84, 0},
12798         {0x15A, 0x15, 0},
12799         {0x15B, 0xf, 0},
12800         {0x15C, 0, 0},
12801         {0x15D, 0, 0},
12802         {0x15E, 0, 1},
12803         {0x15F, 0, 1},
12804         {0x160, 0, 1},
12805         {0x161, 0, 1},
12806         {0x162, 0, 1},
12807         {0x163, 0, 1},
12808         {0x164, 0, 0},
12809         {0x165, 0, 0},
12810         {0x166, 0, 0},
12811         {0x167, 0, 0},
12812         {0x168, 0, 0},
12813         {0x169, 0, 0},
12814         {0x16A, 0, 1},
12815         {0x16B, 0, 1},
12816         {0x16C, 0, 1},
12817         {0x16D, 0, 0},
12818         {0x170, 0, 0},
12819         {0x171, 0x77, 0},
12820         {0x172, 0x77, 0},
12821         {0x173, 0x77, 0},
12822         {0x174, 0x77, 0},
12823         {0x175, 0, 0},
12824         {0x176, 0x3, 0},
12825         {0x177, 0x37, 0},
12826         {0x178, 0x3, 0},
12827         {0x179, 0, 0},
12828         {0x17A, 0x21, 0},
12829         {0x17B, 0x21, 0},
12830         {0x17C, 0, 0},
12831         {0x17D, 0xaa, 0},
12832         {0x17E, 0, 0},
12833         {0x17F, 0xaa, 0},
12834         {0x180, 0, 0},
12835         {0x190, 0, 0},
12836         {0x191, 0x77, 0},
12837         {0x192, 0x77, 0},
12838         {0x193, 0x77, 0},
12839         {0x194, 0x77, 0},
12840         {0x195, 0, 0},
12841         {0x196, 0x3, 0},
12842         {0x197, 0x37, 0},
12843         {0x198, 0x3, 0},
12844         {0x199, 0, 0},
12845         {0x19A, 0x21, 0},
12846         {0x19B, 0x21, 0},
12847         {0x19C, 0, 0},
12848         {0x19D, 0xaa, 0},
12849         {0x19E, 0, 0},
12850         {0x19F, 0xaa, 0},
12851         {0x1A0, 0, 0},
12852         {0x1A1, 0x2, 0},
12853         {0x1A2, 0xf, 0},
12854         {0x1A3, 0xf, 0},
12855         {0x1A4, 0, 1},
12856         {0x1A5, 0, 1},
12857         {0x1A6, 0, 1},
12858         {0x1A7, 0x2, 0},
12859         {0x1A8, 0xf, 0},
12860         {0x1A9, 0xf, 0},
12861         {0x1AA, 0, 1},
12862         {0x1AB, 0, 1},
12863         {0x1AC, 0, 1},
12864         {0x1AD, 0x84, 0},
12865         {0x1AE, 0x60, 0},
12866         {0x1AF, 0x47, 0},
12867         {0x1B0, 0x47, 0},
12868         {0x1B1, 0, 0},
12869         {0x1B2, 0, 0},
12870         {0x1B3, 0, 0},
12871         {0x1B4, 0, 0},
12872         {0x1B5, 0, 0},
12873         {0x1B6, 0, 0},
12874         {0x1B7, 0x5, 1},
12875         {0x1B8, 0, 0},
12876         {0x1B9, 0, 0},
12877         {0x1BA, 0, 0},
12878         {0x1BB, 0, 0},
12879         {0x1BC, 0, 0},
12880         {0x1BD, 0, 0},
12881         {0x1BE, 0, 0},
12882         {0x1BF, 0, 0},
12883         {0x1C0, 0, 0},
12884         {0x1C1, 0, 0},
12885         {0x1C2, 0xa0, 1},
12886         {0x1C3, 0, 0},
12887         {0x1C4, 0, 0},
12888         {0x1C5, 0, 0},
12889         {0x1C6, 0, 0},
12890         {0x1C7, 0, 0},
12891         {0x1C8, 0, 0},
12892         {0x1C9, 0, 0},
12893         {0x1CA, 0, 0},
12894         {0xFFFF, 0, 0}
12895 };
12896
12897 struct radio_20xx_regs regs_2057_rev8[] = {
12898         {0x00, 0x8, 1},
12899         {0x01, 0x57, 1},
12900         {0x02, 0x20, 1},
12901         {0x03, 0x1f, 0},
12902         {0x04, 0x4, 0},
12903         {0x05, 0x2, 0},
12904         {0x06, 0x1, 0},
12905         {0x07, 0x1, 0},
12906         {0x08, 0x1, 0},
12907         {0x09, 0x69, 0},
12908         {0x0A, 0x66, 0},
12909         {0x0B, 0x6, 0},
12910         {0x0C, 0x18, 0},
12911         {0x0D, 0x3, 0},
12912         {0x0E, 0x20, 0},
12913         {0x0F, 0x20, 0},
12914         {0x10, 0, 0},
12915         {0x11, 0x7c, 0},
12916         {0x12, 0x42, 0},
12917         {0x13, 0xbd, 0},
12918         {0x14, 0x7, 0},
12919         {0x15, 0x87, 0},
12920         {0x16, 0x8, 0},
12921         {0x17, 0x17, 0},
12922         {0x18, 0x7, 0},
12923         {0x19, 0, 0},
12924         {0x1A, 0x2, 0},
12925         {0x1B, 0x13, 0},
12926         {0x1C, 0x3e, 0},
12927         {0x1D, 0x3e, 0},
12928         {0x1E, 0x96, 0},
12929         {0x1F, 0x4, 0},
12930         {0x20, 0, 0},
12931         {0x21, 0, 0},
12932         {0x22, 0x17, 0},
12933         {0x23, 0x6, 0},
12934         {0x24, 0x1, 0},
12935         {0x25, 0x6, 0},
12936         {0x26, 0x4, 0},
12937         {0x27, 0xd, 0},
12938         {0x28, 0xd, 0},
12939         {0x29, 0x30, 0},
12940         {0x2A, 0x32, 0},
12941         {0x2B, 0x8, 0},
12942         {0x2C, 0x1c, 0},
12943         {0x2D, 0x2, 0},
12944         {0x2E, 0x4, 0},
12945         {0x2F, 0x7f, 0},
12946         {0x30, 0x27, 0},
12947         {0x31, 0, 1},
12948         {0x32, 0, 1},
12949         {0x33, 0, 1},
12950         {0x34, 0, 0},
12951         {0x35, 0x20, 0},
12952         {0x36, 0x18, 0},
12953         {0x37, 0x7, 0},
12954         {0x38, 0x66, 0},
12955         {0x39, 0x66, 0},
12956         {0x3A, 0x66, 0},
12957         {0x3B, 0x66, 0},
12958         {0x3C, 0xff, 0},
12959         {0x3D, 0xff, 0},
12960         {0x3E, 0xff, 0},
12961         {0x3F, 0xff, 0},
12962         {0x40, 0x16, 0},
12963         {0x41, 0x7, 0},
12964         {0x42, 0x19, 0},
12965         {0x43, 0x7, 0},
12966         {0x44, 0x6, 0},
12967         {0x45, 0x3, 0},
12968         {0x46, 0x1, 0},
12969         {0x47, 0x7, 0},
12970         {0x48, 0x33, 0},
12971         {0x49, 0x5, 0},
12972         {0x4A, 0x77, 0},
12973         {0x4B, 0x66, 0},
12974         {0x4C, 0x66, 0},
12975         {0x4D, 0, 0},
12976         {0x4E, 0x4, 0},
12977         {0x4F, 0xc, 0},
12978         {0x50, 0, 0},
12979         {0x51, 0x70, 1},
12980         {0x56, 0x7, 0},
12981         {0x57, 0, 0},
12982         {0x58, 0, 0},
12983         {0x59, 0x88, 1},
12984         {0x5A, 0, 0},
12985         {0x5B, 0x1f, 0},
12986         {0x5C, 0x20, 1},
12987         {0x5D, 0x1, 0},
12988         {0x5E, 0x30, 0},
12989         {0x5F, 0x70, 0},
12990         {0x60, 0, 0},
12991         {0x61, 0, 0},
12992         {0x62, 0x33, 1},
12993         {0x63, 0xf, 1},
12994         {0x64, 0xf, 1},
12995         {0x65, 0, 0},
12996         {0x66, 0x11, 0},
12997         {0x69, 0, 0},
12998         {0x6A, 0x7e, 0},
12999         {0x6B, 0x3f, 0},
13000         {0x6C, 0x7f, 0},
13001         {0x6D, 0x78, 0},
13002         {0x6E, 0x58, 1},
13003         {0x6F, 0x88, 0},
13004         {0x70, 0x8, 0},
13005         {0x71, 0xf, 0},
13006         {0x72, 0xbc, 0},
13007         {0x73, 0x8, 0},
13008         {0x74, 0x60, 0},
13009         {0x75, 0x13, 1},
13010         {0x76, 0x70, 0},
13011         {0x77, 0, 0},
13012         {0x78, 0, 0},
13013         {0x79, 0, 0},
13014         {0x7A, 0x33, 0},
13015         {0x7B, 0x13, 1},
13016         {0x7C, 0xf, 1},
13017         {0x7D, 0xee, 1},
13018         {0x80, 0x3c, 0},
13019         {0x81, 0x1, 1},
13020         {0x82, 0xa, 0},
13021         {0x83, 0x9d, 0},
13022         {0x84, 0xa, 0},
13023         {0x85, 0, 0},
13024         {0x86, 0x40, 0},
13025         {0x87, 0x40, 0},
13026         {0x88, 0x88, 0},
13027         {0x89, 0x10, 0},
13028         {0x8A, 0xf0, 0},
13029         {0x8B, 0x10, 0},
13030         {0x8C, 0xf0, 0},
13031         {0x8D, 0, 0},
13032         {0x8E, 0, 0},
13033         {0x8F, 0x10, 0},
13034         {0x90, 0x55, 0},
13035         {0x91, 0x3f, 1},
13036         {0x92, 0x36, 1},
13037         {0x93, 0, 0},
13038         {0x94, 0, 0},
13039         {0x95, 0, 0},
13040         {0x96, 0x87, 0},
13041         {0x97, 0x11, 0},
13042         {0x98, 0, 0},
13043         {0x99, 0x33, 0},
13044         {0x9A, 0x88, 0},
13045         {0x9B, 0, 0},
13046         {0x9C, 0x87, 0},
13047         {0x9D, 0x11, 0},
13048         {0x9E, 0, 0},
13049         {0x9F, 0x33, 0},
13050         {0xA0, 0x88, 0},
13051         {0xA1, 0x20, 1},
13052         {0xA2, 0x3f, 0},
13053         {0xA3, 0x44, 0},
13054         {0xA4, 0x8c, 0},
13055         {0xA5, 0x6c, 0},
13056         {0xA6, 0x22, 0},
13057         {0xA7, 0xbe, 0},
13058         {0xA8, 0x55, 0},
13059         {0xAA, 0xc, 0},
13060         {0xAB, 0xaa, 0},
13061         {0xAC, 0x2, 0},
13062         {0xAD, 0, 0},
13063         {0xAE, 0x10, 0},
13064         {0xAF, 0x1, 0},
13065         {0xB0, 0, 0},
13066         {0xB1, 0, 0},
13067         {0xB2, 0x80, 0},
13068         {0xB3, 0x60, 0},
13069         {0xB4, 0x44, 0},
13070         {0xB5, 0x55, 0},
13071         {0xB6, 0x1, 0},
13072         {0xB7, 0x55, 0},
13073         {0xB8, 0x1, 0},
13074         {0xB9, 0x5, 0},
13075         {0xBA, 0x55, 0},
13076         {0xBB, 0x55, 0},
13077         {0xC1, 0, 0},
13078         {0xC2, 0, 0},
13079         {0xC3, 0, 0},
13080         {0xC4, 0, 0},
13081         {0xC5, 0, 0},
13082         {0xC6, 0, 0},
13083         {0xC7, 0, 0},
13084         {0xC8, 0, 0},
13085         {0xC9, 0x1, 1},
13086         {0xCA, 0, 0},
13087         {0xCB, 0, 0},
13088         {0xCC, 0, 0},
13089         {0xCD, 0, 0},
13090         {0xCE, 0x5e, 0},
13091         {0xCF, 0xc, 0},
13092         {0xD0, 0xc, 0},
13093         {0xD1, 0xc, 0},
13094         {0xD2, 0, 0},
13095         {0xD3, 0x2b, 0},
13096         {0xD4, 0xc, 0},
13097         {0xD5, 0, 0},
13098         {0xD6, 0x70, 1},
13099         {0xDB, 0x7, 0},
13100         {0xDC, 0, 0},
13101         {0xDD, 0, 0},
13102         {0xDE, 0x88, 1},
13103         {0xDF, 0, 0},
13104         {0xE0, 0x1f, 0},
13105         {0xE1, 0x20, 1},
13106         {0xE2, 0x1, 0},
13107         {0xE3, 0x30, 0},
13108         {0xE4, 0x70, 0},
13109         {0xE5, 0, 0},
13110         {0xE6, 0, 0},
13111         {0xE7, 0x33, 0},
13112         {0xE8, 0xf, 1},
13113         {0xE9, 0xf, 1},
13114         {0xEA, 0, 0},
13115         {0xEB, 0x11, 0},
13116         {0xEE, 0, 0},
13117         {0xEF, 0x7e, 0},
13118         {0xF0, 0x3f, 0},
13119         {0xF1, 0x7f, 0},
13120         {0xF2, 0x78, 0},
13121         {0xF3, 0x58, 1},
13122         {0xF4, 0x88, 0},
13123         {0xF5, 0x8, 0},
13124         {0xF6, 0xf, 0},
13125         {0xF7, 0xbc, 0},
13126         {0xF8, 0x8, 0},
13127         {0xF9, 0x60, 0},
13128         {0xFA, 0x13, 1},
13129         {0xFB, 0x70, 0},
13130         {0xFC, 0, 0},
13131         {0xFD, 0, 0},
13132         {0xFE, 0, 0},
13133         {0xFF, 0x33, 0},
13134         {0x100, 0x13, 1},
13135         {0x101, 0xf, 1},
13136         {0x102, 0xee, 1},
13137         {0x105, 0x3c, 0},
13138         {0x106, 0x1, 1},
13139         {0x107, 0xa, 0},
13140         {0x108, 0x9d, 0},
13141         {0x109, 0xa, 0},
13142         {0x10A, 0, 0},
13143         {0x10B, 0x40, 0},
13144         {0x10C, 0x40, 0},
13145         {0x10D, 0x88, 0},
13146         {0x10E, 0x10, 0},
13147         {0x10F, 0xf0, 0},
13148         {0x110, 0x10, 0},
13149         {0x111, 0xf0, 0},
13150         {0x112, 0, 0},
13151         {0x113, 0, 0},
13152         {0x114, 0x10, 0},
13153         {0x115, 0x55, 0},
13154         {0x116, 0x3f, 1},
13155         {0x117, 0x36, 1},
13156         {0x118, 0, 0},
13157         {0x119, 0, 0},
13158         {0x11A, 0, 0},
13159         {0x11B, 0x87, 0},
13160         {0x11C, 0x11, 0},
13161         {0x11D, 0, 0},
13162         {0x11E, 0x33, 0},
13163         {0x11F, 0x88, 0},
13164         {0x120, 0, 0},
13165         {0x121, 0x87, 0},
13166         {0x122, 0x11, 0},
13167         {0x123, 0, 0},
13168         {0x124, 0x33, 0},
13169         {0x125, 0x88, 0},
13170         {0x126, 0x20, 1},
13171         {0x127, 0x3f, 0},
13172         {0x128, 0x44, 0},
13173         {0x129, 0x8c, 0},
13174         {0x12A, 0x6c, 0},
13175         {0x12B, 0x22, 0},
13176         {0x12C, 0xbe, 0},
13177         {0x12D, 0x55, 0},
13178         {0x12F, 0xc, 0},
13179         {0x130, 0xaa, 0},
13180         {0x131, 0x2, 0},
13181         {0x132, 0, 0},
13182         {0x133, 0x10, 0},
13183         {0x134, 0x1, 0},
13184         {0x135, 0, 0},
13185         {0x136, 0, 0},
13186         {0x137, 0x80, 0},
13187         {0x138, 0x60, 0},
13188         {0x139, 0x44, 0},
13189         {0x13A, 0x55, 0},
13190         {0x13B, 0x1, 0},
13191         {0x13C, 0x55, 0},
13192         {0x13D, 0x1, 0},
13193         {0x13E, 0x5, 0},
13194         {0x13F, 0x55, 0},
13195         {0x140, 0x55, 0},
13196         {0x146, 0, 0},
13197         {0x147, 0, 0},
13198         {0x148, 0, 0},
13199         {0x149, 0, 0},
13200         {0x14A, 0, 0},
13201         {0x14B, 0, 0},
13202         {0x14C, 0, 0},
13203         {0x14D, 0, 0},
13204         {0x14E, 0x1, 1},
13205         {0x14F, 0, 0},
13206         {0x150, 0, 0},
13207         {0x151, 0, 0},
13208         {0x154, 0xc, 0},
13209         {0x155, 0xc, 0},
13210         {0x156, 0xc, 0},
13211         {0x157, 0, 0},
13212         {0x158, 0x2b, 0},
13213         {0x159, 0x84, 0},
13214         {0x15A, 0x15, 0},
13215         {0x15B, 0xf, 0},
13216         {0x15C, 0, 0},
13217         {0x15D, 0, 0},
13218         {0x15E, 0, 1},
13219         {0x15F, 0, 1},
13220         {0x160, 0, 1},
13221         {0x161, 0, 1},
13222         {0x162, 0, 1},
13223         {0x163, 0, 1},
13224         {0x164, 0, 0},
13225         {0x165, 0, 0},
13226         {0x166, 0, 0},
13227         {0x167, 0, 0},
13228         {0x168, 0, 0},
13229         {0x169, 0, 0},
13230         {0x16A, 0, 1},
13231         {0x16B, 0, 1},
13232         {0x16C, 0, 1},
13233         {0x16D, 0, 0},
13234         {0x170, 0, 0},
13235         {0x171, 0x77, 0},
13236         {0x172, 0x77, 0},
13237         {0x173, 0x77, 0},
13238         {0x174, 0x77, 0},
13239         {0x175, 0, 0},
13240         {0x176, 0x3, 0},
13241         {0x177, 0x37, 0},
13242         {0x178, 0x3, 0},
13243         {0x179, 0, 0},
13244         {0x17A, 0x21, 0},
13245         {0x17B, 0x21, 0},
13246         {0x17C, 0, 0},
13247         {0x17D, 0xaa, 0},
13248         {0x17E, 0, 0},
13249         {0x17F, 0xaa, 0},
13250         {0x180, 0, 0},
13251         {0x190, 0, 0},
13252         {0x191, 0x77, 0},
13253         {0x192, 0x77, 0},
13254         {0x193, 0x77, 0},
13255         {0x194, 0x77, 0},
13256         {0x195, 0, 0},
13257         {0x196, 0x3, 0},
13258         {0x197, 0x37, 0},
13259         {0x198, 0x3, 0},
13260         {0x199, 0, 0},
13261         {0x19A, 0x21, 0},
13262         {0x19B, 0x21, 0},
13263         {0x19C, 0, 0},
13264         {0x19D, 0xaa, 0},
13265         {0x19E, 0, 0},
13266         {0x19F, 0xaa, 0},
13267         {0x1A0, 0, 0},
13268         {0x1A1, 0x2, 0},
13269         {0x1A2, 0xf, 0},
13270         {0x1A3, 0xf, 0},
13271         {0x1A4, 0, 1},
13272         {0x1A5, 0, 1},
13273         {0x1A6, 0, 1},
13274         {0x1A7, 0x2, 0},
13275         {0x1A8, 0xf, 0},
13276         {0x1A9, 0xf, 0},
13277         {0x1AA, 0, 1},
13278         {0x1AB, 0, 1},
13279         {0x1AC, 0, 1},
13280         {0x1AD, 0x84, 0},
13281         {0x1AE, 0x60, 0},
13282         {0x1AF, 0x47, 0},
13283         {0x1B0, 0x47, 0},
13284         {0x1B1, 0, 0},
13285         {0x1B2, 0, 0},
13286         {0x1B3, 0, 0},
13287         {0x1B4, 0, 0},
13288         {0x1B5, 0, 0},
13289         {0x1B6, 0, 0},
13290         {0x1B7, 0x5, 1},
13291         {0x1B8, 0, 0},
13292         {0x1B9, 0, 0},
13293         {0x1BA, 0, 0},
13294         {0x1BB, 0, 0},
13295         {0x1BC, 0, 0},
13296         {0x1BD, 0, 0},
13297         {0x1BE, 0, 0},
13298         {0x1BF, 0, 0},
13299         {0x1C0, 0, 0},
13300         {0x1C1, 0, 0},
13301         {0x1C2, 0xa0, 1},
13302         {0x1C3, 0, 0},
13303         {0x1C4, 0, 0},
13304         {0x1C5, 0, 0},
13305         {0x1C6, 0, 0},
13306         {0x1C7, 0, 0},
13307         {0x1C8, 0, 0},
13308         {0x1C9, 0, 0},
13309         {0x1CA, 0, 0},
13310         {0xFFFF, 0, 0}
13311 };
13312
13313 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13314
13315 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13316 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13317
13318 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13319         {
13320                 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13321                 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13322                 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13323                 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13324                 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13325                 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13326                 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13327                 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13328                 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13329         },
13330         {
13331                 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13332                 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13333                 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13334                 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13335                 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13336                 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13337                 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13338                 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13339                 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13340         }
13341 };
13342
13343 static const u32 nphy_tpc_txgain[] = {
13344         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13345         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13346         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13347         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13348         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13349         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13350         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13351         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13352         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13353         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13354         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13355         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13356         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13357         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13358         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13359         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13360         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13361         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13362         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13363         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13364         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13365         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13366         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13367         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13368         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13369         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13370         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13371         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13372         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13373         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13374         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13375         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13376 };
13377
13378 static const u16 nphy_tpc_loscale[] = {
13379         256, 256, 271, 271, 287, 256, 256, 271,
13380         271, 287, 287, 304, 304, 256, 256, 271,
13381         271, 287, 287, 304, 304, 322, 322, 341,
13382         341, 362, 362, 383, 383, 256, 256, 271,
13383         271, 287, 287, 304, 304, 322, 322, 256,
13384         256, 271, 271, 287, 287, 304, 304, 322,
13385         322, 341, 341, 362, 362, 256, 256, 271,
13386         271, 287, 287, 304, 304, 322, 322, 256,
13387         256, 271, 271, 287, 287, 304, 304, 322,
13388         322, 341, 341, 362, 362, 256, 256, 271,
13389         271, 287, 287, 304, 304, 322, 322, 341,
13390         341, 362, 362, 383, 383, 406, 406, 430,
13391         430, 455, 455, 482, 482, 511, 511, 541,
13392         541, 573, 573, 607, 607, 643, 643, 681,
13393         681, 722, 722, 764, 764, 810, 810, 858,
13394         858, 908, 908, 962, 962, 1019, 1019, 256
13395 };
13396
13397 static u32 nphy_tpc_txgain_ipa[] = {
13398         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13399         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13400         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13401         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13402         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13403         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13404         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13405         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13406         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13407         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13408         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13409         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13410         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13411         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13412         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13413         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13414         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13415         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13416         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13417         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13418         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13419         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13420         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13421         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13422         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13423         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13424         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13425         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13426         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13427         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13428         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13429         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13430 };
13431
13432 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13433         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13434         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13435         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13436         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13437         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13438         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13439         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13440         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13441         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13442         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13443         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13444         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13445         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13446         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13447         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13448         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13449         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13450         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13451         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13452         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13453         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13454         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13455         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13456         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13457         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13458         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13459         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13460         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13461         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13462         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13463         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13464         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13465 };
13466
13467 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13468         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13469         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13470         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13471         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13472         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13473         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13474         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13475         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13476         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13477         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13478         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13479         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13480         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13481         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13482         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13483         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13484         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13485         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13486         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13487         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13488         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13489         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13490         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13491         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13492         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13493         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13494         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13495         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13496         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13497         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13498         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13499         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13500 };
13501
13502 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13503         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13504         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13505         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13506         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13507         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13508         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13509         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13510         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13511         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13512         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13513         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13514         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13515         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13516         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13517         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13518         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13519         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13520         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13521         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13522         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13523         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13524         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13525         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13526         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13527         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13528         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13529         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13530         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13531         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13532         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13533         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13534         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13535 };
13536
13537 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13538         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13539         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13540         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13541         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13542         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13543         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13544         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13545         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13546         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13547         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13548         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13549         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13550         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13551         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13552         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13553         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13554         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13555         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13556         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13557         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13558         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13559         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13560         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13561         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13562         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13563         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13564         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13565         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13566         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13567         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13568         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13569         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13570 };
13571
13572 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13573         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13574         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13575         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13576         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13577         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13578         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13579         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13580         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13581         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13582         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13583         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13584         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13585         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13586         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13587         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13588         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13589         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13590         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13591         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13592         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13593         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13594         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13595         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13596         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13597         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599         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 };
13606
13607 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13608         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13609         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13610         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13611         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13612         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13613         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13614         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13615         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13616         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13617         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13618         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13619         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13620         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13621         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13622         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13623         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13624         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13625         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13626         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13627         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13628         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13629         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13630         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13631         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13632         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634         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 };
13641
13642 static u32 nphy_tpc_txgain_ipa_5g[] = {
13643         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13644         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13645         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13646         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13647         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13648         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13649         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13650         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13651         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13652         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13653         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13654         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13655         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13656         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13657         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13658         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13659         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13660         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13661         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13662         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13663         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13664         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13665         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13666         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13667         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13668         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13669         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13670         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13671         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13672         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13673         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13674         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13675 };
13676
13677 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13678         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13679         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13680         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13681         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13682         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13683         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13684         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13685         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13686         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13687         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13688         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13689         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13690         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13691         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13692         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13693         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13694         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13695         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13696         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13697         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13698         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13699         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13700         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13701         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13702         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13703         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13704         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13705         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13706         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13707         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13708         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13709         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13710 };
13711
13712 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13713         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13714         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13715         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13716         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13717         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13718         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13719         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13720         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13721         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13722         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13723         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13724         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13725         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13726         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13727         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13728         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13729         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13730         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13731         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13732         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13733         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13734         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13735         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13736         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13737         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13738         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13739         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13740         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13741         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13742         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13743         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13744         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13745 };
13746
13747 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13748         -114, -108, -98, -91, -84, -78, -70, -62,
13749         -54, -46, -39, -31, -23, -15, -8, 0
13750 };
13751
13752 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13753         -100, -95, -89, -83, -77, -70, -63, -56,
13754         -48, -41, -33, -25, -19, -12, -6, 0
13755 };
13756
13757 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13758         -159, -113, -86, -72, -62, -54, -48, -43,
13759         -39, -35, -31, -28, -25, -23, -20, -18,
13760         -17, -15, -13, -11, -10, -8, -7, -6,
13761         -5, -4, -3, -3, -2, -1, -1, 0
13762 };
13763
13764 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13765         -109, -109, -82, -68, -58, -50, -44, -39,
13766         -35, -31, -28, -26, -23, -21, -19, -17,
13767         -16, -14, -13, -11, -10, -9, -8, -7,
13768         -5, -5, -4, -3, -2, -1, -1, 0
13769 };
13770
13771 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13772         -122, -122, -95, -80, -69, -61, -54, -49,
13773         -43, -39, -35, -32, -28, -26, -23, -21,
13774         -18, -16, -15, -13, -11, -10, -8, -7,
13775         -6, -5, -4, -3, -2, -1, -1, 0
13776 };
13777
13778 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13779         -107, -101, -92, -85, -78, -71, -62, -55,
13780         -47, -39, -32, -24, -19, -12, -6, 0
13781 };
13782
13783 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13784         -110, -104, -95, -88, -81, -74, -66, -58,
13785         -50, -44, -36, -28, -23, -15, -8, 0
13786 };
13787
13788 static u8 pad_gain_codes_used_2057rev5[] = {
13789         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13790         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13791 };
13792
13793 static u8 pad_gain_codes_used_2057rev7[] = {
13794         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13795         5, 4, 3, 2, 1
13796 };
13797
13798 static u8 pad_all_gain_codes_2057[] = {
13799         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13800         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13801         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13802         1, 0
13803 };
13804
13805 static u8 pga_all_gain_codes_2057[] = {
13806         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13807 };
13808
13809 static u32 nphy_papd_scaltbl[] = {
13810         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13811         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13812         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13813         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13814         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13815         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13816         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13817         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13818         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13819         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13820         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13821         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13822         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13823         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13824         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13825         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13826 };
13827
13828 static u32 nphy_tpc_txgain_rev3[] = {
13829         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13830         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13831         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13832         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13833         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13834         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13835         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13836         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13837         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13838         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13839         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13840         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13841         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13842         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13843         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13844         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13845         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13846         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13847         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13848         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13849         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13850         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13851         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13852         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13853         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13854         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13855         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13856         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13857         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13858         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13859         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13860         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13861 };
13862
13863 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13864         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13865         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13866         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13867         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13868         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13869         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13870         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13871         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13872         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13873         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13874         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13875         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13876         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13877         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13878         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13879         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13880         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13881         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13882         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13883         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13884         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13885         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13886         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13887         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13888         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13889         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13890         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13891         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13892         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13893         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13894         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13895         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13896 };
13897
13898 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13899         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13900         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13901         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13902         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13903         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13904         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13905         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13906         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13907         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13908         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13909         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13910         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13911         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13912         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13913         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13914         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13915         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13916         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13917         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13918         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13919         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13920         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13921         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13922         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13923         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13924         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925         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 };
13932
13933 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13934         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13935         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13936         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13937         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13938         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13939         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13940         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13941         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13942         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13943         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13944         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13945         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13946         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13947         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13948         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13949         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13950         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13951         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13952         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13953         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13954         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13955         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13956         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13957         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13958         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13959         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13960         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13961         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13962         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13963         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13964         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13965         0x10090001, 0x10090001, 0x10090001, 0x10090001
13966 };
13967
13968 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13969         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13970         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13971         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13972         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13973         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13974         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13975         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13976         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13977         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13978         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13979         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13980         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13981         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13982         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13983         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13984         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13985         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13986         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13987         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13988         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13989         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13990         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13991         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13992         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13993         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13994         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
13995         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
13996         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
13997         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
13998         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
13999         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14000         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14001 };
14002
14003 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14004         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14005         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14006         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14007         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14008         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14009         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14010         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14011         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14012         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14013         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14014         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14015         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14016         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14017         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14018         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14019         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14020         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14021         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14022         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14023         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14024         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14025         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14026         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14027         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14028         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14029         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14030         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14031         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14032         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14033         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14034         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14035         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14036 };
14037
14038 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14039         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14040         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14041         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14042         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14043         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14044         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14045         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14046         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14047         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14048         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14049         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14050         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14051         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14052         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14053         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14054         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14055         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14056         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14057         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14058         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14059         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14060         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14061         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14062         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14063         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14064         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14065         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14066         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14067         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14068         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14069         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14070         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14071 };
14072
14073 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14074         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14075         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14076         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14077         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14078         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14079         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14080         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14081         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14082         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14083         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14084         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14085         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14086         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14087         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14088         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14089         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14090         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14091         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14092         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14093         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14094         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14095         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14096         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14097         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14098         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14099         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14100         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14101         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14102         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14103         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14104         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14105         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14106 };
14107
14108 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14109 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14110 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14111         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14112 };
14113 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14114         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14115 };
14116
14117 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14118 {
14119         struct brcms_phy *pi = (struct brcms_phy *) pih;
14120         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14121
14122         if (NREV_GE(pi->pubpi.phy_rev, 16))
14123                 return true;
14124
14125         phybist0 = read_phy_reg(pi, 0x0e);
14126         phybist1 = read_phy_reg(pi, 0x0f);
14127         phybist2 = read_phy_reg(pi, 0xea);
14128         phybist3 = read_phy_reg(pi, 0xeb);
14129         phybist4 = read_phy_reg(pi, 0x156);
14130
14131         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14132             (phybist3 == 0) && (phybist4 == 0))
14133                 return true;
14134
14135         return false;
14136 }
14137
14138 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14139 {
14140         u16 addr, val;
14141
14142         val = 0x1e1f;
14143         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14144              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14145                 write_phy_reg(pi, addr, val);
14146                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14147                         val = 0x3e3f;
14148                 else
14149                         val -= 0x0202;
14150         }
14151
14152         write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14153 }
14154
14155 void
14156 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14157                          u32 width, const void *data)
14158 {
14159         struct phytbl_info tbl;
14160
14161         tbl.tbl_id = id;
14162         tbl.tbl_len = len;
14163         tbl.tbl_offset = offset;
14164         tbl.tbl_width = width;
14165         tbl.tbl_ptr = data;
14166         wlc_phy_write_table_nphy(pi, &tbl);
14167 }
14168
14169 void
14170 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14171                         u32 width, void *data)
14172 {
14173         struct phytbl_info tbl;
14174
14175         tbl.tbl_id = id;
14176         tbl.tbl_len = len;
14177         tbl.tbl_offset = offset;
14178         tbl.tbl_width = width;
14179         tbl.tbl_ptr = data;
14180         wlc_phy_read_table_nphy(pi, &tbl);
14181 }
14182
14183 static void
14184 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14185 {
14186         uint idx;
14187
14188         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14189                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14190                         wlc_phy_write_table_nphy(pi,
14191                                                  &mimophytbl_info_rev16[idx]);
14192         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14193                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14194                         wlc_phy_write_table_nphy(pi,
14195                                                  &mimophytbl_info_rev7[idx]);
14196         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14197                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14198                         wlc_phy_write_table_nphy(pi,
14199                                                  &mimophytbl_info_rev3[idx]);
14200         } else {
14201                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14202                         wlc_phy_write_table_nphy(pi,
14203                                                  &mimophytbl_info_rev0[idx]);
14204         }
14205 }
14206
14207 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14208 {
14209         uint idx = 0;
14210         u8 antswctrllut;
14211
14212         if (pi->phy_init_por)
14213                 wlc_phy_static_table_download_nphy(pi);
14214
14215         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14216
14217                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14218                                pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14219                                antswctrllut;
14220
14221                 switch (antswctrllut) {
14222                 case 0:
14223
14224                         break;
14225
14226                 case 1:
14227
14228                         if (pi->aa2g == 7)
14229                                 wlc_phy_table_write_nphy(
14230                                         pi,
14231                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14232                                         2, 0x21, 8,
14233                                         &ant_sw_ctrl_tbl_rev8_2o3[0]);
14234                         else
14235                                 wlc_phy_table_write_nphy(
14236                                         pi,
14237                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14238                                         2, 0x21, 8,
14239                                         &ant_sw_ctrl_tbl_rev8
14240                                         [0]);
14241
14242                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14243                                                  2, 0x25, 8,
14244                                                  &ant_sw_ctrl_tbl_rev8[2]);
14245                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14246                                                  2, 0x29, 8,
14247                                                  &ant_sw_ctrl_tbl_rev8[4]);
14248                         break;
14249
14250                 case 2:
14251
14252                         wlc_phy_table_write_nphy(
14253                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14254                                 2, 0x1, 8,
14255                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14256                         wlc_phy_table_write_nphy(
14257                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14258                                 2, 0x5, 8,
14259                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14260                         wlc_phy_table_write_nphy(
14261                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14262                                 2, 0x9, 8,
14263                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14264
14265                         wlc_phy_table_write_nphy(
14266                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14267                                 2, 0x21, 8,
14268                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14269                         wlc_phy_table_write_nphy(
14270                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14271                                 2, 0x25, 8,
14272                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14273                         wlc_phy_table_write_nphy(
14274                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14275                                 2, 0x29, 8,
14276                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14277                         break;
14278
14279                 default:
14280                         break;
14281                 }
14282
14283         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14284                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14285
14286                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14287                                 antswctrllut =
14288                                         CHSPEC_IS2G(pi->radio_chanspec) ?
14289                                         pi->srom_fem2g.antswctrllut :
14290                                         pi->srom_fem5g.antswctrllut;
14291                                 switch (antswctrllut) {
14292                                 case 0:
14293                                         wlc_phy_write_table_nphy(
14294                                                 pi,
14295                                                 &mimophytbl_info_rev3_volatile
14296                                                 [idx]);
14297                                         break;
14298                                 case 1:
14299                                         wlc_phy_write_table_nphy(
14300                                                 pi,
14301                                                 &mimophytbl_info_rev3_volatile1
14302                                                 [idx]);
14303                                         break;
14304                                 case 2:
14305                                         wlc_phy_write_table_nphy(
14306                                                 pi,
14307                                                 &mimophytbl_info_rev3_volatile2
14308                                                 [idx]);
14309                                         break;
14310                                 case 3:
14311                                         wlc_phy_write_table_nphy(
14312                                                 pi,
14313                                                 &mimophytbl_info_rev3_volatile3
14314                                                 [idx]);
14315                                         break;
14316                                 default:
14317                                         break;
14318                                 }
14319                         } else {
14320                                 wlc_phy_write_table_nphy(
14321                                         pi,
14322                                         &mimophytbl_info_rev3_volatile[idx]);
14323                         }
14324                 }
14325         } else {
14326                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14327                         wlc_phy_write_table_nphy(pi,
14328                                                  &mimophytbl_info_rev0_volatile
14329                                                  [idx]);
14330         }
14331 }
14332
14333 static void
14334 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14335 {
14336         write_phy_reg(pi, 0x77, holdoff);
14337         write_phy_reg(pi, 0xb4, delay);
14338 }
14339
14340 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14341 {
14342         u16 holdoff, delay;
14343
14344         if (rifs) {
14345
14346                 holdoff = 0x10;
14347                 delay = 0x258;
14348         } else {
14349
14350                 holdoff = 0x15;
14351                 delay = 0x320;
14352         }
14353
14354         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14355
14356         if (pi && pi->sh && (pi->sh->_rifs_phy != rifs))
14357                 pi->sh->_rifs_phy = rifs;
14358 }
14359
14360 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14361 {
14362
14363         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14364                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14365                 pi->phy_5g_pwrgain = true;
14366                 return;
14367         }
14368
14369         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14370         pi->phy_5g_pwrgain = false;
14371
14372         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14373             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14374                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14375         else if ((pi->sh->sromrev >= 4)
14376                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14377                 pi->phy_5g_pwrgain = true;
14378 }
14379
14380 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14381 {
14382         u16 bw40po, cddpo, stbcpo, bwduppo;
14383         uint band_num;
14384
14385         if (pi->sh->sromrev >= 9)
14386                 return;
14387
14388         bw40po = (u16) PHY_GETINTVAR(pi, "bw40po");
14389         pi->bw402gpo = bw40po & 0xf;
14390         pi->bw405gpo = (bw40po & 0xf0) >> 4;
14391         pi->bw405glpo = (bw40po & 0xf00) >> 8;
14392         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14393
14394         cddpo = (u16) PHY_GETINTVAR(pi, "cddpo");
14395         pi->cdd2gpo = cddpo & 0xf;
14396         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14397         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14398         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14399
14400         stbcpo = (u16) PHY_GETINTVAR(pi, "stbcpo");
14401         pi->stbc2gpo = stbcpo & 0xf;
14402         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14403         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14404         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14405
14406         bwduppo = (u16) PHY_GETINTVAR(pi, "bwduppo");
14407         pi->bwdup2gpo = bwduppo & 0xf;
14408         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14409         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14410         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14411
14412         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14413              band_num++) {
14414                 switch (band_num) {
14415                 case 0:
14416
14417                         pi->nphy_txpid2g[PHY_CORE_0] =
14418                                 (u8) PHY_GETINTVAR(pi, "txpid2ga0");
14419                         pi->nphy_txpid2g[PHY_CORE_1] =
14420                                 (u8) PHY_GETINTVAR(pi, "txpid2ga1");
14421                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14422                                 (s8) PHY_GETINTVAR(pi, "maxp2ga0");
14423                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14424                                 (s8) PHY_GETINTVAR(pi, "maxp2ga1");
14425                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14426                                 (s16) PHY_GETINTVAR(pi, "pa2gw0a0");
14427                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14428                                 (s16) PHY_GETINTVAR(pi, "pa2gw0a1");
14429                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14430                                 (s16) PHY_GETINTVAR(pi, "pa2gw1a0");
14431                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14432                                 (s16) PHY_GETINTVAR(pi, "pa2gw1a1");
14433                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14434                                 (s16) PHY_GETINTVAR(pi, "pa2gw2a0");
14435                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14436                                 (s16) PHY_GETINTVAR(pi, "pa2gw2a1");
14437                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14438                                 (s8) PHY_GETINTVAR(pi, "itt2ga0");
14439                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14440                                 (s8) PHY_GETINTVAR(pi, "itt2ga1");
14441
14442                         pi->cck2gpo = (u16) PHY_GETINTVAR(pi, "cck2gpo");
14443
14444                         pi->ofdm2gpo = (u32) PHY_GETINTVAR(pi, "ofdm2gpo");
14445
14446                         pi->mcs2gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs2gpo0");
14447                         pi->mcs2gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs2gpo1");
14448                         pi->mcs2gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs2gpo2");
14449                         pi->mcs2gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs2gpo3");
14450                         pi->mcs2gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs2gpo4");
14451                         pi->mcs2gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs2gpo5");
14452                         pi->mcs2gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs2gpo6");
14453                         pi->mcs2gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs2gpo7");
14454                         break;
14455                 case 1:
14456
14457                         pi->nphy_txpid5g[PHY_CORE_0] =
14458                                 (u8) PHY_GETINTVAR(pi, "txpid5ga0");
14459                         pi->nphy_txpid5g[PHY_CORE_1] =
14460                                 (u8) PHY_GETINTVAR(pi, "txpid5ga1");
14461                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14462                                 (s8) PHY_GETINTVAR(pi, "maxp5ga0");
14463                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14464                                 (s8) PHY_GETINTVAR(pi, "maxp5ga1");
14465                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14466                                 (s16) PHY_GETINTVAR(pi, "pa5gw0a0");
14467                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14468                                 (s16) PHY_GETINTVAR(pi, "pa5gw0a1");
14469                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14470                                 (s16) PHY_GETINTVAR(pi, "pa5gw1a0");
14471                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14472                                 (s16) PHY_GETINTVAR(pi, "pa5gw1a1");
14473                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14474                                 (s16) PHY_GETINTVAR(pi, "pa5gw2a0");
14475                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14476                                 (s16) PHY_GETINTVAR(pi, "pa5gw2a1");
14477                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14478                                 (s8) PHY_GETINTVAR(pi, "itt5ga0");
14479                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14480                                 (s8) PHY_GETINTVAR(pi, "itt5ga1");
14481
14482                         pi->ofdm5gpo = (u32) PHY_GETINTVAR(pi, "ofdm5gpo");
14483
14484                         pi->mcs5gpo[0] = (u16) PHY_GETINTVAR(pi, "mcs5gpo0");
14485                         pi->mcs5gpo[1] = (u16) PHY_GETINTVAR(pi, "mcs5gpo1");
14486                         pi->mcs5gpo[2] = (u16) PHY_GETINTVAR(pi, "mcs5gpo2");
14487                         pi->mcs5gpo[3] = (u16) PHY_GETINTVAR(pi, "mcs5gpo3");
14488                         pi->mcs5gpo[4] = (u16) PHY_GETINTVAR(pi, "mcs5gpo4");
14489                         pi->mcs5gpo[5] = (u16) PHY_GETINTVAR(pi, "mcs5gpo5");
14490                         pi->mcs5gpo[6] = (u16) PHY_GETINTVAR(pi, "mcs5gpo6");
14491                         pi->mcs5gpo[7] = (u16) PHY_GETINTVAR(pi, "mcs5gpo7");
14492                         break;
14493                 case 2:
14494
14495                         pi->nphy_txpid5gl[0] =
14496                                 (u8) PHY_GETINTVAR(pi, "txpid5gla0");
14497                         pi->nphy_txpid5gl[1] =
14498                                 (u8) PHY_GETINTVAR(pi, "txpid5gla1");
14499                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14500                                 (s8) PHY_GETINTVAR(pi, "maxp5gla0");
14501                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14502                                 (s8) PHY_GETINTVAR(pi, "maxp5gla1");
14503                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14504                                 (s16) PHY_GETINTVAR(pi, "pa5glw0a0");
14505                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14506                                 (s16) PHY_GETINTVAR(pi, "pa5glw0a1");
14507                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14508                                 (s16) PHY_GETINTVAR(pi, "pa5glw1a0");
14509                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14510                                 (s16) PHY_GETINTVAR(pi, "pa5glw1a1");
14511                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14512                                 (s16) PHY_GETINTVAR(pi, "pa5glw2a0");
14513                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14514                                 (s16) PHY_GETINTVAR(pi, "pa5glw2a1");
14515                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14516                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14517
14518                         pi->ofdm5glpo = (u32) PHY_GETINTVAR(pi, "ofdm5glpo");
14519
14520                         pi->mcs5glpo[0] =
14521                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo0");
14522                         pi->mcs5glpo[1] =
14523                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo1");
14524                         pi->mcs5glpo[2] =
14525                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo2");
14526                         pi->mcs5glpo[3] =
14527                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo3");
14528                         pi->mcs5glpo[4] =
14529                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo4");
14530                         pi->mcs5glpo[5] =
14531                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo5");
14532                         pi->mcs5glpo[6] =
14533                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo6");
14534                         pi->mcs5glpo[7] =
14535                                 (u16) PHY_GETINTVAR(pi, "mcs5glpo7");
14536                         break;
14537                 case 3:
14538
14539                         pi->nphy_txpid5gh[0] =
14540                                 (u8) PHY_GETINTVAR(pi, "txpid5gha0");
14541                         pi->nphy_txpid5gh[1] =
14542                                 (u8) PHY_GETINTVAR(pi, "txpid5gha1");
14543                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14544                                 (s8) PHY_GETINTVAR(pi, "maxp5gha0");
14545                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14546                                 (s8) PHY_GETINTVAR(pi, "maxp5gha1");
14547                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14548                                 (s16) PHY_GETINTVAR(pi, "pa5ghw0a0");
14549                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14550                                 (s16) PHY_GETINTVAR(pi, "pa5ghw0a1");
14551                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14552                                 (s16) PHY_GETINTVAR(pi, "pa5ghw1a0");
14553                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14554                                 (s16) PHY_GETINTVAR(pi, "pa5ghw1a1");
14555                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14556                                 (s16) PHY_GETINTVAR(pi, "pa5ghw2a0");
14557                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14558                                 (s16) PHY_GETINTVAR(pi, "pa5ghw2a1");
14559                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14560                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14561
14562                         pi->ofdm5ghpo = (u32) PHY_GETINTVAR(pi, "ofdm5ghpo");
14563
14564                         pi->mcs5ghpo[0] =
14565                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo0");
14566                         pi->mcs5ghpo[1] =
14567                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo1");
14568                         pi->mcs5ghpo[2] =
14569                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo2");
14570                         pi->mcs5ghpo[3] =
14571                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo3");
14572                         pi->mcs5ghpo[4] =
14573                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo4");
14574                         pi->mcs5ghpo[5] =
14575                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo5");
14576                         pi->mcs5ghpo[6] =
14577                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo6");
14578                         pi->mcs5ghpo[7] =
14579                                 (u16) PHY_GETINTVAR(pi, "mcs5ghpo7");
14580                         break;
14581                 }
14582         }
14583
14584         wlc_phy_txpwr_apply_nphy(pi);
14585 }
14586
14587 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14588 {
14589
14590         pi->antswitch = (u8) PHY_GETINTVAR(pi, "antswitch");
14591         pi->aa2g = (u8) PHY_GETINTVAR(pi, "aa2g");
14592         pi->aa5g = (u8) PHY_GETINTVAR(pi, "aa5g");
14593
14594         pi->srom_fem2g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos2g");
14595         pi->srom_fem2g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain2g");
14596         pi->srom_fem2g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange2g");
14597         pi->srom_fem2g.triso = (u8) PHY_GETINTVAR(pi, "triso2g");
14598         pi->srom_fem2g.antswctrllut = (u8) PHY_GETINTVAR(pi, "antswctl2g");
14599
14600         pi->srom_fem5g.tssipos = (u8) PHY_GETINTVAR(pi, "tssipos5g");
14601         pi->srom_fem5g.extpagain = (u8) PHY_GETINTVAR(pi, "extpagain5g");
14602         pi->srom_fem5g.pdetrange = (u8) PHY_GETINTVAR(pi, "pdetrange5g");
14603         pi->srom_fem5g.triso = (u8) PHY_GETINTVAR(pi, "triso5g");
14604         if (PHY_GETVAR(pi, "antswctl5g"))
14605                 pi->srom_fem5g.antswctrllut =
14606                         (u8) PHY_GETINTVAR(pi, "antswctl5g");
14607         else
14608                 pi->srom_fem5g.antswctrllut =
14609                         (u8) PHY_GETINTVAR(pi, "antswctl2g");
14610
14611         wlc_phy_txpower_ipa_upd(pi);
14612
14613         pi->phy_txcore_disable_temp = (s16) PHY_GETINTVAR(pi, "tempthresh");
14614         if (pi->phy_txcore_disable_temp == 0)
14615                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14616
14617         pi->phy_tempsense_offset = (s8) PHY_GETINTVAR(pi, "tempoffset");
14618         if (pi->phy_tempsense_offset != 0) {
14619                 if (pi->phy_tempsense_offset >
14620                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14621                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14622                 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14623                                                      NPHY_SROM_MINTEMPOFFSET))
14624                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14625                 else
14626                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14627         }
14628
14629         pi->phy_txcore_enable_temp =
14630                 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14631
14632         pi->phycal_tempdelta = (u8) PHY_GETINTVAR(pi, "phycal_tempdelta");
14633         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14634                 pi->phycal_tempdelta = 0;
14635
14636         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14637
14638         return true;
14639 }
14640
14641 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14642 {
14643         uint i;
14644
14645         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14646                 pi->phyhang_avoid = true;
14647
14648         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14649                 pi->nphy_gband_spurwar_en = true;
14650                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14651                         pi->nphy_aband_spurwar_en = true;
14652         }
14653         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14654                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14655                         pi->nphy_gband_spurwar2_en = true;
14656         }
14657
14658         pi->n_preamble_override = AUTO;
14659         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14660                 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14661
14662         pi->nphy_txrx_chain = AUTO;
14663         pi->phy_scraminit = AUTO;
14664
14665         pi->nphy_rxcalparams = 0x010100B5;
14666
14667         pi->nphy_perical = PHY_PERICAL_MPHASE;
14668         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14669         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14670
14671         pi->nphy_gain_boost = true;
14672         pi->nphy_elna_gain_config = false;
14673         pi->radio_is_on = false;
14674
14675         for (i = 0; i < pi->pubpi.phy_corenum; i++)
14676                 pi->nphy_txpwrindex[i].index = AUTO;
14677
14678         wlc_phy_txpwrctrl_config_nphy(pi);
14679         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14680                 pi->hwpwrctrl_capable = true;
14681
14682         pi->pi_fptr.init = wlc_phy_init_nphy;
14683         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14684         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14685         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14686
14687         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14688                 return false;
14689
14690         return true;
14691 }
14692
14693 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14694 {
14695         s32 rfpwr_offset = 0;
14696
14697         if (CHSPEC_IS2G(pi->radio_chanspec)) {
14698                 if ((pi->pubpi.radiorev == 3) ||
14699                     (pi->pubpi.radiorev == 4) ||
14700                     (pi->pubpi.radiorev == 6))
14701                         rfpwr_offset = (s16)
14702                                        nphy_papd_padgain_dlt_2g_2057rev3n4
14703                                        [pad_gn];
14704                 else if (pi->pubpi.radiorev == 5)
14705                         rfpwr_offset = (s16)
14706                                        nphy_papd_padgain_dlt_2g_2057rev5
14707                                        [pad_gn];
14708                 else if ((pi->pubpi.radiorev == 7)
14709                          || (pi->pubpi.radiorev ==
14710                              8))
14711                         rfpwr_offset = (s16)
14712                                        nphy_papd_padgain_dlt_2g_2057rev7
14713                                        [pad_gn];
14714         } else {
14715                 if ((pi->pubpi.radiorev == 3) ||
14716                     (pi->pubpi.radiorev == 4) ||
14717                     (pi->pubpi.radiorev == 6))
14718                         rfpwr_offset = (s16)
14719                                        nphy_papd_pgagain_dlt_5g_2057
14720                                        [pga_gn];
14721                 else if ((pi->pubpi.radiorev == 7)
14722                          || (pi->pubpi.radiorev ==
14723                              8))
14724                         rfpwr_offset = (s16)
14725                                        nphy_papd_pgagain_dlt_5g_2057rev7
14726                                        [pga_gn];
14727         }
14728         return rfpwr_offset;
14729 }
14730
14731 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14732 {
14733         bool gf_preamble = false;
14734         u16 val;
14735
14736         if (preamble == BRCMS_N_PREAMBLE_GF)
14737                 gf_preamble = true;
14738
14739         val = read_phy_reg(pi, 0xed);
14740
14741         val |= RX_GF_MM_AUTO;
14742         val &= ~RX_GF_OR_MM;
14743         if (gf_preamble)
14744                 val |= RX_GF_OR_MM;
14745
14746         write_phy_reg(pi, 0xed, val);
14747 }
14748
14749 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14750 {
14751         int j, type;
14752         u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14753
14754         for (type = 0; type < 3; type++) {
14755                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14756                         write_phy_reg(pi, addr_offset[type] + j,
14757                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14758         }
14759
14760         if (pi->bw == WL_CHANSPEC_BW_40) {
14761                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14762                         write_phy_reg(pi, 0x186 + j,
14763                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14764         } else {
14765                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14766                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14767                                 write_phy_reg(pi, 0x186 + j,
14768                                         NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14769                 }
14770
14771                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14772                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14773                                 write_phy_reg(pi, 0x2c5 + j,
14774                                         NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14775                 }
14776         }
14777 }
14778
14779 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14780 {
14781         int j;
14782
14783         if (pi->bw == WL_CHANSPEC_BW_40) {
14784                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14785                         write_phy_reg(pi, 0x195 + j,
14786                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14787         } else {
14788                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14789                         write_phy_reg(pi, 0x186 + j,
14790                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14791         }
14792 }
14793
14794 static void
14795 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14796                        u8 len)
14797 {
14798         u32 t1_offset, t2_offset;
14799         u8 ctr;
14800         u8 end_event =
14801                 NREV_GE(pi->pubpi.phy_rev,
14802                         3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14803         u8 end_dly = 1;
14804
14805         if (pi->phyhang_avoid)
14806                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14807
14808         t1_offset = cmd << 4;
14809         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14810                                  events);
14811         t2_offset = t1_offset + 0x080;
14812         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14813                                  dlys);
14814
14815         for (ctr = len; ctr < 16; ctr++) {
14816                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14817                                          t1_offset + ctr, 8, &end_event);
14818                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14819                                          t2_offset + ctr, 8, &end_dly);
14820         }
14821
14822         if (pi->phyhang_avoid)
14823                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14824 }
14825
14826 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14827 {
14828         u16 lpf_bw_ctl_val = 0;
14829         u16 rx2tx_lpf_rc_lut_offset = 0;
14830
14831         if (offset == 0) {
14832                 if (CHSPEC_IS40(pi->radio_chanspec))
14833                         rx2tx_lpf_rc_lut_offset = 0x159;
14834                 else
14835                         rx2tx_lpf_rc_lut_offset = 0x154;
14836         } else {
14837                 rx2tx_lpf_rc_lut_offset = offset;
14838         }
14839         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14840                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
14841                                 &lpf_bw_ctl_val);
14842
14843         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14844
14845         return lpf_bw_ctl_val;
14846 }
14847
14848 static void
14849 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14850                                   u8 core_mask, u8 off, u8 override_id)
14851 {
14852         u8 core_num;
14853         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14854         u8 val_shift = 0;
14855
14856         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14857                 en_mask = field;
14858                 for (core_num = 0; core_num < 2; core_num++) {
14859                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14860
14861                                 switch (field) {
14862                                 case (0x1 << 2):
14863                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14864                                         val_addr = (core_num == 0) ? 0x7a :
14865                                                    0x7d;
14866                                         val_mask = (0x1 << 1);
14867                                         val_shift = 1;
14868                                         break;
14869                                 case (0x1 << 3):
14870                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14871                                         val_addr = (core_num == 0) ? 0x7a :
14872                                                    0x7d;
14873                                         val_mask = (0x1 << 2);
14874                                         val_shift = 2;
14875                                         break;
14876                                 case (0x1 << 4):
14877                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14878                                         val_addr = (core_num == 0) ? 0x7a :
14879                                                    0x7d;
14880                                         val_mask = (0x1 << 4);
14881                                         val_shift = 4;
14882                                         break;
14883                                 case (0x1 << 5):
14884                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14885                                         val_addr = (core_num == 0) ? 0x7a :
14886                                                    0x7d;
14887                                         val_mask = (0x1 << 5);
14888                                         val_shift = 5;
14889                                         break;
14890                                 case (0x1 << 6):
14891                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14892                                         val_addr = (core_num == 0) ? 0x7a :
14893                                                    0x7d;
14894                                         val_mask = (0x1 << 6);
14895                                         val_shift = 6;
14896                                         break;
14897                                 case (0x1 << 7):
14898                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14899                                         val_addr = (core_num == 0) ? 0x7a :
14900                                                    0x7d;
14901                                         val_mask = (0x1 << 7);
14902                                         val_shift = 7;
14903                                         break;
14904                                 case (0x1 << 10):
14905                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14906                                         val_addr = (core_num == 0) ? 0xf8 :
14907                                                    0xfa;
14908                                         val_mask = (0x7 << 4);
14909                                         val_shift = 4;
14910                                         break;
14911                                 case (0x1 << 11):
14912                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14913                                         val_addr = (core_num == 0) ? 0x7b :
14914                                                    0x7e;
14915                                         val_mask = (0xffff << 0);
14916                                         val_shift = 0;
14917                                         break;
14918                                 case (0x1 << 12):
14919                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14920                                         val_addr = (core_num == 0) ? 0x7c :
14921                                                    0x7f;
14922                                         val_mask = (0xffff << 0);
14923                                         val_shift = 0;
14924                                         break;
14925                                 case (0x3 << 13):
14926                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14927                                         val_addr = (core_num == 0) ? 0x348 :
14928                                                    0x349;
14929                                         val_mask = (0xff << 0);
14930                                         val_shift = 0;
14931                                         break;
14932                                 case (0x1 << 13):
14933                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14934                                         val_addr = (core_num == 0) ? 0x348 :
14935                                                    0x349;
14936                                         val_mask = (0xf << 0);
14937                                         val_shift = 0;
14938                                         break;
14939                                 default:
14940                                         addr = 0xffff;
14941                                         break;
14942                                 }
14943                         } else if (override_id ==
14944                                    NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14945
14946                                 switch (field) {
14947                                 case (0x1 << 1):
14948                                         en_addr = (core_num == 0) ? 0x342 :
14949                                                   0x343;
14950                                         val_addr = (core_num == 0) ? 0x340 :
14951                                                    0x341;
14952                                         val_mask = (0x1 << 1);
14953                                         val_shift = 1;
14954                                         break;
14955                                 case (0x1 << 3):
14956                                         en_addr = (core_num == 0) ? 0x342 :
14957                                                   0x343;
14958                                         val_addr = (core_num == 0) ? 0x340 :
14959                                                    0x341;
14960                                         val_mask = (0x1 << 3);
14961                                         val_shift = 3;
14962                                         break;
14963                                 case (0x1 << 5):
14964                                         en_addr = (core_num == 0) ? 0x342 :
14965                                                   0x343;
14966                                         val_addr = (core_num == 0) ? 0x340 :
14967                                                    0x341;
14968                                         val_mask = (0x1 << 5);
14969                                         val_shift = 5;
14970                                         break;
14971                                 case (0x1 << 4):
14972                                         en_addr = (core_num == 0) ? 0x342 :
14973                                                   0x343;
14974                                         val_addr = (core_num == 0) ? 0x340 :
14975                                                    0x341;
14976                                         val_mask = (0x1 << 4);
14977                                         val_shift = 4;
14978                                         break;
14979                                 case (0x1 << 2):
14980
14981                                         en_addr = (core_num == 0) ? 0x342 :
14982                                                   0x343;
14983                                         val_addr = (core_num == 0) ? 0x340 :
14984                                                    0x341;
14985                                         val_mask = (0x1 << 2);
14986                                         val_shift = 2;
14987                                         break;
14988                                 case (0x1 << 7):
14989
14990                                         en_addr = (core_num == 0) ? 0x342 :
14991                                                   0x343;
14992                                         val_addr = (core_num == 0) ? 0x340 :
14993                                                    0x341;
14994                                         val_mask = (0x7 << 8);
14995                                         val_shift = 8;
14996                                         break;
14997                                 case (0x1 << 11):
14998                                         en_addr = (core_num == 0) ? 0x342 :
14999                                                   0x343;
15000                                         val_addr = (core_num == 0) ? 0x340 :
15001                                                    0x341;
15002                                         val_mask = (0x1 << 14);
15003                                         val_shift = 14;
15004                                         break;
15005                                 case (0x1 << 10):
15006                                         en_addr = (core_num == 0) ? 0x342 :
15007                                                   0x343;
15008                                         val_addr = (core_num == 0) ? 0x340 :
15009                                                    0x341;
15010                                         val_mask = (0x1 << 13);
15011                                         val_shift = 13;
15012                                         break;
15013                                 case (0x1 << 9):
15014                                         en_addr = (core_num == 0) ? 0x342 :
15015                                                   0x343;
15016                                         val_addr = (core_num == 0) ? 0x340 :
15017                                                    0x341;
15018                                         val_mask = (0x1 << 12);
15019                                         val_shift = 12;
15020                                         break;
15021                                 case (0x1 << 8):
15022                                         en_addr = (core_num == 0) ? 0x342 :
15023                                                   0x343;
15024                                         val_addr = (core_num == 0) ? 0x340 :
15025                                                    0x341;
15026                                         val_mask = (0x1 << 11);
15027                                         val_shift = 11;
15028                                         break;
15029                                 case (0x1 << 6):
15030                                         en_addr = (core_num == 0) ? 0x342 :
15031                                                   0x343;
15032                                         val_addr = (core_num == 0) ? 0x340 :
15033                                                    0x341;
15034                                         val_mask = (0x1 << 6);
15035                                         val_shift = 6;
15036                                         break;
15037                                 case (0x1 << 0):
15038                                         en_addr = (core_num == 0) ? 0x342 :
15039                                                   0x343;
15040                                         val_addr = (core_num == 0) ? 0x340 :
15041                                                    0x341;
15042                                         val_mask = (0x1 << 0);
15043                                         val_shift = 0;
15044                                         break;
15045                                 default:
15046                                         addr = 0xffff;
15047                                         break;
15048                                 }
15049                         } else if (override_id ==
15050                                    NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15051
15052                                 switch (field) {
15053                                 case (0x1 << 3):
15054                                         en_addr = (core_num == 0) ? 0x346 :
15055                                                   0x347;
15056                                         val_addr = (core_num == 0) ? 0x344 :
15057                                                    0x345;
15058                                         val_mask = (0x1 << 3);
15059                                         val_shift = 3;
15060                                         break;
15061                                 case (0x1 << 1):
15062                                         en_addr = (core_num == 0) ? 0x346 :
15063                                                   0x347;
15064                                         val_addr = (core_num == 0) ? 0x344 :
15065                                                    0x345;
15066                                         val_mask = (0x1 << 1);
15067                                         val_shift = 1;
15068                                         break;
15069                                 case (0x1 << 0):
15070                                         en_addr = (core_num == 0) ? 0x346 :
15071                                                   0x347;
15072                                         val_addr = (core_num == 0) ? 0x344 :
15073                                                    0x345;
15074                                         val_mask = (0x1 << 0);
15075                                         val_shift = 0;
15076                                         break;
15077                                 case (0x1 << 2):
15078                                         en_addr = (core_num == 0) ? 0x346 :
15079                                                   0x347;
15080                                         val_addr = (core_num == 0) ? 0x344 :
15081                                                    0x345;
15082                                         val_mask = (0x1 << 2);
15083                                         val_shift = 2;
15084                                         break;
15085                                 case (0x1 << 4):
15086                                         en_addr = (core_num == 0) ? 0x346 :
15087                                                   0x347;
15088                                         val_addr = (core_num == 0) ? 0x344 :
15089                                                    0x345;
15090                                         val_mask = (0x1 << 4);
15091                                         val_shift = 4;
15092                                         break;
15093                                 default:
15094                                         addr = 0xffff;
15095                                         break;
15096                                 }
15097                         }
15098
15099                         if (off) {
15100                                 and_phy_reg(pi, en_addr, ~en_mask);
15101                                 and_phy_reg(pi, val_addr, ~val_mask);
15102                         } else {
15103
15104                                 if ((core_mask == 0)
15105                                     || (core_mask & (1 << core_num))) {
15106                                         or_phy_reg(pi, en_addr, en_mask);
15107
15108                                         if (addr != 0xffff)
15109                                                 mod_phy_reg(pi, val_addr,
15110                                                             val_mask,
15111                                                             (value <<
15112                                                              val_shift));
15113                                 }
15114                         }
15115                 }
15116         }
15117 }
15118
15119 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15120 {
15121         uint core;
15122         int ctr;
15123         s16 gain_delta[2];
15124         u8 curr_channel;
15125         u16 minmax_gain[2];
15126         u16 regval[4];
15127
15128         if (pi->phyhang_avoid)
15129                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15130
15131         if (pi->nphy_gain_boost) {
15132                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15133
15134                         gain_delta[0] = 6;
15135                         gain_delta[1] = 6;
15136                 } else {
15137
15138                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15139                         gain_delta[0] =
15140                                 (s16)
15141                                 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15142                                                curr_channel) +
15143                                               nphy_lnagain_est0[1]), 13);
15144                         gain_delta[1] =
15145                                 (s16)
15146                                 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15147                                                curr_channel) +
15148                                               nphy_lnagain_est1[1]), 13);
15149                 }
15150         } else {
15151
15152                 gain_delta[0] = 0;
15153                 gain_delta[1] = 0;
15154         }
15155
15156         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15157                 if (pi->nphy_elna_gain_config) {
15158
15159                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15160                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15161                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15162                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15163                 } else {
15164                         for (ctr = 0; ctr < 4; ctr++)
15165                                 regval[ctr] =
15166                                         nphy_def_lnagains[ctr] +
15167                                         gain_delta[core];
15168                 }
15169                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15170
15171                 minmax_gain[core] =
15172                         (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15173         }
15174
15175         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15176         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15177
15178         if (pi->phyhang_avoid)
15179                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15180 }
15181
15182 static void
15183 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15184 {
15185         if (core == PHY_CORE_0) {
15186                 write_phy_reg(pi, 0x38, 0x4);
15187                 if (CHSPEC_IS2G(pi->radio_chanspec))
15188                         write_phy_reg(pi, 0x37, 0x0060);
15189                 else
15190                         write_phy_reg(pi, 0x37, 0x1080);
15191         } else if (core == PHY_CORE_1) {
15192                 write_phy_reg(pi, 0x2ae, 0x4);
15193                 if (CHSPEC_IS2G(pi->radio_chanspec))
15194                         write_phy_reg(pi, 0x2ad, 0x0060);
15195                 else
15196                         write_phy_reg(pi, 0x2ad, 0x1080);
15197         }
15198 }
15199
15200 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15201 {
15202         u8 txchain0, txchain1;
15203
15204         txchain0 = txchain & 0x1;
15205         txchain1 = (txchain & 0x2) >> 1;
15206         if (!txchain0)
15207                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15208
15209         if (!txchain1)
15210                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15211 }
15212
15213 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15214 {
15215         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15216         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15217         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15218         s8 tia_gainbits[] = {
15219                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15220
15221         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15222         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15223
15224         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15225
15226         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15227         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15228
15229         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15230                                  lna1_gain_db);
15231         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15232                                  lna1_gain_db);
15233
15234         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15235                                  lna2_gain_db);
15236         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15237                                  lna2_gain_db);
15238
15239         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15240                                  tia_gain_db);
15241         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15242                                  tia_gain_db);
15243
15244         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15245                                  tia_gainbits);
15246         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15247                                  tia_gainbits);
15248
15249         write_phy_reg(pi, 0x37, 0x74);
15250         write_phy_reg(pi, 0x2ad, 0x74);
15251         write_phy_reg(pi, 0x38, 0x18);
15252         write_phy_reg(pi, 0x2ae, 0x18);
15253
15254         write_phy_reg(pi, 0x2b, 0xe8);
15255         write_phy_reg(pi, 0x41, 0xe8);
15256
15257         if (CHSPEC_IS20(pi->radio_chanspec)) {
15258
15259                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15260                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15261         } else {
15262
15263                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15264                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15265         }
15266 }
15267
15268 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15269 {
15270         u16 currband;
15271         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15272         s8 *lna1_gain_db = NULL;
15273         s8 *lna1_gain_db_2 = NULL;
15274         s8 *lna2_gain_db = NULL;
15275         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15276         s8 *tia_gain_db;
15277         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15278         s8 *tia_gainbits;
15279         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15280         u16 *rfseq_init_gain;
15281         u16 init_gaincode;
15282         u16 clip1hi_gaincode;
15283         u16 clip1md_gaincode = 0;
15284         u16 clip1md_gaincode_B;
15285         u16 clip1lo_gaincode;
15286         u16 clip1lo_gaincode_B;
15287         u8 crsminl_th = 0;
15288         u8 crsminu_th;
15289         u16 nbclip_th = 0;
15290         u8 w1clip_th;
15291         u16 freq;
15292         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15293         u8 chg_nbclip_th = 0;
15294
15295         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15296         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15297
15298         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15299         if (currband == 0) {
15300
15301                 lna1_gain_db = lna1G_gain_db_rev7;
15302
15303                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15304                                          lna1_gain_db);
15305                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15306                                          lna1_gain_db);
15307
15308                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15309
15310                 if (CHSPEC_IS40(pi->radio_chanspec)) {
15311                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15312                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15313                 }
15314
15315                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15316
15317                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15318                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15319                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15320                 }
15321         } else {
15322
15323                 init_gaincode = 0x9e;
15324                 clip1hi_gaincode = 0x9e;
15325                 clip1md_gaincode_B = 0x24;
15326                 clip1lo_gaincode = 0x8a;
15327                 clip1lo_gaincode_B = 8;
15328                 rfseq_init_gain = rfseqA_init_gain_rev7;
15329
15330                 tia_gain_db = tiaA_gain_db_rev7;
15331                 tia_gainbits = tiaA_gainbits_rev7;
15332
15333                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15334                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15335
15336                         w1clip_th = 25;
15337                         clip1md_gaincode = 0x82;
15338
15339                         if ((freq <= 5080) || (freq == 5825)) {
15340
15341                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15342                                 s8 lna1A_gain_db_2_rev7[] = {
15343                                         11, 17, 22, 25};
15344                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15345
15346                                 crsminu_th = 0x3e;
15347                                 lna1_gain_db = lna1A_gain_db_rev7;
15348                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15349                                 lna2_gain_db = lna2A_gain_db_rev7;
15350                         } else if ((freq >= 5500) && (freq <= 5700)) {
15351
15352                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15353                                 s8 lna1A_gain_db_2_rev7[] = {
15354                                         12, 18, 22, 26};
15355                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15356
15357                                 crsminu_th = 0x45;
15358                                 clip1md_gaincode_B = 0x14;
15359                                 nbclip_th = 0xff;
15360                                 chg_nbclip_th = 1;
15361                                 lna1_gain_db = lna1A_gain_db_rev7;
15362                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15363                                 lna2_gain_db = lna2A_gain_db_rev7;
15364                         } else {
15365
15366                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15367                                 s8 lna1A_gain_db_2_rev7[] = {
15368                                         12, 18, 22, 26};
15369                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15370
15371                                 crsminu_th = 0x41;
15372                                 lna1_gain_db = lna1A_gain_db_rev7;
15373                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15374                                 lna2_gain_db = lna2A_gain_db_rev7;
15375                         }
15376
15377                         if (freq <= 4920) {
15378                                 nvar_baseline_offset0 = 5;
15379                                 nvar_baseline_offset1 = 5;
15380                         } else if ((freq > 4920) && (freq <= 5320)) {
15381                                 nvar_baseline_offset0 = 3;
15382                                 nvar_baseline_offset1 = 5;
15383                         } else if ((freq > 5320) && (freq <= 5700)) {
15384                                 nvar_baseline_offset0 = 3;
15385                                 nvar_baseline_offset1 = 2;
15386                         } else {
15387                                 nvar_baseline_offset0 = 4;
15388                                 nvar_baseline_offset1 = 0;
15389                         }
15390                 } else {
15391
15392                         crsminu_th = 0x3a;
15393                         crsminl_th = 0x3a;
15394                         w1clip_th = 20;
15395
15396                         if ((freq >= 4920) && (freq <= 5320)) {
15397                                 nvar_baseline_offset0 = 4;
15398                                 nvar_baseline_offset1 = 5;
15399                         } else if ((freq > 5320) && (freq <= 5550)) {
15400                                 nvar_baseline_offset0 = 4;
15401                                 nvar_baseline_offset1 = 2;
15402                         } else {
15403                                 nvar_baseline_offset0 = 5;
15404                                 nvar_baseline_offset1 = 3;
15405                         }
15406                 }
15407
15408                 write_phy_reg(pi, 0x20, init_gaincode);
15409                 write_phy_reg(pi, 0x2a7, init_gaincode);
15410
15411                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15412                                          pi->pubpi.phy_corenum, 0x106, 16,
15413                                          rfseq_init_gain);
15414
15415                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15416                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15417
15418                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15419                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15420
15421                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15422                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15423                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15424                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15425
15426                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15427                                          tia_gain_db);
15428                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15429                                          tia_gain_db);
15430
15431                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15432                                          tia_gainbits);
15433                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15434                                          tia_gainbits);
15435
15436                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15437
15438                 if (chg_nbclip_th == 1) {
15439                         write_phy_reg(pi, 0x2b, nbclip_th);
15440                         write_phy_reg(pi, 0x41, nbclip_th);
15441                 }
15442
15443                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15444                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15445
15446                 mod_phy_reg(pi, 0x2e4,
15447                             (0x3f << 0), (nvar_baseline_offset0 << 0));
15448
15449                 mod_phy_reg(pi, 0x2e4,
15450                             (0x3f << 6), (nvar_baseline_offset1 << 6));
15451
15452                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15453
15454                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15455                                                  lna1_gain_db);
15456                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15457                                                  lna1_gain_db_2);
15458
15459                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15460                                                  8, lna2_gain_db);
15461                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15462                                                  8, lna2_gain_db);
15463
15464                         write_phy_reg(pi, 0x24, clip1md_gaincode);
15465                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15466                 } else {
15467                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15468                 }
15469         }
15470 }
15471
15472 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15473 {
15474         u16 w1th, hpf_code, currband;
15475         int ctr;
15476         u8 rfseq_updategainu_events[] = {
15477                 NPHY_RFSEQ_CMD_RX_GAIN,
15478                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15479                 NPHY_RFSEQ_CMD_SET_HPF_BW
15480         };
15481         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15482         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15483         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15484         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15485         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15486         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15487         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15488         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15489         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15490         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15491         s8 *lna1_gain_db = NULL;
15492         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15493         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15494         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15495         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15496         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15497         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15498         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15499         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15500         s8 *lna2_gain_db = NULL;
15501         s8 tiaG_gain_db[] = {
15502                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15503         s8 tiaA_gain_db[] = {
15504                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15505         s8 tiaA_gain_db_rev4[] = {
15506                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15507         s8 tiaA_gain_db_rev5[] = {
15508                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15509         s8 tiaA_gain_db_rev6[] = {
15510                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15511         s8 *tia_gain_db;
15512         s8 tiaG_gainbits[] = {
15513                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15514         s8 tiaA_gainbits[] = {
15515                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15516         s8 tiaA_gainbits_rev4[] = {
15517                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15518         s8 tiaA_gainbits_rev5[] = {
15519                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15520         s8 tiaA_gainbits_rev6[] = {
15521                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15522         s8 *tia_gainbits;
15523         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15524         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15525         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15526         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15527         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15528         u16 rfseqG_init_gain_rev5_elna[] = {
15529                 0x013f, 0x013f, 0x013f, 0x013f };
15530         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15531         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15532         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15533         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15534         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15535         u16 rfseqA_init_gain_rev4_elna[] = {
15536                 0x314f, 0x314f, 0x314f, 0x314f };
15537         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15538         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15539         u16 *rfseq_init_gain;
15540         u16 initG_gaincode = 0x627e;
15541         u16 initG_gaincode_rev4 = 0x527e;
15542         u16 initG_gaincode_rev5 = 0x427e;
15543         u16 initG_gaincode_rev5_elna = 0x027e;
15544         u16 initG_gaincode_rev6 = 0x527e;
15545         u16 initG_gaincode_rev6_224B0 = 0x427e;
15546         u16 initG_gaincode_rev6_elna = 0x127e;
15547         u16 initA_gaincode = 0x52de;
15548         u16 initA_gaincode_rev4 = 0x629e;
15549         u16 initA_gaincode_rev4_elna = 0x329e;
15550         u16 initA_gaincode_rev5 = 0x729e;
15551         u16 initA_gaincode_rev6 = 0x729e;
15552         u16 init_gaincode;
15553         u16 clip1hiG_gaincode = 0x107e;
15554         u16 clip1hiG_gaincode_rev4 = 0x007e;
15555         u16 clip1hiG_gaincode_rev5 = 0x1076;
15556         u16 clip1hiG_gaincode_rev6 = 0x007e;
15557         u16 clip1hiA_gaincode = 0x00de;
15558         u16 clip1hiA_gaincode_rev4 = 0x029e;
15559         u16 clip1hiA_gaincode_rev5 = 0x029e;
15560         u16 clip1hiA_gaincode_rev6 = 0x029e;
15561         u16 clip1hi_gaincode;
15562         u16 clip1mdG_gaincode = 0x0066;
15563         u16 clip1mdA_gaincode = 0x00ca;
15564         u16 clip1mdA_gaincode_rev4 = 0x1084;
15565         u16 clip1mdA_gaincode_rev5 = 0x2084;
15566         u16 clip1mdA_gaincode_rev6 = 0x2084;
15567         u16 clip1md_gaincode = 0;
15568         u16 clip1loG_gaincode = 0x0074;
15569         u16 clip1loG_gaincode_rev5[] = {
15570                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15571         };
15572         u16 clip1loG_gaincode_rev6[] = {
15573                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15574         };
15575         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15576         u16 clip1loA_gaincode = 0x00cc;
15577         u16 clip1loA_gaincode_rev4 = 0x0086;
15578         u16 clip1loA_gaincode_rev5 = 0x2086;
15579         u16 clip1loA_gaincode_rev6 = 0x2086;
15580         u16 clip1lo_gaincode;
15581         u8 crsminG_th = 0x18;
15582         u8 crsminG_th_rev5 = 0x18;
15583         u8 crsminG_th_rev6 = 0x18;
15584         u8 crsminA_th = 0x1e;
15585         u8 crsminA_th_rev4 = 0x24;
15586         u8 crsminA_th_rev5 = 0x24;
15587         u8 crsminA_th_rev6 = 0x24;
15588         u8 crsmin_th;
15589         u8 crsminlG_th = 0x18;
15590         u8 crsminlG_th_rev5 = 0x18;
15591         u8 crsminlG_th_rev6 = 0x18;
15592         u8 crsminlA_th = 0x1e;
15593         u8 crsminlA_th_rev4 = 0x24;
15594         u8 crsminlA_th_rev5 = 0x24;
15595         u8 crsminlA_th_rev6 = 0x24;
15596         u8 crsminl_th = 0;
15597         u8 crsminuG_th = 0x18;
15598         u8 crsminuG_th_rev5 = 0x18;
15599         u8 crsminuG_th_rev6 = 0x18;
15600         u8 crsminuA_th = 0x1e;
15601         u8 crsminuA_th_rev4 = 0x24;
15602         u8 crsminuA_th_rev5 = 0x24;
15603         u8 crsminuA_th_rev6 = 0x24;
15604         u8 crsminuA_th_rev6_224B0 = 0x2d;
15605         u8 crsminu_th;
15606         u16 nbclipG_th = 0x20d;
15607         u16 nbclipG_th_rev4 = 0x1a1;
15608         u16 nbclipG_th_rev5 = 0x1d0;
15609         u16 nbclipG_th_rev6 = 0x1d0;
15610         u16 nbclipA_th = 0x1a1;
15611         u16 nbclipA_th_rev4 = 0x107;
15612         u16 nbclipA_th_rev5 = 0x0a9;
15613         u16 nbclipA_th_rev6 = 0x0f0;
15614         u16 nbclip_th = 0;
15615         u8 w1clipG_th = 5;
15616         u8 w1clipG_th_rev5 = 9;
15617         u8 w1clipG_th_rev6 = 5;
15618         u8 w1clipA_th = 25, w1clip_th;
15619         u8 rssi_gain_default = 0x50;
15620         u8 rssiG_gain_rev6_224B0 = 0x50;
15621         u8 rssiA_gain_rev5 = 0x90;
15622         u8 rssiA_gain_rev6 = 0x90;
15623         u8 rssi_gain;
15624         u16 regval[21];
15625         u8 triso;
15626
15627         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15628                 pi->srom_fem2g.triso;
15629
15630         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15631                 if (pi->pubpi.radiorev == 5) {
15632                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15633                 } else if (pi->pubpi.radiorev == 7) {
15634                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15635
15636                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15637                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15638
15639                 } else if ((pi->pubpi.radiorev == 3)
15640                            || (pi->pubpi.radiorev == 8)) {
15641                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15642
15643                         if (pi->pubpi.radiorev == 8) {
15644                                 mod_phy_reg(pi, 0x283,
15645                                             (0xff << 0), (0x44 << 0));
15646                                 mod_phy_reg(pi, 0x280,
15647                                             (0xff << 0), (0x44 << 0));
15648                         }
15649                 } else {
15650                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15651                 }
15652         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15653
15654                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15655
15656                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15657                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15658
15659                 currband =
15660                         read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15661                 if (currband == 0) {
15662                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15663                                 if (pi->pubpi.radiorev == 11) {
15664                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
15665                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
15666                                         rfseq_init_gain =
15667                                                 rfseqG_init_gain_rev6_224B0;
15668                                         init_gaincode =
15669                                                 initG_gaincode_rev6_224B0;
15670                                         clip1hi_gaincode =
15671                                                 clip1hiG_gaincode_rev6;
15672                                         clip1lo_gaincode =
15673                                                 clip1loG_gaincode_rev6_224B0;
15674                                         nbclip_th = nbclipG_th_rev6;
15675                                         w1clip_th = w1clipG_th_rev6;
15676                                         crsmin_th = crsminG_th_rev6;
15677                                         crsminl_th = crsminlG_th_rev6;
15678                                         crsminu_th = crsminuG_th_rev6;
15679                                         rssi_gain = rssiG_gain_rev6_224B0;
15680                                 } else {
15681                                         lna1_gain_db = lna1G_gain_db_rev6;
15682                                         lna2_gain_db = lna2G_gain_db_rev6;
15683                                         if (pi->sh->boardflags & BFL_EXTLNA) {
15684
15685                                                 rfseq_init_gain =
15686                                                      rfseqG_init_gain_rev6_elna;
15687                                                 init_gaincode =
15688                                                        initG_gaincode_rev6_elna;
15689                                         } else {
15690                                                 rfseq_init_gain =
15691                                                         rfseqG_init_gain_rev6;
15692                                                 init_gaincode =
15693                                                         initG_gaincode_rev6;
15694                                         }
15695                                         clip1hi_gaincode =
15696                                                 clip1hiG_gaincode_rev6;
15697                                         switch (triso) {
15698                                         case 0:
15699                                                 clip1lo_gaincode =
15700                                                         clip1loG_gaincode_rev6
15701                                                         [0];
15702                                                 break;
15703                                         case 1:
15704                                                 clip1lo_gaincode =
15705                                                         clip1loG_gaincode_rev6
15706                                                         [1];
15707                                                 break;
15708                                         case 2:
15709                                                 clip1lo_gaincode =
15710                                                         clip1loG_gaincode_rev6
15711                                                         [2];
15712                                                 break;
15713                                         case 3:
15714                                         default:
15715
15716                                                 clip1lo_gaincode =
15717                                                         clip1loG_gaincode_rev6
15718                                                         [3];
15719                                                 break;
15720                                         case 4:
15721                                                 clip1lo_gaincode =
15722                                                         clip1loG_gaincode_rev6
15723                                                         [4];
15724                                                 break;
15725                                         case 5:
15726                                                 clip1lo_gaincode =
15727                                                         clip1loG_gaincode_rev6
15728                                                         [5];
15729                                                 break;
15730                                         case 6:
15731                                                 clip1lo_gaincode =
15732                                                         clip1loG_gaincode_rev6
15733                                                         [6];
15734                                                 break;
15735                                         case 7:
15736                                                 clip1lo_gaincode =
15737                                                         clip1loG_gaincode_rev6
15738                                                         [7];
15739                                                 break;
15740                                         }
15741                                         nbclip_th = nbclipG_th_rev6;
15742                                         w1clip_th = w1clipG_th_rev6;
15743                                         crsmin_th = crsminG_th_rev6;
15744                                         crsminl_th = crsminlG_th_rev6;
15745                                         crsminu_th = crsminuG_th_rev6;
15746                                         rssi_gain = rssi_gain_default;
15747                                 }
15748                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15749                                 lna1_gain_db = lna1G_gain_db_rev5;
15750                                 lna2_gain_db = lna2G_gain_db_rev5;
15751                                 if (pi->sh->boardflags & BFL_EXTLNA) {
15752
15753                                         rfseq_init_gain =
15754                                                 rfseqG_init_gain_rev5_elna;
15755                                         init_gaincode =
15756                                                 initG_gaincode_rev5_elna;
15757                                 } else {
15758                                         rfseq_init_gain = rfseqG_init_gain_rev5;
15759                                         init_gaincode = initG_gaincode_rev5;
15760                                 }
15761                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15762                                 switch (triso) {
15763                                 case 0:
15764                                         clip1lo_gaincode =
15765                                                 clip1loG_gaincode_rev5[0];
15766                                         break;
15767                                 case 1:
15768                                         clip1lo_gaincode =
15769                                                 clip1loG_gaincode_rev5[1];
15770                                         break;
15771                                 case 2:
15772                                         clip1lo_gaincode =
15773                                                 clip1loG_gaincode_rev5[2];
15774                                         break;
15775                                 case 3:
15776
15777                                         clip1lo_gaincode =
15778                                                 clip1loG_gaincode_rev5[3];
15779                                         break;
15780                                 case 4:
15781                                         clip1lo_gaincode =
15782                                                 clip1loG_gaincode_rev5[4];
15783                                         break;
15784                                 case 5:
15785                                         clip1lo_gaincode =
15786                                                 clip1loG_gaincode_rev5[5];
15787                                         break;
15788                                 case 6:
15789                                         clip1lo_gaincode =
15790                                                 clip1loG_gaincode_rev5[6];
15791                                         break;
15792                                 case 7:
15793                                         clip1lo_gaincode =
15794                                                 clip1loG_gaincode_rev5[7];
15795                                         break;
15796                                 default:
15797                                         clip1lo_gaincode =
15798                                                 clip1loG_gaincode_rev5[3];
15799                                         break;
15800                                 }
15801                                 nbclip_th = nbclipG_th_rev5;
15802                                 w1clip_th = w1clipG_th_rev5;
15803                                 crsmin_th = crsminG_th_rev5;
15804                                 crsminl_th = crsminlG_th_rev5;
15805                                 crsminu_th = crsminuG_th_rev5;
15806                                 rssi_gain = rssi_gain_default;
15807                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15808                                 lna1_gain_db = lna1G_gain_db_rev4;
15809                                 lna2_gain_db = lna2G_gain_db;
15810                                 rfseq_init_gain = rfseqG_init_gain_rev4;
15811                                 init_gaincode = initG_gaincode_rev4;
15812                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15813                                 clip1lo_gaincode = clip1loG_gaincode;
15814                                 nbclip_th = nbclipG_th_rev4;
15815                                 w1clip_th = w1clipG_th;
15816                                 crsmin_th = crsminG_th;
15817                                 crsminl_th = crsminlG_th;
15818                                 crsminu_th = crsminuG_th;
15819                                 rssi_gain = rssi_gain_default;
15820                         } else {
15821                                 lna1_gain_db = lna1G_gain_db;
15822                                 lna2_gain_db = lna2G_gain_db;
15823                                 rfseq_init_gain = rfseqG_init_gain;
15824                                 init_gaincode = initG_gaincode;
15825                                 clip1hi_gaincode = clip1hiG_gaincode;
15826                                 clip1lo_gaincode = clip1loG_gaincode;
15827                                 nbclip_th = nbclipG_th;
15828                                 w1clip_th = w1clipG_th;
15829                                 crsmin_th = crsminG_th;
15830                                 crsminl_th = crsminlG_th;
15831                                 crsminu_th = crsminuG_th;
15832                                 rssi_gain = rssi_gain_default;
15833                         }
15834                         tia_gain_db = tiaG_gain_db;
15835                         tia_gainbits = tiaG_gainbits;
15836                         clip1md_gaincode = clip1mdG_gaincode;
15837                 } else {
15838                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15839                                 lna1_gain_db = lna1A_gain_db_rev6;
15840                                 lna2_gain_db = lna2A_gain_db_rev6;
15841                                 tia_gain_db = tiaA_gain_db_rev6;
15842                                 tia_gainbits = tiaA_gainbits_rev6;
15843                                 rfseq_init_gain = rfseqA_init_gain_rev6;
15844                                 init_gaincode = initA_gaincode_rev6;
15845                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15846                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
15847                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
15848                                 crsmin_th = crsminA_th_rev6;
15849                                 crsminl_th = crsminlA_th_rev6;
15850                                 if ((pi->pubpi.radiorev == 11) &&
15851                                     (CHSPEC_IS40(pi->radio_chanspec) == 0))
15852                                         crsminu_th = crsminuA_th_rev6_224B0;
15853                                 else
15854                                         crsminu_th = crsminuA_th_rev6;
15855
15856                                 nbclip_th = nbclipA_th_rev6;
15857                                 rssi_gain = rssiA_gain_rev6;
15858                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15859                                 lna1_gain_db = lna1A_gain_db_rev5;
15860                                 lna2_gain_db = lna2A_gain_db_rev5;
15861                                 tia_gain_db = tiaA_gain_db_rev5;
15862                                 tia_gainbits = tiaA_gainbits_rev5;
15863                                 rfseq_init_gain = rfseqA_init_gain_rev5;
15864                                 init_gaincode = initA_gaincode_rev5;
15865                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15866                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
15867                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
15868                                 crsmin_th = crsminA_th_rev5;
15869                                 crsminl_th = crsminlA_th_rev5;
15870                                 crsminu_th = crsminuA_th_rev5;
15871                                 nbclip_th = nbclipA_th_rev5;
15872                                 rssi_gain = rssiA_gain_rev5;
15873                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15874                                 lna1_gain_db = lna1A_gain_db_rev4;
15875                                 lna2_gain_db = lna2A_gain_db_rev4;
15876                                 tia_gain_db = tiaA_gain_db_rev4;
15877                                 tia_gainbits = tiaA_gainbits_rev4;
15878                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15879
15880                                         rfseq_init_gain =
15881                                                 rfseqA_init_gain_rev4_elna;
15882                                         init_gaincode =
15883                                                 initA_gaincode_rev4_elna;
15884                                 } else {
15885                                         rfseq_init_gain = rfseqA_init_gain_rev4;
15886                                         init_gaincode = initA_gaincode_rev4;
15887                                 }
15888                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15889                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
15890                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
15891                                 crsmin_th = crsminA_th_rev4;
15892                                 crsminl_th = crsminlA_th_rev4;
15893                                 crsminu_th = crsminuA_th_rev4;
15894                                 nbclip_th = nbclipA_th_rev4;
15895                                 rssi_gain = rssi_gain_default;
15896                         } else {
15897                                 lna1_gain_db = lna1A_gain_db;
15898                                 lna2_gain_db = lna2A_gain_db;
15899                                 tia_gain_db = tiaA_gain_db;
15900                                 tia_gainbits = tiaA_gainbits;
15901                                 rfseq_init_gain = rfseqA_init_gain;
15902                                 init_gaincode = initA_gaincode;
15903                                 clip1hi_gaincode = clip1hiA_gaincode;
15904                                 clip1md_gaincode = clip1mdA_gaincode;
15905                                 clip1lo_gaincode = clip1loA_gaincode;
15906                                 crsmin_th = crsminA_th;
15907                                 crsminl_th = crsminlA_th;
15908                                 crsminu_th = crsminuA_th;
15909                                 nbclip_th = nbclipA_th;
15910                                 rssi_gain = rssi_gain_default;
15911                         }
15912                         w1clip_th = w1clipA_th;
15913                 }
15914
15915                 write_radio_reg(pi,
15916                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15917                                  RADIO_2056_RX0), 0x17);
15918                 write_radio_reg(pi,
15919                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15920                                  RADIO_2056_RX1), 0x17);
15921
15922                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15923                                 0xf0);
15924                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15925                                 0xf0);
15926
15927                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15928                                 0x0);
15929                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15930                                 0x0);
15931
15932                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15933                                 rssi_gain);
15934                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15935                                 rssi_gain);
15936
15937                 write_radio_reg(pi,
15938                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15939                                  RADIO_2056_RX0), 0x17);
15940                 write_radio_reg(pi,
15941                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15942                                  RADIO_2056_RX1), 0x17);
15943
15944                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15945                                 0xFF);
15946                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15947                                 0xFF);
15948
15949                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15950                                          8, lna1_gain_db);
15951                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15952                                          8, lna1_gain_db);
15953
15954                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15955                                          8, lna2_gain_db);
15956                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15957                                          8, lna2_gain_db);
15958
15959                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15960                                          8, tia_gain_db);
15961                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15962                                          8, tia_gain_db);
15963
15964                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15965                                          8, tia_gainbits);
15966                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15967                                          8, tia_gainbits);
15968
15969                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15970                                          8, &lpf_gain_db);
15971                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15972                                          8, &lpf_gain_db);
15973                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15974                                          8, &lpf_gainbits);
15975                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15976                                          8, &lpf_gainbits);
15977
15978                 write_phy_reg(pi, 0x20, init_gaincode);
15979                 write_phy_reg(pi, 0x2a7, init_gaincode);
15980
15981                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15982                                          pi->pubpi.phy_corenum, 0x106, 16,
15983                                          rfseq_init_gain);
15984
15985                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15986                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15987
15988                 write_phy_reg(pi, 0x24, clip1md_gaincode);
15989                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15990
15991                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15992                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15993
15994                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15995                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15996                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15997
15998                 write_phy_reg(pi, 0x2b, nbclip_th);
15999                 write_phy_reg(pi, 0x41, nbclip_th);
16000
16001                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
16002                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
16003
16004                 write_phy_reg(pi, 0x150, 0x809c);
16005
16006         } else {
16007
16008                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
16009                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
16010
16011                 write_phy_reg(pi, 0x2b, 0x84);
16012                 write_phy_reg(pi, 0x41, 0x84);
16013
16014                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16015                         write_phy_reg(pi, 0x6b, 0x2b);
16016                         write_phy_reg(pi, 0x6c, 0x2b);
16017                         write_phy_reg(pi, 0x6d, 0x9);
16018                         write_phy_reg(pi, 0x6e, 0x9);
16019                 }
16020
16021                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
16022                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
16023                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
16024
16025                 if (CHSPEC_IS20(pi->radio_chanspec)) {
16026                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
16027                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16028
16029                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16030                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16031                 }
16032
16033                 write_phy_reg(pi, 0x150, 0x809c);
16034
16035                 if (pi->nphy_gain_boost)
16036                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16037                             (CHSPEC_IS40(pi->radio_chanspec)))
16038                                 hpf_code = 4;
16039                         else
16040                                 hpf_code = 5;
16041                 else if (CHSPEC_IS40(pi->radio_chanspec))
16042                         hpf_code = 6;
16043                 else
16044                         hpf_code = 7;
16045
16046                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16047                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16048
16049                 for (ctr = 0; ctr < 4; ctr++)
16050                         regval[ctr] = (hpf_code << 8) | 0x7c;
16051                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16052
16053                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16054
16055                 if (pi->nphy_elna_gain_config) {
16056                         regval[0] = 0;
16057                         regval[1] = 1;
16058                         regval[2] = 1;
16059                         regval[3] = 1;
16060                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16061                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16062
16063                         for (ctr = 0; ctr < 4; ctr++)
16064                                 regval[ctr] = (hpf_code << 8) | 0x74;
16065                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16066                 }
16067
16068                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16069                         for (ctr = 0; ctr < 21; ctr++)
16070                                 regval[ctr] = 3 * ctr;
16071                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16072                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16073
16074                         for (ctr = 0; ctr < 21; ctr++)
16075                                 regval[ctr] = (u16) ctr;
16076                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16077                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16078                 }
16079
16080                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16081                                        rfseq_updategainu_events,
16082                                        rfseq_updategainu_dlys,
16083                                        sizeof(rfseq_updategainu_events) /
16084                                        sizeof(rfseq_updategainu_events[0]));
16085
16086                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16087
16088                 if (CHSPEC_IS2G(pi->radio_chanspec))
16089                         mod_phy_reg(pi,
16090                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16091                                     0x7f, 0x4);
16092         }
16093 }
16094
16095 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16096 {
16097         u8 rfseq_rx2tx_events[] = {
16098                 NPHY_RFSEQ_CMD_NOP,
16099                 NPHY_RFSEQ_CMD_RXG_FBW,
16100                 NPHY_RFSEQ_CMD_TR_SWITCH,
16101                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16102                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16103                 NPHY_RFSEQ_CMD_TX_GAIN,
16104                 NPHY_RFSEQ_CMD_EXT_PA
16105         };
16106         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16107         u8 rfseq_tx2rx_events[] = {
16108                 NPHY_RFSEQ_CMD_NOP,
16109                 NPHY_RFSEQ_CMD_EXT_PA,
16110                 NPHY_RFSEQ_CMD_TX_GAIN,
16111                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16112                 NPHY_RFSEQ_CMD_TR_SWITCH,
16113                 NPHY_RFSEQ_CMD_RXG_FBW,
16114                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16115         };
16116         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16117         u8 rfseq_tx2rx_events_rev3[] = {
16118                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16119                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16120                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16121                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16122                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16123                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16124                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16125                 NPHY_REV3_RFSEQ_CMD_END
16126         };
16127         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16128         u8 rfseq_rx2tx_events_rev3[] = {
16129                 NPHY_REV3_RFSEQ_CMD_NOP,
16130                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16131                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16132                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16133                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16134                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16135                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16136                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16137                 NPHY_REV3_RFSEQ_CMD_END
16138         };
16139         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16140
16141         u8 rfseq_rx2tx_events_rev3_ipa[] = {
16142                 NPHY_REV3_RFSEQ_CMD_NOP,
16143                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16144                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16145                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16146                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16147                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16148                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16149                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16150                 NPHY_REV3_RFSEQ_CMD_END
16151         };
16152         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16153         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16154
16155         s16 alpha0, alpha1, alpha2;
16156         s16 beta0, beta1, beta2;
16157         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16158             stbc_data_weights;
16159         u8 chan_freq_range = 0;
16160         u16 dac_control = 0x0002;
16161         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16162         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16163         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16164         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16165         u16 *aux_adc_vmid;
16166         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16167         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16168         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16169         u16 *aux_adc_gain;
16170         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16171         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16172         s32 min_nvar_val = 0x18d;
16173         s32 min_nvar_offset_6mbps = 20;
16174         u8 pdetrange;
16175         u8 triso;
16176         u16 regval;
16177         u16 afectrl_adc_ctrl1_rev7 = 0x20;
16178         u16 afectrl_adc_ctrl2_rev7 = 0x0;
16179         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16180         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16181         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16182         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16183         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16184         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16185         u16 ipalvlshift_3p3_war_en = 0;
16186         u16 rccal_bcap_val, rccal_scap_val;
16187         u16 rccal_tx20_11b_bcap = 0;
16188         u16 rccal_tx20_11b_scap = 0;
16189         u16 rccal_tx20_11n_bcap = 0;
16190         u16 rccal_tx20_11n_scap = 0;
16191         u16 rccal_tx40_11n_bcap = 0;
16192         u16 rccal_tx40_11n_scap = 0;
16193         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16194         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16195         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16196         u16 tx_lpf_bw_ofdm_20mhz = 0;
16197         u16 tx_lpf_bw_ofdm_40mhz = 0;
16198         u16 tx_lpf_bw_11b = 0;
16199         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16200         u16 txgm_idac_bleed = 0;
16201         bool rccal_ovrd = false;
16202         u16 freq;
16203         int coreNum;
16204
16205         if (CHSPEC_IS5G(pi->radio_chanspec))
16206                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16207         else
16208                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16209
16210         if (pi->phyhang_avoid)
16211                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16212
16213         or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16214
16215         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16216
16217                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16218                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16219
16220                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16221                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16222                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16223                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16224                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16225                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16226                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16227                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16228                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16229                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16230                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16231                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16232                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16233                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16234                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16235                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16236                 }
16237
16238                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16239                         write_phy_reg(pi, 0x23f, 0x1b0);
16240                         write_phy_reg(pi, 0x240, 0x1b0);
16241                 }
16242
16243                 if (NREV_GE(pi->pubpi.phy_rev, 8))
16244                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16245
16246                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16247                                          &dac_control);
16248                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16249                                          &dac_control);
16250
16251                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16252                                         1, 0, 32, &leg_data_weights);
16253                 leg_data_weights = leg_data_weights & 0xffffff;
16254                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16255                                          1, 0, 32, &leg_data_weights);
16256
16257                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16258                                          2, 0x15e, 16,
16259                                          rfseq_rx2tx_dacbufpu_rev7);
16260                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16261                                          rfseq_rx2tx_dacbufpu_rev7);
16262
16263                 if (PHY_IPA(pi))
16264                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16265                                                rfseq_rx2tx_events_rev3_ipa,
16266                                                rfseq_rx2tx_dlys_rev3_ipa,
16267                                                sizeof
16268                                                (rfseq_rx2tx_events_rev3_ipa) /
16269                                                sizeof
16270                                                (rfseq_rx2tx_events_rev3_ipa
16271                                                 [0]));
16272
16273                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16274                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16275
16276                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16277                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16278                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16279
16280                 if (PHY_IPA(pi)) {
16281
16282                         if (((pi->pubpi.radiorev == 5)
16283                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16284                             || (pi->pubpi.radiorev == 7)
16285                             || (pi->pubpi.radiorev == 8)) {
16286
16287                                 rccal_bcap_val =
16288                                         read_radio_reg(
16289                                                 pi,
16290                                                 RADIO_2057_RCCAL_BCAP_VAL);
16291                                 rccal_scap_val =
16292                                         read_radio_reg(
16293                                                 pi,
16294                                                 RADIO_2057_RCCAL_SCAP_VAL);
16295
16296                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16297                                 rccal_tx20_11b_scap = rccal_scap_val;
16298
16299                                 if ((pi->pubpi.radiorev == 5) &&
16300                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16301
16302                                         rccal_tx20_11n_bcap = rccal_bcap_val;
16303                                         rccal_tx20_11n_scap = rccal_scap_val;
16304                                         rccal_tx40_11n_bcap = 0xc;
16305                                         rccal_tx40_11n_scap = 0xc;
16306
16307                                         rccal_ovrd = true;
16308
16309                                 } else if ((pi->pubpi.radiorev == 7)
16310                                            || (pi->pubpi.radiorev == 8)) {
16311
16312                                         tx_lpf_bw_ofdm_20mhz = 4;
16313                                         tx_lpf_bw_11b = 1;
16314
16315                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16316                                                 rccal_tx20_11n_bcap = 0xc;
16317                                                 rccal_tx20_11n_scap = 0xc;
16318                                                 rccal_tx40_11n_bcap = 0xa;
16319                                                 rccal_tx40_11n_scap = 0xa;
16320                                         } else {
16321                                                 rccal_tx20_11n_bcap = 0x14;
16322                                                 rccal_tx20_11n_scap = 0x14;
16323                                                 rccal_tx40_11n_bcap = 0xf;
16324                                                 rccal_tx40_11n_scap = 0xf;
16325                                         }
16326
16327                                         rccal_ovrd = true;
16328                                 }
16329                         }
16330
16331                 } else {
16332
16333                         if (pi->pubpi.radiorev == 5) {
16334
16335                                 tx_lpf_bw_ofdm_20mhz = 1;
16336                                 tx_lpf_bw_ofdm_40mhz = 3;
16337
16338                                 rccal_bcap_val =
16339                                         read_radio_reg(
16340                                                 pi,
16341                                                 RADIO_2057_RCCAL_BCAP_VAL);
16342                                 rccal_scap_val =
16343                                         read_radio_reg(
16344                                                 pi,
16345                                                 RADIO_2057_RCCAL_SCAP_VAL);
16346
16347                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16348                                 rccal_tx20_11b_scap = rccal_scap_val;
16349
16350                                 rccal_tx20_11n_bcap = 0x13;
16351                                 rccal_tx20_11n_scap = 0x11;
16352                                 rccal_tx40_11n_bcap = 0x13;
16353                                 rccal_tx40_11n_scap = 0x11;
16354
16355                                 rccal_ovrd = true;
16356                         }
16357                 }
16358
16359                 if (rccal_ovrd) {
16360
16361                         rx2tx_lpf_rc_lut_tx20_11b =
16362                                 (rccal_tx20_11b_bcap << 8) |
16363                                 (rccal_tx20_11b_scap << 3) |
16364                                 tx_lpf_bw_11b;
16365                         rx2tx_lpf_rc_lut_tx20_11n =
16366                                 (rccal_tx20_11n_bcap << 8) |
16367                                 (rccal_tx20_11n_scap << 3) |
16368                                 tx_lpf_bw_ofdm_20mhz;
16369                         rx2tx_lpf_rc_lut_tx40_11n =
16370                                 (rccal_tx40_11n_bcap << 8) |
16371                                 (rccal_tx40_11n_scap << 3) |
16372                                 tx_lpf_bw_ofdm_40mhz;
16373
16374                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16375                                 wlc_phy_table_write_nphy(
16376                                         pi, NPHY_TBL_ID_RFSEQ,
16377                                         1,
16378                                         0x152 + coreNum * 0x10,
16379                                         16,
16380                                         &rx2tx_lpf_rc_lut_tx20_11b);
16381                                 wlc_phy_table_write_nphy(
16382                                         pi, NPHY_TBL_ID_RFSEQ,
16383                                         1,
16384                                         0x153 + coreNum * 0x10,
16385                                         16,
16386                                         &rx2tx_lpf_rc_lut_tx20_11n);
16387                                 wlc_phy_table_write_nphy(
16388                                         pi, NPHY_TBL_ID_RFSEQ,
16389                                         1,
16390                                         0x154 + coreNum * 0x10,
16391                                         16,
16392                                         &rx2tx_lpf_rc_lut_tx20_11n);
16393                                 wlc_phy_table_write_nphy(
16394                                         pi, NPHY_TBL_ID_RFSEQ,
16395                                         1,
16396                                         0x155 + coreNum * 0x10,
16397                                         16,
16398                                         &rx2tx_lpf_rc_lut_tx40_11n);
16399                                 wlc_phy_table_write_nphy(
16400                                         pi, NPHY_TBL_ID_RFSEQ,
16401                                         1,
16402                                         0x156 + coreNum * 0x10,
16403                                         16,
16404                                         &rx2tx_lpf_rc_lut_tx40_11n);
16405                                 wlc_phy_table_write_nphy(
16406                                         pi, NPHY_TBL_ID_RFSEQ,
16407                                         1,
16408                                         0x157 + coreNum * 0x10,
16409                                         16,
16410                                         &rx2tx_lpf_rc_lut_tx40_11n);
16411                                 wlc_phy_table_write_nphy(
16412                                         pi, NPHY_TBL_ID_RFSEQ,
16413                                         1,
16414                                         0x158 + coreNum * 0x10,
16415                                         16,
16416                                         &rx2tx_lpf_rc_lut_tx40_11n);
16417                                 wlc_phy_table_write_nphy(
16418                                         pi, NPHY_TBL_ID_RFSEQ,
16419                                         1,
16420                                         0x159 + coreNum * 0x10,
16421                                         16,
16422                                         &rx2tx_lpf_rc_lut_tx40_11n);
16423                         }
16424
16425                         wlc_phy_rfctrl_override_nphy_rev7(
16426                                 pi, (0x1 << 4),
16427                                 1, 0x3, 0,
16428                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16429                 }
16430
16431                 write_phy_reg(pi, 0x32f, 0x3);
16432
16433                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16434                         wlc_phy_rfctrl_override_nphy_rev7(
16435                                 pi, (0x1 << 2),
16436                                 1, 0x3, 0,
16437                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16438
16439                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16440                     (pi->pubpi.radiorev == 6)) {
16441                         if ((pi->sh->sromrev >= 8)
16442                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16443                                 ipalvlshift_3p3_war_en = 1;
16444
16445                         if (ipalvlshift_3p3_war_en) {
16446                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16447                                                 0x5);
16448                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16449                                                 0x30);
16450                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16451                                 or_radio_reg(pi,
16452                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16453                                              0x1);
16454                                 or_radio_reg(pi,
16455                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16456                                              0x1);
16457
16458                                 ipa2g_mainbias = 0x1f;
16459
16460                                 ipa2g_casconv = 0x6f;
16461
16462                                 ipa2g_biasfilt = 0xaa;
16463                         } else {
16464
16465                                 ipa2g_mainbias = 0x2b;
16466
16467                                 ipa2g_casconv = 0x7f;
16468
16469                                 ipa2g_biasfilt = 0xee;
16470                         }
16471
16472                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16473                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16474                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16475                                                          coreNum, IPA2G_IMAIN,
16476                                                          ipa2g_mainbias);
16477                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16478                                                          coreNum, IPA2G_CASCONV,
16479                                                          ipa2g_casconv);
16480                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16481                                                          coreNum,
16482                                                          IPA2G_BIAS_FILTER,
16483                                                          ipa2g_biasfilt);
16484                                 }
16485                         }
16486                 }
16487
16488                 if (PHY_IPA(pi)) {
16489                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16490                                 if ((pi->pubpi.radiorev == 3)
16491                                     || (pi->pubpi.radiorev == 4)
16492                                     || (pi->pubpi.radiorev == 6))
16493                                         txgm_idac_bleed = 0x7f;
16494
16495                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16496                                         if (txgm_idac_bleed != 0)
16497                                                 WRITE_RADIO_REG4(
16498                                                         pi, RADIO_2057,
16499                                                         CORE, coreNum,
16500                                                         TXGM_IDAC_BLEED,
16501                                                         txgm_idac_bleed);
16502                                 }
16503
16504                                 if (pi->pubpi.radiorev == 5) {
16505
16506                                         for (coreNum = 0; coreNum <= 1;
16507                                              coreNum++) {
16508                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16509                                                                  CORE, coreNum,
16510                                                                  IPA2G_CASCONV,
16511                                                                  0x13);
16512                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16513                                                                  CORE, coreNum,
16514                                                                  IPA2G_IMAIN,
16515                                                                  0x1f);
16516                                                 WRITE_RADIO_REG4(
16517                                                         pi, RADIO_2057,
16518                                                         CORE, coreNum,
16519                                                         IPA2G_BIAS_FILTER,
16520                                                         0xee);
16521                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16522                                                                  CORE, coreNum,
16523                                                                  PAD2G_IDACS,
16524                                                                  0x8a);
16525                                                 WRITE_RADIO_REG4(
16526                                                         pi, RADIO_2057,
16527                                                         CORE, coreNum,
16528                                                         PAD_BIAS_FILTER_BWS,
16529                                                         0x3e);
16530                                         }
16531
16532                                 } else if ((pi->pubpi.radiorev == 7)
16533                                            || (pi->pubpi.radiorev == 8)) {
16534
16535                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
16536                                             0) {
16537                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16538                                                                  CORE, 0,
16539                                                                  IPA2G_IMAIN,
16540                                                                  0x14);
16541                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16542                                                                  CORE, 1,
16543                                                                  IPA2G_IMAIN,
16544                                                                  0x12);
16545                                         } else {
16546                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16547                                                                  CORE, 0,
16548                                                                  IPA2G_IMAIN,
16549                                                                  0x16);
16550                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16551                                                                  CORE, 1,
16552                                                                  IPA2G_IMAIN,
16553                                                                  0x16);
16554                                         }
16555                                 }
16556
16557                         } else {
16558                                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16559                                                         pi->radio_chanspec));
16560                                 if (((freq >= 5180) && (freq <= 5230))
16561                                     || ((freq >= 5745) && (freq <= 5805))) {
16562                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16563                                                          0, IPA5G_BIAS_FILTER,
16564                                                          0xff);
16565                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16566                                                          1, IPA5G_BIAS_FILTER,
16567                                                          0xff);
16568                                 }
16569                         }
16570                 } else {
16571
16572                         if (pi->pubpi.radiorev != 5) {
16573                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16574                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16575                                                          coreNum,
16576                                                          TXMIX2G_TUNE_BOOST_PU,
16577                                                          0x61);
16578                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16579                                                          coreNum,
16580                                                          TXGM_IDAC_BLEED, 0x70);
16581                                 }
16582                         }
16583                 }
16584
16585                 if (pi->pubpi.radiorev == 4) {
16586                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16587                                                  0x05, 16,
16588                                                  &afectrl_adc_ctrl1_rev7);
16589                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16590                                                  0x15, 16,
16591                                                  &afectrl_adc_ctrl1_rev7);
16592
16593                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16594                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16595                                                  AFE_VCM_CAL_MASTER, 0x0);
16596                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16597                                                  AFE_SET_VCM_I, 0x3f);
16598                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16599                                                  AFE_SET_VCM_Q, 0x3f);
16600                         }
16601                 } else {
16602                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16603                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16604                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16605                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16606
16607                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16608                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16609                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16610                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16611
16612                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16613                                                  0x05, 16,
16614                                                  &afectrl_adc_ctrl2_rev7);
16615                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16616                                                  0x15, 16,
16617                                                  &afectrl_adc_ctrl2_rev7);
16618
16619                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16620                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16621                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16622                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16623                 }
16624
16625                 write_phy_reg(pi, 0x6a, 0x2);
16626
16627                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16628                                          &min_nvar_offset_6mbps);
16629
16630                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16631                                          &rfseq_pktgn_lpf_hpc_rev7);
16632
16633                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16634                                          &rfseq_pktgn_lpf_h_hpc_rev7);
16635
16636                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16637                                          &rfseq_htpktgn_lpf_hpc_rev7);
16638
16639                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16640                                          &rfseq_cckpktgn_lpf_hpc_rev7);
16641
16642                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16643                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
16644
16645                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16646                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
16647
16648                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16649                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16650                                                  32, &min_nvar_val);
16651                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16652                                                  127, 32, &min_nvar_val);
16653                 } else {
16654                         min_nvar_val = noise_var_tbl_rev7[3];
16655                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16656                                                  32, &min_nvar_val);
16657
16658                         min_nvar_val = noise_var_tbl_rev7[127];
16659                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16660                                                  127, 32, &min_nvar_val);
16661                 }
16662
16663                 wlc_phy_workarounds_nphy_gainctrl(pi);
16664
16665                 pdetrange =
16666                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16667                         pdetrange : pi->srom_fem2g.pdetrange;
16668
16669                 if (pdetrange == 0) {
16670                         chan_freq_range =
16671                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16672                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16673                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16674                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16675                                 aux_adc_gain_rev7[3] = 2;
16676                         } else {
16677                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16678                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16679                                 aux_adc_gain_rev7[3] = 3;
16680                         }
16681                 } else if (pdetrange == 1) {
16682                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16683                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
16684                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
16685                                 aux_adc_gain_rev7[3] = 2;
16686                         } else {
16687                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
16688                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
16689                                 aux_adc_gain_rev7[3] = 1;
16690                         }
16691                 } else if (pdetrange == 2) {
16692                         if (pi->pubpi.radioid == BCM2057_ID) {
16693                                 if ((pi->pubpi.radiorev == 5)
16694                                     || (pi->pubpi.radiorev == 7)
16695                                     || (pi->pubpi.radiorev == 8)) {
16696                                         if (chan_freq_range ==
16697                                             WL_CHAN_FREQ_RANGE_2G) {
16698                                                 aux_adc_vmid_rev7_core0[3] =
16699                                                         0x8c;
16700                                                 aux_adc_vmid_rev7_core1[3] =
16701                                                         0x8c;
16702                                                 aux_adc_gain_rev7[3] = 0;
16703                                         } else {
16704                                                 aux_adc_vmid_rev7_core0[3] =
16705                                                         0x96;
16706                                                 aux_adc_vmid_rev7_core1[3] =
16707                                                         0x96;
16708                                                 aux_adc_gain_rev7[3] = 0;
16709                                         }
16710                                 }
16711                         }
16712
16713                 } else if (pdetrange == 3) {
16714                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16715                                 aux_adc_vmid_rev7_core0[3] = 0x89;
16716                                 aux_adc_vmid_rev7_core1[3] = 0x89;
16717                                 aux_adc_gain_rev7[3] = 0;
16718                         }
16719
16720                 } else if (pdetrange == 5) {
16721
16722                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16723                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16724                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16725                                 aux_adc_gain_rev7[3] = 3;
16726                         } else {
16727                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16728                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16729                                 aux_adc_gain_rev7[3] = 2;
16730                         }
16731                 }
16732
16733                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16734                                          &aux_adc_vmid_rev7_core0);
16735                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16736                                          &aux_adc_vmid_rev7_core1);
16737                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16738                                          &aux_adc_gain_rev7);
16739                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16740                                          &aux_adc_gain_rev7);
16741
16742         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16743
16744                 write_phy_reg(pi, 0x23f, 0x1f8);
16745                 write_phy_reg(pi, 0x240, 0x1f8);
16746
16747                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16748                                         1, 0, 32, &leg_data_weights);
16749                 leg_data_weights = leg_data_weights & 0xffffff;
16750                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16751                                          1, 0, 32, &leg_data_weights);
16752
16753                 alpha0 = 293;
16754                 alpha1 = 435;
16755                 alpha2 = 261;
16756                 beta0 = 366;
16757                 beta1 = 205;
16758                 beta2 = 32;
16759                 write_phy_reg(pi, 0x145, alpha0);
16760                 write_phy_reg(pi, 0x146, alpha1);
16761                 write_phy_reg(pi, 0x147, alpha2);
16762                 write_phy_reg(pi, 0x148, beta0);
16763                 write_phy_reg(pi, 0x149, beta1);
16764                 write_phy_reg(pi, 0x14a, beta2);
16765
16766                 write_phy_reg(pi, 0x38, 0xC);
16767                 write_phy_reg(pi, 0x2ae, 0xC);
16768
16769                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16770                                        rfseq_tx2rx_events_rev3,
16771                                        rfseq_tx2rx_dlys_rev3,
16772                                        sizeof(rfseq_tx2rx_events_rev3) /
16773                                        sizeof(rfseq_tx2rx_events_rev3[0]));
16774
16775                 if (PHY_IPA(pi))
16776                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16777                                                rfseq_rx2tx_events_rev3_ipa,
16778                                                rfseq_rx2tx_dlys_rev3_ipa,
16779                                                sizeof
16780                                                (rfseq_rx2tx_events_rev3_ipa) /
16781                                                sizeof
16782                                                (rfseq_rx2tx_events_rev3_ipa
16783                                                 [0]));
16784
16785                 if ((pi->sh->hw_phyrxchain != 0x3) &&
16786                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16787
16788                         if (PHY_IPA(pi)) {
16789                                 rfseq_rx2tx_dlys_rev3[5] = 59;
16790                                 rfseq_rx2tx_dlys_rev3[6] = 1;
16791                                 rfseq_rx2tx_events_rev3[7] =
16792                                         NPHY_REV3_RFSEQ_CMD_END;
16793                         }
16794
16795                         wlc_phy_set_rfseq_nphy(
16796                                 pi, NPHY_RFSEQ_RX2TX,
16797                                 rfseq_rx2tx_events_rev3,
16798                                 rfseq_rx2tx_dlys_rev3,
16799                                 sizeof(rfseq_rx2tx_events_rev3) /
16800                                 sizeof(rfseq_rx2tx_events_rev3[0]));
16801                 }
16802
16803                 if (CHSPEC_IS2G(pi->radio_chanspec))
16804                         write_phy_reg(pi, 0x6a, 0x2);
16805                 else
16806                         write_phy_reg(pi, 0x6a, 0x9c40);
16807
16808                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16809
16810                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16811                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16812                                                  32, &min_nvar_val);
16813                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16814                                                  127, 32, &min_nvar_val);
16815                 } else {
16816                         min_nvar_val = noise_var_tbl_rev3[3];
16817                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16818                                                  32, &min_nvar_val);
16819
16820                         min_nvar_val = noise_var_tbl_rev3[127];
16821                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16822                                                  127, 32, &min_nvar_val);
16823                 }
16824
16825                 wlc_phy_workarounds_nphy_gainctrl(pi);
16826
16827                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16828                                          &dac_control);
16829                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16830                                          &dac_control);
16831
16832                 pdetrange =
16833                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16834                         pdetrange : pi->srom_fem2g.pdetrange;
16835
16836                 if (pdetrange == 0) {
16837                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16838                                 aux_adc_vmid = aux_adc_vmid_rev4;
16839                                 aux_adc_gain = aux_adc_gain_rev4;
16840                         } else {
16841                                 aux_adc_vmid = aux_adc_vmid_rev3;
16842                                 aux_adc_gain = aux_adc_gain_rev3;
16843                         }
16844                         chan_freq_range =
16845                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16846                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16847                                 switch (chan_freq_range) {
16848                                 case WL_CHAN_FREQ_RANGE_5GL:
16849                                         aux_adc_vmid[3] = 0x89;
16850                                         aux_adc_gain[3] = 0;
16851                                         break;
16852                                 case WL_CHAN_FREQ_RANGE_5GM:
16853                                         aux_adc_vmid[3] = 0x89;
16854                                         aux_adc_gain[3] = 0;
16855                                         break;
16856                                 case WL_CHAN_FREQ_RANGE_5GH:
16857                                         aux_adc_vmid[3] = 0x89;
16858                                         aux_adc_gain[3] = 0;
16859                                         break;
16860                                 default:
16861                                         break;
16862                                 }
16863                         }
16864                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16865                                                  0x08, 16, aux_adc_vmid);
16866                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16867                                                  0x18, 16, aux_adc_vmid);
16868                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16869                                                  0x0c, 16, aux_adc_gain);
16870                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16871                                                  0x1c, 16, aux_adc_gain);
16872                 } else if (pdetrange == 1) {
16873                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16874                                                  0x08, 16, sk_adc_vmid);
16875                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16876                                                  0x18, 16, sk_adc_vmid);
16877                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16878                                                  0x0c, 16, sk_adc_gain);
16879                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16880                                                  0x1c, 16, sk_adc_gain);
16881                 } else if (pdetrange == 2) {
16882
16883                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16884                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16885
16886                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16887                                 chan_freq_range =
16888                                         wlc_phy_get_chan_freq_range_nphy(pi, 0);
16889                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16890                                         bcm_adc_vmid[3] = 0x8e;
16891                                         bcm_adc_gain[3] = 0x03;
16892                                 } else {
16893                                         bcm_adc_vmid[3] = 0x94;
16894                                         bcm_adc_gain[3] = 0x03;
16895                                 }
16896                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16897                                 bcm_adc_vmid[3] = 0x84;
16898                                 bcm_adc_gain[3] = 0x02;
16899                         }
16900
16901                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16902                                                  0x08, 16, bcm_adc_vmid);
16903                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16904                                                  0x18, 16, bcm_adc_vmid);
16905                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16906                                                  0x0c, 16, bcm_adc_gain);
16907                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16908                                                  0x1c, 16, bcm_adc_gain);
16909                 } else if (pdetrange == 3) {
16910                         chan_freq_range =
16911                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16912                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16913                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16914
16915                                 u16 auxadc_vmid[] = {
16916                                         0xa2, 0xb4, 0xb4, 0x270
16917                                 };
16918                                 u16 auxadc_gain[] = {
16919                                         0x02, 0x02, 0x02, 0x00
16920                                 };
16921
16922                                 wlc_phy_table_write_nphy(pi,
16923                                                          NPHY_TBL_ID_AFECTRL, 4,
16924                                                          0x08, 16, auxadc_vmid);
16925                                 wlc_phy_table_write_nphy(pi,
16926                                                          NPHY_TBL_ID_AFECTRL, 4,
16927                                                          0x18, 16, auxadc_vmid);
16928                                 wlc_phy_table_write_nphy(pi,
16929                                                          NPHY_TBL_ID_AFECTRL, 4,
16930                                                          0x0c, 16, auxadc_gain);
16931                                 wlc_phy_table_write_nphy(pi,
16932                                                          NPHY_TBL_ID_AFECTRL, 4,
16933                                                          0x1c, 16, auxadc_gain);
16934                         }
16935                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16936                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16937                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16938                         u16 Vmid[2], Av[2];
16939
16940                         chan_freq_range =
16941                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16942                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16943                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16944                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16945                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16946                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16947                         } else {
16948                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16949                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16950                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16951                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16952                         }
16953
16954                         bcm_adc_vmid[3] = Vmid[0];
16955                         bcm_adc_gain[3] = Av[0];
16956                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16957                                                  0x08, 16, bcm_adc_vmid);
16958                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16959                                                  0x0c, 16, bcm_adc_gain);
16960
16961                         bcm_adc_vmid[3] = Vmid[1];
16962                         bcm_adc_gain[3] = Av[1];
16963                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16964                                                  0x18, 16, bcm_adc_vmid);
16965                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16966                                                  0x1c, 16, bcm_adc_gain);
16967                 }
16968
16969                 write_radio_reg(pi,
16970                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16971                                 0x0);
16972                 write_radio_reg(pi,
16973                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16974                                 0x0);
16975
16976                 write_radio_reg(pi,
16977                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16978                                 0x6);
16979                 write_radio_reg(pi,
16980                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16981                                 0x6);
16982
16983                 write_radio_reg(pi,
16984                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16985                                 0x7);
16986                 write_radio_reg(pi,
16987                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16988                                 0x7);
16989
16990                 write_radio_reg(pi,
16991                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16992                                 0x88);
16993                 write_radio_reg(pi,
16994                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16995                                 0x88);
16996
16997                 write_radio_reg(pi,
16998                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16999                                 0x0);
17000                 write_radio_reg(pi,
17001                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
17002                                 0x0);
17003
17004                 write_radio_reg(pi,
17005                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
17006                                 0x0);
17007                 write_radio_reg(pi,
17008                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
17009                                 0x0);
17010
17011                 triso =
17012                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
17013                         triso : pi->srom_fem2g.triso;
17014                 if (triso == 7) {
17015                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
17016                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
17017                 }
17018
17019                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
17020
17021                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
17022                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
17023                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
17024                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
17025                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
17026                         nss1_data_weights = 0x00088888;
17027                         ht_data_weights = 0x00088888;
17028                         stbc_data_weights = 0x00088888;
17029                 } else {
17030                         nss1_data_weights = 0x88888888;
17031                         ht_data_weights = 0x88888888;
17032                         stbc_data_weights = 0x88888888;
17033                 }
17034                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17035                                          1, 1, 32, &nss1_data_weights);
17036                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17037                                          1, 2, 32, &ht_data_weights);
17038                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17039                                          1, 3, 32, &stbc_data_weights);
17040
17041                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17042                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
17043                                 write_radio_reg(pi,
17044                                                 RADIO_2056_TX_GMBB_IDAC |
17045                                                 RADIO_2056_TX0, 0x70);
17046                                 write_radio_reg(pi,
17047                                                 RADIO_2056_TX_GMBB_IDAC |
17048                                                 RADIO_2056_TX1, 0x70);
17049                         }
17050                 }
17051
17052                 if (!pi->edcrs_threshold_lock) {
17053                         write_phy_reg(pi, 0x224, 0x3eb);
17054                         write_phy_reg(pi, 0x225, 0x3eb);
17055                         write_phy_reg(pi, 0x226, 0x341);
17056                         write_phy_reg(pi, 0x227, 0x341);
17057                         write_phy_reg(pi, 0x228, 0x42b);
17058                         write_phy_reg(pi, 0x229, 0x42b);
17059                         write_phy_reg(pi, 0x22a, 0x381);
17060                         write_phy_reg(pi, 0x22b, 0x381);
17061                         write_phy_reg(pi, 0x22c, 0x42b);
17062                         write_phy_reg(pi, 0x22d, 0x42b);
17063                         write_phy_reg(pi, 0x22e, 0x381);
17064                         write_phy_reg(pi, 0x22f, 0x381);
17065                 }
17066
17067                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17068
17069                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17070                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17071                                               MHF4_BPHY_TXCORE0,
17072                                               MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17073                 }
17074         } else {
17075
17076                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17077                     (pi->sh->boardtype == 0x8b)) {
17078                         uint i;
17079                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17080                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17081                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
17082                 }
17083
17084                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17085                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17086                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17087                 } else {
17088                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17089                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17090                 }
17091
17092                 regval = 0x000a;
17093                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17094                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17095
17096                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17097                         regval = 0xcdaa;
17098                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17099                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17100                 }
17101
17102                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17103                         regval = 0x0000;
17104                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17105                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17106
17107                         regval = 0x7aab;
17108                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17109                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17110
17111                         regval = 0x0800;
17112                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17113                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17114                 }
17115
17116                 write_phy_reg(pi, 0xf8, 0x02d8);
17117                 write_phy_reg(pi, 0xf9, 0x0301);
17118                 write_phy_reg(pi, 0xfa, 0x02d8);
17119                 write_phy_reg(pi, 0xfb, 0x0301);
17120
17121                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17122                                        rfseq_rx2tx_dlys,
17123                                        sizeof(rfseq_rx2tx_events) /
17124                                        sizeof(rfseq_rx2tx_events[0]));
17125
17126                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17127                                        rfseq_tx2rx_dlys,
17128                                        sizeof(rfseq_tx2rx_events) /
17129                                        sizeof(rfseq_tx2rx_events[0]));
17130
17131                 wlc_phy_workarounds_nphy_gainctrl(pi);
17132
17133                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17134
17135                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17136                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17137                                                MHF3_NPHY_MLADV_WAR,
17138                                                MHF3_NPHY_MLADV_WAR,
17139                                                BRCM_BAND_ALL);
17140
17141                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17142                         write_phy_reg(pi, 0x1e3, 0x0);
17143                         write_phy_reg(pi, 0x1e4, 0x0);
17144                 }
17145
17146                 if (NREV_LT(pi->pubpi.phy_rev, 2))
17147                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17148
17149                 alpha0 = 293;
17150                 alpha1 = 435;
17151                 alpha2 = 261;
17152                 beta0 = 366;
17153                 beta1 = 205;
17154                 beta2 = 32;
17155                 write_phy_reg(pi, 0x145, alpha0);
17156                 write_phy_reg(pi, 0x146, alpha1);
17157                 write_phy_reg(pi, 0x147, alpha2);
17158                 write_phy_reg(pi, 0x148, beta0);
17159                 write_phy_reg(pi, 0x149, beta1);
17160                 write_phy_reg(pi, 0x14a, beta2);
17161
17162                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17163                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17164
17165                         write_phy_reg(pi, 0x192, 0xb5);
17166                         write_phy_reg(pi, 0x193, 0xa4);
17167                         write_phy_reg(pi, 0x194, 0x0);
17168                 }
17169
17170                 if (NREV_IS(pi->pubpi.phy_rev, 2))
17171                         mod_phy_reg(pi, 0x221,
17172                                     NPHY_FORCESIG_DECODEGATEDCLKS,
17173                                     NPHY_FORCESIG_DECODEGATEDCLKS);
17174         }
17175
17176         if (pi->phyhang_avoid)
17177                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17178 }
17179
17180 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17181 {
17182         int j, type = 2;
17183         u16 addr_offset = 0x2c5;
17184
17185         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17186                 write_phy_reg(pi, addr_offset + j,
17187                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17188 }
17189
17190 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17191 {
17192
17193         if (write == 0) {
17194                 vals[0] = read_phy_reg(pi, 0x2c);
17195                 vals[1] = read_phy_reg(pi, 0x42);
17196         } else {
17197                 write_phy_reg(pi, 0x2c, vals[0]);
17198                 write_phy_reg(pi, 0x42, vals[1]);
17199         }
17200 }
17201
17202 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17203 {
17204         u8 core;
17205
17206         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17207                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17208                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17209                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17210                                                  TX_SSI_MASTER, 0x5);
17211                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17212                                                  TX_SSI_MUX, 0xe);
17213
17214                                 if (pi->pubpi.radiorev != 5)
17215                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17216                                                          core, TSSIA, 0);
17217
17218                                 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17219                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17220                                                          core, TSSIG, 0x1);
17221                                 else
17222                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17223                                                          core, TSSIG, 0x31);
17224                         } else {
17225                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17226                                                  TX_SSI_MASTER, 0x9);
17227                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17228                                                  TX_SSI_MUX, 0xc);
17229                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17230                                                  TSSIG, 0);
17231
17232                                 if (pi->pubpi.radiorev != 5) {
17233                                         if (!NREV_IS(pi->pubpi.phy_rev, 7))
17234                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17235                                                                  TX, core,
17236                                                                  TSSIA, 0x1);
17237                                         else
17238                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17239                                                                  TX, core,
17240                                                                  TSSIA, 0x31);
17241                                 }
17242                         }
17243                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17244                                          0);
17245                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17246                                          0);
17247                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17248                                          0x3);
17249                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17250                                          0x0);
17251                 }
17252         } else {
17253                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17254                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17255                                 0x80);
17256                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17257                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17258
17259                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17260                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17261                                          0x0);
17262                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17263                                          0x0);
17264                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17265                                          0x3);
17266                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17267                                          0x0);
17268                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17269                                          0x8);
17270                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17271                                          0x0);
17272                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17273                                          0x0);
17274
17275                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17276                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17277                                                  TX_SSI_MASTER, 0x5);
17278
17279                                 if (pi->pubpi.radiorev != 5)
17280                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17281                                                          core, TSSIA, 0x0);
17282                                 if (NREV_GE(pi->pubpi.phy_rev, 5))
17283                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17284                                                          core, TSSIG, 0x31);
17285                                 else
17286                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17287                                                          core, TSSIG, 0x11);
17288                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17289                                                  TX_SSI_MUX, 0xe);
17290                         } else {
17291                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17292                                                  TX_SSI_MASTER, 0x9);
17293                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17294                                                  TSSIA, 0x31);
17295                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17296                                                  TSSIG, 0x0);
17297                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17298                                                  TX_SSI_MUX, 0xc);
17299                         }
17300                 }
17301         }
17302 }
17303
17304 static void
17305 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17306                              u8 core_mask, u8 off)
17307 {
17308         u8 core_num;
17309         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17310                 0, val_mask = 0;
17311         u8 shift = 0, val_shift = 0;
17312
17313         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17314
17315                 en_mask = field;
17316                 for (core_num = 0; core_num < 2; core_num++) {
17317
17318                         switch (field) {
17319                         case (0x1 << 1):
17320                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17321                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17322                                 val_mask = (0x1 << 0);
17323                                 val_shift = 0;
17324                                 break;
17325                         case (0x1 << 2):
17326                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17327                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17328                                 val_mask = (0x1 << 1);
17329                                 val_shift = 1;
17330                                 break;
17331                         case (0x1 << 3):
17332                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17333                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17334                                 val_mask = (0x1 << 2);
17335                                 val_shift = 2;
17336                                 break;
17337                         case (0x1 << 4):
17338                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17339                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17340                                 val_mask = (0x1 << 4);
17341                                 val_shift = 4;
17342                                 break;
17343                         case (0x1 << 5):
17344                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17345                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17346                                 val_mask = (0x1 << 5);
17347                                 val_shift = 5;
17348                                 break;
17349                         case (0x1 << 6):
17350                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17351                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17352                                 val_mask = (0x1 << 6);
17353                                 val_shift = 6;
17354                                 break;
17355                         case (0x1 << 7):
17356                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17357                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17358                                 val_mask = (0x1 << 7);
17359                                 val_shift = 7;
17360                                 break;
17361                         case (0x1 << 8):
17362                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17363                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17364                                 val_mask = (0x7 << 8);
17365                                 val_shift = 8;
17366                                 break;
17367                         case (0x1 << 11):
17368                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17369                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17370                                 val_mask = (0x7 << 13);
17371                                 val_shift = 13;
17372                                 break;
17373
17374                         case (0x1 << 9):
17375                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17376                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17377                                 val_mask = (0x7 << 0);
17378                                 val_shift = 0;
17379                                 break;
17380
17381                         case (0x1 << 10):
17382                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17383                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17384                                 val_mask = (0x7 << 4);
17385                                 val_shift = 4;
17386                                 break;
17387
17388                         case (0x1 << 12):
17389                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17390                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17391                                 val_mask = (0xffff << 0);
17392                                 val_shift = 0;
17393                                 break;
17394                         case (0x1 << 13):
17395                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17396                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17397                                 val_mask = (0xffff << 0);
17398                                 val_shift = 0;
17399                                 break;
17400                         case (0x1 << 14):
17401                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17402                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17403                                 val_mask = (0x3 << 6);
17404                                 val_shift = 6;
17405                                 break;
17406                         case (0x1 << 0):
17407                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17408                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17409                                 val_mask = (0x1 << 15);
17410                                 val_shift = 15;
17411                                 break;
17412                         default:
17413                                 addr = 0xffff;
17414                                 break;
17415                         }
17416
17417                         if (off) {
17418                                 and_phy_reg(pi, en_addr, ~en_mask);
17419                                 and_phy_reg(pi, val_addr, ~val_mask);
17420                         } else {
17421
17422                                 if ((core_mask == 0)
17423                                     || (core_mask & (1 << core_num))) {
17424                                         or_phy_reg(pi, en_addr, en_mask);
17425
17426                                         if (addr != 0xffff)
17427                                                 mod_phy_reg(pi, val_addr,
17428                                                             val_mask,
17429                                                             (value <<
17430                                                              val_shift));
17431                                 }
17432                         }
17433                 }
17434         } else {
17435
17436                 if (off) {
17437                         and_phy_reg(pi, 0xec, ~field);
17438                         value = 0x0;
17439                 } else {
17440                         or_phy_reg(pi, 0xec, field);
17441                 }
17442
17443                 for (core_num = 0; core_num < 2; core_num++) {
17444
17445                         switch (field) {
17446                         case (0x1 << 1):
17447                         case (0x1 << 9):
17448                         case (0x1 << 12):
17449                         case (0x1 << 13):
17450                         case (0x1 << 14):
17451                                 addr = 0x78;
17452
17453                                 core_mask = 0x1;
17454                                 break;
17455                         case (0x1 << 2):
17456                         case (0x1 << 3):
17457                         case (0x1 << 4):
17458                         case (0x1 << 5):
17459                         case (0x1 << 6):
17460                         case (0x1 << 7):
17461                         case (0x1 << 8):
17462                                 addr = (core_num == 0) ? 0x7a : 0x7d;
17463                                 break;
17464                         case (0x1 << 10):
17465                                 addr = (core_num == 0) ? 0x7b : 0x7e;
17466                                 break;
17467                         case (0x1 << 11):
17468                                 addr = (core_num == 0) ? 0x7c : 0x7f;
17469                                 break;
17470                         default:
17471                                 addr = 0xffff;
17472                         }
17473
17474                         switch (field) {
17475                         case (0x1 << 1):
17476                                 mask = (0x7 << 3);
17477                                 shift = 3;
17478                                 break;
17479                         case (0x1 << 9):
17480                                 mask = (0x1 << 2);
17481                                 shift = 2;
17482                                 break;
17483                         case (0x1 << 12):
17484                                 mask = (0x1 << 8);
17485                                 shift = 8;
17486                                 break;
17487                         case (0x1 << 13):
17488                                 mask = (0x1 << 9);
17489                                 shift = 9;
17490                                 break;
17491                         case (0x1 << 14):
17492                                 mask = (0xf << 12);
17493                                 shift = 12;
17494                                 break;
17495                         case (0x1 << 2):
17496                                 mask = (0x1 << 0);
17497                                 shift = 0;
17498                                 break;
17499                         case (0x1 << 3):
17500                                 mask = (0x1 << 1);
17501                                 shift = 1;
17502                                 break;
17503                         case (0x1 << 4):
17504                                 mask = (0x1 << 2);
17505                                 shift = 2;
17506                                 break;
17507                         case (0x1 << 5):
17508                                 mask = (0x3 << 4);
17509                                 shift = 4;
17510                                 break;
17511                         case (0x1 << 6):
17512                                 mask = (0x3 << 6);
17513                                 shift = 6;
17514                                 break;
17515                         case (0x1 << 7):
17516                                 mask = (0x1 << 8);
17517                                 shift = 8;
17518                                 break;
17519                         case (0x1 << 8):
17520                                 mask = (0x1 << 9);
17521                                 shift = 9;
17522                                 break;
17523                         case (0x1 << 10):
17524                                 mask = 0x1fff;
17525                                 shift = 0x0;
17526                                 break;
17527                         case (0x1 << 11):
17528                                 mask = 0x1fff;
17529                                 shift = 0x0;
17530                                 break;
17531                         default:
17532                                 mask = 0x0;
17533                                 shift = 0x0;
17534                                 break;
17535                         }
17536
17537                         if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17538                                 mod_phy_reg(pi, addr, mask, (value << shift));
17539                 }
17540
17541                 or_phy_reg(pi, 0xec, (0x1 << 0));
17542                 or_phy_reg(pi, 0x78, (0x1 << 0));
17543                 udelay(1);
17544                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17545         }
17546 }
17547
17548 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17549 {
17550         s32 rssi_buf[4];
17551         s32 int_val;
17552
17553         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17554
17555                 return;
17556
17557         if (PHY_IPA(pi))
17558                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17559
17560         if (NREV_GE(pi->pubpi.phy_rev, 7))
17561                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17562                                                   0, 0x3, 0,
17563                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17564         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17565                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17566
17567         wlc_phy_stopplayback_nphy(pi);
17568
17569         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17570
17571         udelay(20);
17572         int_val =
17573                 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17574                                        1);
17575         wlc_phy_stopplayback_nphy(pi);
17576         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17577
17578         if (NREV_GE(pi->pubpi.phy_rev, 7))
17579                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17580                                                   0, 0x3, 1,
17581                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17582         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17583                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17584
17585         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17586
17587                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17588                         (u8) ((int_val >> 24) & 0xff);
17589                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17590                         (u8) ((int_val >> 24) & 0xff);
17591
17592                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17593                         (u8) ((int_val >> 8) & 0xff);
17594                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17595                         (u8) ((int_val >> 8) & 0xff);
17596         } else {
17597                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17598                         (u8) ((int_val >> 24) & 0xff);
17599
17600                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17601                         (u8) ((int_val >> 8) & 0xff);
17602
17603                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17604                         (u8) ((int_val >> 16) & 0xff);
17605                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17606                         (u8) ((int_val) & 0xff);
17607         }
17608
17609 }
17610
17611 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17612 {
17613         u8 idx, idx2, i, delta_ind;
17614
17615         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17616                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17617
17618         for (i = 0; i < 4; i++) {
17619                 idx2 = 0;
17620
17621                 delta_ind = 0;
17622
17623                 switch (i) {
17624                 case 0:
17625
17626                         if (CHSPEC_IS40(pi->radio_chanspec)
17627                             && NPHY_IS_SROM_REINTERPRET) {
17628                                 idx = TXP_FIRST_MCS_40_SISO;
17629                         } else {
17630                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17631                                       TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17632                                 delta_ind = 1;
17633                         }
17634                         break;
17635
17636                 case 1:
17637
17638                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17639                               TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17640                         break;
17641
17642                 case 2:
17643
17644                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17645                               TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17646                         break;
17647
17648                 case 3:
17649
17650                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17651                               TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17652                         break;
17653                 }
17654
17655                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17656                         pi->tx_power_offset[idx];
17657                 idx = idx + delta_ind;
17658                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17659                         pi->tx_power_offset[idx];
17660                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17661                         pi->tx_power_offset[idx];
17662                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17663                         pi->tx_power_offset[idx++];
17664
17665                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17666                         pi->tx_power_offset[idx++];
17667                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17668                         pi->tx_power_offset[idx];
17669                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17670                         pi->tx_power_offset[idx];
17671                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17672                         pi->tx_power_offset[idx++];
17673
17674                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17675                         pi->tx_power_offset[idx++];
17676                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17677                         pi->tx_power_offset[idx];
17678                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17679                         pi->tx_power_offset[idx];
17680                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17681                         pi->tx_power_offset[idx++];
17682
17683                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17684                         pi->tx_power_offset[idx];
17685                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17686                         pi->tx_power_offset[idx++];
17687                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17688                         pi->tx_power_offset[idx];
17689                 idx = idx + 1 - delta_ind;
17690                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17691                         pi->tx_power_offset[idx];
17692
17693                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17694                         pi->tx_power_offset[idx];
17695                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17696                         pi->tx_power_offset[idx];
17697                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17698                         pi->tx_power_offset[idx];
17699                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17700                         pi->tx_power_offset[idx];
17701         }
17702 }
17703
17704 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17705 {
17706         u32 idx;
17707         s16 a1[2], b0[2], b1[2];
17708         s8 target_pwr_qtrdbm[2];
17709         s32 num, den, pwr_est;
17710         u8 chan_freq_range;
17711         u8 idle_tssi[2];
17712         u32 tbl_id, tbl_len, tbl_offset;
17713         u32 regval[64];
17714         u8 core;
17715
17716         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17717                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17718                 (void)R_REG(&pi->regs->maccontrol);
17719                 udelay(1);
17720         }
17721
17722         if (pi->phyhang_avoid)
17723                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17724
17725         or_phy_reg(pi, 0x122, (0x1 << 0));
17726
17727         if (NREV_GE(pi->pubpi.phy_rev, 3))
17728                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17729         else
17730                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17731
17732         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17733                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17734
17735         if (pi->sh->sromrev < 4) {
17736                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17737                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17738                 target_pwr_qtrdbm[0] = 13 * 4;
17739                 target_pwr_qtrdbm[1] = 13 * 4;
17740                 a1[0] = -424;
17741                 a1[1] = -424;
17742                 b0[0] = 5612;
17743                 b0[1] = 5612;
17744                 b1[1] = -1393;
17745                 b1[0] = -1393;
17746         } else {
17747
17748                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17749                 switch (chan_freq_range) {
17750                 case WL_CHAN_FREQ_RANGE_2G:
17751                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17752                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17753                         target_pwr_qtrdbm[0] =
17754                                 pi->nphy_pwrctrl_info[0].max_pwr_2g;
17755                         target_pwr_qtrdbm[1] =
17756                                 pi->nphy_pwrctrl_info[1].max_pwr_2g;
17757                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17758                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17759                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17760                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17761                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17762                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17763                         break;
17764                 case WL_CHAN_FREQ_RANGE_5GL:
17765                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17766                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17767                         target_pwr_qtrdbm[0] =
17768                                 pi->nphy_pwrctrl_info[0].max_pwr_5gl;
17769                         target_pwr_qtrdbm[1] =
17770                                 pi->nphy_pwrctrl_info[1].max_pwr_5gl;
17771                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17772                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17773                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17774                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17775                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17776                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17777                         break;
17778                 case WL_CHAN_FREQ_RANGE_5GM:
17779                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17780                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17781                         target_pwr_qtrdbm[0] =
17782                                 pi->nphy_pwrctrl_info[0].max_pwr_5gm;
17783                         target_pwr_qtrdbm[1] =
17784                                 pi->nphy_pwrctrl_info[1].max_pwr_5gm;
17785                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17786                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17787                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17788                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17789                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17790                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17791                         break;
17792                 case WL_CHAN_FREQ_RANGE_5GH:
17793                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17794                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17795                         target_pwr_qtrdbm[0] =
17796                                 pi->nphy_pwrctrl_info[0].max_pwr_5gh;
17797                         target_pwr_qtrdbm[1] =
17798                                 pi->nphy_pwrctrl_info[1].max_pwr_5gh;
17799                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17800                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17801                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17802                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17803                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17804                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17805                         break;
17806                 default:
17807                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17808                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17809                         target_pwr_qtrdbm[0] = 13 * 4;
17810                         target_pwr_qtrdbm[1] = 13 * 4;
17811                         a1[0] = -424;
17812                         a1[1] = -424;
17813                         b0[0] = 5612;
17814                         b0[1] = 5612;
17815                         b1[1] = -1393;
17816                         b1[0] = -1393;
17817                         break;
17818                 }
17819         }
17820
17821         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17822         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17823
17824         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17825                 if (pi->srom_fem2g.tssipos)
17826                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
17827
17828                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17829                         for (core = 0; core <= 1; core++) {
17830                                 if (PHY_IPA(pi)) {
17831                                         if (CHSPEC_IS2G(pi->radio_chanspec))
17832                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17833                                                                  TX, core,
17834                                                                  TX_SSI_MUX,
17835                                                                  0xe);
17836                                         else
17837                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17838                                                                  TX, core,
17839                                                                  TX_SSI_MUX,
17840                                                                  0xc);
17841                                 }
17842                         }
17843                 } else {
17844                         if (PHY_IPA(pi)) {
17845
17846                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17847                                                 RADIO_2056_TX0,
17848                                                 (CHSPEC_IS5G
17849                                                  (pi->radio_chanspec)) ?
17850                                                  0xc : 0xe);
17851                                 write_radio_reg(pi,
17852                                                 RADIO_2056_TX_TX_SSI_MUX |
17853                                                 RADIO_2056_TX1,
17854                                                 (CHSPEC_IS5G
17855                                                  (pi->radio_chanspec)) ?
17856                                                  0xc : 0xe);
17857                         } else {
17858
17859                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17860                                                 RADIO_2056_TX0, 0x11);
17861                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17862                                                 RADIO_2056_TX1, 0x11);
17863                         }
17864                 }
17865         }
17866
17867         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17868                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17869                 (void)R_REG(&pi->regs->maccontrol);
17870                 udelay(1);
17871         }
17872
17873         if (NREV_GE(pi->pubpi.phy_rev, 7))
17874                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17875                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17876         else
17877                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17878                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17879
17880         if (NREV_GE(pi->pubpi.phy_rev, 7))
17881                 mod_phy_reg(pi, 0x222, (0xff << 0),
17882                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17883         else if (NREV_GT(pi->pubpi.phy_rev, 1))
17884                 mod_phy_reg(pi, 0x222, (0xff << 0),
17885                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17886
17887         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17888                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17889
17890         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17891
17892         write_phy_reg(pi, 0x1e9,
17893                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17894
17895         write_phy_reg(pi, 0x1ea,
17896                       (target_pwr_qtrdbm[0] << 0) |
17897                       (target_pwr_qtrdbm[1] << 8));
17898
17899         tbl_len = 64;
17900         tbl_offset = 0;
17901         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17902              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17903
17904                 for (idx = 0; idx < tbl_len; idx++) {
17905                         num = 8 *
17906                               (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17907                         den = 32768 + a1[tbl_id - 26] * idx;
17908                         pwr_est = max(((4 * num + den / 2) / den), -8);
17909                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17910                                 if (idx <=
17911                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17912                                         pwr_est =
17913                                                 max(pwr_est,
17914                                                     target_pwr_qtrdbm
17915                                                     [tbl_id - 26] + 1);
17916                         }
17917                         regval[idx] = (u32) pwr_est;
17918                 }
17919                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17920                                          regval);
17921         }
17922
17923         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17924         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17925                                  pi->adj_pwr_tbl_nphy);
17926         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17927                                  pi->adj_pwr_tbl_nphy);
17928
17929         if (pi->phyhang_avoid)
17930                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17931 }
17932
17933 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17934 {
17935         u32 *tx_pwrctrl_tbl = NULL;
17936
17937         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17938                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17939                         if ((pi->pubpi.radiorev == 4)
17940                             || (pi->pubpi.radiorev == 6))
17941                                 tx_pwrctrl_tbl =
17942                                         nphy_tpc_txgain_ipa_2g_2057rev4n6;
17943                         else if (pi->pubpi.radiorev == 3)
17944                                 tx_pwrctrl_tbl =
17945                                         nphy_tpc_txgain_ipa_2g_2057rev3;
17946                         else if (pi->pubpi.radiorev == 5)
17947                                 tx_pwrctrl_tbl =
17948                                         nphy_tpc_txgain_ipa_2g_2057rev5;
17949                         else if ((pi->pubpi.radiorev == 7)
17950                                  || (pi->pubpi.radiorev == 8))
17951                                 tx_pwrctrl_tbl =
17952                                         nphy_tpc_txgain_ipa_2g_2057rev7;
17953                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17954                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17955                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17956                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17957                 } else {
17958                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17959                 }
17960         } else {
17961
17962                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17963                         if ((pi->pubpi.radiorev == 3) ||
17964                             (pi->pubpi.radiorev == 4) ||
17965                             (pi->pubpi.radiorev == 6))
17966                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17967                         else if ((pi->pubpi.radiorev == 7)
17968                                  || (pi->pubpi.radiorev == 8))
17969                                 tx_pwrctrl_tbl =
17970                                         nphy_tpc_txgain_ipa_5g_2057rev7;
17971                 } else {
17972                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17973                 }
17974         }
17975
17976         return tx_pwrctrl_tbl;
17977 }
17978
17979 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17980 {
17981         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17982                 if (pi->nphy_rssical_chanspec_2G == 0)
17983                         return;
17984
17985                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17986                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17987                                       RADIO_2057_VCM_MASK,
17988                                       pi->rssical_cache.
17989                                       rssical_radio_regs_2G[0]);
17990                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17991                                       RADIO_2057_VCM_MASK,
17992                                       pi->rssical_cache.
17993                                       rssical_radio_regs_2G[1]);
17994                 } else {
17995                         mod_radio_reg(pi,
17996                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17997                                       RADIO_2056_VCM_MASK,
17998                                       pi->rssical_cache.
17999                                       rssical_radio_regs_2G[0]);
18000                         mod_radio_reg(pi,
18001                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18002                                       RADIO_2056_VCM_MASK,
18003                                       pi->rssical_cache.
18004                                       rssical_radio_regs_2G[1]);
18005                 }
18006
18007                 write_phy_reg(pi, 0x1a6,
18008                               pi->rssical_cache.rssical_phyregs_2G[0]);
18009                 write_phy_reg(pi, 0x1ac,
18010                               pi->rssical_cache.rssical_phyregs_2G[1]);
18011                 write_phy_reg(pi, 0x1b2,
18012                               pi->rssical_cache.rssical_phyregs_2G[2]);
18013                 write_phy_reg(pi, 0x1b8,
18014                               pi->rssical_cache.rssical_phyregs_2G[3]);
18015                 write_phy_reg(pi, 0x1a4,
18016                               pi->rssical_cache.rssical_phyregs_2G[4]);
18017                 write_phy_reg(pi, 0x1aa,
18018                               pi->rssical_cache.rssical_phyregs_2G[5]);
18019                 write_phy_reg(pi, 0x1b0,
18020                               pi->rssical_cache.rssical_phyregs_2G[6]);
18021                 write_phy_reg(pi, 0x1b6,
18022                               pi->rssical_cache.rssical_phyregs_2G[7]);
18023                 write_phy_reg(pi, 0x1a5,
18024                               pi->rssical_cache.rssical_phyregs_2G[8]);
18025                 write_phy_reg(pi, 0x1ab,
18026                               pi->rssical_cache.rssical_phyregs_2G[9]);
18027                 write_phy_reg(pi, 0x1b1,
18028                               pi->rssical_cache.rssical_phyregs_2G[10]);
18029                 write_phy_reg(pi, 0x1b7,
18030                               pi->rssical_cache.rssical_phyregs_2G[11]);
18031
18032         } else {
18033                 if (pi->nphy_rssical_chanspec_5G == 0)
18034                         return;
18035
18036                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18037                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
18038                                       RADIO_2057_VCM_MASK,
18039                                       pi->rssical_cache.
18040                                       rssical_radio_regs_5G[0]);
18041                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
18042                                       RADIO_2057_VCM_MASK,
18043                                       pi->rssical_cache.
18044                                       rssical_radio_regs_5G[1]);
18045                 } else {
18046                         mod_radio_reg(pi,
18047                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
18048                                       RADIO_2056_VCM_MASK,
18049                                       pi->rssical_cache.
18050                                       rssical_radio_regs_5G[0]);
18051                         mod_radio_reg(pi,
18052                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
18053                                       RADIO_2056_VCM_MASK,
18054                                       pi->rssical_cache.
18055                                       rssical_radio_regs_5G[1]);
18056                 }
18057
18058                 write_phy_reg(pi, 0x1a6,
18059                               pi->rssical_cache.rssical_phyregs_5G[0]);
18060                 write_phy_reg(pi, 0x1ac,
18061                               pi->rssical_cache.rssical_phyregs_5G[1]);
18062                 write_phy_reg(pi, 0x1b2,
18063                               pi->rssical_cache.rssical_phyregs_5G[2]);
18064                 write_phy_reg(pi, 0x1b8,
18065                               pi->rssical_cache.rssical_phyregs_5G[3]);
18066                 write_phy_reg(pi, 0x1a4,
18067                               pi->rssical_cache.rssical_phyregs_5G[4]);
18068                 write_phy_reg(pi, 0x1aa,
18069                               pi->rssical_cache.rssical_phyregs_5G[5]);
18070                 write_phy_reg(pi, 0x1b0,
18071                               pi->rssical_cache.rssical_phyregs_5G[6]);
18072                 write_phy_reg(pi, 0x1b6,
18073                               pi->rssical_cache.rssical_phyregs_5G[7]);
18074                 write_phy_reg(pi, 0x1a5,
18075                               pi->rssical_cache.rssical_phyregs_5G[8]);
18076                 write_phy_reg(pi, 0x1ab,
18077                               pi->rssical_cache.rssical_phyregs_5G[9]);
18078                 write_phy_reg(pi, 0x1b1,
18079                               pi->rssical_cache.rssical_phyregs_5G[10]);
18080                 write_phy_reg(pi, 0x1b7,
18081                               pi->rssical_cache.rssical_phyregs_5G[11]);
18082         }
18083 }
18084
18085 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18086 {
18087         u16 txcal_gain[2];
18088
18089         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18090         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18091         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18092         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18093
18094         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18095                                 txcal_gain);
18096
18097         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18098                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18099                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18100         } else {
18101                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18102                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18103         }
18104
18105         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18106                                  txcal_gain);
18107 }
18108
18109 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18110 {
18111         bool save_bbmult = false;
18112         u8 txcal_index_2057_rev5n7 = 0;
18113         u8 txcal_index_2057_rev3n4n6 = 10;
18114
18115         if (pi->use_int_tx_iqlo_cal_nphy) {
18116                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18117                         if ((pi->pubpi.radiorev == 3) ||
18118                             (pi->pubpi.radiorev == 4) ||
18119                             (pi->pubpi.radiorev == 6)) {
18120
18121                                 pi->nphy_txcal_pwr_idx[0] =
18122                                         txcal_index_2057_rev3n4n6;
18123                                 pi->nphy_txcal_pwr_idx[1] =
18124                                         txcal_index_2057_rev3n4n6;
18125                                 wlc_phy_txpwr_index_nphy(
18126                                         pi, 3,
18127                                         txcal_index_2057_rev3n4n6,
18128                                         false);
18129                         } else {
18130
18131                                 pi->nphy_txcal_pwr_idx[0] =
18132                                         txcal_index_2057_rev5n7;
18133                                 pi->nphy_txcal_pwr_idx[1] =
18134                                         txcal_index_2057_rev5n7;
18135                                 wlc_phy_txpwr_index_nphy(
18136                                         pi, 3,
18137                                         txcal_index_2057_rev5n7,
18138                                         false);
18139                         }
18140                         save_bbmult = true;
18141
18142                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18143                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18144                         if (pi->sh->hw_phytxchain != 3) {
18145                                 pi->nphy_txcal_pwr_idx[1] =
18146                                         pi->nphy_txcal_pwr_idx[0];
18147                                 wlc_phy_txpwr_index_nphy(pi, 3,
18148                                                          pi->
18149                                                          nphy_txcal_pwr_idx[0],
18150                                                          true);
18151                                 save_bbmult = true;
18152                         }
18153
18154                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18155                         if (PHY_IPA(pi)) {
18156                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18157                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18158                                                                     false);
18159                                 } else {
18160                                         pi->nphy_txcal_pwr_idx[0] = 80;
18161                                         pi->nphy_txcal_pwr_idx[1] = 80;
18162                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
18163                                                                  false);
18164                                         save_bbmult = true;
18165                                 }
18166                         } else {
18167                                 wlc_phy_internal_cal_txgain_nphy(pi);
18168                                 save_bbmult = true;
18169                         }
18170
18171                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18172                         if (PHY_IPA(pi)) {
18173                                 if (CHSPEC_IS2G(pi->radio_chanspec))
18174                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18175                                                                     false);
18176                                 else
18177                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
18178                                                                     false);
18179                         } else {
18180                                 wlc_phy_internal_cal_txgain_nphy(pi);
18181                                 save_bbmult = true;
18182                         }
18183                 }
18184
18185         } else {
18186                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18187         }
18188
18189         if (save_bbmult)
18190                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18191                                         &pi->nphy_txcal_bbmult);
18192 }
18193
18194 static void
18195 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18196                                  u8 core_code)
18197 {
18198         u16 mask;
18199         u16 val;
18200         u8 core;
18201
18202         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18203                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18204                         if (core_code == RADIO_MIMO_CORESEL_CORE1
18205                             && core == PHY_CORE_1)
18206                                 continue;
18207                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
18208                                  && core == PHY_CORE_0)
18209                                 continue;
18210
18211                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18212
18213                                 mask = (0x1 << 10);
18214                                 val = 1 << 10;
18215                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18216                                             0x92, mask, val);
18217                         }
18218
18219                         if (field == NPHY_RfctrlIntc_override_OFF) {
18220
18221                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18222                                               0x92, 0);
18223
18224                                 wlc_phy_force_rfseq_nphy(pi,
18225                                                          NPHY_RFSEQ_RESET2RX);
18226                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18227
18228                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18229
18230                                         mask = (0x1 << 6) | (0x1 << 7);
18231
18232                                         val = value << 6;
18233                                         mod_phy_reg(pi,
18234                                                     (core ==
18235                                                      PHY_CORE_0) ? 0x91 : 0x92,
18236                                                     mask, val);
18237
18238                                         or_phy_reg(pi,
18239                                                    (core ==
18240                                                     PHY_CORE_0) ? 0x91 : 0x92,
18241                                                    (0x1 << 10));
18242
18243                                         and_phy_reg(pi, 0x2ff, (u16)
18244                                                     ~(0x3 << 14));
18245                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
18246                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
18247                                 } else {
18248
18249                                         mask = (0x1 << 6) |
18250                                                (0x1 << 7) |
18251                                                (0x1 << 8) | (0x1 << 9);
18252                                         val = value << 6;
18253                                         mod_phy_reg(pi,
18254                                                     (core ==
18255                                                      PHY_CORE_0) ? 0x91 : 0x92,
18256                                                     mask, val);
18257
18258                                         mask = (0x1 << 0);
18259                                         val = 1 << 0;
18260                                         mod_phy_reg(pi,
18261                                                     (core ==
18262                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18263                                                     mask, val);
18264
18265                                         mask = (core == PHY_CORE_0) ?
18266                                                (0x1 << 0) : (0x1 << 1);
18267                                         val = 1 << ((core == PHY_CORE_0) ?
18268                                                     0 : 1);
18269                                         mod_phy_reg(pi, 0x78, mask, val);
18270
18271                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18272                                                   != 0), 10000);
18273                                         if (WARN(read_phy_reg(pi, 0x78) & val,
18274                                                  "HW error: override failed"))
18275                                                 return;
18276
18277                                         mask = (0x1 << 0);
18278                                         val = 0 << 0;
18279                                         mod_phy_reg(pi,
18280                                                     (core ==
18281                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18282                                                     mask, val);
18283                                 }
18284                         } else if (field == NPHY_RfctrlIntc_override_PA) {
18285                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18286
18287                                         mask = (0x1 << 4) | (0x1 << 5);
18288
18289                                         if (CHSPEC_IS5G(pi->radio_chanspec))
18290                                                 val = value << 5;
18291                                         else
18292                                                 val = value << 4;
18293
18294                                         mod_phy_reg(pi,
18295                                                     (core ==
18296                                                      PHY_CORE_0) ? 0x91 : 0x92,
18297                                                     mask, val);
18298
18299                                         or_phy_reg(pi,
18300                                                    (core ==
18301                                                     PHY_CORE_0) ? 0x91 : 0x92,
18302                                                    (0x1 << 12));
18303                                 } else {
18304
18305                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18306                                                 mask = (0x1 << 5);
18307                                                 val = value << 5;
18308                                         } else {
18309                                                 mask = (0x1 << 4);
18310                                                 val = value << 4;
18311                                         }
18312                                         mod_phy_reg(pi,
18313                                                     (core ==
18314                                                      PHY_CORE_0) ? 0x91 : 0x92,
18315                                                     mask, val);
18316                                 }
18317                         } else if (field ==
18318                                    NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18319                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18320                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18321
18322                                                 mask = (0x1 << 0);
18323                                                 val = value << 0;
18324                                                 mod_phy_reg(pi,
18325                                                             (core ==
18326                                                              PHY_CORE_0) ? 0x91
18327                                                             : 0x92, mask, val);
18328
18329                                                 mask = (0x1 << 2);
18330                                                 mod_phy_reg(pi,
18331                                                             (core ==
18332                                                              PHY_CORE_0) ? 0x91
18333                                                             : 0x92, mask, 0);
18334                                         } else {
18335
18336                                                 mask = (0x1 << 2);
18337                                                 val = value << 2;
18338                                                 mod_phy_reg(pi,
18339                                                             (core ==
18340                                                              PHY_CORE_0) ? 0x91
18341                                                             : 0x92, mask, val);
18342
18343                                                 mask = (0x1 << 0);
18344                                                 mod_phy_reg(pi,
18345                                                             (core ==
18346                                                              PHY_CORE_0) ? 0x91
18347                                                             : 0x92, mask, 0);
18348                                         }
18349
18350                                         mask = (0x1 << 11);
18351                                         val = 1 << 11;
18352                                         mod_phy_reg(pi,
18353                                                     (core ==
18354                                                      PHY_CORE_0) ? 0x91 : 0x92,
18355                                                     mask, val);
18356                                 } else {
18357
18358                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18359                                                 mask = (0x1 << 0);
18360                                                 val = value << 0;
18361                                         } else {
18362                                                 mask = (0x1 << 2);
18363                                                 val = value << 2;
18364                                         }
18365                                         mod_phy_reg(pi,
18366                                                     (core ==
18367                                                      PHY_CORE_0) ? 0x91 : 0x92,
18368                                                     mask, val);
18369                                 }
18370                         } else if (field ==
18371                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18372                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18373                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18374
18375                                                 mask = (0x1 << 1);
18376                                                 val = value << 1;
18377                                                 mod_phy_reg(pi,
18378                                                             (core ==
18379                                                              PHY_CORE_0) ? 0x91
18380                                                             : 0x92, mask, val);
18381
18382                                                 mask = (0x1 << 3);
18383                                                 mod_phy_reg(pi,
18384                                                             (core ==
18385                                                              PHY_CORE_0) ? 0x91
18386                                                             : 0x92, mask, 0);
18387                                         } else {
18388
18389                                                 mask = (0x1 << 3);
18390                                                 val = value << 3;
18391                                                 mod_phy_reg(pi,
18392                                                             (core ==
18393                                                              PHY_CORE_0) ? 0x91
18394                                                             : 0x92, mask, val);
18395
18396                                                 mask = (0x1 << 1);
18397                                                 mod_phy_reg(pi,
18398                                                             (core ==
18399                                                              PHY_CORE_0) ? 0x91
18400                                                             : 0x92, mask, 0);
18401                                         }
18402
18403                                         mask = (0x1 << 11);
18404                                         val = 1 << 11;
18405                                         mod_phy_reg(pi,
18406                                                     (core ==
18407                                                      PHY_CORE_0) ? 0x91 : 0x92,
18408                                                     mask, val);
18409                                 } else {
18410
18411                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18412                                                 mask = (0x1 << 1);
18413                                                 val = value << 1;
18414                                         } else {
18415                                                 mask = (0x1 << 3);
18416                                                 val = value << 3;
18417                                         }
18418                                         mod_phy_reg(pi,
18419                                                     (core ==
18420                                                      PHY_CORE_0) ? 0x91 : 0x92,
18421                                                     mask, val);
18422                                 }
18423                         }
18424                 }
18425         }
18426 }
18427
18428 void
18429 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18430                             bool debug)
18431 {
18432         int gainctrl_loopidx;
18433         uint core;
18434         u16 m0m1, curr_m0m1;
18435         s32 delta_power;
18436         s32 txpwrindex;
18437         s32 qdBm_power[2];
18438         u16 orig_BBConfig;
18439         u16 phy_saveregs[4];
18440         u32 freq_test;
18441         u16 ampl_test = 250;
18442         uint stepsize;
18443         bool phyhang_avoid_state = false;
18444
18445         if (NREV_GE(pi->pubpi.phy_rev, 7))
18446                 stepsize = 2;
18447         else
18448                 stepsize = 1;
18449
18450         if (CHSPEC_IS40(pi->radio_chanspec))
18451                 freq_test = 5000;
18452         else
18453                 freq_test = 2500;
18454
18455         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18456         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18457
18458         if (pi->phyhang_avoid)
18459                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18460
18461         phyhang_avoid_state = pi->phyhang_avoid;
18462         pi->phyhang_avoid = false;
18463
18464         phy_saveregs[0] = read_phy_reg(pi, 0x91);
18465         phy_saveregs[1] = read_phy_reg(pi, 0x92);
18466         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18467         phy_saveregs[3] = read_phy_reg(pi, 0xec);
18468         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18469                                          RADIO_MIMO_CORESEL_CORE1 |
18470                                          RADIO_MIMO_CORESEL_CORE2);
18471
18472         if (!debug) {
18473                 wlc_phy_rfctrlintc_override_nphy(pi,
18474                                                  NPHY_RfctrlIntc_override_TRSW,
18475                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
18476                 wlc_phy_rfctrlintc_override_nphy(pi,
18477                                                  NPHY_RfctrlIntc_override_TRSW,
18478                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
18479         } else {
18480                 wlc_phy_rfctrlintc_override_nphy(pi,
18481                                                  NPHY_RfctrlIntc_override_TRSW,
18482                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
18483                 wlc_phy_rfctrlintc_override_nphy(pi,
18484                                                  NPHY_RfctrlIntc_override_TRSW,
18485                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
18486         }
18487
18488         orig_BBConfig = read_phy_reg(pi, 0x01);
18489         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18490
18491         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18492
18493         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18494                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18495
18496                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18497                      gainctrl_loopidx++) {
18498                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18499                                              false);
18500
18501                         if (core == PHY_CORE_0)
18502                                 curr_m0m1 = m0m1 & 0xff00;
18503                         else
18504                                 curr_m0m1 = m0m1 & 0x00ff;
18505
18506                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18507                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18508
18509                         udelay(50);
18510
18511                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18512                                                  NPHY_CAL_TSSISAMPS);
18513
18514                         pi->nphy_bb_mult_save = 0;
18515                         wlc_phy_stopplayback_nphy(pi);
18516
18517                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18518
18519                         txpwrindex -= stepsize * delta_power;
18520                         if (txpwrindex < 0)
18521                                 txpwrindex = 0;
18522                         else if (txpwrindex > 127)
18523                                 txpwrindex = 127;
18524
18525                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18526                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18527                                     (pi->srom_fem5g.extpagain == 3)) {
18528                                         if (txpwrindex < 30)
18529                                                 txpwrindex = 30;
18530                                 }
18531                         } else {
18532                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18533                                     (pi->srom_fem2g.extpagain == 3)) {
18534                                         if (txpwrindex < 50)
18535                                                 txpwrindex = 50;
18536                                 }
18537                         }
18538
18539                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
18540                                                  (u8) txpwrindex, true);
18541                 }
18542
18543                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18544
18545                 if (debug) {
18546                         u16 radio_gain;
18547                         u16 dbg_m0m1;
18548
18549                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18550
18551                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18552                                              false);
18553
18554                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18555                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18556
18557                         udelay(100);
18558
18559                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18560                                                  NPHY_CAL_TSSISAMPS);
18561
18562                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18563                                                 &radio_gain);
18564
18565                         mdelay(4000);
18566                         pi->nphy_bb_mult_save = 0;
18567                         wlc_phy_stopplayback_nphy(pi);
18568                 }
18569         }
18570
18571         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18572         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18573
18574         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18575
18576         write_phy_reg(pi, 0x01, orig_BBConfig);
18577
18578         write_phy_reg(pi, 0x91, phy_saveregs[0]);
18579         write_phy_reg(pi, 0x92, phy_saveregs[1]);
18580         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18581         write_phy_reg(pi, 0xec, phy_saveregs[3]);
18582
18583         pi->phyhang_avoid = phyhang_avoid_state;
18584
18585         if (pi->phyhang_avoid)
18586                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18587 }
18588
18589 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18590 {
18591         void *tbl_ptr;
18592         int coreNum;
18593         u16 *txcal_radio_regs = NULL;
18594
18595         if (pi->phyhang_avoid)
18596                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18597
18598         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18599
18600                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18601                                           &pi->calibration_cache.
18602                                           rxcal_coeffs_2G);
18603
18604                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18605                         txcal_radio_regs =
18606                                 pi->calibration_cache.txcal_radio_regs_2G;
18607                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18608
18609                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18610                                 read_radio_reg(pi,
18611                                                RADIO_2056_TX_LOFT_FINE_I |
18612                                                RADIO_2056_TX0);
18613                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18614                                 read_radio_reg(pi,
18615                                                RADIO_2056_TX_LOFT_FINE_Q |
18616                                                RADIO_2056_TX0);
18617                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18618                                 read_radio_reg(pi,
18619                                                RADIO_2056_TX_LOFT_FINE_I |
18620                                                RADIO_2056_TX1);
18621                         pi->calibration_cache.txcal_radio_regs_2G[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_2G[4] =
18627                                 read_radio_reg(pi,
18628                                                RADIO_2056_TX_LOFT_COARSE_I |
18629                                                RADIO_2056_TX0);
18630                         pi->calibration_cache.txcal_radio_regs_2G[5] =
18631                                 read_radio_reg(pi,
18632                                                RADIO_2056_TX_LOFT_COARSE_Q |
18633                                                RADIO_2056_TX0);
18634                         pi->calibration_cache.txcal_radio_regs_2G[6] =
18635                                 read_radio_reg(pi,
18636                                                RADIO_2056_TX_LOFT_COARSE_I |
18637                                                RADIO_2056_TX1);
18638                         pi->calibration_cache.txcal_radio_regs_2G[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_2G[0] =
18644                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18645                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18646                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18647                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18648                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18649                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18650                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18651                 }
18652
18653                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18654                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18655         } else {
18656
18657                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18658                                           &pi->calibration_cache.
18659                                           rxcal_coeffs_5G);
18660
18661                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18662                         txcal_radio_regs =
18663                                 pi->calibration_cache.txcal_radio_regs_5G;
18664                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18665
18666                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18667                                 read_radio_reg(pi,
18668                                                RADIO_2056_TX_LOFT_FINE_I |
18669                                                RADIO_2056_TX0);
18670                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18671                                 read_radio_reg(pi,
18672                                                RADIO_2056_TX_LOFT_FINE_Q |
18673                                                RADIO_2056_TX0);
18674                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18675                                 read_radio_reg(pi,
18676                                                RADIO_2056_TX_LOFT_FINE_I |
18677                                                RADIO_2056_TX1);
18678                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18679                                 read_radio_reg(pi,
18680                                                RADIO_2056_TX_LOFT_FINE_Q |
18681                                                RADIO_2056_TX1);
18682
18683                         pi->calibration_cache.txcal_radio_regs_5G[4] =
18684                                 read_radio_reg(pi,
18685                                                RADIO_2056_TX_LOFT_COARSE_I |
18686                                                RADIO_2056_TX0);
18687                         pi->calibration_cache.txcal_radio_regs_5G[5] =
18688                                 read_radio_reg(pi,
18689                                                RADIO_2056_TX_LOFT_COARSE_Q |
18690                                                RADIO_2056_TX0);
18691                         pi->calibration_cache.txcal_radio_regs_5G[6] =
18692                                 read_radio_reg(pi,
18693                                                RADIO_2056_TX_LOFT_COARSE_I |
18694                                                RADIO_2056_TX1);
18695                         pi->calibration_cache.txcal_radio_regs_5G[7] =
18696                                 read_radio_reg(pi,
18697                                                RADIO_2056_TX_LOFT_COARSE_Q |
18698                                                RADIO_2056_TX1);
18699                 } else {
18700                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18701                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18702                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18703                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18704                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18705                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18706                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18707                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18708                 }
18709
18710                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18711                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18712         }
18713         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18714                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18715
18716                         txcal_radio_regs[2 * coreNum] =
18717                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18718                                                 LOFT_FINE_I);
18719                         txcal_radio_regs[2 * coreNum + 1] =
18720                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18721                                                 LOFT_FINE_Q);
18722
18723                         txcal_radio_regs[2 * coreNum + 4] =
18724                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18725                                                 LOFT_COARSE_I);
18726                         txcal_radio_regs[2 * coreNum + 5] =
18727                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18728                                                 LOFT_COARSE_Q);
18729                 }
18730         }
18731
18732         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18733
18734         if (pi->phyhang_avoid)
18735                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18736 }
18737
18738 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18739 {
18740         struct nphy_iq_comp tx_comp;
18741
18742         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18743
18744         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18745         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18746         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18747         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18748 }
18749
18750 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18751 {
18752         u16 *loft_comp;
18753         u16 txcal_coeffs_bphy[4];
18754         u16 *tbl_ptr;
18755         int coreNum;
18756         u16 *txcal_radio_regs = NULL;
18757
18758         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18759                 if (pi->nphy_iqcal_chanspec_2G == 0)
18760                         return;
18761
18762                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18763                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18764         } else {
18765                 if (pi->nphy_iqcal_chanspec_5G == 0)
18766                         return;
18767
18768                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18769                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18770         }
18771
18772         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18773
18774         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18775                 txcal_coeffs_bphy[0] = tbl_ptr[0];
18776                 txcal_coeffs_bphy[1] = tbl_ptr[1];
18777                 txcal_coeffs_bphy[2] = tbl_ptr[2];
18778                 txcal_coeffs_bphy[3] = tbl_ptr[3];
18779         } else {
18780                 txcal_coeffs_bphy[0] = 0;
18781                 txcal_coeffs_bphy[1] = 0;
18782                 txcal_coeffs_bphy[2] = 0;
18783                 txcal_coeffs_bphy[3] = 0;
18784         }
18785
18786         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18787                                  txcal_coeffs_bphy);
18788
18789         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18790
18791         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18792
18793         if (NREV_LT(pi->pubpi.phy_rev, 2))
18794                 wlc_phy_tx_iq_war_nphy(pi);
18795
18796         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18797                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18798                         txcal_radio_regs =
18799                                 pi->calibration_cache.txcal_radio_regs_2G;
18800                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18801
18802                         write_radio_reg(pi,
18803                                         RADIO_2056_TX_LOFT_FINE_I |
18804                                         RADIO_2056_TX0,
18805                                         pi->calibration_cache.
18806                                         txcal_radio_regs_2G[0]);
18807                         write_radio_reg(pi,
18808                                         RADIO_2056_TX_LOFT_FINE_Q |
18809                                         RADIO_2056_TX0,
18810                                         pi->calibration_cache.
18811                                         txcal_radio_regs_2G[1]);
18812                         write_radio_reg(pi,
18813                                         RADIO_2056_TX_LOFT_FINE_I |
18814                                         RADIO_2056_TX1,
18815                                         pi->calibration_cache.
18816                                         txcal_radio_regs_2G[2]);
18817                         write_radio_reg(pi,
18818                                         RADIO_2056_TX_LOFT_FINE_Q |
18819                                         RADIO_2056_TX1,
18820                                         pi->calibration_cache.
18821                                         txcal_radio_regs_2G[3]);
18822
18823                         write_radio_reg(pi,
18824                                         RADIO_2056_TX_LOFT_COARSE_I |
18825                                         RADIO_2056_TX0,
18826                                         pi->calibration_cache.
18827                                         txcal_radio_regs_2G[4]);
18828                         write_radio_reg(pi,
18829                                         RADIO_2056_TX_LOFT_COARSE_Q |
18830                                         RADIO_2056_TX0,
18831                                         pi->calibration_cache.
18832                                         txcal_radio_regs_2G[5]);
18833                         write_radio_reg(pi,
18834                                         RADIO_2056_TX_LOFT_COARSE_I |
18835                                         RADIO_2056_TX1,
18836                                         pi->calibration_cache.
18837                                         txcal_radio_regs_2G[6]);
18838                         write_radio_reg(pi,
18839                                         RADIO_2056_TX_LOFT_COARSE_Q |
18840                                         RADIO_2056_TX1,
18841                                         pi->calibration_cache.
18842                                         txcal_radio_regs_2G[7]);
18843                 } else {
18844                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18845                                         pi->calibration_cache.
18846                                         txcal_radio_regs_2G[0]);
18847                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18848                                         pi->calibration_cache.
18849                                         txcal_radio_regs_2G[1]);
18850                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18851                                         pi->calibration_cache.
18852                                         txcal_radio_regs_2G[2]);
18853                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18854                                         pi->calibration_cache.
18855                                         txcal_radio_regs_2G[3]);
18856                 }
18857
18858                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18859                                           &pi->calibration_cache.
18860                                           rxcal_coeffs_2G);
18861         } else {
18862                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18863                         txcal_radio_regs =
18864                                 pi->calibration_cache.txcal_radio_regs_5G;
18865                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18866
18867                         write_radio_reg(pi,
18868                                         RADIO_2056_TX_LOFT_FINE_I |
18869                                         RADIO_2056_TX0,
18870                                         pi->calibration_cache.
18871                                         txcal_radio_regs_5G[0]);
18872                         write_radio_reg(pi,
18873                                         RADIO_2056_TX_LOFT_FINE_Q |
18874                                         RADIO_2056_TX0,
18875                                         pi->calibration_cache.
18876                                         txcal_radio_regs_5G[1]);
18877                         write_radio_reg(pi,
18878                                         RADIO_2056_TX_LOFT_FINE_I |
18879                                         RADIO_2056_TX1,
18880                                         pi->calibration_cache.
18881                                         txcal_radio_regs_5G[2]);
18882                         write_radio_reg(pi,
18883                                         RADIO_2056_TX_LOFT_FINE_Q |
18884                                         RADIO_2056_TX1,
18885                                         pi->calibration_cache.
18886                                         txcal_radio_regs_5G[3]);
18887
18888                         write_radio_reg(pi,
18889                                         RADIO_2056_TX_LOFT_COARSE_I |
18890                                         RADIO_2056_TX0,
18891                                         pi->calibration_cache.
18892                                         txcal_radio_regs_5G[4]);
18893                         write_radio_reg(pi,
18894                                         RADIO_2056_TX_LOFT_COARSE_Q |
18895                                         RADIO_2056_TX0,
18896                                         pi->calibration_cache.
18897                                         txcal_radio_regs_5G[5]);
18898                         write_radio_reg(pi,
18899                                         RADIO_2056_TX_LOFT_COARSE_I |
18900                                         RADIO_2056_TX1,
18901                                         pi->calibration_cache.
18902                                         txcal_radio_regs_5G[6]);
18903                         write_radio_reg(pi,
18904                                         RADIO_2056_TX_LOFT_COARSE_Q |
18905                                         RADIO_2056_TX1,
18906                                         pi->calibration_cache.
18907                                         txcal_radio_regs_5G[7]);
18908                 } else {
18909                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18910                                         pi->calibration_cache.
18911                                         txcal_radio_regs_5G[0]);
18912                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18913                                         pi->calibration_cache.
18914                                         txcal_radio_regs_5G[1]);
18915                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18916                                         pi->calibration_cache.
18917                                         txcal_radio_regs_5G[2]);
18918                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18919                                         pi->calibration_cache.
18920                                         txcal_radio_regs_5G[3]);
18921                 }
18922
18923                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18924                                           &pi->calibration_cache.
18925                                           rxcal_coeffs_5G);
18926         }
18927
18928         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18929                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18930
18931                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18932                                          LOFT_FINE_I,
18933                                          txcal_radio_regs[2 * coreNum]);
18934                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18935                                          LOFT_FINE_Q,
18936                                          txcal_radio_regs[2 * coreNum + 1]);
18937
18938                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18939                                          LOFT_COARSE_I,
18940                                          txcal_radio_regs[2 * coreNum + 4]);
18941                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18942                                          LOFT_COARSE_Q,
18943                                          txcal_radio_regs[2 * coreNum + 5]);
18944                 }
18945         }
18946 }
18947
18948 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18949 {
18950         u32 idx;
18951         u16 iqloCalbuf[7];
18952         u32 iqcomp, locomp, curr_locomp;
18953         s8 locomp_i, locomp_q;
18954         s8 curr_locomp_i, curr_locomp_q;
18955         u32 tbl_id, tbl_len, tbl_offset;
18956         u32 regval[128];
18957
18958         if (pi->phyhang_avoid)
18959                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18960
18961         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18962
18963         tbl_len = 128;
18964         tbl_offset = 320;
18965         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18966              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18967                 iqcomp =
18968                         (tbl_id ==
18969                          26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18970                         (iqloCalbuf[1] & 0x3ff)
18971                         : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18972                         (iqloCalbuf[3] & 0x3ff);
18973
18974                 for (idx = 0; idx < tbl_len; idx++)
18975                         regval[idx] = iqcomp;
18976                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18977                                          regval);
18978         }
18979
18980         tbl_offset = 448;
18981         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18982              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18983
18984                 locomp =
18985                         (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18986                 locomp_i = (s8) ((locomp >> 8) & 0xff);
18987                 locomp_q = (s8) ((locomp) & 0xff);
18988                 for (idx = 0; idx < tbl_len; idx++) {
18989                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18990                                 curr_locomp_i = locomp_i;
18991                                 curr_locomp_q = locomp_q;
18992                         } else {
18993                                 curr_locomp_i = (s8) ((locomp_i *
18994                                                        nphy_tpc_loscale[idx] +
18995                                                        128) >> 8);
18996                                 curr_locomp_q =
18997                                         (s8) ((locomp_q *
18998                                                nphy_tpc_loscale[idx] +
18999                                                128) >> 8);
19000                         }
19001                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
19002                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
19003                         regval[idx] = curr_locomp;
19004                 }
19005                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
19006                                          regval);
19007         }
19008
19009         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19010
19011                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
19012                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
19013         }
19014
19015         if (pi->phyhang_avoid)
19016                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19017 }
19018
19019 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
19020 {
19021         u8 tx_lpf_bw = 0;
19022
19023         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19024                 if (CHSPEC_IS40(pi->radio_chanspec))
19025                         tx_lpf_bw = 3;
19026                 else
19027                         tx_lpf_bw = 1;
19028
19029                 if (PHY_IPA(pi)) {
19030                         if (CHSPEC_IS40(pi->radio_chanspec))
19031                                 tx_lpf_bw = 5;
19032                         else
19033                                 tx_lpf_bw = 4;
19034                 }
19035
19036                 write_phy_reg(pi, 0xe8,
19037                               (tx_lpf_bw << 0) |
19038                               (tx_lpf_bw << 3) |
19039                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19040
19041                 if (PHY_IPA(pi)) {
19042
19043                         if (CHSPEC_IS40(pi->radio_chanspec))
19044                                 tx_lpf_bw = 4;
19045                         else
19046                                 tx_lpf_bw = 1;
19047
19048                         write_phy_reg(pi, 0xe9,
19049                                       (tx_lpf_bw << 0) |
19050                                       (tx_lpf_bw << 3) |
19051                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
19052                 }
19053         }
19054 }
19055
19056 static void
19057 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19058 {
19059         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19060                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19061                     CHSPEC_IS40(pi->radio_chanspec)) {
19062                         if (!pi->nphy_anarxlpf_adjusted) {
19063                                 write_radio_reg(pi,
19064                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19065                                                  RADIO_2056_RX0),
19066                                                 ((pi->nphy_rccal_value +
19067                                                   reduction_factr) | 0x80));
19068
19069                                 pi->nphy_anarxlpf_adjusted = true;
19070                         }
19071                 } else {
19072                         if (pi->nphy_anarxlpf_adjusted) {
19073                                 write_radio_reg(pi,
19074                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19075                                                  RADIO_2056_RX0),
19076                                                 (pi->nphy_rccal_value | 0x80));
19077
19078                                 pi->nphy_anarxlpf_adjusted = false;
19079                         }
19080                 }
19081         }
19082 }
19083
19084 static void
19085 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19086                                  int *tone_id_buf, u32 *noise_var_buf)
19087 {
19088         int i;
19089         u32 offset;
19090         int tone_id;
19091         int tbllen =
19092                 CHSPEC_IS40(pi->radio_chanspec) ?
19093                 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19094
19095         if (pi->nphy_noisevars_adjusted) {
19096                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19097                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
19098                         offset = (tone_id >= 0) ?
19099                                  ((tone_id *
19100                                    2) + 1) : (tbllen + (tone_id * 2) + 1);
19101                         wlc_phy_table_write_nphy(
19102                                 pi, NPHY_TBL_ID_NOISEVAR, 1,
19103                                 offset, 32,
19104                                 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19105                 }
19106
19107                 pi->nphy_saved_noisevars.bufcount = 0;
19108                 pi->nphy_noisevars_adjusted = false;
19109         }
19110
19111         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19112                 pi->nphy_saved_noisevars.bufcount = 0;
19113
19114                 for (i = 0; i < ntones; i++) {
19115                         tone_id = tone_id_buf[i];
19116                         offset = (tone_id >= 0) ?
19117                                  ((tone_id * 2) + 1) :
19118                                  (tbllen + (tone_id * 2) + 1);
19119                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19120                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19121                                                 offset, 32,
19122                                                 &pi->nphy_saved_noisevars.
19123                                                 min_noise_vars[i]);
19124                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19125                                                  offset, 32, &noise_var_buf[i]);
19126                         pi->nphy_saved_noisevars.bufcount++;
19127                 }
19128
19129                 pi->nphy_noisevars_adjusted = true;
19130         }
19131 }
19132
19133 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19134 {
19135         u16 regval;
19136
19137         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19138                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19139                     CHSPEC_IS40(pi->radio_chanspec)) {
19140                         if (!pi->nphy_crsminpwr_adjusted) {
19141                                 regval = read_phy_reg(pi, 0x27d);
19142                                 pi->nphy_crsminpwr[0] = regval & 0xff;
19143                                 regval &= 0xff00;
19144                                 regval |= (u16) minpwr;
19145                                 write_phy_reg(pi, 0x27d, regval);
19146
19147                                 regval = read_phy_reg(pi, 0x280);
19148                                 pi->nphy_crsminpwr[1] = regval & 0xff;
19149                                 regval &= 0xff00;
19150                                 regval |= (u16) minpwr;
19151                                 write_phy_reg(pi, 0x280, regval);
19152
19153                                 regval = read_phy_reg(pi, 0x283);
19154                                 pi->nphy_crsminpwr[2] = regval & 0xff;
19155                                 regval &= 0xff00;
19156                                 regval |= (u16) minpwr;
19157                                 write_phy_reg(pi, 0x283, regval);
19158
19159                                 pi->nphy_crsminpwr_adjusted = true;
19160                         }
19161                 } else {
19162                         if (pi->nphy_crsminpwr_adjusted) {
19163                                 regval = read_phy_reg(pi, 0x27d);
19164                                 regval &= 0xff00;
19165                                 regval |= pi->nphy_crsminpwr[0];
19166                                 write_phy_reg(pi, 0x27d, regval);
19167
19168                                 regval = read_phy_reg(pi, 0x280);
19169                                 regval &= 0xff00;
19170                                 regval |= pi->nphy_crsminpwr[1];
19171                                 write_phy_reg(pi, 0x280, regval);
19172
19173                                 regval = read_phy_reg(pi, 0x283);
19174                                 regval &= 0xff00;
19175                                 regval |= pi->nphy_crsminpwr[2];
19176                                 write_phy_reg(pi, 0x283, regval);
19177
19178                                 pi->nphy_crsminpwr_adjusted = false;
19179                         }
19180                 }
19181         }
19182 }
19183
19184 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19185 {
19186         u16 cur_channel = 0;
19187         int nphy_adj_tone_id_buf[] = { 57, 58 };
19188         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19189         bool isAdjustNoiseVar = false;
19190         uint numTonesAdjust = 0;
19191         u32 tempval = 0;
19192
19193         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19194                 if (pi->phyhang_avoid)
19195                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19196
19197                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19198
19199                 if (pi->nphy_gband_spurwar_en) {
19200
19201                         wlc_phy_adjust_rx_analpfbw_nphy(
19202                                 pi,
19203                                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19204
19205                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19206                                 if ((cur_channel == 11)
19207                                     && CHSPEC_IS40(pi->radio_chanspec))
19208                                         wlc_phy_adjust_min_noisevar_nphy(
19209                                                 pi, 2,
19210                                                 nphy_adj_tone_id_buf,
19211                                                 nphy_adj_noise_var_buf);
19212                                 else
19213                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19214                                                                          NULL,
19215                                                                          NULL);
19216                         }
19217
19218                         wlc_phy_adjust_crsminpwr_nphy(pi,
19219                                                      NPHY_ADJUSTED_MINCRSPOWER);
19220                 }
19221
19222                 if ((pi->nphy_gband_spurwar2_en)
19223                     && CHSPEC_IS2G(pi->radio_chanspec)) {
19224
19225                         if (CHSPEC_IS40(pi->radio_chanspec)) {
19226                                 switch (cur_channel) {
19227                                 case 3:
19228                                         nphy_adj_tone_id_buf[0] = 57;
19229                                         nphy_adj_tone_id_buf[1] = 58;
19230                                         nphy_adj_noise_var_buf[0] = 0x22f;
19231                                         nphy_adj_noise_var_buf[1] = 0x25f;
19232                                         isAdjustNoiseVar = true;
19233                                         break;
19234                                 case 4:
19235                                         nphy_adj_tone_id_buf[0] = 41;
19236                                         nphy_adj_tone_id_buf[1] = 42;
19237                                         nphy_adj_noise_var_buf[0] = 0x22f;
19238                                         nphy_adj_noise_var_buf[1] = 0x25f;
19239                                         isAdjustNoiseVar = true;
19240                                         break;
19241                                 case 5:
19242                                         nphy_adj_tone_id_buf[0] = 25;
19243                                         nphy_adj_tone_id_buf[1] = 26;
19244                                         nphy_adj_noise_var_buf[0] = 0x24f;
19245                                         nphy_adj_noise_var_buf[1] = 0x25f;
19246                                         isAdjustNoiseVar = true;
19247                                         break;
19248                                 case 6:
19249                                         nphy_adj_tone_id_buf[0] = 9;
19250                                         nphy_adj_tone_id_buf[1] = 10;
19251                                         nphy_adj_noise_var_buf[0] = 0x22f;
19252                                         nphy_adj_noise_var_buf[1] = 0x24f;
19253                                         isAdjustNoiseVar = true;
19254                                         break;
19255                                 case 7:
19256                                         nphy_adj_tone_id_buf[0] = 121;
19257                                         nphy_adj_tone_id_buf[1] = 122;
19258                                         nphy_adj_noise_var_buf[0] = 0x18f;
19259                                         nphy_adj_noise_var_buf[1] = 0x24f;
19260                                         isAdjustNoiseVar = true;
19261                                         break;
19262                                 case 8:
19263                                         nphy_adj_tone_id_buf[0] = 105;
19264                                         nphy_adj_tone_id_buf[1] = 106;
19265                                         nphy_adj_noise_var_buf[0] = 0x22f;
19266                                         nphy_adj_noise_var_buf[1] = 0x25f;
19267                                         isAdjustNoiseVar = true;
19268                                         break;
19269                                 case 9:
19270                                         nphy_adj_tone_id_buf[0] = 89;
19271                                         nphy_adj_tone_id_buf[1] = 90;
19272                                         nphy_adj_noise_var_buf[0] = 0x22f;
19273                                         nphy_adj_noise_var_buf[1] = 0x24f;
19274                                         isAdjustNoiseVar = true;
19275                                         break;
19276                                 case 10:
19277                                         nphy_adj_tone_id_buf[0] = 73;
19278                                         nphy_adj_tone_id_buf[1] = 74;
19279                                         nphy_adj_noise_var_buf[0] = 0x22f;
19280                                         nphy_adj_noise_var_buf[1] = 0x24f;
19281                                         isAdjustNoiseVar = true;
19282                                         break;
19283                                 default:
19284                                         isAdjustNoiseVar = false;
19285                                         break;
19286                                 }
19287                         }
19288
19289                         if (isAdjustNoiseVar) {
19290                                 numTonesAdjust = sizeof(nphy_adj_tone_id_buf) /
19291                                                 sizeof(nphy_adj_tone_id_buf[0]);
19292
19293                                 wlc_phy_adjust_min_noisevar_nphy(
19294                                         pi,
19295                                         numTonesAdjust,
19296                                         nphy_adj_tone_id_buf,
19297                                         nphy_adj_noise_var_buf);
19298
19299                                 tempval = 0;
19300
19301                         } else {
19302                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19303                                                                  NULL);
19304                         }
19305                 }
19306
19307                 if ((pi->nphy_aband_spurwar_en) &&
19308                     (CHSPEC_IS5G(pi->radio_chanspec))) {
19309                         switch (cur_channel) {
19310                         case 54:
19311                                 nphy_adj_tone_id_buf[0] = 32;
19312                                 nphy_adj_noise_var_buf[0] = 0x25f;
19313                                 break;
19314                         case 38:
19315                         case 102:
19316                         case 118:
19317                                 nphy_adj_tone_id_buf[0] = 0;
19318                                 nphy_adj_noise_var_buf[0] = 0x0;
19319                                 break;
19320                         case 134:
19321                                 nphy_adj_tone_id_buf[0] = 32;
19322                                 nphy_adj_noise_var_buf[0] = 0x21f;
19323                                 break;
19324                         case 151:
19325                                 nphy_adj_tone_id_buf[0] = 16;
19326                                 nphy_adj_noise_var_buf[0] = 0x23f;
19327                                 break;
19328                         case 153:
19329                         case 161:
19330                                 nphy_adj_tone_id_buf[0] = 48;
19331                                 nphy_adj_noise_var_buf[0] = 0x23f;
19332                                 break;
19333                         default:
19334                                 nphy_adj_tone_id_buf[0] = 0;
19335                                 nphy_adj_noise_var_buf[0] = 0x0;
19336                                 break;
19337                         }
19338
19339                         if (nphy_adj_tone_id_buf[0]
19340                             && nphy_adj_noise_var_buf[0])
19341                                 wlc_phy_adjust_min_noisevar_nphy(
19342                                         pi, 1,
19343                                         nphy_adj_tone_id_buf,
19344                                         nphy_adj_noise_var_buf);
19345                         else
19346                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19347                                                                  NULL);
19348                 }
19349
19350                 if (pi->phyhang_avoid)
19351                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19352         }
19353 }
19354
19355 void wlc_phy_init_nphy(struct brcms_phy *pi)
19356 {
19357         u16 val;
19358         u16 clip1_ths[2];
19359         struct nphy_txgains target_gain;
19360         u8 tx_pwr_ctrl_state;
19361         bool do_nphy_cal = false;
19362         uint core;
19363         uint origidx, intr_val;
19364         struct d11regs *regs;
19365         u32 d11_clk_ctl_st;
19366         bool do_rssi_cal = false;
19367
19368         core = 0;
19369
19370         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19371                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19372
19373         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19374             ((pi->sh->chippkg == BCM4717_PKG_ID) ||
19375              (pi->sh->chippkg == BCM4718_PKG_ID))) {
19376                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19377                     (CHSPEC_IS2G(pi->radio_chanspec)))
19378                         ai_corereg(pi->sh->sih, SI_CC_IDX,
19379                                    offsetof(struct chipcregs, chipcontrol),
19380                                    0x40, 0x40);
19381         }
19382
19383         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19384             CHSPEC_IS40(pi->radio_chanspec)) {
19385
19386                 regs = (struct d11regs *) ai_switch_core(pi->sh->sih,
19387                                                          D11_CORE_ID, &origidx,
19388                                                          &intr_val);
19389                 d11_clk_ctl_st = R_REG(&regs->clk_ctl_st);
19390                 AND_REG(&regs->clk_ctl_st,
19391                         ~(CCS_FORCEHT | CCS_HTAREQ));
19392
19393                 W_REG(&regs->clk_ctl_st, d11_clk_ctl_st);
19394
19395                 ai_restore_core(pi->sh->sih, origidx, intr_val);
19396         }
19397
19398         pi->use_int_tx_iqlo_cal_nphy =
19399                 (PHY_IPA(pi) ||
19400                  (NREV_GE(pi->pubpi.phy_rev, 7) ||
19401                   (NREV_GE(pi->pubpi.phy_rev, 5)
19402                    && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19403
19404         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19405
19406         pi->nphy_deaf_count = 0;
19407
19408         wlc_phy_tbl_init_nphy(pi);
19409
19410         pi->nphy_crsminpwr_adjusted = false;
19411         pi->nphy_noisevars_adjusted = false;
19412
19413         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19414                 write_phy_reg(pi, 0xe7, 0);
19415                 write_phy_reg(pi, 0xec, 0);
19416                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19417                         write_phy_reg(pi, 0x342, 0);
19418                         write_phy_reg(pi, 0x343, 0);
19419                         write_phy_reg(pi, 0x346, 0);
19420                         write_phy_reg(pi, 0x347, 0);
19421                 }
19422                 write_phy_reg(pi, 0xe5, 0);
19423                 write_phy_reg(pi, 0xe6, 0);
19424         } else {
19425                 write_phy_reg(pi, 0xec, 0);
19426         }
19427
19428         write_phy_reg(pi, 0x91, 0);
19429         write_phy_reg(pi, 0x92, 0);
19430         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19431                 write_phy_reg(pi, 0x93, 0);
19432                 write_phy_reg(pi, 0x94, 0);
19433         }
19434
19435         and_phy_reg(pi, 0xa1, ~3);
19436
19437         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19438                 write_phy_reg(pi, 0x8f, 0);
19439                 write_phy_reg(pi, 0xa5, 0);
19440         } else {
19441                 write_phy_reg(pi, 0xa5, 0);
19442         }
19443
19444         if (NREV_IS(pi->pubpi.phy_rev, 2))
19445                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19446         else if (NREV_LT(pi->pubpi.phy_rev, 2))
19447                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19448
19449         write_phy_reg(pi, 0x203, 32);
19450         write_phy_reg(pi, 0x201, 32);
19451
19452         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19453                 write_phy_reg(pi, 0x20d, 160);
19454         else
19455                 write_phy_reg(pi, 0x20d, 184);
19456
19457         write_phy_reg(pi, 0x13a, 200);
19458
19459         write_phy_reg(pi, 0x70, 80);
19460
19461         write_phy_reg(pi, 0x1ff, 48);
19462
19463         if (NREV_LT(pi->pubpi.phy_rev, 8))
19464                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19465
19466         wlc_phy_stf_chain_upd_nphy(pi);
19467
19468         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19469                 write_phy_reg(pi, 0x180, 0xaa8);
19470                 write_phy_reg(pi, 0x181, 0x9a4);
19471         }
19472
19473         if (PHY_IPA(pi)) {
19474                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19475
19476                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19477                                     0x29b, (0x1 << 0), (1) << 0);
19478
19479                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19480                                     0x29c, (0x1ff << 7),
19481                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19482
19483                 }
19484
19485                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19486         } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19487                 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19488         }
19489
19490         wlc_phy_workarounds_nphy(pi);
19491
19492         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19493
19494         val = read_phy_reg(pi, 0x01);
19495         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19496         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19497         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19498
19499         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19500
19501         wlc_phy_pa_override_nphy(pi, OFF);
19502         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19503         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19504         wlc_phy_pa_override_nphy(pi, ON);
19505
19506         wlc_phy_classifier_nphy(pi, 0, 0);
19507         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19508
19509         if (CHSPEC_IS2G(pi->radio_chanspec))
19510                 wlc_phy_bphy_init_nphy(pi);
19511
19512         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19513         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19514
19515         wlc_phy_txpwr_fixpower_nphy(pi);
19516
19517         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19518
19519         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19520
19521         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19522                 u32 *tx_pwrctrl_tbl = NULL;
19523                 u16 idx;
19524                 s16 pga_gn = 0;
19525                 s16 pad_gn = 0;
19526                 s32 rfpwr_offset;
19527
19528                 if (PHY_IPA(pi)) {
19529                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19530                 } else {
19531                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
19532                                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19533                                         tx_pwrctrl_tbl =
19534                                                 nphy_tpc_5GHz_txgain_rev3;
19535                                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19536                                         tx_pwrctrl_tbl =
19537                                                 (pi->srom_fem5g.extpagain ==
19538                                                  3) ?
19539                                                 nphy_tpc_5GHz_txgain_HiPwrEPA :
19540                                                 nphy_tpc_5GHz_txgain_rev4;
19541                                 else
19542                                         tx_pwrctrl_tbl =
19543                                                 nphy_tpc_5GHz_txgain_rev5;
19544                         } else {
19545                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19546                                         if (pi->pubpi.radiorev == 5)
19547                                                 tx_pwrctrl_tbl =
19548                                                    nphy_tpc_txgain_epa_2057rev5;
19549                                         else if (pi->pubpi.radiorev == 3)
19550                                                 tx_pwrctrl_tbl =
19551                                                    nphy_tpc_txgain_epa_2057rev3;
19552                                 } else {
19553                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19554                                             (pi->srom_fem2g.extpagain == 3))
19555                                                 tx_pwrctrl_tbl =
19556                                                        nphy_tpc_txgain_HiPwrEPA;
19557                                         else
19558                                                 tx_pwrctrl_tbl =
19559                                                         nphy_tpc_txgain_rev3;
19560                                 }
19561                         }
19562                 }
19563
19564                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19565                                          192, 32, tx_pwrctrl_tbl);
19566                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19567                                          192, 32, tx_pwrctrl_tbl);
19568
19569                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19570
19571                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19572
19573                         for (idx = 0; idx < 128; idx++) {
19574                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19575                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19576                                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19577                                                                  pad_gn);
19578                                 wlc_phy_table_write_nphy(
19579                                         pi,
19580                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19581                                         1, 576 + idx, 32,
19582                                         &rfpwr_offset);
19583                                 wlc_phy_table_write_nphy(
19584                                         pi,
19585                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19586                                         1, 576 + idx, 32,
19587                                         &rfpwr_offset);
19588                         }
19589                 } else {
19590
19591                         for (idx = 0; idx < 128; idx++) {
19592                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19593                                 if (CHSPEC_IS2G(pi->radio_chanspec))
19594                                         rfpwr_offset = (s16)
19595                                                  nphy_papd_pga_gain_delta_ipa_2g
19596                                                                        [pga_gn];
19597                                 else
19598                                         rfpwr_offset = (s16)
19599                                                  nphy_papd_pga_gain_delta_ipa_5g
19600                                                                        [pga_gn];
19601
19602                                 wlc_phy_table_write_nphy(
19603                                         pi,
19604                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19605                                         1, 576 + idx, 32,
19606                                         &rfpwr_offset);
19607                                 wlc_phy_table_write_nphy(
19608                                         pi,
19609                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19610                                         1, 576 + idx, 32,
19611                                         &rfpwr_offset);
19612                         }
19613
19614                 }
19615         } else {
19616
19617                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19618                                          192, 32, nphy_tpc_txgain);
19619                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19620                                          192, 32, nphy_tpc_txgain);
19621         }
19622
19623         if (pi->sh->phyrxchain != 0x3)
19624                 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19625                                              pi->sh->phyrxchain);
19626
19627         if (PHY_PERICAL_MPHASE_PENDING(pi))
19628                 wlc_phy_cal_perical_mphase_restart(pi);
19629
19630         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19631                 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19632                               (pi->nphy_rssical_chanspec_2G == 0) :
19633                               (pi->nphy_rssical_chanspec_5G == 0);
19634
19635                 if (do_rssi_cal)
19636                         wlc_phy_rssi_cal_nphy(pi);
19637                 else
19638                         wlc_phy_restore_rssical_nphy(pi);
19639         } else {
19640                 wlc_phy_rssi_cal_nphy(pi);
19641         }
19642
19643         if (!SCAN_RM_IN_PROGRESS(pi))
19644                 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19645                               (pi->nphy_iqcal_chanspec_2G == 0) :
19646                               (pi->nphy_iqcal_chanspec_5G == 0);
19647
19648         if (!pi->do_initcal)
19649                 do_nphy_cal = false;
19650
19651         if (do_nphy_cal) {
19652
19653                 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19654
19655                 if (pi->antsel_type == ANTSEL_2x3)
19656                         wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19657                                             true);
19658
19659                 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19660                         wlc_phy_rssi_cal_nphy(pi);
19661
19662                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19663                                 pi->nphy_cal_orig_pwr_idx[0] =
19664                                         pi->nphy_txpwrindex[PHY_CORE_0]
19665                                         .
19666                                         index_internal;
19667                                 pi->nphy_cal_orig_pwr_idx[1] =
19668                                         pi->nphy_txpwrindex[PHY_CORE_1]
19669                                         .
19670                                         index_internal;
19671
19672                                 wlc_phy_precal_txgain_nphy(pi);
19673                                 target_gain =
19674                                         wlc_phy_get_tx_gain_nphy(pi);
19675                         }
19676
19677                         if (wlc_phy_cal_txiqlo_nphy
19678                                     (pi, target_gain, true,
19679                                     false) == 0) {
19680                                 if (wlc_phy_cal_rxiq_nphy
19681                                             (pi, target_gain, 2,
19682                                             false) == 0)
19683                                         wlc_phy_savecal_nphy(pi);
19684
19685                         }
19686                 } else if (pi->mphase_cal_phase_id ==
19687                            MPHASE_CAL_STATE_IDLE) {
19688                         wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19689                                             PHY_PERICAL_PHYINIT);
19690                 }
19691         } else {
19692                 wlc_phy_restorecal_nphy(pi);
19693         }
19694
19695         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19696
19697         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19698
19699         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19700
19701         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19702
19703                 write_phy_reg(pi, 0x70, 50);
19704
19705         wlc_phy_txlpfbw_nphy(pi);
19706
19707         wlc_phy_spurwar_nphy(pi);
19708
19709 }
19710
19711 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19712 {
19713         u16 val;
19714
19715         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19716
19717         val = read_phy_reg(pi, 0x01);
19718         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19719         udelay(1);
19720         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19721
19722         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19723
19724         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19725 }
19726
19727 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19728 {
19729         u16 rfctrlintc_override_val;
19730
19731         if (!en) {
19732
19733                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19734                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19735
19736                 if (NREV_GE(pi->pubpi.phy_rev, 7))
19737                         rfctrlintc_override_val = 0x1480;
19738                 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19739                         rfctrlintc_override_val =
19740                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19741                 else
19742                         rfctrlintc_override_val =
19743                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19744
19745                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19746                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19747         } else {
19748                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19749                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19750         }
19751
19752 }
19753
19754 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19755 {
19756
19757         u16 txrx_chain =
19758                 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19759         bool CoreActv_override = false;
19760
19761         if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19762                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19763                 CoreActv_override = true;
19764
19765                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19766                         and_phy_reg(pi, 0xa0, ~0x20);
19767         } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19768                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19769                 CoreActv_override = true;
19770
19771                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19772                         or_phy_reg(pi, 0xa0, 0x20);
19773         }
19774
19775         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19776
19777         if (CoreActv_override) {
19778                 pi->nphy_perical = PHY_PERICAL_DISABLE;
19779                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19780         } else {
19781                 pi->nphy_perical = PHY_PERICAL_MPHASE;
19782                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19783         }
19784 }
19785
19786 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19787 {
19788         u16 regval;
19789         u16 tbl_buf[16];
19790         uint i;
19791         struct brcms_phy *pi = (struct brcms_phy *) pih;
19792         u16 tbl_opcode;
19793         bool suspend;
19794
19795         pi->sh->phyrxchain = rxcore_bitmask;
19796
19797         if (!pi->sh->clk)
19798                 return;
19799
19800         suspend = (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
19801         if (!suspend)
19802                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19803
19804         if (pi->phyhang_avoid)
19805                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19806
19807         regval = read_phy_reg(pi, 0xa2);
19808         regval &= ~(0xf << 4);
19809         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19810         write_phy_reg(pi, 0xa2, regval);
19811
19812         if ((rxcore_bitmask & 0x3) != 0x3) {
19813
19814                 write_phy_reg(pi, 0x20e, 1);
19815
19816                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19817                         if (pi->rx2tx_biasentry == -1) {
19818                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19819                                                         ARRAY_SIZE(tbl_buf), 80,
19820                                                         16, tbl_buf);
19821
19822                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19823                                         if (tbl_buf[i] ==
19824                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19825                                                 pi->rx2tx_biasentry = (u8) i;
19826                                                 tbl_opcode =
19827                                                         NPHY_REV3_RFSEQ_CMD_NOP;
19828                                                 wlc_phy_table_write_nphy(
19829                                                         pi,
19830                                                         NPHY_TBL_ID_RFSEQ,
19831                                                         1, i,
19832                                                         16,
19833                                                         &tbl_opcode);
19834                                                 break;
19835                                         } else if (tbl_buf[i] ==
19836                                                    NPHY_REV3_RFSEQ_CMD_END)
19837                                                 break;
19838                                 }
19839                         }
19840                 }
19841         } else {
19842
19843                 write_phy_reg(pi, 0x20e, 30);
19844
19845                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19846                         if (pi->rx2tx_biasentry != -1) {
19847                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19848                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19849                                                          1, pi->rx2tx_biasentry,
19850                                                          16, &tbl_opcode);
19851                                 pi->rx2tx_biasentry = -1;
19852                         }
19853                 }
19854         }
19855
19856         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19857
19858         if (pi->phyhang_avoid)
19859                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19860
19861         if (!suspend)
19862                 wlapi_enable_mac(pi->sh->physhim);
19863 }
19864
19865 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19866 {
19867         u16 regval, rxen_bits;
19868         struct brcms_phy *pi = (struct brcms_phy *) pih;
19869
19870         regval = read_phy_reg(pi, 0xa2);
19871         rxen_bits = (regval >> 4) & 0xf;
19872
19873         return (u8) rxen_bits;
19874 }
19875
19876 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19877 {
19878         return PHY_IPA(pi);
19879 }
19880
19881 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19882 {
19883 }
19884
19885 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19886 {
19887
19888         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19889         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19890
19891         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19892         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19893
19894 }
19895
19896 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19897 {
19898         struct radio_20xx_regs *regs_2057_ptr = NULL;
19899
19900         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19901                 regs_2057_ptr = regs_2057_rev4;
19902         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19903                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
19904                 switch (pi->pubpi.radiorev) {
19905                 case 5:
19906
19907                         if (pi->pubpi.radiover == 0x0)
19908                                 regs_2057_ptr = regs_2057_rev5;
19909                         else if (pi->pubpi.radiover == 0x1)
19910                                 regs_2057_ptr = regs_2057_rev5v1;
19911                         else
19912                                 break;
19913
19914                 case 7:
19915
19916                         regs_2057_ptr = regs_2057_rev7;
19917                         break;
19918
19919                 case 8:
19920
19921                         regs_2057_ptr = regs_2057_rev8;
19922                         break;
19923
19924                 default:
19925                         break;
19926                 }
19927         }
19928
19929         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19930 }
19931
19932 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19933 {
19934         u16 rcal_reg = 0;
19935         int i;
19936
19937         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19938
19939                 if (pi->pubpi.radiorev == 5) {
19940
19941                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
19942
19943                         udelay(10);
19944
19945                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19946                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19947                                       0x1);
19948                 }
19949                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19950
19951                 udelay(10);
19952
19953                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19954
19955                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19956                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19957                         if (rcal_reg & 0x1)
19958                                 break;
19959
19960                         udelay(100);
19961                 }
19962
19963                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19964                          "HW error: radio calib2"))
19965                         return 0;
19966
19967                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19968
19969                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19970
19971                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19972                 if (pi->pubpi.radiorev == 5) {
19973
19974                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19975                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19976                                       0x0);
19977                 }
19978
19979                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19980
19981                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19982                                       rcal_reg);
19983                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19984                                       rcal_reg << 2);
19985                 }
19986
19987         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19988                 u16 savereg;
19989
19990                 savereg =
19991                         read_radio_reg(
19992                                 pi,
19993                                 RADIO_2056_SYN_PLL_MAST2 |
19994                                 RADIO_2056_SYN);
19995                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19996                                 savereg | 0x7);
19997                 udelay(10);
19998
19999                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20000                                 0x1);
20001                 udelay(10);
20002
20003                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20004                                 0x9);
20005
20006                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20007                         rcal_reg = read_radio_reg(
20008                                 pi,
20009                                 RADIO_2056_SYN_RCAL_CODE_OUT |
20010                                 RADIO_2056_SYN);
20011                         if (rcal_reg & 0x80)
20012                                 break;
20013
20014                         udelay(100);
20015                 }
20016
20017                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
20018                          "HW error: radio calib3"))
20019                         return 0;
20020
20021                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20022                                 0x1);
20023
20024                 rcal_reg =
20025                         read_radio_reg(pi,
20026                                        RADIO_2056_SYN_RCAL_CODE_OUT |
20027                                        RADIO_2056_SYN);
20028
20029                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
20030                                 0x0);
20031
20032                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
20033                                 savereg);
20034
20035                 return rcal_reg & 0x1f;
20036         }
20037         return rcal_reg & 0x3e;
20038 }
20039
20040 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
20041 {
20042         u16 rccal_valid;
20043         int i;
20044         bool chip43226_6362A0;
20045
20046         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
20047                             || (pi->pubpi.radiorev == 4)
20048                             || (pi->pubpi.radiorev == 6));
20049
20050         rccal_valid = 0;
20051         if (chip43226_6362A0) {
20052                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
20053                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20054         } else {
20055                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20056
20057                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20058         }
20059         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20060         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20061
20062         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20063                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20064                 if (rccal_valid & 0x2)
20065                         break;
20066
20067                 udelay(500);
20068         }
20069
20070         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20071
20072         rccal_valid = 0;
20073         if (chip43226_6362A0) {
20074                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20075                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20076         } else {
20077                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20078
20079                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20080         }
20081         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20082         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20083
20084         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20085                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20086                 if (rccal_valid & 0x2)
20087                         break;
20088
20089                 udelay(500);
20090         }
20091
20092         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20093
20094         rccal_valid = 0;
20095         if (chip43226_6362A0) {
20096                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20097
20098                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20099                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20100         } else {
20101                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20102                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20103                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20104         }
20105         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20106
20107         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20108                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20109                 if (rccal_valid & 0x2)
20110                         break;
20111
20112                 udelay(500);
20113         }
20114
20115         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20116                 return 0;
20117
20118         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20119
20120         return rccal_valid;
20121 }
20122
20123 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20124 {
20125
20126         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20127
20128         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20129         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20130         mdelay(2);
20131         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20132         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20133
20134         if (pi->phy_init_por) {
20135                 wlc_phy_radio205x_rcal(pi);
20136                 wlc_phy_radio2057_rccal(pi);
20137         }
20138
20139         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20140 }
20141
20142 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20143 {
20144         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20145         const struct radio_regs *regs_TX_2056_ptr = NULL;
20146         const struct radio_regs *regs_RX_2056_ptr = NULL;
20147
20148         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20149                 regs_SYN_2056_ptr = regs_SYN_2056;
20150                 regs_TX_2056_ptr = regs_TX_2056;
20151                 regs_RX_2056_ptr = regs_RX_2056;
20152         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20153                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20154                 regs_TX_2056_ptr = regs_TX_2056_A1;
20155                 regs_RX_2056_ptr = regs_RX_2056_A1;
20156         } else {
20157                 switch (pi->pubpi.radiorev) {
20158                 case 5:
20159                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20160                         regs_TX_2056_ptr = regs_TX_2056_rev5;
20161                         regs_RX_2056_ptr = regs_RX_2056_rev5;
20162                         break;
20163
20164                 case 6:
20165                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20166                         regs_TX_2056_ptr = regs_TX_2056_rev6;
20167                         regs_RX_2056_ptr = regs_RX_2056_rev6;
20168                         break;
20169
20170                 case 7:
20171                 case 9:
20172                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20173                         regs_TX_2056_ptr = regs_TX_2056_rev7;
20174                         regs_RX_2056_ptr = regs_RX_2056_rev7;
20175                         break;
20176
20177                 case 8:
20178                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20179                         regs_TX_2056_ptr = regs_TX_2056_rev8;
20180                         regs_RX_2056_ptr = regs_RX_2056_rev8;
20181                         break;
20182
20183                 case 11:
20184                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20185                         regs_TX_2056_ptr = regs_TX_2056_rev11;
20186                         regs_RX_2056_ptr = regs_RX_2056_rev11;
20187                         break;
20188
20189                 default:
20190                         break;
20191                 }
20192         }
20193
20194         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20195
20196         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20197
20198         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20199
20200         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20201
20202         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20203 }
20204
20205 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20206 {
20207         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20208
20209         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20210         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20211         udelay(1000);
20212         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20213
20214         if ((pi->sh->boardflags2 & BFL2_LEGACY)
20215             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20216                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20217         else
20218                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20219
20220         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20221
20222         if (pi->phy_init_por)
20223                 wlc_phy_radio205x_rcal(pi);
20224 }
20225
20226 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20227 {
20228
20229         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20230         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20231
20232         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20233 }
20234
20235 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20236 {
20237         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20238 }
20239
20240 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20241 {
20242
20243         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20244                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20245
20246         if (((pi->sh->sromrev >= 4)
20247              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20248             || ((pi->sh->sromrev < 4))) {
20249                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20250                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20251         }
20252
20253         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20254         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20255
20256         and_radio_reg(pi, RADIO_2055_CAL_MISC,
20257                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20258
20259         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20260
20261         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20262
20263         udelay(1000);
20264
20265         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20266
20267         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20268                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20269
20270         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20271                   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20272                  "HW error: radio calibration1\n"))
20273                 return;
20274
20275         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20276                       ~(RADIO_2055_CAL_LPO_ENABLE));
20277
20278         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20279
20280         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20281         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20282
20283         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20284         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20285
20286         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20287                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20288         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20289                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20290         if (pi->nphy_gain_boost) {
20291                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20292                               ~(RADIO_2055_GAINBST_DISABLE));
20293                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20294                               ~(RADIO_2055_GAINBST_DISABLE));
20295         } else {
20296                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20297                              RADIO_2055_GAINBST_DISABLE);
20298                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20299                              RADIO_2055_GAINBST_DISABLE);
20300         }
20301
20302         udelay(2);
20303 }
20304
20305 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20306 {
20307         if (on) {
20308                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20309                         if (!pi->radio_is_on) {
20310                                 wlc_phy_radio_preinit_205x(pi);
20311                                 wlc_phy_radio_init_2057(pi);
20312                                 wlc_phy_radio_postinit_2057(pi);
20313                         }
20314
20315                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20316                                              pi->radio_chanspec);
20317                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20318                         wlc_phy_radio_preinit_205x(pi);
20319                         wlc_phy_radio_init_2056(pi);
20320                         wlc_phy_radio_postinit_2056(pi);
20321
20322                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20323                                              pi->radio_chanspec);
20324                 } else {
20325                         wlc_phy_radio_preinit_2055(pi);
20326                         wlc_phy_radio_init_2055(pi);
20327                         wlc_phy_radio_postinit_2055(pi);
20328                 }
20329
20330                 pi->radio_is_on = true;
20331
20332         } else {
20333
20334                 if (NREV_GE(pi->pubpi.phy_rev, 3)
20335                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
20336                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20337                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20338
20339                         write_radio_reg(pi,
20340                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20341                                         RADIO_2056_TX0, 0);
20342                         write_radio_reg(pi,
20343                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20344                                         RADIO_2056_TX0, 0);
20345                         write_radio_reg(pi,
20346                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20347                                         RADIO_2056_TX0, 0);
20348                         write_radio_reg(pi,
20349                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20350                                         RADIO_2056_TX0, 0);
20351                         mod_radio_reg(pi,
20352                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20353                                       RADIO_2056_TX0, 0xf0, 0);
20354                         write_radio_reg(pi,
20355                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20356                                         RADIO_2056_TX0, 0);
20357
20358                         write_radio_reg(pi,
20359                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20360                                         RADIO_2056_TX1, 0);
20361                         write_radio_reg(pi,
20362                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20363                                         RADIO_2056_TX1, 0);
20364                         write_radio_reg(pi,
20365                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20366                                         RADIO_2056_TX1, 0);
20367                         write_radio_reg(pi,
20368                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20369                                         RADIO_2056_TX1, 0);
20370                         mod_radio_reg(pi,
20371                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20372                                       RADIO_2056_TX1, 0xf0, 0);
20373                         write_radio_reg(pi,
20374                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20375                                         RADIO_2056_TX1, 0);
20376
20377                         pi->radio_is_on = false;
20378                 }
20379
20380                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20381                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20382                         pi->radio_is_on = false;
20383                 }
20384
20385         }
20386 }
20387
20388 static bool
20389 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20390                        struct chan_info_nphy_radio2057 **t0,
20391                        struct chan_info_nphy_radio205x **t1,
20392                        struct chan_info_nphy_radio2057_rev5 **t2,
20393                        struct chan_info_nphy_2055 **t3)
20394 {
20395         uint i;
20396         struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20397         struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20398         struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20399         u32 tbl_len = 0;
20400
20401         int freq = 0;
20402
20403         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20404
20405                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20406
20407                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20408                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20409
20410                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20411                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
20412                         switch (pi->pubpi.radiorev) {
20413
20414                         case 5:
20415
20416                                 if (pi->pubpi.radiover == 0x0) {
20417
20418                                         chan_info_tbl_p_2 =
20419                                                 chan_info_nphyrev8_2057_rev5;
20420                                         tbl_len = ARRAY_SIZE(
20421                                                   chan_info_nphyrev8_2057_rev5);
20422
20423                                 } else if (pi->pubpi.radiover == 0x1) {
20424
20425                                         chan_info_tbl_p_2 =
20426                                                 chan_info_nphyrev9_2057_rev5v1;
20427                                         tbl_len = ARRAY_SIZE(
20428                                                 chan_info_nphyrev9_2057_rev5v1);
20429
20430                                 }
20431                                 break;
20432
20433                         case 7:
20434                                 chan_info_tbl_p_0 =
20435                                         chan_info_nphyrev8_2057_rev7;
20436                                 tbl_len = ARRAY_SIZE(
20437                                                   chan_info_nphyrev8_2057_rev7);
20438                                 break;
20439
20440                         case 8:
20441                                 chan_info_tbl_p_0 =
20442                                         chan_info_nphyrev8_2057_rev8;
20443                                 tbl_len = ARRAY_SIZE(
20444                                                   chan_info_nphyrev8_2057_rev8);
20445                                 break;
20446
20447                         default:
20448                                 break;
20449                         }
20450                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20451
20452                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20453                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20454                 } else {
20455                         goto fail;
20456                 }
20457
20458                 for (i = 0; i < tbl_len; i++) {
20459                         if (pi->pubpi.radiorev == 5) {
20460
20461                                 if (chan_info_tbl_p_2[i].chan == channel)
20462                                         break;
20463                         } else {
20464
20465                                 if (chan_info_tbl_p_0[i].chan == channel)
20466                                         break;
20467                         }
20468                 }
20469
20470                 if (i >= tbl_len)
20471                         goto fail;
20472
20473                 if (pi->pubpi.radiorev == 5) {
20474                         *t2 = &chan_info_tbl_p_2[i];
20475                         freq = chan_info_tbl_p_2[i].freq;
20476                 } else {
20477                         *t0 = &chan_info_tbl_p_0[i];
20478                         freq = chan_info_tbl_p_0[i].freq;
20479                 }
20480
20481         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20482                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20483                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20484                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20485                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20486                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20487                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20488                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20489                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
20490                         switch (pi->pubpi.radiorev) {
20491                         case 5:
20492                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20493                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20494                                 break;
20495                         case 6:
20496                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20497                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20498                                 break;
20499                         case 7:
20500                         case 9:
20501                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20502                                 tbl_len =
20503                                         ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20504                                 break;
20505                         case 8:
20506                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20507                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20508                                 break;
20509                         case 11:
20510                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20511                                 tbl_len = ARRAY_SIZE(
20512                                                     chan_info_nphyrev6_2056v11);
20513                                 break;
20514                         default:
20515                                 break;
20516                         }
20517                 }
20518
20519                 for (i = 0; i < tbl_len; i++) {
20520                         if (chan_info_tbl_p_1[i].chan == channel)
20521                                 break;
20522                 }
20523
20524                 if (i >= tbl_len)
20525                         goto fail;
20526
20527                 *t1 = &chan_info_tbl_p_1[i];
20528                 freq = chan_info_tbl_p_1[i].freq;
20529
20530         } else {
20531                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20532                         if (chan_info_nphy_2055[i].chan == channel)
20533                                 break;
20534
20535                 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20536                         goto fail;
20537
20538                 *t3 = &chan_info_nphy_2055[i];
20539                 freq = chan_info_nphy_2055[i].freq;
20540         }
20541
20542         *f = freq;
20543         return true;
20544
20545 fail:
20546         *f = WL_CHAN_FREQ_RANGE_2G;
20547         return false;
20548 }
20549
20550 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20551 {
20552         int freq;
20553         struct chan_info_nphy_radio2057 *t0 = NULL;
20554         struct chan_info_nphy_radio205x *t1 = NULL;
20555         struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20556         struct chan_info_nphy_2055 *t3 = NULL;
20557
20558         if (channel == 0)
20559                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20560
20561         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20562
20563         if (CHSPEC_IS2G(pi->radio_chanspec))
20564                 return WL_CHAN_FREQ_RANGE_2G;
20565
20566         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20567                 return WL_CHAN_FREQ_RANGE_5GL;
20568         else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20569                 return WL_CHAN_FREQ_RANGE_5GM;
20570         else
20571                 return WL_CHAN_FREQ_RANGE_5GH;
20572 }
20573
20574 static void
20575 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20576                                  struct chan_info_nphy_2055 *ci)
20577 {
20578
20579         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20580         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20581         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20582         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20583
20584         BRCMS_PHY_WAR_PR51571(pi);
20585
20586         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20587         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20588         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20589         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20590
20591         BRCMS_PHY_WAR_PR51571(pi);
20592
20593         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20594         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20595         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20596         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20597
20598         BRCMS_PHY_WAR_PR51571(pi);
20599
20600         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20601                         ci->RF_core1_lgbuf_a_tune);
20602         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20603                         ci->RF_core1_lgbuf_g_tune);
20604         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20605         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20606                         ci->RF_core1_tx_pga_pad_tn);
20607
20608         BRCMS_PHY_WAR_PR51571(pi);
20609
20610         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20611                         ci->RF_core1_tx_mx_bgtrim);
20612         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20613                         ci->RF_core2_lgbuf_a_tune);
20614         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20615                         ci->RF_core2_lgbuf_g_tune);
20616         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20617
20618         BRCMS_PHY_WAR_PR51571(pi);
20619
20620         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20621                         ci->RF_core2_tx_pga_pad_tn);
20622         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20623                         ci->RF_core2_tx_mx_bgtrim);
20624
20625         udelay(50);
20626
20627         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20628         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20629
20630         BRCMS_PHY_WAR_PR51571(pi);
20631
20632         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20633
20634         udelay(300);
20635 }
20636
20637 static void
20638 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20639                                  const struct chan_info_nphy_radio205x *ci)
20640 {
20641         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20642
20643         write_radio_reg(pi,
20644                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20645                         ci->RF_SYN_pll_vcocal1);
20646         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20647                         ci->RF_SYN_pll_vcocal2);
20648         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20649                         ci->RF_SYN_pll_refdiv);
20650         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20651                         ci->RF_SYN_pll_mmd2);
20652         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20653                         ci->RF_SYN_pll_mmd1);
20654         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20655                         ci->RF_SYN_pll_loopfilter1);
20656         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20657                         ci->RF_SYN_pll_loopfilter2);
20658         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20659                         ci->RF_SYN_pll_loopfilter3);
20660         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20661                         ci->RF_SYN_pll_loopfilter4);
20662         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20663                         ci->RF_SYN_pll_loopfilter5);
20664         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20665                         ci->RF_SYN_reserved_addr27);
20666         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20667                         ci->RF_SYN_reserved_addr28);
20668         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20669                         ci->RF_SYN_reserved_addr29);
20670         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20671                         ci->RF_SYN_logen_VCOBUF1);
20672         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20673                         ci->RF_SYN_logen_MIXER2);
20674         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20675                         ci->RF_SYN_logen_BUF3);
20676         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20677                         ci->RF_SYN_logen_BUF4);
20678
20679         write_radio_reg(pi,
20680                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20681                         ci->RF_RX0_lnaa_tune);
20682         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20683                         ci->RF_RX0_lnag_tune);
20684         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20685                         ci->RF_TX0_intpaa_boost_tune);
20686         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20687                         ci->RF_TX0_intpag_boost_tune);
20688         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20689                         ci->RF_TX0_pada_boost_tune);
20690         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20691                         ci->RF_TX0_padg_boost_tune);
20692         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20693                         ci->RF_TX0_pgaa_boost_tune);
20694         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20695                         ci->RF_TX0_pgag_boost_tune);
20696         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20697                         ci->RF_TX0_mixa_boost_tune);
20698         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20699                         ci->RF_TX0_mixg_boost_tune);
20700
20701         write_radio_reg(pi,
20702                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20703                         ci->RF_RX1_lnaa_tune);
20704         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20705                         ci->RF_RX1_lnag_tune);
20706         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20707                         ci->RF_TX1_intpaa_boost_tune);
20708         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20709                         ci->RF_TX1_intpag_boost_tune);
20710         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20711                         ci->RF_TX1_pada_boost_tune);
20712         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20713                         ci->RF_TX1_padg_boost_tune);
20714         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20715                         ci->RF_TX1_pgaa_boost_tune);
20716         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20717                         ci->RF_TX1_pgag_boost_tune);
20718         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20719                         ci->RF_TX1_mixa_boost_tune);
20720         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20721                         ci->RF_TX1_mixg_boost_tune);
20722
20723         if (NREV_IS(pi->pubpi.phy_rev, 3))
20724                 regs_SYN_2056_ptr = regs_SYN_2056;
20725         else if (NREV_IS(pi->pubpi.phy_rev, 4))
20726                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20727         else {
20728                 switch (pi->pubpi.radiorev) {
20729                 case 5:
20730                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20731                         break;
20732                 case 6:
20733                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20734                         break;
20735                 case 7:
20736                 case 9:
20737                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20738                         break;
20739                 case 8:
20740                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20741                         break;
20742                 case 11:
20743                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20744                         break;
20745                 }
20746         }
20747         if (CHSPEC_IS2G(pi->radio_chanspec))
20748                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20749                                 RADIO_2056_SYN,
20750                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20751         else
20752                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20753                                 RADIO_2056_SYN,
20754                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20755
20756         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20757                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20758                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20759                                         RADIO_2056_SYN, 0x1f);
20760                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20761                                         RADIO_2056_SYN, 0x1f);
20762
20763                         write_radio_reg(pi,
20764                                         RADIO_2056_SYN_PLL_LOOPFILTER4 |
20765                                         RADIO_2056_SYN, 0xb);
20766                         write_radio_reg(pi,
20767                                         RADIO_2056_SYN_PLL_CP2 |
20768                                         RADIO_2056_SYN, 0x14);
20769                 }
20770         }
20771
20772         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20773             (CHSPEC_IS2G(pi->radio_chanspec))) {
20774                 write_radio_reg(pi,
20775                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20776                                 0x1f);
20777                 write_radio_reg(pi,
20778                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20779                                 0x1f);
20780                 write_radio_reg(pi,
20781                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20782                                 0xb);
20783                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20784                                 0x20);
20785         }
20786
20787         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20788                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20789                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20790                                         RADIO_2056_SYN, 0x1f);
20791                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20792                                         RADIO_2056_SYN, 0x1f);
20793                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20794                                         RADIO_2056_SYN, 0x5);
20795                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20796                                         RADIO_2056_SYN, 0xc);
20797                 }
20798         }
20799
20800         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20801                 u16 pag_boost_tune;
20802                 u16 padg_boost_tune;
20803                 u16 pgag_boost_tune;
20804                 u16 mixg_boost_tune;
20805                 u16 bias, cascbias;
20806                 uint core;
20807
20808                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20809
20810                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20811
20812                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20813                                                  PADG_IDAC, 0xcc);
20814
20815                                 bias = 0x25;
20816                                 cascbias = 0x20;
20817
20818                                 if ((pi->sh->chip ==
20819                                      BCM43224_CHIP_ID)
20820                                     || (pi->sh->chip ==
20821                                         BCM43225_CHIP_ID)) {
20822                                         if (pi->sh->chippkg ==
20823                                             BCM43224_FAB_SMIC) {
20824                                                 bias = 0x2a;
20825                                                 cascbias = 0x38;
20826                                         }
20827                                 }
20828
20829                                 pag_boost_tune = 0x4;
20830                                 pgag_boost_tune = 0x03;
20831                                 padg_boost_tune = 0x77;
20832                                 mixg_boost_tune = 0x65;
20833
20834                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20835                                                  INTPAG_IMAIN_STAT, bias);
20836                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20837                                                  INTPAG_IAUX_STAT, bias);
20838                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20839                                                  INTPAG_CASCBIAS, cascbias);
20840
20841                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20842                                                  INTPAG_BOOST_TUNE,
20843                                                  pag_boost_tune);
20844                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20845                                                  PGAG_BOOST_TUNE,
20846                                                  pgag_boost_tune);
20847                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20848                                                  PADG_BOOST_TUNE,
20849                                                  padg_boost_tune);
20850                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20851                                                  MIXG_BOOST_TUNE,
20852                                                  mixg_boost_tune);
20853                         } else {
20854
20855                                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20856                                        0x40 : 0x20;
20857
20858                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20859                                                  INTPAG_IMAIN_STAT, bias);
20860                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20861                                                  INTPAG_IAUX_STAT, bias);
20862                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20863                                                  INTPAG_CASCBIAS, 0x30);
20864                         }
20865                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20866                                          0xee);
20867                 }
20868         }
20869
20870         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20871             && CHSPEC_IS5G(pi->radio_chanspec)) {
20872                 u16 paa_boost_tune;
20873                 u16 pada_boost_tune;
20874                 u16 pgaa_boost_tune;
20875                 u16 mixa_boost_tune;
20876                 u16 freq, pabias, cascbias;
20877                 uint core;
20878
20879                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20880
20881                 if (freq < 5150) {
20882
20883                         paa_boost_tune = 0xa;
20884                         pada_boost_tune = 0x77;
20885                         pgaa_boost_tune = 0xf;
20886                         mixa_boost_tune = 0xf;
20887                 } else if (freq < 5340) {
20888
20889                         paa_boost_tune = 0x8;
20890                         pada_boost_tune = 0x77;
20891                         pgaa_boost_tune = 0xfb;
20892                         mixa_boost_tune = 0xf;
20893                 } else if (freq < 5650) {
20894
20895                         paa_boost_tune = 0x0;
20896                         pada_boost_tune = 0x77;
20897                         pgaa_boost_tune = 0xb;
20898                         mixa_boost_tune = 0xf;
20899                 } else {
20900
20901                         paa_boost_tune = 0x0;
20902                         pada_boost_tune = 0x77;
20903                         if (freq != 5825)
20904                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20905                         else
20906                                 pgaa_boost_tune = 6;
20907
20908                         mixa_boost_tune = 0xf;
20909                 }
20910
20911                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20912                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20913                                          INTPAA_BOOST_TUNE, paa_boost_tune);
20914                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20915                                          PADA_BOOST_TUNE, pada_boost_tune);
20916                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20917                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
20918                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20919                                          MIXA_BOOST_TUNE, mixa_boost_tune);
20920
20921                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20922                                          TXSPARE1, 0x30);
20923                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20924                                          PA_SPARE2, 0xee);
20925
20926                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20927                                          PADA_CASCBIAS, 0x3);
20928
20929                         cascbias = 0x30;
20930
20931                         if ((pi->sh->chip == BCM43224_CHIP_ID) ||
20932                             (pi->sh->chip == BCM43225_CHIP_ID)) {
20933                                 if (pi->sh->chippkg == BCM43224_FAB_SMIC)
20934                                         cascbias = 0x35;
20935                         }
20936
20937                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20938
20939                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20940                                          INTPAA_IAUX_STAT, pabias);
20941                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20942                                          INTPAA_IMAIN_STAT, pabias);
20943                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20944                                          INTPAA_CASCBIAS, cascbias);
20945                 }
20946         }
20947
20948         udelay(50);
20949
20950         wlc_phy_radio205x_vcocal_nphy(pi);
20951 }
20952
20953 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20954 {
20955         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20956                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20957                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20958                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20959                               (1 << 2));
20960                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20961         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20962                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20963                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20964                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20965                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20966                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20967         }
20968
20969         udelay(300);
20970 }
20971
20972 static void
20973 wlc_phy_chanspec_radio2057_setup(
20974         struct brcms_phy *pi,
20975         const struct chan_info_nphy_radio2057 *ci,
20976         const struct chan_info_nphy_radio2057_rev5 *
20977         ci2)
20978 {
20979         int coreNum;
20980         u16 txmix2g_tune_boost_pu = 0;
20981         u16 pad2g_tune_pus = 0;
20982
20983         if (pi->pubpi.radiorev == 5) {
20984
20985                 write_radio_reg(pi,
20986                                 RADIO_2057_VCOCAL_COUNTVAL0,
20987                                 ci2->RF_vcocal_countval0);
20988                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20989                                 ci2->RF_vcocal_countval1);
20990                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20991                                 ci2->RF_rfpll_refmaster_sparextalsize);
20992                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20993                                 ci2->RF_rfpll_loopfilter_r1);
20994                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20995                                 ci2->RF_rfpll_loopfilter_c2);
20996                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20997                                 ci2->RF_rfpll_loopfilter_c1);
20998                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20999                                 ci2->RF_cp_kpd_idac);
21000                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
21001                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
21002                 write_radio_reg(pi,
21003                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
21004                 write_radio_reg(pi,
21005                                 RADIO_2057_LOGEN_MX2G_TUNE,
21006                                 ci2->RF_logen_mx2g_tune);
21007                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21008                                 ci2->RF_logen_indbuf2g_tune);
21009
21010                 write_radio_reg(pi,
21011                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21012                                 ci2->RF_txmix2g_tune_boost_pu_core0);
21013                 write_radio_reg(pi,
21014                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21015                                 ci2->RF_pad2g_tune_pus_core0);
21016                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21017                                 ci2->RF_lna2g_tune_core0);
21018
21019                 write_radio_reg(pi,
21020                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21021                                 ci2->RF_txmix2g_tune_boost_pu_core1);
21022                 write_radio_reg(pi,
21023                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21024                                 ci2->RF_pad2g_tune_pus_core1);
21025                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21026                                 ci2->RF_lna2g_tune_core1);
21027
21028         } else {
21029
21030                 write_radio_reg(pi,
21031                                 RADIO_2057_VCOCAL_COUNTVAL0,
21032                                 ci->RF_vcocal_countval0);
21033                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
21034                                 ci->RF_vcocal_countval1);
21035                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
21036                                 ci->RF_rfpll_refmaster_sparextalsize);
21037                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21038                                 ci->RF_rfpll_loopfilter_r1);
21039                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21040                                 ci->RF_rfpll_loopfilter_c2);
21041                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21042                                 ci->RF_rfpll_loopfilter_c1);
21043                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21044                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21045                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21046                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21047                 write_radio_reg(pi,
21048                                 RADIO_2057_LOGEN_MX2G_TUNE,
21049                                 ci->RF_logen_mx2g_tune);
21050                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21051                                 ci->RF_logen_mx5g_tune);
21052                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21053                                 ci->RF_logen_indbuf2g_tune);
21054                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21055                                 ci->RF_logen_indbuf5g_tune);
21056
21057                 write_radio_reg(pi,
21058                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21059                                 ci->RF_txmix2g_tune_boost_pu_core0);
21060                 write_radio_reg(pi,
21061                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21062                                 ci->RF_pad2g_tune_pus_core0);
21063                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21064                                 ci->RF_pga_boost_tune_core0);
21065                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21066                                 ci->RF_txmix5g_boost_tune_core0);
21067                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21068                                 ci->RF_pad5g_tune_misc_pus_core0);
21069                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21070                                 ci->RF_lna2g_tune_core0);
21071                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21072                                 ci->RF_lna5g_tune_core0);
21073
21074                 write_radio_reg(pi,
21075                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21076                                 ci->RF_txmix2g_tune_boost_pu_core1);
21077                 write_radio_reg(pi,
21078                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21079                                 ci->RF_pad2g_tune_pus_core1);
21080                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21081                                 ci->RF_pga_boost_tune_core1);
21082                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21083                                 ci->RF_txmix5g_boost_tune_core1);
21084                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21085                                 ci->RF_pad5g_tune_misc_pus_core1);
21086                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21087                                 ci->RF_lna2g_tune_core1);
21088                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21089                                 ci->RF_lna5g_tune_core1);
21090         }
21091
21092         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21093
21094                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21095                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21096                                         0x3f);
21097                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21098                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21099                                         0x8);
21100                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21101                                         0x8);
21102                 } else {
21103                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21104                                         0x1f);
21105                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21106                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21107                                         0x8);
21108                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21109                                         0x8);
21110                 }
21111         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21112                    (pi->pubpi.radiorev == 8)) {
21113
21114                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21115                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21116                                         0x1b);
21117                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21118                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21119                                         0xa);
21120                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21121                                         0xa);
21122                 } else {
21123                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21124                                         0x1f);
21125                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21126                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21127                                         0x8);
21128                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21129                                         0x8);
21130                 }
21131
21132         }
21133
21134         if (CHSPEC_IS2G(pi->radio_chanspec)) {
21135                 if (PHY_IPA(pi)) {
21136                         if (pi->pubpi.radiorev == 3)
21137                                 txmix2g_tune_boost_pu = 0x6b;
21138
21139                         if (pi->pubpi.radiorev == 5)
21140                                 pad2g_tune_pus = 0x73;
21141
21142                 } else {
21143                         if (pi->pubpi.radiorev != 5) {
21144                                 pad2g_tune_pus = 0x3;
21145
21146                                 txmix2g_tune_boost_pu = 0x61;
21147                         }
21148                 }
21149
21150                 for (coreNum = 0; coreNum <= 1; coreNum++) {
21151
21152                         if (txmix2g_tune_boost_pu != 0)
21153                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21154                                                  TXMIX2G_TUNE_BOOST_PU,
21155                                                  txmix2g_tune_boost_pu);
21156
21157                         if (pad2g_tune_pus != 0)
21158                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21159                                                  PAD2G_TUNE_PUS,
21160                                                  pad2g_tune_pus);
21161                 }
21162         }
21163
21164         udelay(50);
21165
21166         wlc_phy_radio205x_vcocal_nphy(pi);
21167 }
21168
21169 static void
21170 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21171                             const struct nphy_sfo_cfg *ci)
21172 {
21173         u16 val;
21174
21175         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21176         if (CHSPEC_IS5G(chanspec) && !val) {
21177
21178                 val = R_REG(&pi->regs->psm_phy_hdr_param);
21179                 W_REG(&pi->regs->psm_phy_hdr_param,
21180                       (val | MAC_PHY_FORCE_CLK));
21181
21182                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21183                            (BBCFG_RESETCCA | BBCFG_RESETRX));
21184
21185                 W_REG(&pi->regs->psm_phy_hdr_param, val);
21186
21187                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21188         } else if (!CHSPEC_IS5G(chanspec) && val) {
21189
21190                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21191
21192                 val = R_REG(&pi->regs->psm_phy_hdr_param);
21193                 W_REG(&pi->regs->psm_phy_hdr_param,
21194                       (val | MAC_PHY_FORCE_CLK));
21195
21196                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21197                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21198
21199                 W_REG(&pi->regs->psm_phy_hdr_param, val);
21200         }
21201
21202         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21203         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21204         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21205
21206         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21207         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21208         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21209
21210         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21211                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21212
21213                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21214         } else {
21215                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21216                                         NPHY_ClassifierCtrl_ofdm_en);
21217
21218                 if (CHSPEC_IS2G(chanspec))
21219                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21220         }
21221
21222         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21223                 wlc_phy_txpwr_fixpower_nphy(pi);
21224
21225         if (NREV_LT(pi->pubpi.phy_rev, 3))
21226                 wlc_phy_adjust_lnagaintbl_nphy(pi);
21227
21228         wlc_phy_txlpfbw_nphy(pi);
21229
21230         if (NREV_GE(pi->pubpi.phy_rev, 3)
21231             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21232                 u8 spuravoid = 0;
21233
21234                 val = CHSPEC_CHANNEL(chanspec);
21235                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21236                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21237                                 if ((val == 13) || (val == 14) || (val == 153))
21238                                         spuravoid = 1;
21239                         } else if (((val >= 5) && (val <= 8)) || (val == 13)
21240                                    || (val == 14)) {
21241                                 spuravoid = 1;
21242                         }
21243                 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21244                         if (val == 54)
21245                                 spuravoid = 1;
21246                 } else {
21247                         if (pi->nphy_aband_spurwar_en &&
21248                             ((val == 38) || (val == 102)
21249                              || (val == 118)))
21250                                 spuravoid = 1;
21251                 }
21252
21253                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21254                         spuravoid = 1;
21255
21256                 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21257                 si_pmu_spuravoid(pi->sh->sih, spuravoid);
21258                 wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21259
21260                 if ((pi->sh->chip == BCM43224_CHIP_ID) ||
21261                     (pi->sh->chip == BCM43225_CHIP_ID)) {
21262
21263                         if (spuravoid == 1) {
21264
21265                                 W_REG(&pi->regs->tsf_clk_frac_l,
21266                                       0x5341);
21267                                 W_REG(&pi->regs->tsf_clk_frac_h,
21268                                       0x8);
21269                         } else {
21270
21271                                 W_REG(&pi->regs->tsf_clk_frac_l,
21272                                       0x8889);
21273                                 W_REG(&pi->regs->tsf_clk_frac_h,
21274                                       0x8);
21275                         }
21276                 }
21277
21278                 wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21279
21280                 mod_phy_reg(pi, 0x01, (0x1 << 15),
21281                             ((spuravoid > 0) ? (0x1 << 15) : 0));
21282
21283                 wlc_phy_resetcca_nphy(pi);
21284
21285                 pi->phy_isspuravoid = (spuravoid > 0);
21286         }
21287
21288         if (NREV_LT(pi->pubpi.phy_rev, 7))
21289                 write_phy_reg(pi, 0x17e, 0x3830);
21290
21291         wlc_phy_spurwar_nphy(pi);
21292 }
21293
21294 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21295 {
21296         int freq;
21297         struct chan_info_nphy_radio2057 *t0 = NULL;
21298         struct chan_info_nphy_radio205x *t1 = NULL;
21299         struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21300         struct chan_info_nphy_2055 *t3 = NULL;
21301
21302         if (!wlc_phy_chan2freq_nphy
21303                     (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21304                 return;
21305
21306         wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21307
21308         if (CHSPEC_BW(chanspec) != pi->bw)
21309                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21310
21311         if (CHSPEC_IS40(chanspec)) {
21312                 if (CHSPEC_SB_UPPER(chanspec)) {
21313                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21314                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21315                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21316                 } else {
21317                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21318                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21319                                 and_phy_reg(pi, 0x310,
21320                                             (~PRIM_SEL_UP20 & 0xffff));
21321                 }
21322         }
21323
21324         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21325                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21326
21327                         if ((pi->pubpi.radiorev <= 4)
21328                             || (pi->pubpi.radiorev == 6)) {
21329                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21330                                               0x2,
21331                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21332                                                : 0));
21333                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21334                                               0x2,
21335                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21336                                                : 0));
21337                         }
21338
21339                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21340                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21341                                 (pi->pubpi.radiorev == 5) ?
21342                                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21343                                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21344
21345                 } else {
21346
21347                         mod_radio_reg(pi,
21348                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21349                                       0x4,
21350                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21351                         wlc_phy_chanspec_radio2056_setup(pi, t1);
21352
21353                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21354                                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21355                 }
21356
21357         } else {
21358
21359                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21360                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21361                                : (0x05 << 4)));
21362
21363                 wlc_phy_chanspec_radio2055_setup(pi, t3);
21364                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21365                                             (const struct nphy_sfo_cfg *)
21366                                              &(t3->PHY_BW1a));
21367         }
21368
21369 }
21370
21371 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21372 {
21373         struct brcms_phy *pi = (struct brcms_phy *) ppi;
21374         u16 mask = 0xfc00;
21375         u32 mc = 0;
21376
21377         if (NREV_GE(pi->pubpi.phy_rev, 7))
21378                 return;
21379
21380         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21381                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21382
21383                 if (lut_init == false)
21384                         return;
21385
21386                 if (pi->srom_fem2g.antswctrllut == 0) {
21387                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21388                                                  1, 0x02, 16, &v0);
21389                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21390                                                  1, 0x03, 16, &v1);
21391                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21392                                                  1, 0x08, 16, &v2);
21393                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21394                                                  1, 0x0C, 16, &v3);
21395                 }
21396
21397                 if (pi->srom_fem5g.antswctrllut == 0) {
21398                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21399                                                  1, 0x12, 16, &v0);
21400                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21401                                                  1, 0x13, 16, &v1);
21402                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21403                                                  1, 0x18, 16, &v2);
21404                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21405                                                  1, 0x1C, 16, &v3);
21406                 }
21407         } else {
21408
21409                 write_phy_reg(pi, 0xc8, 0x0);
21410                 write_phy_reg(pi, 0xc9, 0x0);
21411
21412                 ai_gpiocontrol(pi->sh->sih, mask, mask, GPIO_DRV_PRIORITY);
21413
21414                 mc = R_REG(&pi->regs->maccontrol);
21415                 mc &= ~MCTL_GPOUT_SEL_MASK;
21416                 W_REG(&pi->regs->maccontrol, mc);
21417
21418                 OR_REG(&pi->regs->psm_gpio_oe, mask);
21419
21420                 AND_REG(&pi->regs->psm_gpio_out, ~mask);
21421
21422                 if (lut_init) {
21423                         write_phy_reg(pi, 0xf8, 0x02d8);
21424                         write_phy_reg(pi, 0xf9, 0x0301);
21425                         write_phy_reg(pi, 0xfa, 0x02d8);
21426                         write_phy_reg(pi, 0xfb, 0x0301);
21427                 }
21428         }
21429 }
21430
21431 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21432 {
21433         u16 curr_ctl, new_ctl;
21434         bool suspended = false;
21435
21436         if (D11REV_IS(pi->sh->corerev, 16)) {
21437                 suspended =
21438                         (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC) ?
21439                         false : true;
21440                 if (!suspended)
21441                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
21442         }
21443
21444         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21445
21446         new_ctl = (curr_ctl & (~mask)) | (val & mask);
21447
21448         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21449
21450         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21451                 wlapi_enable_mac(pi->sh->physhim);
21452
21453         return new_ctl;
21454 }
21455
21456 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21457 {
21458         u16 trigger_mask, status_mask;
21459         u16 orig_RfseqCoreActv;
21460
21461         switch (cmd) {
21462         case NPHY_RFSEQ_RX2TX:
21463                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21464                 status_mask = NPHY_RfseqStatus_rx2tx;
21465                 break;
21466         case NPHY_RFSEQ_TX2RX:
21467                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21468                 status_mask = NPHY_RfseqStatus_tx2rx;
21469                 break;
21470         case NPHY_RFSEQ_RESET2RX:
21471                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21472                 status_mask = NPHY_RfseqStatus_reset2rx;
21473                 break;
21474         case NPHY_RFSEQ_UPDATEGAINH:
21475                 trigger_mask = NPHY_RfseqTrigger_updategainh;
21476                 status_mask = NPHY_RfseqStatus_updategainh;
21477                 break;
21478         case NPHY_RFSEQ_UPDATEGAINL:
21479                 trigger_mask = NPHY_RfseqTrigger_updategainl;
21480                 status_mask = NPHY_RfseqStatus_updategainl;
21481                 break;
21482         case NPHY_RFSEQ_UPDATEGAINU:
21483                 trigger_mask = NPHY_RfseqTrigger_updategainu;
21484                 status_mask = NPHY_RfseqStatus_updategainu;
21485                 break;
21486         default:
21487                 return;
21488         }
21489
21490         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21491         or_phy_reg(pi, 0xa1,
21492                    (NPHY_RfseqMode_CoreActv_override |
21493                     NPHY_RfseqMode_Trigger_override));
21494         or_phy_reg(pi, 0xa3, trigger_mask);
21495         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21496         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21497         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21498 }
21499
21500 static void
21501 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21502                                      u8 core_mask, u8 off)
21503 {
21504         u16 rfmxgain = 0, lpfgain = 0;
21505         u16 tgain = 0;
21506
21507         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21508
21509                 switch (cmd) {
21510                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21511                         wlc_phy_rfctrl_override_nphy_rev7(
21512                                 pi, (0x1 << 5),
21513                                 value, core_mask, off,
21514                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21515                         wlc_phy_rfctrl_override_nphy_rev7(
21516                                 pi, (0x1 << 4), value,
21517                                 core_mask, off,
21518                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21519                         wlc_phy_rfctrl_override_nphy_rev7(
21520                                 pi, (0x1 << 3), value,
21521                                 core_mask, off,
21522                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21523                         break;
21524                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21525                         wlc_phy_rfctrl_override_nphy_rev7(
21526                                 pi, (0x1 << 2),
21527                                 value, core_mask, off,
21528                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21529                         wlc_phy_rfctrl_override_nphy_rev7(
21530                                 pi, (0x1 << 1), value,
21531                                 core_mask, off,
21532                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21533                         wlc_phy_rfctrl_override_nphy_rev7(
21534                                 pi, (0x1 << 0), value,
21535                                 core_mask, off,
21536                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21537                         wlc_phy_rfctrl_override_nphy_rev7(
21538                                 pi, (0x1 << 1), value,
21539                                 core_mask, off,
21540                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21541                         wlc_phy_rfctrl_override_nphy_rev7(
21542                                 pi, (0x1 << 11), 0,
21543                                 core_mask, off,
21544                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21545                         break;
21546                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21547                         wlc_phy_rfctrl_override_nphy_rev7(
21548                                 pi, (0x1 << 2),
21549                                 value, core_mask, off,
21550                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21551                         wlc_phy_rfctrl_override_nphy_rev7(
21552                                 pi, (0x1 << 1), value,
21553                                 core_mask, off,
21554                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21555                         wlc_phy_rfctrl_override_nphy_rev7(
21556                                 pi, (0x1 << 0), value,
21557                                 core_mask, off,
21558                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21559                         wlc_phy_rfctrl_override_nphy_rev7(
21560                                 pi, (0x1 << 2), value,
21561                                 core_mask, off,
21562                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21563                         wlc_phy_rfctrl_override_nphy_rev7(
21564                                 pi, (0x1 << 11), 1,
21565                                 core_mask, off,
21566                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21567                         break;
21568                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21569                         rfmxgain = value & 0x000ff;
21570                         lpfgain = value & 0x0ff00;
21571                         lpfgain = lpfgain >> 8;
21572
21573                         wlc_phy_rfctrl_override_nphy_rev7(
21574                                 pi, (0x1 << 11),
21575                                 rfmxgain, core_mask,
21576                                 off,
21577                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21578                         wlc_phy_rfctrl_override_nphy_rev7(
21579                                 pi, (0x3 << 13),
21580                                 lpfgain, core_mask,
21581                                 off,
21582                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21583                         break;
21584                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21585                         tgain = value & 0x7fff;
21586                         lpfgain = value & 0x8000;
21587                         lpfgain = lpfgain >> 14;
21588
21589                         wlc_phy_rfctrl_override_nphy_rev7(
21590                                 pi, (0x1 << 12),
21591                                 tgain, core_mask, off,
21592                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21593                         wlc_phy_rfctrl_override_nphy_rev7(
21594                                 pi, (0x1 << 13),
21595                                 lpfgain, core_mask,
21596                                 off,
21597                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21598                         break;
21599                 }
21600         }
21601 }
21602
21603 static void
21604 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21605                                u8 coresel, u8 rail, u8 rssi_type)
21606 {
21607         u16 valuetostuff;
21608
21609         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21610                  NPHY_RSSICAL_MAXREAD : offset;
21611         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21612                  -NPHY_RSSICAL_MAXREAD - 1 : offset;
21613
21614         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21615
21616         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21617              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21618             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21619                 write_phy_reg(pi, 0x1a6, valuetostuff);
21620
21621         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21622              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21623             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21624                 write_phy_reg(pi, 0x1ac, valuetostuff);
21625
21626         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21627              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21628             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21629                 write_phy_reg(pi, 0x1b2, valuetostuff);
21630
21631         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21632              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21633             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21634                 write_phy_reg(pi, 0x1b8, valuetostuff);
21635
21636         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21637              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21638             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21639                 write_phy_reg(pi, 0x1a4, valuetostuff);
21640
21641         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21642              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21643             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21644                 write_phy_reg(pi, 0x1aa, valuetostuff);
21645
21646         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21647              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21648             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21649                 write_phy_reg(pi, 0x1b0, valuetostuff);
21650
21651         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21652              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21653             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21654                 write_phy_reg(pi, 0x1b6, valuetostuff);
21655
21656         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21657              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21658             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21659                 write_phy_reg(pi, 0x1a5, valuetostuff);
21660         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21661              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21662             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21663                 write_phy_reg(pi, 0x1ab, valuetostuff);
21664
21665         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21666              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21667             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21668                 write_phy_reg(pi, 0x1b1, valuetostuff);
21669
21670         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21671              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21672             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21673                 write_phy_reg(pi, 0x1b7, valuetostuff);
21674
21675         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21676              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21677             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21678                 write_phy_reg(pi, 0x1a7, valuetostuff);
21679         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21680              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21681             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21682                 write_phy_reg(pi, 0x1ad, valuetostuff);
21683         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21684              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21685             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21686                 write_phy_reg(pi, 0x1b3, valuetostuff);
21687         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21688              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21689             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21690                 write_phy_reg(pi, 0x1b9, valuetostuff);
21691
21692         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21693              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21694             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21695                 write_phy_reg(pi, 0x1a8, valuetostuff);
21696
21697         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21698              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21699             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21700                 write_phy_reg(pi, 0x1ae, valuetostuff);
21701
21702         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21703              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21704             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21705                 write_phy_reg(pi, 0x1b4, valuetostuff);
21706
21707         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21708              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21709             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21710                 write_phy_reg(pi, 0x1ba, valuetostuff);
21711
21712         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21713              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21714             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21715                 write_phy_reg(pi, 0x1a9, valuetostuff);
21716         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21717              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21718             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21719                 write_phy_reg(pi, 0x1b5, valuetostuff);
21720
21721         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21722              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21723             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21724                 write_phy_reg(pi, 0x1af, valuetostuff);
21725
21726         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21727              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21728             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21729                 write_phy_reg(pi, 0x1bb, valuetostuff);
21730 }
21731
21732 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21733 {
21734         if (PHY_IPA(pi)) {
21735                 if (NREV_GE(pi->pubpi.phy_rev, 7))
21736                         write_radio_reg(pi,
21737                                         ((core == PHY_CORE_0) ?
21738                                          RADIO_2057_TX0_TX_SSI_MUX :
21739                                          RADIO_2057_TX1_TX_SSI_MUX),
21740                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21741                                         0xc : 0xe));
21742                 else
21743                         write_radio_reg(pi,
21744                                         RADIO_2056_TX_TX_SSI_MUX |
21745                                         ((core == PHY_CORE_0) ?
21746                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21747                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21748                                         0xc : 0xe));
21749         } else {
21750                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21751                         write_radio_reg(pi,
21752                                         ((core == PHY_CORE_0) ?
21753                                          RADIO_2057_TX0_TX_SSI_MUX :
21754                                          RADIO_2057_TX1_TX_SSI_MUX),
21755                                         0x11);
21756
21757                         if (pi->pubpi.radioid == BCM2057_ID)
21758                                 write_radio_reg(pi,
21759                                                 RADIO_2057_IQTEST_SEL_PU, 0x1);
21760
21761                 } else {
21762                         write_radio_reg(pi,
21763                                         RADIO_2056_TX_TX_SSI_MUX |
21764                                         ((core == PHY_CORE_0) ?
21765                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21766                                         0x11);
21767                 }
21768         }
21769 }
21770
21771 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21772 {
21773         u16 mask, val;
21774         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21775             startseq;
21776         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21777             rfctrlovr_trigger_val;
21778         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21779         u16 rfctrlcmd_val, rfctrlovr_val;
21780         u8 core;
21781
21782         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21783                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21784                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21785                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21786
21787                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21788                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21789
21790                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21791                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21792
21793                         mask = (0x1 << 2) |
21794                                (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21795                         mod_phy_reg(pi, 0xf9, mask, 0);
21796                         mod_phy_reg(pi, 0xfb, mask, 0);
21797
21798                 } else {
21799                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21800                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21801                                     && core == PHY_CORE_1)
21802                                         continue;
21803                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21804                                          && core == PHY_CORE_0)
21805                                         continue;
21806
21807                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21808                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
21809
21810                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21811                                     rssi_type == NPHY_RSSI_SEL_W2 ||
21812                                     rssi_type == NPHY_RSSI_SEL_NB) {
21813                                         mod_phy_reg(pi,
21814                                                     (core ==
21815                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
21816                                                     (0x3 << 8), 0);
21817
21818                                         mask = (0x1 << 2) |
21819                                                (0x1 << 3) |
21820                                                (0x1 << 4) | (0x1 << 5);
21821                                         mod_phy_reg(pi,
21822                                                     (core ==
21823                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21824                                                     mask, 0);
21825
21826                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
21827                                                 if (CHSPEC_IS5G(
21828                                                           pi->radio_chanspec)) {
21829                                                         mask = (0x1 << 2);
21830                                                         val = 1 << 2;
21831                                                 } else {
21832                                                         mask = (0x1 << 3);
21833                                                         val = 1 << 3;
21834                                                 }
21835                                         } else if (rssi_type ==
21836                                                    NPHY_RSSI_SEL_W2) {
21837                                                 mask = (0x1 << 4);
21838                                                 val = 1 << 4;
21839                                         } else {
21840                                                 mask = (0x1 << 5);
21841                                                 val = 1 << 5;
21842                                         }
21843                                         mod_phy_reg(pi,
21844                                                     (core ==
21845                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21846                                                     mask, val);
21847
21848                                         mask = (0x1 << 5);
21849                                         val = 1 << 5;
21850                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
21851                                                     0xe5 : 0xe6, mask, val);
21852                                 } else {
21853                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
21854                                                 mask = (0x3 << 8);
21855                                                 val = 1 << 8;
21856                                                 mod_phy_reg(pi,
21857                                                             (core ==
21858                                                              PHY_CORE_0) ? 0xa6
21859                                                             : 0xa7, mask, val);
21860                                                 mask = (0x3 << 10);
21861                                                 val = 1 << 10;
21862                                                 mod_phy_reg(pi,
21863                                                             (core ==
21864                                                              PHY_CORE_0) ? 0xa6
21865                                                             : 0xa7, mask, val);
21866                                         } else if (rssi_type ==
21867                                                    NPHY_RSSI_SEL_IQ) {
21868                                                 mask = (0x3 << 8);
21869                                                 val = 2 << 8;
21870                                                 mod_phy_reg(pi,
21871                                                             (core ==
21872                                                              PHY_CORE_0) ? 0xa6
21873                                                             : 0xa7, mask, val);
21874                                                 mask = (0x3 << 10);
21875                                                 val = 2 << 10;
21876                                                 mod_phy_reg(pi,
21877                                                             (core ==
21878                                                              PHY_CORE_0) ? 0xa6
21879                                                             : 0xa7, mask, val);
21880                                         } else {
21881                                                 mask = (0x3 << 8);
21882                                                 val = 3 << 8;
21883                                                 mod_phy_reg(pi,
21884                                                             (core ==
21885                                                              PHY_CORE_0) ? 0xa6
21886                                                             : 0xa7, mask, val);
21887                                                 mask = (0x3 << 10);
21888                                                 val = 3 << 10;
21889                                                 mod_phy_reg(pi,
21890                                                             (core ==
21891                                                              PHY_CORE_0) ? 0xa6
21892                                                             : 0xa7, mask, val);
21893                                                 brcms_phy_wr_tx_mux(pi, core);
21894                                                 afectrlovr_rssi_val = 1 << 9;
21895                                                 mod_phy_reg(pi,
21896                                                            (core ==
21897                                                             PHY_CORE_0) ? 0x8f
21898                                                            : 0xa5, (0x1 << 9),
21899                                                            afectrlovr_rssi_val);
21900                                         }
21901                                 }
21902                         }
21903                 }
21904         } else {
21905
21906                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21907                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21908                     (rssi_type == NPHY_RSSI_SEL_NB))
21909                         val = 0x0;
21910                 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21911                         val = 0x1;
21912                 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21913                         val = 0x2;
21914                 else
21915                         val = 0x3;
21916
21917                 mask = ((0x3 << 12) | (0x3 << 14));
21918                 val = (val << 12) | (val << 14);
21919                 mod_phy_reg(pi, 0xa6, mask, val);
21920                 mod_phy_reg(pi, 0xa7, mask, val);
21921
21922                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21923                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21924                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21925                         if (rssi_type == NPHY_RSSI_SEL_W1)
21926                                 val = 0x1;
21927                         if (rssi_type == NPHY_RSSI_SEL_W2)
21928                                 val = 0x2;
21929                         if (rssi_type == NPHY_RSSI_SEL_NB)
21930                                 val = 0x3;
21931
21932                         mask = (0x3 << 4);
21933                         val = (val << 4);
21934                         mod_phy_reg(pi, 0x7a, mask, val);
21935                         mod_phy_reg(pi, 0x7d, mask, val);
21936                 }
21937
21938                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21939                         afectrlovr_rssi_val = 0;
21940                         rfctrlcmd_rxen_val = 0;
21941                         rfctrlcmd_coresel_val = 0;
21942                         rfctrlovr_rssi_val = 0;
21943                         rfctrlovr_rxen_val = 0;
21944                         rfctrlovr_coresel_val = 0;
21945                         rfctrlovr_trigger_val = 0;
21946                         startseq = 0;
21947                 } else {
21948                         afectrlovr_rssi_val = 1;
21949                         rfctrlcmd_rxen_val = 1;
21950                         rfctrlcmd_coresel_val = core_code;
21951                         rfctrlovr_rssi_val = 1;
21952                         rfctrlovr_rxen_val = 1;
21953                         rfctrlovr_coresel_val = 1;
21954                         rfctrlovr_trigger_val = 1;
21955                         startseq = 1;
21956                 }
21957
21958                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21959                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21960                                        12) | (afectrlovr_rssi_val << 13);
21961                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21962                             afectrlovr_rssi_val);
21963
21964                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21965                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21966                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21967                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21968                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21969                                         (rfctrlcmd_coresel_val << 3);
21970
21971                         rfctrlovr_mask = ((0x1 << 5) |
21972                                           (0x1 << 12) |
21973                                           (0x1 << 1) | (0x1 << 0));
21974                         rfctrlovr_val = (rfctrlovr_rssi_val <<
21975                                          5) |
21976                                         (rfctrlovr_rxen_val << 12) |
21977                                         (rfctrlovr_coresel_val << 1) |
21978                                         (rfctrlovr_trigger_val << 0);
21979
21980                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21981                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21982
21983                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21984                         udelay(20);
21985
21986                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21987                 }
21988         }
21989 }
21990
21991 int
21992 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21993                        u8 nsamps)
21994 {
21995         s16 rssi0, rssi1;
21996         u16 afectrlCore1_save = 0;
21997         u16 afectrlCore2_save = 0;
21998         u16 afectrlOverride1_save = 0;
21999         u16 afectrlOverride2_save = 0;
22000         u16 rfctrlOverrideAux0_save = 0;
22001         u16 rfctrlOverrideAux1_save = 0;
22002         u16 rfctrlMiscReg1_save = 0;
22003         u16 rfctrlMiscReg2_save = 0;
22004         u16 rfctrlcmd_save = 0;
22005         u16 rfctrloverride_save = 0;
22006         u16 rfctrlrssiothers1_save = 0;
22007         u16 rfctrlrssiothers2_save = 0;
22008         s8 tmp_buf[4];
22009         u8 ctr = 0, samp = 0;
22010         s32 rssi_out_val;
22011         u16 gpiosel_orig;
22012
22013         afectrlCore1_save = read_phy_reg(pi, 0xa6);
22014         afectrlCore2_save = read_phy_reg(pi, 0xa7);
22015         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22016                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22017                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22018                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
22019                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22020                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22021                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22022         } else {
22023                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
22024                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
22025                 rfctrloverride_save = read_phy_reg(pi, 0xec);
22026                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
22027                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
22028         }
22029
22030         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22031
22032         gpiosel_orig = read_phy_reg(pi, 0xca);
22033         if (NREV_LT(pi->pubpi.phy_rev, 2))
22034                 write_phy_reg(pi, 0xca, 5);
22035
22036         for (ctr = 0; ctr < 4; ctr++)
22037                 rssi_buf[ctr] = 0;
22038
22039         for (samp = 0; samp < nsamps; samp++) {
22040                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22041                         rssi0 = read_phy_reg(pi, 0x1c9);
22042                         rssi1 = read_phy_reg(pi, 0x1ca);
22043                 } else {
22044                         rssi0 = read_phy_reg(pi, 0x219);
22045                         rssi1 = read_phy_reg(pi, 0x21a);
22046                 }
22047
22048                 ctr = 0;
22049                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22050                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22051                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22052                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22053
22054                 for (ctr = 0; ctr < 4; ctr++)
22055                         rssi_buf[ctr] += tmp_buf[ctr];
22056
22057         }
22058
22059         rssi_out_val = rssi_buf[3] & 0xff;
22060         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22061         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22062         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22063
22064         if (NREV_LT(pi->pubpi.phy_rev, 2))
22065                 write_phy_reg(pi, 0xca, gpiosel_orig);
22066
22067         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22068         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22069         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22070                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22071                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22072                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22073                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22074                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22075                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22076         } else {
22077                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22078                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22079                 write_phy_reg(pi, 0xec, rfctrloverride_save);
22080                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22081                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22082         }
22083
22084         return rssi_out_val;
22085 }
22086
22087 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22088 {
22089         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22090         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22091         u16 pwrdet_rxtx_core1_save;
22092         u16 pwrdet_rxtx_core2_save;
22093         u16 afectrlCore1_save;
22094         u16 afectrlCore2_save;
22095         u16 afectrlOverride_save;
22096         u16 afectrlOverride2_save;
22097         u16 pd_pll_ts_save;
22098         u16 gpioSel_save;
22099         s32 radio_temp[4];
22100         s32 radio_temp2[4];
22101         u16 syn_tempprocsense_save;
22102         s16 offset = 0;
22103
22104         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22105                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22106                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22107                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22108                 s32 auxADC_Vl;
22109                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22110                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22111                 u16 RSSIMultCoef0QPowerDet_save;
22112                 u16 tempsense_Rcal;
22113
22114                 syn_tempprocsense_save =
22115                         read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22116
22117                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22118                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22119                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22120                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22121                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22122                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22123                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22124                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22125                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22126
22127                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22128                                         &auxADC_Vmid_save);
22129                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22130                                         &auxADC_Av_save);
22131                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22132                                         &auxADC_rssi_ctrlL_save);
22133                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22134                                         &auxADC_rssi_ctrlH_save);
22135
22136                 write_phy_reg(pi, 0x1ae, 0x0);
22137
22138                 auxADC_rssi_ctrlL = 0x0;
22139                 auxADC_rssi_ctrlH = 0x20;
22140                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22141                                          &auxADC_rssi_ctrlL);
22142                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22143                                          &auxADC_rssi_ctrlH);
22144
22145                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22146
22147                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22148                                 tempsense_Rcal | 0x01);
22149
22150                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22151                                                   1, 0, 0,
22152                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
22153                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22154                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22155                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22156                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22157
22158                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22159                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22160                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22161                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22162                 udelay(5);
22163                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22164                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22165                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22166                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22167                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22168                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22169                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22170                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22171                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22172                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22173
22174                 auxADC_Vmid = 0xA3;
22175                 auxADC_Av = 0x0;
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_temp, 1);
22184                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22185                                 tempsense_Rcal | 0x03);
22186
22187                 udelay(5);
22188                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22189
22190                 auxADC_Av = 0x7;
22191                 if (radio_temp[1] + radio_temp2[1] < -30) {
22192                         auxADC_Vmid = 0x45;
22193                         auxADC_Vl = 263;
22194                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22195                         auxADC_Vmid = 0x200;
22196                         auxADC_Vl = 467;
22197                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22198                         auxADC_Vmid = 0x266;
22199                         auxADC_Vl = 634;
22200                 } else {
22201                         auxADC_Vmid = 0x2D5;
22202                         auxADC_Vl = 816;
22203                 }
22204
22205                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22206                                          &auxADC_Vmid);
22207                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22208                                          &auxADC_Av);
22209
22210                 udelay(3);
22211
22212                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22213                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22214                                 tempsense_Rcal | 0x01);
22215
22216                 udelay(5);
22217                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22218
22219                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22220                                 syn_tempprocsense_save);
22221
22222                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22223                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22224                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22225                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22226                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22227                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22228                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22229                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22230                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22231
22232                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22233                                          &auxADC_Vmid_save);
22234                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22235                                          &auxADC_Av_save);
22236                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22237                                          &auxADC_rssi_ctrlL_save);
22238                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22239                                          &auxADC_rssi_ctrlH_save);
22240
22241                 radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22242                                  + 82 * (auxADC_Vl) - 28861 +
22243                                  128) / 256;
22244
22245                 offset = (s16) pi->phy_tempsense_offset;
22246
22247         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22248                 syn_tempprocsense_save =
22249                         read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22250
22251                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22252                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22253                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22254                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22255                 gpioSel_save = read_phy_reg(pi, 0xca);
22256
22257                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22258
22259                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22260                 if (NREV_LT(pi->pubpi.phy_rev, 7))
22261                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22262
22263                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22264                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22265                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22266                 else
22267                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22268
22269                 radio_temp[0] =
22270                         (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22271
22272                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22273                                 syn_tempprocsense_save);
22274
22275                 write_phy_reg(pi, 0xca, gpioSel_save);
22276                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22277                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22278                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22279                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22280
22281                 offset = (s16) pi->phy_tempsense_offset;
22282         } else {
22283
22284                 pwrdet_rxtx_core1_save =
22285                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22286                 pwrdet_rxtx_core2_save =
22287                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22288                 core1_txrf_iqcal1_save =
22289                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22290                 core1_txrf_iqcal2_save =
22291                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22292                 core2_txrf_iqcal1_save =
22293                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22294                 core2_txrf_iqcal2_save =
22295                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22296                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22297
22298                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22299                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22300                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22301                 gpioSel_save = read_phy_reg(pi, 0xca);
22302
22303                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22304                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22305                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22306                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22307                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22308                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22309                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22310
22311                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22312                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22313
22314                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22315                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22316
22317                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22318                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22319
22320                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22321                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22322                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22323                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22324
22325                 radio_temp[0] =
22326                         (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22327                          radio_temp[3]);
22328
22329                 radio_temp[0] =
22330                         (radio_temp[0] +
22331                          (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22332
22333                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22334
22335                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22336                                 pwrdet_rxtx_core1_save);
22337                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22338                                 pwrdet_rxtx_core2_save);
22339                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22340                                 core1_txrf_iqcal1_save);
22341                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22342                                 core2_txrf_iqcal1_save);
22343                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22344                                 core1_txrf_iqcal2_save);
22345                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22346                                 core2_txrf_iqcal2_save);
22347                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22348
22349                 write_phy_reg(pi, 0xca, gpioSel_save);
22350                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22351                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22352                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22353         }
22354
22355         return (s16) radio_temp[0] + offset;
22356 }
22357
22358 static void
22359 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22360 {
22361         u8 core;
22362
22363         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22364                 if (rssi_type == NPHY_RSSI_SEL_NB) {
22365                         if (core == PHY_CORE_0) {
22366                                 mod_radio_reg(pi,
22367                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
22368                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22369                                               vcm_buf[2 *
22370                                                       core] <<
22371                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22372                                 mod_radio_reg(pi,
22373                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22374                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22375                                               vcm_buf[2 * core +
22376                                                       1] <<
22377                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22378                         } else {
22379                                 mod_radio_reg(pi,
22380                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
22381                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22382                                               vcm_buf[2 *
22383                                                       core] <<
22384                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22385                                 mod_radio_reg(pi,
22386                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22387                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22388                                               vcm_buf[2 * core +
22389                                                       1] <<
22390                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22391                         }
22392                 } else {
22393                         if (core == PHY_CORE_0)
22394                                 mod_radio_reg(pi,
22395                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22396                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22397                                               vcm_buf[2 *
22398                                                       core] <<
22399                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22400                         else
22401                                 mod_radio_reg(pi,
22402                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22403                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22404                                               vcm_buf[2 *
22405                                                       core] <<
22406                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22407                 }
22408         }
22409 }
22410
22411 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22412 {
22413         u16 classif_state;
22414         u16 clip_state[2];
22415         u16 clip_off[] = { 0xffff, 0xffff };
22416         s32 target_code;
22417         u8 vcm, min_vcm;
22418         u8 vcm_final = 0;
22419         u8 result_idx;
22420         s32 poll_results[8][4] = {
22421                 {0, 0, 0, 0},
22422                 {0, 0, 0, 0},
22423                 {0, 0, 0, 0},
22424                 {0, 0, 0, 0},
22425                 {0, 0, 0, 0},
22426                 {0, 0, 0, 0},
22427                 {0, 0, 0, 0},
22428                 {0, 0, 0, 0}
22429         };
22430         s32 poll_result_core[4] = { 0, 0, 0, 0 };
22431         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22432         s32 fine_digital_offset[4];
22433         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22434         s32 min_poll;
22435         u8 vcm_level_max;
22436         u8 core;
22437         u8 wb_cnt;
22438         u8 rssi_type;
22439         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22440         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22441         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22442         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22443         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22444         u16 NPHY_RfctrlCmd_save;
22445         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22446         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22447         u8 rxcore_state;
22448         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22449         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22450         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22451         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22452
22453         NPHY_REV7_RfctrlOverride3_save =
22454                 NPHY_REV7_RfctrlOverride4_save =
22455                 NPHY_REV7_RfctrlOverride5_save =
22456                 NPHY_REV7_RfctrlOverride6_save =
22457                 NPHY_REV7_RfctrlMiscReg3_save =
22458                 NPHY_REV7_RfctrlMiscReg4_save =
22459                 NPHY_REV7_RfctrlMiscReg5_save =
22460                 NPHY_REV7_RfctrlMiscReg6_save = 0;
22461
22462         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22463         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22464         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22465         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22466
22467         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22468         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22469         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22470         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22471         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22472         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22473         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22474         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22475         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22476                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22477                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22478                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22479                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22480         }
22481         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22482         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22483         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22484         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22485         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22486         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22487                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22488                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22489                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22490                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22491         }
22492         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22493         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22494
22495         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22496                                          RADIO_MIMO_CORESEL_ALLRXTX);
22497         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22498                                          RADIO_MIMO_CORESEL_ALLRXTX);
22499
22500         if (NREV_GE(pi->pubpi.phy_rev, 7))
22501                 wlc_phy_rfctrl_override_1tomany_nphy(
22502                         pi,
22503                         NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22504                         0, 0, 0);
22505         else
22506                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22507
22508         if (NREV_GE(pi->pubpi.phy_rev, 7))
22509                 wlc_phy_rfctrl_override_1tomany_nphy(
22510                         pi,
22511                         NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22512                         1, 0, 0);
22513         else
22514                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22515
22516         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22517                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22518                                                   1, 0, 0,
22519                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22520                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22521                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22522         } else {
22523                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22524                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22525         }
22526
22527         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22528                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22529                         wlc_phy_rfctrl_override_nphy_rev7(
22530                                 pi, (0x1 << 5),
22531                                 0, 0, 0,
22532                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22533                         wlc_phy_rfctrl_override_nphy_rev7(
22534                                 pi, (0x1 << 4), 1, 0,
22535                                 0,
22536                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22537                 } else {
22538                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22539                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22540                 }
22541
22542         } else {
22543                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22544                         wlc_phy_rfctrl_override_nphy_rev7(
22545                                 pi, (0x1 << 4),
22546                                 0, 0, 0,
22547                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22548                         wlc_phy_rfctrl_override_nphy_rev7(
22549                                 pi, (0x1 << 5), 1, 0,
22550                                 0,
22551                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22552                 } else {
22553                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22554                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22555                 }
22556         }
22557
22558         rxcore_state = wlc_phy_rxcore_getstate_nphy(
22559                 (struct brcms_phy_pub *) pi);
22560
22561         vcm_level_max = 8;
22562
22563         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22564
22565                 if ((rxcore_state & (1 << core)) == 0)
22566                         continue;
22567
22568                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22569                                                core ==
22570                                                PHY_CORE_0 ?
22571                                                RADIO_MIMO_CORESEL_CORE1 :
22572                                                RADIO_MIMO_CORESEL_CORE2,
22573                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22574                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22575                                                core ==
22576                                                PHY_CORE_0 ?
22577                                                RADIO_MIMO_CORESEL_CORE1 :
22578                                                RADIO_MIMO_CORESEL_CORE2,
22579                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22580
22581                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22582                         if (NREV_GE(pi->pubpi.phy_rev, 7))
22583                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22584                                               RADIO_2057_NB_MASTER_CORE0 :
22585                                               RADIO_2057_NB_MASTER_CORE1,
22586                                               RADIO_2057_VCM_MASK, vcm);
22587                         else
22588                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22589                                               ((core ==
22590                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
22591                                                RADIO_2056_RX1),
22592                                               RADIO_2056_VCM_MASK,
22593                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
22594
22595                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22596                                                &poll_results[vcm][0],
22597                                                NPHY_RSSICAL_NPOLL);
22598                 }
22599
22600                 for (result_idx = 0; result_idx < 4; result_idx++) {
22601                         if ((core == result_idx / 2) &&
22602                             (result_idx % 2 == 0)) {
22603
22604                                 min_d = NPHY_RSSICAL_MAXD;
22605                                 min_vcm = 0;
22606                                 min_poll =
22607                                         NPHY_RSSICAL_MAXREAD *
22608                                         NPHY_RSSICAL_NPOLL + 1;
22609                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22610                                         curr_d =
22611                                                 poll_results[vcm][result_idx] *
22612                                                 poll_results[vcm][result_idx] +
22613                                                 poll_results[vcm][result_idx +
22614                                                                   1] *
22615                                                 poll_results[vcm][result_idx +
22616                                                                   1];
22617                                         if (curr_d < min_d) {
22618                                                 min_d = curr_d;
22619                                                 min_vcm = vcm;
22620                                         }
22621                                         if (poll_results[vcm][result_idx] <
22622                                             min_poll)
22623                                                 min_poll =
22624                                                         poll_results[vcm]
22625                                                         [result_idx];
22626                                 }
22627                                 vcm_final = min_vcm;
22628                                 poll_results_min[result_idx] = min_poll;
22629                         }
22630                 }
22631
22632                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22633                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
22634                                       RADIO_2057_NB_MASTER_CORE0 :
22635                                       RADIO_2057_NB_MASTER_CORE1,
22636                                       RADIO_2057_VCM_MASK, vcm_final);
22637                 else
22638                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22639                                       ((core ==
22640                                         PHY_CORE_0) ? RADIO_2056_RX0 :
22641                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22642                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22643
22644                 for (result_idx = 0; result_idx < 4; result_idx++) {
22645                         if (core == result_idx / 2) {
22646                                 fine_digital_offset[result_idx] =
22647                                         (NPHY_RSSICAL_NB_TARGET *
22648                                          NPHY_RSSICAL_NPOLL) -
22649                                         poll_results[vcm_final][result_idx];
22650                                 if (fine_digital_offset[result_idx] < 0) {
22651                                         fine_digital_offset[result_idx] =
22652                                                 abs(fine_digital_offset
22653                                                     [result_idx]);
22654                                         fine_digital_offset[result_idx] +=
22655                                                 (NPHY_RSSICAL_NPOLL / 2);
22656                                         fine_digital_offset[result_idx] /=
22657                                                 NPHY_RSSICAL_NPOLL;
22658                                         fine_digital_offset[result_idx] =
22659                                                 -fine_digital_offset[
22660                                                                     result_idx];
22661                                 } else {
22662                                         fine_digital_offset[result_idx] +=
22663                                                 (NPHY_RSSICAL_NPOLL / 2);
22664                                         fine_digital_offset[result_idx] /=
22665                                                 NPHY_RSSICAL_NPOLL;
22666                                 }
22667
22668                                 if (poll_results_min[result_idx] ==
22669                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22670                                         fine_digital_offset[result_idx] =
22671                                                 (NPHY_RSSICAL_NB_TARGET -
22672                                                  NPHY_RSSICAL_MAXREAD - 1);
22673
22674                                 wlc_phy_scale_offset_rssi_nphy(
22675                                         pi, 0x0,
22676                                         (s8)
22677                                         fine_digital_offset
22678                                         [result_idx],
22679                                         (result_idx / 2 == 0) ?
22680                                         RADIO_MIMO_CORESEL_CORE1 :
22681                                         RADIO_MIMO_CORESEL_CORE2,
22682                                         (result_idx % 2 == 0) ?
22683                                         NPHY_RAIL_I : NPHY_RAIL_Q,
22684                                         NPHY_RSSI_SEL_NB);
22685                         }
22686                 }
22687
22688         }
22689
22690         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22691
22692                 if ((rxcore_state & (1 << core)) == 0)
22693                         continue;
22694
22695                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22696                         if (wb_cnt == 0) {
22697                                 rssi_type = NPHY_RSSI_SEL_W1;
22698                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22699                         } else {
22700                                 rssi_type = NPHY_RSSI_SEL_W2;
22701                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22702                         }
22703
22704                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22705                                                        core ==
22706                                                        PHY_CORE_0 ?
22707                                                        RADIO_MIMO_CORESEL_CORE1
22708                                                        :
22709                                                        RADIO_MIMO_CORESEL_CORE2,
22710                                                        NPHY_RAIL_I, rssi_type);
22711                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22712                                                        core ==
22713                                                        PHY_CORE_0 ?
22714                                                        RADIO_MIMO_CORESEL_CORE1
22715                                                        :
22716                                                        RADIO_MIMO_CORESEL_CORE2,
22717                                                        NPHY_RAIL_Q, rssi_type);
22718
22719                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22720                                                NPHY_RSSICAL_NPOLL);
22721
22722                         for (result_idx = 0; result_idx < 4; result_idx++) {
22723                                 if (core == result_idx / 2) {
22724                                         fine_digital_offset[result_idx] =
22725                                                 (target_code *
22726                                                  NPHY_RSSICAL_NPOLL) -
22727                                                 poll_result_core[result_idx];
22728                                         if (fine_digital_offset[result_idx] <
22729                                             0) {
22730                                                 fine_digital_offset[result_idx]
22731                                                         = abs(
22732                                                             fine_digital_offset
22733                                                             [result_idx]);
22734                                                 fine_digital_offset[result_idx]
22735                                                         += (NPHY_RSSICAL_NPOLL
22736                                                             / 2);
22737                                                 fine_digital_offset[result_idx]
22738                                                         /= NPHY_RSSICAL_NPOLL;
22739                                                 fine_digital_offset[result_idx]
22740                                                         = -fine_digital_offset
22741                                                                 [result_idx];
22742                                         } else {
22743                                                 fine_digital_offset[result_idx]
22744                                                         += (NPHY_RSSICAL_NPOLL
22745                                                             / 2);
22746                                                 fine_digital_offset[result_idx]
22747                                                         /= NPHY_RSSICAL_NPOLL;
22748                                         }
22749
22750                                         wlc_phy_scale_offset_rssi_nphy(
22751                                                 pi, 0x0,
22752                                                 (s8)
22753                                                 fine_digital_offset
22754                                                 [core *
22755                                                  2],
22756                                                 (core == PHY_CORE_0) ?
22757                                                 RADIO_MIMO_CORESEL_CORE1 :
22758                                                 RADIO_MIMO_CORESEL_CORE2,
22759                                                 (result_idx % 2 == 0) ?
22760                                                 NPHY_RAIL_I :
22761                                                 NPHY_RAIL_Q,
22762                                                 rssi_type);
22763                                 }
22764                         }
22765
22766                 }
22767         }
22768
22769         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22770         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22771
22772         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22773
22774         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22775         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22776         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22777
22778         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22779         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22780         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22781
22782         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22783         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22784         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22785         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22786         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22787         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22788         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22789                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22790                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22791                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22792                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22793         }
22794         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22795         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22796         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22797         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22798         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22799         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22800                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22801                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22802                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22803                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22804         }
22805         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22806         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22807
22808         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22809                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22810                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22811                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22812                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22813                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22814                 } else {
22815                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22816                                 read_radio_reg(pi,
22817                                                RADIO_2056_RX_RSSI_MISC |
22818                                                RADIO_2056_RX0);
22819                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22820                                 read_radio_reg(pi,
22821                                                RADIO_2056_RX_RSSI_MISC |
22822                                                RADIO_2056_RX1);
22823                 }
22824
22825                 pi->rssical_cache.rssical_phyregs_2G[0] =
22826                         read_phy_reg(pi, 0x1a6);
22827                 pi->rssical_cache.rssical_phyregs_2G[1] =
22828                         read_phy_reg(pi, 0x1ac);
22829                 pi->rssical_cache.rssical_phyregs_2G[2] =
22830                         read_phy_reg(pi, 0x1b2);
22831                 pi->rssical_cache.rssical_phyregs_2G[3] =
22832                         read_phy_reg(pi, 0x1b8);
22833                 pi->rssical_cache.rssical_phyregs_2G[4] =
22834                         read_phy_reg(pi, 0x1a4);
22835                 pi->rssical_cache.rssical_phyregs_2G[5] =
22836                         read_phy_reg(pi, 0x1aa);
22837                 pi->rssical_cache.rssical_phyregs_2G[6] =
22838                         read_phy_reg(pi, 0x1b0);
22839                 pi->rssical_cache.rssical_phyregs_2G[7] =
22840                         read_phy_reg(pi, 0x1b6);
22841                 pi->rssical_cache.rssical_phyregs_2G[8] =
22842                         read_phy_reg(pi, 0x1a5);
22843                 pi->rssical_cache.rssical_phyregs_2G[9] =
22844                         read_phy_reg(pi, 0x1ab);
22845                 pi->rssical_cache.rssical_phyregs_2G[10] =
22846                         read_phy_reg(pi, 0x1b1);
22847                 pi->rssical_cache.rssical_phyregs_2G[11] =
22848                         read_phy_reg(pi, 0x1b7);
22849
22850                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22851         } else {
22852                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22853                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22854                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22855                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22856                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22857                 } else {
22858                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22859                                 read_radio_reg(pi,
22860                                                RADIO_2056_RX_RSSI_MISC |
22861                                                RADIO_2056_RX0);
22862                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22863                                 read_radio_reg(pi,
22864                                                RADIO_2056_RX_RSSI_MISC |
22865                                                RADIO_2056_RX1);
22866                 }
22867
22868                 pi->rssical_cache.rssical_phyregs_5G[0] =
22869                         read_phy_reg(pi, 0x1a6);
22870                 pi->rssical_cache.rssical_phyregs_5G[1] =
22871                         read_phy_reg(pi, 0x1ac);
22872                 pi->rssical_cache.rssical_phyregs_5G[2] =
22873                         read_phy_reg(pi, 0x1b2);
22874                 pi->rssical_cache.rssical_phyregs_5G[3] =
22875                         read_phy_reg(pi, 0x1b8);
22876                 pi->rssical_cache.rssical_phyregs_5G[4] =
22877                         read_phy_reg(pi, 0x1a4);
22878                 pi->rssical_cache.rssical_phyregs_5G[5] =
22879                         read_phy_reg(pi, 0x1aa);
22880                 pi->rssical_cache.rssical_phyregs_5G[6] =
22881                         read_phy_reg(pi, 0x1b0);
22882                 pi->rssical_cache.rssical_phyregs_5G[7] =
22883                         read_phy_reg(pi, 0x1b6);
22884                 pi->rssical_cache.rssical_phyregs_5G[8] =
22885                         read_phy_reg(pi, 0x1a5);
22886                 pi->rssical_cache.rssical_phyregs_5G[9] =
22887                         read_phy_reg(pi, 0x1ab);
22888                 pi->rssical_cache.rssical_phyregs_5G[10] =
22889                         read_phy_reg(pi, 0x1b1);
22890                 pi->rssical_cache.rssical_phyregs_5G[11] =
22891                         read_phy_reg(pi, 0x1b7);
22892
22893                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22894         }
22895
22896         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22897         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22898 }
22899
22900 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22901 {
22902         s32 target_code;
22903         u16 classif_state;
22904         u16 clip_state[2];
22905         u16 rssi_ctrl_state[2], pd_state[2];
22906         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22907         u16 rfctrlintc_override_val;
22908         u16 clip_off[] = { 0xffff, 0xffff };
22909         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22910         u8 vcm, min_vcm, vcm_tmp[4];
22911         u8 vcm_final[4] = { 0, 0, 0, 0 };
22912         u8 result_idx, ctr;
22913         s32 poll_results[4][4] = {
22914                 {0, 0, 0, 0},
22915                 {0, 0, 0, 0},
22916                 {0, 0, 0, 0},
22917                 {0, 0, 0, 0}
22918         };
22919         s32 poll_miniq[4][2] = {
22920                 {0, 0},
22921                 {0, 0},
22922                 {0, 0},
22923                 {0, 0}
22924         };
22925         s32 min_d, curr_d;
22926         s32 fine_digital_offset[4];
22927         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22928         s32 min_poll;
22929
22930         switch (rssi_type) {
22931         case NPHY_RSSI_SEL_NB:
22932                 target_code = NPHY_RSSICAL_NB_TARGET;
22933                 break;
22934         case NPHY_RSSI_SEL_W1:
22935                 target_code = NPHY_RSSICAL_W1_TARGET;
22936                 break;
22937         case NPHY_RSSI_SEL_W2:
22938                 target_code = NPHY_RSSICAL_W2_TARGET;
22939                 break;
22940         default:
22941                 return;
22942                 break;
22943         }
22944
22945         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22946         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22947         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22948         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22949
22950         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22951         rfctrlintc_override_val =
22952                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22953
22954         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22955         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22956         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22957         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22958
22959         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22960         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22961         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22962         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22963
22964         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22965                   RADIO_2055_WBRSSI_G2_PD;
22966         pd_state[0] =
22967                 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22968         pd_state[1] =
22969                 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22970         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22971         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22972         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22973                          RADIO_2055_WBRSSI_G2_SEL;
22974         rssi_ctrl_state[0] =
22975                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22976         rssi_ctrl_state[1] =
22977                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22978         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22979
22980         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22981                                        NPHY_RAIL_I, rssi_type);
22982         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22983                                        NPHY_RAIL_Q, rssi_type);
22984
22985         for (vcm = 0; vcm < 4; vcm++) {
22986
22987                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22988                 if (rssi_type != NPHY_RSSI_SEL_W2)
22989                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22990
22991                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22992                                        NPHY_RSSICAL_NPOLL);
22993
22994                 if ((rssi_type == NPHY_RSSI_SEL_W1)
22995                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
22996                         for (ctr = 0; ctr < 2; ctr++)
22997                                 poll_miniq[vcm][ctr] =
22998                                         min(poll_results[vcm][ctr * 2 + 0],
22999                                             poll_results[vcm][ctr * 2 + 1]);
23000                 }
23001         }
23002
23003         for (result_idx = 0; result_idx < 4; result_idx++) {
23004                 min_d = NPHY_RSSICAL_MAXD;
23005                 min_vcm = 0;
23006                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
23007                 for (vcm = 0; vcm < 4; vcm++) {
23008                         curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
23009                                       poll_results[vcm][result_idx] :
23010                                       poll_miniq[vcm][result_idx / 2]) -
23011                                      (target_code * NPHY_RSSICAL_NPOLL));
23012                         if (curr_d < min_d) {
23013                                 min_d = curr_d;
23014                                 min_vcm = vcm;
23015                         }
23016                         if (poll_results[vcm][result_idx] < min_poll)
23017                                 min_poll = poll_results[vcm][result_idx];
23018                 }
23019                 vcm_final[result_idx] = min_vcm;
23020                 poll_results_min[result_idx] = min_poll;
23021         }
23022
23023         if (rssi_type != NPHY_RSSI_SEL_W2)
23024                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23025
23026         for (result_idx = 0; result_idx < 4; result_idx++) {
23027                 fine_digital_offset[result_idx] =
23028                         (target_code * NPHY_RSSICAL_NPOLL) -
23029                         poll_results[vcm_final[result_idx]][result_idx];
23030                 if (fine_digital_offset[result_idx] < 0) {
23031                         fine_digital_offset[result_idx] =
23032                                 abs(fine_digital_offset[result_idx]);
23033                         fine_digital_offset[result_idx] +=
23034                                 (NPHY_RSSICAL_NPOLL / 2);
23035                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23036                         fine_digital_offset[result_idx] =
23037                                 -fine_digital_offset[result_idx];
23038                 } else {
23039                         fine_digital_offset[result_idx] +=
23040                                 (NPHY_RSSICAL_NPOLL / 2);
23041                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23042                 }
23043
23044                 if (poll_results_min[result_idx] ==
23045                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23046                         fine_digital_offset[result_idx] =
23047                                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23048
23049                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23050                                                (s8)
23051                                                fine_digital_offset[result_idx],
23052                                                (result_idx / 2 ==
23053                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
23054                                                RADIO_MIMO_CORESEL_CORE2,
23055                                                (result_idx % 2 ==
23056                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23057                                                rssi_type);
23058         }
23059
23060         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23061         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23062         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23063                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23064                                      NPHY_RSSI_SEL_NB);
23065         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23066                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23067                                      NPHY_RSSI_SEL_W1);
23068         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G2_SEL)
23069                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23070                                      NPHY_RSSI_SEL_W2);
23071         else
23072                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23073                                      NPHY_RSSI_SEL_W2);
23074         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23075                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23076                                      NPHY_RSSI_SEL_NB);
23077         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23078                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23079                                      NPHY_RSSI_SEL_W1);
23080         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G2_SEL)
23081                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23082                                      NPHY_RSSI_SEL_W2);
23083         else
23084                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23085                                      NPHY_RSSI_SEL_W2);
23086
23087         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23088
23089         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23090         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23091         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23092         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23093
23094         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23095         wlc_phy_clip_det_nphy(pi, 1, clip_state);
23096
23097         wlc_phy_resetcca_nphy(pi);
23098 }
23099
23100 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23101 {
23102         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23103                 wlc_phy_rssi_cal_nphy_rev3(pi);
23104         } else {
23105                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23106                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23107                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23108         }
23109 }
23110
23111 int
23112 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23113 {
23114         s16 rxpwr, rxpwr0, rxpwr1;
23115         s16 phyRx0_l, phyRx2_l;
23116
23117         rxpwr = 0;
23118         rxpwr0 = le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR0_MASK;
23119         rxpwr1 = (le16_to_cpu(rxh->PhyRxStatus_1) & PRXS1_nphy_PWR1_MASK) >> 8;
23120
23121         if (rxpwr0 > 127)
23122                 rxpwr0 -= 256;
23123         if (rxpwr1 > 127)
23124                 rxpwr1 -= 256;
23125
23126         phyRx0_l = le16_to_cpu(rxh->PhyRxStatus_0) & 0x00ff;
23127         phyRx2_l = le16_to_cpu(rxh->PhyRxStatus_2) & 0x00ff;
23128         if (phyRx2_l > 127)
23129                 phyRx2_l -= 256;
23130
23131         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23132                 rxpwr0 = rxpwr1;
23133                 rxpwr1 = phyRx2_l;
23134         }
23135
23136         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23137                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23138         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23139                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23140         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23141                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23142
23143         return rxpwr;
23144 }
23145
23146 static void
23147 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23148                              u16 num_samps)
23149 {
23150         u16 t;
23151         u32 *data_buf = NULL;
23152
23153         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23154         if (data_buf == NULL)
23155                 return;
23156
23157         if (pi->phyhang_avoid)
23158                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23159
23160         for (t = 0; t < num_samps; t++)
23161                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23162                               (((unsigned int)tone_buf[t].q) & 0x3ff);
23163         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23164                                  data_buf);
23165
23166         kfree(data_buf);
23167
23168         if (pi->phyhang_avoid)
23169                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23170 }
23171
23172 static u16
23173 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23174                               u8 dac_test_mode)
23175 {
23176         u8 phy_bw, is_phybw40;
23177         u16 num_samps, t, spur;
23178         s32 theta = 0, rot = 0;
23179         u32 tbl_len;
23180         struct cordic_iq *tone_buf = NULL;
23181
23182         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23183         phy_bw = (is_phybw40 == 1) ? 40 : 20;
23184         tbl_len = (phy_bw << 3);
23185
23186         if (dac_test_mode == 1) {
23187                 spur = read_phy_reg(pi, 0x01);
23188                 spur = (spur >> 15) & 1;
23189                 phy_bw = (spur == 1) ? 82 : 80;
23190                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23191
23192                 tbl_len = (phy_bw << 1);
23193         }
23194
23195         tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23196         if (tone_buf == NULL)
23197                 return 0;
23198
23199         num_samps = (u16) tbl_len;
23200         rot = ((f_kHz * 36) / phy_bw) / 100;
23201         theta = 0;
23202
23203         for (t = 0; t < num_samps; t++) {
23204
23205                 tone_buf[t] = cordic_calc_iq(theta);
23206
23207                 theta += rot;
23208
23209                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23210                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23211         }
23212
23213         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23214
23215         kfree(tone_buf);
23216
23217         return num_samps;
23218 }
23219
23220 static void
23221 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23222                         u16 wait, u8 iqmode, u8 dac_test_mode,
23223                         bool modify_bbmult)
23224 {
23225         u16 bb_mult;
23226         u8 phy_bw, sample_cmd;
23227         u16 orig_RfseqCoreActv;
23228         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23229             lpf_bw_ctl_miscreg4;
23230
23231         if (pi->phyhang_avoid)
23232                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23233
23234         phy_bw = 20;
23235         if (CHSPEC_IS40(pi->radio_chanspec))
23236                 phy_bw = 40;
23237
23238         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23239
23240                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23241                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23242                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23243                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23244                                               (0x7 << 8);
23245                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23246                                               (0x7 << 8);
23247                 } else {
23248                         wlc_phy_rfctrl_override_nphy_rev7(
23249                                 pi,
23250                                 (0x1 << 7),
23251                                 wlc_phy_read_lpf_bw_ctl_nphy
23252                                         (pi,
23253                                         0), 0, 0,
23254                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23255
23256                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23257
23258                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23259                                               (0x7 << 8);
23260                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23261                                               (0x7 << 8);
23262                 }
23263         }
23264
23265         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23266
23267                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23268                                         &bb_mult);
23269                 pi->nphy_bb_mult_save =
23270                         BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23271         }
23272
23273         if (modify_bbmult) {
23274                 bb_mult = (phy_bw == 20) ? 100 : 71;
23275                 bb_mult = (bb_mult << 8) + bb_mult;
23276                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23277                                          &bb_mult);
23278         }
23279
23280         if (pi->phyhang_avoid)
23281                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23282
23283         write_phy_reg(pi, 0xc6, num_samps - 1);
23284
23285         if (loops != 0xffff)
23286                 write_phy_reg(pi, 0xc4, loops - 1);
23287         else
23288                 write_phy_reg(pi, 0xc4, loops);
23289
23290         write_phy_reg(pi, 0xc5, wait);
23291
23292         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23293         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23294         if (iqmode) {
23295
23296                 and_phy_reg(pi, 0xc2, 0x7FFF);
23297
23298                 or_phy_reg(pi, 0xc2, 0x8000);
23299         } else {
23300
23301                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23302                 write_phy_reg(pi, 0xc3, sample_cmd);
23303         }
23304
23305         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23306
23307         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23308 }
23309
23310 int
23311 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23312                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23313 {
23314         u16 num_samps;
23315         u16 loops = 0xffff;
23316         u16 wait = 0;
23317
23318         num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23319                                                   dac_test_mode);
23320         if (num_samps == 0)
23321                 return -EBADE;
23322
23323         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23324                                 dac_test_mode, modify_bbmult);
23325
23326         return 0;
23327 }
23328
23329 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23330 {
23331         u16 playback_status;
23332         u16 bb_mult;
23333
23334         if (pi->phyhang_avoid)
23335                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23336
23337         playback_status = read_phy_reg(pi, 0xc7);
23338         if (playback_status & 0x1)
23339                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23340         else if (playback_status & 0x2)
23341                 and_phy_reg(pi, 0xc2,
23342                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23343
23344         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23345
23346         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23347
23348                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23349                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23350                                          &bb_mult);
23351
23352                 pi->nphy_bb_mult_save = 0;
23353         }
23354
23355         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23356                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23357                         wlc_phy_rfctrl_override_nphy_rev7(
23358                                 pi,
23359                                 (0x1 << 7),
23360                                 0, 0, 1,
23361                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23362                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23363                 }
23364         }
23365
23366         if (pi->phyhang_avoid)
23367                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23368 }
23369
23370 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23371 {
23372         u32 *tx_pwrctrl_tbl = NULL;
23373         uint phyrev = pi->pubpi.phy_rev;
23374
23375         if (PHY_IPA(pi)) {
23376                 tx_pwrctrl_tbl =
23377                         wlc_phy_get_ipa_gaintbl_nphy(pi);
23378         } else {
23379                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23380                         if (NREV_IS(phyrev, 3))
23381                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23382                         else if (NREV_IS(phyrev, 4))
23383                                 tx_pwrctrl_tbl =
23384                                         (pi->srom_fem5g.extpagain == 3) ?
23385                                         nphy_tpc_5GHz_txgain_HiPwrEPA :
23386                                         nphy_tpc_5GHz_txgain_rev4;
23387                         else
23388                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23389                 } else {
23390                         if (NREV_GE(phyrev, 7)) {
23391                                 if (pi->pubpi.radiorev == 3)
23392                                         tx_pwrctrl_tbl =
23393                                                 nphy_tpc_txgain_epa_2057rev3;
23394                                 else if (pi->pubpi.radiorev == 5)
23395                                         tx_pwrctrl_tbl =
23396                                                 nphy_tpc_txgain_epa_2057rev5;
23397                         } else {
23398                                 if (NREV_GE(phyrev, 5) &&
23399                                    (pi->srom_fem2g.extpagain == 3))
23400                                         tx_pwrctrl_tbl =
23401                                                 nphy_tpc_txgain_HiPwrEPA;
23402                                 else
23403                                         tx_pwrctrl_tbl =
23404                                                 nphy_tpc_txgain_rev3;
23405                         }
23406                 }
23407         }
23408         return tx_pwrctrl_tbl;
23409 }
23410
23411 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23412 {
23413         u16 base_idx[2], curr_gain[2];
23414         u8 core_no;
23415         struct nphy_txgains target_gain;
23416         u32 *tx_pwrctrl_tbl = NULL;
23417
23418         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23419                 if (pi->phyhang_avoid)
23420                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23421
23422                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23423                                         curr_gain);
23424
23425                 if (pi->phyhang_avoid)
23426                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23427
23428                 for (core_no = 0; core_no < 2; core_no++) {
23429                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23430                                 target_gain.ipa[core_no] =
23431                                         curr_gain[core_no] & 0x0007;
23432                                 target_gain.pad[core_no] =
23433                                         ((curr_gain[core_no] & 0x00F8) >> 3);
23434                                 target_gain.pga[core_no] =
23435                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23436                                 target_gain.txgm[core_no] =
23437                                         ((curr_gain[core_no] & 0x7000) >> 12);
23438                                 target_gain.txlpf[core_no] =
23439                                         ((curr_gain[core_no] & 0x8000) >> 15);
23440                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23441                                 target_gain.ipa[core_no] =
23442                                         curr_gain[core_no] & 0x000F;
23443                                 target_gain.pad[core_no] =
23444                                         ((curr_gain[core_no] & 0x00F0) >> 4);
23445                                 target_gain.pga[core_no] =
23446                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23447                                 target_gain.txgm[core_no] =
23448                                         ((curr_gain[core_no] & 0x7000) >> 12);
23449                         } else {
23450                                 target_gain.ipa[core_no] =
23451                                         curr_gain[core_no] & 0x0003;
23452                                 target_gain.pad[core_no] =
23453                                         ((curr_gain[core_no] & 0x000C) >> 2);
23454                                 target_gain.pga[core_no] =
23455                                         ((curr_gain[core_no] & 0x0070) >> 4);
23456                                 target_gain.txgm[core_no] =
23457                                         ((curr_gain[core_no] & 0x0380) >> 7);
23458                         }
23459                 }
23460         } else {
23461                 uint phyrev = pi->pubpi.phy_rev;
23462
23463                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23464                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23465                 for (core_no = 0; core_no < 2; core_no++) {
23466                         if (NREV_GE(phyrev, 3)) {
23467                                 tx_pwrctrl_tbl =
23468                                         brcms_phy_get_tx_pwrctrl_tbl(pi);
23469                                 if (NREV_GE(phyrev, 7)) {
23470                                         target_gain.ipa[core_no] =
23471                                                 (tx_pwrctrl_tbl
23472                                                  [base_idx[core_no]]
23473                                                  >> 16) & 0x7;
23474                                         target_gain.pad[core_no] =
23475                                                 (tx_pwrctrl_tbl
23476                                                  [base_idx[core_no]]
23477                                                  >> 19) & 0x1f;
23478                                         target_gain.pga[core_no] =
23479                                                 (tx_pwrctrl_tbl
23480                                                  [base_idx[core_no]]
23481                                                  >> 24) & 0xf;
23482                                         target_gain.txgm[core_no] =
23483                                                 (tx_pwrctrl_tbl
23484                                                  [base_idx[core_no]]
23485                                                  >> 28) & 0x7;
23486                                         target_gain.txlpf[core_no] =
23487                                                 (tx_pwrctrl_tbl
23488                                                  [base_idx[core_no]]
23489                                                  >> 31) & 0x1;
23490                                 } else {
23491                                         target_gain.ipa[core_no] =
23492                                                 (tx_pwrctrl_tbl
23493                                                  [base_idx[core_no]]
23494                                                  >> 16) & 0xf;
23495                                         target_gain.pad[core_no] =
23496                                                 (tx_pwrctrl_tbl
23497                                                  [base_idx[core_no]]
23498                                                  >> 20) & 0xf;
23499                                         target_gain.pga[core_no] =
23500                                                 (tx_pwrctrl_tbl
23501                                                  [base_idx[core_no]]
23502                                                  >> 24) & 0xf;
23503                                         target_gain.txgm[core_no] =
23504                                                 (tx_pwrctrl_tbl
23505                                                 [base_idx[core_no]]
23506                                                  >> 28) & 0x7;
23507                                 }
23508                         } else {
23509                                 target_gain.ipa[core_no] =
23510                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23511                                          16) & 0x3;
23512                                 target_gain.pad[core_no] =
23513                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23514                                          18) & 0x3;
23515                                 target_gain.pga[core_no] =
23516                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23517                                          20) & 0x7;
23518                                 target_gain.txgm[core_no] =
23519                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23520                                          23) & 0x7;
23521                         }
23522                 }
23523         }
23524
23525         return target_gain;
23526 }
23527
23528 static void
23529 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23530                               struct nphy_txgains target_gain,
23531                               struct nphy_iqcal_params *params)
23532 {
23533         u8 k;
23534         int idx;
23535         u16 gain_index;
23536         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23537
23538         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23539                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23540                         params->txlpf = target_gain.txlpf[core_no];
23541
23542                 params->txgm = target_gain.txgm[core_no];
23543                 params->pga = target_gain.pga[core_no];
23544                 params->pad = target_gain.pad[core_no];
23545                 params->ipa = target_gain.ipa[core_no];
23546                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23547                         params->cal_gain =
23548                                 ((params->txlpf << 15) | (params->txgm << 12) |
23549                                  (params->pga << 8) |
23550                                  (params->pad << 3) | (params->ipa));
23551                 else
23552                         params->cal_gain =
23553                                 ((params->txgm << 12) | (params->pga << 8) |
23554                                  (params->pad << 4) | (params->ipa));
23555
23556                 params->ncorr[0] = 0x79;
23557                 params->ncorr[1] = 0x79;
23558                 params->ncorr[2] = 0x79;
23559                 params->ncorr[3] = 0x79;
23560                 params->ncorr[4] = 0x79;
23561         } else {
23562
23563                 gain_index = ((target_gain.pad[core_no] << 0) |
23564                               (target_gain.pga[core_no] << 4) |
23565                               (target_gain.txgm[core_no] << 8));
23566
23567                 idx = -1;
23568                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23569                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23570                             gain_index) {
23571                                 idx = k;
23572                                 break;
23573                         }
23574                 }
23575
23576                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23577                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23578                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23579                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23580                                     (params->pad << 2));
23581                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23582                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23583                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23584                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23585         }
23586 }
23587
23588 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23589 {
23590         u16 jtag_core, core;
23591
23592         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23593
23594                 for (core = 0; core <= 1; core++) {
23595
23596                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23597                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23598                                                 TX_SSI_MASTER);
23599
23600                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23601                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23602                                                 IQCAL_VCM_HG);
23603
23604                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23605                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23606                                                 IQCAL_IDAC);
23607
23608                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23609                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23610                                                 TSSI_VCM);
23611
23612                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23613
23614                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23615                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23616                                                 TX_SSI_MUX);
23617
23618                         if (pi->pubpi.radiorev != 5)
23619                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23620                                         READ_RADIO_REG3(pi, RADIO_2057, TX,
23621                                                         core,
23622                                                         TSSIA);
23623
23624                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23625                                READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23626
23627                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23628                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23629                                                 TSSI_MISC1);
23630
23631                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23632                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23633                                                  TX_SSI_MASTER, 0x0a);
23634                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23635                                                  IQCAL_VCM_HG, 0x43);
23636                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23637                                                  IQCAL_IDAC, 0x55);
23638                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23639                                                  TSSI_VCM, 0x00);
23640                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23641                                                  TSSIG, 0x00);
23642                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23643                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23644                                                          core, TX_SSI_MUX, 0x4);
23645                                         if (!(pi->
23646                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23647                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23648                                                                  TX, core,
23649                                                                  TSSIA, 0x31);
23650                                         else
23651                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23652                                                                  TX, core,
23653                                                                  TSSIA, 0x21);
23654                                 }
23655                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23656                                                  TSSI_MISC1, 0x00);
23657                         } else {
23658                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23659                                                  TX_SSI_MASTER, 0x06);
23660                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23661                                                  IQCAL_VCM_HG, 0x43);
23662                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23663                                                  IQCAL_IDAC, 0x55);
23664                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23665                                                  TSSI_VCM, 0x00);
23666
23667                                 if (pi->pubpi.radiorev != 5)
23668                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23669                                                          core, TSSIA, 0x00);
23670                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23671                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23672                                                          core, TX_SSI_MUX,
23673                                                          0x06);
23674                                         if (!(pi->
23675                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23676                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23677                                                                  TX, core,
23678                                                                  TSSIG, 0x31);
23679                                         else
23680                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23681                                                                  TX, core,
23682                                                                  TSSIG, 0x21);
23683                                 }
23684                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23685                                                  TSSI_MISC1, 0x00);
23686                         }
23687                 }
23688         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23689
23690                 for (core = 0; core <= 1; core++) {
23691                         jtag_core =
23692                                 (core ==
23693                                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23694
23695                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23696                                 read_radio_reg(pi,
23697                                                RADIO_2056_TX_TX_SSI_MASTER |
23698                                                jtag_core);
23699
23700                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23701                                 read_radio_reg(pi,
23702                                                RADIO_2056_TX_IQCAL_VCM_HG |
23703                                                jtag_core);
23704
23705                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23706                                 read_radio_reg(pi,
23707                                                RADIO_2056_TX_IQCAL_IDAC |
23708                                                jtag_core);
23709
23710                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23711                                 read_radio_reg(
23712                                         pi,
23713                                         RADIO_2056_TX_TSSI_VCM |
23714                                         jtag_core);
23715
23716                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23717                                 read_radio_reg(pi,
23718                                                RADIO_2056_TX_TX_AMP_DET |
23719                                                jtag_core);
23720
23721                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23722                                 read_radio_reg(pi,
23723                                                RADIO_2056_TX_TX_SSI_MUX |
23724                                                jtag_core);
23725
23726                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23727                                 read_radio_reg(pi,
23728                                                RADIO_2056_TX_TSSIA | jtag_core);
23729
23730                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23731                                 read_radio_reg(pi,
23732                                                RADIO_2056_TX_TSSIG | jtag_core);
23733
23734                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23735                                 read_radio_reg(pi,
23736                                                RADIO_2056_TX_TSSI_MISC1 |
23737                                                jtag_core);
23738
23739                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23740                                 read_radio_reg(pi,
23741                                                RADIO_2056_TX_TSSI_MISC2 |
23742                                                jtag_core);
23743
23744                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23745                                 read_radio_reg(pi,
23746                                                RADIO_2056_TX_TSSI_MISC3 |
23747                                                jtag_core);
23748
23749                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23750                                 write_radio_reg(pi,
23751                                                 RADIO_2056_TX_TX_SSI_MASTER |
23752                                                 jtag_core, 0x0a);
23753                                 write_radio_reg(pi,
23754                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23755                                                 jtag_core, 0x40);
23756                                 write_radio_reg(pi,
23757                                                 RADIO_2056_TX_IQCAL_IDAC |
23758                                                 jtag_core, 0x55);
23759                                 write_radio_reg(pi,
23760                                                 RADIO_2056_TX_TSSI_VCM |
23761                                                 jtag_core, 0x00);
23762                                 write_radio_reg(pi,
23763                                                 RADIO_2056_TX_TX_AMP_DET |
23764                                                 jtag_core, 0x00);
23765
23766                                 if (PHY_IPA(pi)) {
23767                                         write_radio_reg(
23768                                                 pi,
23769                                                 RADIO_2056_TX_TX_SSI_MUX
23770                                                 | jtag_core, 0x4);
23771                                         write_radio_reg(pi,
23772                                                         RADIO_2056_TX_TSSIA |
23773                                                         jtag_core, 0x1);
23774                                 } else {
23775                                         write_radio_reg(
23776                                                 pi,
23777                                                 RADIO_2056_TX_TX_SSI_MUX
23778                                                 | jtag_core, 0x00);
23779                                         write_radio_reg(pi,
23780                                                         RADIO_2056_TX_TSSIA |
23781                                                         jtag_core, 0x2f);
23782                                 }
23783                                 write_radio_reg(pi,
23784                                                 RADIO_2056_TX_TSSIG | jtag_core,
23785                                                 0x00);
23786                                 write_radio_reg(pi,
23787                                                 RADIO_2056_TX_TSSI_MISC1 |
23788                                                 jtag_core, 0x00);
23789
23790                                 write_radio_reg(pi,
23791                                                 RADIO_2056_TX_TSSI_MISC2 |
23792                                                 jtag_core, 0x00);
23793                                 write_radio_reg(pi,
23794                                                 RADIO_2056_TX_TSSI_MISC3 |
23795                                                 jtag_core, 0x00);
23796                         } else {
23797                                 write_radio_reg(pi,
23798                                                 RADIO_2056_TX_TX_SSI_MASTER |
23799                                                 jtag_core, 0x06);
23800                                 write_radio_reg(pi,
23801                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23802                                                 jtag_core, 0x40);
23803                                 write_radio_reg(pi,
23804                                                 RADIO_2056_TX_IQCAL_IDAC |
23805                                                 jtag_core, 0x55);
23806                                 write_radio_reg(pi,
23807                                                 RADIO_2056_TX_TSSI_VCM |
23808                                                 jtag_core, 0x00);
23809                                 write_radio_reg(pi,
23810                                                 RADIO_2056_TX_TX_AMP_DET |
23811                                                 jtag_core, 0x00);
23812                                 write_radio_reg(pi,
23813                                                 RADIO_2056_TX_TSSIA | jtag_core,
23814                                                 0x00);
23815
23816                                 if (PHY_IPA(pi)) {
23817
23818                                         write_radio_reg(
23819                                                 pi,
23820                                                 RADIO_2056_TX_TX_SSI_MUX
23821                                                 | jtag_core, 0x06);
23822                                         if (NREV_LT(pi->pubpi.phy_rev, 5))
23823                                                 write_radio_reg(
23824                                                         pi,
23825                                                         RADIO_2056_TX_TSSIG
23826                                                         | jtag_core,
23827                                                         0x11);
23828                                         else
23829                                                 write_radio_reg(
23830                                                         pi,
23831                                                         RADIO_2056_TX_TSSIG
23832                                                         | jtag_core,
23833                                                         0x1);
23834                                 } else {
23835                                         write_radio_reg(
23836                                                 pi,
23837                                                 RADIO_2056_TX_TX_SSI_MUX
23838                                                 | jtag_core, 0x00);
23839                                         write_radio_reg(pi,
23840                                                         RADIO_2056_TX_TSSIG |
23841                                                         jtag_core, 0x20);
23842                                 }
23843
23844                                 write_radio_reg(pi,
23845                                                 RADIO_2056_TX_TSSI_MISC1 |
23846                                                 jtag_core, 0x00);
23847                                 write_radio_reg(pi,
23848                                                 RADIO_2056_TX_TSSI_MISC2 |
23849                                                 jtag_core, 0x00);
23850                                 write_radio_reg(pi,
23851                                                 RADIO_2056_TX_TSSI_MISC3 |
23852                                                 jtag_core, 0x00);
23853                         }
23854                 }
23855         } else {
23856
23857                 pi->tx_rx_cal_radio_saveregs[0] =
23858                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23859                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23860                 pi->tx_rx_cal_radio_saveregs[1] =
23861                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23862                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23863
23864                 pi->tx_rx_cal_radio_saveregs[2] =
23865                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23866                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23867                 pi->tx_rx_cal_radio_saveregs[3] =
23868                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23869                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23870
23871                 pi->tx_rx_cal_radio_saveregs[4] =
23872                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23873                 pi->tx_rx_cal_radio_saveregs[5] =
23874                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23875
23876                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23877                     0) {
23878
23879                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23880                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23881                 } else {
23882
23883                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23884                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23885                 }
23886
23887                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23888
23889                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23890                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23891                 } else {
23892
23893                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23894                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23895                 }
23896         }
23897 }
23898
23899 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23900 {
23901         u16 jtag_core, core;
23902
23903         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23904                 for (core = 0; core <= 1; core++) {
23905
23906                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23907                                          TX_SSI_MASTER,
23908                                          pi->
23909                                          tx_rx_cal_radio_saveregs[(core * 11) +
23910                                                                   0]);
23911
23912                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23913                                          pi->
23914                                          tx_rx_cal_radio_saveregs[(core * 11) +
23915                                                                   1]);
23916
23917                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23918                                          pi->
23919                                          tx_rx_cal_radio_saveregs[(core * 11) +
23920                                                                   2]);
23921
23922                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23923                                          pi->
23924                                          tx_rx_cal_radio_saveregs[(core * 11) +
23925                                                                   3]);
23926
23927                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23928                                          pi->
23929                                          tx_rx_cal_radio_saveregs[(core * 11) +
23930                                                                   5]);
23931
23932                         if (pi->pubpi.radiorev != 5)
23933                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23934                                                  TSSIA,
23935                                                  pi->tx_rx_cal_radio_saveregs
23936                                                              [(core * 11) + 6]);
23937
23938                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23939                                          pi->
23940                                          tx_rx_cal_radio_saveregs[(core * 11) +
23941                                                                   7]);
23942
23943                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23944                                          pi->
23945                                          tx_rx_cal_radio_saveregs[(core * 11) +
23946                                                                   8]);
23947                 }
23948         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23949                 for (core = 0; core <= 1; core++) {
23950                         jtag_core = (core == PHY_CORE_0) ?
23951                                      RADIO_2056_TX0 : RADIO_2056_TX1;
23952
23953                         write_radio_reg(pi,
23954                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23955                                         pi->
23956                                         tx_rx_cal_radio_saveregs[(core * 11) +
23957                                                                  0]);
23958
23959                         write_radio_reg(pi,
23960                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23961                                         pi->
23962                                         tx_rx_cal_radio_saveregs[(core * 11) +
23963                                                                  1]);
23964
23965                         write_radio_reg(pi,
23966                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23967                                         pi->
23968                                         tx_rx_cal_radio_saveregs[(core * 11) +
23969                                                                  2]);
23970
23971                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23972                                         pi->
23973                                         tx_rx_cal_radio_saveregs[(core * 11) +
23974                                                                  3]);
23975
23976                         write_radio_reg(pi,
23977                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23978                                         pi->
23979                                         tx_rx_cal_radio_saveregs[(core * 11) +
23980                                                                  4]);
23981
23982                         write_radio_reg(pi,
23983                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23984                                         pi->
23985                                         tx_rx_cal_radio_saveregs[(core * 11) +
23986                                                                  5]);
23987
23988                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23989                                         pi->
23990                                         tx_rx_cal_radio_saveregs[(core * 11) +
23991                                                                  6]);
23992
23993                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23994                                         pi->
23995                                         tx_rx_cal_radio_saveregs[(core * 11) +
23996                                                                  7]);
23997
23998                         write_radio_reg(pi,
23999                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
24000                                         pi->
24001                                         tx_rx_cal_radio_saveregs[(core * 11) +
24002                                                                  8]);
24003
24004                         write_radio_reg(pi,
24005                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
24006                                         pi->
24007                                         tx_rx_cal_radio_saveregs[(core * 11) +
24008                                                                  9]);
24009
24010                         write_radio_reg(pi,
24011                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
24012                                         pi->
24013                                         tx_rx_cal_radio_saveregs[(core * 11) +
24014                                                                  10]);
24015                 }
24016         } else {
24017
24018                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
24019                                 pi->tx_rx_cal_radio_saveregs[0]);
24020                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
24021                                 pi->tx_rx_cal_radio_saveregs[1]);
24022                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
24023                                 pi->tx_rx_cal_radio_saveregs[2]);
24024                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
24025                                 pi->tx_rx_cal_radio_saveregs[3]);
24026                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
24027                                 pi->tx_rx_cal_radio_saveregs[4]);
24028                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
24029                                 pi->tx_rx_cal_radio_saveregs[5]);
24030         }
24031 }
24032
24033 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24034 {
24035         u16 val, mask;
24036
24037         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24038                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24039                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24040
24041                 mask = ((0x3 << 8) | (0x3 << 10));
24042                 val = (0x2 << 8);
24043                 val |= (0x2 << 10);
24044                 mod_phy_reg(pi, 0xa6, mask, val);
24045                 mod_phy_reg(pi, 0xa7, mask, val);
24046
24047                 val = read_phy_reg(pi, 0x8f);
24048                 pi->tx_rx_cal_phy_saveregs[2] = val;
24049                 val |= ((0x1 << 9) | (0x1 << 10));
24050                 write_phy_reg(pi, 0x8f, val);
24051
24052                 val = read_phy_reg(pi, 0xa5);
24053                 pi->tx_rx_cal_phy_saveregs[3] = val;
24054                 val |= ((0x1 << 9) | (0x1 << 10));
24055                 write_phy_reg(pi, 0xa5, val);
24056
24057                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24058                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24059
24060                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24061                                         &val);
24062                 pi->tx_rx_cal_phy_saveregs[5] = val;
24063                 val = 0;
24064                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24065                                          &val);
24066
24067                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24068                                         &val);
24069                 pi->tx_rx_cal_phy_saveregs[6] = val;
24070                 val = 0;
24071                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24072                                          &val);
24073
24074                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24075                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24076
24077                 if (!(pi->use_int_tx_iqlo_cal_nphy))
24078                         wlc_phy_rfctrlintc_override_nphy(
24079                                 pi,
24080                                 NPHY_RfctrlIntc_override_PA,
24081                                 1,
24082                                 RADIO_MIMO_CORESEL_CORE1
24083                                 |
24084                                 RADIO_MIMO_CORESEL_CORE2);
24085                 else
24086                         wlc_phy_rfctrlintc_override_nphy(
24087                                 pi,
24088                                 NPHY_RfctrlIntc_override_PA,
24089                                 0,
24090                                 RADIO_MIMO_CORESEL_CORE1
24091                                 |
24092                                 RADIO_MIMO_CORESEL_CORE2);
24093
24094                 wlc_phy_rfctrlintc_override_nphy(pi,
24095                                                  NPHY_RfctrlIntc_override_TRSW,
24096                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
24097                 wlc_phy_rfctrlintc_override_nphy(pi,
24098                                                  NPHY_RfctrlIntc_override_TRSW,
24099                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
24100
24101                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24102                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24103                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24104                             0x29b, (0x1 << 0), (0) << 0);
24105
24106                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24107                             0x29b, (0x1 << 0), (0) << 0);
24108
24109                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24110                     || NREV_GE(pi->pubpi.phy_rev, 8))
24111                         wlc_phy_rfctrl_override_nphy_rev7(
24112                                 pi, (0x1 << 7),
24113                                 wlc_phy_read_lpf_bw_ctl_nphy
24114                                         (pi,
24115                                         0), 0, 0,
24116                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24117
24118                 if (pi->use_int_tx_iqlo_cal_nphy
24119                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24120
24121                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24122
24123                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24124                                               1 << 4);
24125
24126                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24127                                         mod_radio_reg(
24128                                                 pi,
24129                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24130                                                 1, 0);
24131                                         mod_radio_reg(
24132                                                 pi,
24133                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24134                                                 1, 0);
24135                                 } else {
24136                                         mod_radio_reg(
24137                                              pi,
24138                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24139                                              1, 0);
24140                                         mod_radio_reg(
24141                                              pi,
24142                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24143                                              1, 0);
24144                                 }
24145                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24146                                 wlc_phy_rfctrl_override_nphy_rev7(
24147                                         pi,
24148                                         (0x1 << 3), 0,
24149                                         0x3, 0,
24150                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24151                         }
24152                 }
24153         } else {
24154                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24155                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24156
24157                 mask = ((0x3 << 12) | (0x3 << 14));
24158                 val = (0x2 << 12);
24159                 val |= (0x2 << 14);
24160                 mod_phy_reg(pi, 0xa6, mask, val);
24161                 mod_phy_reg(pi, 0xa7, mask, val);
24162
24163                 val = read_phy_reg(pi, 0xa5);
24164                 pi->tx_rx_cal_phy_saveregs[2] = val;
24165                 val |= ((0x1 << 12) | (0x1 << 13));
24166                 write_phy_reg(pi, 0xa5, val);
24167
24168                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24169                                         &val);
24170                 pi->tx_rx_cal_phy_saveregs[3] = val;
24171                 val |= 0x2000;
24172                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24173                                          &val);
24174
24175                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24176                                         &val);
24177                 pi->tx_rx_cal_phy_saveregs[4] = val;
24178                 val |= 0x2000;
24179                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24180                                          &val);
24181
24182                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24183                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24184                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24185                 write_phy_reg(pi, 0x91, val);
24186                 write_phy_reg(pi, 0x92, val);
24187         }
24188 }
24189
24190 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24191 {
24192         u16 mask;
24193
24194         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24195                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24196                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24197                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24198                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24199                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24200
24201                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24202                                          &pi->tx_rx_cal_phy_saveregs[5]);
24203                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24204                                          &pi->tx_rx_cal_phy_saveregs[6]);
24205
24206                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24207                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24208
24209                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24210                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24211
24212                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24213                     || NREV_GE(pi->pubpi.phy_rev, 8))
24214                         wlc_phy_rfctrl_override_nphy_rev7(
24215                                 pi, (0x1 << 7), 0, 0,
24216                                 1,
24217                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24218
24219                 wlc_phy_resetcca_nphy(pi);
24220
24221                 if (pi->use_int_tx_iqlo_cal_nphy
24222                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24223
24224                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24225                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24226                                         mod_radio_reg(
24227                                                 pi,
24228                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24229                                                 1, 1);
24230                                         mod_radio_reg(
24231                                                 pi,
24232                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24233                                                 1, 1);
24234                                 } else {
24235                                         mod_radio_reg(
24236                                              pi,
24237                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24238                                              1, 1);
24239                                         mod_radio_reg(
24240                                              pi,
24241                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24242                                              1, 1);
24243                                 }
24244
24245                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24246                                               0);
24247                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24248                                 wlc_phy_rfctrl_override_nphy_rev7(
24249                                         pi,
24250                                         (0x1 << 3), 0,
24251                                         0x3, 1,
24252                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24253                         }
24254                 }
24255         } else {
24256                 mask = ((0x3 << 12) | (0x3 << 14));
24257                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24258                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24259                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24260
24261                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24262                                          &pi->tx_rx_cal_phy_saveregs[3]);
24263
24264                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24265                                          &pi->tx_rx_cal_phy_saveregs[4]);
24266
24267                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24268                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24269         }
24270 }
24271
24272 void
24273 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24274 {
24275         u16 tssi_reg;
24276         s32 temp, pwrindex[2];
24277         s32 idle_tssi[2];
24278         s32 rssi_buf[4];
24279         s32 tssival[2];
24280         u8 tssi_type;
24281
24282         tssi_reg = read_phy_reg(pi, 0x1e9);
24283
24284         temp = (s32) (tssi_reg & 0x3f);
24285         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24286
24287         temp = (s32) ((tssi_reg >> 8) & 0x3f);
24288         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24289
24290         tssi_type =
24291                 CHSPEC_IS5G(pi->radio_chanspec) ?
24292                 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24293
24294         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24295
24296         tssival[0] = rssi_buf[0] / ((s32) num_samps);
24297         tssival[1] = rssi_buf[2] / ((s32) num_samps);
24298
24299         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24300         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24301
24302         if (pwrindex[0] < 0)
24303                 pwrindex[0] = 0;
24304         else if (pwrindex[0] > 63)
24305                 pwrindex[0] = 63;
24306
24307         if (pwrindex[1] < 0)
24308                 pwrindex[1] = 0;
24309         else if (pwrindex[1] > 63)
24310                 pwrindex[1] = 63;
24311
24312         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24313                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24314         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24315                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24316 }
24317
24318 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24319 {
24320         int index;
24321         u32 bbmult_scale;
24322         u16 bbmult;
24323         u16 tblentry;
24324
24325         struct nphy_txiqcal_ladder ladder_lo[] = {
24326                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24327                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24328                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24329         };
24330
24331         struct nphy_txiqcal_ladder ladder_iq[] = {
24332                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24333                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24334                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24335         };
24336
24337         bbmult = (core == PHY_CORE_0) ?
24338                  ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24339                  (pi->nphy_txcal_bbmult & 0xff);
24340
24341         for (index = 0; index < 18; index++) {
24342                 bbmult_scale = ladder_lo[index].percent * bbmult;
24343                 bbmult_scale /= 100;
24344
24345                 tblentry =
24346                         ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24347                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24348                                          &tblentry);
24349
24350                 bbmult_scale = ladder_iq[index].percent * bbmult;
24351                 bbmult_scale /= 100;
24352
24353                 tblentry =
24354                         ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24355                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24356                                          16, &tblentry);
24357         }
24358 }
24359
24360 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24361 {
24362         u16 tmp;
24363         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24364
24365         tmp = (tmp & (0x7f << 8)) >> 8;
24366         return (u8) tmp;
24367 }
24368
24369 static void
24370 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24371 {
24372         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24373
24374         if (NREV_GT(pi->pubpi.phy_rev, 1))
24375                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24376 }
24377
24378 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24379 {
24380         u16 m0m1;
24381
24382         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24383
24384         return m0m1;
24385 }
24386
24387 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24388 {
24389         u16 m0m1 = (u16) ((m0 << 8) | m1);
24390
24391         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24392         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24393 }
24394
24395 static void
24396 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24397                             struct nphy_papd_restore_state *state, u8 core)
24398 {
24399         s32 tone_freq;
24400         u8 off_core;
24401         u16 mixgain = 0;
24402
24403         off_core = core ^ 0x1;
24404         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24405
24406                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24407                     || NREV_GE(pi->pubpi.phy_rev, 8))
24408                         wlc_phy_rfctrl_override_nphy_rev7(
24409                                 pi, (0x1 << 7),
24410                                 wlc_phy_read_lpf_bw_ctl_nphy
24411                                         (pi,
24412                                         0), 0, 0,
24413                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24414
24415                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24416                         if (pi->pubpi.radiorev == 5)
24417                                 mixgain = (core == 0) ? 0x20 : 0x00;
24418                         else if ((pi->pubpi.radiorev == 7)
24419                                  || (pi->pubpi.radiorev == 8))
24420                                 mixgain = 0x00;
24421                         else if ((pi->pubpi.radiorev <= 4)
24422                                  || (pi->pubpi.radiorev == 6))
24423                                 mixgain = 0x00;
24424                 } else {
24425                         if ((pi->pubpi.radiorev == 4) ||
24426                             (pi->pubpi.radiorev == 6))
24427                                 mixgain = 0x50;
24428                         else if ((pi->pubpi.radiorev == 3)
24429                                  || (pi->pubpi.radiorev == 7)
24430                                  || (pi->pubpi.radiorev == 8))
24431                                 mixgain = 0x0;
24432                 }
24433
24434                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24435                                                   mixgain, (1 << core), 0,
24436                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24437
24438                 wlc_phy_rfctrl_override_1tomany_nphy(
24439                         pi,
24440                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24441                         1, (1 << core), 0);
24442                 wlc_phy_rfctrl_override_1tomany_nphy(
24443                         pi,
24444                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24445                         0, (1 << off_core), 0);
24446
24447                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24448                                                   0, 0x3, 0,
24449                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24450                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24451                                                   (1 << core), 0,
24452                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24453                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24454                                                   (1 << core), 0,
24455                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24456                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24457                                                   (1 << core), 0,
24458                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24459                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24460                                                   (1 << core), 0,
24461                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24462                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24463                                                   (1 << core), 0,
24464                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24465                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24466                                                   (1 << core), 0,
24467                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24468                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24469                                                   (1 << core), 0,
24470                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24471
24472                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24473                                                   0, (1 << core), 0,
24474                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24475                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24476                                                   (1 << core), 0,
24477                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24478
24479                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24480                                                     0xa6 : 0xa7);
24481                 state->afeoverride[core] =
24482                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24483                 state->afectrl[off_core] =
24484                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24485                 state->afeoverride[off_core] =
24486                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24487
24488                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24489                             (0x1 << 2), 0);
24490                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24491                                  0xa5), (0x1 << 2), (0x1 << 2));
24492
24493                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24494                             (0x1 << 2), (0x1 << 2));
24495                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24496                                  0x8f), (0x1 << 2), (0x1 << 2));
24497
24498                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24499                         state->pwrup[core] =
24500                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24501                                                 TXRXCOUPLE_2G_PWRUP);
24502                         state->atten[core] =
24503                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24504                                                 TXRXCOUPLE_2G_ATTEN);
24505                         state->pwrup[off_core] =
24506                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24507                                                 TXRXCOUPLE_2G_PWRUP);
24508                         state->atten[off_core] =
24509                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24510                                                 TXRXCOUPLE_2G_ATTEN);
24511
24512                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24513                                          TXRXCOUPLE_2G_PWRUP, 0xc);
24514
24515                         if ((pi->pubpi.radiorev == 3) ||
24516                             (pi->pubpi.radiorev == 4) ||
24517                             (pi->pubpi.radiorev == 6))
24518                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24519                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24520                         else if (pi->pubpi.radiorev == 5)
24521                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24522                                                  TXRXCOUPLE_2G_ATTEN,
24523                                                  (core == 0) ? 0xf7 : 0xf2);
24524                         else if ((pi->pubpi.radiorev == 7)
24525                                  || (pi->pubpi.radiorev == 8))
24526                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24527                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24528
24529                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24530                                          TXRXCOUPLE_2G_PWRUP, 0x0);
24531                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24532                                          TXRXCOUPLE_2G_ATTEN, 0xff);
24533                 } else {
24534                         state->pwrup[core] =
24535                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24536                                                 TXRXCOUPLE_5G_PWRUP);
24537                         state->atten[core] =
24538                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24539                                                 TXRXCOUPLE_5G_ATTEN);
24540                         state->pwrup[off_core] =
24541                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24542                                                 TXRXCOUPLE_5G_PWRUP);
24543                         state->atten[off_core] =
24544                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24545                                                 TXRXCOUPLE_5G_ATTEN);
24546
24547                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24548                                          TXRXCOUPLE_5G_PWRUP, 0xc);
24549
24550                         if ((pi->pubpi.radiorev == 7)
24551                             || (pi->pubpi.radiorev == 8))
24552                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24553                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
24554
24555                         else
24556                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24557                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
24558
24559                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24560                                          TXRXCOUPLE_5G_PWRUP, 0x0);
24561                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24562                                          TXRXCOUPLE_5G_ATTEN, 0xff);
24563                 }
24564
24565                 tone_freq = 4000;
24566
24567                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24568
24569                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24570                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24571
24572                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24573                             0x2a4, (0x1 << 13), (1) << 13);
24574
24575                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24576                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24577
24578                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24579                             0x2a4, (0x1 << 13), (0) << 13);
24580
24581         } else {
24582
24583                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24584
24585                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24586
24587                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24588
24589                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24590                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24591
24592                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24593                                                     0xa6 : 0xa7);
24594                 state->afeoverride[core] =
24595                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24596
24597                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24598                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24599                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24600                                  0xa5),
24601                             (0x1 << 0) |
24602                             (0x1 << 1) |
24603                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24604
24605                 state->vga_master[core] =
24606                         READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24607                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24608                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24609                         state->fbmix[core] =
24610                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24611                                                 TXFBMIX_G);
24612                         state->intpa_master[core] =
24613                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24614                                                 INTPAG_MASTER);
24615
24616                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24617                                          0x03);
24618                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24619                                          INTPAG_MASTER, 0x04);
24620                 } else {
24621                         state->fbmix[core] =
24622                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24623                                                 TXFBMIX_A);
24624                         state->intpa_master[core] =
24625                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24626                                                 INTPAA_MASTER);
24627
24628                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24629                                          0x03);
24630                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24631                                          INTPAA_MASTER, 0x04);
24632
24633                 }
24634
24635                 tone_freq = 4000;
24636
24637                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24638
24639                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24640                             0x29b, (0x1 << 0), (1) << 0);
24641
24642                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24643                             0x29b, (0x1 << 0), (0) << 0);
24644
24645                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24646         }
24647 }
24648
24649 static void
24650 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24651                               struct nphy_papd_restore_state *state)
24652 {
24653         u8 core;
24654
24655         wlc_phy_stopplayback_nphy(pi);
24656
24657         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24658
24659                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24660
24661                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24662                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24663                                                  TXRXCOUPLE_2G_PWRUP, 0);
24664                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24665                                                  TXRXCOUPLE_2G_ATTEN,
24666                                                  state->atten[core]);
24667                         } else {
24668                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24669                                                  TXRXCOUPLE_5G_PWRUP, 0);
24670                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24671                                                  TXRXCOUPLE_5G_ATTEN,
24672                                                  state->atten[core]);
24673                         }
24674                 }
24675
24676                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24677                         wlc_phy_rfctrl_override_nphy_rev7(
24678                                 pi, (0x1 << 2),
24679                                 1, 0x3, 0,
24680                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24681                 else
24682                         wlc_phy_rfctrl_override_nphy_rev7(
24683                                 pi, (0x1 << 2),
24684                                 0, 0x3, 1,
24685                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24686
24687                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24688                                                   0, 0x3, 1,
24689                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24690                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24691                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24692                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24693                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24694                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24695                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24696                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24697                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24698                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24699                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24700                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24701                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24702                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24703                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24704                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24705                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24706                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24707                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24708                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24709                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24710                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24711                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24712                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24713                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24714                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24715                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24716                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24717                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24718                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24719                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24720
24721                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24722
24723                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24724                                       0xa6 : 0xa7, state->afectrl[core]);
24725                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24726                                       0xa5, state->afeoverride[core]);
24727                 }
24728
24729                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24730                                             (state->mm & 0xff));
24731
24732                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24733                     || NREV_GE(pi->pubpi.phy_rev, 8))
24734                         wlc_phy_rfctrl_override_nphy_rev7(
24735                                 pi, (0x1 << 7), 0, 0,
24736                                 1,
24737                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24738         } else {
24739                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24740                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24741                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24742
24743                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24744                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24745
24746                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24747
24748                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24749                                          state->vga_master[core]);
24750                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24751                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24752                                                  TXFBMIX_G, state->fbmix[core]);
24753                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24754                                                  INTPAG_MASTER,
24755                                                  state->intpa_master[core]);
24756                         } else {
24757                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24758                                                  TXFBMIX_A, state->fbmix[core]);
24759                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24760                                                  INTPAA_MASTER,
24761                                                  state->intpa_master[core]);
24762                         }
24763
24764                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24765                                       0xa6 : 0xa7, state->afectrl[core]);
24766                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24767                                       0xa5, state->afeoverride[core]);
24768                 }
24769
24770                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24771                                             (state->mm & 0xff));
24772
24773                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24774         }
24775 }
24776
24777 static void
24778 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24779                 u32 end)
24780 {
24781         u32 *buf, *src, *dst, sz;
24782
24783         sz = end - start + 1;
24784
24785         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24786         if (NULL == buf)
24787                 return;
24788
24789         src = buf;
24790         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24791
24792         wlc_phy_table_read_nphy(pi,
24793                                 (core ==
24794                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24795                                  NPHY_TBL_ID_EPSILONTBL1),
24796                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24797
24798         do {
24799                 u32 phy_a1, phy_a2;
24800                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24801
24802                 phy_a1 = end - min(end, (winsz >> 1));
24803                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24804                                end + (winsz >> 1));
24805                 phy_a3 = phy_a2 - phy_a1 + 1;
24806                 phy_a6 = 0;
24807                 phy_a7 = 0;
24808
24809                 do {
24810                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24811                                                     &phy_a5);
24812                         phy_a6 += phy_a4;
24813                         phy_a7 += phy_a5;
24814                 } while (phy_a2-- != phy_a1);
24815
24816                 phy_a6 /= phy_a3;
24817                 phy_a7 /= phy_a3;
24818                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24819         } while (end-- != start);
24820
24821         wlc_phy_table_write_nphy(pi,
24822                                  (core ==
24823                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24824                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24825
24826         kfree(buf);
24827 }
24828
24829 static void
24830 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24831                 enum phy_cal_mode cal_mode, u8 core)
24832 {
24833         u16 phy_a1, phy_a2, phy_a3;
24834         u16 phy_a4, phy_a5;
24835         bool phy_a6;
24836         u8 phy_a7, m[2];
24837         u32 phy_a8 = 0;
24838         struct nphy_txgains phy_a9;
24839
24840         if (NREV_LT(pi->pubpi.phy_rev, 3))
24841                 return;
24842
24843         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24844
24845         phy_a6 = ((cal_mode == CAL_GCTRL)
24846                   || (cal_mode == CAL_SOFT)) ? true : false;
24847
24848         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24849
24850                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24851
24852                 if (CHSPEC_IS2G(pi->radio_chanspec))
24853                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24854                                   (phy_a9.txgm[core] << 12) |
24855                                   (phy_a9.pga[core] << 8) |
24856                                   (txgains->gains.pad[core] << 3) |
24857                                   (phy_a9.ipa[core]));
24858                 else
24859                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24860                                   (phy_a9.txgm[core] << 12) |
24861                                   (txgains->gains.pga[core] << 8) |
24862                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24863
24864                 wlc_phy_rfctrl_override_1tomany_nphy(
24865                         pi,
24866                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24867                         phy_a5, (1 << core), 0);
24868
24869                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24870                         if ((pi->pubpi.radiorev <= 4)
24871                             || (pi->pubpi.radiorev == 6))
24872                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24873                                           60 : 79;
24874                         else
24875                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24876                                           45 : 64;
24877                 } else {
24878                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24879                 }
24880
24881                 m[phy_a7] = 0;
24882                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24883
24884                 phy_a2 = 63;
24885
24886                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24887                         if ((pi->pubpi.radiorev == 4)
24888                             || (pi->pubpi.radiorev == 6)) {
24889                                 phy_a1 = 30;
24890                                 phy_a3 = 30;
24891                         } else {
24892                                 phy_a1 = 25;
24893                                 phy_a3 = 25;
24894                         }
24895                 } else {
24896                         if ((pi->pubpi.radiorev == 5)
24897                             || (pi->pubpi.radiorev == 7)
24898                             || (pi->pubpi.radiorev == 8)) {
24899                                 phy_a1 = 25;
24900                                 phy_a3 = 25;
24901                         } else {
24902                                 phy_a1 = 35;
24903                                 phy_a3 = 35;
24904                         }
24905                 }
24906
24907                 if (cal_mode == CAL_GCTRL) {
24908                         if ((pi->pubpi.radiorev == 5)
24909                             && (CHSPEC_IS2G(pi->radio_chanspec)))
24910                                 phy_a1 = 55;
24911                         else if (((pi->pubpi.radiorev == 7) &&
24912                                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
24913                                  ((pi->pubpi.radiorev == 8) &&
24914                                   (CHSPEC_IS2G(pi->radio_chanspec))))
24915                                 phy_a1 = 60;
24916                         else
24917                                 phy_a1 = 63;
24918
24919                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24920
24921                         phy_a1 = 35;
24922                         phy_a3 = 35;
24923                 }
24924
24925                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24926                             0x29b, (0x1 << 0), (1) << 0);
24927
24928                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24929                             0x29b, (0x1 << 0), (0) << 0);
24930
24931                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24932                             0x2a4, (0x1 << 13), (1) << 13);
24933
24934                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24935                             0x2a4, (0x1 << 13), (0) << 13);
24936
24937                 write_phy_reg(pi, 0x2a1, 0x80);
24938                 write_phy_reg(pi, 0x2a2, 0x100);
24939
24940                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24941                             0x2a4, (0x7 << 4), (11) << 4);
24942
24943                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24944                             0x2a4, (0x7 << 8), (11) << 8);
24945
24946                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24947                             0x2a4, (0x7 << 0), (0x3) << 0);
24948
24949                 write_phy_reg(pi, 0x2e5, 0x20);
24950
24951                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24952
24953                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24954
24955                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24956
24957                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24958                                                   1, ((core == 0) ? 1 : 2), 0,
24959                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24960                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24961                                                   0, ((core == 0) ? 2 : 1), 0,
24962                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24963
24964                 write_phy_reg(pi, 0x2be, 1);
24965                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24966
24967                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24968                                                   0, 0x3, 0,
24969                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24970
24971                 wlc_phy_table_write_nphy(pi,
24972                                          (core ==
24973                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24974                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24975                                          32, &phy_a8);
24976
24977                 if (cal_mode != CAL_GCTRL) {
24978                         if (CHSPEC_IS5G(pi->radio_chanspec))
24979                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24980                 }
24981
24982                 wlc_phy_rfctrl_override_1tomany_nphy(
24983                         pi,
24984                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24985                         phy_a5, (1 << core), 1);
24986
24987         } else {
24988
24989                 if (txgains) {
24990                         if (txgains->useindex) {
24991                                 phy_a4 = 15 - ((txgains->index) >> 3);
24992                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24993                                         if (NREV_GE(pi->pubpi.phy_rev, 6))
24994                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
24995
24996                                         else
24997                                         if (NREV_IS(pi->pubpi.phy_rev, 5))
24998                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24999                                         else
25000                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
25001                                 } else {
25002                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
25003                                 }
25004                                 wlc_phy_rfctrl_override_nphy(pi,
25005                                                              (0x1 << 13),
25006                                                              phy_a5,
25007                                                              (1 << core), 0);
25008                         } else {
25009                                 wlc_phy_rfctrl_override_nphy(pi,
25010                                                              (0x1 << 13),
25011                                                              0x5bf7,
25012                                                              (1 << core), 0);
25013                         }
25014                 }
25015
25016                 if (CHSPEC_IS2G(pi->radio_chanspec))
25017                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
25018                 else
25019                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
25020
25021                 m[phy_a7] = 0;
25022                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
25023
25024                 phy_a2 = 63;
25025
25026                 if (cal_mode == CAL_FULL) {
25027                         phy_a1 = 25;
25028                         phy_a3 = 25;
25029                 } else if (cal_mode == CAL_SOFT) {
25030                         phy_a1 = 25;
25031                         phy_a3 = 25;
25032                 } else if (cal_mode == CAL_GCTRL) {
25033                         phy_a1 = 63;
25034                         phy_a3 = 25;
25035                 } else {
25036
25037                         phy_a1 = 25;
25038                         phy_a3 = 25;
25039                 }
25040
25041                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25042                             0x29b, (0x1 << 0), (1) << 0);
25043
25044                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25045                             0x29b, (0x1 << 0), (0) << 0);
25046
25047                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25048                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25049                                     0x2a4, (0x1 << 13), (1) << 13);
25050
25051                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25052                                     0x2a4, (0x1 << 13), (0) << 13);
25053
25054                         write_phy_reg(pi, 0x2a1, 0x20);
25055                         write_phy_reg(pi, 0x2a2, 0x60);
25056
25057                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25058                                     0x2a4, (0xf << 4), (9) << 4);
25059
25060                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25061                                     0x2a4, (0xf << 8), (9) << 8);
25062
25063                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25064                                     0x2a4, (0xf << 0), (0x2) << 0);
25065
25066                         write_phy_reg(pi, 0x2e5, 0x20);
25067                 } else {
25068                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25069                                     0x2a4, (0x1 << 11), (1) << 11);
25070
25071                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25072                                     0x2a4, (0x1 << 11), (0) << 11);
25073
25074                         write_phy_reg(pi, 0x2a1, 0x80);
25075                         write_phy_reg(pi, 0x2a2, 0x600);
25076
25077                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25078                                     0x2a4, (0x7 << 4), (0) << 4);
25079
25080                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25081                                     0x2a4, (0x7 << 8), (0) << 8);
25082
25083                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25084                                     0x2a4, (0x7 << 0), (0x3) << 0);
25085
25086                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25087
25088                 }
25089
25090                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25091
25092                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25093
25094                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25095
25096                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25097
25098                 write_phy_reg(pi, 0x2be, 1);
25099                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25100
25101                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25102
25103                 wlc_phy_table_write_nphy(pi,
25104                                          (core ==
25105                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25106                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25107                                          32, &phy_a8);
25108
25109                 if (cal_mode != CAL_GCTRL)
25110                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25111         }
25112 }
25113
25114 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25115 {
25116         int phy_a1;
25117         int phy_a2;
25118         bool phy_a3;
25119         struct nphy_ipa_txcalgains phy_a4;
25120         bool phy_a5 = false;
25121         bool phy_a6 = true;
25122         s32 phy_a7, phy_a8;
25123         u32 phy_a9;
25124         int phy_a10;
25125         bool phy_a11 = false;
25126         int phy_a12;
25127         u8 phy_a13 = 0;
25128         u8 phy_a14;
25129         u8 *phy_a15 = NULL;
25130
25131         phy_a4.useindex = true;
25132         phy_a12 = start_gain;
25133
25134         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25135
25136                 phy_a2 = 20;
25137                 phy_a1 = 1;
25138
25139                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25140                         if (pi->pubpi.radiorev == 5) {
25141
25142                                 phy_a15 = pad_gain_codes_used_2057rev5;
25143                                 phy_a13 =
25144                                         sizeof(pad_gain_codes_used_2057rev5) /
25145                                         sizeof(pad_gain_codes_used_2057rev5
25146                                                 [0]) - 1;
25147
25148                         } else if ((pi->pubpi.radiorev == 7)
25149                                    || (pi->pubpi.radiorev == 8)) {
25150
25151                                 phy_a15 = pad_gain_codes_used_2057rev7;
25152                                 phy_a13 =
25153                                         sizeof(pad_gain_codes_used_2057rev7) /
25154                                         sizeof(pad_gain_codes_used_2057rev7
25155                                                 [0]) - 1;
25156
25157                         } else {
25158
25159                                 phy_a15 = pad_all_gain_codes_2057;
25160                                 phy_a13 = sizeof(pad_all_gain_codes_2057) /
25161                                           sizeof(pad_all_gain_codes_2057[0]) -
25162                                           1;
25163                         }
25164
25165                 } else {
25166
25167                         phy_a15 = pga_all_gain_codes_2057;
25168                         phy_a13 = sizeof(pga_all_gain_codes_2057) /
25169                                   sizeof(pga_all_gain_codes_2057[0]) - 1;
25170                 }
25171
25172                 phy_a14 = 0;
25173
25174                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25175                         if (CHSPEC_IS2G(pi->radio_chanspec))
25176                                 phy_a4.gains.pad[core] =
25177                                         (u16) phy_a15[phy_a12];
25178                         else
25179                                 phy_a4.gains.pga[core] =
25180                                         (u16) phy_a15[phy_a12];
25181
25182                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25183
25184                         wlc_phy_table_read_nphy(pi,
25185                                                 (core ==
25186                                                  PHY_CORE_0 ?
25187                                                  NPHY_TBL_ID_EPSILONTBL0 :
25188                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25189                                                 63, 32, &phy_a9);
25190
25191                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25192
25193                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25194                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25195
25196                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25197                                 if (!phy_a3)
25198                                         phy_a12 -= (u8) phy_a1;
25199
25200                                 phy_a11 = true;
25201                                 break;
25202                         }
25203
25204                         if (phy_a3)
25205                                 phy_a12 += (u8) phy_a1;
25206                         else
25207                                 phy_a12 -= (u8) phy_a1;
25208
25209                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25210                                 if (phy_a12 < phy_a14)
25211                                         phy_a12 = phy_a14;
25212                                 else
25213                                         phy_a12 = phy_a13;
25214
25215                                 phy_a11 = true;
25216                                 break;
25217                         }
25218
25219                         phy_a6 = false;
25220                         phy_a5 = phy_a3;
25221                 }
25222
25223         } else {
25224                 phy_a2 = 10;
25225                 phy_a1 = 8;
25226                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25227                         phy_a4.index = (u8) phy_a12;
25228                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25229
25230                         wlc_phy_table_read_nphy(pi,
25231                                                 (core ==
25232                                                  PHY_CORE_0 ?
25233                                                  NPHY_TBL_ID_EPSILONTBL0 :
25234                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25235                                                 63, 32, &phy_a9);
25236
25237                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25238
25239                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25240                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25241
25242                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25243                                 if (!phy_a3)
25244                                         phy_a12 -= (u8) phy_a1;
25245
25246                                 phy_a11 = true;
25247                                 break;
25248                         }
25249
25250                         if (phy_a3)
25251                                 phy_a12 += (u8) phy_a1;
25252                         else
25253                                 phy_a12 -= (u8) phy_a1;
25254
25255                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
25256                                 if (phy_a12 < 0)
25257                                         phy_a12 = 0;
25258                                 else
25259                                         phy_a12 = 127;
25260
25261                                 phy_a11 = true;
25262                                 break;
25263                         }
25264
25265                         phy_a6 = false;
25266                         phy_a5 = phy_a3;
25267                 }
25268
25269         }
25270
25271         if (NREV_GE(pi->pubpi.phy_rev, 7))
25272                 return (u8) phy_a15[phy_a12];
25273         else
25274                 return (u8) phy_a12;
25275
25276 }
25277
25278 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25279 {
25280         struct nphy_ipa_txcalgains phy_b1[2];
25281         struct nphy_papd_restore_state phy_b2;
25282         bool phy_b3;
25283         u8 phy_b4;
25284         u8 phy_b5;
25285         s16 phy_b6, phy_b7, phy_b8;
25286         u16 phy_b9;
25287         s16 phy_b10, phy_b11, phy_b12;
25288
25289         phy_b11 = 0;
25290         phy_b12 = 0;
25291         phy_b7 = 0;
25292         phy_b8 = 0;
25293         phy_b6 = 0;
25294
25295         if (pi->nphy_papd_skip == 1)
25296                 return;
25297
25298         phy_b3 = (0 == (R_REG(&pi->regs->maccontrol) & MCTL_EN_MAC));
25299         if (!phy_b3)
25300                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25301
25302         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25303
25304         pi->nphy_force_papd_cal = false;
25305
25306         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25307                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25308                         wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25309
25310         pi->nphy_papd_last_cal = pi->sh->now;
25311         pi->nphy_papd_recal_counter++;
25312
25313         phy_b4 = pi->nphy_txpwrctrl;
25314         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25315
25316         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25317                                  nphy_papd_scaltbl);
25318         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25319                                  nphy_papd_scaltbl);
25320
25321         phy_b9 = read_phy_reg(pi, 0x01);
25322         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25323
25324         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25325                 s32 i, val = 0;
25326                 for (i = 0; i < 64; i++)
25327                         wlc_phy_table_write_nphy(pi,
25328                                                  ((phy_b5 ==
25329                                                    PHY_CORE_0) ?
25330                                                   NPHY_TBL_ID_EPSILONTBL0 :
25331                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
25332                                                  i, 32, &val);
25333         }
25334
25335         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25336
25337         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25338         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25339                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25340
25341                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25342                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25343                                 if ((pi->pubpi.radiorev == 3)
25344                                     || (pi->pubpi.radiorev == 4)
25345                                     || (pi->pubpi.radiorev == 6)) {
25346                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25347                                                 23;
25348                                 } else if (pi->pubpi.radiorev == 5) {
25349                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25350                                                 0;
25351                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25352                                                 wlc_phy_a3_nphy(
25353                                                         pi,
25354                                                         pi->
25355                                                         nphy_papd_cal_gain_index
25356                                                         [phy_b5],
25357                                                         phy_b5);
25358
25359                                 } else if ((pi->pubpi.radiorev == 7)
25360                                            || (pi->pubpi.radiorev == 8)) {
25361
25362                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25363                                                 0;
25364                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25365                                                 wlc_phy_a3_nphy(
25366                                                         pi,
25367                                                         pi->
25368                                                         nphy_papd_cal_gain_index
25369                                                         [phy_b5],
25370                                                         phy_b5);
25371
25372                                 }
25373
25374                                 phy_b1[phy_b5].gains.pad[phy_b5] =
25375                                         pi->nphy_papd_cal_gain_index[phy_b5];
25376
25377                         } else {
25378                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25379                                 pi->nphy_papd_cal_gain_index[phy_b5] =
25380                                         wlc_phy_a3_nphy(
25381                                                 pi,
25382                                                 pi->
25383                                                 nphy_papd_cal_gain_index
25384                                                 [phy_b5], phy_b5);
25385                                 phy_b1[phy_b5].gains.pga[phy_b5] =
25386                                         pi->nphy_papd_cal_gain_index[phy_b5];
25387                         }
25388                 } else {
25389                         phy_b1[phy_b5].useindex = true;
25390                         phy_b1[phy_b5].index = 16;
25391                         phy_b1[phy_b5].index =
25392                                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25393                                                 phy_b5);
25394
25395                         pi->nphy_papd_cal_gain_index[phy_b5] =
25396                                 15 - ((phy_b1[phy_b5].index) >> 3);
25397                 }
25398
25399                 switch (pi->nphy_papd_cal_type) {
25400                 case 0:
25401                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25402                         break;
25403                 case 1:
25404                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25405                         break;
25406                 }
25407
25408                 if (NREV_GE(pi->pubpi.phy_rev, 7))
25409                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25410         }
25411
25412         if (NREV_LT(pi->pubpi.phy_rev, 7))
25413                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25414
25415         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25416                 int eps_offset = 0;
25417
25418                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25419                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25420                                 if (pi->pubpi.radiorev == 3)
25421                                         eps_offset = -2;
25422                                 else if (pi->pubpi.radiorev == 5)
25423                                         eps_offset = 3;
25424                                 else
25425                                         eps_offset = -1;
25426                         } else {
25427                                 eps_offset = 2;
25428                         }
25429
25430                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25431                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25432                                 phy_b10 = 0;
25433                                 if ((pi->pubpi.radiorev == 3) ||
25434                                     (pi->pubpi.radiorev == 4) ||
25435                                     (pi->pubpi.radiorev == 6)) {
25436                                         phy_b12 = -(
25437                                             nphy_papd_padgain_dlt_2g_2057rev3n4
25438                                                              [phy_b8] + 1) / 2;
25439                                         phy_b10 = -1;
25440                                 } else if (pi->pubpi.radiorev == 5) {
25441                                         phy_b12 = -(
25442                                             nphy_papd_padgain_dlt_2g_2057rev5
25443                                                              [phy_b8] + 1) / 2;
25444                                 } else if ((pi->pubpi.radiorev == 7) ||
25445                                            (pi->pubpi.radiorev == 8)) {
25446                                         phy_b12 = -(
25447                                             nphy_papd_padgain_dlt_2g_2057rev7
25448                                                              [phy_b8] + 1) / 2;
25449                                 }
25450                         } else {
25451                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25452                                 if ((pi->pubpi.radiorev == 3) ||
25453                                     (pi->pubpi.radiorev == 4) ||
25454                                     (pi->pubpi.radiorev == 6))
25455                                         phy_b11 =
25456                                                 -(nphy_papd_pgagain_dlt_5g_2057
25457                                                   [phy_b7]
25458                                                   + 1) / 2;
25459                                 else if ((pi->pubpi.radiorev == 7)
25460                                          || (pi->pubpi.radiorev == 8))
25461                                         phy_b11 = -(
25462                                               nphy_papd_pgagain_dlt_5g_2057rev7
25463                                                              [phy_b7] + 1) / 2;
25464
25465                                 phy_b10 = -9;
25466                         }
25467
25468                         if (CHSPEC_IS2G(pi->radio_chanspec))
25469                                 phy_b6 =
25470                                         -60 + 27 + eps_offset + phy_b12 +
25471                                         phy_b10;
25472                         else
25473                                 phy_b6 =
25474                                         -60 + 27 + eps_offset + phy_b11 +
25475                                         phy_b10;
25476
25477                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25478                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25479
25480                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25481                 } else {
25482                         if (NREV_LT(pi->pubpi.phy_rev, 5))
25483                                 eps_offset = 4;
25484                         else
25485                                 eps_offset = 2;
25486
25487                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25488
25489                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25490                                 phy_b11 =
25491                                         -(nphy_papd_pga_gain_delta_ipa_2g[
25492                                                   phy_b7] +
25493                                           1) / 2;
25494                                 phy_b10 = 0;
25495                         } else {
25496                                 phy_b11 =
25497                                         -(nphy_papd_pga_gain_delta_ipa_5g[
25498                                                   phy_b7] +
25499                                           1) / 2;
25500                                 phy_b10 = -9;
25501                         }
25502
25503                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25504
25505                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25506                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25507
25508                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25509                 }
25510         }
25511
25512         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25513                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25514
25515         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25516                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25517
25518         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25519                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25520                             0x2a4, (0x1 << 13), (0) << 13);
25521
25522                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25523                             0x2a4, (0x1 << 13), (0) << 13);
25524
25525         } else {
25526                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25527                             0x2a4, (0x1 << 11), (0) << 11);
25528
25529                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25530                             0x2a4, (0x1 << 11), (0) << 11);
25531
25532         }
25533         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25534
25535         write_phy_reg(pi, 0x01, phy_b9);
25536
25537         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25538
25539         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25540         if (phy_b4 == PHY_TPC_HW_OFF) {
25541                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25542                                          (s8) (pi->nphy_txpwrindex[0].
25543                                                index_internal), false);
25544                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25545                                          (s8) (pi->nphy_txpwrindex[1].
25546                                                index_internal), false);
25547         }
25548
25549         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25550
25551         if (!phy_b3)
25552                 wlapi_enable_mac(pi->sh->physhim);
25553 }
25554
25555 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25556 {
25557         struct nphy_txgains target_gain;
25558         u8 tx_pwr_ctrl_state;
25559         bool fullcal = true;
25560         bool restore_tx_gain = false;
25561         bool mphase;
25562
25563         if (PHY_MUTED(pi))
25564                 return;
25565
25566         if (caltype == PHY_PERICAL_AUTO)
25567                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25568         else if (caltype == PHY_PERICAL_PARTIAL)
25569                 fullcal = false;
25570
25571         if (pi->cal_type_override != PHY_PERICAL_AUTO)
25572                 fullcal =
25573                         (pi->cal_type_override ==
25574                          PHY_PERICAL_FULL) ? true : false;
25575
25576         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25577                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25578                         wlc_phy_cal_perical_mphase_restart(pi);
25579         }
25580
25581         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25582                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25583
25584         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25585
25586         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25587
25588         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25589             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25590                 pi->nphy_cal_orig_pwr_idx[0] =
25591                         (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25592                 pi->nphy_cal_orig_pwr_idx[1] =
25593                         (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25594
25595                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25596                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25597                                                 0x110, 16,
25598                                                 pi->nphy_cal_orig_tx_gain);
25599                 } else {
25600                         pi->nphy_cal_orig_tx_gain[0] = 0;
25601                         pi->nphy_cal_orig_tx_gain[1] = 0;
25602                 }
25603         }
25604         target_gain = wlc_phy_get_tx_gain_nphy(pi);
25605         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25606         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25607
25608         if (pi->antsel_type == ANTSEL_2x3)
25609                 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25610
25611         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25612         if (!mphase) {
25613
25614                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25615                         wlc_phy_precal_txgain_nphy(pi);
25616                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25617                         restore_tx_gain = true;
25618
25619                         target_gain = pi->nphy_cal_target_gain;
25620                 }
25621                 if (0 ==
25622                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25623                                             mphase)) {
25624                         if (PHY_IPA(pi))
25625                                 wlc_phy_a4(pi, true);
25626
25627                         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25628                         wlapi_enable_mac(pi->sh->physhim);
25629                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25630                                              10000);
25631                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25632                         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25633
25634                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25635                                         (pi->first_cal_after_assoc ||
25636                                         (pi->cal_type_override ==
25637                                          PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25638                                 wlc_phy_savecal_nphy(pi);
25639
25640                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25641
25642                                 pi->nphy_perical_last = pi->sh->now;
25643                         }
25644                 }
25645                 if (caltype != PHY_PERICAL_AUTO)
25646                         wlc_phy_rssi_cal_nphy(pi);
25647
25648                 if (pi->first_cal_after_assoc
25649                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25650                         pi->first_cal_after_assoc = false;
25651                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25652                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25653                 }
25654
25655                 if (NREV_GE(pi->pubpi.phy_rev, 3))
25656                         wlc_phy_radio205x_vcocal_nphy(pi);
25657         } else {
25658                 switch (pi->mphase_cal_phase_id) {
25659                 case MPHASE_CAL_STATE_INIT:
25660                         pi->nphy_perical_last = pi->sh->now;
25661                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25662
25663                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25664                                 wlc_phy_precal_txgain_nphy(pi);
25665
25666                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25667                         pi->mphase_cal_phase_id++;
25668                         break;
25669
25670                 case MPHASE_CAL_STATE_TXPHASE0:
25671                 case MPHASE_CAL_STATE_TXPHASE1:
25672                 case MPHASE_CAL_STATE_TXPHASE2:
25673                 case MPHASE_CAL_STATE_TXPHASE3:
25674                 case MPHASE_CAL_STATE_TXPHASE4:
25675                 case MPHASE_CAL_STATE_TXPHASE5:
25676                         if ((pi->radar_percal_mask & 0x10) != 0)
25677                                 pi->nphy_rxcal_active = true;
25678
25679                         if (wlc_phy_cal_txiqlo_nphy
25680                                     (pi, pi->nphy_cal_target_gain, fullcal,
25681                                     true) != 0) {
25682
25683                                 wlc_phy_cal_perical_mphase_reset(pi);
25684                                 break;
25685                         }
25686
25687                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25688                             (pi->mphase_cal_phase_id ==
25689                              MPHASE_CAL_STATE_TXPHASE4))
25690                                 pi->mphase_cal_phase_id += 2;
25691                         else
25692                                 pi->mphase_cal_phase_id++;
25693                         break;
25694
25695                 case MPHASE_CAL_STATE_PAPDCAL:
25696                         if ((pi->radar_percal_mask & 0x2) != 0)
25697                                 pi->nphy_rxcal_active = true;
25698
25699                         if (PHY_IPA(pi))
25700                                 wlc_phy_a4(pi, true);
25701
25702                         pi->mphase_cal_phase_id++;
25703                         break;
25704
25705                 case MPHASE_CAL_STATE_RXCAL:
25706                         if ((pi->radar_percal_mask & 0x1) != 0)
25707                                 pi->nphy_rxcal_active = true;
25708                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25709                                                   (pi->first_cal_after_assoc ||
25710                                                    (pi->cal_type_override ==
25711                                                     PHY_PERICAL_FULL)) ? 2 : 0,
25712                                                   false) == 0)
25713                                 wlc_phy_savecal_nphy(pi);
25714
25715                         pi->mphase_cal_phase_id++;
25716                         break;
25717
25718                 case MPHASE_CAL_STATE_RSSICAL:
25719                         if ((pi->radar_percal_mask & 0x4) != 0)
25720                                 pi->nphy_rxcal_active = true;
25721                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25722                         wlc_phy_rssi_cal_nphy(pi);
25723
25724                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25725                                 wlc_phy_radio205x_vcocal_nphy(pi);
25726
25727                         restore_tx_gain = true;
25728
25729                         if (pi->first_cal_after_assoc)
25730                                 pi->mphase_cal_phase_id++;
25731                         else
25732                                 wlc_phy_cal_perical_mphase_reset(pi);
25733
25734                         break;
25735
25736                 case MPHASE_CAL_STATE_IDLETSSI:
25737                         if ((pi->radar_percal_mask & 0x8) != 0)
25738                                 pi->nphy_rxcal_active = true;
25739
25740                         if (pi->first_cal_after_assoc) {
25741                                 pi->first_cal_after_assoc = false;
25742                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25743                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25744                         }
25745
25746                         wlc_phy_cal_perical_mphase_reset(pi);
25747                         break;
25748
25749                 default:
25750                         wlc_phy_cal_perical_mphase_reset(pi);
25751                         break;
25752                 }
25753         }
25754
25755         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25756                 if (restore_tx_gain) {
25757                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25758
25759                                 wlc_phy_txpwr_index_nphy(pi, 1,
25760                                                          pi->
25761                                                          nphy_cal_orig_pwr_idx
25762                                                          [0], false);
25763                                 wlc_phy_txpwr_index_nphy(pi, 2,
25764                                                          pi->
25765                                                          nphy_cal_orig_pwr_idx
25766                                                          [1], false);
25767
25768                                 pi->nphy_txpwrindex[0].index = -1;
25769                                 pi->nphy_txpwrindex[1].index = -1;
25770                         } else {
25771                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25772                                                          (s8) (pi->
25773                                                                nphy_txpwrindex
25774                                                                [0].
25775                                                                index_internal),
25776                                                          false);
25777                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25778                                                          (s8) (pi->
25779                                                                nphy_txpwrindex
25780                                                                [1].
25781                                                                index_internal),
25782                                                          false);
25783                         }
25784                 }
25785         }
25786
25787         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25788         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25789         wlapi_enable_mac(pi->sh->physhim);
25790 }
25791
25792 int
25793 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25794                         bool fullcal, bool mphase)
25795 {
25796         u16 val;
25797         u16 tbl_buf[11];
25798         u8 cal_cnt;
25799         u16 cal_cmd;
25800         u8 num_cals, max_cal_cmds;
25801         u16 core_no, cal_type;
25802         u16 diq_start = 0;
25803         u8 phy_bw;
25804         u16 max_val;
25805         u16 tone_freq;
25806         u16 gain_save[2];
25807         u16 cal_gain[2];
25808         struct nphy_iqcal_params cal_params[2];
25809         u32 tbl_len;
25810         void *tbl_ptr;
25811         bool ladder_updated[2];
25812         u8 mphase_cal_lastphase = 0;
25813         int bcmerror = 0;
25814         bool phyhang_avoid_state = false;
25815
25816         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25817                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25818                 0x1902,
25819                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25820                 0x6407
25821         };
25822
25823         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25824                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25825                 0x3200,
25826                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25827                 0x6407
25828         };
25829
25830         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25831                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25832                 0x1202,
25833                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25834                 0x4707
25835         };
25836
25837         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25838                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25839                 0x2300,
25840                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25841                 0x4707
25842         };
25843
25844         u16 tbl_tx_iqlo_cal_startcoefs[] = {
25845                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25846                 0x0000
25847         };
25848
25849         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25850                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25851                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25852         };
25853
25854         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25855                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25856                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25857         };
25858
25859         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25860                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25861                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25862                 0x0000
25863         };
25864
25865         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25866                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25867                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25868         };
25869
25870         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25871                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25872                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25873         };
25874
25875         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25876
25877         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25878                 phyhang_avoid_state = pi->phyhang_avoid;
25879                 pi->phyhang_avoid = false;
25880         }
25881
25882         if (CHSPEC_IS40(pi->radio_chanspec))
25883                 phy_bw = 40;
25884         else
25885                 phy_bw = 20;
25886
25887         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25888
25889         for (core_no = 0; core_no <= 1; core_no++) {
25890                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25891                                               &cal_params[core_no]);
25892                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25893         }
25894
25895         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25896
25897         wlc_phy_txcal_radio_setup_nphy(pi);
25898
25899         wlc_phy_txcal_physetup_nphy(pi);
25900
25901         ladder_updated[0] = ladder_updated[1] = false;
25902         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25903               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25904                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25905
25906                 if (phy_bw == 40) {
25907                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25908                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25909                 } else {
25910                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25911                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25912                 }
25913                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25914                                          16, tbl_ptr);
25915
25916                 if (phy_bw == 40) {
25917                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25918                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25919                 } else {
25920                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25921                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25922                 }
25923                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25924                                          16, tbl_ptr);
25925         }
25926
25927         if (NREV_GE(pi->pubpi.phy_rev, 7))
25928                 write_phy_reg(pi, 0xc2, 0x8ad9);
25929         else
25930                 write_phy_reg(pi, 0xc2, 0x8aa9);
25931
25932         max_val = 250;
25933         tone_freq = (phy_bw == 20) ? 2500 : 5000;
25934
25935         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25936                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25937                 bcmerror = 0;
25938         } else {
25939                 bcmerror =
25940                         wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25941                                              false);
25942         }
25943
25944         if (bcmerror == 0) {
25945
25946                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25947                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
25948                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25949                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25950                                 tbl_len -= 2;
25951                 } else {
25952                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25953
25954                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
25955                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25956                                 if (NREV_LT(pi->pubpi.phy_rev, 3))
25957                                         tbl_len -= 2;
25958                         } else {
25959
25960                                 fullcal = true;
25961
25962                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25963                                         tbl_ptr =
25964                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25965                                         tbl_len = ARRAY_SIZE(
25966                                            tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25967                                 } else {
25968                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25969                                         tbl_len = ARRAY_SIZE(
25970                                                     tbl_tx_iqlo_cal_startcoefs);
25971                                 }
25972                         }
25973                 }
25974                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25975                                          16, tbl_ptr);
25976
25977                 if (fullcal) {
25978                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25979                                        ARRAY_SIZE(
25980                                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25981                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25982                 } else {
25983                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25984                                        ARRAY_SIZE(
25985                                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25986                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25987                 }
25988
25989                 if (mphase) {
25990                         cal_cnt = pi->mphase_txcal_cmdidx;
25991                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25992                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25993                         else
25994                                 num_cals = max_cal_cmds;
25995                 } else {
25996                         cal_cnt = 0;
25997                         num_cals = max_cal_cmds;
25998                 }
25999
26000                 for (; cal_cnt < num_cals; cal_cnt++) {
26001
26002                         if (fullcal) {
26003                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26004                                           tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
26005                                           [cal_cnt] :
26006                                           tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
26007                         } else {
26008                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
26009                                           tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
26010                                         cal_cnt]
26011                                           : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
26012                         }
26013
26014                         core_no = ((cal_cmd & 0x3000) >> 12);
26015                         cal_type = ((cal_cmd & 0x0F00) >> 8);
26016
26017                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
26018                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
26019                              PHY_IPA(pi)
26020                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
26021                                 if (!ladder_updated[core_no]) {
26022                                         wlc_phy_update_txcal_ladder_nphy(
26023                                                 pi,
26024                                                 core_no);
26025                                         ladder_updated[core_no] = true;
26026                                 }
26027                         }
26028
26029                         val =
26030                                 (cal_params[core_no].
26031                                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
26032                         write_phy_reg(pi, 0xc1, val);
26033
26034                         if ((cal_type == 1) || (cal_type == 3)
26035                             || (cal_type == 4)) {
26036
26037                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26038                                                         1, 69 + core_no, 16,
26039                                                         tbl_buf);
26040
26041                                 diq_start = tbl_buf[0];
26042
26043                                 tbl_buf[0] = 0;
26044                                 wlc_phy_table_write_nphy(pi,
26045                                                          NPHY_TBL_ID_IQLOCAL, 1,
26046                                                          69 + core_no, 16,
26047                                                          tbl_buf);
26048                         }
26049
26050                         write_phy_reg(pi, 0xc0, cal_cmd);
26051
26052                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26053                                  20000);
26054                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26055                                  "HW error: txiq calib"))
26056                                 return -EIO;
26057
26058                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26059                                                 tbl_len, 96, 16, tbl_buf);
26060                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26061                                                  tbl_len, 64, 16, tbl_buf);
26062
26063                         if ((cal_type == 1) || (cal_type == 3)
26064                             || (cal_type == 4)) {
26065
26066                                 tbl_buf[0] = diq_start;
26067
26068                         }
26069
26070                 }
26071
26072                 if (mphase) {
26073                         pi->mphase_txcal_cmdidx = num_cals;
26074                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26075                                 pi->mphase_txcal_cmdidx = 0;
26076                 }
26077
26078                 mphase_cal_lastphase =
26079                         (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26080                         MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26081
26082                 if (!mphase
26083                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26084
26085                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26086                                                 16, tbl_buf);
26087                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26088                                                  16, tbl_buf);
26089
26090                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26091
26092                                 tbl_buf[0] = 0;
26093                                 tbl_buf[1] = 0;
26094                                 tbl_buf[2] = 0;
26095                                 tbl_buf[3] = 0;
26096
26097                         }
26098                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26099                                                  16, tbl_buf);
26100
26101                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26102                                                 16, tbl_buf);
26103                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26104                                                  16, tbl_buf);
26105
26106                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26107                                                  16, tbl_buf);
26108
26109                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26110                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26111                                 tbl_len -= 2;
26112
26113                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26114                                                 tbl_len, 96, 16,
26115                                                 pi->nphy_txiqlocal_bestc);
26116
26117                         pi->nphy_txiqlocal_coeffsvalid = true;
26118                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26119                 } else {
26120                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26121                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26122                                 tbl_len -= 2;
26123
26124                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26125                                                 tbl_len, 96, 16,
26126                                                 pi->mphase_txcal_bestcoeffs);
26127                 }
26128
26129                 wlc_phy_stopplayback_nphy(pi);
26130
26131                 write_phy_reg(pi, 0xc2, 0x0000);
26132
26133         }
26134
26135         wlc_phy_txcal_phycleanup_nphy(pi);
26136
26137         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26138                                  gain_save);
26139
26140         wlc_phy_txcal_radio_cleanup_nphy(pi);
26141
26142         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26143                 if (!mphase
26144                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26145                         wlc_phy_tx_iq_war_nphy(pi);
26146         }
26147
26148         if (NREV_GE(pi->pubpi.phy_rev, 4))
26149                 pi->phyhang_avoid = phyhang_avoid_state;
26150
26151         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26152
26153         return bcmerror;
26154 }
26155
26156 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26157 {
26158         u16 tbl_buf[7];
26159
26160         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26161             (pi->nphy_txiqlocal_coeffsvalid)) {
26162                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26163                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26164
26165                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26166                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26167                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26168                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26169
26170                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26171                                                  16, pi->nphy_txiqlocal_bestc);
26172
26173                         tbl_buf[0] = 0;
26174                         tbl_buf[1] = 0;
26175                         tbl_buf[2] = 0;
26176                         tbl_buf[3] = 0;
26177                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26178                                                  16, tbl_buf);
26179
26180                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26181                                                  16,
26182                                                  &pi->nphy_txiqlocal_bestc[5]);
26183
26184                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26185                                                  16,
26186                                                  &pi->nphy_txiqlocal_bestc[5]);
26187                 }
26188         }
26189 }
26190
26191 void
26192 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26193                           struct nphy_iq_comp *pcomp)
26194 {
26195         if (write) {
26196                 write_phy_reg(pi, 0x9a, pcomp->a0);
26197                 write_phy_reg(pi, 0x9b, pcomp->b0);
26198                 write_phy_reg(pi, 0x9c, pcomp->a1);
26199                 write_phy_reg(pi, 0x9d, pcomp->b1);
26200         } else {
26201                 pcomp->a0 = read_phy_reg(pi, 0x9a);
26202                 pcomp->b0 = read_phy_reg(pi, 0x9b);
26203                 pcomp->a1 = read_phy_reg(pi, 0x9c);
26204                 pcomp->b1 = read_phy_reg(pi, 0x9d);
26205         }
26206 }
26207
26208 void
26209 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26210                        u16 num_samps, u8 wait_time, u8 wait_for_crs)
26211 {
26212         u8 core;
26213
26214         write_phy_reg(pi, 0x12b, num_samps);
26215         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26216         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26217                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26218
26219         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26220
26221         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26222                  10000);
26223         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26224                  "HW error: rxiq est"))
26225                 return;
26226
26227         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26228                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26229                         est[core].i_pwr =
26230                                 (read_phy_reg(pi,
26231                                               NPHY_IqestipwrAccHi(core)) << 16)
26232                                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26233                         est[core].q_pwr =
26234                                 (read_phy_reg(pi,
26235                                               NPHY_IqestqpwrAccHi(core)) << 16)
26236                                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26237                         est[core].iq_prod =
26238                                 (read_phy_reg(pi,
26239                                               NPHY_IqestIqAccHi(core)) << 16) |
26240                                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26241                 }
26242         }
26243 }
26244
26245 #define CAL_RETRY_CNT 2
26246 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26247 {
26248         u8 curr_core;
26249         struct phy_iq_est est[PHY_CORE_MAX];
26250         struct nphy_iq_comp old_comp, new_comp;
26251         s32 iq = 0;
26252         u32 ii = 0, qq = 0;
26253         s16 iq_nbits, qq_nbits, brsh, arsh;
26254         s32 a, b, temp;
26255         int bcmerror = 0;
26256         uint cal_retry = 0;
26257
26258         if (core_mask == 0x0)
26259                 return;
26260
26261         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26262         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26263         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26264
26265 cal_try:
26266         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26267
26268         new_comp = old_comp;
26269
26270         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26271
26272                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26273                         iq = est[curr_core].iq_prod;
26274                         ii = est[curr_core].i_pwr;
26275                         qq = est[curr_core].q_pwr;
26276                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26277                         iq = est[curr_core].iq_prod;
26278                         ii = est[curr_core].i_pwr;
26279                         qq = est[curr_core].q_pwr;
26280                 } else {
26281                         continue;
26282                 }
26283
26284                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26285                         bcmerror = -EBADE;
26286                         break;
26287                 }
26288
26289                 iq_nbits = wlc_phy_nbits(iq);
26290                 qq_nbits = wlc_phy_nbits(qq);
26291
26292                 arsh = 10 - (30 - iq_nbits);
26293                 if (arsh >= 0) {
26294                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26295                         temp = (s32) (ii >> arsh);
26296                         if (temp == 0) {
26297                                 bcmerror = -EBADE;
26298                                 break;
26299                         }
26300                 } else {
26301                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26302                         temp = (s32) (ii << -arsh);
26303                         if (temp == 0) {
26304                                 bcmerror = -EBADE;
26305                                 break;
26306                         }
26307                 }
26308
26309                 a /= temp;
26310
26311                 brsh = qq_nbits - 31 + 20;
26312                 if (brsh >= 0) {
26313                         b = (qq << (31 - qq_nbits));
26314                         temp = (s32) (ii >> brsh);
26315                         if (temp == 0) {
26316                                 bcmerror = -EBADE;
26317                                 break;
26318                         }
26319                 } else {
26320                         b = (qq << (31 - qq_nbits));
26321                         temp = (s32) (ii << -brsh);
26322                         if (temp == 0) {
26323                                 bcmerror = -EBADE;
26324                                 break;
26325                         }
26326                 }
26327                 b /= temp;
26328                 b -= a * a;
26329                 b = (s32) int_sqrt((unsigned long) b);
26330                 b -= (1 << 10);
26331
26332                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26333                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26334                                 new_comp.a0 = (s16) a & 0x3ff;
26335                                 new_comp.b0 = (s16) b & 0x3ff;
26336                         } else {
26337
26338                                 new_comp.a0 = (s16) b & 0x3ff;
26339                                 new_comp.b0 = (s16) a & 0x3ff;
26340                         }
26341                 }
26342                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26343                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26344                                 new_comp.a1 = (s16) a & 0x3ff;
26345                                 new_comp.b1 = (s16) b & 0x3ff;
26346                         } else {
26347
26348                                 new_comp.a1 = (s16) b & 0x3ff;
26349                                 new_comp.b1 = (s16) a & 0x3ff;
26350                         }
26351                 }
26352         }
26353
26354         if (bcmerror != 0) {
26355                 printk(KERN_DEBUG "%s: Failed, cnt = %d\n", __func__,
26356                        cal_retry);
26357
26358                 if (cal_retry < CAL_RETRY_CNT) {
26359                         cal_retry++;
26360                         goto cal_try;
26361                 }
26362
26363                 new_comp = old_comp;
26364         }
26365
26366         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26367 }
26368
26369 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26370 {
26371         u16 offtune_val;
26372         u16 bias_g = 0;
26373         u16 bias_a = 0;
26374
26375         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26376                 if (rx_core == PHY_CORE_0) {
26377                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26378                                 pi->tx_rx_cal_radio_saveregs[0] =
26379                                         read_radio_reg(pi,
26380                                             RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26381                                 pi->tx_rx_cal_radio_saveregs[1] =
26382                                         read_radio_reg(pi,
26383                                             RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26384
26385                                 write_radio_reg(pi,
26386                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26387                                         0x3);
26388                                 write_radio_reg(pi,
26389                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26390                                         0xaf);
26391
26392                         } else {
26393                                 pi->tx_rx_cal_radio_saveregs[0] =
26394                                         read_radio_reg(pi,
26395                                             RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26396                                 pi->tx_rx_cal_radio_saveregs[1] =
26397                                         read_radio_reg(pi,
26398                                             RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26399
26400                                 write_radio_reg(
26401                                         pi,
26402                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26403                                         0x3);
26404                                 write_radio_reg(
26405                                         pi,
26406                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26407                                         0x7f);
26408                         }
26409
26410                 } else {
26411                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26412                                 pi->tx_rx_cal_radio_saveregs[0] =
26413                                         read_radio_reg(pi,
26414                                             RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26415                                 pi->tx_rx_cal_radio_saveregs[1] =
26416                                         read_radio_reg(pi,
26417                                             RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26418
26419                                 write_radio_reg(
26420                                         pi,
26421                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26422                                         0x3);
26423                                 write_radio_reg(
26424                                         pi,
26425                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26426                                         0xaf);
26427
26428                         } else {
26429                                 pi->tx_rx_cal_radio_saveregs[0] =
26430                                         read_radio_reg(pi,
26431                                             RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26432                                 pi->tx_rx_cal_radio_saveregs[1] =
26433                                         read_radio_reg(pi,
26434                                             RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26435
26436                                 write_radio_reg(pi,
26437                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26438                                         0x3);
26439                                 write_radio_reg(pi,
26440                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26441                                         0x7f);
26442                         }
26443                 }
26444
26445         } else {
26446                 if (rx_core == PHY_CORE_0) {
26447                         pi->tx_rx_cal_radio_saveregs[0] =
26448                                 read_radio_reg(pi,
26449                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26450                                                RADIO_2056_TX1);
26451                         pi->tx_rx_cal_radio_saveregs[1] =
26452                                 read_radio_reg(pi,
26453                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26454                                                RADIO_2056_RX0);
26455
26456                         if (pi->pubpi.radiorev >= 5) {
26457                                 pi->tx_rx_cal_radio_saveregs[2] =
26458                                         read_radio_reg(pi,
26459                                                        RADIO_2056_RX_RXSPARE2 |
26460                                                        RADIO_2056_RX0);
26461                                 pi->tx_rx_cal_radio_saveregs[3] =
26462                                         read_radio_reg(pi,
26463                                                        RADIO_2056_TX_TXSPARE2 |
26464                                                        RADIO_2056_TX1);
26465                         }
26466
26467                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26468
26469                                 if (pi->pubpi.radiorev >= 5) {
26470                                         pi->tx_rx_cal_radio_saveregs[4] =
26471                                                 read_radio_reg(pi,
26472                                                       RADIO_2056_RX_LNAA_MASTER
26473                                                       | RADIO_2056_RX0);
26474
26475                                         write_radio_reg(
26476                                                 pi,
26477                                                 RADIO_2056_RX_LNAA_MASTER
26478                                                 | RADIO_2056_RX0, 0x40);
26479
26480                                         write_radio_reg(pi,
26481                                                 RADIO_2056_TX_TXSPARE2 |
26482                                                 RADIO_2056_TX1, bias_a);
26483
26484                                         write_radio_reg(pi,
26485                                                 RADIO_2056_RX_RXSPARE2 |
26486                                                 RADIO_2056_RX0, bias_a);
26487                                 } else {
26488                                         pi->tx_rx_cal_radio_saveregs[4] =
26489                                                 read_radio_reg(pi,
26490                                                         RADIO_2056_RX_LNAA_TUNE
26491                                                         | RADIO_2056_RX0);
26492
26493                                         offtune_val =
26494                                                 (pi->tx_rx_cal_radio_saveregs
26495                                                  [2] & 0xF0) >> 8;
26496                                         offtune_val =
26497                                                 (offtune_val <= 0x7) ? 0xF : 0;
26498
26499                                         mod_radio_reg(pi,
26500                                                       RADIO_2056_RX_LNAA_TUNE |
26501                                                       RADIO_2056_RX0, 0xF0,
26502                                                       (offtune_val << 8));
26503                                 }
26504
26505                                 write_radio_reg(pi,
26506                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26507                                                 RADIO_2056_TX1, 0x9);
26508                                 write_radio_reg(pi,
26509                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26510                                                 RADIO_2056_RX0, 0x9);
26511                         } else {
26512                                 if (pi->pubpi.radiorev >= 5) {
26513                                         pi->tx_rx_cal_radio_saveregs[4] =
26514                                                 read_radio_reg(
26515                                                       pi,
26516                                                       RADIO_2056_RX_LNAG_MASTER
26517                                                     | RADIO_2056_RX0);
26518
26519                                         write_radio_reg(
26520                                                 pi,
26521                                                 RADIO_2056_RX_LNAG_MASTER
26522                                                 | RADIO_2056_RX0, 0x40);
26523
26524                                         write_radio_reg(
26525                                                 pi,
26526                                                 RADIO_2056_TX_TXSPARE2
26527                                                 |
26528                                                 RADIO_2056_TX1, bias_g);
26529
26530                                         write_radio_reg(
26531                                                 pi,
26532                                                 RADIO_2056_RX_RXSPARE2
26533                                                 |
26534                                                 RADIO_2056_RX0, bias_g);
26535
26536                                 } else {
26537                                         pi->tx_rx_cal_radio_saveregs[4] =
26538                                                 read_radio_reg(
26539                                                         pi,
26540                                                         RADIO_2056_RX_LNAG_TUNE
26541                                                         | RADIO_2056_RX0);
26542
26543                                         offtune_val =
26544                                                 (pi->
26545                                                  tx_rx_cal_radio_saveregs[2] &
26546                                                  0xF0) >> 8;
26547                                         offtune_val =
26548                                                 (offtune_val <= 0x7) ? 0xF : 0;
26549
26550                                         mod_radio_reg(pi,
26551                                                       RADIO_2056_RX_LNAG_TUNE |
26552                                                       RADIO_2056_RX0, 0xF0,
26553                                                       (offtune_val << 8));
26554                                 }
26555
26556                                 write_radio_reg(pi,
26557                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26558                                                 RADIO_2056_TX1, 0x6);
26559                                 write_radio_reg(pi,
26560                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26561                                                 RADIO_2056_RX0, 0x6);
26562                         }
26563
26564                 } else {
26565                         pi->tx_rx_cal_radio_saveregs[0] =
26566                                 read_radio_reg(pi,
26567                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26568                                                RADIO_2056_TX0);
26569                         pi->tx_rx_cal_radio_saveregs[1] =
26570                                 read_radio_reg(pi,
26571                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26572                                                RADIO_2056_RX1);
26573
26574                         if (pi->pubpi.radiorev >= 5) {
26575                                 pi->tx_rx_cal_radio_saveregs[2] =
26576                                         read_radio_reg(pi,
26577                                                        RADIO_2056_RX_RXSPARE2 |
26578                                                        RADIO_2056_RX1);
26579                                 pi->tx_rx_cal_radio_saveregs[3] =
26580                                         read_radio_reg(pi,
26581                                                        RADIO_2056_TX_TXSPARE2 |
26582                                                        RADIO_2056_TX0);
26583                         }
26584
26585                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26586
26587                                 if (pi->pubpi.radiorev >= 5) {
26588                                         pi->tx_rx_cal_radio_saveregs[4] =
26589                                                 read_radio_reg(
26590                                                        pi,
26591                                                        RADIO_2056_RX_LNAA_MASTER
26592                                                        | RADIO_2056_RX1);
26593
26594                                         write_radio_reg(
26595                                                 pi,
26596                                                 RADIO_2056_RX_LNAA_MASTER |
26597                                                 RADIO_2056_RX1, 0x40);
26598
26599                                         write_radio_reg(
26600                                                 pi,
26601                                                 RADIO_2056_TX_TXSPARE2
26602                                                 |
26603                                                 RADIO_2056_TX0, bias_a);
26604
26605                                         write_radio_reg(
26606                                                 pi,
26607                                                 RADIO_2056_RX_RXSPARE2
26608                                                 |
26609                                                 RADIO_2056_RX1, bias_a);
26610                                 } else {
26611                                         pi->tx_rx_cal_radio_saveregs[4] =
26612                                                 read_radio_reg(
26613                                                         pi,
26614                                                         RADIO_2056_RX_LNAA_TUNE
26615                                                         | RADIO_2056_RX1);
26616
26617                                         offtune_val =
26618                                                 (pi->
26619                                                  tx_rx_cal_radio_saveregs[2] &
26620                                                  0xF0) >> 8;
26621                                         offtune_val =
26622                                                 (offtune_val <= 0x7) ? 0xF : 0;
26623
26624                                         mod_radio_reg(pi,
26625                                                       RADIO_2056_RX_LNAA_TUNE |
26626                                                       RADIO_2056_RX1, 0xF0,
26627                                                       (offtune_val << 8));
26628                                 }
26629
26630                                 write_radio_reg(pi,
26631                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26632                                                 RADIO_2056_TX0, 0x9);
26633                                 write_radio_reg(pi,
26634                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26635                                                 RADIO_2056_RX1, 0x9);
26636                         } else {
26637                                 if (pi->pubpi.radiorev >= 5) {
26638                                         pi->tx_rx_cal_radio_saveregs[4] =
26639                                                 read_radio_reg(
26640                                                       pi,
26641                                                       RADIO_2056_RX_LNAG_MASTER
26642                                                     | RADIO_2056_RX1);
26643
26644                                         write_radio_reg(
26645                                                 pi,
26646                                                 RADIO_2056_RX_LNAG_MASTER
26647                                                 | RADIO_2056_RX1, 0x40);
26648
26649                                         write_radio_reg(
26650                                                 pi,
26651                                                 RADIO_2056_TX_TXSPARE2
26652                                                 |
26653                                                 RADIO_2056_TX0, bias_g);
26654
26655                                         write_radio_reg(
26656                                                 pi,
26657                                                 RADIO_2056_RX_RXSPARE2
26658                                                 |
26659                                                 RADIO_2056_RX1, bias_g);
26660                                 } else {
26661                                         pi->tx_rx_cal_radio_saveregs[4] =
26662                                                 read_radio_reg(
26663                                                         pi,
26664                                                         RADIO_2056_RX_LNAG_TUNE
26665                                                         | RADIO_2056_RX1);
26666
26667                                         offtune_val =
26668                                                 (pi->
26669                                                  tx_rx_cal_radio_saveregs[2] &
26670                                                  0xF0) >> 8;
26671                                         offtune_val =
26672                                                 (offtune_val <= 0x7) ? 0xF : 0;
26673
26674                                         mod_radio_reg(pi,
26675                                                       RADIO_2056_RX_LNAG_TUNE |
26676                                                       RADIO_2056_RX1, 0xF0,
26677                                                       (offtune_val << 8));
26678                                 }
26679
26680                                 write_radio_reg(pi,
26681                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26682                                                 RADIO_2056_TX0, 0x6);
26683                                 write_radio_reg(pi,
26684                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26685                                                 RADIO_2056_RX1, 0x6);
26686                         }
26687                 }
26688         }
26689 }
26690
26691 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26692 {
26693         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26694                 if (rx_core == PHY_CORE_0) {
26695                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26696                                 write_radio_reg(
26697                                         pi,
26698                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26699                                         pi->
26700                                         tx_rx_cal_radio_saveregs[0]);
26701                                 write_radio_reg(
26702                                         pi,
26703                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26704                                         pi->
26705                                         tx_rx_cal_radio_saveregs[1]);
26706
26707                         } else {
26708                                 write_radio_reg(
26709                                         pi,
26710                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26711                                         pi->
26712                                         tx_rx_cal_radio_saveregs[0]);
26713                                 write_radio_reg(
26714                                         pi,
26715                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26716                                         pi->
26717                                         tx_rx_cal_radio_saveregs[1]);
26718                         }
26719
26720                 } else {
26721                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26722                                 write_radio_reg(
26723                                         pi,
26724                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26725                                         pi->
26726                                         tx_rx_cal_radio_saveregs[0]);
26727                                 write_radio_reg(
26728                                         pi,
26729                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26730                                         pi->
26731                                         tx_rx_cal_radio_saveregs[1]);
26732
26733                         } else {
26734                                 write_radio_reg(
26735                                         pi,
26736                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26737                                         pi->
26738                                         tx_rx_cal_radio_saveregs[0]);
26739                                 write_radio_reg(
26740                                         pi,
26741                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26742                                         pi->
26743                                         tx_rx_cal_radio_saveregs[1]);
26744                         }
26745                 }
26746
26747         } else {
26748                 if (rx_core == PHY_CORE_0) {
26749                         write_radio_reg(pi,
26750                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26751                                         RADIO_2056_TX1,
26752                                         pi->tx_rx_cal_radio_saveregs[0]);
26753
26754                         write_radio_reg(pi,
26755                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26756                                         RADIO_2056_RX0,
26757                                         pi->tx_rx_cal_radio_saveregs[1]);
26758
26759                         if (pi->pubpi.radiorev >= 5) {
26760                                 write_radio_reg(pi,
26761                                                 RADIO_2056_RX_RXSPARE2 |
26762                                                 RADIO_2056_RX0,
26763                                                 pi->
26764                                                 tx_rx_cal_radio_saveregs[2]);
26765
26766                                 write_radio_reg(pi,
26767                                                 RADIO_2056_TX_TXSPARE2 |
26768                                                 RADIO_2056_TX1,
26769                                                 pi->
26770                                                 tx_rx_cal_radio_saveregs[3]);
26771                         }
26772
26773                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26774                                 if (pi->pubpi.radiorev >= 5)
26775                                         write_radio_reg(
26776                                                 pi,
26777                                                 RADIO_2056_RX_LNAA_MASTER
26778                                                 | RADIO_2056_RX0,
26779                                                 pi->
26780                                                 tx_rx_cal_radio_saveregs
26781                                                 [4]);
26782                                 else
26783                                         write_radio_reg(
26784                                                 pi,
26785                                                 RADIO_2056_RX_LNAA_TUNE
26786                                                 | RADIO_2056_RX0,
26787                                                 pi->
26788                                                 tx_rx_cal_radio_saveregs
26789                                                 [4]);
26790                         } else {
26791                                 if (pi->pubpi.radiorev >= 5)
26792                                         write_radio_reg(
26793                                                 pi,
26794                                                 RADIO_2056_RX_LNAG_MASTER
26795                                                 | RADIO_2056_RX0,
26796                                                 pi->
26797                                                 tx_rx_cal_radio_saveregs
26798                                                 [4]);
26799                                 else
26800                                         write_radio_reg(
26801                                                 pi,
26802                                                 RADIO_2056_RX_LNAG_TUNE
26803                                                 | RADIO_2056_RX0,
26804                                                 pi->
26805                                                 tx_rx_cal_radio_saveregs
26806                                                 [4]);
26807                         }
26808
26809                 } else {
26810                         write_radio_reg(pi,
26811                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26812                                         RADIO_2056_TX0,
26813                                         pi->tx_rx_cal_radio_saveregs[0]);
26814
26815                         write_radio_reg(pi,
26816                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26817                                         RADIO_2056_RX1,
26818                                         pi->tx_rx_cal_radio_saveregs[1]);
26819
26820                         if (pi->pubpi.radiorev >= 5) {
26821                                 write_radio_reg(pi,
26822                                                 RADIO_2056_RX_RXSPARE2 |
26823                                                 RADIO_2056_RX1,
26824                                                 pi->
26825                                                 tx_rx_cal_radio_saveregs[2]);
26826
26827                                 write_radio_reg(pi,
26828                                                 RADIO_2056_TX_TXSPARE2 |
26829                                                 RADIO_2056_TX0,
26830                                                 pi->
26831                                                 tx_rx_cal_radio_saveregs[3]);
26832                         }
26833
26834                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26835                                 if (pi->pubpi.radiorev >= 5)
26836                                         write_radio_reg(
26837                                                 pi,
26838                                                 RADIO_2056_RX_LNAA_MASTER
26839                                                 | RADIO_2056_RX1,
26840                                                 pi->
26841                                                 tx_rx_cal_radio_saveregs
26842                                                 [4]);
26843                                 else
26844                                         write_radio_reg(
26845                                                 pi,
26846                                                 RADIO_2056_RX_LNAA_TUNE
26847                                                 | RADIO_2056_RX1,
26848                                                 pi->
26849                                                 tx_rx_cal_radio_saveregs
26850                                                 [4]);
26851                         } else {
26852                                 if (pi->pubpi.radiorev >= 5)
26853                                         write_radio_reg(
26854                                                 pi,
26855                                                 RADIO_2056_RX_LNAG_MASTER
26856                                                 | RADIO_2056_RX1,
26857                                                 pi->
26858                                                 tx_rx_cal_radio_saveregs
26859                                                 [4]);
26860                                 else
26861                                         write_radio_reg(
26862                                                 pi,
26863                                                 RADIO_2056_RX_LNAG_TUNE
26864                                                 | RADIO_2056_RX1,
26865                                                 pi->
26866                                                 tx_rx_cal_radio_saveregs
26867                                                 [4]);
26868                         }
26869                 }
26870         }
26871 }
26872
26873 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26874 {
26875         u8 tx_core;
26876         u16 rx_antval, tx_antval;
26877
26878         if (NREV_GE(pi->pubpi.phy_rev, 7))
26879                 tx_core = rx_core;
26880         else
26881                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26882
26883         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26884         pi->tx_rx_cal_phy_saveregs[1] =
26885                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26886         pi->tx_rx_cal_phy_saveregs[2] =
26887                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26888         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26889         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26890         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26891         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26892         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26893         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26894         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26895                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26896                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26897                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26898                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26899         }
26900
26901         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26902         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26903         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26904                     0x29b, (0x1 << 0), (0) << 0);
26905
26906         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26907                     0x29b, (0x1 << 0), (0) << 0);
26908
26909         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26910
26911                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26912
26913                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26914
26915         } else {
26916
26917                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26918                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26919                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26920                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26921         }
26922
26923         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26924         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26925                     (0x1 << 2), (0x1 << 2));
26926         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26927                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26928                             (0x1 << 0) | (0x1 << 1), 0);
26929                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26930                             0x8f : 0xa5,
26931                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26932         }
26933
26934         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26935                                          RADIO_MIMO_CORESEL_CORE1 |
26936                                          RADIO_MIMO_CORESEL_CORE2);
26937
26938         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26939                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26940                                                   0, 0, 0,
26941                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26942                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26943                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26944                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26945                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26946                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26947                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26948                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26949                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26950                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26951                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26952                 if (CHSPEC_IS40(pi->radio_chanspec))
26953                         wlc_phy_rfctrl_override_nphy_rev7(
26954                                 pi,
26955                                 (0x1 << 7),
26956                                 2, 0, 0,
26957                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26958                 else
26959                         wlc_phy_rfctrl_override_nphy_rev7(
26960                                 pi,
26961                                 (0x1 << 7),
26962                                 0, 0, 0,
26963                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26964
26965                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26966                                                   0, 0, 0,
26967                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26968                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26969                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26970         } else {
26971                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26972         }
26973
26974         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26975
26976         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26977
26978                 wlc_phy_rfctrlintc_override_nphy(pi,
26979                                                  NPHY_RfctrlIntc_override_TRSW,
26980                                                  0x1, rx_core + 1);
26981         } else {
26982
26983                 if (rx_core == PHY_CORE_0) {
26984                         rx_antval = 0x1;
26985                         tx_antval = 0x8;
26986                 } else {
26987                         rx_antval = 0x4;
26988                         tx_antval = 0x2;
26989                 }
26990
26991                 wlc_phy_rfctrlintc_override_nphy(pi,
26992                                                  NPHY_RfctrlIntc_override_TRSW,
26993                                                  rx_antval, rx_core + 1);
26994                 wlc_phy_rfctrlintc_override_nphy(pi,
26995                                                  NPHY_RfctrlIntc_override_TRSW,
26996                                                  tx_antval, tx_core + 1);
26997         }
26998 }
26999
27000 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
27001 {
27002
27003         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
27004         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
27005                       pi->tx_rx_cal_phy_saveregs[1]);
27006         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
27007                       pi->tx_rx_cal_phy_saveregs[2]);
27008         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
27009         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
27010
27011         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
27012         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
27013         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
27014         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
27015         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27016                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
27017                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
27018                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
27019                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
27020         }
27021
27022         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
27023         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
27024 }
27025
27026 static void
27027 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
27028                                  u16 *rxgain, u8 cal_type)
27029 {
27030
27031         u16 num_samps;
27032         struct phy_iq_est est[PHY_CORE_MAX];
27033         u8 tx_core;
27034         struct nphy_iq_comp save_comp, zero_comp;
27035         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27036             thresh_pwr = 10000;
27037         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27038         bool gainctrl_done = false;
27039         u8 mix_tia_gain = 3;
27040         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27041         s8 curr_gaintbl_index = 3;
27042         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27043         const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27044         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27045         int fine_gain_idx;
27046         s8 txpwrindex;
27047         u16 nphy_rxcal_txgain[2];
27048
27049         if (NREV_GE(pi->pubpi.phy_rev, 7))
27050                 tx_core = rx_core;
27051         else
27052                 tx_core = 1 - rx_core;
27053
27054         num_samps = 1024;
27055         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27056
27057         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27058         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27059         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27060
27061         if (CHSPEC_IS5G(pi->radio_chanspec)) {
27062                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27063                         mix_tia_gain = 3;
27064                 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27065                         mix_tia_gain = 4;
27066                 else
27067                         mix_tia_gain = 6;
27068                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27069                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27070                 else
27071                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27072         } else {
27073                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27074                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27075                 else
27076                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27077         }
27078
27079         do {
27080
27081                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27082                         0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27083                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27084                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27085                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27086                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27087                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27088
27089                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27090                         wlc_phy_rfctrl_override_1tomany_nphy(
27091                                 pi,
27092                                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27093                                 ((lpf_biq1 << 12) |
27094                                  (lpf_biq0 << 8) |
27095                                  (mix_tia_gain << 4) | (lna2 << 2)
27096                                  | lna1), 0x3, 0);
27097                 else
27098                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27099                                                      ((hpvga << 12) |
27100                                                       (lpf_biq1 << 10) |
27101                                                       (lpf_biq0 << 8) |
27102                                                       (mix_tia_gain << 4) |
27103                                                       (lna2 << 2) | lna1), 0x3,
27104                                                      0);
27105
27106                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27107
27108                 if (txpwrindex == -1) {
27109                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27110                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27111                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27112                                                  2, 0x110, 16,
27113                                                  nphy_rxcal_txgain);
27114                 } else {
27115                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27116                                                  false);
27117                 }
27118
27119                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27120                                      NPHY_RXCAL_TONEFREQ_40MHz :
27121                                      NPHY_RXCAL_TONEFREQ_20MHz,
27122                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27123
27124                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27125                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27126                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27127                 curr_pwr = i_pwr + q_pwr;
27128
27129                 switch (gainctrl_dirn) {
27130                 case NPHY_RXCAL_GAIN_INIT:
27131                         if (curr_pwr > thresh_pwr) {
27132                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27133                                 prev_gaintbl_index = curr_gaintbl_index;
27134                                 curr_gaintbl_index--;
27135                         } else {
27136                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27137                                 prev_gaintbl_index = curr_gaintbl_index;
27138                                 curr_gaintbl_index++;
27139                         }
27140                         break;
27141
27142                 case NPHY_RXCAL_GAIN_UP:
27143                         if (curr_pwr > thresh_pwr) {
27144                                 gainctrl_done = true;
27145                                 optim_pwr = prev_pwr;
27146                                 optim_gaintbl_index = prev_gaintbl_index;
27147                         } else {
27148                                 prev_gaintbl_index = curr_gaintbl_index;
27149                                 curr_gaintbl_index++;
27150                         }
27151                         break;
27152
27153                 case NPHY_RXCAL_GAIN_DOWN:
27154                         if (curr_pwr > thresh_pwr) {
27155                                 prev_gaintbl_index = curr_gaintbl_index;
27156                                 curr_gaintbl_index--;
27157                         } else {
27158                                 gainctrl_done = true;
27159                                 optim_pwr = curr_pwr;
27160                                 optim_gaintbl_index = curr_gaintbl_index;
27161                         }
27162                         break;
27163
27164                 default:
27165                         break;
27166                 }
27167
27168                 if ((curr_gaintbl_index < 0) ||
27169                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27170                         gainctrl_done = true;
27171                         optim_pwr = curr_pwr;
27172                         optim_gaintbl_index = prev_gaintbl_index;
27173                 } else {
27174                         prev_pwr = curr_pwr;
27175                 }
27176
27177                 wlc_phy_stopplayback_nphy(pi);
27178         } while (!gainctrl_done);
27179
27180         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27181         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27182         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27183         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27184         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27185         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27186
27187         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27188         delta_pwr = desired_log2_pwr - actual_log2_pwr;
27189
27190         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27191                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27192
27193                 if (fine_gain_idx + (int)lpf_biq0 > 10)
27194                         lpf_biq1 = 10 - lpf_biq0;
27195                 else
27196                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
27197
27198                 wlc_phy_rfctrl_override_1tomany_nphy(
27199                         pi,
27200                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27201                         ((lpf_biq1 << 12) |
27202                          (lpf_biq0 << 8) |
27203                          (mix_tia_gain << 4) |
27204                          (lna2 << 2) | lna1), 0x3,
27205                         0);
27206         } else {
27207                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27208                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27209                                              ((hpvga << 12) |
27210                                               (lpf_biq1 << 10) |
27211                                               (lpf_biq0 << 8) |
27212                                               (mix_tia_gain << 4) |
27213                                               (lna2 << 2) |
27214                                               lna1), 0x3, 0);
27215         }
27216
27217         if (rxgain != NULL) {
27218                 *rxgain++ = lna1;
27219                 *rxgain++ = lna2;
27220                 *rxgain++ = mix_tia_gain;
27221                 *rxgain++ = lpf_biq0;
27222                 *rxgain++ = lpf_biq1;
27223                 *rxgain = hpvga;
27224         }
27225
27226         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27227 }
27228
27229 static void
27230 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27231                             u8 cal_type)
27232 {
27233         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27234 }
27235
27236 static u8
27237 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27238 {
27239         u32 target_bws[2] = { 9500, 21000 };
27240         u32 ref_tones[2] = { 3000, 6000 };
27241         u32 target_bw, ref_tone;
27242
27243         u32 target_pwr_ratios[2] = { 28606, 18468 };
27244         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27245
27246         u16 start_rccal_ovr_val = 128;
27247         u16 txlpf_rccal_lpc_ovr_val = 128;
27248         u16 rxlpf_rccal_hpc_ovr_val = 159;
27249
27250         u16 orig_txlpf_rccal_lpc_ovr_val;
27251         u16 orig_rxlpf_rccal_hpc_ovr_val;
27252         u16 radio_addr_offset_rx;
27253         u16 radio_addr_offset_tx;
27254         u16 orig_dcBypass;
27255         u16 orig_RxStrnFilt40Num[6];
27256         u16 orig_RxStrnFilt40Den[4];
27257         u16 orig_rfctrloverride[2];
27258         u16 orig_rfctrlauxreg[2];
27259         u16 orig_rfctrlrssiothers;
27260         u16 tx_lpf_bw = 4;
27261
27262         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27263         u16 lpf_hpc = 7, hpvga_hpc = 7;
27264
27265         s8 rccal_stepsize;
27266         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27267         u32 ref_iq_vals = 0, target_iq_vals = 0;
27268         u16 num_samps, log_num_samps = 10;
27269         struct phy_iq_est est[PHY_CORE_MAX];
27270
27271         if (NREV_GE(pi->pubpi.phy_rev, 7))
27272                 return 0;
27273
27274         num_samps = (1 << log_num_samps);
27275
27276         if (CHSPEC_IS40(pi->radio_chanspec)) {
27277                 target_bw = target_bws[1];
27278                 target_pwr_ratio = target_pwr_ratios[1];
27279                 ref_tone = ref_tones[1];
27280                 rx_lpf_bw = rx_lpf_bws[1];
27281         } else {
27282                 target_bw = target_bws[0];
27283                 target_pwr_ratio = target_pwr_ratios[0];
27284                 ref_tone = ref_tones[0];
27285                 rx_lpf_bw = rx_lpf_bws[0];
27286         }
27287
27288         if (core_idx == 0) {
27289                 radio_addr_offset_rx = RADIO_2056_RX0;
27290                 radio_addr_offset_tx =
27291                         (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27292         } else {
27293                 radio_addr_offset_rx = RADIO_2056_RX1;
27294                 radio_addr_offset_tx =
27295                         (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27296         }
27297
27298         orig_txlpf_rccal_lpc_ovr_val =
27299                 read_radio_reg(pi,
27300                                (RADIO_2056_TX_TXLPF_RCCAL |
27301                                 radio_addr_offset_tx));
27302         orig_rxlpf_rccal_hpc_ovr_val =
27303                 read_radio_reg(pi,
27304                                (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27305                                 radio_addr_offset_rx));
27306
27307         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27308
27309         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27310         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27311         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27312         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27313         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27314         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27315         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27316         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27317         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27318         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27319
27320         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27321         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27322         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27323         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27324         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27325
27326         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27327                         txlpf_rccal_lpc_ovr_val);
27328
27329         write_radio_reg(pi,
27330                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27331                         rxlpf_rccal_hpc_ovr_val);
27332
27333         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27334
27335         write_phy_reg(pi, 0x267, 0x02d4);
27336         write_phy_reg(pi, 0x268, 0x0000);
27337         write_phy_reg(pi, 0x269, 0x0000);
27338         write_phy_reg(pi, 0x26a, 0x0000);
27339         write_phy_reg(pi, 0x26b, 0x0000);
27340         write_phy_reg(pi, 0x26c, 0x02d4);
27341         write_phy_reg(pi, 0x26d, 0x0000);
27342         write_phy_reg(pi, 0x26e, 0x0000);
27343         write_phy_reg(pi, 0x26f, 0x0000);
27344         write_phy_reg(pi, 0x270, 0x0000);
27345
27346         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27347         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27348         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27349         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27350
27351         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27352                     (0x7 << 10), (tx_lpf_bw << 10));
27353         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27354                     (0x7 << 0), (hpvga_hpc << 0));
27355         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27356                     (0x7 << 4), (lpf_hpc << 4));
27357         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27358                     (0x7 << 8), (rx_lpf_bw << 8));
27359
27360         rccal_stepsize = 16;
27361         rccal_val = start_rccal_ovr_val + rccal_stepsize;
27362
27363         while (rccal_stepsize >= 0) {
27364                 write_radio_reg(pi,
27365                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27366                                  radio_addr_offset_rx), rccal_val);
27367
27368                 if (rccal_stepsize == 16) {
27369
27370                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27371                                              0, 1, false);
27372                         udelay(2);
27373
27374                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27375
27376                         if (core_idx == 0)
27377                                 ref_iq_vals =
27378                                         max_t(u32, (est[0].i_pwr +
27379                                                     est[0].q_pwr) >>
27380                                               (log_num_samps + 1),
27381                                               1);
27382                         else
27383                                 ref_iq_vals =
27384                                         max_t(u32, (est[1].i_pwr +
27385                                                     est[1].q_pwr) >>
27386                                               (log_num_samps + 1),
27387                                               1);
27388
27389                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27390                                              0, 1, false);
27391                         udelay(2);
27392                 }
27393
27394                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27395
27396                 if (core_idx == 0)
27397                         target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27398                                          (log_num_samps + 1);
27399                 else
27400                         target_iq_vals =
27401                                 (est[1].i_pwr +
27402                                  est[1].q_pwr) >> (log_num_samps + 1);
27403
27404                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27405
27406                 if (rccal_stepsize == 0)
27407                         rccal_stepsize--;
27408                 else if (rccal_stepsize == 1) {
27409                         last_rccal_val = rccal_val;
27410                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27411                         last_pwr_ratio = pwr_ratio;
27412                         rccal_stepsize--;
27413                 } else {
27414                         rccal_stepsize = (rccal_stepsize >> 1);
27415                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27416                                       rccal_stepsize : (-rccal_stepsize));
27417                 }
27418
27419                 if (rccal_stepsize == -1) {
27420                         best_rccal_val =
27421                                 (abs((int)last_pwr_ratio -
27422                                      (int)target_pwr_ratio) <
27423                                  abs((int)pwr_ratio -
27424                                      (int)target_pwr_ratio)) ? last_rccal_val :
27425                                 rccal_val;
27426
27427                         if (CHSPEC_IS40(pi->radio_chanspec)) {
27428                                 if ((best_rccal_val > 140)
27429                                     || (best_rccal_val < 135))
27430                                         best_rccal_val = 138;
27431                         } else {
27432                                 if ((best_rccal_val > 142)
27433                                     || (best_rccal_val < 137))
27434                                         best_rccal_val = 140;
27435                         }
27436
27437                         write_radio_reg(pi,
27438                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27439                                          radio_addr_offset_rx), best_rccal_val);
27440                 }
27441         }
27442
27443         wlc_phy_stopplayback_nphy(pi);
27444
27445         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27446                         orig_txlpf_rccal_lpc_ovr_val);
27447         write_radio_reg(pi,
27448                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27449                         orig_rxlpf_rccal_hpc_ovr_val);
27450
27451         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27452
27453         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27454         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27455         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27456         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27457         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27458         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27459         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27460         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27461         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27462         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27463
27464         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27465         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27466         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27467         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27468         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27469
27470         pi->nphy_anarxlpf_adjusted = false;
27471
27472         return best_rccal_val - 0x80;
27473 }
27474
27475 #define WAIT_FOR_SCOPE  4000
27476 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27477                                       struct nphy_txgains target_gain,
27478                                       u8 cal_type, bool debug)
27479 {
27480         u16 orig_BBConfig;
27481         u8 core_no, rx_core;
27482         u8 best_rccal[2];
27483         u16 gain_save[2];
27484         u16 cal_gain[2];
27485         struct nphy_iqcal_params cal_params[2];
27486         u8 rxcore_state;
27487         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27488         s8 txlpf_idac;
27489         bool phyhang_avoid_state = false;
27490         bool skip_rxiqcal = false;
27491
27492         orig_BBConfig = read_phy_reg(pi, 0x01);
27493         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27494
27495         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27496
27497         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27498                 phyhang_avoid_state = pi->phyhang_avoid;
27499                 pi->phyhang_avoid = false;
27500         }
27501
27502         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27503
27504         for (core_no = 0; core_no <= 1; core_no++) {
27505                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27506                                               &cal_params[core_no]);
27507                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27508         }
27509
27510         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27511
27512         rxcore_state = wlc_phy_rxcore_getstate_nphy(
27513                 (struct brcms_phy_pub *) pi);
27514
27515         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27516
27517                 skip_rxiqcal =
27518                         ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27519
27520                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27521
27522                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27523
27524                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27525
27526                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27527
27528                         wlc_phy_tx_tone_nphy(pi,
27529                                              (CHSPEC_IS40(
27530                                                       pi->radio_chanspec)) ?
27531                                              NPHY_RXCAL_TONEFREQ_40MHz :
27532                                              NPHY_RXCAL_TONEFREQ_20MHz,
27533                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
27534                                              false);
27535
27536                         if (debug)
27537                                 mdelay(WAIT_FOR_SCOPE);
27538
27539                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27540                         wlc_phy_stopplayback_nphy(pi);
27541                 }
27542
27543                 if (((cal_type == 1) || (cal_type == 2))
27544                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
27545
27546                         if (rx_core == PHY_CORE_1) {
27547
27548                                 if (rxcore_state == 1)
27549                                         wlc_phy_rxcore_setstate_nphy(
27550                                                 (struct brcms_phy_pub *) pi, 3);
27551
27552                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27553                                                             1);
27554
27555                                 best_rccal[rx_core] =
27556                                         wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27557                                 pi->nphy_rccal_value = best_rccal[rx_core];
27558
27559                                 if (rxcore_state == 1)
27560                                         wlc_phy_rxcore_setstate_nphy(
27561                                                 (struct brcms_phy_pub *) pi,
27562                                                 rxcore_state);
27563                         }
27564                 }
27565
27566                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27567
27568                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27569                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27570         }
27571
27572         if ((cal_type == 1) || (cal_type == 2)) {
27573
27574                 best_rccal[0] = best_rccal[1];
27575                 write_radio_reg(pi,
27576                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27577                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27578
27579                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27580                         rxlpf_rccal_hpc =
27581                                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27582                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27583
27584                         if (PHY_IPA(pi)) {
27585                                 txlpf_rccal_lpc +=
27586                                         (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27587                                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27588                                              0x0e : 0x13;
27589                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27590                                                  TXLPF_IDAC_4, txlpf_idac);
27591                         }
27592
27593                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27594                                               0);
27595                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27596                                               0);
27597
27598                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27599                                              ((rx_core ==
27600                                                PHY_CORE_0) ? RADIO_2056_RX0 :
27601                                               RADIO_2056_RX1)),
27602                                         (rxlpf_rccal_hpc | 0x80));
27603
27604                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27605                                              ((rx_core ==
27606                                                PHY_CORE_0) ? RADIO_2056_TX0 :
27607                                               RADIO_2056_TX1)),
27608                                         (txlpf_rccal_lpc | 0x80));
27609                 }
27610         }
27611
27612         write_phy_reg(pi, 0x01, orig_BBConfig);
27613
27614         wlc_phy_resetcca_nphy(pi);
27615
27616         if (NREV_GE(pi->pubpi.phy_rev, 7))
27617                 wlc_phy_rfctrl_override_1tomany_nphy(
27618                         pi,
27619                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27620                         0, 0x3, 1);
27621         else
27622                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27623
27624         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27625
27626         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27627                                  gain_save);
27628
27629         if (NREV_GE(pi->pubpi.phy_rev, 4))
27630                 pi->phyhang_avoid = phyhang_avoid_state;
27631
27632         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27633
27634         return 0;
27635 }
27636
27637 static int
27638 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27639                            struct nphy_txgains target_gain, bool debug)
27640 {
27641         struct phy_iq_est est[PHY_CORE_MAX];
27642         u8 core_num, rx_core, tx_core;
27643         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27644         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27645         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27646         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27647         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27648         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27649         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27650         u16 num_samps;
27651         u32 i_pwr, q_pwr, tot_pwr[3];
27652         u8 gain_pass, use_hpf_num;
27653         u16 mask, val1, val2;
27654         u16 core_no;
27655         u16 gain_save[2];
27656         u16 cal_gain[2];
27657         struct nphy_iqcal_params cal_params[2];
27658         u8 phy_bw;
27659         int bcmerror = 0;
27660         bool first_playtone = true;
27661
27662         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27663
27664         if (NREV_LT(pi->pubpi.phy_rev, 2))
27665                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27666
27667         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27668
27669         for (core_no = 0; core_no <= 1; core_no++) {
27670                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27671                                               &cal_params[core_no]);
27672                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27673         }
27674
27675         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27676
27677         num_samps = 1024;
27678         desired_log2_pwr = 13;
27679
27680         for (core_num = 0; core_num < 2; core_num++) {
27681
27682                 rx_core = core_num;
27683                 tx_core = 1 - core_num;
27684
27685                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27686                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27687                                                 0xa6 : 0xa7);
27688                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27689                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27690                                                  0x91 : 0x92);
27691                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27692                                                  0x91 : 0x92);
27693
27694                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27695                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27696
27697                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27698                            ((0x1 << 1) | (0x1 << 2)));
27699                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27700
27701                 if (((pi->nphy_rxcalparams) & 0xff000000))
27702                         write_phy_reg(pi,
27703                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27704                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27705                                         0x140 : 0x110));
27706                 else
27707                         write_phy_reg(pi,
27708                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27709                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27710                                        0x180 : 0x120));
27711
27712                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27713                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27714                                0x114));
27715
27716                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27717                 if (rx_core == PHY_CORE_0) {
27718                         val1 = RADIO_2055_COUPLE_RX_MASK;
27719                         val2 = RADIO_2055_COUPLE_TX_MASK;
27720                 } else {
27721                         val1 = RADIO_2055_COUPLE_TX_MASK;
27722                         val2 = RADIO_2055_COUPLE_RX_MASK;
27723                 }
27724
27725                 if ((pi->nphy_rxcalparams & 0x10000)) {
27726                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27727                                       val1);
27728                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27729                                       val2);
27730                 }
27731
27732                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27733
27734                         if (debug)
27735                                 mdelay(WAIT_FOR_SCOPE);
27736
27737                         if (gain_pass < 3) {
27738                                 curr_lna = lna_vals[gain_pass];
27739                                 curr_hpf1 = hpf1_vals[gain_pass];
27740                                 curr_hpf2 = hpf2_vals[gain_pass];
27741                         } else {
27742
27743                                 if (tot_pwr[1] > 10000) {
27744                                         curr_lna = lna_vals[2];
27745                                         curr_hpf1 = hpf1_vals[2];
27746                                         curr_hpf2 = hpf2_vals[2];
27747                                         use_hpf_num = 1;
27748                                         curr_hpf = curr_hpf1;
27749                                         actual_log2_pwr =
27750                                                 wlc_phy_nbits(tot_pwr[2]);
27751                                 } else {
27752                                         if (tot_pwr[0] > 10000) {
27753                                                 curr_lna = lna_vals[1];
27754                                                 curr_hpf1 = hpf1_vals[1];
27755                                                 curr_hpf2 = hpf2_vals[1];
27756                                                 use_hpf_num = 1;
27757                                                 curr_hpf = curr_hpf1;
27758                                                 actual_log2_pwr =
27759                                                         wlc_phy_nbits(
27760                                                                 tot_pwr[1]);
27761                                         } else {
27762                                                 curr_lna = lna_vals[0];
27763                                                 curr_hpf1 = hpf1_vals[0];
27764                                                 curr_hpf2 = hpf2_vals[0];
27765                                                 use_hpf_num = 2;
27766                                                 curr_hpf = curr_hpf2;
27767                                                 actual_log2_pwr =
27768                                                         wlc_phy_nbits(
27769                                                                 tot_pwr[0]);
27770                                         }
27771                                 }
27772
27773                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27774                                 curr_hpf += hpf_change;
27775                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27776                                 if (use_hpf_num == 1)
27777                                         curr_hpf1 = curr_hpf;
27778                                 else
27779                                         curr_hpf2 = curr_hpf;
27780                         }
27781
27782                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27783                                                      ((curr_hpf2 << 8) |
27784                                                       (curr_hpf1 << 4) |
27785                                                       (curr_lna << 2)), 0x3, 0);
27786                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27787
27788                         wlc_phy_stopplayback_nphy(pi);
27789
27790                         if (first_playtone) {
27791                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27792                                                 (u16) (pi->nphy_rxcalparams &
27793                                                        0xffff), 0, 0, true);
27794                                 first_playtone = false;
27795                         } else {
27796                                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27797                                           40 : 20;
27798                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27799                                                         0, 0, 0, true);
27800                         }
27801
27802                         if (bcmerror == 0) {
27803                                 if (gain_pass < 3) {
27804
27805                                         wlc_phy_rx_iq_est_nphy(pi, est,
27806                                                                num_samps, 32,
27807                                                                0);
27808                                         i_pwr = (est[rx_core].i_pwr +
27809                                                  num_samps / 2) / num_samps;
27810                                         q_pwr = (est[rx_core].q_pwr +
27811                                                  num_samps / 2) / num_samps;
27812                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
27813                                 } else {
27814
27815                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
27816                                                                      (1 <<
27817                                                                       rx_core));
27818                                 }
27819
27820                                 wlc_phy_stopplayback_nphy(pi);
27821                         }
27822
27823                         if (bcmerror != 0)
27824                                 break;
27825                 }
27826
27827                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27828                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27829
27830                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27831                               0x92, orig_RfctrlIntcTx);
27832                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27833                               0x92, orig_RfctrlIntcRx);
27834                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27835                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27836                               0xa7, orig_AfectrlCore);
27837                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27838
27839                 if (bcmerror != 0)
27840                         break;
27841         }
27842
27843         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27844         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27845
27846         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27847                                  gain_save);
27848
27849         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27850
27851         return bcmerror;
27852 }
27853
27854 int
27855 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27856                       u8 cal_type, bool debug)
27857 {
27858         if (NREV_GE(pi->pubpi.phy_rev, 7))
27859                 cal_type = 0;
27860
27861         if (NREV_GE(pi->pubpi.phy_rev, 3))
27862                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27863                                                   debug);
27864         else
27865                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27866 }
27867
27868 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27869 {
27870         uint core;
27871         u32 txgain;
27872         u16 rad_gain, dac_gain, bbmult, m1m2;
27873         u8 txpi[2], chan_freq_range;
27874         s32 rfpwr_offset;
27875
27876         if (pi->phyhang_avoid)
27877                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27878
27879         if (pi->sh->sromrev < 4) {
27880                 txpi[0] = txpi[1] = 72;
27881         } else {
27882
27883                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27884                 switch (chan_freq_range) {
27885                 case WL_CHAN_FREQ_RANGE_2G:
27886                         txpi[0] = pi->nphy_txpid2g[0];
27887                         txpi[1] = pi->nphy_txpid2g[1];
27888                         break;
27889                 case WL_CHAN_FREQ_RANGE_5GL:
27890                         txpi[0] = pi->nphy_txpid5gl[0];
27891                         txpi[1] = pi->nphy_txpid5gl[1];
27892                         break;
27893                 case WL_CHAN_FREQ_RANGE_5GM:
27894                         txpi[0] = pi->nphy_txpid5g[0];
27895                         txpi[1] = pi->nphy_txpid5g[1];
27896                         break;
27897                 case WL_CHAN_FREQ_RANGE_5GH:
27898                         txpi[0] = pi->nphy_txpid5gh[0];
27899                         txpi[1] = pi->nphy_txpid5gh[1];
27900                         break;
27901                 default:
27902                         txpi[0] = txpi[1] = 91;
27903                         break;
27904                 }
27905         }
27906
27907         if (NREV_GE(pi->pubpi.phy_rev, 7))
27908                 txpi[0] = txpi[1] = 30;
27909         else if (NREV_GE(pi->pubpi.phy_rev, 3))
27910                 txpi[0] = txpi[1] = 40;
27911
27912         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27913
27914                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27915                     (txpi[1] < 40) || (txpi[1] > 100))
27916                         txpi[0] = txpi[1] = 91;
27917         }
27918
27919         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27920         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27921         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27922         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27923
27924         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27925                 uint phyrev = pi->pubpi.phy_rev;
27926
27927                 if (NREV_GE(phyrev, 3)) {
27928                         if (PHY_IPA(pi)) {
27929                                 u32 *tx_gaintbl =
27930                                         wlc_phy_get_ipa_gaintbl_nphy(pi);
27931                                 txgain = tx_gaintbl[txpi[core]];
27932                         } else {
27933                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27934                                         if (NREV_IS(phyrev, 3)) {
27935                                                 txgain =
27936                                                       nphy_tpc_5GHz_txgain_rev3
27937                                                                    [txpi[core]];
27938                                         } else if (NREV_IS(phyrev, 4)) {
27939                                                 txgain = (
27940                                                   pi->srom_fem5g.extpagain ==
27941                                                   3) ?
27942                                                   nphy_tpc_5GHz_txgain_HiPwrEPA
27943                                                  [txpi[core]] :
27944                                                  nphy_tpc_5GHz_txgain_rev4
27945                                                  [txpi[core]];
27946                                         } else {
27947                                                 txgain =
27948                                                       nphy_tpc_5GHz_txgain_rev5
27949                                                                    [txpi[core]];
27950                                         }
27951                                 } else {
27952                                         if (NREV_GE(phyrev, 5) &&
27953                                             (pi->srom_fem2g.extpagain == 3)) {
27954                                                 txgain =
27955                                                         nphy_tpc_txgain_HiPwrEPA
27956                                                         [txpi[core]];
27957                                         } else {
27958                                                 txgain = nphy_tpc_txgain_rev3
27959                                                          [txpi[core]];
27960                                         }
27961                                 }
27962                         }
27963                 } else {
27964                         txgain = nphy_tpc_txgain[txpi[core]];
27965                 }
27966
27967                 if (NREV_GE(phyrev, 3))
27968                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27969                 else
27970                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27971
27972                 if (NREV_GE(phyrev, 7))
27973                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27974                 else
27975                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27976
27977                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27978
27979                 if (NREV_GE(phyrev, 3))
27980                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27981                                          0xa5), (0x1 << 8), (0x1 << 8));
27982                 else
27983                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27984
27985                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27986
27987                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27988                                          &rad_gain);
27989
27990                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27991                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27992                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27993                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27994
27995                 if (PHY_IPA(pi)) {
27996                         wlc_phy_table_read_nphy(pi,
27997                                                 (core ==
27998                                                  PHY_CORE_0 ?
27999                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28000                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
28001                                                 576 + txpi[core], 32,
28002                                                 &rfpwr_offset);
28003
28004                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28005                                     0x29b, (0x1ff << 4),
28006                                     ((s16) rfpwr_offset) << 4);
28007
28008                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28009                                     0x29b, (0x1 << 2), (1) << 2);
28010
28011                 }
28012         }
28013
28014         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
28015
28016         if (pi->phyhang_avoid)
28017                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28018 }
28019
28020 static void
28021 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
28022                                 u8 tmp_max_pwr, u8 rate_start,
28023                                 u8 rate_end)
28024 {
28025         u8 rate;
28026         u8 word_num, nibble_num;
28027         u8 tmp_nibble;
28028
28029         for (rate = rate_start; rate <= rate_end; rate++) {
28030                 word_num = (rate - rate_start) >> 2;
28031                 nibble_num = (rate - rate_start) & 0x3;
28032                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
28033
28034                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
28035         }
28036 }
28037
28038 static void
28039 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
28040                             u8 rate_start, u8 rate_end)
28041 {
28042         u8 rate;
28043
28044         for (rate = rate_start; rate <= rate_end; rate++)
28045                 srom_max[rate] -= 2 * pwr_offset;
28046 }
28047
28048 void
28049 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28050                                 u8 rate_mcs_end, u8 rate_ofdm_start)
28051 {
28052         u8 rate1, rate2;
28053
28054         rate2 = rate_ofdm_start;
28055         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28056                 power[rate1] = power[rate2];
28057                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28058         }
28059         power[rate_mcs_end] = power[rate_mcs_end - 1];
28060 }
28061
28062 void
28063 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28064                                 u8 rate_ofdm_end, u8 rate_mcs_start)
28065 {
28066         u8 rate1, rate2;
28067
28068         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28069              rate1 <= rate_ofdm_end; rate1++, rate2++) {
28070                 power[rate1] = power[rate2];
28071                 if (rate1 == rate_ofdm_start)
28072                         power[++rate1] = power[rate2];
28073         }
28074 }
28075
28076 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28077 {
28078         uint rate1, rate2, band_num;
28079         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28080         u8 tmp_max_pwr = 0;
28081         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28082         u8 *tx_srom_max_rate = NULL;
28083
28084         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28085              band_num++) {
28086                 switch (band_num) {
28087                 case 0:
28088
28089                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28090                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
28091
28092                         pwr_offsets1[0] = pi->cck2gpo;
28093                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28094                                                         pwr_offsets1,
28095                                                         tmp_max_pwr,
28096                                                         TXP_FIRST_CCK,
28097                                                         TXP_LAST_CCK);
28098
28099                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28100                         pwr_offsets1[1] =
28101                                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28102
28103                         pwr_offsets2 = pi->mcs2gpo;
28104
28105                         tmp_cddpo = pi->cdd2gpo;
28106                         tmp_stbcpo = pi->stbc2gpo;
28107                         tmp_bw40po = pi->bw402gpo;
28108
28109                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28110                         break;
28111                 case 1:
28112
28113                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28114                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28115
28116                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28117                         pwr_offsets1[1] =
28118                                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28119
28120                         pwr_offsets2 = pi->mcs5gpo;
28121
28122                         tmp_cddpo = pi->cdd5gpo;
28123                         tmp_stbcpo = pi->stbc5gpo;
28124                         tmp_bw40po = pi->bw405gpo;
28125
28126                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28127                         break;
28128                 case 2:
28129
28130                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28131                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28132
28133                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28134                         pwr_offsets1[1] =
28135                                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28136
28137                         pwr_offsets2 = pi->mcs5glpo;
28138
28139                         tmp_cddpo = pi->cdd5glpo;
28140                         tmp_stbcpo = pi->stbc5glpo;
28141                         tmp_bw40po = pi->bw405glpo;
28142
28143                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28144                         break;
28145                 case 3:
28146
28147                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28148                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28149
28150                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28151                         pwr_offsets1[1] =
28152                                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28153
28154                         pwr_offsets2 = pi->mcs5ghpo;
28155
28156                         tmp_cddpo = pi->cdd5ghpo;
28157                         tmp_stbcpo = pi->stbc5ghpo;
28158                         tmp_bw40po = pi->bw405ghpo;
28159
28160                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28161                         break;
28162                 }
28163
28164                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28165                                                 tmp_max_pwr, TXP_FIRST_OFDM,
28166                                                 TXP_LAST_OFDM);
28167
28168                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28169                                                 TXP_FIRST_MCS_20_SISO,
28170                                                 TXP_LAST_MCS_20_SISO,
28171                                                 TXP_FIRST_OFDM);
28172
28173                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28174                                                 tmp_max_pwr,
28175                                                 TXP_FIRST_MCS_20_CDD,
28176                                                 TXP_LAST_MCS_20_CDD);
28177
28178                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28179                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28180                                                     TXP_FIRST_MCS_20_CDD,
28181                                                     TXP_LAST_MCS_20_CDD);
28182
28183                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28184                                                 TXP_FIRST_OFDM_20_CDD,
28185                                                 TXP_LAST_OFDM_20_CDD,
28186                                                 TXP_FIRST_MCS_20_CDD);
28187
28188                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28189                                                 tmp_max_pwr,
28190                                                 TXP_FIRST_MCS_20_STBC,
28191                                                 TXP_LAST_MCS_20_STBC);
28192
28193                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28194                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28195                                                     tmp_stbcpo,
28196                                                     TXP_FIRST_MCS_20_STBC,
28197                                                     TXP_LAST_MCS_20_STBC);
28198
28199                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28200                                                 &pwr_offsets2[2], tmp_max_pwr,
28201                                                 TXP_FIRST_MCS_20_SDM,
28202                                                 TXP_LAST_MCS_20_SDM);
28203
28204                 if (NPHY_IS_SROM_REINTERPRET) {
28205
28206                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28207                                                         &pwr_offsets2[4],
28208                                                         tmp_max_pwr,
28209                                                         TXP_FIRST_MCS_40_SISO,
28210                                                         TXP_LAST_MCS_40_SISO);
28211
28212                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28213                                                         TXP_FIRST_OFDM_40_SISO,
28214                                                         TXP_LAST_OFDM_40_SISO,
28215                                                         TXP_FIRST_MCS_40_SISO);
28216
28217                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28218                                                         &pwr_offsets2[4],
28219                                                         tmp_max_pwr,
28220                                                         TXP_FIRST_MCS_40_CDD,
28221                                                         TXP_LAST_MCS_40_CDD);
28222
28223                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28224                                                     TXP_FIRST_MCS_40_CDD,
28225                                                     TXP_LAST_MCS_40_CDD);
28226
28227                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28228                                                         TXP_FIRST_OFDM_40_CDD,
28229                                                         TXP_LAST_OFDM_40_CDD,
28230                                                         TXP_FIRST_MCS_40_CDD);
28231
28232                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28233                                                         &pwr_offsets2[4],
28234                                                         tmp_max_pwr,
28235                                                         TXP_FIRST_MCS_40_STBC,
28236                                                         TXP_LAST_MCS_40_STBC);
28237
28238                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28239                                                     tmp_stbcpo,
28240                                                     TXP_FIRST_MCS_40_STBC,
28241                                                     TXP_LAST_MCS_40_STBC);
28242
28243                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28244                                                         &pwr_offsets2[6],
28245                                                         tmp_max_pwr,
28246                                                         TXP_FIRST_MCS_40_SDM,
28247                                                         TXP_LAST_MCS_40_SDM);
28248                 } else {
28249
28250                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28251                                      TXP_FIRST_OFDM;
28252                              rate1 <= TXP_LAST_MCS_40_SDM;
28253                              rate1++, rate2++)
28254                                 tx_srom_max_rate[rate1] =
28255                                         tx_srom_max_rate[rate2];
28256                 }
28257
28258                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28259                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28260                                                     tmp_bw40po,
28261                                                     TXP_FIRST_OFDM_40_SISO,
28262                                                     TXP_LAST_MCS_40_SDM);
28263
28264                 tx_srom_max_rate[TXP_MCS_32] =
28265                         tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28266         }
28267
28268         return;
28269 }
28270
28271 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28272 {
28273         u8 tx_pwr_ctrl_state;
28274         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28275         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28276
28277         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28278
28279         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28280                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28281                 (void)R_REG(&pi->regs->maccontrol);
28282                 udelay(1);
28283         }
28284
28285         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28286
28287         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28288                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28289 }
28290
28291 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28292 {
28293         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28294                                             (0x1 << 14) | (0x1 << 13));
28295 }
28296
28297 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28298 {
28299         u16 tmp;
28300         u16 pwr_idx[2];
28301
28302         if (wlc_phy_txpwr_ison_nphy(pi)) {
28303                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28304                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28305
28306                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28307         } else {
28308                 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28309                         << 8) |
28310                         (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28311         }
28312
28313         return tmp;
28314 }
28315
28316 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28317 {
28318         if (PHY_IPA(pi)
28319             && (pi->nphy_force_papd_cal
28320                 || (wlc_phy_txpwr_ison_nphy(pi)
28321                     &&
28322                     (((u32)
28323                       abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28324                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28325                      || ((u32)
28326                          abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28327                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28328                 wlc_phy_a4(pi, true);
28329 }
28330
28331 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28332 {
28333         u16 mask = 0, val = 0, ishw = 0;
28334         u8 ctr;
28335         uint core;
28336         u32 tbl_offset;
28337         u32 tbl_len;
28338         u16 regval[84];
28339
28340         if (pi->phyhang_avoid)
28341                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28342
28343         switch (ctrl_type) {
28344         case PHY_TPC_HW_OFF:
28345         case PHY_TPC_HW_ON:
28346                 pi->nphy_txpwrctrl = ctrl_type;
28347                 break;
28348         default:
28349                 break;
28350         }
28351
28352         if (ctrl_type == PHY_TPC_HW_OFF) {
28353                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28354
28355                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28356                                 for (core = 0; core < pi->pubpi.phy_corenum;
28357                                      core++)
28358                                         pi->nphy_txpwr_idx[core] =
28359                                                 wlc_phy_txpwr_idx_cur_get_nphy(
28360                                                         pi,
28361                                                         (u8) core);
28362                         }
28363
28364                 }
28365
28366                 tbl_len = 84;
28367                 tbl_offset = 64;
28368                 for (ctr = 0; ctr < tbl_len; ctr++)
28369                         regval[ctr] = 0;
28370                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28371                                          regval);
28372                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28373                                          regval);
28374
28375                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28376                         and_phy_reg(pi, 0x1e7,
28377                                     (u16) (~((0x1 << 15) |
28378                                              (0x1 << 14) | (0x1 << 13))));
28379                 else
28380                         and_phy_reg(pi, 0x1e7,
28381                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28382
28383                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28384                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28385                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28386                 } else {
28387                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28388                 }
28389
28390                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28391                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28392                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28393                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28394
28395                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28396                     pi->bw == WL_CHANSPEC_BW_40)
28397                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28398                                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28399
28400         } else {
28401
28402                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28403                                          8, pi->adj_pwr_tbl_nphy);
28404                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28405                                          8, pi->adj_pwr_tbl_nphy);
28406
28407                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28408                 mask = (0x1 << 14) | (0x1 << 13);
28409                 val = (ishw << 14) | (ishw << 13);
28410
28411                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28412                         mask |= (0x1 << 15);
28413                         val |= (ishw << 15);
28414                 }
28415
28416                 mod_phy_reg(pi, 0x1e7, mask, val);
28417
28418                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28419                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28420                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28421                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28422                         } else {
28423                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28424                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28425                                         mod_phy_reg(pi, 0x222,
28426                                                     (0xff << 0), 0x64);
28427                         }
28428                 }
28429
28430                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28431                         if ((pi->nphy_txpwr_idx[0] != 128)
28432                             && (pi->nphy_txpwr_idx[1] != 128))
28433                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28434                                                                pi->
28435                                                                nphy_txpwr_idx
28436                                                                [0],
28437                                                                pi->
28438                                                                nphy_txpwr_idx
28439                                                                [1]);
28440                 }
28441
28442                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28443                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28444                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28445                 } else {
28446                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28447                 }
28448
28449                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28450                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28451                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28452                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28453
28454                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28455                     pi->bw == WL_CHANSPEC_BW_40)
28456                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28457                                        0x0, BRCM_BAND_ALL);
28458
28459                 if (PHY_IPA(pi)) {
28460                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28461                                     0x29b, (0x1 << 2), (0) << 2);
28462
28463                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28464                                     0x29b, (0x1 << 2), (0) << 2);
28465
28466                 }
28467
28468         }
28469
28470         if (pi->phyhang_avoid)
28471                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28472 }
28473
28474 void
28475 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28476                          bool restore_cals)
28477 {
28478         u8 core, txpwrctl_tbl;
28479         u16 tx_ind0, iq_ind0, lo_ind0;
28480         u16 m1m2;
28481         u32 txgain;
28482         u16 rad_gain, dac_gain;
28483         u8 bbmult;
28484         u32 iqcomp;
28485         u16 iqcomp_a, iqcomp_b;
28486         u32 locomp;
28487         u16 tmpval;
28488         u8 tx_pwr_ctrl_state;
28489         s32 rfpwr_offset;
28490         u16 regval[2];
28491
28492         if (pi->phyhang_avoid)
28493                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28494
28495         tx_ind0 = 192;
28496         iq_ind0 = 320;
28497         lo_ind0 = 448;
28498
28499         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28500
28501                 if ((core_mask & (1 << core)) == 0)
28502                         continue;
28503
28504                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28505
28506                 if (txpwrindex < 0) {
28507                         if (pi->nphy_txpwrindex[core].index < 0)
28508                                 continue;
28509
28510                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28511                                 mod_phy_reg(pi, 0x8f,
28512                                             (0x1 << 8),
28513                                             pi->nphy_txpwrindex[core].
28514                                             AfectrlOverride);
28515                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28516                                             pi->nphy_txpwrindex[core].
28517                                             AfectrlOverride);
28518                         } else {
28519                                 mod_phy_reg(pi, 0xa5,
28520                                             (0x1 << 14),
28521                                             pi->nphy_txpwrindex[core].
28522                                             AfectrlOverride);
28523                         }
28524
28525                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28526                                       0xaa : 0xab,
28527                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28528
28529                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28530                                                  &pi->nphy_txpwrindex[core].
28531                                                  rad_gain);
28532
28533                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28534                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28535                         m1m2 |= ((core == PHY_CORE_0) ?
28536                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28537                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28538                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28539
28540                         if (restore_cals) {
28541                                 wlc_phy_table_write_nphy(
28542                                         pi, 15, 2, (80 + 2 * core), 16,
28543                                         &pi->nphy_txpwrindex[core].iqcomp_a);
28544                                 wlc_phy_table_write_nphy(
28545                                         pi, 15, 1, (85 + core), 16,
28546                                         &pi->nphy_txpwrindex[core].locomp);
28547                                 wlc_phy_table_write_nphy(
28548                                         pi, 15, 1, (93 + core), 16,
28549                                         &pi->nphy_txpwrindex[core].locomp);
28550                         }
28551
28552                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28553
28554                         pi->nphy_txpwrindex[core].index_internal =
28555                                 pi->nphy_txpwrindex[core].index_internal_save;
28556                 } else {
28557
28558                         if (pi->nphy_txpwrindex[core].index < 0) {
28559
28560                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28561                                         mod_phy_reg(pi, 0x8f,
28562                                                     (0x1 << 8),
28563                                                     pi->nphy_txpwrindex[core].
28564                                                     AfectrlOverride);
28565                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28566                                                     pi->nphy_txpwrindex[core].
28567                                                     AfectrlOverride);
28568                                 } else {
28569                                         pi->nphy_txpwrindex[core].
28570                                         AfectrlOverride =
28571                                                 read_phy_reg(pi, 0xa5);
28572                                 }
28573
28574                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28575                                         read_phy_reg(pi, (core == PHY_CORE_0) ?
28576                                                          0xaa : 0xab);
28577
28578                                 wlc_phy_table_read_nphy(pi, 7, 1,
28579                                                         (0x110 + core), 16,
28580                                                         &pi->
28581                                                         nphy_txpwrindex[core].
28582                                                         rad_gain);
28583
28584                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28585                                                         &tmpval);
28586                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28587                                 tmpval &= 0xff;
28588                                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28589
28590                                 wlc_phy_table_read_nphy(pi, 15, 2,
28591                                                         (80 + 2 * core), 16,
28592                                                         &pi->
28593                                                         nphy_txpwrindex[core].
28594                                                         iqcomp_a);
28595
28596                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28597                                                         16,
28598                                                         &pi->
28599                                                         nphy_txpwrindex[core].
28600                                                         locomp);
28601
28602                                 pi->nphy_txpwrindex[core].index_internal_save =
28603                                         pi->nphy_txpwrindex[core].
28604                                         index_internal;
28605                         }
28606
28607                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28608                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28609
28610                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28611                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28612
28613                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28614                                                 (tx_ind0 + txpwrindex), 32,
28615                                                 &txgain);
28616
28617                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28618                                 rad_gain = (txgain >> 16) &
28619                                            ((1 << (32 - 16 + 1)) - 1);
28620                         else
28621                                 rad_gain = (txgain >> 16) &
28622                                            ((1 << (28 - 16 + 1)) - 1);
28623
28624                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28625                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28626
28627                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28628                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28629                                                  0xa5), (0x1 << 8), (0x1 << 8));
28630                         else
28631                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28632
28633                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28634                                       0xaa : 0xab, dac_gain);
28635
28636                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28637                                                  &rad_gain);
28638
28639                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28640                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28641                         m1m2 |= ((core == PHY_CORE_0) ?
28642                                 (bbmult << 8) : (bbmult << 0));
28643
28644                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28645
28646                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28647                                                 (iq_ind0 + txpwrindex), 32,
28648                                                 &iqcomp);
28649                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28650                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28651
28652                         if (restore_cals) {
28653                                 regval[0] = (u16) iqcomp_a;
28654                                 regval[1] = (u16) iqcomp_b;
28655                                 wlc_phy_table_write_nphy(pi, 15, 2,
28656                                                          (80 + 2 * core), 16,
28657                                                          regval);
28658                         }
28659
28660                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28661                                                 (lo_ind0 + txpwrindex), 32,
28662                                                 &locomp);
28663                         if (restore_cals)
28664                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28665                                                          16, &locomp);
28666
28667                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28668                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28669
28670                         if (PHY_IPA(pi)) {
28671                                 wlc_phy_table_read_nphy(pi,
28672                                                 (core == PHY_CORE_0 ?
28673                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28674                                                  NPHY_TBL_ID_CORE2TXPWRCTL),
28675                                                 1, 576 + txpwrindex, 32,
28676                                                 &rfpwr_offset);
28677
28678                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28679                                             0x29b, (0x1ff << 4),
28680                                             ((s16) rfpwr_offset) << 4);
28681
28682                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28683                                             0x29b, (0x1 << 2), (1) << 2);
28684
28685                         }
28686
28687                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28688                 }
28689
28690                 pi->nphy_txpwrindex[core].index = txpwrindex;
28691         }
28692
28693         if (pi->phyhang_avoid)
28694                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28695 }
28696
28697 void
28698 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28699                                    u8 txp_rate_idx)
28700 {
28701         u8 chan_freq_range;
28702
28703         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28704         switch (chan_freq_range) {
28705         case WL_CHAN_FREQ_RANGE_2G:
28706                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28707                 break;
28708         case WL_CHAN_FREQ_RANGE_5GM:
28709                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28710                 break;
28711         case WL_CHAN_FREQ_RANGE_5GL:
28712                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28713                 break;
28714         case WL_CHAN_FREQ_RANGE_5GH:
28715                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28716                 break;
28717         default:
28718                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28719                 break;
28720         }
28721
28722         return;
28723 }
28724
28725 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28726 {
28727         u16 clip_off[] = { 0xffff, 0xffff };
28728
28729         if (enable) {
28730                 if (pi->nphy_deaf_count == 0) {
28731                         pi->classifier_state =
28732                                 wlc_phy_classifier_nphy(pi, 0, 0);
28733                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28734                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28735                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
28736                 }
28737
28738                 pi->nphy_deaf_count++;
28739
28740                 wlc_phy_resetcca_nphy(pi);
28741
28742         } else {
28743                 pi->nphy_deaf_count--;
28744
28745                 if (pi->nphy_deaf_count == 0) {
28746                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
28747                                                 pi->classifier_state);
28748                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28749                 }
28750         }
28751 }
28752
28753 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28754 {
28755         wlapi_suspend_mac_and_wait(pi->sh->physhim);
28756
28757         if (mode) {
28758                 if (pi->nphy_deaf_count == 0)
28759                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28760         } else if (pi->nphy_deaf_count > 0) {
28761                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28762         }
28763
28764         wlapi_enable_mac(pi->sh->physhim);
28765 }