Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / net / wireless / brcm80211 / brcmsmac / phy / phy_n.c
1 /*
2  * Copyright (c) 2010 Broadcom Corporation
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16
17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
18
19 #include <linux/kernel.h>
20 #include <linux/delay.h>
21 #include <linux/cordic.h>
22
23 #include <brcm_hw_ids.h>
24 #include <aiutils.h>
25 #include <chipcommon.h>
26 #include <pmu.h>
27 #include <d11.h>
28 #include <phy_shim.h>
29 #include "phy_int.h"
30 #include "phy_hal.h"
31 #include "phy_radio.h"
32 #include "phyreg_n.h"
33 #include "phytbl_n.h"
34 #include "soc.h"
35
36 #define READ_RADIO_REG2(pi, radio_type, jspace, core, reg_name) \
37         read_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
38                        ((core == PHY_CORE_0) ? \
39                         radio_type##_##jspace##0 : \
40                         radio_type##_##jspace##1))
41
42 #define WRITE_RADIO_REG2(pi, radio_type, jspace, core, reg_name, value) \
43         write_radio_reg(pi, radio_type##_##jspace##_##reg_name | \
44                         ((core ==  PHY_CORE_0) ? \
45                          radio_type##_##jspace##0 : \
46                          radio_type##_##jspace##1), value)
47
48 #define WRITE_RADIO_SYN(pi, radio_type, reg_name, value) \
49         write_radio_reg(pi, radio_type##_##SYN##_##reg_name, value)
50
51 #define READ_RADIO_REG3(pi, radio_type, jspace, core, reg_name) \
52         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
53                             radio_type##_##jspace##0##_##reg_name : \
54                             radio_type##_##jspace##1##_##reg_name))
55
56 #define WRITE_RADIO_REG3(pi, radio_type, jspace, core, reg_name, value) \
57         write_radio_reg(pi, ((core ==  PHY_CORE_0) ? \
58                              radio_type##_##jspace##0##_##reg_name : \
59                              radio_type##_##jspace##1##_##reg_name), \
60                         value)
61
62 #define READ_RADIO_REG4(pi, radio_type, jspace, core, reg_name) \
63         read_radio_reg(pi, ((core == PHY_CORE_0) ? \
64                              radio_type##_##reg_name##_##jspace##0 : \
65                              radio_type##_##reg_name##_##jspace##1))
66
67 #define WRITE_RADIO_REG4(pi, radio_type, jspace, core, reg_name, value) \
68         write_radio_reg(pi, ((core == PHY_CORE_0) ? \
69                         radio_type##_##reg_name##_##jspace##0 : \
70                         radio_type##_##reg_name##_##jspace##1), \
71                         value)
72
73 #define NPHY_ACI_MAX_UNDETECT_WINDOW_SZ 40
74 #define NPHY_ACI_CHANNEL_DELTA 5
75 #define NPHY_ACI_CHANNEL_SKIP 4
76 #define NPHY_ACI_40MHZ_CHANNEL_DELTA 6
77 #define NPHY_ACI_40MHZ_CHANNEL_SKIP 5
78 #define NPHY_ACI_40MHZ_CHANNEL_DELTA_GE_REV3 6
79 #define NPHY_ACI_40MHZ_CHANNEL_SKIP_GE_REV3 5
80 #define NPHY_ACI_CHANNEL_DELTA_GE_REV3 4
81 #define NPHY_ACI_CHANNEL_SKIP_GE_REV3 3
82
83 #define NPHY_NOISE_NOASSOC_GLITCH_TH_UP 2
84
85 #define NPHY_NOISE_NOASSOC_GLITCH_TH_DN 8
86
87 #define NPHY_NOISE_ASSOC_GLITCH_TH_UP 2
88
89 #define NPHY_NOISE_ASSOC_GLITCH_TH_DN 8
90
91 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_UP 2
92
93 #define NPHY_NOISE_ASSOC_ACI_GLITCH_TH_DN 8
94
95 #define NPHY_NOISE_NOASSOC_ENTER_TH  400
96
97 #define NPHY_NOISE_ASSOC_ENTER_TH  400
98
99 #define NPHY_NOISE_ASSOC_RX_GLITCH_BADPLCP_ENTER_TH  400
100
101 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX 44
102 #define NPHY_NOISE_CRSMINPWR_ARRAY_MAX_INDEX_REV_7 56
103
104 #define NPHY_NOISE_NOASSOC_CRSIDX_INCR 16
105
106 #define NPHY_NOISE_ASSOC_CRSIDX_INCR 8
107
108 #define NPHY_IS_SROM_REINTERPRET NREV_GE(pi->pubpi.phy_rev, 5)
109
110 #define NPHY_RSSICAL_MAXREAD 31
111
112 #define NPHY_RSSICAL_NPOLL 8
113 #define NPHY_RSSICAL_MAXD  (1<<20)
114 #define NPHY_MIN_RXIQ_PWR 2
115
116 #define NPHY_RSSICAL_W1_TARGET 25
117 #define NPHY_RSSICAL_W2_TARGET NPHY_RSSICAL_W1_TARGET
118 #define NPHY_RSSICAL_NB_TARGET 0
119
120 #define NPHY_RSSICAL_W1_TARGET_REV3 29
121 #define NPHY_RSSICAL_W2_TARGET_REV3 NPHY_RSSICAL_W1_TARGET_REV3
122
123 #define NPHY_CALSANITY_RSSI_NB_MAX_POS  9
124 #define NPHY_CALSANITY_RSSI_NB_MAX_NEG -9
125 #define NPHY_CALSANITY_RSSI_W1_MAX_POS  12
126 #define NPHY_CALSANITY_RSSI_W1_MAX_NEG (NPHY_RSSICAL_W1_TARGET - \
127                                         NPHY_RSSICAL_MAXREAD)
128 #define NPHY_CALSANITY_RSSI_W2_MAX_POS  NPHY_CALSANITY_RSSI_W1_MAX_POS
129 #define NPHY_CALSANITY_RSSI_W2_MAX_NEG (NPHY_RSSICAL_W2_TARGET - \
130                                         NPHY_RSSICAL_MAXREAD)
131 #define NPHY_RSSI_SXT(x) ((s8) (-((x) & 0x20) + ((x) & 0x1f)))
132 #define NPHY_RSSI_NB_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_NB_MAX_POS) || \
133                                ((x) < NPHY_CALSANITY_RSSI_NB_MAX_NEG))
134 #define NPHY_RSSI_W1_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W1_MAX_POS) || \
135                                ((x) < NPHY_CALSANITY_RSSI_W1_MAX_NEG))
136 #define NPHY_RSSI_W2_VIOL(x)  (((x) > NPHY_CALSANITY_RSSI_W2_MAX_POS) || \
137                                ((x) < NPHY_CALSANITY_RSSI_W2_MAX_NEG))
138
139 #define NPHY_IQCAL_NUMGAINS 9
140 #define NPHY_N_GCTL 0x66
141
142 #define NPHY_PAPD_EPS_TBL_SIZE 64
143 #define NPHY_PAPD_SCL_TBL_SIZE 64
144 #define NPHY_NUM_DIG_FILT_COEFFS 15
145
146 #define NPHY_PAPD_COMP_OFF 0
147 #define NPHY_PAPD_COMP_ON  1
148
149 #define NPHY_SROM_TEMPSHIFT             32
150 #define NPHY_SROM_MAXTEMPOFFSET         16
151 #define NPHY_SROM_MINTEMPOFFSET         -16
152
153 #define NPHY_CAL_MAXTEMPDELTA           64
154
155 #define NPHY_NOISEVAR_TBLLEN40 256
156 #define NPHY_NOISEVAR_TBLLEN20 128
157
158 #define NPHY_ANARXLPFBW_REDUCTIONFACT 7
159
160 #define NPHY_ADJUSTED_MINCRSPOWER 0x1e
161
162 /* 5357 Chip specific ChipControl register bits */
163 #define CCTRL5357_EXTPA            (1<<14) /* extPA in ChipControl 1, bit 14 */
164 #define CCTRL5357_ANT_MUX_2o3      (1<<15) /* 2o3 in ChipControl 1, bit 15 */
165
166 #define NPHY_CAL_TSSISAMPS      64
167 #define NPHY_TEST_TONE_FREQ_40MHz 4000
168 #define NPHY_TEST_TONE_FREQ_20MHz 2500
169
170 #define MAX_205x_RCAL_WAITLOOPS 10000
171
172 #define NPHY_RXCAL_TONEAMP 181
173 #define NPHY_RXCAL_TONEFREQ_40MHz 4000
174 #define NPHY_RXCAL_TONEFREQ_20MHz 2000
175
176 #define TXFILT_SHAPING_OFDM20   0
177 #define TXFILT_SHAPING_OFDM40   1
178 #define TXFILT_SHAPING_CCK      2
179 #define TXFILT_DEFAULT_OFDM20   3
180 #define TXFILT_DEFAULT_OFDM40   4
181
182 struct nphy_iqcal_params {
183         u16 txlpf;
184         u16 txgm;
185         u16 pga;
186         u16 pad;
187         u16 ipa;
188         u16 cal_gain;
189         u16 ncorr[5];
190 };
191
192 struct nphy_txiqcal_ladder {
193         u8 percent;
194         u8 g_env;
195 };
196
197 struct nphy_ipa_txcalgains {
198         struct nphy_txgains gains;
199         bool useindex;
200         u8 index;
201 };
202
203 struct nphy_papd_restore_state {
204         u16 fbmix[2];
205         u16 vga_master[2];
206         u16 intpa_master[2];
207         u16 afectrl[2];
208         u16 afeoverride[2];
209         u16 pwrup[2];
210         u16 atten[2];
211         u16 mm;
212 };
213
214 struct nphy_ipa_txrxgain {
215         u16 hpvga;
216         u16 lpf_biq1;
217         u16 lpf_biq0;
218         u16 lna2;
219         u16 lna1;
220         s8 txpwrindex;
221 };
222
223 #define NPHY_IPA_RXCAL_MAXGAININDEX (6 - 1)
224
225 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz[] = {
226         {0, 0, 0, 0, 0, 100},
227         {0, 0, 0, 0, 0, 50},
228         {0, 0, 0, 0, 0, -1},
229         {0, 0, 0, 3, 0, -1},
230         {0, 0, 3, 3, 0, -1},
231         {0, 2, 3, 3, 0, -1}
232 };
233
234 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz[] = {
235         {0, 0, 0, 0, 0, 128},
236         {0, 0, 0, 0, 0, 70},
237         {0, 0, 0, 0, 0, 20},
238         {0, 0, 0, 3, 0, 20},
239         {0, 0, 3, 3, 0, 20},
240         {0, 2, 3, 3, 0, 20}
241 };
242
243 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_5GHz_rev7[] = {
244         {0, 0, 0, 0, 0, 100},
245         {0, 0, 0, 0, 0, 50},
246         {0, 0, 0, 0, 0, -1},
247         {0, 0, 0, 3, 0, -1},
248         {0, 0, 3, 3, 0, -1},
249         {0, 0, 5, 3, 0, -1}
250 };
251
252 static const struct nphy_ipa_txrxgain nphy_ipa_rxcal_gaintbl_2GHz_rev7[] = {
253         {0, 0, 0, 0, 0, 10},
254         {0, 0, 0, 1, 0, 10},
255         {0, 0, 1, 2, 0, 10},
256         {0, 0, 1, 3, 0, 10},
257         {0, 0, 4, 3, 0, 10},
258         {0, 0, 6, 3, 0, 10}
259 };
260
261 enum {
262         NPHY_RXCAL_GAIN_INIT = 0,
263         NPHY_RXCAL_GAIN_UP,
264         NPHY_RXCAL_GAIN_DOWN
265 };
266
267 #define wlc_phy_get_papd_nphy(pi) \
268         (read_phy_reg((pi), 0x1e7) & \
269          ((0x1 << 15) | \
270           (0x1 << 14) | \
271           (0x1 << 13)))
272
273 static const u16 NPHY_IPA_REV4_txdigi_filtcoeffs[][NPHY_NUM_DIG_FILT_COEFFS] = {
274         {-377, 137, -407, 208, -1527, 956, 93, 186, 93,
275          230, -44, 230, 201, -191, 201},
276         {-77, 20, -98, 49, -93, 60, 56, 111, 56, 26, -5,
277          26, 34, -32, 34},
278         {-360, 164, -376, 164, -1533, 576, 308, -314, 308,
279          121, -73, 121, 91, 124, 91},
280         {-295, 200, -363, 142, -1391, 826, 151, 301, 151,
281          151, 301, 151, 602, -752, 602},
282         {-92, 58, -96, 49, -104, 44, 17, 35, 17,
283          12, 25, 12, 13, 27, 13},
284         {-375, 136, -399, 209, -1479, 949, 130, 260, 130,
285          230, -44, 230, 201, -191, 201},
286         {0xed9, 0xc8, 0xe95, 0x8e, 0xa91, 0x33a, 0x97, 0x12d, 0x97,
287          0x97, 0x12d, 0x97, 0x25a, 0xd10, 0x25a}
288 };
289
290 struct chan_info_nphy_2055 {
291         u16 chan;
292         u16 freq;
293         uint unknown;
294         u8 RF_pll_ref;
295         u8 RF_rf_pll_mod1;
296         u8 RF_rf_pll_mod0;
297         u8 RF_vco_cap_tail;
298         u8 RF_vco_cal1;
299         u8 RF_vco_cal2;
300         u8 RF_pll_lf_c1;
301         u8 RF_pll_lf_r1;
302         u8 RF_pll_lf_c2;
303         u8 RF_lgbuf_cen_buf;
304         u8 RF_lgen_tune1;
305         u8 RF_lgen_tune2;
306         u8 RF_core1_lgbuf_a_tune;
307         u8 RF_core1_lgbuf_g_tune;
308         u8 RF_core1_rxrf_reg1;
309         u8 RF_core1_tx_pga_pad_tn;
310         u8 RF_core1_tx_mx_bgtrim;
311         u8 RF_core2_lgbuf_a_tune;
312         u8 RF_core2_lgbuf_g_tune;
313         u8 RF_core2_rxrf_reg1;
314         u8 RF_core2_tx_pga_pad_tn;
315         u8 RF_core2_tx_mx_bgtrim;
316         u16 PHY_BW1a;
317         u16 PHY_BW2;
318         u16 PHY_BW3;
319         u16 PHY_BW4;
320         u16 PHY_BW5;
321         u16 PHY_BW6;
322 };
323
324 struct chan_info_nphy_radio205x {
325         u16 chan;
326         u16 freq;
327         u8 RF_SYN_pll_vcocal1;
328         u8 RF_SYN_pll_vcocal2;
329         u8 RF_SYN_pll_refdiv;
330         u8 RF_SYN_pll_mmd2;
331         u8 RF_SYN_pll_mmd1;
332         u8 RF_SYN_pll_loopfilter1;
333         u8 RF_SYN_pll_loopfilter2;
334         u8 RF_SYN_pll_loopfilter3;
335         u8 RF_SYN_pll_loopfilter4;
336         u8 RF_SYN_pll_loopfilter5;
337         u8 RF_SYN_reserved_addr27;
338         u8 RF_SYN_reserved_addr28;
339         u8 RF_SYN_reserved_addr29;
340         u8 RF_SYN_logen_VCOBUF1;
341         u8 RF_SYN_logen_MIXER2;
342         u8 RF_SYN_logen_BUF3;
343         u8 RF_SYN_logen_BUF4;
344         u8 RF_RX0_lnaa_tune;
345         u8 RF_RX0_lnag_tune;
346         u8 RF_TX0_intpaa_boost_tune;
347         u8 RF_TX0_intpag_boost_tune;
348         u8 RF_TX0_pada_boost_tune;
349         u8 RF_TX0_padg_boost_tune;
350         u8 RF_TX0_pgaa_boost_tune;
351         u8 RF_TX0_pgag_boost_tune;
352         u8 RF_TX0_mixa_boost_tune;
353         u8 RF_TX0_mixg_boost_tune;
354         u8 RF_RX1_lnaa_tune;
355         u8 RF_RX1_lnag_tune;
356         u8 RF_TX1_intpaa_boost_tune;
357         u8 RF_TX1_intpag_boost_tune;
358         u8 RF_TX1_pada_boost_tune;
359         u8 RF_TX1_padg_boost_tune;
360         u8 RF_TX1_pgaa_boost_tune;
361         u8 RF_TX1_pgag_boost_tune;
362         u8 RF_TX1_mixa_boost_tune;
363         u8 RF_TX1_mixg_boost_tune;
364         u16 PHY_BW1a;
365         u16 PHY_BW2;
366         u16 PHY_BW3;
367         u16 PHY_BW4;
368         u16 PHY_BW5;
369         u16 PHY_BW6;
370 };
371
372 struct chan_info_nphy_radio2057 {
373         u16 chan;
374         u16 freq;
375         u8 RF_vcocal_countval0;
376         u8 RF_vcocal_countval1;
377         u8 RF_rfpll_refmaster_sparextalsize;
378         u8 RF_rfpll_loopfilter_r1;
379         u8 RF_rfpll_loopfilter_c2;
380         u8 RF_rfpll_loopfilter_c1;
381         u8 RF_cp_kpd_idac;
382         u8 RF_rfpll_mmd0;
383         u8 RF_rfpll_mmd1;
384         u8 RF_vcobuf_tune;
385         u8 RF_logen_mx2g_tune;
386         u8 RF_logen_mx5g_tune;
387         u8 RF_logen_indbuf2g_tune;
388         u8 RF_logen_indbuf5g_tune;
389         u8 RF_txmix2g_tune_boost_pu_core0;
390         u8 RF_pad2g_tune_pus_core0;
391         u8 RF_pga_boost_tune_core0;
392         u8 RF_txmix5g_boost_tune_core0;
393         u8 RF_pad5g_tune_misc_pus_core0;
394         u8 RF_lna2g_tune_core0;
395         u8 RF_lna5g_tune_core0;
396         u8 RF_txmix2g_tune_boost_pu_core1;
397         u8 RF_pad2g_tune_pus_core1;
398         u8 RF_pga_boost_tune_core1;
399         u8 RF_txmix5g_boost_tune_core1;
400         u8 RF_pad5g_tune_misc_pus_core1;
401         u8 RF_lna2g_tune_core1;
402         u8 RF_lna5g_tune_core1;
403         u16 PHY_BW1a;
404         u16 PHY_BW2;
405         u16 PHY_BW3;
406         u16 PHY_BW4;
407         u16 PHY_BW5;
408         u16 PHY_BW6;
409 };
410
411 struct chan_info_nphy_radio2057_rev5 {
412         u16 chan;
413         u16 freq;
414         u8 RF_vcocal_countval0;
415         u8 RF_vcocal_countval1;
416         u8 RF_rfpll_refmaster_sparextalsize;
417         u8 RF_rfpll_loopfilter_r1;
418         u8 RF_rfpll_loopfilter_c2;
419         u8 RF_rfpll_loopfilter_c1;
420         u8 RF_cp_kpd_idac;
421         u8 RF_rfpll_mmd0;
422         u8 RF_rfpll_mmd1;
423         u8 RF_vcobuf_tune;
424         u8 RF_logen_mx2g_tune;
425         u8 RF_logen_indbuf2g_tune;
426         u8 RF_txmix2g_tune_boost_pu_core0;
427         u8 RF_pad2g_tune_pus_core0;
428         u8 RF_lna2g_tune_core0;
429         u8 RF_txmix2g_tune_boost_pu_core1;
430         u8 RF_pad2g_tune_pus_core1;
431         u8 RF_lna2g_tune_core1;
432         u16 PHY_BW1a;
433         u16 PHY_BW2;
434         u16 PHY_BW3;
435         u16 PHY_BW4;
436         u16 PHY_BW5;
437         u16 PHY_BW6;
438 };
439
440 struct nphy_sfo_cfg {
441         u16 PHY_BW1a;
442         u16 PHY_BW2;
443         u16 PHY_BW3;
444         u16 PHY_BW4;
445         u16 PHY_BW5;
446         u16 PHY_BW6;
447 };
448
449 static const struct chan_info_nphy_2055 chan_info_nphy_2055[] = {
450         {
451          184, 4920, 3280, 0x71, 0x01, 0xEC, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
452          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
453          0x0F, 0x8F, 0x7B4, 0x7B0, 0x7AC, 0x214, 0x215, 0x216},
454         {
455          186, 4930, 3287, 0x71, 0x01, 0xED, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
456          0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
457          0x0F, 0x8F, 0x7B8, 0x7B4, 0x7B0, 0x213, 0x214, 0x215},
458         {
459          188, 4940, 3293, 0x71, 0x01, 0xEE, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
460          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
461          0x0F, 0x8F, 0x7BC, 0x7B8, 0x7B4, 0x212, 0x213, 0x214},
462         {
463          190, 4950, 3300, 0x71, 0x01, 0xEF, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
464          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
465          0x0F, 0x8F, 0x7C0, 0x7BC, 0x7B8, 0x211, 0x212, 0x213},
466         {
467          192, 4960, 3307, 0x71, 0x01, 0xF0, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
468          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
469          0x0F, 0x8F, 0x7C4, 0x7C0, 0x7BC, 0x20F, 0x211, 0x212},
470         {
471          194, 4970, 3313, 0x71, 0x01, 0xF1, 0x0F, 0xFF, 0x01, 0x04, 0x0A,
472          0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
473          0x0F, 0x8F, 0x7C8, 0x7C4, 0x7C0, 0x20E, 0x20F, 0x211},
474         {
475          196, 4980, 3320, 0x71, 0x01, 0xF2, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
476          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
477          0x0F, 0x8F, 0x7CC, 0x7C8, 0x7C4, 0x20D, 0x20E, 0x20F},
478         {
479          198, 4990, 3327, 0x71, 0x01, 0xF3, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
480          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
481          0x0F, 0x8F, 0x7D0, 0x7CC, 0x7C8, 0x20C, 0x20D, 0x20E},
482         {
483          200, 5000, 3333, 0x71, 0x01, 0xF4, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
484          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
485          0x0F, 0x8F, 0x7D4, 0x7D0, 0x7CC, 0x20B, 0x20C, 0x20D},
486         {
487          202, 5010, 3340, 0x71, 0x01, 0xF5, 0x0E, 0xFF, 0x01, 0x04, 0x0A,
488          0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
489          0x0F, 0x8F, 0x7D8, 0x7D4, 0x7D0, 0x20A, 0x20B, 0x20C},
490         {
491          204, 5020, 3347, 0x71, 0x01, 0xF6, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
492          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
493          0x0F, 0x8F, 0x7DC, 0x7D8, 0x7D4, 0x209, 0x20A, 0x20B},
494         {
495          206, 5030, 3353, 0x71, 0x01, 0xF7, 0x0E, 0xF7, 0x01, 0x04, 0x0A,
496          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
497          0x0F, 0x8F, 0x7E0, 0x7DC, 0x7D8, 0x208, 0x209, 0x20A},
498         {
499          208, 5040, 3360, 0x71, 0x01, 0xF8, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
500          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
501          0x0F, 0x8F, 0x7E4, 0x7E0, 0x7DC, 0x207, 0x208, 0x209},
502         {
503          210, 5050, 3367, 0x71, 0x01, 0xF9, 0x0D, 0xEF, 0x01, 0x04, 0x0A,
504          0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 0x8F, 0xFF, 0x00, 0x0F,
505          0x0F, 0x8F, 0x7E8, 0x7E4, 0x7E0, 0x206, 0x207, 0x208},
506         {
507          212, 5060, 3373, 0x71, 0x01, 0xFA, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
508          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
509          0x0F, 0x8E, 0x7EC, 0x7E8, 0x7E4, 0x205, 0x206, 0x207},
510         {
511          214, 5070, 3380, 0x71, 0x01, 0xFB, 0x0D, 0xE6, 0x01, 0x04, 0x0A,
512          0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 0x8E, 0xFF, 0x00, 0x0E,
513          0x0F, 0x8E, 0x7F0, 0x7EC, 0x7E8, 0x204, 0x205, 0x206},
514         {
515          216, 5080, 3387, 0x71, 0x01, 0xFC, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
516          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
517          0x0F, 0x8D, 0x7F4, 0x7F0, 0x7EC, 0x203, 0x204, 0x205},
518         {
519          218, 5090, 3393, 0x71, 0x01, 0xFD, 0x0D, 0xDE, 0x01, 0x04, 0x0A,
520          0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 0x8D, 0xEE, 0x00, 0x0E,
521          0x0F, 0x8D, 0x7F8, 0x7F4, 0x7F0, 0x202, 0x203, 0x204},
522         {
523          220, 5100, 3400, 0x71, 0x01, 0xFE, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
524          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
525          0x0F, 0x8D, 0x7FC, 0x7F8, 0x7F4, 0x201, 0x202, 0x203},
526         {
527          222, 5110, 3407, 0x71, 0x01, 0xFF, 0x0C, 0xD6, 0x01, 0x04, 0x0A,
528          0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 0x8D, 0xEE, 0x00, 0x0D,
529          0x0F, 0x8D, 0x800, 0x7FC, 0x7F8, 0x200, 0x201, 0x202},
530         {
531          224, 5120, 3413, 0x71, 0x02, 0x00, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
532          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
533          0x0F, 0x8C, 0x804, 0x800, 0x7FC, 0x1FF, 0x200, 0x201},
534         {
535          226, 5130, 3420, 0x71, 0x02, 0x01, 0x0C, 0xCE, 0x01, 0x04, 0x0A,
536          0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 0x8C, 0xDD, 0x00, 0x0D,
537          0x0F, 0x8C, 0x808, 0x804, 0x800, 0x1FE, 0x1FF, 0x200},
538         {
539          228, 5140, 3427, 0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A,
540          0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 0x8B, 0xDD, 0x00, 0x0C,
541          0x0E, 0x8B, 0x80C, 0x808, 0x804, 0x1FD, 0x1FE, 0x1FF},
542         {
543          32, 5160, 3440, 0x71, 0x02, 0x04, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
544          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
545          0x0D, 0x8A, 0x814, 0x810, 0x80C, 0x1FB, 0x1FC, 0x1FD},
546         {
547          34, 5170, 3447, 0x71, 0x02, 0x05, 0x0B, 0xBE, 0x01, 0x04, 0x0A,
548          0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 0x8A, 0xCC, 0x00, 0x0B,
549          0x0D, 0x8A, 0x818, 0x814, 0x810, 0x1FA, 0x1FB, 0x1FC},
550         {
551          36, 5180, 3453, 0x71, 0x02, 0x06, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
552          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
553          0x0C, 0x89, 0x81C, 0x818, 0x814, 0x1F9, 0x1FA, 0x1FB},
554         {
555          38, 5190, 3460, 0x71, 0x02, 0x07, 0x0B, 0xB6, 0x01, 0x04, 0x0A,
556          0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 0x89, 0xCC, 0x00, 0x0B,
557          0x0C, 0x89, 0x820, 0x81C, 0x818, 0x1F8, 0x1F9, 0x1FA},
558         {
559          40, 5200, 3467, 0x71, 0x02, 0x08, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
560          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
561          0x0B, 0x89, 0x824, 0x820, 0x81C, 0x1F7, 0x1F8, 0x1F9},
562         {
563          42, 5210, 3473, 0x71, 0x02, 0x09, 0x0B, 0xAF, 0x01, 0x04, 0x0A,
564          0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 0x89, 0xBB, 0x00, 0x0A,
565          0x0B, 0x89, 0x828, 0x824, 0x820, 0x1F6, 0x1F7, 0x1F8},
566         {
567          44, 5220, 3480, 0x71, 0x02, 0x0A, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
568          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
569          0x0A, 0x88, 0x82C, 0x828, 0x824, 0x1F5, 0x1F6, 0x1F7},
570         {
571          46, 5230, 3487, 0x71, 0x02, 0x0B, 0x0A, 0xA7, 0x01, 0x04, 0x0A,
572          0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 0x88, 0xBB, 0x00, 0x09,
573          0x0A, 0x88, 0x830, 0x82C, 0x828, 0x1F4, 0x1F5, 0x1F6},
574         {
575          48, 5240, 3493, 0x71, 0x02, 0x0C, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
576          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
577          0x0A, 0x87, 0x834, 0x830, 0x82C, 0x1F3, 0x1F4, 0x1F5},
578         {
579          50, 5250, 3500, 0x71, 0x02, 0x0D, 0x0A, 0xA0, 0x01, 0x04, 0x0A,
580          0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 0x87, 0xAA, 0x00, 0x09,
581          0x0A, 0x87, 0x838, 0x834, 0x830, 0x1F2, 0x1F3, 0x1F4},
582         {
583          52, 5260, 3507, 0x71, 0x02, 0x0E, 0x0A, 0x98, 0x01, 0x04, 0x0A,
584          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
585          0x09, 0x87, 0x83C, 0x838, 0x834, 0x1F1, 0x1F2, 0x1F3},
586         {
587          54, 5270, 3513, 0x71, 0x02, 0x0F, 0x0A, 0x98, 0x01, 0x04, 0x0A,
588          0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 0x87, 0xAA, 0x00, 0x08,
589          0x09, 0x87, 0x840, 0x83C, 0x838, 0x1F0, 0x1F1, 0x1F2},
590         {
591          56, 5280, 3520, 0x71, 0x02, 0x10, 0x09, 0x91, 0x01, 0x04, 0x0A,
592          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
593          0x08, 0x86, 0x844, 0x840, 0x83C, 0x1F0, 0x1F0, 0x1F1},
594         {
595          58, 5290, 3527, 0x71, 0x02, 0x11, 0x09, 0x91, 0x01, 0x04, 0x0A,
596          0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 0x86, 0x99, 0x00, 0x08,
597          0x08, 0x86, 0x848, 0x844, 0x840, 0x1EF, 0x1F0, 0x1F0},
598         {
599          60, 5300, 3533, 0x71, 0x02, 0x12, 0x09, 0x8A, 0x01, 0x04, 0x0A,
600          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
601          0x07, 0x85, 0x84C, 0x848, 0x844, 0x1EE, 0x1EF, 0x1F0},
602         {
603          62, 5310, 3540, 0x71, 0x02, 0x13, 0x09, 0x8A, 0x01, 0x04, 0x0A,
604          0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 0x85, 0x99, 0x00, 0x08,
605          0x07, 0x85, 0x850, 0x84C, 0x848, 0x1ED, 0x1EE, 0x1EF},
606         {
607          64, 5320, 3547, 0x71, 0x02, 0x14, 0x09, 0x83, 0x01, 0x04, 0x0A,
608          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
609          0x07, 0x84, 0x854, 0x850, 0x84C, 0x1EC, 0x1ED, 0x1EE},
610         {
611          66, 5330, 3553, 0x71, 0x02, 0x15, 0x09, 0x83, 0x01, 0x04, 0x0A,
612          0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 0x84, 0x88, 0x00, 0x07,
613          0x07, 0x84, 0x858, 0x854, 0x850, 0x1EB, 0x1EC, 0x1ED},
614         {
615          68, 5340, 3560, 0x71, 0x02, 0x16, 0x08, 0x7C, 0x01, 0x04, 0x0A,
616          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
617          0x06, 0x84, 0x85C, 0x858, 0x854, 0x1EA, 0x1EB, 0x1EC},
618         {
619          70, 5350, 3567, 0x71, 0x02, 0x17, 0x08, 0x7C, 0x01, 0x04, 0x0A,
620          0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 0x84, 0x88, 0x00, 0x07,
621          0x06, 0x84, 0x860, 0x85C, 0x858, 0x1E9, 0x1EA, 0x1EB},
622         {
623          72, 5360, 3573, 0x71, 0x02, 0x18, 0x08, 0x75, 0x01, 0x04, 0x0A,
624          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
625          0x05, 0x83, 0x864, 0x860, 0x85C, 0x1E8, 0x1E9, 0x1EA},
626         {
627          74, 5370, 3580, 0x71, 0x02, 0x19, 0x08, 0x75, 0x01, 0x04, 0x0A,
628          0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 0x83, 0x77, 0x00, 0x06,
629          0x05, 0x83, 0x868, 0x864, 0x860, 0x1E7, 0x1E8, 0x1E9},
630         {
631          76, 5380, 3587, 0x71, 0x02, 0x1A, 0x08, 0x6E, 0x01, 0x04, 0x0A,
632          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
633          0x04, 0x82, 0x86C, 0x868, 0x864, 0x1E6, 0x1E7, 0x1E8},
634         {
635          78, 5390, 3593, 0x71, 0x02, 0x1B, 0x08, 0x6E, 0x01, 0x04, 0x0A,
636          0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 0x82, 0x77, 0x00, 0x06,
637          0x04, 0x82, 0x870, 0x86C, 0x868, 0x1E5, 0x1E6, 0x1E7},
638         {
639          80, 5400, 3600, 0x71, 0x02, 0x1C, 0x07, 0x67, 0x01, 0x04, 0x0A,
640          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
641          0x04, 0x81, 0x874, 0x870, 0x86C, 0x1E5, 0x1E5, 0x1E6},
642         {
643          82, 5410, 3607, 0x71, 0x02, 0x1D, 0x07, 0x67, 0x01, 0x04, 0x0A,
644          0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 0x81, 0x66, 0x00, 0x05,
645          0x04, 0x81, 0x878, 0x874, 0x870, 0x1E4, 0x1E5, 0x1E5},
646         {
647          84, 5420, 3613, 0x71, 0x02, 0x1E, 0x07, 0x61, 0x01, 0x04, 0x0A,
648          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
649          0x03, 0x80, 0x87C, 0x878, 0x874, 0x1E3, 0x1E4, 0x1E5},
650         {
651          86, 5430, 3620, 0x71, 0x02, 0x1F, 0x07, 0x61, 0x01, 0x04, 0x0A,
652          0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 0x80, 0x66, 0x00, 0x05,
653          0x03, 0x80, 0x880, 0x87C, 0x878, 0x1E2, 0x1E3, 0x1E4},
654         {
655          88, 5440, 3627, 0x71, 0x02, 0x20, 0x07, 0x5A, 0x01, 0x04, 0x0A,
656          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
657          0x02, 0x80, 0x884, 0x880, 0x87C, 0x1E1, 0x1E2, 0x1E3},
658         {
659          90, 5450, 3633, 0x71, 0x02, 0x21, 0x07, 0x5A, 0x01, 0x04, 0x0A,
660          0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 0x80, 0x55, 0x00, 0x04,
661          0x02, 0x80, 0x888, 0x884, 0x880, 0x1E0, 0x1E1, 0x1E2},
662         {
663          92, 5460, 3640, 0x71, 0x02, 0x22, 0x06, 0x53, 0x01, 0x04, 0x0A,
664          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
665          0x01, 0x80, 0x88C, 0x888, 0x884, 0x1DF, 0x1E0, 0x1E1},
666         {
667          94, 5470, 3647, 0x71, 0x02, 0x23, 0x06, 0x53, 0x01, 0x04, 0x0A,
668          0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 0x80, 0x55, 0x00, 0x04,
669          0x01, 0x80, 0x890, 0x88C, 0x888, 0x1DE, 0x1DF, 0x1E0},
670         {
671          96, 5480, 3653, 0x71, 0x02, 0x24, 0x06, 0x4D, 0x01, 0x04, 0x0A,
672          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
673          0x00, 0x80, 0x894, 0x890, 0x88C, 0x1DD, 0x1DE, 0x1DF},
674         {
675          98, 5490, 3660, 0x71, 0x02, 0x25, 0x06, 0x4D, 0x01, 0x04, 0x0A,
676          0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
677          0x00, 0x80, 0x898, 0x894, 0x890, 0x1DD, 0x1DD, 0x1DE},
678         {
679          100, 5500, 3667, 0x71, 0x02, 0x26, 0x06, 0x47, 0x01, 0x04, 0x0A,
680          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
681          0x00, 0x80, 0x89C, 0x898, 0x894, 0x1DC, 0x1DD, 0x1DD},
682         {
683          102, 5510, 3673, 0x71, 0x02, 0x27, 0x06, 0x47, 0x01, 0x04, 0x0A,
684          0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 0x80, 0x44, 0x00, 0x03,
685          0x00, 0x80, 0x8A0, 0x89C, 0x898, 0x1DB, 0x1DC, 0x1DD},
686         {
687          104, 5520, 3680, 0x71, 0x02, 0x28, 0x05, 0x40, 0x01, 0x04, 0x0A,
688          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
689          0x00, 0x80, 0x8A4, 0x8A0, 0x89C, 0x1DA, 0x1DB, 0x1DC},
690         {
691          106, 5530, 3687, 0x71, 0x02, 0x29, 0x05, 0x40, 0x01, 0x04, 0x0A,
692          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
693          0x00, 0x80, 0x8A8, 0x8A4, 0x8A0, 0x1D9, 0x1DA, 0x1DB},
694         {
695          108, 5540, 3693, 0x71, 0x02, 0x2A, 0x05, 0x3A, 0x01, 0x04, 0x0A,
696          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
697          0x00, 0x80, 0x8AC, 0x8A8, 0x8A4, 0x1D8, 0x1D9, 0x1DA},
698         {
699          110, 5550, 3700, 0x71, 0x02, 0x2B, 0x05, 0x3A, 0x01, 0x04, 0x0A,
700          0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x80, 0x33, 0x00, 0x02,
701          0x00, 0x80, 0x8B0, 0x8AC, 0x8A8, 0x1D7, 0x1D8, 0x1D9},
702         {
703          112, 5560, 3707, 0x71, 0x02, 0x2C, 0x05, 0x34, 0x01, 0x04, 0x0A,
704          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
705          0x00, 0x80, 0x8B4, 0x8B0, 0x8AC, 0x1D7, 0x1D7, 0x1D8},
706         {
707          114, 5570, 3713, 0x71, 0x02, 0x2D, 0x05, 0x34, 0x01, 0x04, 0x0A,
708          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
709          0x00, 0x80, 0x8B8, 0x8B4, 0x8B0, 0x1D6, 0x1D7, 0x1D7},
710         {
711          116, 5580, 3720, 0x71, 0x02, 0x2E, 0x04, 0x2E, 0x01, 0x04, 0x0A,
712          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
713          0x00, 0x80, 0x8BC, 0x8B8, 0x8B4, 0x1D5, 0x1D6, 0x1D7},
714         {
715          118, 5590, 3727, 0x71, 0x02, 0x2F, 0x04, 0x2E, 0x01, 0x04, 0x0A,
716          0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 0x80, 0x22, 0x00, 0x01,
717          0x00, 0x80, 0x8C0, 0x8BC, 0x8B8, 0x1D4, 0x1D5, 0x1D6},
718         {
719          120, 5600, 3733, 0x71, 0x02, 0x30, 0x04, 0x28, 0x01, 0x04, 0x0A,
720          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
721          0x00, 0x80, 0x8C4, 0x8C0, 0x8BC, 0x1D3, 0x1D4, 0x1D5},
722         {
723          122, 5610, 3740, 0x71, 0x02, 0x31, 0x04, 0x28, 0x01, 0x04, 0x0A,
724          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 0x80, 0x11, 0x00, 0x01,
725          0x00, 0x80, 0x8C8, 0x8C4, 0x8C0, 0x1D2, 0x1D3, 0x1D4},
726         {
727          124, 5620, 3747, 0x71, 0x02, 0x32, 0x04, 0x21, 0x01, 0x04, 0x0A,
728          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
729          0x00, 0x80, 0x8CC, 0x8C8, 0x8C4, 0x1D2, 0x1D2, 0x1D3},
730         {
731          126, 5630, 3753, 0x71, 0x02, 0x33, 0x04, 0x21, 0x01, 0x04, 0x0A,
732          0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00,
733          0x00, 0x80, 0x8D0, 0x8CC, 0x8C8, 0x1D1, 0x1D2, 0x1D2},
734         {
735          128, 5640, 3760, 0x71, 0x02, 0x34, 0x03, 0x1C, 0x01, 0x04, 0x0A,
736          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
737          0x00, 0x80, 0x8D4, 0x8D0, 0x8CC, 0x1D0, 0x1D1, 0x1D2},
738         {
739          130, 5650, 3767, 0x71, 0x02, 0x35, 0x03, 0x1C, 0x01, 0x04, 0x0A,
740          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
741          0x00, 0x80, 0x8D8, 0x8D4, 0x8D0, 0x1CF, 0x1D0, 0x1D1},
742         {
743          132, 5660, 3773, 0x71, 0x02, 0x36, 0x03, 0x16, 0x01, 0x04, 0x0A,
744          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
745          0x00, 0x80, 0x8DC, 0x8D8, 0x8D4, 0x1CE, 0x1CF, 0x1D0},
746         {
747          134, 5670, 3780, 0x71, 0x02, 0x37, 0x03, 0x16, 0x01, 0x04, 0x0A,
748          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
749          0x00, 0x80, 0x8E0, 0x8DC, 0x8D8, 0x1CE, 0x1CE, 0x1CF},
750         {
751          136, 5680, 3787, 0x71, 0x02, 0x38, 0x03, 0x10, 0x01, 0x04, 0x0A,
752          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
753          0x00, 0x80, 0x8E4, 0x8E0, 0x8DC, 0x1CD, 0x1CE, 0x1CE},
754         {
755          138, 5690, 3793, 0x71, 0x02, 0x39, 0x03, 0x10, 0x01, 0x04, 0x0A,
756          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
757          0x00, 0x80, 0x8E8, 0x8E4, 0x8E0, 0x1CC, 0x1CD, 0x1CE},
758         {
759          140, 5700, 3800, 0x71, 0x02, 0x3A, 0x02, 0x0A, 0x01, 0x04, 0x0A,
760          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
761          0x00, 0x80, 0x8EC, 0x8E8, 0x8E4, 0x1CB, 0x1CC, 0x1CD},
762         {
763          142, 5710, 3807, 0x71, 0x02, 0x3B, 0x02, 0x0A, 0x01, 0x04, 0x0A,
764          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
765          0x00, 0x80, 0x8F0, 0x8EC, 0x8E8, 0x1CA, 0x1CB, 0x1CC},
766         {
767          144, 5720, 3813, 0x71, 0x02, 0x3C, 0x02, 0x0A, 0x01, 0x04, 0x0A,
768          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
769          0x00, 0x80, 0x8F4, 0x8F0, 0x8EC, 0x1C9, 0x1CA, 0x1CB},
770         {
771          145, 5725, 3817, 0x72, 0x04, 0x79, 0x02, 0x03, 0x01, 0x03, 0x14,
772          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
773          0x00, 0x80, 0x8F6, 0x8F2, 0x8EE, 0x1C9, 0x1CA, 0x1CB},
774         {
775          146, 5730, 3820, 0x71, 0x02, 0x3D, 0x02, 0x0A, 0x01, 0x04, 0x0A,
776          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
777          0x00, 0x80, 0x8F8, 0x8F4, 0x8F0, 0x1C9, 0x1C9, 0x1CA},
778         {
779          147, 5735, 3823, 0x72, 0x04, 0x7B, 0x02, 0x03, 0x01, 0x03, 0x14,
780          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
781          0x00, 0x80, 0x8FA, 0x8F6, 0x8F2, 0x1C8, 0x1C9, 0x1CA},
782         {
783          148, 5740, 3827, 0x71, 0x02, 0x3E, 0x02, 0x0A, 0x01, 0x04, 0x0A,
784          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
785          0x00, 0x80, 0x8FC, 0x8F8, 0x8F4, 0x1C8, 0x1C9, 0x1C9},
786         {
787          149, 5745, 3830, 0x72, 0x04, 0x7D, 0x02, 0xFE, 0x00, 0x03, 0x14,
788          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
789          0x00, 0x80, 0x8FE, 0x8FA, 0x8F6, 0x1C8, 0x1C8, 0x1C9},
790         {
791          150, 5750, 3833, 0x71, 0x02, 0x3F, 0x02, 0x0A, 0x01, 0x04, 0x0A,
792          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
793          0x00, 0x80, 0x900, 0x8FC, 0x8F8, 0x1C7, 0x1C8, 0x1C9},
794         {
795          151, 5755, 3837, 0x72, 0x04, 0x7F, 0x02, 0xFE, 0x00, 0x03, 0x14,
796          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
797          0x00, 0x80, 0x902, 0x8FE, 0x8FA, 0x1C7, 0x1C8, 0x1C8},
798         {
799          152, 5760, 3840, 0x71, 0x02, 0x40, 0x02, 0x0A, 0x01, 0x04, 0x0A,
800          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
801          0x00, 0x80, 0x904, 0x900, 0x8FC, 0x1C6, 0x1C7, 0x1C8},
802         {
803          153, 5765, 3843, 0x72, 0x04, 0x81, 0x02, 0xF8, 0x00, 0x03, 0x14,
804          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
805          0x00, 0x80, 0x906, 0x902, 0x8FE, 0x1C6, 0x1C7, 0x1C8},
806         {
807          154, 5770, 3847, 0x71, 0x02, 0x41, 0x02, 0x0A, 0x01, 0x04, 0x0A,
808          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
809          0x00, 0x80, 0x908, 0x904, 0x900, 0x1C6, 0x1C6, 0x1C7},
810         {
811          155, 5775, 3850, 0x72, 0x04, 0x83, 0x02, 0xF8, 0x00, 0x03, 0x14,
812          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
813          0x00, 0x80, 0x90A, 0x906, 0x902, 0x1C5, 0x1C6, 0x1C7},
814         {
815          156, 5780, 3853, 0x71, 0x02, 0x42, 0x02, 0x0A, 0x01, 0x04, 0x0A,
816          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
817          0x00, 0x80, 0x90C, 0x908, 0x904, 0x1C5, 0x1C6, 0x1C6},
818         {
819          157, 5785, 3857, 0x72, 0x04, 0x85, 0x02, 0xF2, 0x00, 0x03, 0x14,
820          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
821          0x00, 0x80, 0x90E, 0x90A, 0x906, 0x1C4, 0x1C5, 0x1C6},
822         {
823          158, 5790, 3860, 0x71, 0x02, 0x43, 0x02, 0x0A, 0x01, 0x04, 0x0A,
824          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
825          0x00, 0x80, 0x910, 0x90C, 0x908, 0x1C4, 0x1C5, 0x1C6},
826         {
827          159, 5795, 3863, 0x72, 0x04, 0x87, 0x02, 0xF2, 0x00, 0x03, 0x14,
828          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
829          0x00, 0x80, 0x912, 0x90E, 0x90A, 0x1C4, 0x1C4, 0x1C5},
830         {
831          160, 5800, 3867, 0x71, 0x02, 0x44, 0x01, 0x0A, 0x01, 0x04, 0x0A,
832          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
833          0x00, 0x80, 0x914, 0x910, 0x90C, 0x1C3, 0x1C4, 0x1C5},
834         {
835          161, 5805, 3870, 0x72, 0x04, 0x89, 0x01, 0xED, 0x00, 0x03, 0x14,
836          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
837          0x00, 0x80, 0x916, 0x912, 0x90E, 0x1C3, 0x1C4, 0x1C4},
838         {
839          162, 5810, 3873, 0x71, 0x02, 0x45, 0x01, 0x0A, 0x01, 0x04, 0x0A,
840          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
841          0x00, 0x80, 0x918, 0x914, 0x910, 0x1C2, 0x1C3, 0x1C4},
842         {
843          163, 5815, 3877, 0x72, 0x04, 0x8B, 0x01, 0xED, 0x00, 0x03, 0x14,
844          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
845          0x00, 0x80, 0x91A, 0x916, 0x912, 0x1C2, 0x1C3, 0x1C4},
846         {
847          164, 5820, 3880, 0x71, 0x02, 0x46, 0x01, 0x0A, 0x01, 0x04, 0x0A,
848          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
849          0x00, 0x80, 0x91C, 0x918, 0x914, 0x1C2, 0x1C2, 0x1C3},
850         {
851          165, 5825, 3883, 0x72, 0x04, 0x8D, 0x01, 0xED, 0x00, 0x03, 0x14,
852          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
853          0x00, 0x80, 0x91E, 0x91A, 0x916, 0x1C1, 0x1C2, 0x1C3},
854         {
855          166, 5830, 3887, 0x71, 0x02, 0x47, 0x01, 0x0A, 0x01, 0x04, 0x0A,
856          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
857          0x00, 0x80, 0x920, 0x91C, 0x918, 0x1C1, 0x1C2, 0x1C2},
858         {
859          168, 5840, 3893, 0x71, 0x02, 0x48, 0x01, 0x0A, 0x01, 0x04, 0x0A,
860          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
861          0x00, 0x80, 0x924, 0x920, 0x91C, 0x1C0, 0x1C1, 0x1C2},
862         {
863          170, 5850, 3900, 0x71, 0x02, 0x49, 0x01, 0xE0, 0x00, 0x04, 0x0A,
864          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
865          0x00, 0x80, 0x928, 0x924, 0x920, 0x1BF, 0x1C0, 0x1C1},
866         {
867          172, 5860, 3907, 0x71, 0x02, 0x4A, 0x01, 0xDE, 0x00, 0x04, 0x0A,
868          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
869          0x00, 0x80, 0x92C, 0x928, 0x924, 0x1BF, 0x1BF, 0x1C0},
870         {
871          174, 5870, 3913, 0x71, 0x02, 0x4B, 0x00, 0xDB, 0x00, 0x04, 0x0A,
872          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
873          0x00, 0x80, 0x930, 0x92C, 0x928, 0x1BE, 0x1BF, 0x1BF},
874         {
875          176, 5880, 3920, 0x71, 0x02, 0x4C, 0x00, 0xD8, 0x00, 0x04, 0x0A,
876          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
877          0x00, 0x80, 0x934, 0x930, 0x92C, 0x1BD, 0x1BE, 0x1BF},
878         {
879          178, 5890, 3927, 0x71, 0x02, 0x4D, 0x00, 0xD6, 0x00, 0x04, 0x0A,
880          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
881          0x00, 0x80, 0x938, 0x934, 0x930, 0x1BC, 0x1BD, 0x1BE},
882         {
883          180, 5900, 3933, 0x71, 0x02, 0x4E, 0x00, 0xD3, 0x00, 0x04, 0x0A,
884          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
885          0x00, 0x80, 0x93C, 0x938, 0x934, 0x1BC, 0x1BC, 0x1BD},
886         {
887          182, 5910, 3940, 0x71, 0x02, 0x4F, 0x00, 0xD6, 0x00, 0x04, 0x0A,
888          0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
889          0x00, 0x80, 0x940, 0x93C, 0x938, 0x1BB, 0x1BC, 0x1BC},
890         {
891          1, 2412, 3216, 0x73, 0x09, 0x6C, 0x0F, 0x00, 0x01, 0x07, 0x15,
892          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 0x80, 0xFF, 0x88, 0x0D,
893          0x0C, 0x80, 0x3C9, 0x3C5, 0x3C1, 0x43A, 0x43F, 0x443},
894         {
895          2, 2417, 3223, 0x73, 0x09, 0x71, 0x0F, 0x00, 0x01, 0x07, 0x15,
896          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 0x80, 0xFF, 0x88, 0x0C,
897          0x0B, 0x80, 0x3CB, 0x3C7, 0x3C3, 0x438, 0x43D, 0x441},
898         {
899          3, 2422, 3229, 0x73, 0x09, 0x76, 0x0F, 0x00, 0x01, 0x07, 0x15,
900          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
901          0x0A, 0x80, 0x3CD, 0x3C9, 0x3C5, 0x436, 0x43A, 0x43F},
902         {
903          4, 2427, 3236, 0x73, 0x09, 0x7B, 0x0F, 0x00, 0x01, 0x07, 0x15,
904          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 0x80, 0xFF, 0x88, 0x0C,
905          0x0A, 0x80, 0x3CF, 0x3CB, 0x3C7, 0x434, 0x438, 0x43D},
906         {
907          5, 2432, 3243, 0x73, 0x09, 0x80, 0x0F, 0x00, 0x01, 0x07, 0x15,
908          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 0x80, 0xFF, 0x88, 0x0C,
909          0x09, 0x80, 0x3D1, 0x3CD, 0x3C9, 0x431, 0x436, 0x43A},
910         {
911          6, 2437, 3249, 0x73, 0x09, 0x85, 0x0F, 0x00, 0x01, 0x07, 0x15,
912          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 0x80, 0xFF, 0x88, 0x0B,
913          0x08, 0x80, 0x3D3, 0x3CF, 0x3CB, 0x42F, 0x434, 0x438},
914         {
915          7, 2442, 3256, 0x73, 0x09, 0x8A, 0x0F, 0x00, 0x01, 0x07, 0x15,
916          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 0x80, 0xFF, 0x88, 0x0A,
917          0x07, 0x80, 0x3D5, 0x3D1, 0x3CD, 0x42D, 0x431, 0x436},
918         {
919          8, 2447, 3263, 0x73, 0x09, 0x8F, 0x0F, 0x00, 0x01, 0x07, 0x15,
920          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 0x80, 0xFF, 0x88, 0x0A,
921          0x06, 0x80, 0x3D7, 0x3D3, 0x3CF, 0x42B, 0x42F, 0x434},
922         {
923          9, 2452, 3269, 0x73, 0x09, 0x94, 0x0F, 0x00, 0x01, 0x07, 0x15,
924          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 0x80, 0xFF, 0x88, 0x09,
925          0x06, 0x80, 0x3D9, 0x3D5, 0x3D1, 0x429, 0x42D, 0x431},
926         {
927          10, 2457, 3276, 0x73, 0x09, 0x99, 0x0F, 0x00, 0x01, 0x07, 0x15,
928          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 0x80, 0xFF, 0x88, 0x08,
929          0x05, 0x80, 0x3DB, 0x3D7, 0x3D3, 0x427, 0x42B, 0x42F},
930         {
931          11, 2462, 3283, 0x73, 0x09, 0x9E, 0x0F, 0x00, 0x01, 0x07, 0x15,
932          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 0x80, 0xFF, 0x88, 0x08,
933          0x04, 0x80, 0x3DD, 0x3D9, 0x3D5, 0x424, 0x429, 0x42D},
934         {
935          12, 2467, 3289, 0x73, 0x09, 0xA3, 0x0F, 0x00, 0x01, 0x07, 0x15,
936          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 0x80, 0xFF, 0x88, 0x08,
937          0x03, 0x80, 0x3DF, 0x3DB, 0x3D7, 0x422, 0x427, 0x42B},
938         {
939          13, 2472, 3296, 0x73, 0x09, 0xA8, 0x0F, 0x00, 0x01, 0x07, 0x15,
940          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 0x80, 0xFF, 0x88, 0x07,
941          0x03, 0x80, 0x3E1, 0x3DD, 0x3D9, 0x420, 0x424, 0x429},
942         {
943          14, 2484, 3312, 0x73, 0x09, 0xB4, 0x0F, 0xFF, 0x01, 0x07, 0x15,
944          0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 0x80, 0xFF, 0x88, 0x07,
945          0x01, 0x80, 0x3E6, 0x3E2, 0x3DE, 0x41B, 0x41F, 0x424}
946 };
947
948 static const struct chan_info_nphy_radio205x chan_info_nphyrev3_2056[] = {
949         {
950          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
951          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
952          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
953          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
954         {
955          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
956          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
957          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
958          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
959         {
960          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
961          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
962          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
963          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
964         {
965          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
966          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
967          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
968          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
969         {
970          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
971          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
972          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
973          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
974         {
975          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
976          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
977          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
978          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
979         {
980          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
981          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
982          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
983          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
984         {
985          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
986          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x08, 0x00, 0x7f,
987          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0b,
988          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
989         {
990          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
991          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
992          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
993          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
994         {
995          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
996          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
997          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
998          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
999         {
1000          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1001          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1002          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1003          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1004         {
1005          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1006          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1007          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1008          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1009         {
1010          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1011          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1012          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1013          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1014         {
1015          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1016          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1017          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1018          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1019         {
1020          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1021          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1022          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1023          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1024         {
1025          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1026          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1027          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1028          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1029         {
1030          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1031          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1032          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1033          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1034         {
1035          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1036          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1037          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1038          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1039         {
1040          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1041          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1042          0x00, 0x0b, 0x00, 0xff, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1043          0x00, 0xff, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1044         {
1045          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1046          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1047          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1048          0x00, 0xfc, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1049         {
1050          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1051          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1052          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1053          0x00, 0xfc, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1054         {
1055          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1056          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1057          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1058          0x00, 0xfc, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1059         {
1060          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1061          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1062          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1063          0x00, 0xfc, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1064         {
1065          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1066          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1067          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1068          0x00, 0xfc, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1069         {
1070          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1071          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x07, 0x00, 0x7f,
1072          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xff, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1073          0x00, 0xfc, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1074         {
1075          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1076          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1077          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1078          0x00, 0xfc, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1079         {
1080          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1081          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x07, 0x00, 0x7f,
1082          0x00, 0x0b, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0b,
1083          0x00, 0xfc, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1084         {
1085          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1086          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x06, 0x00, 0x7f,
1087          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1088          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1089         {
1090          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1091          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1092          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1093          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1094         {
1095          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1096          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1097          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1098          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1099         {
1100          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1101          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x06, 0x00, 0x7f,
1102          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1103          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1104         {
1105          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1106          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1107          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1108          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1109         {
1110          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1111          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1112          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1113          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1114         {
1115          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1116          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1117          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1118          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1119         {
1120          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1121          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x06, 0x00, 0x7f,
1122          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1123          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1124         {
1125          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1126          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1127          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1128          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1129         {
1130          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1131          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x06, 0x00, 0x7f,
1132          0x00, 0x0a, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0a,
1133          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1134         {
1135          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1136          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1137          0x00, 0x09, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1138          0x00, 0xfc, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1139         {
1140          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1141          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1142          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1143          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1144         {
1145          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1146          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x05, 0x00, 0x7f,
1147          0x00, 0x09, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1148          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1149         {
1150          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1151          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1152          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1153          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1154         {
1155          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1156          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x05, 0x00, 0x7f,
1157          0x00, 0x09, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1158          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1159         {
1160          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1161          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1162          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1163          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1164         {
1165          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1166          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1167          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1168          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1169         {
1170          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1171          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1172          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1173          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1174         {
1175          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1176          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x05, 0x00, 0x7f,
1177          0x00, 0x09, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1178          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1179         {
1180          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1181          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x05, 0x00, 0x7f,
1182          0x00, 0x09, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x05, 0x00, 0x7f, 0x00, 0x09,
1183          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1184         {
1185          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1186          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1187          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1188          0x00, 0xfa, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1189         {
1190          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1191          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x04, 0x00, 0x7f,
1192          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1193          0x00, 0xfa, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1194         {
1195          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1196          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1197          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1198          0x00, 0xfa, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1199         {
1200          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1201          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x04, 0x00, 0x7f,
1202          0x00, 0x08, 0x00, 0xfa, 0x00, 0x8e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1203          0x00, 0xfa, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1204         {
1205          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1206          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x04, 0x00, 0x7f,
1207          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1208          0x00, 0xfa, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1209         {
1210          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1211          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x04, 0x00, 0x7f,
1212          0x00, 0x08, 0x00, 0xfa, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1213          0x00, 0xfa, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1214         {
1215          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1216          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1217          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1218          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1219         {
1220          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1221          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x04, 0x00, 0x7f,
1222          0x00, 0x08, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1223          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1224         {
1225          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1226          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x04, 0x00, 0x7f,
1227          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1228          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1229         {
1230          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1231          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x04, 0x00, 0x7f,
1232          0x00, 0x08, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x08,
1233          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1234         {
1235          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1236          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x03, 0x00, 0x7f,
1237          0x00, 0x07, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1238          0x00, 0xf8, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1239         {
1240          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1241          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1242          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1243          0x00, 0xf8, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1244         {
1245          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1246          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x03, 0x00, 0x7f,
1247          0x00, 0x07, 0x00, 0xf8, 0x00, 0x4c, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1248          0x00, 0xf8, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1249         {
1250          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1251          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1252          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1253          0x00, 0xf8, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1254         {
1255          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1256          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1257          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1258          0x00, 0xf8, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1259         {
1260          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1261          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x03, 0x00, 0x7f,
1262          0x00, 0x07, 0x00, 0xf8, 0x00, 0x3b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1263          0x00, 0xf8, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1264         {
1265          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1266          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x03, 0x00, 0x7f,
1267          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2b, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1268          0x00, 0xf8, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1269         {
1270          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1271          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x03, 0x00, 0x7f,
1272          0x00, 0x07, 0x00, 0xf8, 0x00, 0x2a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1273          0x00, 0xf8, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1274         {
1275          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1276          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1277          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1278          0x00, 0xf8, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1279         {
1280          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1281          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1282          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1283          0x00, 0xf8, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1284         {
1285          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1286          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x03, 0x00, 0x7f,
1287          0x00, 0x07, 0x00, 0xf8, 0x00, 0x1a, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1288          0x00, 0xf8, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1289         {
1290          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1291          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1292          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1293          0x00, 0xf8, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1294         {
1295          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1296          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x03, 0x00, 0x7f,
1297          0x00, 0x07, 0x00, 0xf8, 0x00, 0x19, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1298          0x00, 0xf8, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1299         {
1300          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1301          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1302          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1303          0x00, 0xf8, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1304         {
1305          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1306          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x03, 0x00, 0x7f,
1307          0x00, 0x07, 0x00, 0xf8, 0x00, 0x09, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1308          0x00, 0xf8, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1309         {
1310          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1311          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1312          0x00, 0x07, 0x00, 0xf8, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1313          0x00, 0xf8, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1314         {
1315          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1316          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1317          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1318          0x00, 0xf6, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1319         {
1320          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1321          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1322          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1323          0x00, 0xf6, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1324         {
1325          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1326          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x03, 0x00, 0x7f,
1327          0x00, 0x07, 0x00, 0xf6, 0x00, 0x08, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1328          0x00, 0xf6, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1329         {
1330          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1331          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x03, 0x00, 0x7f,
1332          0x00, 0x07, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x07,
1333          0x00, 0xf6, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1334         {
1335          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1336          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1337          0x00, 0x06, 0x00, 0xf6, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1338          0x00, 0xf6, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1339         {
1340          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1341          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1342          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1343          0x00, 0xf4, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1344         {
1345          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1346          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x02, 0x00, 0x7f,
1347          0x00, 0x06, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1348          0x00, 0xf4, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1349         {
1350          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1351          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1352          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1353          0x00, 0xf4, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1354         {
1355          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1356          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1357          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1358          0x00, 0xf4, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1359         {
1360          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1361          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1362          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1363          0x00, 0xf4, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1364         {
1365          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1366          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1367          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1368          0x00, 0xf4, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1369         {
1370          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1371          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1372          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1373          0x00, 0xf4, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1374         {
1375          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1376          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x02, 0x00, 0x7f,
1377          0x00, 0x06, 0x00, 0xf4, 0x00, 0x06, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1378          0x00, 0xf4, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
1379         {
1380          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
1381          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1382          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1383          0x00, 0xf4, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
1384         {
1385          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
1386          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1387          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1388          0x00, 0xf4, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
1389         {
1390          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
1391          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1392          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1393          0x00, 0xf4, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
1394         {
1395          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
1396          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1397          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1398          0x00, 0xf4, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
1399         {
1400          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
1401          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1402          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1403          0x00, 0xf4, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
1404         {
1405          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
1406          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x02, 0x00, 0x7f,
1407          0x00, 0x06, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1408          0x00, 0xf4, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
1409         {
1410          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
1411          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1412          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1413          0x00, 0xf4, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
1414         {
1415          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
1416          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1417          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1418          0x00, 0xf4, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
1419         {
1420          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
1421          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x02, 0x00, 0x7f,
1422          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x06,
1423          0x00, 0xf4, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
1424         {
1425          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
1426          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1427          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1428          0x00, 0xf4, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
1429         {
1430          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
1431          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1432          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1433          0x00, 0xf4, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
1434         {
1435          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
1436          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1437          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1438          0x00, 0xf4, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
1439         {
1440          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
1441          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x00, 0x00, 0x7f,
1442          0x00, 0x06, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1443          0x00, 0xf4, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
1444         {
1445          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
1446          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1447          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1448          0x00, 0xf4, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
1449         {
1450          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
1451          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1452          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1453          0x00, 0xf4, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
1454         {
1455          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
1456          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1457          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1458          0x00, 0xf4, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
1459         {
1460          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
1461          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1462          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1463          0x00, 0xf4, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
1464         {
1465          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
1466          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1467          0x00, 0x06, 0x00, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1468          0x00, 0xf4, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
1469         {
1470          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1471          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x7f,
1472          0x00, 0x06, 0x00, 0xf2, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1473          0x00, 0xf2, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
1474         {
1475          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1476          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1477          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1478          0x00, 0xf2, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
1479         {
1480          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1481          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1482          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1483          0x00, 0xf2, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
1484         {
1485          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1486          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x7f,
1487          0x00, 0x06, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x06,
1488          0x00, 0xf2, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
1489         {
1490          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1491          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
1492          0x00, 0x05, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1493          0x00, 0xf2, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
1494         {
1495          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1496          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
1497          0x00, 0x05, 0x00, 0xf2, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x05,
1498          0x00, 0xf2, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
1499         {
1500          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
1501          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1502          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1503          0x0f, 0x00, 0x0f, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
1504         {
1505          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
1506          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1507          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1508          0x0f, 0x00, 0x0f, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
1509         {
1510          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
1511          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x05, 0x00,
1512          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xff, 0x00, 0x05, 0x00, 0x70, 0x00,
1513          0x0f, 0x00, 0x0f, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
1514         {
1515          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
1516          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x05, 0x00,
1517          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfd, 0x00, 0x05, 0x00, 0x70, 0x00,
1518          0x0f, 0x00, 0x0f, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
1519         {
1520          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
1521          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x05, 0x00,
1522          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfb, 0x00, 0x05, 0x00, 0x70, 0x00,
1523          0x0f, 0x00, 0x0f, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
1524         {
1525          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
1526          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x05, 0x00,
1527          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xfa, 0x00, 0x05, 0x00, 0x70, 0x00,
1528          0x0f, 0x00, 0x0f, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
1529         {
1530          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
1531          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x05, 0x00,
1532          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf8, 0x00, 0x05, 0x00, 0x70, 0x00,
1533          0x0f, 0x00, 0x0f, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
1534         {
1535          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
1536          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x05, 0x00,
1537          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf7, 0x00, 0x05, 0x00, 0x70, 0x00,
1538          0x0f, 0x00, 0x0f, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
1539         {
1540          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
1541          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x05, 0x00,
1542          0x70, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0xf6, 0x00, 0x05, 0x00, 0x70, 0x00,
1543          0x0f, 0x00, 0x0f, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
1544         {
1545          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
1546          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x05, 0x00,
1547          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf5, 0x00, 0x05, 0x00, 0x70, 0x00,
1548          0x0f, 0x00, 0x0d, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
1549         {
1550          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
1551          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x05, 0x00,
1552          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf4, 0x00, 0x05, 0x00, 0x70, 0x00,
1553          0x0f, 0x00, 0x0d, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
1554         {
1555          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
1556          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x05, 0x00,
1557          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf3, 0x00, 0x05, 0x00, 0x70, 0x00,
1558          0x0f, 0x00, 0x0d, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
1559         {
1560          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
1561          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x05, 0x00,
1562          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x70, 0x00,
1563          0x0f, 0x00, 0x0d, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
1564         {
1565          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
1566          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x05, 0x00,
1567          0x70, 0x00, 0x0f, 0x00, 0x0d, 0x00, 0xf0, 0x00, 0x05, 0x00, 0x70, 0x00,
1568          0x0f, 0x00, 0x0d, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
1569 };
1570
1571 static const struct chan_info_nphy_radio205x chan_info_nphyrev4_2056_A1[] = {
1572         {
1573          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
1574          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1575          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1576          0x00, 0xff, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
1577         {
1578          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
1579          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1580          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1581          0x00, 0xff, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
1582         {
1583          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
1584          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1585          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1586          0x00, 0xff, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
1587         {
1588          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
1589          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1590          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1591          0x00, 0xff, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
1592         {
1593          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
1594          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1595          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1596          0x00, 0xff, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
1597         {
1598          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
1599          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1600          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1601          0x00, 0xff, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
1602         {
1603          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
1604          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1605          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1606          0x00, 0xff, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
1607         {
1608          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
1609          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0e, 0x00, 0x7f,
1610          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0e, 0x00, 0x7f, 0x00, 0x0f,
1611          0x00, 0xff, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
1612         {
1613          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
1614          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1615          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1616          0x00, 0xff, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
1617         {
1618          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
1619          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1620          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1621          0x00, 0xff, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
1622         {
1623          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
1624          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1625          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1626          0x00, 0xff, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
1627         {
1628          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
1629          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1630          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1631          0x00, 0xff, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
1632         {
1633          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
1634          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1635          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1636          0x00, 0xff, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
1637         {
1638          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
1639          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1640          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1641          0x00, 0xff, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
1642         {
1643          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
1644          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1645          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1646          0x00, 0xff, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
1647         {
1648          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
1649          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1650          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1651          0x00, 0xff, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
1652         {
1653          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
1654          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1655          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1656          0x00, 0xff, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
1657         {
1658          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
1659          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0d, 0x00, 0x7f,
1660          0x00, 0x0f, 0x00, 0xff, 0x00, 0xff, 0x00, 0x0d, 0x00, 0x7f, 0x00, 0x0f,
1661          0x00, 0xff, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
1662         {
1663          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
1664          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1665          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1666          0x00, 0xfe, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
1667         {
1668          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
1669          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1670          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1671          0x00, 0xfe, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
1672         {
1673          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
1674          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1675          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1676          0x00, 0xfe, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
1677         {
1678          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
1679          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1680          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1681          0x00, 0xfe, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
1682         {
1683          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
1684          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1685          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1686          0x00, 0xfe, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
1687         {
1688          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
1689          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1690          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1691          0x00, 0xfe, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
1692         {
1693          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
1694          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0c, 0x00, 0x7f,
1695          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1696          0x00, 0xfe, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
1697         {
1698          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
1699          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1700          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1701          0x00, 0xfe, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
1702         {
1703          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
1704          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0c, 0x00, 0x7f,
1705          0x00, 0x0f, 0x00, 0xfe, 0x00, 0xef, 0x00, 0x0c, 0x00, 0x7f, 0x00, 0x0f,
1706          0x00, 0xfe, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
1707         {
1708          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
1709          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xef, 0x00, 0x0a, 0x00, 0x7f,
1710          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xef, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1711          0x00, 0xfc, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
1712         {
1713          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
1714          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1715          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1716          0x00, 0xfc, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
1717         {
1718          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1719          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1720          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1721          0x00, 0xfc, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
1722         {
1723          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1724          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xdf, 0x00, 0x0a, 0x00, 0x7f,
1725          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xdf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1726          0x00, 0xfc, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
1727         {
1728          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1729          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1730          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1731          0x00, 0xfc, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
1732         {
1733          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1734          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1735          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1736          0x00, 0xfc, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
1737         {
1738          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1739          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1740          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1741          0x00, 0xfc, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
1742         {
1743          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1744          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xcf, 0x00, 0x0a, 0x00, 0x7f,
1745          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xcf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1746          0x00, 0xfc, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
1747         {
1748          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
1749          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1750          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1751          0x00, 0xfc, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
1752         {
1753          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
1754          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xbf, 0x00, 0x0a, 0x00, 0x7f,
1755          0x00, 0x0f, 0x00, 0xfc, 0x00, 0xbf, 0x00, 0x0a, 0x00, 0x7f, 0x00, 0x0f,
1756          0x00, 0xfc, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
1757         {
1758          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
1759          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1760          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1761          0x00, 0xfa, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
1762         {
1763          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
1764          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1765          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1766          0x00, 0xfa, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
1767         {
1768          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
1769          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xbf, 0x00, 0x08, 0x00, 0x7f,
1770          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xbf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1771          0x00, 0xfa, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
1772         {
1773          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
1774          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1775          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1776          0x00, 0xfa, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
1777         {
1778          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
1779          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xaf, 0x00, 0x08, 0x00, 0x7f,
1780          0x00, 0x0f, 0x00, 0xfa, 0x00, 0xaf, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1781          0x00, 0xfa, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
1782         {
1783          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
1784          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1785          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1786          0x00, 0xfa, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
1787         {
1788          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
1789          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1790          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1791          0x00, 0xfa, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
1792         {
1793          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
1794          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1795          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1796          0x00, 0xfa, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
1797         {
1798          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1799          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x9f, 0x00, 0x08, 0x00, 0x7f,
1800          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x9f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1801          0x00, 0xfa, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
1802         {
1803          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1804          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x8f, 0x00, 0x08, 0x00, 0x7f,
1805          0x00, 0x0f, 0x00, 0xfa, 0x00, 0x8f, 0x00, 0x08, 0x00, 0x7f, 0x00, 0x0f,
1806          0x00, 0xfa, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
1807         {
1808          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1809          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1810          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1811          0x00, 0xf8, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
1812         {
1813          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1814          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8f, 0x00, 0x07, 0x00, 0x7f,
1815          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8f, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1816          0x00, 0xf8, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
1817         {
1818          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1819          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1820          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1821          0x00, 0xf8, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
1822         {
1823          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1824          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x8e, 0x00, 0x07, 0x00, 0x7f,
1825          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x8e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1826          0x00, 0xf8, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
1827         {
1828          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
1829          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7e, 0x00, 0x07, 0x00, 0x7f,
1830          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7e, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1831          0x00, 0xf8, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
1832         {
1833          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
1834          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x7d, 0x00, 0x07, 0x00, 0x7f,
1835          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x7d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1836          0x00, 0xf8, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
1837         {
1838          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
1839          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1840          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1841          0x00, 0xf8, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
1842         {
1843          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
1844          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x6d, 0x00, 0x07, 0x00, 0x7f,
1845          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x6d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1846          0x00, 0xf8, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
1847         {
1848          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
1849          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5d, 0x00, 0x07, 0x00, 0x7f,
1850          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5d, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1851          0x00, 0xf8, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
1852         {
1853          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
1854          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x5c, 0x00, 0x07, 0x00, 0x7f,
1855          0x00, 0x0f, 0x00, 0xf8, 0x00, 0x5c, 0x00, 0x07, 0x00, 0x7f, 0x00, 0x0f,
1856          0x00, 0xf8, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
1857         {
1858          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
1859          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x5c, 0x00, 0x06, 0x00, 0x7f,
1860          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x5c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1861          0x00, 0xf6, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
1862         {
1863          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
1864          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1865          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1866          0x00, 0xf6, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
1867         {
1868          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
1869          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x4c, 0x00, 0x06, 0x00, 0x7f,
1870          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x4c, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1871          0x00, 0xf6, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
1872         {
1873          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
1874          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1875          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1876          0x00, 0xf6, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
1877         {
1878          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1879          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1880          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1881          0x00, 0xf6, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
1882         {
1883          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1884          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x3b, 0x00, 0x06, 0x00, 0x7f,
1885          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x3b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1886          0x00, 0xf6, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
1887         {
1888          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1889          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2b, 0x00, 0x06, 0x00, 0x7f,
1890          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2b, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1891          0x00, 0xf6, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
1892         {
1893          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1894          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x2a, 0x00, 0x06, 0x00, 0x7f,
1895          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x2a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1896          0x00, 0xf6, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
1897         {
1898          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1899          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1900          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1901          0x00, 0xf6, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
1902         {
1903          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1904          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x1a, 0x00, 0x06, 0x00, 0x7f,
1905          0x00, 0x0d, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x7f, 0x00, 0x0d,
1906          0x00, 0xf6, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
1907         {
1908          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
1909          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x1a, 0x00, 0x04, 0x00, 0x7f,
1910          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1911          0x00, 0xf4, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
1912         {
1913          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
1914          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1915          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1916          0x00, 0xf4, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
1917         {
1918          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
1919          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x19, 0x00, 0x04, 0x00, 0x7f,
1920          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x19, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1921          0x00, 0xf4, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
1922         {
1923          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
1924          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1925          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1926          0x00, 0xf4, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
1927         {
1928          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
1929          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x09, 0x00, 0x04, 0x00, 0x7f,
1930          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x09, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1931          0x00, 0xf4, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
1932         {
1933          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
1934          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1935          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1936          0x00, 0xf4, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
1937         {
1938          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
1939          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1940          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1941          0x00, 0xf4, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
1942         {
1943          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
1944          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1945          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1946          0x00, 0xf4, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
1947         {
1948          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
1949          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x08, 0x00, 0x04, 0x00, 0x7f,
1950          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x08, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1951          0x00, 0xf4, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
1952         {
1953          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
1954          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x07, 0x00, 0x04, 0x00, 0x7f,
1955          0x00, 0x0b, 0x00, 0xf4, 0x00, 0x07, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x0b,
1956          0x00, 0xf4, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
1957         {
1958          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
1959          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1960          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1961          0x00, 0xf2, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
1962         {
1963          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
1964          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1965          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1966          0x00, 0xf2, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
1967         {
1968          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
1969          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x07, 0x00, 0x03, 0x00, 0x7f,
1970          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x07, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1971          0x00, 0xf2, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
1972         {
1973          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
1974          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1975          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1976          0x00, 0xf2, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
1977         {
1978          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
1979          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1980          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1981          0x00, 0xf2, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
1982         {
1983          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
1984          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1985          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1986          0x00, 0xf2, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
1987         {
1988          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
1989          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1990          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1991          0x00, 0xf2, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
1992         {
1993          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
1994          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
1995          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
1996          0x00, 0xf2, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
1997         {
1998          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
1999          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x06, 0x00, 0x03, 0x00, 0x7f,
2000          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x06, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2001          0x00, 0xf2, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2002         {
2003          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2004          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2005          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2006          0x00, 0xf2, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2007         {
2008          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2009          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2010          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2011          0x00, 0xf2, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2012         {
2013          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2014          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2015          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2016          0x00, 0xf2, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2017         {
2018          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2019          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2020          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2021          0x00, 0xf2, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2022         {
2023          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2024          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2025          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2026          0x00, 0xf2, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2027         {
2028          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2029          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x05, 0x00, 0x03, 0x00, 0x7f,
2030          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2031          0x00, 0xf2, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2032         {
2033          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2034          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2035          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2036          0x00, 0xf2, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2037         {
2038          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2039          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2040          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2041          0x00, 0xf2, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2042         {
2043          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2044          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x04, 0x00, 0x03, 0x00, 0x7f,
2045          0x00, 0x0a, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x0a,
2046          0x00, 0xf2, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2047         {
2048          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2049          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2050          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2051          0x00, 0xf0, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2052         {
2053          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2054          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2055          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2056          0x00, 0xf0, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2057         {
2058          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2059          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2060          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2061          0x00, 0xf0, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2062         {
2063          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2064          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x04, 0x00, 0x02, 0x00, 0x7f,
2065          0x00, 0x09, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2066          0x00, 0xf0, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2067         {
2068          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2069          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2070          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2071          0x00, 0xf0, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2072         {
2073          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2074          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2075          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2076          0x00, 0xf0, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2077         {
2078          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2079          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2080          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2081          0x00, 0xf0, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2082         {
2083          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2084          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2085          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2086          0x00, 0xf0, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2087         {
2088          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2089          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2090          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2091          0x00, 0xf0, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2092         {
2093          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2094          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x03, 0x00, 0x02, 0x00, 0x7f,
2095          0x00, 0x09, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2096          0x00, 0xf0, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2097         {
2098          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2099          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2100          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2101          0x00, 0xf0, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2102         {
2103          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2104          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2105          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2106          0x00, 0xf0, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2107         {
2108          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2109          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x02, 0x00, 0x02, 0x00, 0x7f,
2110          0x00, 0x09, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x09,
2111          0x00, 0xf0, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2112         {
2113          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2114          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f,
2115          0x00, 0x07, 0x00, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2116          0x00, 0xf0, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2117         {
2118          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2119          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f,
2120          0x00, 0x07, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x07,
2121          0x00, 0xf0, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2122         {
2123          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2124          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2125          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2126          0x0f, 0x00, 0x0e, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2127         {
2128          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2129          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2130          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2131          0x0f, 0x00, 0x0e, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2132         {
2133          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2134          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xff, 0x00, 0x04, 0x00,
2135          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xff, 0x00, 0x04, 0x00, 0x70, 0x00,
2136          0x0f, 0x00, 0x0e, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2137         {
2138          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2139          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x04, 0x00,
2140          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfd, 0x00, 0x04, 0x00, 0x70, 0x00,
2141          0x0f, 0x00, 0x0e, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2142         {
2143          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2144          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x04, 0x00,
2145          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfb, 0x00, 0x04, 0x00, 0x70, 0x00,
2146          0x0f, 0x00, 0x0e, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2147         {
2148          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2149          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00,
2150          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x70, 0x00,
2151          0x0f, 0x00, 0x0e, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2152         {
2153          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2154          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x04, 0x00,
2155          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf8, 0x00, 0x04, 0x00, 0x70, 0x00,
2156          0x0f, 0x00, 0x0e, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2157         {
2158          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2159          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x04, 0x00,
2160          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf7, 0x00, 0x04, 0x00, 0x70, 0x00,
2161          0x0f, 0x00, 0x0e, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2162         {
2163          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2164          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00,
2165          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x70, 0x00,
2166          0x0f, 0x00, 0x0e, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2167         {
2168          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2169          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x04, 0x00,
2170          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf5, 0x00, 0x04, 0x00, 0x70, 0x00,
2171          0x0f, 0x00, 0x0e, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2172         {
2173          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2174          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x04, 0x00,
2175          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf4, 0x00, 0x04, 0x00, 0x70, 0x00,
2176          0x0f, 0x00, 0x0e, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2177         {
2178          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2179          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x04, 0x00,
2180          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0x00, 0x04, 0x00, 0x70, 0x00,
2181          0x0f, 0x00, 0x0e, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2182         {
2183          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2184          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x04, 0x00,
2185          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf2, 0x00, 0x04, 0x00, 0x70, 0x00,
2186          0x0f, 0x00, 0x0e, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2187         {
2188          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2189          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x04, 0x00,
2190          0x70, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x04, 0x00, 0x70, 0x00,
2191          0x0f, 0x00, 0x0e, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2192 };
2193
2194 static const struct chan_info_nphy_radio205x chan_info_nphyrev5_2056v5[] = {
2195         {
2196          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2197          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2198          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
2199          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2200         {
2201          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2202          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2203          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2204          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2205         {
2206          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2207          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2208          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2209          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2210         {
2211          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2212          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
2213          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
2214          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2215         {
2216          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2217          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2218          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
2219          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2220         {
2221          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2222          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2223          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2224          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2225         {
2226          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2227          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2228          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2229          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2230         {
2231          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2232          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2233          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2234          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2235         {
2236          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2237          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2238          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2239          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2240         {
2241          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2242          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
2243          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
2244          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2245         {
2246          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2247          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2248          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
2249          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2250         {
2251          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2252          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
2253          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2254          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2255         {
2256          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2257          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2258          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2259          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2260         {
2261          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2262          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
2263          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2264          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2265         {
2266          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2267          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
2268          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
2269          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2270         {
2271          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2272          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
2273          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2274          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2275         {
2276          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2277          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2278          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2279          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2280         {
2281          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2282          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2283          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2284          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2285         {
2286          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2287          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2288          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2289          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2290         {
2291          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2292          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2293          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2294          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2295         {
2296          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2297          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
2298          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
2299          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2300         {
2301          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2302          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
2303          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
2304          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2305         {
2306          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2307          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2308          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
2309          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2310         {
2311          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2312          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
2313          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
2314          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2315         {
2316          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2317          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
2318          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2319          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2320         {
2321          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2322          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2323          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2324          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2325         {
2326          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2327          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2328          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2329          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2330         {
2331          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2332          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2333          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2334          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2335         {
2336          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2337          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2338          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2339          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2340         {
2341          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2342          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
2343          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
2344          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2345         {
2346          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2347          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xea, 0x00, 0x06, 0x00, 0x70,
2348          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
2349          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2350         {
2351          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2352          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2353          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2354          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2355         {
2356          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2357          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xe9, 0x00, 0x05, 0x00, 0x70,
2358          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2359          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2360         {
2361          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2362          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xd9, 0x00, 0x05, 0x00, 0x70,
2363          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
2364          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2365         {
2366          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2367          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xd8, 0x00, 0x04, 0x00, 0x70,
2368          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2369          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2370         {
2371          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2372          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2373          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2374          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2375         {
2376          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
2377          0x03, 0x03, 0x03, 0x8f, 0x0f, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2378          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2379          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
2380         {
2381          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
2382          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2383          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2384          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
2385         {
2386          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
2387          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xc8, 0x00, 0x04, 0x00, 0x70,
2388          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2389          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
2390         {
2391          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
2392          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb8, 0x00, 0x04, 0x00, 0x70,
2393          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2394          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
2395         {
2396          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
2397          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x04, 0x00, 0x70,
2398          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
2399          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
2400         {
2401          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
2402          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xb7, 0x00, 0x03, 0x00, 0x70,
2403          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
2404          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
2405         {
2406          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
2407          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa7, 0x00, 0x03, 0x00, 0x70,
2408          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2409          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
2410         {
2411          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
2412          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2413          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2414          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
2415         {
2416          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
2417          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0xa6, 0x00, 0x03, 0x00, 0x70,
2418          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2419          0x00, 0x5b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
2420         {
2421          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2422          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x96, 0x00, 0x03, 0x00, 0x70,
2423          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2424          0x00, 0x5a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
2425         {
2426          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2427          0x03, 0x03, 0x03, 0x8f, 0x0e, 0x00, 0xff, 0x95, 0x00, 0x03, 0x00, 0x70,
2428          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2429          0x00, 0x5a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
2430         {
2431          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2432          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2433          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
2434          0x00, 0x5a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
2435         {
2436          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2437          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2438          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2439          0x00, 0x5a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
2440         {
2441          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2442          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x95, 0x00, 0x03, 0x00, 0x70,
2443          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
2444          0x00, 0x5a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
2445         {
2446          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2447          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xc8, 0x85, 0x00, 0x02, 0x00, 0x70,
2448          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2449          0x00, 0x59, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
2450         {
2451          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
2452          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2453          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2454          0x00, 0x59, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
2455         {
2456          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
2457          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2458          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
2459          0x00, 0x59, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
2460         {
2461          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
2462          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x84, 0x00, 0x02, 0x00, 0x70,
2463          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
2464          0x00, 0x69, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
2465         {
2466          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
2467          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x74, 0x00, 0x01, 0x00, 0x70,
2468          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2469          0x00, 0x69, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
2470         {
2471          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
2472          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2473          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2474          0x00, 0x68, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
2475         {
2476          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
2477          0x04, 0x04, 0x04, 0x8d, 0x0d, 0x00, 0xc8, 0x73, 0x00, 0x01, 0x00, 0x70,
2478          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2479          0x00, 0x68, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
2480         {
2481          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
2482          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2483          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2484          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
2485         {
2486          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
2487          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2488          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2489          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
2490         {
2491          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
2492          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
2493          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
2494          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
2495         {
2496          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
2497          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x63, 0x00, 0x01, 0x00, 0x70,
2498          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
2499          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
2500         {
2501          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2502          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2503          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2504          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
2505         {
2506          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2507          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2508          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2509          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
2510         {
2511          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2512          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x62, 0x00, 0x00, 0x00, 0x70,
2513          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
2514          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
2515         {
2516          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2517          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2518          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2519          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
2520         {
2521          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2522          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x52, 0x00, 0x00, 0x00, 0x70,
2523          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2524          0x00, 0x76, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
2525         {
2526          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2527          0x04, 0x04, 0x04, 0x8d, 0x0b, 0x00, 0x84, 0x51, 0x00, 0x00, 0x00, 0x70,
2528          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2529          0x00, 0x76, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
2530         {
2531          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
2532          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2533          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2534          0x00, 0x76, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
2535         {
2536          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
2537          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2538          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2539          0x00, 0x76, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
2540         {
2541          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
2542          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2543          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2544          0x00, 0x76, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
2545         {
2546          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
2547          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2548          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2549          0x00, 0x76, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
2550         {
2551          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
2552          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x51, 0x00, 0x00, 0x00, 0x70,
2553          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
2554          0x00, 0x75, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
2555         {
2556          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
2557          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2558          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2559          0x00, 0x75, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
2560         {
2561          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
2562          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x50, 0x00, 0x00, 0x00, 0x70,
2563          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2564          0x00, 0x75, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
2565         {
2566          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
2567          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2568          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2569          0x00, 0x74, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
2570         {
2571          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
2572          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2573          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2574          0x00, 0x74, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
2575         {
2576          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
2577          0x05, 0x05, 0x05, 0x8b, 0x09, 0x00, 0x70, 0x40, 0x00, 0x00, 0x00, 0x70,
2578          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2579          0x00, 0x74, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
2580         {
2581          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2582          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2583          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2584          0x00, 0x74, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
2585         {
2586          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2587          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2588          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2589          0x00, 0x74, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
2590         {
2591          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2592          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2593          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2594          0x00, 0x74, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
2595         {
2596          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
2597          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
2598          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2599          0x00, 0x74, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
2600         {
2601          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2602          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2603          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
2604          0x00, 0x84, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
2605         {
2606          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
2607          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2608          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2609          0x00, 0x83, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
2610         {
2611          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2612          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2613          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2614          0x00, 0x83, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
2615         {
2616          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
2617          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2618          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2619          0x00, 0x83, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
2620         {
2621          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2622          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2623          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2624          0x00, 0x83, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
2625         {
2626          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
2627          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x70,
2628          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2629          0x00, 0x83, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
2630         {
2631          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
2632          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2633          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2634          0x00, 0x83, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
2635         {
2636          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
2637          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2638          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2639          0x00, 0x82, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
2640         {
2641          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
2642          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2643          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2644          0x00, 0x82, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
2645         {
2646          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
2647          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x70,
2648          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2649          0x00, 0x82, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
2650         {
2651          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
2652          0x05, 0x05, 0x05, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2653          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2654          0x00, 0x82, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
2655         {
2656          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
2657          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2658          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2659          0x00, 0x82, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
2660         {
2661          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
2662          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2663          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2664          0x00, 0x82, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
2665         {
2666          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
2667          0x06, 0x06, 0x06, 0x8a, 0x06, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x70,
2668          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2669          0x00, 0x82, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
2670         {
2671          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
2672          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2673          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2674          0x00, 0x82, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
2675         {
2676          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
2677          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2678          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2679          0x00, 0x82, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
2680         {
2681          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
2682          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2683          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2684          0x00, 0x82, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
2685         {
2686          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
2687          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2688          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2689          0x00, 0x82, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
2690         {
2691          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
2692          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2693          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2694          0x00, 0x82, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
2695         {
2696          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
2697          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2698          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2699          0x00, 0x82, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
2700         {
2701          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
2702          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2703          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2704          0x00, 0x72, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
2705         {
2706          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
2707          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x70,
2708          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2709          0x00, 0x72, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
2710         {
2711          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
2712          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2713          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2714          0x00, 0x72, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
2715         {
2716          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2717          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2718          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2719          0x00, 0x72, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
2720         {
2721          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2722          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2723          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2724          0x00, 0x71, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
2725         {
2726          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2727          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2728          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2729          0x00, 0x71, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
2730         {
2731          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2732          0x06, 0x06, 0x06, 0x88, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70,
2733          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2734          0x00, 0x71, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
2735         {
2736          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2737          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2738          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2739          0x00, 0x71, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
2740         {
2741          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2742          0x06, 0x06, 0x06, 0x87, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
2743          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
2744          0x00, 0x71, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
2745         {
2746          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
2747          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2748          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2749          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
2750         {
2751          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
2752          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x03, 0x00,
2753          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x1f, 0x00, 0x03, 0x00, 0x70, 0x00,
2754          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
2755         {
2756          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
2757          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00,
2758          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x70, 0x00,
2759          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
2760         {
2761          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
2762          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x03, 0x00,
2763          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x03, 0x00, 0x70, 0x00,
2764          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
2765         {
2766          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
2767          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x03, 0x00,
2768          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x70, 0x00,
2769          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
2770         {
2771          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
2772          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x03, 0x00,
2773          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x03, 0x00, 0x70, 0x00,
2774          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
2775         {
2776          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
2777          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00,
2778          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x03, 0x00, 0x70, 0x00,
2779          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
2780         {
2781          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
2782          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00,
2783          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x08, 0x00, 0x02, 0x00, 0x70, 0x00,
2784          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
2785         {
2786          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
2787          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x00,
2788          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x07, 0x00, 0x02, 0x00, 0x70, 0x00,
2789          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
2790         {
2791          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
2792          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00,
2793          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x06, 0x00, 0x02, 0x00, 0x70, 0x00,
2794          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
2795         {
2796          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
2797          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00,
2798          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x05, 0x00, 0x02, 0x00, 0x70, 0x00,
2799          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
2800         {
2801          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
2802          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00,
2803          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x70, 0x00,
2804          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
2805         {
2806          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
2807          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00,
2808          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x03, 0x00, 0x02, 0x00, 0x70, 0x00,
2809          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
2810         {
2811          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
2812          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
2813          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
2814          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
2815 };
2816
2817 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v6[] = {
2818         {
2819          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
2820          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2821          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2822          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
2823         {
2824          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
2825          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2826          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2827          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
2828         {
2829          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
2830          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2831          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2832          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
2833         {
2834          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
2835          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2836          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2837          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
2838         {
2839          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
2840          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2841          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2842          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
2843         {
2844          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
2845          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2846          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2847          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
2848         {
2849          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
2850          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2851          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2852          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
2853         {
2854          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
2855          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2856          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2857          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
2858         {
2859          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
2860          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2861          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2862          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
2863         {
2864          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
2865          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2866          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2867          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
2868         {
2869          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
2870          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2871          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2872          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
2873         {
2874          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
2875          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2876          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2877          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
2878         {
2879          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
2880          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2881          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2882          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
2883         {
2884          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
2885          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2886          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2887          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
2888         {
2889          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
2890          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
2891          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2892          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
2893         {
2894          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
2895          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2896          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2897          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
2898         {
2899          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
2900          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2901          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2902          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
2903         {
2904          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
2905          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
2906          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
2907          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
2908         {
2909          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
2910          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
2911          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2912          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
2913         {
2914          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
2915          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2916          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2917          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
2918         {
2919          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
2920          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2921          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2922          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
2923         {
2924          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
2925          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
2926          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2927          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
2928         {
2929          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
2930          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
2931          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
2932          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
2933         {
2934          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
2935          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2936          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2937          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
2938         {
2939          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
2940          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
2941          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
2942          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
2943         {
2944          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
2945          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2946          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
2947          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
2948         {
2949          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
2950          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
2951          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
2952          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
2953         {
2954          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
2955          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2956          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2957          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
2958         {
2959          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
2960          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
2961          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2962          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
2963         {
2964          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
2965          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
2966          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2967          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
2968         {
2969          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
2970          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
2971          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2972          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
2973         {
2974          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
2975          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
2976          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2977          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
2978         {
2979          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
2980          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
2981          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
2982          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
2983         {
2984          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
2985          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2986          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
2987          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
2988         {
2989          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
2990          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
2991          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
2992          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
2993         {
2994          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
2995          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
2996          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
2997          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
2998         {
2999          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3000          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3001          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3002          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3003         {
3004          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3005          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3006          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3007          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3008         {
3009          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3010          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
3011          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3012          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3013         {
3014          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3015          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
3016          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
3017          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3018         {
3019          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3020          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
3021          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3022          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3023         {
3024          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3025          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3026          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3027          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3028         {
3029          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3030          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
3031          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
3032          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3033         {
3034          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3035          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3036          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3037          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3038         {
3039          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3040          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
3041          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3042          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3043         {
3044          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3045          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
3046          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3047          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3048         {
3049          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3050          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3051          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3052          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3053         {
3054          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3055          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
3056          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
3057          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3058         {
3059          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3060          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
3061          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3062          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3063         {
3064          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3065          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
3066          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3067          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3068         {
3069          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3070          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3071          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
3072          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3073         {
3074          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3075          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
3076          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
3077          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3078         {
3079          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3080          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3081          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3082          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3083         {
3084          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3085          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
3086          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3087          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3088         {
3089          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3090          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
3091          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
3092          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3093         {
3094          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3095          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
3096          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3097          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3098         {
3099          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3100          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
3101          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3102          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3103         {
3104          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3105          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3106          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3107          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3108         {
3109          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3110          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
3111          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3112          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3113         {
3114          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3115          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3116          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3117          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3118         {
3119          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3120          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
3121          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3122          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3123         {
3124          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3125          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
3126          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3127          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3128         {
3129          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3130          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3131          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3132          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3133         {
3134          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3135          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
3136          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3137          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3138         {
3139          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3140          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
3141          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
3142          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3143         {
3144          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3145          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
3146          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3147          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3148         {
3149          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3150          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
3151          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3152          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3153         {
3154          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3155          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3156          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3157          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3158         {
3159          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3160          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
3161          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
3162          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3163         {
3164          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3165          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3166          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3167          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3168         {
3169          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3170          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
3171          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3172          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3173         {
3174          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3175          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
3176          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3177          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3178         {
3179          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3180          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3181          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
3182          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3183         {
3184          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3185          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
3186          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3187          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3188         {
3189          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3190          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
3191          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3192          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3193         {
3194          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3195          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3196          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3197          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3198         {
3199          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3200          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3201          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3202          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3203         {
3204          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3205          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3206          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3207          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3208         {
3209          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3210          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3211          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3212          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3213         {
3214          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3215          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3216          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3217          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3218         {
3219          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3220          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
3221          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3222          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3223         {
3224          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3225          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3226          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3227          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3228         {
3229          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3230          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3231          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3232          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3233         {
3234          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3235          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3236          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3237          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3238         {
3239          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3240          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
3241          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
3242          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3243         {
3244          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3245          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
3246          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3247          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3248         {
3249          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3250          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3251          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3252          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3253         {
3254          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3255          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
3256          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3257          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3258         {
3259          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3260          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3261          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3262          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3263         {
3264          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3265          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3266          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3267          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3268         {
3269          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3270          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3271          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3272          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3273         {
3274          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3275          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
3276          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3277          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3278         {
3279          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3280          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3281          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3282          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3283         {
3284          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3285          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
3286          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3287          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3288         {
3289          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3290          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3291          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3292          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3293         {
3294          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3295          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3296          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3297          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3298         {
3299          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3300          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3301          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3302          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3303         {
3304          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3305          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3306          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3307          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3308         {
3309          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3310          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3311          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3312          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3313         {
3314          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3315          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3316          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3317          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3318         {
3319          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3320          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3321          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3322          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3323         {
3324          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3325          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3326          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
3327          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3328         {
3329          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3330          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3331          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3332          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3333         {
3334          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3335          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3336          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3337          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3338         {
3339          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3340          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3341          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3342          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3343         {
3344          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3345          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3346          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3347          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3348         {
3349          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3350          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3351          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3352          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3353         {
3354          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3355          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3356          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3357          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3358         {
3359          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3360          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3361          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3362          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3363         {
3364          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3365          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
3366          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
3367          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3368         {
3369          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3370          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3371          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3372          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3373         {
3374          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3375          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
3376          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
3377          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
3378         {
3379          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
3380          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
3381          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x67, 0x00, 0x03, 0x00, 0x70, 0x00,
3382          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
3383         {
3384          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
3385          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
3386          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x57, 0x00, 0x03, 0x00, 0x70, 0x00,
3387          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
3388         {
3389          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
3390          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
3391          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x56, 0x00, 0x03, 0x00, 0x70, 0x00,
3392          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
3393         {
3394          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
3395          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
3396          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x46, 0x00, 0x03, 0x00, 0x70, 0x00,
3397          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
3398         {
3399          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
3400          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
3401          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
3402          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
3403         {
3404          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
3405          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
3406          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
3407          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
3408         {
3409          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
3410          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
3411          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x23, 0x00, 0x02, 0x00, 0x70, 0x00,
3412          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
3413         {
3414          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
3415          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
3416          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x12, 0x00, 0x02, 0x00, 0x70, 0x00,
3417          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
3418         {
3419          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
3420          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
3421          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x70, 0x00,
3422          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
3423         {
3424          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
3425          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3426          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3427          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
3428         {
3429          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
3430          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
3431          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x01, 0x00, 0x02, 0x00, 0x70, 0x00,
3432          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
3433         {
3434          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
3435          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
3436          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
3437          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
3438 };
3439
3440 static const struct chan_info_nphy_radio205x chan_info_nphyrev5n6_2056v7[] = {
3441         {
3442          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
3443          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3444          0x00, 0x0f, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0f,
3445          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
3446         {
3447          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
3448          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3449          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3450          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
3451         {
3452          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
3453          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3454          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3455          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
3456         {
3457          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
3458          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0b, 0x00, 0x70,
3459          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0b, 0x00, 0x70, 0x00, 0x0e,
3460          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
3461         {
3462          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
3463          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3464          0x00, 0x0e, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0e,
3465          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
3466         {
3467          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
3468          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3469          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3470          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
3471         {
3472          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
3473          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3474          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3475          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
3476         {
3477          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
3478          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3479          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3480          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
3481         {
3482          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
3483          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3484          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3485          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
3486         {
3487          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
3488          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x70,
3489          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x0a, 0x00, 0x70, 0x00, 0x0d,
3490          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
3491         {
3492          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
3493          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3494          0x00, 0x0d, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0d,
3495          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
3496         {
3497          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
3498          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x09, 0x00, 0x70,
3499          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xff, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3500          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
3501         {
3502          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
3503          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3504          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3505          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
3506         {
3507          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
3508          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x70,
3509          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3510          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
3511         {
3512          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
3513          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x70,
3514          0x00, 0x0c, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x70, 0x00, 0x0c,
3515          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
3516         {
3517          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
3518          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x70,
3519          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3520          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
3521         {
3522          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
3523          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3524          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3525          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
3526         {
3527          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
3528          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3529          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3530          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
3531         {
3532          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
3533          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3534          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3535          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
3536         {
3537          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
3538          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3539          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3540          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
3541         {
3542          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
3543          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x70,
3544          0x00, 0x0b, 0x00, 0x9f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0b,
3545          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
3546         {
3547          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
3548          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x70,
3549          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x70, 0x00, 0x0a,
3550          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
3551         {
3552          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
3553          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3554          0x00, 0x0a, 0x00, 0x9f, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x0a,
3555          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
3556         {
3557          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
3558          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x07, 0x00, 0x70,
3559          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x07, 0x00, 0x70, 0x00, 0x09,
3560          0x00, 0x6e, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
3561         {
3562          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
3563          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x06, 0x00, 0x70,
3564          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfb, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3565          0x00, 0x6e, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
3566         {
3567          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
3568          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3569          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3570          0x00, 0x6e, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
3571         {
3572          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
3573          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3574          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3575          0x00, 0x6e, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
3576         {
3577          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
3578          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3579          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3580          0x00, 0x6e, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
3581         {
3582          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
3583          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x06, 0x00, 0x70,
3584          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3585          0x00, 0x6e, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
3586         {
3587          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3588          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xfa, 0x00, 0x06, 0x00, 0x70,
3589          0x00, 0x09, 0x00, 0x9e, 0x00, 0xfa, 0x00, 0x06, 0x00, 0x70, 0x00, 0x09,
3590          0x00, 0x6e, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
3591         {
3592          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3593          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xea, 0x00, 0x06, 0x00, 0x70,
3594          0x00, 0x08, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x06, 0x00, 0x70, 0x00, 0x08,
3595          0x00, 0x6e, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
3596         {
3597          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3598          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xe9, 0x00, 0x05, 0x00, 0x70,
3599          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3600          0x00, 0x6d, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
3601         {
3602          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3603          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xe9, 0x00, 0x05, 0x00, 0x70,
3604          0x00, 0x08, 0x00, 0x9d, 0x00, 0xe9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3605          0x00, 0x6d, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
3606         {
3607          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3608          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xd9, 0x00, 0x05, 0x00, 0x70,
3609          0x00, 0x08, 0x00, 0x9d, 0x00, 0xd9, 0x00, 0x05, 0x00, 0x70, 0x00, 0x08,
3610          0x00, 0x6d, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
3611         {
3612          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3613          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xd8, 0x00, 0x04, 0x00, 0x70,
3614          0x00, 0x07, 0x00, 0x9c, 0x00, 0xd8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3615          0x00, 0x6c, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
3616         {
3617          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
3618          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3619          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3620          0x00, 0x6c, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
3621         {
3622          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
3623          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3624          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3625          0x00, 0x6c, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
3626         {
3627          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
3628          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3629          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3630          0x00, 0x6c, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
3631         {
3632          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
3633          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xc8, 0x00, 0x04, 0x00, 0x70,
3634          0x00, 0x07, 0x00, 0x9c, 0x00, 0xc8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3635          0x00, 0x6c, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
3636         {
3637          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
3638          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb8, 0x00, 0x04, 0x00, 0x70,
3639          0x00, 0x07, 0x00, 0x9c, 0x00, 0xb8, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3640          0x00, 0x6c, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
3641         {
3642          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
3643          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xb7, 0x00, 0x04, 0x00, 0x70,
3644          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x04, 0x00, 0x70, 0x00, 0x07,
3645          0x00, 0x6b, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
3646         {
3647          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
3648          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xb7, 0x00, 0x03, 0x00, 0x70,
3649          0x00, 0x07, 0x00, 0x9b, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x07,
3650          0x00, 0x6b, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
3651         {
3652          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
3653          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa7, 0x00, 0x03, 0x00, 0x70,
3654          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa7, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3655          0x00, 0x6b, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
3656         {
3657          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
3658          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3659          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3660          0x00, 0x6b, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
3661         {
3662          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
3663          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0xa6, 0x00, 0x03, 0x00, 0x70,
3664          0x00, 0x06, 0x00, 0x9b, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3665          0x00, 0x7b, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
3666         {
3667          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3668          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x96, 0x00, 0x03, 0x00, 0x70,
3669          0x00, 0x06, 0x00, 0x9a, 0x00, 0x96, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3670          0x00, 0x7a, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
3671         {
3672          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3673          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3674          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3675          0x00, 0x7a, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
3676         {
3677          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3678          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x70,
3679          0x00, 0x06, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x06,
3680          0x00, 0x7a, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
3681         {
3682          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3683          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x95, 0x00, 0x03, 0x00, 0x70,
3684          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3685          0x00, 0x7a, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
3686         {
3687          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3688          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x95, 0x00, 0x03, 0x00, 0x70,
3689          0x00, 0x05, 0x00, 0x9a, 0x00, 0x95, 0x00, 0x03, 0x00, 0x70, 0x00, 0x05,
3690          0x00, 0x7a, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
3691         {
3692          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3693          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x85, 0x00, 0x02, 0x00, 0x70,
3694          0x00, 0x05, 0x00, 0x99, 0x00, 0x85, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3695          0x00, 0x79, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
3696         {
3697          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
3698          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x70,
3699          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3700          0x00, 0x79, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
3701         {
3702          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
3703          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3704          0x00, 0x05, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x05,
3705          0x00, 0x79, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
3706         {
3707          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
3708          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x02, 0x00, 0x70,
3709          0x00, 0x04, 0x00, 0x99, 0x00, 0x84, 0x00, 0x02, 0x00, 0x70, 0x00, 0x04,
3710          0x00, 0x79, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
3711         {
3712          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
3713          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x74, 0x00, 0x01, 0x00, 0x70,
3714          0x00, 0x04, 0x00, 0x99, 0x00, 0x74, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3715          0x00, 0x79, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
3716         {
3717          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
3718          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x01, 0x00, 0x70,
3719          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3720          0x00, 0x78, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
3721         {
3722          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
3723          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x01, 0x00, 0x70,
3724          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3725          0x00, 0x78, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
3726         {
3727          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
3728          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3729          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3730          0x00, 0x78, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
3731         {
3732          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
3733          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x01, 0x00, 0x70,
3734          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3735          0x00, 0x78, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
3736         {
3737          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
3738          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x01, 0x00, 0x70,
3739          0x00, 0x04, 0x00, 0x98, 0x00, 0x73, 0x00, 0x01, 0x00, 0x70, 0x00, 0x04,
3740          0x00, 0x78, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
3741         {
3742          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
3743          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x63, 0x00, 0x01, 0x00, 0x70,
3744          0x00, 0x03, 0x00, 0x98, 0x00, 0x63, 0x00, 0x01, 0x00, 0x70, 0x00, 0x03,
3745          0x00, 0x78, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
3746         {
3747          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3748          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x62, 0x00, 0x00, 0x00, 0x70,
3749          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3750          0x00, 0x77, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
3751         {
3752          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3753          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3754          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3755          0x00, 0x77, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
3756         {
3757          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3758          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x70,
3759          0x00, 0x03, 0x00, 0x97, 0x00, 0x62, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03,
3760          0x00, 0x77, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
3761         {
3762          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3763          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x52, 0x00, 0x00, 0x00, 0x70,
3764          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3765          0x00, 0x76, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
3766         {
3767          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3768          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x52, 0x00, 0x00, 0x00, 0x70,
3769          0x00, 0x02, 0x00, 0x96, 0x00, 0x52, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3770          0x00, 0x86, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
3771         {
3772          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3773          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3774          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3775          0x00, 0x86, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
3776         {
3777          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
3778          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3779          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3780          0x00, 0x86, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
3781         {
3782          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
3783          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3784          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3785          0x00, 0x86, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
3786         {
3787          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
3788          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3789          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3790          0x00, 0x86, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
3791         {
3792          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
3793          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x70,
3794          0x00, 0x02, 0x00, 0x96, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3795          0x00, 0x86, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
3796         {
3797          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
3798          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x51, 0x00, 0x00, 0x00, 0x70,
3799          0x00, 0x02, 0x00, 0x95, 0x00, 0x51, 0x00, 0x00, 0x00, 0x70, 0x00, 0x02,
3800          0x00, 0x85, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
3801         {
3802          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
3803          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3804          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3805          0x00, 0x85, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
3806         {
3807          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
3808          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x70,
3809          0x00, 0x01, 0x00, 0x95, 0x00, 0x50, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3810          0x00, 0x85, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
3811         {
3812          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
3813          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x70,
3814          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3815          0x00, 0x84, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
3816         {
3817          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
3818          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3819          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3820          0x00, 0x84, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
3821         {
3822          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
3823          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3824          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3825          0x00, 0x94, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
3826         {
3827          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3828          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3829          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3830          0x00, 0x94, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
3831         {
3832          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3833          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3834          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3835          0x00, 0x94, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
3836         {
3837          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3838          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3839          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3840          0x00, 0x94, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
3841         {
3842          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
3843          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x40, 0x00, 0x00, 0x00, 0x70,
3844          0x00, 0x01, 0x00, 0x94, 0x00, 0x40, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3845          0x00, 0x94, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
3846         {
3847          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3848          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3849          0x00, 0x01, 0x00, 0x94, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x01,
3850          0x00, 0x94, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
3851         {
3852          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
3853          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3854          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3855          0x00, 0x93, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
3856         {
3857          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3858          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3859          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3860          0x00, 0x93, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
3861         {
3862          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
3863          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3864          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3865          0x00, 0x93, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
3866         {
3867          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3868          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x70,
3869          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3870          0x00, 0x93, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
3871         {
3872          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
3873          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x30, 0x00, 0x00, 0x00, 0x70,
3874          0x00, 0x00, 0x00, 0x93, 0x00, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3875          0x00, 0x93, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
3876         {
3877          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
3878          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3879          0x00, 0x00, 0x00, 0x93, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3880          0x00, 0x93, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
3881         {
3882          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
3883          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3884          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3885          0x00, 0x92, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
3886         {
3887          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
3888          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3889          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3890          0x00, 0x92, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
3891         {
3892          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
3893          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x70,
3894          0x00, 0x00, 0x00, 0x92, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3895          0x00, 0x92, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
3896         {
3897          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
3898          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x70,
3899          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3900          0x00, 0x92, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
3901         {
3902          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
3903          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3904          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3905          0x00, 0x92, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
3906         {
3907          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
3908          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3909          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3910          0x00, 0x92, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
3911         {
3912          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
3913          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3914          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3915          0x00, 0x92, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
3916         {
3917          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
3918          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3919          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3920          0x00, 0x92, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
3921         {
3922          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
3923          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3924          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3925          0x00, 0x92, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
3926         {
3927          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
3928          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3929          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3930          0x00, 0x92, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
3931         {
3932          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
3933          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3934          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3935          0x00, 0x92, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
3936         {
3937          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
3938          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3939          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3940          0x00, 0x92, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
3941         {
3942          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
3943          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3944          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3945          0x00, 0x92, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
3946         {
3947          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
3948          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3949          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3950          0x00, 0x92, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
3951         {
3952          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
3953          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70,
3954          0x00, 0x00, 0x00, 0x92, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3955          0x00, 0x92, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
3956         {
3957          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
3958          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3959          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3960          0x00, 0x92, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
3961         {
3962          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
3963          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3964          0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3965          0x00, 0x92, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
3966         {
3967          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
3968          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3969          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3970          0x00, 0x91, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
3971         {
3972          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
3973          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3974          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3975          0x00, 0x91, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
3976         {
3977          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
3978          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3979          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3980          0x00, 0x91, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
3981         {
3982          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
3983          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3984          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3985          0x00, 0x91, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
3986         {
3987          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
3988          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
3989          0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
3990          0x00, 0x91, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
3991         {
3992          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
3993          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3994          0x70, 0x00, 0x0f, 0x00, 0x0b, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
3995          0x0f, 0x00, 0x0b, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
3996         {
3997          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
3998          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
3999          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4000          0x0f, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4001         {
4002          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4003          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x89, 0x00, 0x03, 0x00,
4004          0x70, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4005          0x0f, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4006         {
4007          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4008          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4009          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4010          0x0e, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4011         {
4012          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4013          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x03, 0x00,
4014          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4015          0x0e, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4016         {
4017          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4018          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00,
4019          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4020          0x0e, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4021         {
4022          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4023          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x66, 0x00, 0x03, 0x00,
4024          0x70, 0x00, 0x0e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x03, 0x00, 0x70, 0x00,
4025          0x0e, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4026         {
4027          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4028          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x55, 0x00, 0x02, 0x00,
4029          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4030          0x0e, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4031         {
4032          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4033          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4034          0x70, 0x00, 0x0e, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4035          0x0e, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4036         {
4037          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4038          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4039          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4040          0x0d, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4041         {
4042          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4043          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00,
4044          0x70, 0x00, 0x0d, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4045          0x0d, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4046         {
4047          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4048          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x02, 0x00,
4049          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4050          0x0d, 0x00, 0x08, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4051         {
4052          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4053          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
4054          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4055          0x0d, 0x00, 0x08, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4056         {
4057          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4058          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4059          0x70, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4060          0x0d, 0x00, 0x08, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4061 };
4062
4063 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v8[] = {
4064         {
4065          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x04, 0x0c, 0x01,
4066          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4067          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4068          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4069         {
4070          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x04, 0x0c, 0x01,
4071          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4072          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4073          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4074         {
4075          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x04, 0x0c, 0x01,
4076          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4077          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4078          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4079         {
4080          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x04, 0x0c, 0x01,
4081          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4082          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4083          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4084         {
4085          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x04, 0x0c, 0x01,
4086          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4087          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4088          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4089         {
4090          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x04, 0x0c, 0x01,
4091          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4092          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4093          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4094         {
4095          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x04, 0x0c, 0x01,
4096          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4097          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4098          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4099         {
4100          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x04, 0x0c, 0x01,
4101          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4102          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4103          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4104         {
4105          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x04, 0x0c, 0x01,
4106          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4107          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4108          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4109         {
4110          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x04, 0x0c, 0x01,
4111          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4112          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4113          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4114         {
4115          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x04, 0x0c, 0x01,
4116          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4117          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4118          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4119         {
4120          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x04, 0x0c, 0x01,
4121          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4122          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4123          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4124         {
4125          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x04, 0x0c, 0x01,
4126          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4127          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4128          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4129         {
4130          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x04, 0x0c, 0x01,
4131          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4132          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4133          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4134         {
4135          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x04, 0x0c, 0x01,
4136          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4137          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4138          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4139         {
4140          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x04, 0x0c, 0x01,
4141          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4142          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4143          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4144         {
4145          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x04, 0x0c, 0x01,
4146          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4147          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4148          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4149         {
4150          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x04, 0x0c, 0x01,
4151          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4152          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4153          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4154         {
4155          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x04, 0x0c, 0x01,
4156          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4157          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4158          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4159         {
4160          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x04, 0x0c, 0x01,
4161          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4162          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4163          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4164         {
4165          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x04, 0x0c, 0x01,
4166          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4167          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4168          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4169         {
4170          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x04, 0x0c, 0x01,
4171          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4172          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4173          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4174         {
4175          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x04, 0x0c, 0x01,
4176          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4177          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4178          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4179         {
4180          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x04, 0x0c, 0x01,
4181          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4182          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4183          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4184         {
4185          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x04, 0x0c, 0x01,
4186          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4187          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4188          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4189         {
4190          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x04, 0x0c, 0x01,
4191          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4192          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4193          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4194         {
4195          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x04, 0x0c, 0x01,
4196          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4197          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4198          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4199         {
4200          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x04, 0x0c, 0x01,
4201          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4202          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4203          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4204         {
4205          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x04, 0x0c, 0x01,
4206          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4207          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4208          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4209         {
4210          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4211          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4212          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4213          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4214         {
4215          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4216          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4217          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4218          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4219         {
4220          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4221          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4222          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4223          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4224         {
4225          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4226          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4227          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4228          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4229         {
4230          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4231          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4232          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4233          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4234         {
4235          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4236          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4237          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4238          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4239         {
4240          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x04, 0x0c, 0x01,
4241          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4242          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4243          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4244         {
4245          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x04, 0x0c, 0x01,
4246          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4247          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4248          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4249         {
4250          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x04, 0x0c, 0x01,
4251          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4252          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4253          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4254         {
4255          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x04, 0x0c, 0x01,
4256          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4257          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4258          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4259         {
4260          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x04, 0x0c, 0x01,
4261          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4262          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4263          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4264         {
4265          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x04, 0x0c, 0x01,
4266          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4267          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4268          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4269         {
4270          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x04, 0x0c, 0x01,
4271          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4272          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4273          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4274         {
4275          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x04, 0x0c, 0x01,
4276          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4277          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4278          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4279         {
4280          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x04, 0x0c, 0x01,
4281          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4282          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4283          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4284         {
4285          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x04, 0x0c, 0x01,
4286          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4287          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4288          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4289         {
4290          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4291          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4292          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4293          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4294         {
4295          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4296          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4297          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4298          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4299         {
4300          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4301          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4302          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4303          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4304         {
4305          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4306          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4307          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4308          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4309         {
4310          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4311          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4312          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4313          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4314         {
4315          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4316          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4317          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4318          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4319         {
4320          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x04, 0x0c, 0x01,
4321          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4322          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4323          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4324         {
4325          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x04, 0x0c, 0x01,
4326          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4327          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4328          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4329         {
4330          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x04, 0x0c, 0x01,
4331          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4332          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4333          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4334         {
4335          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x04, 0x0c, 0x01,
4336          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4337          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4338          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4339         {
4340          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x04, 0x0c, 0x01,
4341          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4342          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4343          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4344         {
4345          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x04, 0x0c, 0x01,
4346          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4347          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4348          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4349         {
4350          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x04, 0x0c, 0x01,
4351          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4352          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4353          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4354         {
4355          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x04, 0x0c, 0x01,
4356          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4357          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4358          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4359         {
4360          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x04, 0x0c, 0x01,
4361          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4362          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4363          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4364         {
4365          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x04, 0x0c, 0x01,
4366          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4367          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4368          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4369         {
4370          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4371          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4372          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4373          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4374         {
4375          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4376          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4377          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4378          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
4379         {
4380          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4381          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
4382          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4383          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
4384         {
4385          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4386          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
4387          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4388          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
4389         {
4390          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4391          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
4392          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4393          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
4394         {
4395          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4396          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
4397          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4398          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
4399         {
4400          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x04, 0x0c, 0x01,
4401          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4402          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4403          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
4404         {
4405          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x04, 0x0c, 0x01,
4406          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
4407          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
4408          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
4409         {
4410          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x04, 0x0c, 0x01,
4411          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4412          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4413          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
4414         {
4415          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x04, 0x0c, 0x01,
4416          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
4417          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4418          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
4419         {
4420          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x04, 0x0c, 0x01,
4421          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
4422          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4423          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
4424         {
4425          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x04, 0x0c, 0x01,
4426          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4427          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
4428          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
4429         {
4430          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x04, 0x0c, 0x01,
4431          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
4432          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4433          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
4434         {
4435          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x04, 0x0c, 0x01,
4436          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
4437          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4438          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
4439         {
4440          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x04, 0x0c, 0x01,
4441          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4442          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4443          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
4444         {
4445          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x04, 0x0c, 0x01,
4446          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4447          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4448          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
4449         {
4450          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4451          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4452          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4453          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
4454         {
4455          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4456          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4457          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4458          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
4459         {
4460          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4461          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4462          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4463          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
4464         {
4465          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x07, 0x07, 0x04, 0x10, 0x01,
4466          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
4467          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4468          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
4469         {
4470          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4471          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4472          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4473          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
4474         {
4475          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x07, 0x07, 0x04, 0x10, 0x01,
4476          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4477          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4478          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
4479         {
4480          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4481          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4482          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4483          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
4484         {
4485          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x07, 0x07, 0x04, 0x10, 0x01,
4486          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
4487          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
4488          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
4489         {
4490          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4491          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
4492          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4493          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
4494         {
4495          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x07, 0x07, 0x04, 0x10, 0x01,
4496          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4497          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4498          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
4499         {
4500          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x04, 0x0c, 0x01,
4501          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
4502          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4503          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
4504         {
4505          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x07, 0x07, 0x04, 0x10, 0x01,
4506          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4507          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4508          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
4509         {
4510          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x04, 0x0c, 0x01,
4511          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4512          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4513          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
4514         {
4515          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x07, 0x07, 0x04, 0x10, 0x01,
4516          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4517          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4518          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
4519         {
4520          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x04, 0x0c, 0x01,
4521          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
4522          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4523          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
4524         {
4525          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x07, 0x07, 0x04, 0x10, 0x01,
4526          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4527          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4528          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
4529         {
4530          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x04, 0x0c, 0x01,
4531          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
4532          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4533          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
4534         {
4535          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x07, 0x07, 0x04, 0x10, 0x01,
4536          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4537          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4538          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
4539         {
4540          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x04, 0x0c, 0x01,
4541          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4542          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4543          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
4544         {
4545          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x07, 0x07, 0x04, 0x10, 0x01,
4546          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4547          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4548          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
4549         {
4550          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x04, 0x0c, 0x01,
4551          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4552          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4553          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
4554         {
4555          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x07, 0x07, 0x04, 0x10, 0x01,
4556          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4557          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4558          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
4559         {
4560          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x04, 0x0c, 0x01,
4561          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4562          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4563          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
4564         {
4565          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x07, 0x07, 0x04, 0x10, 0x01,
4566          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4567          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4568          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
4569         {
4570          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x04, 0x0c, 0x01,
4571          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4572          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
4573          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
4574         {
4575          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x04, 0x0c, 0x01,
4576          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4577          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4578          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
4579         {
4580          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x04, 0x0c, 0x01,
4581          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4582          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4583          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
4584         {
4585          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x04, 0x0c, 0x01,
4586          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4587          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4588          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
4589         {
4590          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x04, 0x0c, 0x01,
4591          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4592          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4593          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
4594         {
4595          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x04, 0x0c, 0x01,
4596          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4597          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4598          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
4599         {
4600          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x04, 0x0c, 0x01,
4601          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4602          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4603          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
4604         {
4605          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x04, 0x0c, 0x01,
4606          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4607          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4608          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
4609         {
4610          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x04, 0x0c, 0x01,
4611          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
4612          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
4613          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
4614         {
4615          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x08, 0x08, 0x04, 0x16, 0x01,
4616          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4617          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4618          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
4619         {
4620          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x08, 0x08, 0x04, 0x16, 0x01,
4621          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
4622          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4623          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
4624         {
4625          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x08, 0x08, 0x04, 0x16, 0x01,
4626          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
4627          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
4628          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
4629         {
4630          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x08, 0x08, 0x04, 0x16, 0x01,
4631          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
4632          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
4633          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
4634         {
4635          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x08, 0x08, 0x04, 0x16, 0x01,
4636          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
4637          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
4638          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
4639         {
4640          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x08, 0x08, 0x04, 0x16, 0x01,
4641          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
4642          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
4643          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
4644         {
4645          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x08, 0x08, 0x04, 0x16, 0x01,
4646          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
4647          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
4648          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
4649         {
4650          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x08, 0x08, 0x04, 0x16, 0x01,
4651          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
4652          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
4653          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
4654         {
4655          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x08, 0x08, 0x04, 0x16, 0x01,
4656          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
4657          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
4658          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
4659         {
4660          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x08, 0x08, 0x04, 0x16, 0x01,
4661          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
4662          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
4663          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
4664         {
4665          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x08, 0x08, 0x04, 0x16, 0x01,
4666          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
4667          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
4668          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
4669         {
4670          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x08, 0x08, 0x04, 0x16, 0x01,
4671          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4672          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
4673          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
4674         {
4675          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x08, 0x08, 0x04, 0x16, 0x01,
4676          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
4677          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
4678          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
4679         {
4680          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x08, 0x08, 0x04, 0x16, 0x01,
4681          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
4682          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
4683          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
4684 };
4685
4686 static const struct chan_info_nphy_radio205x chan_info_nphyrev6_2056v11[] = {
4687         {
4688          184, 4920, 0xff, 0x01, 0x01, 0x01, 0xec, 0x05, 0x05, 0x02, 0x0c, 0x01,
4689          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4690          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4691          0x00, 0x6f, 0x00, 0x07b4, 0x07b0, 0x07ac, 0x0214, 0x0215, 0x0216},
4692         {
4693          186, 4930, 0xff, 0x01, 0x01, 0x01, 0xed, 0x05, 0x05, 0x02, 0x0c, 0x01,
4694          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4695          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4696          0x00, 0x6f, 0x00, 0x07b8, 0x07b4, 0x07b0, 0x0213, 0x0214, 0x0215},
4697         {
4698          188, 4940, 0xff, 0x01, 0x01, 0x01, 0xee, 0x05, 0x05, 0x02, 0x0c, 0x01,
4699          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4700          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4701          0x00, 0x6f, 0x00, 0x07bc, 0x07b8, 0x07b4, 0x0212, 0x0213, 0x0214},
4702         {
4703          190, 4950, 0xff, 0x01, 0x01, 0x01, 0xef, 0x05, 0x05, 0x02, 0x0c, 0x01,
4704          0x00, 0x00, 0x00, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4705          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4706          0x00, 0x6f, 0x00, 0x07c0, 0x07bc, 0x07b8, 0x0211, 0x0212, 0x0213},
4707         {
4708          192, 4960, 0xff, 0x01, 0x01, 0x01, 0xf0, 0x05, 0x05, 0x02, 0x0c, 0x01,
4709          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4710          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4711          0x00, 0x6f, 0x00, 0x07c4, 0x07c0, 0x07bc, 0x020f, 0x0211, 0x0212},
4712         {
4713          194, 4970, 0xff, 0x01, 0x01, 0x01, 0xf1, 0x05, 0x05, 0x02, 0x0c, 0x01,
4714          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4715          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4716          0x00, 0x6f, 0x00, 0x07c8, 0x07c4, 0x07c0, 0x020e, 0x020f, 0x0211},
4717         {
4718          196, 4980, 0xff, 0x01, 0x01, 0x01, 0xf2, 0x05, 0x05, 0x02, 0x0c, 0x01,
4719          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4720          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4721          0x00, 0x6f, 0x00, 0x07cc, 0x07c8, 0x07c4, 0x020d, 0x020e, 0x020f},
4722         {
4723          198, 4990, 0xff, 0x01, 0x01, 0x01, 0xf3, 0x05, 0x05, 0x02, 0x0c, 0x01,
4724          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4725          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4726          0x00, 0x6f, 0x00, 0x07d0, 0x07cc, 0x07c8, 0x020c, 0x020d, 0x020e},
4727         {
4728          200, 5000, 0xff, 0x01, 0x01, 0x01, 0xf4, 0x05, 0x05, 0x02, 0x0c, 0x01,
4729          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4730          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4731          0x00, 0x6f, 0x00, 0x07d4, 0x07d0, 0x07cc, 0x020b, 0x020c, 0x020d},
4732         {
4733          202, 5010, 0xff, 0x01, 0x01, 0x01, 0xf5, 0x05, 0x05, 0x02, 0x0c, 0x01,
4734          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4735          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4736          0x00, 0x6f, 0x00, 0x07d8, 0x07d4, 0x07d0, 0x020a, 0x020b, 0x020c},
4737         {
4738          204, 5020, 0xf7, 0x01, 0x01, 0x01, 0xf6, 0x05, 0x05, 0x02, 0x0c, 0x01,
4739          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4740          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4741          0x00, 0x6f, 0x00, 0x07dc, 0x07d8, 0x07d4, 0x0209, 0x020a, 0x020b},
4742         {
4743          206, 5030, 0xf7, 0x01, 0x01, 0x01, 0xf7, 0x05, 0x05, 0x02, 0x0c, 0x01,
4744          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4745          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4746          0x00, 0x6f, 0x00, 0x07e0, 0x07dc, 0x07d8, 0x0208, 0x0209, 0x020a},
4747         {
4748          208, 5040, 0xef, 0x01, 0x01, 0x01, 0xf8, 0x05, 0x05, 0x02, 0x0c, 0x01,
4749          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4750          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4751          0x00, 0x6f, 0x00, 0x07e4, 0x07e0, 0x07dc, 0x0207, 0x0208, 0x0209},
4752         {
4753          210, 5050, 0xef, 0x01, 0x01, 0x01, 0xf9, 0x05, 0x05, 0x02, 0x0c, 0x01,
4754          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4755          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4756          0x00, 0x6f, 0x00, 0x07e8, 0x07e4, 0x07e0, 0x0206, 0x0207, 0x0208},
4757         {
4758          212, 5060, 0xe6, 0x01, 0x01, 0x01, 0xfa, 0x05, 0x05, 0x02, 0x0c, 0x01,
4759          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfe, 0x00, 0x09, 0x00, 0x77,
4760          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfe, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4761          0x00, 0x6f, 0x00, 0x07ec, 0x07e8, 0x07e4, 0x0205, 0x0206, 0x0207},
4762         {
4763          214, 5070, 0xe6, 0x01, 0x01, 0x01, 0xfb, 0x05, 0x05, 0x02, 0x0c, 0x01,
4764          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4765          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4766          0x00, 0x6f, 0x00, 0x07f0, 0x07ec, 0x07e8, 0x0204, 0x0205, 0x0206},
4767         {
4768          216, 5080, 0xde, 0x01, 0x01, 0x01, 0xfc, 0x05, 0x05, 0x02, 0x0c, 0x01,
4769          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4770          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4771          0x00, 0x6f, 0x00, 0x07f4, 0x07f0, 0x07ec, 0x0203, 0x0204, 0x0205},
4772         {
4773          218, 5090, 0xde, 0x01, 0x01, 0x01, 0xfd, 0x05, 0x05, 0x02, 0x0c, 0x01,
4774          0x01, 0x01, 0x01, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x09, 0x00, 0x77,
4775          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x09, 0x00, 0x77, 0x00, 0x0f,
4776          0x00, 0x6f, 0x00, 0x07f8, 0x07f4, 0x07f0, 0x0202, 0x0203, 0x0204},
4777         {
4778          220, 5100, 0xd6, 0x01, 0x01, 0x01, 0xfe, 0x05, 0x05, 0x02, 0x0c, 0x01,
4779          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfd, 0x00, 0x08, 0x00, 0x77,
4780          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfd, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4781          0x00, 0x6f, 0x00, 0x07fc, 0x07f8, 0x07f4, 0x0201, 0x0202, 0x0203},
4782         {
4783          222, 5110, 0xd6, 0x01, 0x01, 0x01, 0xff, 0x05, 0x05, 0x02, 0x0c, 0x01,
4784          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4785          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4786          0x00, 0x6f, 0x00, 0x0800, 0x07fc, 0x07f8, 0x0200, 0x0201, 0x0202},
4787         {
4788          224, 5120, 0xce, 0x01, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02, 0x0c, 0x01,
4789          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4790          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4791          0x00, 0x6f, 0x00, 0x0804, 0x0800, 0x07fc, 0x01ff, 0x0200, 0x0201},
4792         {
4793          226, 5130, 0xce, 0x01, 0x01, 0x02, 0x01, 0x05, 0x05, 0x02, 0x0c, 0x01,
4794          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfc, 0x00, 0x08, 0x00, 0x77,
4795          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfc, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4796          0x00, 0x6f, 0x00, 0x0808, 0x0804, 0x0800, 0x01fe, 0x01ff, 0x0200},
4797         {
4798          228, 5140, 0xc6, 0x01, 0x01, 0x02, 0x02, 0x05, 0x05, 0x02, 0x0c, 0x01,
4799          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfb, 0x00, 0x08, 0x00, 0x77,
4800          0x00, 0x0f, 0x00, 0x6f, 0x00, 0xfb, 0x00, 0x08, 0x00, 0x77, 0x00, 0x0f,
4801          0x00, 0x6f, 0x00, 0x080c, 0x0808, 0x0804, 0x01fd, 0x01fe, 0x01ff},
4802         {
4803          32, 5160, 0xbe, 0x01, 0x01, 0x02, 0x04, 0x05, 0x05, 0x02, 0x0c, 0x01,
4804          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4805          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4806          0x00, 0x6f, 0x00, 0x0814, 0x0810, 0x080c, 0x01fb, 0x01fc, 0x01fd},
4807         {
4808          34, 5170, 0xbe, 0x01, 0x01, 0x02, 0x05, 0x05, 0x05, 0x02, 0x0c, 0x01,
4809          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xfa, 0x00, 0x07, 0x00, 0x77,
4810          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xfa, 0x00, 0x07, 0x00, 0x77, 0x00, 0x0e,
4811          0x00, 0x6f, 0x00, 0x0818, 0x0814, 0x0810, 0x01fa, 0x01fb, 0x01fc},
4812         {
4813          36, 5180, 0xb6, 0x01, 0x01, 0x02, 0x06, 0x05, 0x05, 0x02, 0x0c, 0x01,
4814          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4815          0x00, 0x0e, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0e,
4816          0x00, 0x6f, 0x00, 0x081c, 0x0818, 0x0814, 0x01f9, 0x01fa, 0x01fb},
4817         {
4818          38, 5190, 0xb6, 0x01, 0x01, 0x02, 0x07, 0x05, 0x05, 0x02, 0x0c, 0x01,
4819          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x06, 0x00, 0x77,
4820          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x06, 0x00, 0x77, 0x00, 0x0d,
4821          0x00, 0x6f, 0x00, 0x0820, 0x081c, 0x0818, 0x01f8, 0x01f9, 0x01fa},
4822         {
4823          40, 5200, 0xaf, 0x01, 0x01, 0x02, 0x08, 0x05, 0x05, 0x02, 0x0c, 0x01,
4824          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4825          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4826          0x00, 0x6f, 0x00, 0x0824, 0x0820, 0x081c, 0x01f7, 0x01f8, 0x01f9},
4827         {
4828          42, 5210, 0xaf, 0x01, 0x01, 0x02, 0x09, 0x05, 0x05, 0x02, 0x0c, 0x01,
4829          0x02, 0x02, 0x02, 0x8f, 0x0f, 0x00, 0xff, 0xf9, 0x00, 0x05, 0x00, 0x77,
4830          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xf9, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4831          0x00, 0x6f, 0x00, 0x0828, 0x0824, 0x0820, 0x01f6, 0x01f7, 0x01f8},
4832         {
4833          44, 5220, 0xa7, 0x01, 0x01, 0x02, 0x0a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4834          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xfe, 0xd8, 0x00, 0x05, 0x00, 0x77,
4835          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4836          0x00, 0x6f, 0x00, 0x082c, 0x0828, 0x0824, 0x01f5, 0x01f6, 0x01f7},
4837         {
4838          46, 5230, 0xa7, 0x01, 0x01, 0x02, 0x0b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4839          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xd8, 0x00, 0x05, 0x00, 0x77,
4840          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xd8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4841          0x00, 0x6f, 0x00, 0x0830, 0x082c, 0x0828, 0x01f4, 0x01f5, 0x01f6},
4842         {
4843          48, 5240, 0xa0, 0x01, 0x01, 0x02, 0x0c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4844          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xee, 0xc8, 0x00, 0x05, 0x00, 0x77,
4845          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc8, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4846          0x00, 0x6f, 0x00, 0x0834, 0x0830, 0x082c, 0x01f3, 0x01f4, 0x01f5},
4847         {
4848          50, 5250, 0xa0, 0x01, 0x01, 0x02, 0x0d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4849          0x02, 0x02, 0x02, 0x8e, 0x0f, 0x00, 0xed, 0xc7, 0x00, 0x05, 0x00, 0x77,
4850          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x77, 0x00, 0x0d,
4851          0x00, 0x6f, 0x00, 0x0838, 0x0834, 0x0830, 0x01f2, 0x01f3, 0x01f4},
4852         {
4853          52, 5260, 0x98, 0x01, 0x01, 0x02, 0x0e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4854          0x02, 0x02, 0x02, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4855          0x00, 0x0d, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0d,
4856          0x00, 0x6f, 0x00, 0x083c, 0x0838, 0x0834, 0x01f1, 0x01f2, 0x01f3},
4857         {
4858          54, 5270, 0x98, 0x01, 0x01, 0x02, 0x0f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4859          0x03, 0x03, 0x03, 0x8e, 0x0e, 0x00, 0xed, 0xc7, 0x00, 0x04, 0x00, 0x77,
4860          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xc7, 0x00, 0x04, 0x00, 0x77, 0x00, 0x0c,
4861          0x00, 0x6f, 0x00, 0x0840, 0x083c, 0x0838, 0x01f0, 0x01f1, 0x01f2},
4862         {
4863          56, 5280, 0x91, 0x01, 0x01, 0x02, 0x10, 0x05, 0x05, 0x02, 0x0c, 0x01,
4864          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4865          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4866          0x00, 0x6f, 0x00, 0x0844, 0x0840, 0x083c, 0x01f0, 0x01f0, 0x01f1},
4867         {
4868          58, 5290, 0x91, 0x01, 0x01, 0x02, 0x11, 0x05, 0x05, 0x02, 0x0c, 0x01,
4869          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4870          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4871          0x00, 0x6f, 0x00, 0x0848, 0x0844, 0x0840, 0x01ef, 0x01f0, 0x01f0},
4872         {
4873          60, 5300, 0x8a, 0x01, 0x01, 0x02, 0x12, 0x05, 0x05, 0x02, 0x0c, 0x01,
4874          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4875          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4876          0x00, 0x6f, 0x00, 0x084c, 0x0848, 0x0844, 0x01ee, 0x01ef, 0x01f0},
4877         {
4878          62, 5310, 0x8a, 0x01, 0x01, 0x02, 0x13, 0x05, 0x05, 0x02, 0x0c, 0x01,
4879          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdc, 0xb7, 0x00, 0x03, 0x00, 0x77,
4880          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4881          0x00, 0x6f, 0x00, 0x0850, 0x084c, 0x0848, 0x01ed, 0x01ee, 0x01ef},
4882         {
4883          64, 5320, 0x83, 0x01, 0x01, 0x02, 0x14, 0x05, 0x05, 0x02, 0x0c, 0x01,
4884          0x03, 0x03, 0x03, 0x8d, 0x0e, 0x00, 0xdb, 0xb7, 0x00, 0x03, 0x00, 0x77,
4885          0x00, 0x0c, 0x00, 0x6f, 0x00, 0xb7, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0c,
4886          0x00, 0x6f, 0x00, 0x0854, 0x0850, 0x084c, 0x01ec, 0x01ed, 0x01ee},
4887         {
4888          66, 5330, 0x83, 0x01, 0x01, 0x02, 0x15, 0x05, 0x05, 0x02, 0x0c, 0x01,
4889          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xcb, 0xa6, 0x00, 0x03, 0x00, 0x77,
4890          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4891          0x00, 0x6f, 0x00, 0x0858, 0x0854, 0x0850, 0x01eb, 0x01ec, 0x01ed},
4892         {
4893          68, 5340, 0x7c, 0x01, 0x01, 0x02, 0x16, 0x05, 0x05, 0x02, 0x0c, 0x01,
4894          0x03, 0x03, 0x03, 0x8d, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4895          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4896          0x00, 0x6f, 0x00, 0x085c, 0x0858, 0x0854, 0x01ea, 0x01eb, 0x01ec},
4897         {
4898          70, 5350, 0x7c, 0x01, 0x01, 0x02, 0x17, 0x05, 0x05, 0x02, 0x0c, 0x01,
4899          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xca, 0xa6, 0x00, 0x03, 0x00, 0x77,
4900          0x00, 0x0b, 0x00, 0x6f, 0x00, 0xa6, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0b,
4901          0x00, 0x6f, 0x00, 0x0860, 0x085c, 0x0858, 0x01e9, 0x01ea, 0x01eb},
4902         {
4903          72, 5360, 0x75, 0x01, 0x01, 0x02, 0x18, 0x05, 0x05, 0x02, 0x0c, 0x01,
4904          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4905          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4906          0x00, 0x6f, 0x00, 0x0864, 0x0860, 0x085c, 0x01e8, 0x01e9, 0x01ea},
4907         {
4908          74, 5370, 0x75, 0x01, 0x01, 0x02, 0x19, 0x05, 0x05, 0x02, 0x0c, 0x01,
4909          0x03, 0x03, 0x03, 0x8c, 0x0d, 0x00, 0xc9, 0x95, 0x00, 0x03, 0x00, 0x77,
4910          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4911          0x00, 0x6f, 0x00, 0x0868, 0x0864, 0x0860, 0x01e7, 0x01e8, 0x01e9},
4912         {
4913          76, 5380, 0x6e, 0x01, 0x01, 0x02, 0x1a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4914          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x95, 0x00, 0x03, 0x00, 0x77,
4915          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x95, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4916          0x00, 0x6f, 0x00, 0x086c, 0x0868, 0x0864, 0x01e6, 0x01e7, 0x01e8},
4917         {
4918          78, 5390, 0x6e, 0x01, 0x01, 0x02, 0x1b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4919          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4920          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4921          0x00, 0x6f, 0x00, 0x0870, 0x086c, 0x0868, 0x01e5, 0x01e6, 0x01e7},
4922         {
4923          80, 5400, 0x67, 0x01, 0x01, 0x02, 0x1c, 0x05, 0x05, 0x02, 0x0c, 0x01,
4924          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb8, 0x84, 0x00, 0x03, 0x00, 0x77,
4925          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x03, 0x00, 0x77, 0x00, 0x0a,
4926          0x00, 0x6f, 0x00, 0x0874, 0x0870, 0x086c, 0x01e5, 0x01e5, 0x01e6},
4927         {
4928          82, 5410, 0x67, 0x01, 0x01, 0x02, 0x1d, 0x05, 0x05, 0x02, 0x0c, 0x01,
4929          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xb7, 0x84, 0x00, 0x02, 0x00, 0x77,
4930          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4931          0x00, 0x6f, 0x00, 0x0878, 0x0874, 0x0870, 0x01e4, 0x01e5, 0x01e5},
4932         {
4933          84, 5420, 0x61, 0x01, 0x01, 0x02, 0x1e, 0x05, 0x05, 0x02, 0x0c, 0x01,
4934          0x03, 0x03, 0x03, 0x8c, 0x0c, 0x00, 0xa7, 0x84, 0x00, 0x02, 0x00, 0x77,
4935          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4936          0x00, 0x6f, 0x00, 0x087c, 0x0878, 0x0874, 0x01e3, 0x01e4, 0x01e5},
4937         {
4938          86, 5430, 0x61, 0x01, 0x01, 0x02, 0x1f, 0x05, 0x05, 0x02, 0x0c, 0x01,
4939          0x03, 0x03, 0x03, 0x8c, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4940          0x00, 0x0a, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x0a,
4941          0x00, 0x6f, 0x00, 0x0880, 0x087c, 0x0878, 0x01e2, 0x01e3, 0x01e4},
4942         {
4943          88, 5440, 0x5a, 0x01, 0x01, 0x02, 0x20, 0x05, 0x05, 0x02, 0x0c, 0x01,
4944          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0xa6, 0x84, 0x00, 0x02, 0x00, 0x77,
4945          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x02, 0x00, 0x77, 0x00, 0x09,
4946          0x00, 0x6f, 0x00, 0x0884, 0x0880, 0x087c, 0x01e1, 0x01e2, 0x01e3},
4947         {
4948          90, 5450, 0x5a, 0x01, 0x01, 0x02, 0x21, 0x05, 0x05, 0x02, 0x0c, 0x01,
4949          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4950          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4951          0x00, 0x6f, 0x00, 0x0888, 0x0884, 0x0880, 0x01e0, 0x01e1, 0x01e2},
4952         {
4953          92, 5460, 0x53, 0x01, 0x01, 0x02, 0x22, 0x05, 0x05, 0x02, 0x0c, 0x01,
4954          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x95, 0x84, 0x00, 0x01, 0x00, 0x77,
4955          0x00, 0x09, 0x00, 0x6f, 0x00, 0x84, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4956          0x00, 0x6f, 0x00, 0x088c, 0x0888, 0x0884, 0x01df, 0x01e0, 0x01e1},
4957         {
4958          94, 5470, 0x53, 0x01, 0x01, 0x02, 0x23, 0x05, 0x05, 0x02, 0x0c, 0x01,
4959          0x04, 0x04, 0x04, 0x8b, 0x0b, 0x00, 0x94, 0x73, 0x00, 0x01, 0x00, 0x77,
4960          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x09,
4961          0x00, 0x6f, 0x00, 0x0890, 0x088c, 0x0888, 0x01de, 0x01df, 0x01e0},
4962         {
4963          96, 5480, 0x4d, 0x01, 0x01, 0x02, 0x24, 0x05, 0x05, 0x02, 0x0c, 0x01,
4964          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x84, 0x73, 0x00, 0x00, 0x00, 0x77,
4965          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4966          0x00, 0x6f, 0x00, 0x0894, 0x0890, 0x088c, 0x01dd, 0x01de, 0x01df},
4967         {
4968          98, 5490, 0x4d, 0x01, 0x01, 0x02, 0x25, 0x05, 0x05, 0x02, 0x0c, 0x01,
4969          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x83, 0x73, 0x00, 0x00, 0x00, 0x77,
4970          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4971          0x00, 0x6f, 0x00, 0x0898, 0x0894, 0x0890, 0x01dd, 0x01dd, 0x01de},
4972         {
4973          100, 5500, 0x47, 0x01, 0x01, 0x02, 0x26, 0x05, 0x05, 0x02, 0x0c, 0x01,
4974          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4975          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4976          0x00, 0x6f, 0x00, 0x089c, 0x0898, 0x0894, 0x01dc, 0x01dd, 0x01dd},
4977         {
4978          102, 5510, 0x47, 0x01, 0x01, 0x02, 0x27, 0x05, 0x05, 0x02, 0x0c, 0x01,
4979          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x82, 0x73, 0x00, 0x00, 0x00, 0x77,
4980          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4981          0x00, 0x6f, 0x00, 0x08a0, 0x089c, 0x0898, 0x01db, 0x01dc, 0x01dd},
4982         {
4983          104, 5520, 0x40, 0x01, 0x01, 0x02, 0x28, 0x05, 0x05, 0x02, 0x0c, 0x01,
4984          0x04, 0x04, 0x04, 0x8a, 0x0a, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4985          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4986          0x00, 0x6f, 0x00, 0x08a4, 0x08a0, 0x089c, 0x01da, 0x01db, 0x01dc},
4987         {
4988          106, 5530, 0x40, 0x01, 0x01, 0x02, 0x29, 0x05, 0x05, 0x02, 0x0c, 0x01,
4989          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x72, 0x73, 0x00, 0x00, 0x00, 0x77,
4990          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4991          0x00, 0x6f, 0x00, 0x08a8, 0x08a4, 0x08a0, 0x01d9, 0x01da, 0x01db},
4992         {
4993          108, 5540, 0x3a, 0x01, 0x01, 0x02, 0x2a, 0x05, 0x05, 0x02, 0x0c, 0x01,
4994          0x04, 0x04, 0x04, 0x8a, 0x09, 0x00, 0x71, 0x73, 0x00, 0x00, 0x00, 0x77,
4995          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
4996          0x00, 0x6f, 0x00, 0x08ac, 0x08a8, 0x08a4, 0x01d8, 0x01d9, 0x01da},
4997         {
4998          110, 5550, 0x3a, 0x01, 0x01, 0x02, 0x2b, 0x05, 0x05, 0x02, 0x0c, 0x01,
4999          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5000          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5001          0x00, 0x6f, 0x00, 0x08b0, 0x08ac, 0x08a8, 0x01d7, 0x01d8, 0x01d9},
5002         {
5003          112, 5560, 0x34, 0x01, 0x01, 0x02, 0x2c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5004          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0x77,
5005          0x00, 0x09, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5006          0x00, 0x6f, 0x00, 0x08b4, 0x08b0, 0x08ac, 0x01d7, 0x01d7, 0x01d8},
5007         {
5008          114, 5570, 0x34, 0x01, 0x01, 0x02, 0x2d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5009          0x04, 0x04, 0x04, 0x89, 0x09, 0x00, 0x61, 0x62, 0x00, 0x00, 0x00, 0x77,
5010          0x00, 0x09, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x09,
5011          0x00, 0x6f, 0x00, 0x08b8, 0x08b4, 0x08b0, 0x01d6, 0x01d7, 0x01d7},
5012         {
5013          116, 5580, 0x2e, 0x01, 0x01, 0x02, 0x2e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5014          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x60, 0x62, 0x00, 0x00, 0x00, 0x77,
5015          0x00, 0x08, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5016          0x00, 0x6f, 0x00, 0x08bc, 0x08b8, 0x08b4, 0x01d5, 0x01d6, 0x01d7},
5017         {
5018          118, 5590, 0x2e, 0x01, 0x01, 0x02, 0x2f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5019          0x04, 0x04, 0x04, 0x89, 0x08, 0x00, 0x50, 0x61, 0x00, 0x00, 0x00, 0x77,
5020          0x00, 0x08, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5021          0x00, 0x6f, 0x00, 0x08c0, 0x08bc, 0x08b8, 0x01d4, 0x01d5, 0x01d6},
5022         {
5023          120, 5600, 0x28, 0x01, 0x01, 0x02, 0x30, 0x05, 0x05, 0x02, 0x0c, 0x01,
5024          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5025          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5026          0x00, 0x6f, 0x00, 0x08c4, 0x08c0, 0x08bc, 0x01d3, 0x01d4, 0x01d5},
5027         {
5028          122, 5610, 0x28, 0x01, 0x01, 0x02, 0x31, 0x05, 0x05, 0x02, 0x0c, 0x01,
5029          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x51, 0x00, 0x00, 0x00, 0x77,
5030          0x00, 0x08, 0x00, 0x6f, 0x00, 0x51, 0x00, 0x00, 0x00, 0x77, 0x00, 0x08,
5031          0x00, 0x6f, 0x00, 0x08c8, 0x08c4, 0x08c0, 0x01d2, 0x01d3, 0x01d4},
5032         {
5033          124, 5620, 0x21, 0x01, 0x01, 0x02, 0x32, 0x05, 0x05, 0x02, 0x0c, 0x01,
5034          0x05, 0x05, 0x05, 0x89, 0x08, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5035          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5036          0x00, 0x6f, 0x00, 0x08cc, 0x08c8, 0x08c4, 0x01d2, 0x01d2, 0x01d3},
5037         {
5038          126, 5630, 0x21, 0x01, 0x01, 0x02, 0x33, 0x05, 0x05, 0x02, 0x0c, 0x01,
5039          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x50, 0x50, 0x00, 0x00, 0x00, 0x77,
5040          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5041          0x00, 0x6f, 0x00, 0x08d0, 0x08cc, 0x08c8, 0x01d1, 0x01d2, 0x01d2},
5042         {
5043          128, 5640, 0x1c, 0x01, 0x01, 0x02, 0x34, 0x05, 0x05, 0x02, 0x0c, 0x01,
5044          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x77,
5045          0x00, 0x07, 0x00, 0x6f, 0x00, 0x50, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5046          0x00, 0x6f, 0x00, 0x08d4, 0x08d0, 0x08cc, 0x01d0, 0x01d1, 0x01d2},
5047         {
5048          130, 5650, 0x1c, 0x01, 0x01, 0x02, 0x35, 0x05, 0x05, 0x02, 0x0c, 0x01,
5049          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5050          0x00, 0x07, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x07,
5051          0x00, 0x6f, 0x00, 0x08d8, 0x08d4, 0x08d0, 0x01cf, 0x01d0, 0x01d1},
5052         {
5053          132, 5660, 0x16, 0x01, 0x01, 0x02, 0x36, 0x05, 0x05, 0x02, 0x0c, 0x01,
5054          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x77,
5055          0x00, 0x06, 0x00, 0x6f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5056          0x00, 0x6f, 0x00, 0x08dc, 0x08d8, 0x08d4, 0x01ce, 0x01cf, 0x01d0},
5057         {
5058          134, 5670, 0x16, 0x01, 0x01, 0x02, 0x37, 0x05, 0x05, 0x02, 0x0c, 0x01,
5059          0x05, 0x05, 0x05, 0x88, 0x07, 0x00, 0x40, 0x30, 0x00, 0x00, 0x00, 0x77,
5060          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5061          0x00, 0x6f, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce, 0x01ce, 0x01cf},
5062         {
5063          136, 5680, 0x10, 0x01, 0x01, 0x02, 0x38, 0x05, 0x05, 0x02, 0x0c, 0x01,
5064          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5065          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5066          0x00, 0x6f, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd, 0x01ce, 0x01ce},
5067         {
5068          138, 5690, 0x10, 0x01, 0x01, 0x02, 0x39, 0x05, 0x05, 0x02, 0x0c, 0x01,
5069          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5070          0x00, 0x06, 0x00, 0x6f, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5071          0x00, 0x6f, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc, 0x01cd, 0x01ce},
5072         {
5073          140, 5700, 0x0a, 0x01, 0x01, 0x02, 0x3a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5074          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5075          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5076          0x00, 0x6e, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb, 0x01cc, 0x01cd},
5077         {
5078          142, 5710, 0x0a, 0x01, 0x01, 0x02, 0x3b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5079          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5080          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5081          0x00, 0x6e, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca, 0x01cb, 0x01cc},
5082         {
5083          144, 5720, 0x0a, 0x01, 0x01, 0x02, 0x3c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5084          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5085          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5086          0x00, 0x6e, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9, 0x01ca, 0x01cb},
5087         {
5088          145, 5725, 0x03, 0x01, 0x02, 0x04, 0x79, 0x05, 0x05, 0x02, 0x15, 0x01,
5089          0x05, 0x05, 0x05, 0x87, 0x06, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x77,
5090          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5091          0x00, 0x6e, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9, 0x01ca, 0x01cb},
5092         {
5093          146, 5730, 0x0a, 0x01, 0x01, 0x02, 0x3d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5094          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5095          0x00, 0x06, 0x00, 0x6e, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5096          0x00, 0x6e, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9, 0x01c9, 0x01ca},
5097         {
5098          147, 5735, 0x03, 0x01, 0x02, 0x04, 0x7b, 0x05, 0x05, 0x02, 0x15, 0x01,
5099          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5100          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5101          0x00, 0x6d, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8, 0x01c9, 0x01ca},
5102         {
5103          148, 5740, 0x0a, 0x01, 0x01, 0x02, 0x3e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5104          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5105          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5106          0x00, 0x6d, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8, 0x01c9, 0x01c9},
5107         {
5108          149, 5745, 0xfe, 0x00, 0x02, 0x04, 0x7d, 0x05, 0x05, 0x02, 0x15, 0x01,
5109          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x77,
5110          0x00, 0x06, 0x00, 0x6d, 0x00, 0x30, 0x00, 0x00, 0x00, 0x77, 0x00, 0x06,
5111          0x00, 0x6d, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8, 0x01c8, 0x01c9},
5112         {
5113          150, 5750, 0x0a, 0x01, 0x01, 0x02, 0x3f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5114          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x77,
5115          0x00, 0x05, 0x00, 0x6d, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5116          0x00, 0x6d, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7, 0x01c8, 0x01c9},
5117         {
5118          151, 5755, 0xfe, 0x00, 0x02, 0x04, 0x7f, 0x05, 0x05, 0x02, 0x15, 0x01,
5119          0x05, 0x05, 0x05, 0x87, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5120          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5121          0x00, 0x6c, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7, 0x01c8, 0x01c8},
5122         {
5123          152, 5760, 0x0a, 0x01, 0x01, 0x02, 0x40, 0x05, 0x05, 0x02, 0x0c, 0x01,
5124          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x20, 0x00, 0x00, 0x00, 0x77,
5125          0x00, 0x05, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5126          0x00, 0x6c, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6, 0x01c7, 0x01c8},
5127         {
5128          153, 5765, 0xf8, 0x00, 0x02, 0x04, 0x81, 0x05, 0x05, 0x02, 0x15, 0x01,
5129          0x05, 0x05, 0x05, 0x86, 0x05, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5130          0x00, 0x05, 0x00, 0x6c, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5131          0x00, 0x6c, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6, 0x01c7, 0x01c8},
5132         {
5133          154, 5770, 0x0a, 0x01, 0x01, 0x02, 0x41, 0x05, 0x05, 0x02, 0x0c, 0x01,
5134          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5135          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5136          0x00, 0x6b, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6, 0x01c6, 0x01c7},
5137         {
5138          155, 5775, 0xf8, 0x00, 0x02, 0x04, 0x83, 0x05, 0x05, 0x02, 0x15, 0x01,
5139          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5140          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5141          0x00, 0x6b, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5, 0x01c6, 0x01c7},
5142         {
5143          156, 5780, 0x0a, 0x01, 0x01, 0x02, 0x42, 0x05, 0x05, 0x02, 0x0c, 0x01,
5144          0x05, 0x05, 0x05, 0x86, 0x04, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x77,
5145          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5146          0x00, 0x6b, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5, 0x01c6, 0x01c6},
5147         {
5148          157, 5785, 0xf2, 0x00, 0x02, 0x04, 0x85, 0x05, 0x05, 0x02, 0x15, 0x01,
5149          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5150          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5151          0x00, 0x6b, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4, 0x01c5, 0x01c6},
5152         {
5153          158, 5790, 0x0a, 0x01, 0x01, 0x02, 0x43, 0x05, 0x05, 0x02, 0x0c, 0x01,
5154          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77,
5155          0x00, 0x05, 0x00, 0x6b, 0x00, 0x10, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5156          0x00, 0x6b, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4, 0x01c5, 0x01c6},
5157         {
5158          159, 5795, 0xf2, 0x00, 0x02, 0x04, 0x87, 0x05, 0x05, 0x02, 0x15, 0x01,
5159          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5160          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5161          0x00, 0x6b, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4, 0x01c4, 0x01c5},
5162         {
5163          160, 5800, 0x0a, 0x01, 0x01, 0x02, 0x44, 0x05, 0x05, 0x02, 0x0c, 0x01,
5164          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5165          0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5166          0x00, 0x6b, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3, 0x01c4, 0x01c5},
5167         {
5168          161, 5805, 0xed, 0x00, 0x02, 0x04, 0x89, 0x05, 0x05, 0x02, 0x15, 0x01,
5169          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5170          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5171          0x00, 0x6a, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3, 0x01c4, 0x01c4},
5172         {
5173          162, 5810, 0x0a, 0x01, 0x01, 0x02, 0x45, 0x05, 0x05, 0x02, 0x0c, 0x01,
5174          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5175          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5176          0x00, 0x6a, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2, 0x01c3, 0x01c4},
5177         {
5178          163, 5815, 0xed, 0x00, 0x02, 0x04, 0x8b, 0x05, 0x05, 0x02, 0x15, 0x01,
5179          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5180          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5181          0x00, 0x6a, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2, 0x01c3, 0x01c4},
5182         {
5183          164, 5820, 0x0a, 0x01, 0x01, 0x02, 0x46, 0x05, 0x05, 0x02, 0x0c, 0x01,
5184          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5185          0x00, 0x05, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5186          0x00, 0x6a, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2, 0x01c2, 0x01c3},
5187         {
5188          165, 5825, 0xed, 0x00, 0x02, 0x04, 0x8d, 0x05, 0x05, 0x02, 0x15, 0x01,
5189          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5190          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5191          0x00, 0x69, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1, 0x01c2, 0x01c3},
5192         {
5193          166, 5830, 0x0a, 0x01, 0x01, 0x02, 0x47, 0x05, 0x05, 0x02, 0x0c, 0x01,
5194          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5195          0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x05,
5196          0x00, 0x69, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1, 0x01c2, 0x01c2},
5197         {
5198          168, 5840, 0x0a, 0x01, 0x01, 0x02, 0x48, 0x05, 0x05, 0x02, 0x0c, 0x01,
5199          0x06, 0x06, 0x06, 0x86, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5200          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5201          0x00, 0x69, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0, 0x01c1, 0x01c2},
5202         {
5203          170, 5850, 0xe0, 0x00, 0x01, 0x02, 0x49, 0x05, 0x05, 0x02, 0x0c, 0x01,
5204          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5205          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5206          0x00, 0x69, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf, 0x01c0, 0x01c1},
5207         {
5208          172, 5860, 0xde, 0x00, 0x01, 0x02, 0x4a, 0x05, 0x05, 0x02, 0x0c, 0x01,
5209          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5210          0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5211          0x00, 0x69, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf, 0x01bf, 0x01c0},
5212         {
5213          174, 5870, 0xdb, 0x00, 0x01, 0x02, 0x4b, 0x05, 0x05, 0x02, 0x0c, 0x01,
5214          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5215          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5216          0x00, 0x68, 0x00, 0x0930, 0x092c, 0x0928, 0x01be, 0x01bf, 0x01bf},
5217         {
5218          176, 5880, 0xd8, 0x00, 0x01, 0x02, 0x4c, 0x05, 0x05, 0x02, 0x0c, 0x01,
5219          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5220          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5221          0x00, 0x68, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd, 0x01be, 0x01bf},
5222         {
5223          178, 5890, 0xd6, 0x00, 0x01, 0x02, 0x4d, 0x05, 0x05, 0x02, 0x0c, 0x01,
5224          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5225          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5226          0x00, 0x68, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc, 0x01bd, 0x01be},
5227         {
5228          180, 5900, 0xd3, 0x00, 0x01, 0x02, 0x4e, 0x05, 0x05, 0x02, 0x0c, 0x01,
5229          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5230          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5231          0x00, 0x68, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc, 0x01bc, 0x01bd},
5232         {
5233          182, 5910, 0xd6, 0x00, 0x01, 0x02, 0x4f, 0x05, 0x05, 0x02, 0x0c, 0x01,
5234          0x06, 0x06, 0x06, 0x85, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77,
5235          0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x04,
5236          0x00, 0x68, 0x00, 0x0940, 0x093c, 0x0938, 0x01bb, 0x01bc, 0x01bc},
5237         {
5238          1, 2412, 0x00, 0x01, 0x03, 0x09, 0x6c, 0x06, 0x06, 0x04, 0x2b, 0x01,
5239          0x04, 0x04, 0x04, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5240          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5241          0x0b, 0x00, 0x0a, 0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443},
5242         {
5243          2, 2417, 0x00, 0x01, 0x03, 0x09, 0x71, 0x06, 0x06, 0x04, 0x2b, 0x01,
5244          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x00,
5245          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5246          0x0b, 0x00, 0x0a, 0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441},
5247         {
5248          3, 2422, 0x00, 0x01, 0x03, 0x09, 0x76, 0x06, 0x06, 0x04, 0x2b, 0x01,
5249          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x67, 0x00, 0x03, 0x00,
5250          0x70, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x89, 0x00, 0x03, 0x00, 0x70, 0x00,
5251          0x0b, 0x00, 0x0a, 0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f},
5252         {
5253          4, 2427, 0x00, 0x01, 0x03, 0x09, 0x7b, 0x06, 0x06, 0x04, 0x2b, 0x01,
5254          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x57, 0x00, 0x03, 0x00,
5255          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x78, 0x00, 0x03, 0x00, 0x70, 0x00,
5256          0x0a, 0x00, 0x0a, 0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d},
5257         {
5258          5, 2432, 0x00, 0x01, 0x03, 0x09, 0x80, 0x06, 0x06, 0x04, 0x2b, 0x01,
5259          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x56, 0x00, 0x03, 0x00,
5260          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x77, 0x00, 0x03, 0x00, 0x70, 0x00,
5261          0x0a, 0x00, 0x0a, 0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a},
5262         {
5263          6, 2437, 0x00, 0x01, 0x03, 0x09, 0x85, 0x06, 0x06, 0x04, 0x2b, 0x01,
5264          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x03, 0x00,
5265          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x76, 0x00, 0x03, 0x00, 0x70, 0x00,
5266          0x0a, 0x00, 0x0a, 0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438},
5267         {
5268          7, 2442, 0x00, 0x01, 0x03, 0x09, 0x8a, 0x06, 0x06, 0x04, 0x2b, 0x01,
5269          0x05, 0x05, 0x05, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x45, 0x00, 0x02, 0x00,
5270          0x70, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x02, 0x00, 0x70, 0x00,
5271          0x0a, 0x00, 0x0a, 0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436},
5272         {
5273          8, 2447, 0x00, 0x01, 0x03, 0x09, 0x8f, 0x06, 0x06, 0x04, 0x2b, 0x01,
5274          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x34, 0x00, 0x02, 0x00,
5275          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x55, 0x00, 0x02, 0x00, 0x70, 0x00,
5276          0x0a, 0x00, 0x09, 0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434},
5277         {
5278          9, 2452, 0x00, 0x01, 0x03, 0x09, 0x94, 0x06, 0x06, 0x04, 0x2b, 0x01,
5279          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x23, 0x00, 0x02, 0x00,
5280          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x45, 0x00, 0x02, 0x00, 0x70, 0x00,
5281          0x0a, 0x00, 0x09, 0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431},
5282         {
5283          10, 2457, 0x00, 0x01, 0x03, 0x09, 0x99, 0x06, 0x06, 0x04, 0x2b, 0x01,
5284          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00,
5285          0x70, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x34, 0x00, 0x02, 0x00, 0x70, 0x00,
5286          0x0a, 0x00, 0x09, 0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f},
5287         {
5288          11, 2462, 0x00, 0x01, 0x03, 0x09, 0x9e, 0x06, 0x06, 0x04, 0x2b, 0x01,
5289          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00,
5290          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 0x00, 0x02, 0x00, 0x70, 0x00,
5291          0x09, 0x00, 0x09, 0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d},
5292         {
5293          12, 2467, 0x00, 0x01, 0x03, 0x09, 0xa3, 0x06, 0x06, 0x04, 0x2b, 0x01,
5294          0x06, 0x06, 0x06, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5295          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x22, 0x00, 0x02, 0x00, 0x70, 0x00,
5296          0x09, 0x00, 0x09, 0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b},
5297         {
5298          13, 2472, 0x00, 0x01, 0x03, 0x09, 0xa8, 0x06, 0x06, 0x04, 0x2b, 0x01,
5299          0x07, 0x07, 0x07, 0x8f, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
5300          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x11, 0x00, 0x02, 0x00, 0x70, 0x00,
5301          0x09, 0x00, 0x09, 0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429},
5302         {
5303          14, 2484, 0xff, 0x01, 0x03, 0x09, 0xb4, 0x06, 0x06, 0x04, 0x2b, 0x01,
5304          0x07, 0x07, 0x07, 0x8f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
5305          0x70, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x70, 0x00,
5306          0x09, 0x00, 0x09, 0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424}
5307 };
5308
5309 static const struct chan_info_nphy_radio2057 chan_info_nphyrev7_2057_rev4[] = {
5310         {
5311          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
5312          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5313          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b4, 0x07b0, 0x07ac, 0x0214,
5314          0x0215,
5315          0x0216,
5316          },
5317         {
5318          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
5319          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5320          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07b8, 0x07b4, 0x07b0, 0x0213,
5321          0x0214,
5322          0x0215,
5323          },
5324         {
5325          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
5326          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5327          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07bc, 0x07b8, 0x07b4, 0x0212,
5328          0x0213,
5329          0x0214,
5330          },
5331         {
5332          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
5333          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5334          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c0, 0x07bc, 0x07b8, 0x0211,
5335          0x0212,
5336          0x0213,
5337          },
5338         {
5339          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
5340          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5341          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c4, 0x07c0, 0x07bc, 0x020f,
5342          0x0211,
5343          0x0212,
5344          },
5345         {
5346          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
5347          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5348          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07c8, 0x07c4, 0x07c0, 0x020e,
5349          0x020f,
5350          0x0211,
5351          },
5352         {
5353          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
5354          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5355          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07cc, 0x07c8, 0x07c4, 0x020d,
5356          0x020e,
5357          0x020f,
5358          },
5359         {
5360          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
5361          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5362          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d0, 0x07cc, 0x07c8, 0x020c,
5363          0x020d,
5364          0x020e,
5365          },
5366         {
5367          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
5368          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5369          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d4, 0x07d0, 0x07cc, 0x020b,
5370          0x020c,
5371          0x020d,
5372          },
5373         {
5374          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
5375          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5376          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07d8, 0x07d4, 0x07d0, 0x020a,
5377          0x020b,
5378          0x020c,
5379          },
5380         {
5381          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
5382          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5383          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07dc, 0x07d8, 0x07d4, 0x0209,
5384          0x020a,
5385          0x020b,
5386          },
5387         {
5388          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
5389          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5390          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e0, 0x07dc, 0x07d8, 0x0208,
5391          0x0209,
5392          0x020a,
5393          },
5394         {
5395          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
5396          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5397          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e4, 0x07e0, 0x07dc, 0x0207,
5398          0x0208,
5399          0x0209,
5400          },
5401         {
5402          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
5403          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x00,
5404          0x00, 0x0f, 0x0f, 0xf3, 0x00, 0xef, 0x07e8, 0x07e4, 0x07e0, 0x0206,
5405          0x0207,
5406          0x0208,
5407          },
5408         {
5409          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
5410          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5411          0x00, 0x0f, 0x0f, 0xe3, 0x00, 0xef, 0x07ec, 0x07e8, 0x07e4, 0x0205,
5412          0x0206,
5413          0x0207,
5414          },
5415         {
5416          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
5417          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5418          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f0, 0x07ec, 0x07e8, 0x0204,
5419          0x0205,
5420          0x0206,
5421          },
5422         {
5423          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
5424          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x00,
5425          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xef, 0x07f4, 0x07f0, 0x07ec, 0x0203,
5426          0x0204,
5427          0x0205,
5428          },
5429         {
5430          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
5431          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5432          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07f8, 0x07f4, 0x07f0, 0x0202,
5433          0x0203,
5434          0x0204,
5435          },
5436         {
5437          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
5438          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5439          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x07fc, 0x07f8, 0x07f4, 0x0201,
5440          0x0202,
5441          0x0203,
5442          },
5443         {
5444          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
5445          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5446          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0800, 0x07fc, 0x07f8, 0x0200,
5447          0x0201,
5448          0x0202,
5449          },
5450         {
5451          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
5452          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5453          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0804, 0x0800, 0x07fc, 0x01ff,
5454          0x0200,
5455          0x0201,
5456          },
5457         {
5458          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
5459          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x00,
5460          0x00, 0x0e, 0x0f, 0xe3, 0x00, 0xd6, 0x0808, 0x0804, 0x0800, 0x01fe,
5461          0x01ff,
5462          0x0200,
5463          },
5464         {
5465          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
5466          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5467          0x00, 0x0e, 0x0e, 0xe3, 0x00, 0xd6, 0x080c, 0x0808, 0x0804, 0x01fd,
5468          0x01fe,
5469          0x01ff,
5470          },
5471         {
5472          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
5473          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5474          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0814, 0x0810, 0x080c, 0x01fb,
5475          0x01fc,
5476          0x01fd,
5477          },
5478         {
5479          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
5480          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x00,
5481          0x00, 0x0d, 0x0e, 0xe3, 0x00, 0xd6, 0x0818, 0x0814, 0x0810, 0x01fa,
5482          0x01fb,
5483          0x01fc,
5484          },
5485         {
5486          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
5487          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5488          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x081c, 0x0818, 0x0814, 0x01f9,
5489          0x01fa,
5490          0x01fb,
5491          },
5492         {
5493          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
5494          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5495          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0820, 0x081c, 0x0818, 0x01f8,
5496          0x01f9,
5497          0x01fa,
5498          },
5499         {
5500          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
5501          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5502          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0824, 0x0820, 0x081c, 0x01f7,
5503          0x01f8,
5504          0x01f9,
5505          },
5506         {
5507          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
5508          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5509          0x00, 0x0d, 0x0e, 0xd3, 0x00, 0xd6, 0x0828, 0x0824, 0x0820, 0x01f6,
5510          0x01f7,
5511          0x01f8,
5512          },
5513         {
5514          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
5515          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5516          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x082c, 0x0828, 0x0824, 0x01f5,
5517          0x01f6,
5518          0x01f7,
5519          },
5520         {
5521          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
5522          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5523          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0830, 0x082c, 0x0828, 0x01f4,
5524          0x01f5,
5525          0x01f6,
5526          },
5527         {
5528          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
5529          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5530          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0834, 0x0830, 0x082c, 0x01f3,
5531          0x01f4,
5532          0x01f5,
5533          },
5534         {
5535          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
5536          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x00,
5537          0x00, 0x0c, 0x0e, 0xd3, 0x00, 0xd6, 0x0838, 0x0834, 0x0830, 0x01f2,
5538          0x01f3,
5539          0x01f4,
5540          },
5541         {
5542          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
5543          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5544          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x083c, 0x0838, 0x0834, 0x01f1,
5545          0x01f2,
5546          0x01f3,
5547          },
5548         {
5549          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
5550          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x00,
5551          0x00, 0x0c, 0x0d, 0xd3, 0x00, 0xd6, 0x0840, 0x083c, 0x0838, 0x01f0,
5552          0x01f1,
5553          0x01f2,
5554          },
5555         {
5556          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
5557          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5558          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0844, 0x0840, 0x083c, 0x01f0,
5559          0x01f0,
5560          0x01f1,
5561          },
5562         {
5563          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
5564          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5565          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x0848, 0x0844, 0x0840, 0x01ef,
5566          0x01f0,
5567          0x01f0,
5568          },
5569         {
5570          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
5571          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5572          0x00, 0x0c, 0x0c, 0xc3, 0x00, 0xd4, 0x084c, 0x0848, 0x0844, 0x01ee,
5573          0x01ef,
5574          0x01f0,
5575          },
5576         {
5577          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
5578          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5579          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0850, 0x084c, 0x0848, 0x01ed,
5580          0x01ee,
5581          0x01ef,
5582          },
5583         {
5584          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
5585          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5586          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0854, 0x0850, 0x084c, 0x01ec,
5587          0x01ed,
5588          0x01ee,
5589          },
5590         {
5591          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
5592          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x00,
5593          0x00, 0x0b, 0x0c, 0xc3, 0x00, 0xd4, 0x0858, 0x0854, 0x0850, 0x01eb,
5594          0x01ec,
5595          0x01ed,
5596          },
5597         {
5598          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
5599          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x00,
5600          0x00, 0x0a, 0x0c, 0xc3, 0x00, 0xa1, 0x085c, 0x0858, 0x0854, 0x01ea,
5601          0x01eb,
5602          0x01ec,
5603          },
5604         {
5605          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
5606          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5607          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0860, 0x085c, 0x0858, 0x01e9,
5608          0x01ea,
5609          0x01eb,
5610          },
5611         {
5612          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
5613          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5614          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0864, 0x0860, 0x085c, 0x01e8,
5615          0x01e9,
5616          0x01ea,
5617          },
5618         {
5619          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
5620          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5621          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x0868, 0x0864, 0x0860, 0x01e7,
5622          0x01e8,
5623          0x01e9,
5624          },
5625         {
5626          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
5627          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x00,
5628          0x00, 0x0a, 0x0b, 0xb3, 0x00, 0xa1, 0x086c, 0x0868, 0x0864, 0x01e6,
5629          0x01e7,
5630          0x01e8,
5631          },
5632         {
5633          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
5634          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x00,
5635          0x00, 0x0a, 0x0a, 0xa3, 0x00, 0xa1, 0x0870, 0x086c, 0x0868, 0x01e5,
5636          0x01e6,
5637          0x01e7,
5638          },
5639         {
5640          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
5641          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5642          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0874, 0x0870, 0x086c, 0x01e5,
5643          0x01e5,
5644          0x01e6,
5645          },
5646         {
5647          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
5648          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x00,
5649          0x00, 0x09, 0x0a, 0xa3, 0x00, 0x90, 0x0878, 0x0874, 0x0870, 0x01e4,
5650          0x01e5,
5651          0x01e5,
5652          },
5653         {
5654          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
5655          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x00,
5656          0x00, 0x09, 0x09, 0xa3, 0x00, 0x90, 0x087c, 0x0878, 0x0874, 0x01e3,
5657          0x01e4,
5658          0x01e5,
5659          },
5660         {
5661          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
5662          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5663          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0880, 0x087c, 0x0878, 0x01e2,
5664          0x01e3,
5665          0x01e4,
5666          },
5667         {
5668          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
5669          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5670          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0884, 0x0880, 0x087c, 0x01e1,
5671          0x01e2,
5672          0x01e3,
5673          },
5674         {
5675          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
5676          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x00,
5677          0x00, 0x09, 0x09, 0x93, 0x00, 0x90, 0x0888, 0x0884, 0x0880, 0x01e0,
5678          0x01e1,
5679          0x01e2,
5680          },
5681         {
5682          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
5683          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x00,
5684          0x00, 0x08, 0x08, 0x93, 0x00, 0x90, 0x088c, 0x0888, 0x0884, 0x01df,
5685          0x01e0,
5686          0x01e1,
5687          },
5688         {
5689          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
5690          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x00,
5691          0x00, 0x08, 0x08, 0x93, 0x00, 0x60, 0x0890, 0x088c, 0x0888, 0x01de,
5692          0x01df,
5693          0x01e0,
5694          },
5695         {
5696          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
5697          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5698          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0894, 0x0890, 0x088c, 0x01dd,
5699          0x01de,
5700          0x01df,
5701          },
5702         {
5703          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
5704          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5705          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x0898, 0x0894, 0x0890, 0x01dd,
5706          0x01dd,
5707          0x01de,
5708          },
5709         {
5710          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
5711          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5712          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x089c, 0x0898, 0x0894, 0x01dc,
5713          0x01dd,
5714          0x01dd,
5715          },
5716         {
5717          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
5718          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x00,
5719          0x00, 0x08, 0x07, 0x93, 0x00, 0x60, 0x08a0, 0x089c, 0x0898, 0x01db,
5720          0x01dc,
5721          0x01dd,
5722          },
5723         {
5724          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
5725          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5726          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a4, 0x08a0, 0x089c, 0x01da,
5727          0x01db,
5728          0x01dc,
5729          },
5730         {
5731          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
5732          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5733          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
5734          0x01da,
5735          0x01db,
5736          },
5737         {
5738          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
5739          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x00,
5740          0x00, 0x08, 0x06, 0x93, 0x00, 0x60, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
5741          0x01d9,
5742          0x01da,
5743          },
5744         {
5745          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
5746          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5747          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
5748          0x01d8,
5749          0x01d9,
5750          },
5751         {
5752          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
5753          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5754          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
5755          0x01d7,
5756          0x01d8,
5757          },
5758         {
5759          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
5760          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x00,
5761          0x00, 0x08, 0x05, 0x83, 0x00, 0x60, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
5762          0x01d7,
5763          0x01d7,
5764          },
5765         {
5766          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
5767          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x00,
5768          0x00, 0x07, 0x05, 0x83, 0x00, 0x60, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
5769          0x01d6,
5770          0x01d7,
5771          },
5772         {
5773          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
5774          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x00,
5775          0x00, 0x07, 0x04, 0x83, 0x00, 0x60, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
5776          0x01d5,
5777          0x01d6,
5778          },
5779         {
5780          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
5781          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x00,
5782          0x00, 0x07, 0x04, 0x73, 0x00, 0x30, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
5783          0x01d4,
5784          0x01d5,
5785          },
5786         {
5787          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
5788          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5789          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
5790          0x01d3,
5791          0x01d4,
5792          },
5793         {
5794          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
5795          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5796          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
5797          0x01d2,
5798          0x01d3,
5799          },
5800         {
5801          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
5802          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5803          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
5804          0x01d2,
5805          0x01d2,
5806          },
5807         {
5808          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
5809          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x00,
5810          0x00, 0x06, 0x04, 0x73, 0x00, 0x30, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
5811          0x01d1,
5812          0x01d2,
5813          },
5814         {
5815          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
5816          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5817          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
5818          0x01d0,
5819          0x01d1,
5820          },
5821         {
5822          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
5823          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x00,
5824          0x00, 0x06, 0x03, 0x63, 0x00, 0x30, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
5825          0x01cf,
5826          0x01d0,
5827          },
5828         {
5829          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
5830          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x00,
5831          0x00, 0x05, 0x03, 0x63, 0x00, 0x00, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
5832          0x01ce,
5833          0x01cf,
5834          },
5835         {
5836          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
5837          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5838          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
5839          0x01ce,
5840          0x01ce,
5841          },
5842         {
5843          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
5844          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5845          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
5846          0x01cd,
5847          0x01ce,
5848          },
5849         {
5850          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
5851          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5852          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
5853          0x01cc,
5854          0x01cd,
5855          },
5856         {
5857          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
5858          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5859          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
5860          0x01cb,
5861          0x01cc,
5862          },
5863         {
5864          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
5865          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x00,
5866          0x00, 0x05, 0x02, 0x53, 0x00, 0x00, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
5867          0x01ca,
5868          0x01cb,
5869          },
5870         {
5871          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
5872          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x00,
5873          0x00, 0x05, 0x01, 0x53, 0x00, 0x00, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
5874          0x01ca,
5875          0x01cb,
5876          },
5877         {
5878          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
5879          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5880          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
5881          0x01c9,
5882          0x01ca,
5883          },
5884         {
5885          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
5886          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5887          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
5888          0x01c9,
5889          0x01ca,
5890          },
5891         {
5892          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
5893          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5894          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
5895          0x01c9,
5896          0x01c9,
5897          },
5898         {
5899          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
5900          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5901          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
5902          0x01c8,
5903          0x01c9,
5904          },
5905         {
5906          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
5907          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5908          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
5909          0x01c8,
5910          0x01c9,
5911          },
5912         {
5913          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
5914          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x00,
5915          0x00, 0x04, 0x01, 0x53, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
5916          0x01c8,
5917          0x01c8,
5918          },
5919         {
5920          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
5921          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5922          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
5923          0x01c7,
5924          0x01c8,
5925          },
5926         {
5927          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
5928          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5929          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
5930          0x01c7,
5931          0x01c8,
5932          },
5933         {
5934          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
5935          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5936          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
5937          0x01c6,
5938          0x01c7,
5939          },
5940         {
5941          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
5942          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x00,
5943          0x00, 0x04, 0x01, 0x43, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
5944          0x01c6,
5945          0x01c7,
5946          },
5947         {
5948          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
5949          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x00,
5950          0x00, 0x03, 0x01, 0x43, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
5951          0x01c6,
5952          0x01c6,
5953          },
5954         {
5955          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
5956          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5957          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
5958          0x01c5,
5959          0x01c6,
5960          },
5961         {
5962          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
5963          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5964          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
5965          0x01c5,
5966          0x01c6,
5967          },
5968         {
5969          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
5970          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5971          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
5972          0x01c4,
5973          0x01c5,
5974          },
5975         {
5976          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
5977          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5978          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
5979          0x01c4,
5980          0x01c5,
5981          },
5982         {
5983          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
5984          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5985          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
5986          0x01c4,
5987          0x01c4,
5988          },
5989         {
5990          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
5991          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5992          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
5993          0x01c3,
5994          0x01c4,
5995          },
5996         {
5997          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
5998          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
5999          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6000          0x01c3,
6001          0x01c4,
6002          },
6003         {
6004          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6005          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6006          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6007          0x01c2,
6008          0x01c3,
6009          },
6010         {
6011          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6012          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6013          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6014          0x01c2,
6015          0x01c3,
6016          },
6017         {
6018          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6019          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6020          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6021          0x01c2,
6022          0x01c2,
6023          },
6024         {
6025          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6026          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6027          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6028          0x01c1,
6029          0x01c2,
6030          },
6031         {
6032          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6033          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6034          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6035          0x01c0,
6036          0x01c1,
6037          },
6038         {
6039          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6040          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6041          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6042          0x01bf,
6043          0x01c0,
6044          },
6045         {
6046          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6047          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6048          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6049          0x01bf,
6050          0x01bf,
6051          },
6052         {
6053          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6054          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6055          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6056          0x01be,
6057          0x01bf,
6058          },
6059         {
6060          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6061          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6062          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6063          0x01bd,
6064          0x01be,
6065          },
6066         {
6067          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6068          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
6069          0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6070          0x01bc,
6071          0x01bd,
6072          },
6073         {
6074          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6075          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6076          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6077          0x043f,
6078          0x0443,
6079          },
6080         {
6081          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6082          0x0a, 0x00, 0x0a, 0x00, 0x71, 0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6083          0xa3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6084          0x043d,
6085          0x0441,
6086          },
6087         {
6088          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6089          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6090          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6091          0x043a,
6092          0x043f,
6093          },
6094         {
6095          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6096          0x09, 0x00, 0x09, 0x00, 0x71, 0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x71,
6097          0x93, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6098          0x0438,
6099          0x043d,
6100          },
6101         {
6102          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6103          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6104          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6105          0x0436,
6106          0x043a,
6107          },
6108         {
6109          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6110          0x08, 0x00, 0x08, 0x00, 0x51, 0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6111          0x83, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6112          0x0434,
6113          0x0438,
6114          },
6115         {
6116          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6117          0x07, 0x00, 0x07, 0x00, 0x51, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x51,
6118          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6119          0x0431,
6120          0x0436,
6121          },
6122         {
6123          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6124          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6125          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6126          0x042f,
6127          0x0434,
6128          },
6129         {
6130          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6131          0x07, 0x00, 0x07, 0x00, 0x31, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6132          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6133          0x042d,
6134          0x0431,
6135          },
6136         {
6137          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
6138          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6139          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
6140          0x042b,
6141          0x042f,
6142          },
6143         {
6144          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
6145          0x06, 0x00, 0x06, 0x00, 0x31, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x31,
6146          0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
6147          0x0429,
6148          0x042d,
6149          },
6150         {
6151          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
6152          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6153          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
6154          0x0427,
6155          0x042b,
6156          },
6157         {
6158          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
6159          0x05, 0x00, 0x05, 0x00, 0x11, 0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x11,
6160          0x53, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
6161          0x0424,
6162          0x0429,
6163          },
6164         {
6165          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
6166          0x04, 0x00, 0x04, 0x00, 0x11, 0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x11,
6167          0x43, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
6168          0x041f,
6169          0x0424}
6170 };
6171
6172 static const struct chan_info_nphy_radio2057_rev5
6173 chan_info_nphyrev8_2057_rev5[] = {
6174         {
6175          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6176          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6177          0x043a, 0x043f, 0x0443},
6178         {
6179          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6180          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6181          0x0438, 0x043d, 0x0441},
6182         {
6183          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6184          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6185          0x0436, 0x043a, 0x043f},
6186         {
6187          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6188          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6189          0x0434, 0x0438, 0x043d},
6190         {
6191          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6192          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6193          0x0431, 0x0436, 0x043a},
6194         {
6195          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6196          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6197          0x042f, 0x0434, 0x0438},
6198         {
6199          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6200          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6201          0x042d, 0x0431, 0x0436},
6202         {
6203          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6204          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6205          0x042b, 0x042f, 0x0434},
6206         {
6207          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6208          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6209          0x0429, 0x042d, 0x0431},
6210         {
6211          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6212          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6213          0x0427, 0x042b, 0x042f},
6214         {
6215          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6216          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6217          0x0424, 0x0429, 0x042d},
6218         {
6219          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6220          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6221          0x0422, 0x0427, 0x042b},
6222         {
6223          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6224          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6225          0x0420, 0x0424, 0x0429},
6226         {
6227          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6228          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6229          0x041b, 0x041f, 0x0424}
6230 };
6231
6232 static const struct chan_info_nphy_radio2057_rev5
6233 chan_info_nphyrev9_2057_rev5v1[] = {
6234         {
6235          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0d,
6236          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03c9, 0x03c5, 0x03c1,
6237          0x043a, 0x043f, 0x0443},
6238         {
6239          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0d,
6240          0x08, 0x0e, 0x61, 0x03, 0xff, 0x61, 0x03, 0xff, 0x03cb, 0x03c7, 0x03c3,
6241          0x0438, 0x043d, 0x0441},
6242         {
6243          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0d,
6244          0x08, 0x0e, 0x61, 0x03, 0xef, 0x61, 0x03, 0xef, 0x03cd, 0x03c9, 0x03c5,
6245          0x0436, 0x043a, 0x043f},
6246         {
6247          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0c,
6248          0x08, 0x0e, 0x61, 0x03, 0xdf, 0x61, 0x03, 0xdf, 0x03cf, 0x03cb, 0x03c7,
6249          0x0434, 0x0438, 0x043d},
6250         {
6251          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0c,
6252          0x07, 0x0d, 0x61, 0x03, 0xcf, 0x61, 0x03, 0xcf, 0x03d1, 0x03cd, 0x03c9,
6253          0x0431, 0x0436, 0x043a},
6254         {
6255          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0c,
6256          0x07, 0x0d, 0x61, 0x03, 0xbf, 0x61, 0x03, 0xbf, 0x03d3, 0x03cf, 0x03cb,
6257          0x042f, 0x0434, 0x0438},
6258         {
6259          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0b,
6260          0x07, 0x0d, 0x61, 0x03, 0xaf, 0x61, 0x03, 0xaf, 0x03d5, 0x03d1, 0x03cd,
6261          0x042d, 0x0431, 0x0436},
6262         {
6263          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0b,
6264          0x07, 0x0d, 0x61, 0x03, 0x9f, 0x61, 0x03, 0x9f, 0x03d7, 0x03d3, 0x03cf,
6265          0x042b, 0x042f, 0x0434},
6266         {
6267          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0b,
6268          0x07, 0x0d, 0x61, 0x03, 0x8f, 0x61, 0x03, 0x8f, 0x03d9, 0x03d5, 0x03d1,
6269          0x0429, 0x042d, 0x0431},
6270         {
6271          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0b,
6272          0x07, 0x0c, 0x61, 0x03, 0x7f, 0x61, 0x03, 0x7f, 0x03db, 0x03d7, 0x03d3,
6273          0x0427, 0x042b, 0x042f},
6274         {
6275          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0b,
6276          0x07, 0x0c, 0x61, 0x03, 0x6f, 0x61, 0x03, 0x6f, 0x03dd, 0x03d9, 0x03d5,
6277          0x0424, 0x0429, 0x042d},
6278         {
6279          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0b,
6280          0x06, 0x0c, 0x61, 0x03, 0x5f, 0x61, 0x03, 0x5f, 0x03df, 0x03db, 0x03d7,
6281          0x0422, 0x0427, 0x042b},
6282         {
6283          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0a,
6284          0x06, 0x0b, 0x61, 0x03, 0x4f, 0x61, 0x03, 0x4f, 0x03e1, 0x03dd, 0x03d9,
6285          0x0420, 0x0424, 0x0429},
6286         {
6287          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0a,
6288          0x06, 0x0b, 0x61, 0x03, 0x3f, 0x61, 0x03, 0x3f, 0x03e6, 0x03e2, 0x03de,
6289          0x041b, 0x041f, 0x0424}
6290 };
6291
6292 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev7[] = {
6293         {
6294          184, 4920, 0x68, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xec, 0x01, 0x0f,
6295          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6296          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b4, 0x07b0, 0x07ac, 0x0214,
6297          0x0215,
6298          0x0216},
6299         {
6300          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
6301          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6302          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
6303          0x0214,
6304          0x0215},
6305         {
6306          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
6307          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6308          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
6309          0x0213,
6310          0x0214},
6311         {
6312          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
6313          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6314          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
6315          0x0212,
6316          0x0213},
6317         {
6318          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
6319          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6320          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
6321          0x0211,
6322          0x0212},
6323         {
6324          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
6325          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6326          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
6327          0x020f,
6328          0x0211},
6329         {
6330          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
6331          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6332          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
6333          0x020e,
6334          0x020f},
6335         {
6336          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
6337          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
6338          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
6339          0x020d,
6340          0x020e},
6341         {
6342          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
6343          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6344          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
6345          0x020c,
6346          0x020d},
6347         {
6348          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
6349          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6350          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
6351          0x020b,
6352          0x020c},
6353         {
6354          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
6355          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6356          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
6357          0x020a,
6358          0x020b},
6359         {
6360          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
6361          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6362          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
6363          0x0209,
6364          0x020a},
6365         {
6366          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
6367          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6368          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
6369          0x0208,
6370          0x0209},
6371         {
6372          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
6373          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6374          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
6375          0x0207,
6376          0x0208},
6377         {
6378          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
6379          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6380          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
6381          0x0206,
6382          0x0207},
6383         {
6384          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
6385          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6386          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
6387          0x0205,
6388          0x0206},
6389         {
6390          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
6391          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6392          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
6393          0x0204,
6394          0x0205},
6395         {
6396          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
6397          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
6398          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
6399          0x0203,
6400          0x0204},
6401         {
6402          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
6403          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6404          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
6405          0x0202,
6406          0x0203},
6407         {
6408          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
6409          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6410          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
6411          0x0201,
6412          0x0202},
6413         {
6414          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
6415          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6416          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
6417          0x0200,
6418          0x0201},
6419         {
6420          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
6421          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6422          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
6423          0x01ff,
6424          0x0200},
6425         {
6426          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
6427          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6428          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
6429          0x01fe,
6430          0x01ff},
6431         {
6432          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
6433          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6434          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
6435          0x01fc,
6436          0x01fd},
6437         {
6438          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
6439          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6440          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
6441          0x01fb,
6442          0x01fc},
6443         {
6444          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
6445          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6446          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
6447          0x01fa,
6448          0x01fb},
6449         {
6450          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
6451          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
6452          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
6453          0x01f9,
6454          0x01fa},
6455         {
6456          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
6457          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6458          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
6459          0x01f8,
6460          0x01f9},
6461         {
6462          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
6463          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6464          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
6465          0x01f7,
6466          0x01f8},
6467         {
6468          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
6469          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6470          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
6471          0x01f6,
6472          0x01f7},
6473         {
6474          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
6475          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6476          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
6477          0x01f5,
6478          0x01f6},
6479         {
6480          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
6481          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6482          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
6483          0x01f4,
6484          0x01f5},
6485         {
6486          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
6487          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6488          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
6489          0x01f3,
6490          0x01f4},
6491         {
6492          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
6493          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6494          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
6495          0x01f2,
6496          0x01f3},
6497         {
6498          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
6499          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6500          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
6501          0x01f1,
6502          0x01f2},
6503         {
6504          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
6505          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6506          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
6507          0x01f0,
6508          0x01f1},
6509         {
6510          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
6511          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
6512          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
6513          0x01f0,
6514          0x01f0},
6515         {
6516          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
6517          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6518          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
6519          0x01ef,
6520          0x01f0},
6521         {
6522          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
6523          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6524          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
6525          0x01ee,
6526          0x01ef},
6527         {
6528          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
6529          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6530          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
6531          0x01ed,
6532          0x01ee},
6533         {
6534          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
6535          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6536          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
6537          0x01ec,
6538          0x01ed},
6539         {
6540          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
6541          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6542          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
6543          0x01eb,
6544          0x01ec},
6545         {
6546          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
6547          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6548          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
6549          0x01ea,
6550          0x01eb},
6551         {
6552          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
6553          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6554          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
6555          0x01e9,
6556          0x01ea},
6557         {
6558          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
6559          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6560          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
6561          0x01e8,
6562          0x01e9},
6563         {
6564          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
6565          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6566          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
6567          0x01e7,
6568          0x01e8},
6569         {
6570          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
6571          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
6572          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
6573          0x01e6,
6574          0x01e7},
6575         {
6576          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
6577          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6578          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
6579          0x01e5,
6580          0x01e6},
6581         {
6582          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
6583          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6584          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
6585          0x01e5,
6586          0x01e5},
6587         {
6588          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
6589          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6590          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
6591          0x01e4,
6592          0x01e5},
6593         {
6594          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
6595          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6596          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
6597          0x01e3,
6598          0x01e4},
6599         {
6600          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
6601          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6602          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
6603          0x01e2,
6604          0x01e3},
6605         {
6606          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
6607          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6608          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
6609          0x01e1,
6610          0x01e2},
6611         {
6612          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
6613          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6614          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
6615          0x01e0,
6616          0x01e1},
6617         {
6618          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
6619          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6620          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
6621          0x01df,
6622          0x01e0},
6623         {
6624          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
6625          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6626          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
6627          0x01de,
6628          0x01df},
6629         {
6630          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
6631          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
6632          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
6633          0x01dd,
6634          0x01de},
6635         {
6636          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
6637          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6638          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
6639          0x01dd,
6640          0x01dd},
6641         {
6642          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
6643          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6644          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
6645          0x01dc,
6646          0x01dd},
6647         {
6648          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
6649          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6650          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
6651          0x01db,
6652          0x01dc},
6653         {
6654          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
6655          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6656          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
6657          0x01da,
6658          0x01db},
6659         {
6660          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
6661          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6662          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
6663          0x01d9,
6664          0x01da},
6665         {
6666          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
6667          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6668          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
6669          0x01d8,
6670          0x01d9},
6671         {
6672          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
6673          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6674          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
6675          0x01d7,
6676          0x01d8},
6677         {
6678          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
6679          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6680          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
6681          0x01d7,
6682          0x01d7},
6683         {
6684          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
6685          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6686          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
6687          0x01d6,
6688          0x01d7},
6689         {
6690          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
6691          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
6692          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
6693          0x01d5,
6694          0x01d6},
6695         {
6696          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
6697          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6698          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
6699          0x01d4,
6700          0x01d5},
6701         {
6702          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
6703          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6704          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
6705          0x01d3,
6706          0x01d4},
6707         {
6708          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
6709          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6710          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
6711          0x01d2,
6712          0x01d3},
6713         {
6714          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
6715          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6716          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
6717          0x01d2,
6718          0x01d2},
6719         {
6720          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
6721          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
6722          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
6723          0x01d1,
6724          0x01d2},
6725         {
6726          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
6727          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6728          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
6729          0x01d0,
6730          0x01d1},
6731         {
6732          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
6733          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6734          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
6735          0x01cf,
6736          0x01d0},
6737         {
6738          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
6739          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
6740          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
6741          0x01ce,
6742          0x01cf},
6743         {
6744          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
6745          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6746          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
6747          0x01ce,
6748          0x01ce},
6749         {
6750          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
6751          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
6752          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
6753          0x01cd,
6754          0x01ce},
6755         {
6756          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
6757          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6758          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
6759          0x01cc,
6760          0x01cd},
6761         {
6762          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
6763          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6764          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
6765          0x01cb,
6766          0x01cc},
6767         {
6768          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
6769          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6770          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
6771          0x01ca,
6772          0x01cb},
6773         {
6774          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
6775          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6776          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
6777          0x01ca,
6778          0x01cb},
6779         {
6780          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
6781          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6782          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
6783          0x01c9,
6784          0x01ca},
6785         {
6786          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
6787          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6788          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
6789          0x01c9,
6790          0x01ca},
6791         {
6792          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
6793          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6794          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
6795          0x01c9,
6796          0x01c9},
6797         {
6798          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
6799          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
6800          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
6801          0x01c8,
6802          0x01c9},
6803         {
6804          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
6805          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6806          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
6807          0x01c8,
6808          0x01c9},
6809         {
6810          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
6811          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6812          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
6813          0x01c8,
6814          0x01c8},
6815         {
6816          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
6817          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6818          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
6819          0x01c7,
6820          0x01c8},
6821         {
6822          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
6823          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6824          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
6825          0x01c7,
6826          0x01c8},
6827         {
6828          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
6829          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6830          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
6831          0x01c6,
6832          0x01c7},
6833         {
6834          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
6835          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6836          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
6837          0x01c6,
6838          0x01c7},
6839         {
6840          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
6841          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6842          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
6843          0x01c6,
6844          0x01c6},
6845         {
6846          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
6847          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6848          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
6849          0x01c5,
6850          0x01c6},
6851         {
6852          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
6853          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6854          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
6855          0x01c5,
6856          0x01c6},
6857         {
6858          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
6859          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
6860          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
6861          0x01c4,
6862          0x01c5},
6863         {
6864          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
6865          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
6866          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
6867          0x01c4,
6868          0x01c5},
6869         {
6870          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
6871          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6872          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
6873          0x01c4,
6874          0x01c4},
6875         {
6876          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
6877          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6878          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
6879          0x01c3,
6880          0x01c4},
6881         {
6882          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
6883          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6884          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
6885          0x01c3,
6886          0x01c4},
6887         {
6888          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
6889          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6890          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
6891          0x01c2,
6892          0x01c3},
6893         {
6894          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
6895          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6896          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
6897          0x01c2,
6898          0x01c3},
6899         {
6900          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
6901          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6902          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
6903          0x01c2,
6904          0x01c2},
6905         {
6906          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
6907          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6908          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
6909          0x01c1,
6910          0x01c2},
6911         {
6912          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
6913          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6914          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
6915          0x01c0,
6916          0x01c1},
6917         {
6918          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
6919          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6920          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
6921          0x01bf,
6922          0x01c0},
6923         {
6924          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
6925          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6926          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
6927          0x01bf,
6928          0x01bf},
6929         {
6930          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
6931          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6932          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
6933          0x01be,
6934          0x01bf},
6935         {
6936          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
6937          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6938          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
6939          0x01bd,
6940          0x01be},
6941         {
6942          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
6943          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
6944          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
6945          0x01bc,
6946          0x01bd},
6947         {
6948          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
6949          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6950          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
6951          0x043f,
6952          0x0443},
6953         {
6954          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
6955          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6956          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
6957          0x043d,
6958          0x0441},
6959         {
6960          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
6961          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6962          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
6963          0x043a,
6964          0x043f},
6965         {
6966          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
6967          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6968          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
6969          0x0438,
6970          0x043d},
6971         {
6972          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
6973          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6974          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
6975          0x0436,
6976          0x043a},
6977         {
6978          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
6979          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6980          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
6981          0x0434,
6982          0x0438},
6983         {
6984          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
6985          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6986          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
6987          0x0431,
6988          0x0436},
6989         {
6990          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
6991          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6992          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
6993          0x042f,
6994          0x0434},
6995         {
6996          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
6997          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
6998          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
6999          0x042d,
7000          0x0431},
7001         {
7002          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7003          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7004          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7005          0x042b,
7006          0x042f},
7007         {
7008          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7009          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7010          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7011          0x0429,
7012          0x042d},
7013         {
7014          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7015          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7016          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7017          0x0427,
7018          0x042b},
7019         {
7020          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7021          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7022          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7023          0x0424,
7024          0x0429},
7025         {
7026          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7027          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7028          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7029          0x041f,
7030          0x0424}
7031 };
7032
7033 static const struct chan_info_nphy_radio2057 chan_info_nphyrev8_2057_rev8[] = {
7034         {
7035          186, 4930, 0x6b, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xed, 0x01, 0x0f,
7036          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7037          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07b8, 0x07b4, 0x07b0, 0x0213,
7038          0x0214,
7039          0x0215},
7040         {
7041          188, 4940, 0x6e, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xee, 0x01, 0x0f,
7042          0x00, 0x0f, 0x00, 0xff, 0x00, 0xd3, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7043          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07bc, 0x07b8, 0x07b4, 0x0212,
7044          0x0213,
7045          0x0214},
7046         {
7047          190, 4950, 0x72, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xef, 0x01, 0x0f,
7048          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7049          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c0, 0x07bc, 0x07b8, 0x0211,
7050          0x0212,
7051          0x0213},
7052         {
7053          192, 4960, 0x75, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf0, 0x01, 0x0f,
7054          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7055          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c4, 0x07c0, 0x07bc, 0x020f,
7056          0x0211,
7057          0x0212},
7058         {
7059          194, 4970, 0x78, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf1, 0x01, 0x0f,
7060          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7061          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07c8, 0x07c4, 0x07c0, 0x020e,
7062          0x020f,
7063          0x0211},
7064         {
7065          196, 4980, 0x7c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf2, 0x01, 0x0f,
7066          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7067          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07cc, 0x07c8, 0x07c4, 0x020d,
7068          0x020e,
7069          0x020f},
7070         {
7071          198, 4990, 0x7f, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf3, 0x01, 0x0f,
7072          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x00,
7073          0x00, 0x0f, 0x0f, 0xd3, 0x00, 0xff, 0x07d0, 0x07cc, 0x07c8, 0x020c,
7074          0x020d,
7075          0x020e},
7076         {
7077          200, 5000, 0x82, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf4, 0x01, 0x0f,
7078          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7079          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d4, 0x07d0, 0x07cc, 0x020b,
7080          0x020c,
7081          0x020d},
7082         {
7083          202, 5010, 0x86, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf5, 0x01, 0x0f,
7084          0x00, 0x0f, 0x00, 0xff, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7085          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07d8, 0x07d4, 0x07d0, 0x020a,
7086          0x020b,
7087          0x020c},
7088         {
7089          204, 5020, 0x89, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf6, 0x01, 0x0e,
7090          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7091          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07dc, 0x07d8, 0x07d4, 0x0209,
7092          0x020a,
7093          0x020b},
7094         {
7095          206, 5030, 0x8c, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf7, 0x01, 0x0e,
7096          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7097          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e0, 0x07dc, 0x07d8, 0x0208,
7098          0x0209,
7099          0x020a},
7100         {
7101          208, 5040, 0x90, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf8, 0x01, 0x0e,
7102          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7103          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e4, 0x07e0, 0x07dc, 0x0207,
7104          0x0208,
7105          0x0209},
7106         {
7107          210, 5050, 0x93, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xf9, 0x01, 0x0e,
7108          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7109          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07e8, 0x07e4, 0x07e0, 0x0206,
7110          0x0207,
7111          0x0208},
7112         {
7113          212, 5060, 0x96, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfa, 0x01, 0x0e,
7114          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7115          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07ec, 0x07e8, 0x07e4, 0x0205,
7116          0x0206,
7117          0x0207},
7118         {
7119          214, 5070, 0x9a, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfb, 0x01, 0x0e,
7120          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7121          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f0, 0x07ec, 0x07e8, 0x0204,
7122          0x0205,
7123          0x0206},
7124         {
7125          216, 5080, 0x9d, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfc, 0x01, 0x0e,
7126          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7127          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f4, 0x07f0, 0x07ec, 0x0203,
7128          0x0204,
7129          0x0205},
7130         {
7131          218, 5090, 0xa0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfd, 0x01, 0x0e,
7132          0x00, 0x0e, 0x00, 0xee, 0x00, 0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x00,
7133          0x00, 0x0f, 0x0f, 0xb3, 0x00, 0xff, 0x07f8, 0x07f4, 0x07f0, 0x0202,
7134          0x0203,
7135          0x0204},
7136         {
7137          220, 5100, 0xa4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xfe, 0x01, 0x0d,
7138          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7139          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x07fc, 0x07f8, 0x07f4, 0x0201,
7140          0x0202,
7141          0x0203},
7142         {
7143          222, 5110, 0xa7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0xff, 0x01, 0x0d,
7144          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7145          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0800, 0x07fc, 0x07f8, 0x0200,
7146          0x0201,
7147          0x0202},
7148         {
7149          224, 5120, 0xaa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x00, 0x02, 0x0d,
7150          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7151          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0804, 0x0800, 0x07fc, 0x01ff,
7152          0x0200,
7153          0x0201},
7154         {
7155          226, 5130, 0xae, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x01, 0x02, 0x0d,
7156          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7157          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0808, 0x0804, 0x0800, 0x01fe,
7158          0x01ff,
7159          0x0200},
7160         {
7161          228, 5140, 0xb1, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x02, 0x02, 0x0d,
7162          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7163          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x080c, 0x0808, 0x0804, 0x01fd,
7164          0x01fe,
7165          0x01ff},
7166         {
7167          32, 5160, 0xb8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x04, 0x02, 0x0d,
7168          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7169          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0814, 0x0810, 0x080c, 0x01fb,
7170          0x01fc,
7171          0x01fd},
7172         {
7173          34, 5170, 0xbb, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x05, 0x02, 0x0d,
7174          0x00, 0x0d, 0x00, 0xdd, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7175          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0818, 0x0814, 0x0810, 0x01fa,
7176          0x01fb,
7177          0x01fc},
7178         {
7179          36, 5180, 0xbe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x06, 0x02, 0x0c,
7180          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7181          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x081c, 0x0818, 0x0814, 0x01f9,
7182          0x01fa,
7183          0x01fb},
7184         {
7185          38, 5190, 0xc2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x07, 0x02, 0x0c,
7186          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x00,
7187          0x00, 0x0f, 0x0f, 0xa3, 0x00, 0xfc, 0x0820, 0x081c, 0x0818, 0x01f8,
7188          0x01f9,
7189          0x01fa},
7190         {
7191          40, 5200, 0xc5, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x08, 0x02, 0x0c,
7192          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7193          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0824, 0x0820, 0x081c, 0x01f7,
7194          0x01f8,
7195          0x01f9},
7196         {
7197          42, 5210, 0xc8, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x09, 0x02, 0x0c,
7198          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7199          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0828, 0x0824, 0x0820, 0x01f6,
7200          0x01f7,
7201          0x01f8},
7202         {
7203          44, 5220, 0xcc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0a, 0x02, 0x0c,
7204          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7205          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x082c, 0x0828, 0x0824, 0x01f5,
7206          0x01f6,
7207          0x01f7},
7208         {
7209          46, 5230, 0xcf, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0b, 0x02, 0x0c,
7210          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7211          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0830, 0x082c, 0x0828, 0x01f4,
7212          0x01f5,
7213          0x01f6},
7214         {
7215          48, 5240, 0xd2, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0c, 0x02, 0x0c,
7216          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7217          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0834, 0x0830, 0x082c, 0x01f3,
7218          0x01f4,
7219          0x01f5},
7220         {
7221          50, 5250, 0xd6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0d, 0x02, 0x0c,
7222          0x00, 0x0c, 0x00, 0xcc, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7223          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0838, 0x0834, 0x0830, 0x01f2,
7224          0x01f3,
7225          0x01f4},
7226         {
7227          52, 5260, 0xd9, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0e, 0x02, 0x0b,
7228          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7229          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x083c, 0x0838, 0x0834, 0x01f1,
7230          0x01f2,
7231          0x01f3},
7232         {
7233          54, 5270, 0xdc, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x0f, 0x02, 0x0b,
7234          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7235          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0840, 0x083c, 0x0838, 0x01f0,
7236          0x01f1,
7237          0x01f2},
7238         {
7239          56, 5280, 0xe0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x10, 0x02, 0x0b,
7240          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7241          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0844, 0x0840, 0x083c, 0x01f0,
7242          0x01f0,
7243          0x01f1},
7244         {
7245          58, 5290, 0xe3, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x11, 0x02, 0x0b,
7246          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x00,
7247          0x00, 0x0f, 0x0f, 0x93, 0x00, 0xf8, 0x0848, 0x0844, 0x0840, 0x01ef,
7248          0x01f0,
7249          0x01f0},
7250         {
7251          60, 5300, 0xe6, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x12, 0x02, 0x0b,
7252          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7253          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x084c, 0x0848, 0x0844, 0x01ee,
7254          0x01ef,
7255          0x01f0},
7256         {
7257          62, 5310, 0xea, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x13, 0x02, 0x0b,
7258          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7259          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0850, 0x084c, 0x0848, 0x01ed,
7260          0x01ee,
7261          0x01ef},
7262         {
7263          64, 5320, 0xed, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x14, 0x02, 0x0b,
7264          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7265          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0854, 0x0850, 0x084c, 0x01ec,
7266          0x01ed,
7267          0x01ee},
7268         {
7269          66, 5330, 0xf0, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x15, 0x02, 0x0b,
7270          0x00, 0x0b, 0x00, 0xbb, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7271          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0858, 0x0854, 0x0850, 0x01eb,
7272          0x01ec,
7273          0x01ed},
7274         {
7275          68, 5340, 0xf4, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x16, 0x02, 0x0a,
7276          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7277          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x085c, 0x0858, 0x0854, 0x01ea,
7278          0x01eb,
7279          0x01ec},
7280         {
7281          70, 5350, 0xf7, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x17, 0x02, 0x0a,
7282          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7283          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0860, 0x085c, 0x0858, 0x01e9,
7284          0x01ea,
7285          0x01eb},
7286         {
7287          72, 5360, 0xfa, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x18, 0x02, 0x0a,
7288          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7289          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0864, 0x0860, 0x085c, 0x01e8,
7290          0x01e9,
7291          0x01ea},
7292         {
7293          74, 5370, 0xfe, 0x16, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x19, 0x02, 0x0a,
7294          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7295          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0868, 0x0864, 0x0860, 0x01e7,
7296          0x01e8,
7297          0x01e9},
7298         {
7299          76, 5380, 0x01, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1a, 0x02, 0x0a,
7300          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7301          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x086c, 0x0868, 0x0864, 0x01e6,
7302          0x01e7,
7303          0x01e8},
7304         {
7305          78, 5390, 0x04, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1b, 0x02, 0x0a,
7306          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x00,
7307          0x00, 0x0f, 0x0c, 0x83, 0x00, 0xf5, 0x0870, 0x086c, 0x0868, 0x01e5,
7308          0x01e6,
7309          0x01e7},
7310         {
7311          80, 5400, 0x08, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1c, 0x02, 0x0a,
7312          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7313          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0874, 0x0870, 0x086c, 0x01e5,
7314          0x01e5,
7315          0x01e6},
7316         {
7317          82, 5410, 0x0b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1d, 0x02, 0x0a,
7318          0x00, 0x0a, 0x00, 0xaa, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7319          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0878, 0x0874, 0x0870, 0x01e4,
7320          0x01e5,
7321          0x01e5},
7322         {
7323          84, 5420, 0x0e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1e, 0x02, 0x09,
7324          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7325          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x087c, 0x0878, 0x0874, 0x01e3,
7326          0x01e4,
7327          0x01e5},
7328         {
7329          86, 5430, 0x12, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x1f, 0x02, 0x09,
7330          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7331          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0880, 0x087c, 0x0878, 0x01e2,
7332          0x01e3,
7333          0x01e4},
7334         {
7335          88, 5440, 0x15, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x20, 0x02, 0x09,
7336          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7337          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0884, 0x0880, 0x087c, 0x01e1,
7338          0x01e2,
7339          0x01e3},
7340         {
7341          90, 5450, 0x18, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x21, 0x02, 0x09,
7342          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7343          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0888, 0x0884, 0x0880, 0x01e0,
7344          0x01e1,
7345          0x01e2},
7346         {
7347          92, 5460, 0x1c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x22, 0x02, 0x09,
7348          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7349          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x088c, 0x0888, 0x0884, 0x01df,
7350          0x01e0,
7351          0x01e1},
7352         {
7353          94, 5470, 0x1f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x23, 0x02, 0x09,
7354          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7355          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0890, 0x088c, 0x0888, 0x01de,
7356          0x01df,
7357          0x01e0},
7358         {
7359          96, 5480, 0x22, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x24, 0x02, 0x09,
7360          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7361          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0894, 0x0890, 0x088c, 0x01dd,
7362          0x01de,
7363          0x01df},
7364         {
7365          98, 5490, 0x26, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x25, 0x02, 0x09,
7366          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x00,
7367          0x00, 0x0d, 0x09, 0x53, 0x00, 0xb1, 0x0898, 0x0894, 0x0890, 0x01dd,
7368          0x01dd,
7369          0x01de},
7370         {
7371          100, 5500, 0x29, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x26, 0x02, 0x09,
7372          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7373          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x089c, 0x0898, 0x0894, 0x01dc,
7374          0x01dd,
7375          0x01dd},
7376         {
7377          102, 5510, 0x2c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x27, 0x02, 0x09,
7378          0x00, 0x09, 0x00, 0x99, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7379          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a0, 0x089c, 0x0898, 0x01db,
7380          0x01dc,
7381          0x01dd},
7382         {
7383          104, 5520, 0x30, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x28, 0x02, 0x08,
7384          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7385          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a4, 0x08a0, 0x089c, 0x01da,
7386          0x01db,
7387          0x01dc},
7388         {
7389          106, 5530, 0x33, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x29, 0x02, 0x08,
7390          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7391          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08a8, 0x08a4, 0x08a0, 0x01d9,
7392          0x01da,
7393          0x01db},
7394         {
7395          108, 5540, 0x36, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2a, 0x02, 0x08,
7396          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7397          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08ac, 0x08a8, 0x08a4, 0x01d8,
7398          0x01d9,
7399          0x01da},
7400         {
7401          110, 5550, 0x3a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2b, 0x02, 0x08,
7402          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7403          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b0, 0x08ac, 0x08a8, 0x01d7,
7404          0x01d8,
7405          0x01d9},
7406         {
7407          112, 5560, 0x3d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2c, 0x02, 0x08,
7408          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7409          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b4, 0x08b0, 0x08ac, 0x01d7,
7410          0x01d7,
7411          0x01d8},
7412         {
7413          114, 5570, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2d, 0x02, 0x08,
7414          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7415          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08b8, 0x08b4, 0x08b0, 0x01d6,
7416          0x01d7,
7417          0x01d7},
7418         {
7419          116, 5580, 0x44, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2e, 0x02, 0x08,
7420          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7421          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08bc, 0x08b8, 0x08b4, 0x01d5,
7422          0x01d6,
7423          0x01d7},
7424         {
7425          118, 5590, 0x47, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x2f, 0x02, 0x08,
7426          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x00,
7427          0x00, 0x0a, 0x06, 0x43, 0x00, 0x80, 0x08c0, 0x08bc, 0x08b8, 0x01d4,
7428          0x01d5,
7429          0x01d6},
7430         {
7431          120, 5600, 0x4a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x30, 0x02, 0x08,
7432          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7433          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c4, 0x08c0, 0x08bc, 0x01d3,
7434          0x01d4,
7435          0x01d5},
7436         {
7437          122, 5610, 0x4e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x31, 0x02, 0x08,
7438          0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7439          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08c8, 0x08c4, 0x08c0, 0x01d2,
7440          0x01d3,
7441          0x01d4},
7442         {
7443          124, 5620, 0x51, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x32, 0x02, 0x07,
7444          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7445          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08cc, 0x08c8, 0x08c4, 0x01d2,
7446          0x01d2,
7447          0x01d3},
7448         {
7449          126, 5630, 0x54, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x33, 0x02, 0x07,
7450          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7451          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d0, 0x08cc, 0x08c8, 0x01d1,
7452          0x01d2,
7453          0x01d2},
7454         {
7455          128, 5640, 0x58, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x34, 0x02, 0x07,
7456          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x00,
7457          0x00, 0x09, 0x04, 0x23, 0x00, 0x60, 0x08d4, 0x08d0, 0x08cc, 0x01d0,
7458          0x01d1,
7459          0x01d2},
7460         {
7461          130, 5650, 0x5b, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x35, 0x02, 0x07,
7462          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7463          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08d8, 0x08d4, 0x08d0, 0x01cf,
7464          0x01d0,
7465          0x01d1},
7466         {
7467          132, 5660, 0x5e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x36, 0x02, 0x07,
7468          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7469          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08dc, 0x08d8, 0x08d4, 0x01ce,
7470          0x01cf,
7471          0x01d0},
7472         {
7473          134, 5670, 0x62, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x37, 0x02, 0x07,
7474          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x00,
7475          0x00, 0x09, 0x03, 0x23, 0x00, 0x60, 0x08e0, 0x08dc, 0x08d8, 0x01ce,
7476          0x01ce,
7477          0x01cf},
7478         {
7479          136, 5680, 0x65, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x38, 0x02, 0x07,
7480          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7481          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e4, 0x08e0, 0x08dc, 0x01cd,
7482          0x01ce,
7483          0x01ce},
7484         {
7485          138, 5690, 0x68, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x39, 0x02, 0x07,
7486          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x00,
7487          0x00, 0x09, 0x02, 0x23, 0x00, 0x60, 0x08e8, 0x08e4, 0x08e0, 0x01cc,
7488          0x01cd,
7489          0x01ce},
7490         {
7491          140, 5700, 0x6c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3a, 0x02, 0x07,
7492          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7493          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08ec, 0x08e8, 0x08e4, 0x01cb,
7494          0x01cc,
7495          0x01cd},
7496         {
7497          142, 5710, 0x6f, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3b, 0x02, 0x07,
7498          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7499          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f0, 0x08ec, 0x08e8, 0x01ca,
7500          0x01cb,
7501          0x01cc},
7502         {
7503          144, 5720, 0x72, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3c, 0x02, 0x07,
7504          0x00, 0x07, 0x00, 0x77, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7505          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f4, 0x08f0, 0x08ec, 0x01c9,
7506          0x01ca,
7507          0x01cb},
7508         {
7509          145, 5725, 0x74, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x79, 0x04, 0x06,
7510          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7511          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f6, 0x08f2, 0x08ee, 0x01c9,
7512          0x01ca,
7513          0x01cb},
7514         {
7515          146, 5730, 0x76, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3d, 0x02, 0x06,
7516          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7517          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08f8, 0x08f4, 0x08f0, 0x01c9,
7518          0x01c9,
7519          0x01ca},
7520         {
7521          147, 5735, 0x77, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7b, 0x04, 0x06,
7522          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7523          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fa, 0x08f6, 0x08f2, 0x01c8,
7524          0x01c9,
7525          0x01ca},
7526         {
7527          148, 5740, 0x79, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3e, 0x02, 0x06,
7528          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7529          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fc, 0x08f8, 0x08f4, 0x01c8,
7530          0x01c9,
7531          0x01c9},
7532         {
7533          149, 5745, 0x7b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7d, 0x04, 0x06,
7534          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x00,
7535          0x00, 0x08, 0x02, 0x13, 0x00, 0x30, 0x08fe, 0x08fa, 0x08f6, 0x01c8,
7536          0x01c8,
7537          0x01c9},
7538         {
7539          150, 5750, 0x7c, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x3f, 0x02, 0x06,
7540          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7541          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0900, 0x08fc, 0x08f8, 0x01c7,
7542          0x01c8,
7543          0x01c9},
7544         {
7545          151, 5755, 0x7e, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x7f, 0x04, 0x06,
7546          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7547          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0902, 0x08fe, 0x08fa, 0x01c7,
7548          0x01c8,
7549          0x01c8},
7550         {
7551          152, 5760, 0x80, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x40, 0x02, 0x06,
7552          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7553          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0904, 0x0900, 0x08fc, 0x01c6,
7554          0x01c7,
7555          0x01c8},
7556         {
7557          153, 5765, 0x81, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x81, 0x04, 0x06,
7558          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7559          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0906, 0x0902, 0x08fe, 0x01c6,
7560          0x01c7,
7561          0x01c8},
7562         {
7563          154, 5770, 0x83, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x41, 0x02, 0x06,
7564          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7565          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0908, 0x0904, 0x0900, 0x01c6,
7566          0x01c6,
7567          0x01c7},
7568         {
7569          155, 5775, 0x85, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x83, 0x04, 0x06,
7570          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7571          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090a, 0x0906, 0x0902, 0x01c5,
7572          0x01c6,
7573          0x01c7},
7574         {
7575          156, 5780, 0x86, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x42, 0x02, 0x06,
7576          0x00, 0x06, 0x00, 0x66, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7577          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090c, 0x0908, 0x0904, 0x01c5,
7578          0x01c6,
7579          0x01c6},
7580         {
7581          157, 5785, 0x88, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x85, 0x04, 0x05,
7582          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7583          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x090e, 0x090a, 0x0906, 0x01c4,
7584          0x01c5,
7585          0x01c6},
7586         {
7587          158, 5790, 0x8a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x43, 0x02, 0x05,
7588          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7589          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0910, 0x090c, 0x0908, 0x01c4,
7590          0x01c5,
7591          0x01c6},
7592         {
7593          159, 5795, 0x8b, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x87, 0x04, 0x05,
7594          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x00,
7595          0x00, 0x08, 0x02, 0x13, 0x00, 0x00, 0x0912, 0x090e, 0x090a, 0x01c4,
7596          0x01c4,
7597          0x01c5},
7598         {
7599          160, 5800, 0x8d, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x44, 0x02, 0x05,
7600          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x00,
7601          0x00, 0x08, 0x01, 0x03, 0x00, 0x00, 0x0914, 0x0910, 0x090c, 0x01c3,
7602          0x01c4,
7603          0x01c5},
7604         {
7605          161, 5805, 0x8f, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x89, 0x04, 0x05,
7606          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7607          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0916, 0x0912, 0x090e, 0x01c3,
7608          0x01c4,
7609          0x01c4},
7610         {
7611          162, 5810, 0x90, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x45, 0x02, 0x05,
7612          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7613          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0918, 0x0914, 0x0910, 0x01c2,
7614          0x01c3,
7615          0x01c4},
7616         {
7617          163, 5815, 0x92, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8b, 0x04, 0x05,
7618          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7619          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091a, 0x0916, 0x0912, 0x01c2,
7620          0x01c3,
7621          0x01c4},
7622         {
7623          164, 5820, 0x94, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x46, 0x02, 0x05,
7624          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7625          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091c, 0x0918, 0x0914, 0x01c2,
7626          0x01c2,
7627          0x01c3},
7628         {
7629          165, 5825, 0x95, 0x17, 0x20, 0x14, 0x08, 0x08, 0x30, 0x8d, 0x04, 0x05,
7630          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7631          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x091e, 0x091a, 0x0916, 0x01c1,
7632          0x01c2,
7633          0x01c3},
7634         {
7635          166, 5830, 0x97, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x47, 0x02, 0x05,
7636          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7637          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0920, 0x091c, 0x0918, 0x01c1,
7638          0x01c2,
7639          0x01c2},
7640         {
7641          168, 5840, 0x9a, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x48, 0x02, 0x05,
7642          0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7643          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0924, 0x0920, 0x091c, 0x01c0,
7644          0x01c1,
7645          0x01c2},
7646         {
7647          170, 5850, 0x9e, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x49, 0x02, 0x04,
7648          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7649          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0928, 0x0924, 0x0920, 0x01bf,
7650          0x01c0,
7651          0x01c1},
7652         {
7653          172, 5860, 0xa1, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4a, 0x02, 0x04,
7654          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7655          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x092c, 0x0928, 0x0924, 0x01bf,
7656          0x01bf,
7657          0x01c0},
7658         {
7659          174, 5870, 0xa4, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4b, 0x02, 0x04,
7660          0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7661          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0930, 0x092c, 0x0928, 0x01be,
7662          0x01bf,
7663          0x01bf},
7664         {
7665          176, 5880, 0xa8, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4c, 0x02, 0x03,
7666          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7667          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0934, 0x0930, 0x092c, 0x01bd,
7668          0x01be,
7669          0x01bf},
7670         {
7671          178, 5890, 0xab, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4d, 0x02, 0x03,
7672          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7673          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x0938, 0x0934, 0x0930, 0x01bc,
7674          0x01bd,
7675          0x01be},
7676         {
7677          180, 5900, 0xae, 0x17, 0x10, 0x0c, 0x0c, 0x0c, 0x30, 0x4e, 0x02, 0x03,
7678          0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00,
7679          0x00, 0x06, 0x01, 0x03, 0x00, 0x00, 0x093c, 0x0938, 0x0934, 0x01bc,
7680          0x01bc,
7681          0x01bd},
7682         {
7683          1, 2412, 0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, 0x09, 0x0f,
7684          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7685          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03c9, 0x03c5, 0x03c1, 0x043a,
7686          0x043f,
7687          0x0443},
7688         {
7689          2, 2417, 0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, 0x09, 0x0f,
7690          0x0a, 0x00, 0x0a, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7691          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cb, 0x03c7, 0x03c3, 0x0438,
7692          0x043d,
7693          0x0441},
7694         {
7695          3, 2422, 0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, 0x09, 0x0f,
7696          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7697          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cd, 0x03c9, 0x03c5, 0x0436,
7698          0x043a,
7699          0x043f},
7700         {
7701          4, 2427, 0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, 0x09, 0x0f,
7702          0x09, 0x00, 0x09, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7703          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03cf, 0x03cb, 0x03c7, 0x0434,
7704          0x0438,
7705          0x043d},
7706         {
7707          5, 2432, 0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, 0x09, 0x0f,
7708          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7709          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d1, 0x03cd, 0x03c9, 0x0431,
7710          0x0436,
7711          0x043a},
7712         {
7713          6, 2437, 0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, 0x09, 0x0f,
7714          0x08, 0x00, 0x08, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7715          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d3, 0x03cf, 0x03cb, 0x042f,
7716          0x0434,
7717          0x0438},
7718         {
7719          7, 2442, 0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, 0x09, 0x0f,
7720          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7721          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d5, 0x03d1, 0x03cd, 0x042d,
7722          0x0431,
7723          0x0436},
7724         {
7725          8, 2447, 0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, 0x09, 0x0f,
7726          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7727          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d7, 0x03d3, 0x03cf, 0x042b,
7728          0x042f,
7729          0x0434},
7730         {
7731          9, 2452, 0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, 0x09, 0x0f,
7732          0x07, 0x00, 0x07, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7733          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03d9, 0x03d5, 0x03d1, 0x0429,
7734          0x042d,
7735          0x0431},
7736         {
7737          10, 2457, 0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, 0x09, 0x0f,
7738          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7739          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03db, 0x03d7, 0x03d3, 0x0427,
7740          0x042b,
7741          0x042f},
7742         {
7743          11, 2462, 0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, 0x09, 0x0f,
7744          0x06, 0x00, 0x06, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7745          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03dd, 0x03d9, 0x03d5, 0x0424,
7746          0x0429,
7747          0x042d},
7748         {
7749          12, 2467, 0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, 0x09, 0x0f,
7750          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7751          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03df, 0x03db, 0x03d7, 0x0422,
7752          0x0427,
7753          0x042b},
7754         {
7755          13, 2472, 0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, 0x09, 0x0f,
7756          0x05, 0x00, 0x05, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61,
7757          0x73, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x03e1, 0x03dd, 0x03d9, 0x0420,
7758          0x0424,
7759          0x0429},
7760         {
7761          14, 2484, 0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, 0x09, 0x0f,
7762          0x04, 0x00, 0x04, 0x00, 0x61, 0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x61,
7763          0x73, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x03e6, 0x03e2, 0x03de, 0x041b,
7764          0x041f,
7765          0x0424}
7766 };
7767
7768 static struct radio_regs regs_2055[] = {
7769         {0x02, 0x80, 0x80, 0, 0},
7770         {0x03, 0, 0, 0, 0},
7771         {0x04, 0x27, 0x27, 0, 0},
7772         {0x05, 0, 0, 0, 0},
7773         {0x06, 0x27, 0x27, 0, 0},
7774         {0x07, 0x7f, 0x7f, 1, 1},
7775         {0x08, 0x7, 0x7, 1, 1},
7776         {0x09, 0x7f, 0x7f, 1, 1},
7777         {0x0A, 0x7, 0x7, 1, 1},
7778         {0x0B, 0x15, 0x15, 0, 0},
7779         {0x0C, 0x15, 0x15, 0, 0},
7780         {0x0D, 0x4f, 0x4f, 1, 1},
7781         {0x0E, 0x5, 0x5, 1, 1},
7782         {0x0F, 0x4f, 0x4f, 1, 1},
7783         {0x10, 0x5, 0x5, 1, 1},
7784         {0x11, 0xd0, 0xd0, 0, 0},
7785         {0x12, 0x2, 0x2, 0, 0},
7786         {0x13, 0, 0, 0, 0},
7787         {0x14, 0x40, 0x40, 0, 0},
7788         {0x15, 0, 0, 0, 0},
7789         {0x16, 0, 0, 0, 0},
7790         {0x17, 0, 0, 0, 0},
7791         {0x18, 0, 0, 0, 0},
7792         {0x19, 0, 0, 0, 0},
7793         {0x1A, 0, 0, 0, 0},
7794         {0x1B, 0, 0, 0, 0},
7795         {0x1C, 0, 0, 0, 0},
7796         {0x1D, 0xc0, 0xc0, 0, 0},
7797         {0x1E, 0xff, 0xff, 0, 0},
7798         {0x1F, 0xc0, 0xc0, 0, 0},
7799         {0x20, 0xff, 0xff, 0, 0},
7800         {0x21, 0xc0, 0xc0, 0, 0},
7801         {0x22, 0, 0, 0, 0},
7802         {0x23, 0x2c, 0x2c, 0, 0},
7803         {0x24, 0, 0, 0, 0},
7804         {0x25, 0, 0, 0, 0},
7805         {0x26, 0, 0, 0, 0},
7806         {0x27, 0, 0, 0, 0},
7807         {0x28, 0, 0, 0, 0},
7808         {0x29, 0, 0, 0, 0},
7809         {0x2A, 0, 0, 0, 0},
7810         {0x2B, 0, 0, 0, 0},
7811         {0x2C, 0, 0, 0, 0},
7812         {0x2D, 0xa4, 0xa4, 0, 0},
7813         {0x2E, 0x38, 0x38, 0, 0},
7814         {0x2F, 0, 0, 0, 0},
7815         {0x30, 0x4, 0x4, 1, 1},
7816         {0x31, 0, 0, 0, 0},
7817         {0x32, 0xa, 0xa, 0, 0},
7818         {0x33, 0x87, 0x87, 0, 0},
7819         {0x34, 0x9, 0x9, 0, 0},
7820         {0x35, 0x70, 0x70, 0, 0},
7821         {0x36, 0x11, 0x11, 0, 0},
7822         {0x37, 0x18, 0x18, 1, 1},
7823         {0x38, 0x6, 0x6, 0, 0},
7824         {0x39, 0x4, 0x4, 1, 1},
7825         {0x3A, 0x6, 0x6, 0, 0},
7826         {0x3B, 0x9e, 0x9e, 0, 0},
7827         {0x3C, 0x9, 0x9, 0, 0},
7828         {0x3D, 0xc8, 0xc8, 1, 1},
7829         {0x3E, 0x88, 0x88, 0, 0},
7830         {0x3F, 0, 0, 0, 0},
7831         {0x40, 0, 0, 0, 0},
7832         {0x41, 0, 0, 0, 0},
7833         {0x42, 0x1, 0x1, 0, 0},
7834         {0x43, 0x2, 0x2, 0, 0},
7835         {0x44, 0x96, 0x96, 0, 0},
7836         {0x45, 0x3e, 0x3e, 0, 0},
7837         {0x46, 0x3e, 0x3e, 0, 0},
7838         {0x47, 0x13, 0x13, 0, 0},
7839         {0x48, 0x2, 0x2, 0, 0},
7840         {0x49, 0x15, 0x15, 0, 0},
7841         {0x4A, 0x7, 0x7, 0, 0},
7842         {0x4B, 0, 0, 0, 0},
7843         {0x4C, 0, 0, 0, 0},
7844         {0x4D, 0, 0, 0, 0},
7845         {0x4E, 0, 0, 0, 0},
7846         {0x4F, 0, 0, 0, 0},
7847         {0x50, 0x8, 0x8, 0, 0},
7848         {0x51, 0x8, 0x8, 0, 0},
7849         {0x52, 0x6, 0x6, 0, 0},
7850         {0x53, 0x84, 0x84, 1, 1},
7851         {0x54, 0xc3, 0xc3, 0, 0},
7852         {0x55, 0x8f, 0x8f, 0, 0},
7853         {0x56, 0xff, 0xff, 0, 0},
7854         {0x57, 0xff, 0xff, 0, 0},
7855         {0x58, 0x88, 0x88, 0, 0},
7856         {0x59, 0x88, 0x88, 0, 0},
7857         {0x5A, 0, 0, 0, 0},
7858         {0x5B, 0xcc, 0xcc, 0, 0},
7859         {0x5C, 0x6, 0x6, 0, 0},
7860         {0x5D, 0x80, 0x80, 0, 0},
7861         {0x5E, 0x80, 0x80, 0, 0},
7862         {0x5F, 0xf8, 0xf8, 0, 0},
7863         {0x60, 0x88, 0x88, 0, 0},
7864         {0x61, 0x88, 0x88, 0, 0},
7865         {0x62, 0x88, 0x8, 1, 1},
7866         {0x63, 0x88, 0x88, 0, 0},
7867         {0x64, 0, 0, 0, 0},
7868         {0x65, 0x1, 0x1, 1, 1},
7869         {0x66, 0x8a, 0x8a, 0, 0},
7870         {0x67, 0x8, 0x8, 0, 0},
7871         {0x68, 0x83, 0x83, 0, 0},
7872         {0x69, 0x6, 0x6, 0, 0},
7873         {0x6A, 0xa0, 0xa0, 0, 0},
7874         {0x6B, 0xa, 0xa, 0, 0},
7875         {0x6C, 0x87, 0x87, 1, 1},
7876         {0x6D, 0x2a, 0x2a, 0, 0},
7877         {0x6E, 0x2a, 0x2a, 0, 0},
7878         {0x6F, 0x2a, 0x2a, 0, 0},
7879         {0x70, 0x2a, 0x2a, 0, 0},
7880         {0x71, 0x18, 0x18, 0, 0},
7881         {0x72, 0x6a, 0x6a, 1, 1},
7882         {0x73, 0xab, 0xab, 1, 1},
7883         {0x74, 0x13, 0x13, 1, 1},
7884         {0x75, 0xc1, 0xc1, 1, 1},
7885         {0x76, 0xaa, 0xaa, 1, 1},
7886         {0x77, 0x87, 0x87, 1, 1},
7887         {0x78, 0, 0, 0, 0},
7888         {0x79, 0x6, 0x6, 0, 0},
7889         {0x7A, 0x7, 0x7, 0, 0},
7890         {0x7B, 0x7, 0x7, 0, 0},
7891         {0x7C, 0x15, 0x15, 0, 0},
7892         {0x7D, 0x55, 0x55, 0, 0},
7893         {0x7E, 0x97, 0x97, 1, 1},
7894         {0x7F, 0x8, 0x8, 0, 0},
7895         {0x80, 0x14, 0x14, 1, 1},
7896         {0x81, 0x33, 0x33, 0, 0},
7897         {0x82, 0x88, 0x88, 0, 0},
7898         {0x83, 0x6, 0x6, 0, 0},
7899         {0x84, 0x3, 0x3, 1, 1},
7900         {0x85, 0xa, 0xa, 0, 0},
7901         {0x86, 0x3, 0x3, 1, 1},
7902         {0x87, 0x2a, 0x2a, 0, 0},
7903         {0x88, 0xa4, 0xa4, 0, 0},
7904         {0x89, 0x18, 0x18, 0, 0},
7905         {0x8A, 0x28, 0x28, 0, 0},
7906         {0x8B, 0, 0, 0, 0},
7907         {0x8C, 0x4a, 0x4a, 0, 0},
7908         {0x8D, 0, 0, 0, 0},
7909         {0x8E, 0xf8, 0xf8, 0, 0},
7910         {0x8F, 0x88, 0x88, 0, 0},
7911         {0x90, 0x88, 0x88, 0, 0},
7912         {0x91, 0x88, 0x8, 1, 1},
7913         {0x92, 0x88, 0x88, 0, 0},
7914         {0x93, 0, 0, 0, 0},
7915         {0x94, 0x1, 0x1, 1, 1},
7916         {0x95, 0x8a, 0x8a, 0, 0},
7917         {0x96, 0x8, 0x8, 0, 0},
7918         {0x97, 0x83, 0x83, 0, 0},
7919         {0x98, 0x6, 0x6, 0, 0},
7920         {0x99, 0xa0, 0xa0, 0, 0},
7921         {0x9A, 0xa, 0xa, 0, 0},
7922         {0x9B, 0x87, 0x87, 1, 1},
7923         {0x9C, 0x2a, 0x2a, 0, 0},
7924         {0x9D, 0x2a, 0x2a, 0, 0},
7925         {0x9E, 0x2a, 0x2a, 0, 0},
7926         {0x9F, 0x2a, 0x2a, 0, 0},
7927         {0xA0, 0x18, 0x18, 0, 0},
7928         {0xA1, 0x6a, 0x6a, 1, 1},
7929         {0xA2, 0xab, 0xab, 1, 1},
7930         {0xA3, 0x13, 0x13, 1, 1},
7931         {0xA4, 0xc1, 0xc1, 1, 1},
7932         {0xA5, 0xaa, 0xaa, 1, 1},
7933         {0xA6, 0x87, 0x87, 1, 1},
7934         {0xA7, 0, 0, 0, 0},
7935         {0xA8, 0x6, 0x6, 0, 0},
7936         {0xA9, 0x7, 0x7, 0, 0},
7937         {0xAA, 0x7, 0x7, 0, 0},
7938         {0xAB, 0x15, 0x15, 0, 0},
7939         {0xAC, 0x55, 0x55, 0, 0},
7940         {0xAD, 0x97, 0x97, 1, 1},
7941         {0xAE, 0x8, 0x8, 0, 0},
7942         {0xAF, 0x14, 0x14, 1, 1},
7943         {0xB0, 0x33, 0x33, 0, 0},
7944         {0xB1, 0x88, 0x88, 0, 0},
7945         {0xB2, 0x6, 0x6, 0, 0},
7946         {0xB3, 0x3, 0x3, 1, 1},
7947         {0xB4, 0xa, 0xa, 0, 0},
7948         {0xB5, 0x3, 0x3, 1, 1},
7949         {0xB6, 0x2a, 0x2a, 0, 0},
7950         {0xB7, 0xa4, 0xa4, 0, 0},
7951         {0xB8, 0x18, 0x18, 0, 0},
7952         {0xB9, 0x28, 0x28, 0, 0},
7953         {0xBA, 0, 0, 0, 0},
7954         {0xBB, 0x4a, 0x4a, 0, 0},
7955         {0xBC, 0, 0, 0, 0},
7956         {0xBD, 0x71, 0x71, 0, 0},
7957         {0xBE, 0x72, 0x72, 0, 0},
7958         {0xBF, 0x73, 0x73, 0, 0},
7959         {0xC0, 0x74, 0x74, 0, 0},
7960         {0xC1, 0x75, 0x75, 0, 0},
7961         {0xC2, 0x76, 0x76, 0, 0},
7962         {0xC3, 0x77, 0x77, 0, 0},
7963         {0xC4, 0x78, 0x78, 0, 0},
7964         {0xC5, 0x79, 0x79, 0, 0},
7965         {0xC6, 0x7a, 0x7a, 0, 0},
7966         {0xC7, 0, 0, 0, 0},
7967         {0xC8, 0, 0, 0, 0},
7968         {0xC9, 0, 0, 0, 0},
7969         {0xCA, 0, 0, 0, 0},
7970         {0xCB, 0, 0, 0, 0},
7971         {0xCC, 0, 0, 0, 0},
7972         {0xCD, 0, 0, 0, 0},
7973         {0xCE, 0x6, 0x6, 0, 0},
7974         {0xCF, 0, 0, 0, 0},
7975         {0xD0, 0, 0, 0, 0},
7976         {0xD1, 0x18, 0x18, 0, 0},
7977         {0xD2, 0x88, 0x88, 0, 0},
7978         {0xD3, 0, 0, 0, 0},
7979         {0xD4, 0, 0, 0, 0},
7980         {0xD5, 0, 0, 0, 0},
7981         {0xD6, 0, 0, 0, 0},
7982         {0xD7, 0, 0, 0, 0},
7983         {0xD8, 0, 0, 0, 0},
7984         {0xD9, 0, 0, 0, 0},
7985         {0xDA, 0x6, 0x6, 0, 0},
7986         {0xDB, 0, 0, 0, 0},
7987         {0xDC, 0, 0, 0, 0},
7988         {0xDD, 0x18, 0x18, 0, 0},
7989         {0xDE, 0x88, 0x88, 0, 0},
7990         {0xDF, 0, 0, 0, 0},
7991         {0xE0, 0, 0, 0, 0},
7992         {0xE1, 0, 0, 0, 0},
7993         {0xE2, 0, 0, 0, 0},
7994         {0xFFFF, 0, 0, 0, 0},
7995 };
7996
7997 static struct radio_regs regs_SYN_2056[] = {
7998         {0x02, 0, 0, 0, 0},
7999         {0x03, 0, 0, 0, 0},
8000         {0x04, 0, 0, 0, 0},
8001         {0x05, 0, 0, 0, 0},
8002         {0x06, 0, 0, 0, 0},
8003         {0x07, 0, 0, 0, 0},
8004         {0x08, 0, 0, 0, 0},
8005         {0x09, 0x1, 0x1, 0, 0},
8006         {0x0A, 0, 0, 0, 0},
8007         {0x0B, 0, 0, 0, 0},
8008         {0x0C, 0, 0, 0, 0},
8009         {0x0D, 0, 0, 0, 0},
8010         {0x0E, 0, 0, 0, 0},
8011         {0x0F, 0, 0, 0, 0},
8012         {0x10, 0, 0, 0, 0},
8013         {0x11, 0, 0, 0, 0},
8014         {0x12, 0, 0, 0, 0},
8015         {0x13, 0, 0, 0, 0},
8016         {0x14, 0, 0, 0, 0},
8017         {0x15, 0, 0, 0, 0},
8018         {0x16, 0, 0, 0, 0},
8019         {0x17, 0, 0, 0, 0},
8020         {0x18, 0, 0, 0, 0},
8021         {0x19, 0, 0, 0, 0},
8022         {0x1A, 0, 0, 0, 0},
8023         {0x1B, 0, 0, 0, 0},
8024         {0x1C, 0, 0, 0, 0},
8025         {0x1D, 0, 0, 0, 0},
8026         {0x1E, 0, 0, 0, 0},
8027         {0x1F, 0, 0, 0, 0},
8028         {0x20, 0, 0, 0, 0},
8029         {0x21, 0, 0, 0, 0},
8030         {0x22, 0x60, 0x60, 0, 0},
8031         {0x23, 0x6, 0x6, 0, 0},
8032         {0x24, 0xc, 0xc, 0, 0},
8033         {0x25, 0, 0, 0, 0},
8034         {0x26, 0, 0, 0, 0},
8035         {0x27, 0, 0, 0, 0},
8036         {0x28, 0x1, 0x1, 0, 0},
8037         {0x29, 0, 0, 0, 0},
8038         {0x2A, 0, 0, 0, 0},
8039         {0x2B, 0, 0, 0, 0},
8040         {0x2C, 0, 0, 0, 0},
8041         {0x2D, 0, 0, 0, 0},
8042         {0x2E, 0xd, 0xd, 0, 0},
8043         {0x2F, 0x1f, 0x1f, 0, 0},
8044         {0x30, 0x15, 0x15, 0, 0},
8045         {0x31, 0xf, 0xf, 0, 0},
8046         {0x32, 0, 0, 0, 0},
8047         {0x33, 0, 0, 0, 0},
8048         {0x34, 0, 0, 0, 0},
8049         {0x35, 0, 0, 0, 0},
8050         {0x36, 0, 0, 0, 0},
8051         {0x37, 0, 0, 0, 0},
8052         {0x38, 0, 0, 0, 0},
8053         {0x39, 0, 0, 0, 0},
8054         {0x3A, 0, 0, 0, 0},
8055         {0x3B, 0, 0, 0, 0},
8056         {0x3C, 0x13, 0x13, 0, 0},
8057         {0x3D, 0xf, 0xf, 0, 0},
8058         {0x3E, 0x18, 0x18, 0, 0},
8059         {0x3F, 0, 0, 0, 0},
8060         {0x40, 0, 0, 0, 0},
8061         {0x41, 0x20, 0x20, 0, 0},
8062         {0x42, 0x20, 0x20, 0, 0},
8063         {0x43, 0, 0, 0, 0},
8064         {0x44, 0x77, 0x77, 0, 0},
8065         {0x45, 0x7, 0x7, 0, 0},
8066         {0x46, 0x1, 0x1, 0, 0},
8067         {0x47, 0x4, 0x4, 0, 0},
8068         {0x48, 0xf, 0xf, 0, 0},
8069         {0x49, 0x30, 0x30, 0, 0},
8070         {0x4A, 0x32, 0x32, 0, 0},
8071         {0x4B, 0xd, 0xd, 0, 0},
8072         {0x4C, 0xd, 0xd, 0, 0},
8073         {0x4D, 0x4, 0x4, 0, 0},
8074         {0x4E, 0x6, 0x6, 0, 0},
8075         {0x4F, 0x1, 0x1, 0, 0},
8076         {0x50, 0x1c, 0x1c, 0, 0},
8077         {0x51, 0x2, 0x2, 0, 0},
8078         {0x52, 0x2, 0x2, 0, 0},
8079         {0x53, 0xf7, 0xf7, 1, 1},
8080         {0x54, 0xb4, 0xb4, 0, 0},
8081         {0x55, 0xd2, 0xd2, 0, 0},
8082         {0x56, 0, 0, 0, 0},
8083         {0x57, 0, 0, 0, 0},
8084         {0x58, 0x4, 0x4, 0, 0},
8085         {0x59, 0x96, 0x96, 0, 0},
8086         {0x5A, 0x3e, 0x3e, 0, 0},
8087         {0x5B, 0x3e, 0x3e, 0, 0},
8088         {0x5C, 0x13, 0x13, 0, 0},
8089         {0x5D, 0x2, 0x2, 0, 0},
8090         {0x5E, 0, 0, 0, 0},
8091         {0x5F, 0x7, 0x7, 0, 0},
8092         {0x60, 0x7, 0x7, 1, 1},
8093         {0x61, 0x8, 0x8, 0, 0},
8094         {0x62, 0x3, 0x3, 0, 0},
8095         {0x63, 0, 0, 0, 0},
8096         {0x64, 0, 0, 0, 0},
8097         {0x65, 0, 0, 0, 0},
8098         {0x66, 0, 0, 0, 0},
8099         {0x67, 0, 0, 0, 0},
8100         {0x68, 0x40, 0x40, 0, 0},
8101         {0x69, 0, 0, 0, 0},
8102         {0x6A, 0, 0, 0, 0},
8103         {0x6B, 0, 0, 0, 0},
8104         {0x6C, 0, 0, 0, 0},
8105         {0x6D, 0x1, 0x1, 0, 0},
8106         {0x6E, 0, 0, 0, 0},
8107         {0x6F, 0, 0, 0, 0},
8108         {0x70, 0x60, 0x60, 0, 0},
8109         {0x71, 0x66, 0x66, 0, 0},
8110         {0x72, 0xc, 0xc, 0, 0},
8111         {0x73, 0x66, 0x66, 0, 0},
8112         {0x74, 0x8f, 0x8f, 1, 1},
8113         {0x75, 0, 0, 0, 0},
8114         {0x76, 0xcc, 0xcc, 0, 0},
8115         {0x77, 0x1, 0x1, 0, 0},
8116         {0x78, 0x66, 0x66, 0, 0},
8117         {0x79, 0x66, 0x66, 0, 0},
8118         {0x7A, 0, 0, 0, 0},
8119         {0x7B, 0, 0, 0, 0},
8120         {0x7C, 0, 0, 0, 0},
8121         {0x7D, 0, 0, 0, 0},
8122         {0x7E, 0, 0, 0, 0},
8123         {0x7F, 0, 0, 0, 0},
8124         {0x80, 0, 0, 0, 0},
8125         {0x81, 0, 0, 0, 0},
8126         {0x82, 0, 0, 0, 0},
8127         {0x83, 0, 0, 0, 0},
8128         {0x84, 0, 0, 0, 0},
8129         {0x85, 0xff, 0xff, 0, 0},
8130         {0x86, 0, 0, 0, 0},
8131         {0x87, 0, 0, 0, 0},
8132         {0x88, 0, 0, 0, 0},
8133         {0x89, 0, 0, 0, 0},
8134         {0x8A, 0, 0, 0, 0},
8135         {0x8B, 0, 0, 0, 0},
8136         {0x8C, 0, 0, 0, 0},
8137         {0x8D, 0, 0, 0, 0},
8138         {0x8E, 0, 0, 0, 0},
8139         {0x8F, 0, 0, 0, 0},
8140         {0x90, 0, 0, 0, 0},
8141         {0x91, 0, 0, 0, 0},
8142         {0x92, 0, 0, 0, 0},
8143         {0x93, 0, 0, 0, 0},
8144         {0x94, 0, 0, 0, 0},
8145         {0x95, 0, 0, 0, 0},
8146         {0x96, 0, 0, 0, 0},
8147         {0x97, 0, 0, 0, 0},
8148         {0x98, 0, 0, 0, 0},
8149         {0x99, 0, 0, 0, 0},
8150         {0x9A, 0, 0, 0, 0},
8151         {0x9B, 0, 0, 0, 0},
8152         {0x9C, 0, 0, 0, 0},
8153         {0x9D, 0, 0, 0, 0},
8154         {0x9E, 0, 0, 0, 0},
8155         {0x9F, 0x6, 0x6, 0, 0},
8156         {0xA0, 0x66, 0x66, 0, 0},
8157         {0xA1, 0x66, 0x66, 0, 0},
8158         {0xA2, 0x66, 0x66, 0, 0},
8159         {0xA3, 0x66, 0x66, 0, 0},
8160         {0xA4, 0x66, 0x66, 0, 0},
8161         {0xA5, 0x66, 0x66, 0, 0},
8162         {0xA6, 0x66, 0x66, 0, 0},
8163         {0xA7, 0x66, 0x66, 0, 0},
8164         {0xA8, 0x66, 0x66, 0, 0},
8165         {0xA9, 0x66, 0x66, 0, 0},
8166         {0xAA, 0x66, 0x66, 0, 0},
8167         {0xAB, 0x66, 0x66, 0, 0},
8168         {0xAC, 0x66, 0x66, 0, 0},
8169         {0xAD, 0x66, 0x66, 0, 0},
8170         {0xAE, 0x66, 0x66, 0, 0},
8171         {0xAF, 0x66, 0x66, 0, 0},
8172         {0xB0, 0x66, 0x66, 0, 0},
8173         {0xB1, 0x66, 0x66, 0, 0},
8174         {0xB2, 0x66, 0x66, 0, 0},
8175         {0xB3, 0xa, 0xa, 0, 0},
8176         {0xB4, 0, 0, 0, 0},
8177         {0xB5, 0, 0, 0, 0},
8178         {0xB6, 0, 0, 0, 0},
8179         {0xFFFF, 0, 0, 0, 0}
8180 };
8181
8182 static struct radio_regs regs_TX_2056[] = {
8183         {0x02, 0, 0, 0, 0},
8184         {0x03, 0, 0, 0, 0},
8185         {0x04, 0, 0, 0, 0},
8186         {0x05, 0, 0, 0, 0},
8187         {0x06, 0, 0, 0, 0},
8188         {0x07, 0, 0, 0, 0},
8189         {0x08, 0, 0, 0, 0},
8190         {0x09, 0, 0, 0, 0},
8191         {0x0A, 0, 0, 0, 0},
8192         {0x0B, 0, 0, 0, 0},
8193         {0x0C, 0, 0, 0, 0},
8194         {0x0D, 0, 0, 0, 0},
8195         {0x0E, 0, 0, 0, 0},
8196         {0x0F, 0, 0, 0, 0},
8197         {0x10, 0, 0, 0, 0},
8198         {0x11, 0, 0, 0, 0},
8199         {0x12, 0, 0, 0, 0},
8200         {0x13, 0, 0, 0, 0},
8201         {0x14, 0, 0, 0, 0},
8202         {0x15, 0, 0, 0, 0},
8203         {0x16, 0, 0, 0, 0},
8204         {0x17, 0, 0, 0, 0},
8205         {0x18, 0, 0, 0, 0},
8206         {0x19, 0, 0, 0, 0},
8207         {0x1A, 0, 0, 0, 0},
8208         {0x1B, 0, 0, 0, 0},
8209         {0x1C, 0, 0, 0, 0},
8210         {0x1D, 0, 0, 0, 0},
8211         {0x1E, 0, 0, 0, 0},
8212         {0x1F, 0, 0, 0, 0},
8213         {0x20, 0, 0, 0, 0},
8214         {0x21, 0x88, 0x88, 0, 0},
8215         {0x22, 0x88, 0x88, 0, 0},
8216         {0x23, 0x88, 0x88, 0, 0},
8217         {0x24, 0x88, 0x88, 0, 0},
8218         {0x25, 0xc, 0xc, 0, 0},
8219         {0x26, 0, 0, 0, 0},
8220         {0x27, 0x3, 0x3, 0, 0},
8221         {0x28, 0, 0, 0, 0},
8222         {0x29, 0x3, 0x3, 0, 0},
8223         {0x2A, 0x37, 0x37, 0, 0},
8224         {0x2B, 0x3, 0x3, 0, 0},
8225         {0x2C, 0, 0, 0, 0},
8226         {0x2D, 0, 0, 0, 0},
8227         {0x2E, 0x1, 0x1, 0, 0},
8228         {0x2F, 0x1, 0x1, 0, 0},
8229         {0x30, 0, 0, 0, 0},
8230         {0x31, 0, 0, 0, 0},
8231         {0x32, 0, 0, 0, 0},
8232         {0x33, 0x11, 0x11, 0, 0},
8233         {0x34, 0x11, 0x11, 0, 0},
8234         {0x35, 0, 0, 0, 0},
8235         {0x36, 0, 0, 0, 0},
8236         {0x37, 0x3, 0x3, 0, 0},
8237         {0x38, 0xf, 0xf, 0, 0},
8238         {0x39, 0, 0, 0, 0},
8239         {0x3A, 0x2d, 0x2d, 0, 0},
8240         {0x3B, 0, 0, 0, 0},
8241         {0x3C, 0x6e, 0x6e, 0, 0},
8242         {0x3D, 0xf0, 0xf0, 1, 1},
8243         {0x3E, 0, 0, 0, 0},
8244         {0x3F, 0, 0, 0, 0},
8245         {0x40, 0, 0, 0, 0},
8246         {0x41, 0x3, 0x3, 0, 0},
8247         {0x42, 0x3, 0x3, 0, 0},
8248         {0x43, 0, 0, 0, 0},
8249         {0x44, 0x1e, 0x1e, 0, 0},
8250         {0x45, 0, 0, 0, 0},
8251         {0x46, 0x6e, 0x6e, 0, 0},
8252         {0x47, 0xf0, 0xf0, 1, 1},
8253         {0x48, 0, 0, 0, 0},
8254         {0x49, 0x2, 0x2, 0, 0},
8255         {0x4A, 0xff, 0xff, 1, 1},
8256         {0x4B, 0xc, 0xc, 0, 0},
8257         {0x4C, 0, 0, 0, 0},
8258         {0x4D, 0x38, 0x38, 0, 0},
8259         {0x4E, 0x70, 0x70, 1, 1},
8260         {0x4F, 0x2, 0x2, 0, 0},
8261         {0x50, 0x88, 0x88, 0, 0},
8262         {0x51, 0xc, 0xc, 0, 0},
8263         {0x52, 0, 0, 0, 0},
8264         {0x53, 0x8, 0x8, 0, 0},
8265         {0x54, 0x70, 0x70, 1, 1},
8266         {0x55, 0x2, 0x2, 0, 0},
8267         {0x56, 0xff, 0xff, 1, 1},
8268         {0x57, 0, 0, 0, 0},
8269         {0x58, 0x83, 0x83, 0, 0},
8270         {0x59, 0x77, 0x77, 1, 1},
8271         {0x5A, 0, 0, 0, 0},
8272         {0x5B, 0x2, 0x2, 0, 0},
8273         {0x5C, 0x88, 0x88, 0, 0},
8274         {0x5D, 0, 0, 0, 0},
8275         {0x5E, 0x8, 0x8, 0, 0},
8276         {0x5F, 0x77, 0x77, 1, 1},
8277         {0x60, 0x1, 0x1, 0, 0},
8278         {0x61, 0, 0, 0, 0},
8279         {0x62, 0x7, 0x7, 0, 0},
8280         {0x63, 0, 0, 0, 0},
8281         {0x64, 0x7, 0x7, 0, 0},
8282         {0x65, 0, 0, 0, 0},
8283         {0x66, 0, 0, 0, 0},
8284         {0x67, 0x74, 0x74, 1, 1},
8285         {0x68, 0, 0, 0, 0},
8286         {0x69, 0xa, 0xa, 0, 0},
8287         {0x6A, 0, 0, 0, 0},
8288         {0x6B, 0, 0, 0, 0},
8289         {0x6C, 0, 0, 0, 0},
8290         {0x6D, 0, 0, 0, 0},
8291         {0x6E, 0, 0, 0, 0},
8292         {0x6F, 0, 0, 0, 0},
8293         {0x70, 0, 0, 0, 0},
8294         {0x71, 0x2, 0x2, 0, 0},
8295         {0x72, 0, 0, 0, 0},
8296         {0x73, 0, 0, 0, 0},
8297         {0x74, 0xe, 0xe, 0, 0},
8298         {0x75, 0xe, 0xe, 0, 0},
8299         {0x76, 0xe, 0xe, 0, 0},
8300         {0x77, 0x13, 0x13, 0, 0},
8301         {0x78, 0x13, 0x13, 0, 0},
8302         {0x79, 0x1b, 0x1b, 0, 0},
8303         {0x7A, 0x1b, 0x1b, 0, 0},
8304         {0x7B, 0x55, 0x55, 0, 0},
8305         {0x7C, 0x5b, 0x5b, 0, 0},
8306         {0x7D, 0, 0, 0, 0},
8307         {0x7E, 0, 0, 0, 0},
8308         {0x7F, 0, 0, 0, 0},
8309         {0x80, 0, 0, 0, 0},
8310         {0x81, 0, 0, 0, 0},
8311         {0x82, 0, 0, 0, 0},
8312         {0x83, 0, 0, 0, 0},
8313         {0x84, 0, 0, 0, 0},
8314         {0x85, 0, 0, 0, 0},
8315         {0x86, 0, 0, 0, 0},
8316         {0x87, 0, 0, 0, 0},
8317         {0x88, 0, 0, 0, 0},
8318         {0x89, 0, 0, 0, 0},
8319         {0x8A, 0, 0, 0, 0},
8320         {0x8B, 0, 0, 0, 0},
8321         {0x8C, 0, 0, 0, 0},
8322         {0x8D, 0, 0, 0, 0},
8323         {0x8E, 0, 0, 0, 0},
8324         {0x8F, 0, 0, 0, 0},
8325         {0x90, 0, 0, 0, 0},
8326         {0x91, 0, 0, 0, 0},
8327         {0x92, 0, 0, 0, 0},
8328         {0xFFFF, 0, 0, 0, 0}
8329 };
8330
8331 static struct radio_regs regs_RX_2056[] = {
8332         {0x02, 0, 0, 0, 0},
8333         {0x03, 0, 0, 0, 0},
8334         {0x04, 0, 0, 0, 0},
8335         {0x05, 0, 0, 0, 0},
8336         {0x06, 0, 0, 0, 0},
8337         {0x07, 0, 0, 0, 0},
8338         {0x08, 0, 0, 0, 0},
8339         {0x09, 0, 0, 0, 0},
8340         {0x0A, 0, 0, 0, 0},
8341         {0x0B, 0, 0, 0, 0},
8342         {0x0C, 0, 0, 0, 0},
8343         {0x0D, 0, 0, 0, 0},
8344         {0x0E, 0, 0, 0, 0},
8345         {0x0F, 0, 0, 0, 0},
8346         {0x10, 0, 0, 0, 0},
8347         {0x11, 0, 0, 0, 0},
8348         {0x12, 0, 0, 0, 0},
8349         {0x13, 0, 0, 0, 0},
8350         {0x14, 0, 0, 0, 0},
8351         {0x15, 0, 0, 0, 0},
8352         {0x16, 0, 0, 0, 0},
8353         {0x17, 0, 0, 0, 0},
8354         {0x18, 0, 0, 0, 0},
8355         {0x19, 0, 0, 0, 0},
8356         {0x1A, 0, 0, 0, 0},
8357         {0x1B, 0, 0, 0, 0},
8358         {0x1C, 0, 0, 0, 0},
8359         {0x1D, 0, 0, 0, 0},
8360         {0x1E, 0, 0, 0, 0},
8361         {0x1F, 0, 0, 0, 0},
8362         {0x20, 0x3, 0x3, 0, 0},
8363         {0x21, 0, 0, 0, 0},
8364         {0x22, 0, 0, 0, 0},
8365         {0x23, 0x90, 0x90, 0, 0},
8366         {0x24, 0x55, 0x55, 0, 0},
8367         {0x25, 0x15, 0x15, 0, 0},
8368         {0x26, 0x5, 0x5, 0, 0},
8369         {0x27, 0x15, 0x15, 0, 0},
8370         {0x28, 0x5, 0x5, 0, 0},
8371         {0x29, 0x20, 0x20, 0, 0},
8372         {0x2A, 0x11, 0x11, 0, 0},
8373         {0x2B, 0x90, 0x90, 0, 0},
8374         {0x2C, 0, 0, 0, 0},
8375         {0x2D, 0x88, 0x88, 0, 0},
8376         {0x2E, 0x32, 0x32, 0, 0},
8377         {0x2F, 0x77, 0x77, 0, 0},
8378         {0x30, 0x17, 0x17, 1, 1},
8379         {0x31, 0xff, 0xff, 1, 1},
8380         {0x32, 0x20, 0x20, 0, 0},
8381         {0x33, 0, 0, 0, 0},
8382         {0x34, 0x88, 0x88, 0, 0},
8383         {0x35, 0x32, 0x32, 0, 0},
8384         {0x36, 0x77, 0x77, 0, 0},
8385         {0x37, 0x17, 0x17, 1, 1},
8386         {0x38, 0xf0, 0xf0, 1, 1},
8387         {0x39, 0x20, 0x20, 0, 0},
8388         {0x3A, 0x8, 0x8, 0, 0},
8389         {0x3B, 0x99, 0x99, 0, 0},
8390         {0x3C, 0, 0, 0, 0},
8391         {0x3D, 0x44, 0x44, 1, 1},
8392         {0x3E, 0, 0, 0, 0},
8393         {0x3F, 0x44, 0x44, 0, 0},
8394         {0x40, 0xf, 0xf, 1, 1},
8395         {0x41, 0x6, 0x6, 0, 0},
8396         {0x42, 0x4, 0x4, 0, 0},
8397         {0x43, 0x50, 0x50, 1, 1},
8398         {0x44, 0x8, 0x8, 0, 0},
8399         {0x45, 0x99, 0x99, 0, 0},
8400         {0x46, 0, 0, 0, 0},
8401         {0x47, 0x11, 0x11, 0, 0},
8402         {0x48, 0, 0, 0, 0},
8403         {0x49, 0x44, 0x44, 0, 0},
8404         {0x4A, 0x7, 0x7, 0, 0},
8405         {0x4B, 0x6, 0x6, 0, 0},
8406         {0x4C, 0x4, 0x4, 0, 0},
8407         {0x4D, 0, 0, 0, 0},
8408         {0x4E, 0, 0, 0, 0},
8409         {0x4F, 0x66, 0x66, 0, 0},
8410         {0x50, 0x66, 0x66, 0, 0},
8411         {0x51, 0x57, 0x57, 0, 0},
8412         {0x52, 0x57, 0x57, 0, 0},
8413         {0x53, 0x44, 0x44, 0, 0},
8414         {0x54, 0, 0, 0, 0},
8415         {0x55, 0, 0, 0, 0},
8416         {0x56, 0x8, 0x8, 0, 0},
8417         {0x57, 0x8, 0x8, 0, 0},
8418         {0x58, 0x7, 0x7, 0, 0},
8419         {0x59, 0x22, 0x22, 0, 0},
8420         {0x5A, 0x22, 0x22, 0, 0},
8421         {0x5B, 0x2, 0x2, 0, 0},
8422         {0x5C, 0x23, 0x23, 0, 0},
8423         {0x5D, 0x7, 0x7, 0, 0},
8424         {0x5E, 0x55, 0x55, 0, 0},
8425         {0x5F, 0x23, 0x23, 0, 0},
8426         {0x60, 0x41, 0x41, 0, 0},
8427         {0x61, 0x1, 0x1, 0, 0},
8428         {0x62, 0xa, 0xa, 0, 0},
8429         {0x63, 0, 0, 0, 0},
8430         {0x64, 0, 0, 0, 0},
8431         {0x65, 0, 0, 0, 0},
8432         {0x66, 0, 0, 0, 0},
8433         {0x67, 0, 0, 0, 0},
8434         {0x68, 0, 0, 0, 0},
8435         {0x69, 0, 0, 0, 0},
8436         {0x6A, 0, 0, 0, 0},
8437         {0x6B, 0xc, 0xc, 0, 0},
8438         {0x6C, 0, 0, 0, 0},
8439         {0x6D, 0, 0, 0, 0},
8440         {0x6E, 0, 0, 0, 0},
8441         {0x6F, 0, 0, 0, 0},
8442         {0x70, 0, 0, 0, 0},
8443         {0x71, 0, 0, 0, 0},
8444         {0x72, 0x22, 0x22, 0, 0},
8445         {0x73, 0x22, 0x22, 0, 0},
8446         {0x74, 0x2, 0x2, 0, 0},
8447         {0x75, 0xa, 0xa, 0, 0},
8448         {0x76, 0x1, 0x1, 0, 0},
8449         {0x77, 0x22, 0x22, 0, 0},
8450         {0x78, 0x30, 0x30, 0, 0},
8451         {0x79, 0, 0, 0, 0},
8452         {0x7A, 0, 0, 0, 0},
8453         {0x7B, 0, 0, 0, 0},
8454         {0x7C, 0, 0, 0, 0},
8455         {0x7D, 0, 0, 0, 0},
8456         {0x7E, 0, 0, 0, 0},
8457         {0x7F, 0, 0, 0, 0},
8458         {0x80, 0, 0, 0, 0},
8459         {0x81, 0, 0, 0, 0},
8460         {0x82, 0, 0, 0, 0},
8461         {0x83, 0, 0, 0, 0},
8462         {0x84, 0, 0, 0, 0},
8463         {0x85, 0, 0, 0, 0},
8464         {0x86, 0, 0, 0, 0},
8465         {0x87, 0, 0, 0, 0},
8466         {0x88, 0, 0, 0, 0},
8467         {0x89, 0, 0, 0, 0},
8468         {0x8A, 0, 0, 0, 0},
8469         {0x8B, 0, 0, 0, 0},
8470         {0x8C, 0, 0, 0, 0},
8471         {0x8D, 0, 0, 0, 0},
8472         {0x8E, 0, 0, 0, 0},
8473         {0x8F, 0, 0, 0, 0},
8474         {0x90, 0, 0, 0, 0},
8475         {0x91, 0, 0, 0, 0},
8476         {0x92, 0, 0, 0, 0},
8477         {0x93, 0, 0, 0, 0},
8478         {0x94, 0, 0, 0, 0},
8479         {0xFFFF, 0, 0, 0, 0}
8480 };
8481
8482 static struct radio_regs regs_SYN_2056_A1[] = {
8483         {0x02, 0, 0, 0, 0},
8484         {0x03, 0, 0, 0, 0},
8485         {0x04, 0, 0, 0, 0},
8486         {0x05, 0, 0, 0, 0},
8487         {0x06, 0, 0, 0, 0},
8488         {0x07, 0, 0, 0, 0},
8489         {0x08, 0, 0, 0, 0},
8490         {0x09, 0x1, 0x1, 0, 0},
8491         {0x0A, 0, 0, 0, 0},
8492         {0x0B, 0, 0, 0, 0},
8493         {0x0C, 0, 0, 0, 0},
8494         {0x0D, 0, 0, 0, 0},
8495         {0x0E, 0, 0, 0, 0},
8496         {0x0F, 0, 0, 0, 0},
8497         {0x10, 0, 0, 0, 0},
8498         {0x11, 0, 0, 0, 0},
8499         {0x12, 0, 0, 0, 0},
8500         {0x13, 0, 0, 0, 0},
8501         {0x14, 0, 0, 0, 0},
8502         {0x15, 0, 0, 0, 0},
8503         {0x16, 0, 0, 0, 0},
8504         {0x17, 0, 0, 0, 0},
8505         {0x18, 0, 0, 0, 0},
8506         {0x19, 0, 0, 0, 0},
8507         {0x1A, 0, 0, 0, 0},
8508         {0x1B, 0, 0, 0, 0},
8509         {0x1C, 0, 0, 0, 0},
8510         {0x1D, 0, 0, 0, 0},
8511         {0x1E, 0, 0, 0, 0},
8512         {0x1F, 0, 0, 0, 0},
8513         {0x20, 0, 0, 0, 0},
8514         {0x21, 0, 0, 0, 0},
8515         {0x22, 0x60, 0x60, 0, 0},
8516         {0x23, 0x6, 0x6, 0, 0},
8517         {0x24, 0xc, 0xc, 0, 0},
8518         {0x25, 0, 0, 0, 0},
8519         {0x26, 0, 0, 0, 0},
8520         {0x27, 0, 0, 0, 0},
8521         {0x28, 0x1, 0x1, 0, 0},
8522         {0x29, 0, 0, 0, 0},
8523         {0x2A, 0, 0, 0, 0},
8524         {0x2B, 0, 0, 0, 0},
8525         {0x2C, 0, 0, 0, 0},
8526         {0x2D, 0, 0, 0, 0},
8527         {0x2E, 0xd, 0xd, 0, 0},
8528         {0x2F, 0x1f, 0x1f, 0, 0},
8529         {0x30, 0x15, 0x15, 0, 0},
8530         {0x31, 0xf, 0xf, 0, 0},
8531         {0x32, 0, 0, 0, 0},
8532         {0x33, 0, 0, 0, 0},
8533         {0x34, 0, 0, 0, 0},
8534         {0x35, 0, 0, 0, 0},
8535         {0x36, 0, 0, 0, 0},
8536         {0x37, 0, 0, 0, 0},
8537         {0x38, 0, 0, 0, 0},
8538         {0x39, 0, 0, 0, 0},
8539         {0x3A, 0, 0, 0, 0},
8540         {0x3B, 0, 0, 0, 0},
8541         {0x3C, 0x13, 0x13, 0, 0},
8542         {0x3D, 0xf, 0xf, 0, 0},
8543         {0x3E, 0x18, 0x18, 0, 0},
8544         {0x3F, 0, 0, 0, 0},
8545         {0x40, 0, 0, 0, 0},
8546         {0x41, 0x20, 0x20, 0, 0},
8547         {0x42, 0x20, 0x20, 0, 0},
8548         {0x43, 0, 0, 0, 0},
8549         {0x44, 0x77, 0x77, 0, 0},
8550         {0x45, 0x7, 0x7, 0, 0},
8551         {0x46, 0x1, 0x1, 0, 0},
8552         {0x47, 0x4, 0x4, 0, 0},
8553         {0x48, 0xf, 0xf, 0, 0},
8554         {0x49, 0x30, 0x30, 0, 0},
8555         {0x4A, 0x32, 0x32, 0, 0},
8556         {0x4B, 0xd, 0xd, 0, 0},
8557         {0x4C, 0xd, 0xd, 0, 0},
8558         {0x4D, 0x4, 0x4, 0, 0},
8559         {0x4E, 0x6, 0x6, 0, 0},
8560         {0x4F, 0x1, 0x1, 0, 0},
8561         {0x50, 0x1c, 0x1c, 0, 0},
8562         {0x51, 0x2, 0x2, 0, 0},
8563         {0x52, 0x2, 0x2, 0, 0},
8564         {0x53, 0xf7, 0xf7, 1, 1},
8565         {0x54, 0xb4, 0xb4, 0, 0},
8566         {0x55, 0xd2, 0xd2, 0, 0},
8567         {0x56, 0, 0, 0, 0},
8568         {0x57, 0, 0, 0, 0},
8569         {0x58, 0x4, 0x4, 0, 0},
8570         {0x59, 0x96, 0x96, 0, 0},
8571         {0x5A, 0x3e, 0x3e, 0, 0},
8572         {0x5B, 0x3e, 0x3e, 0, 0},
8573         {0x5C, 0x13, 0x13, 0, 0},
8574         {0x5D, 0x2, 0x2, 0, 0},
8575         {0x5E, 0, 0, 0, 0},
8576         {0x5F, 0x7, 0x7, 0, 0},
8577         {0x60, 0x7, 0x7, 1, 1},
8578         {0x61, 0x8, 0x8, 0, 0},
8579         {0x62, 0x3, 0x3, 0, 0},
8580         {0x63, 0, 0, 0, 0},
8581         {0x64, 0, 0, 0, 0},
8582         {0x65, 0, 0, 0, 0},
8583         {0x66, 0, 0, 0, 0},
8584         {0x67, 0, 0, 0, 0},
8585         {0x68, 0x40, 0x40, 0, 0},
8586         {0x69, 0, 0, 0, 0},
8587         {0x6A, 0, 0, 0, 0},
8588         {0x6B, 0, 0, 0, 0},
8589         {0x6C, 0, 0, 0, 0},
8590         {0x6D, 0x1, 0x1, 0, 0},
8591         {0x6E, 0, 0, 0, 0},
8592         {0x6F, 0, 0, 0, 0},
8593         {0x70, 0x60, 0x60, 0, 0},
8594         {0x71, 0x66, 0x66, 0, 0},
8595         {0x72, 0xc, 0xc, 0, 0},
8596         {0x73, 0x66, 0x66, 0, 0},
8597         {0x74, 0x8f, 0x8f, 1, 1},
8598         {0x75, 0, 0, 0, 0},
8599         {0x76, 0xcc, 0xcc, 0, 0},
8600         {0x77, 0x1, 0x1, 0, 0},
8601         {0x78, 0x66, 0x66, 0, 0},
8602         {0x79, 0x66, 0x66, 0, 0},
8603         {0x7A, 0, 0, 0, 0},
8604         {0x7B, 0, 0, 0, 0},
8605         {0x7C, 0, 0, 0, 0},
8606         {0x7D, 0, 0, 0, 0},
8607         {0x7E, 0, 0, 0, 0},
8608         {0x7F, 0, 0, 0, 0},
8609         {0x80, 0, 0, 0, 0},
8610         {0x81, 0, 0, 0, 0},
8611         {0x82, 0, 0, 0, 0},
8612         {0x83, 0, 0, 0, 0},
8613         {0x84, 0, 0, 0, 0},
8614         {0x85, 0xff, 0xff, 0, 0},
8615         {0x86, 0, 0, 0, 0},
8616         {0x87, 0, 0, 0, 0},
8617         {0x88, 0, 0, 0, 0},
8618         {0x89, 0, 0, 0, 0},
8619         {0x8A, 0, 0, 0, 0},
8620         {0x8B, 0, 0, 0, 0},
8621         {0x8C, 0, 0, 0, 0},
8622         {0x8D, 0, 0, 0, 0},
8623         {0x8E, 0, 0, 0, 0},
8624         {0x8F, 0, 0, 0, 0},
8625         {0x90, 0, 0, 0, 0},
8626         {0x91, 0, 0, 0, 0},
8627         {0x92, 0, 0, 0, 0},
8628         {0x93, 0, 0, 0, 0},
8629         {0x94, 0, 0, 0, 0},
8630         {0x95, 0, 0, 0, 0},
8631         {0x96, 0, 0, 0, 0},
8632         {0x97, 0, 0, 0, 0},
8633         {0x98, 0, 0, 0, 0},
8634         {0x99, 0, 0, 0, 0},
8635         {0x9A, 0, 0, 0, 0},
8636         {0x9B, 0, 0, 0, 0},
8637         {0x9C, 0, 0, 0, 0},
8638         {0x9D, 0, 0, 0, 0},
8639         {0x9E, 0, 0, 0, 0},
8640         {0x9F, 0x6, 0x6, 0, 0},
8641         {0xA0, 0x66, 0x66, 0, 0},
8642         {0xA1, 0x66, 0x66, 0, 0},
8643         {0xA2, 0x66, 0x66, 0, 0},
8644         {0xA3, 0x66, 0x66, 0, 0},
8645         {0xA4, 0x66, 0x66, 0, 0},
8646         {0xA5, 0x66, 0x66, 0, 0},
8647         {0xA6, 0x66, 0x66, 0, 0},
8648         {0xA7, 0x66, 0x66, 0, 0},
8649         {0xA8, 0x66, 0x66, 0, 0},
8650         {0xA9, 0x66, 0x66, 0, 0},
8651         {0xAA, 0x66, 0x66, 0, 0},
8652         {0xAB, 0x66, 0x66, 0, 0},
8653         {0xAC, 0x66, 0x66, 0, 0},
8654         {0xAD, 0x66, 0x66, 0, 0},
8655         {0xAE, 0x66, 0x66, 0, 0},
8656         {0xAF, 0x66, 0x66, 0, 0},
8657         {0xB0, 0x66, 0x66, 0, 0},
8658         {0xB1, 0x66, 0x66, 0, 0},
8659         {0xB2, 0x66, 0x66, 0, 0},
8660         {0xB3, 0xa, 0xa, 0, 0},
8661         {0xB4, 0, 0, 0, 0},
8662         {0xB5, 0, 0, 0, 0},
8663         {0xB6, 0, 0, 0, 0},
8664         {0xFFFF, 0, 0, 0, 0}
8665 };
8666
8667 static struct radio_regs regs_TX_2056_A1[] = {
8668         {0x02, 0, 0, 0, 0},
8669         {0x03, 0, 0, 0, 0},
8670         {0x04, 0, 0, 0, 0},
8671         {0x05, 0, 0, 0, 0},
8672         {0x06, 0, 0, 0, 0},
8673         {0x07, 0, 0, 0, 0},
8674         {0x08, 0, 0, 0, 0},
8675         {0x09, 0, 0, 0, 0},
8676         {0x0A, 0, 0, 0, 0},
8677         {0x0B, 0, 0, 0, 0},
8678         {0x0C, 0, 0, 0, 0},
8679         {0x0D, 0, 0, 0, 0},
8680         {0x0E, 0, 0, 0, 0},
8681         {0x0F, 0, 0, 0, 0},
8682         {0x10, 0, 0, 0, 0},
8683         {0x11, 0, 0, 0, 0},
8684         {0x12, 0, 0, 0, 0},
8685         {0x13, 0, 0, 0, 0},
8686         {0x14, 0, 0, 0, 0},
8687         {0x15, 0, 0, 0, 0},
8688         {0x16, 0, 0, 0, 0},
8689         {0x17, 0, 0, 0, 0},
8690         {0x18, 0, 0, 0, 0},
8691         {0x19, 0, 0, 0, 0},
8692         {0x1A, 0, 0, 0, 0},
8693         {0x1B, 0, 0, 0, 0},
8694         {0x1C, 0, 0, 0, 0},
8695         {0x1D, 0, 0, 0, 0},
8696         {0x1E, 0, 0, 0, 0},
8697         {0x1F, 0, 0, 0, 0},
8698         {0x20, 0, 0, 0, 0},
8699         {0x21, 0x88, 0x88, 0, 0},
8700         {0x22, 0x88, 0x88, 0, 0},
8701         {0x23, 0x88, 0x88, 0, 0},
8702         {0x24, 0x88, 0x88, 0, 0},
8703         {0x25, 0xc, 0xc, 0, 0},
8704         {0x26, 0, 0, 0, 0},
8705         {0x27, 0x3, 0x3, 0, 0},
8706         {0x28, 0, 0, 0, 0},
8707         {0x29, 0x3, 0x3, 0, 0},
8708         {0x2A, 0x37, 0x37, 0, 0},
8709         {0x2B, 0x3, 0x3, 0, 0},
8710         {0x2C, 0, 0, 0, 0},
8711         {0x2D, 0, 0, 0, 0},
8712         {0x2E, 0x1, 0x1, 0, 0},
8713         {0x2F, 0x1, 0x1, 0, 0},
8714         {0x30, 0, 0, 0, 0},
8715         {0x31, 0, 0, 0, 0},
8716         {0x32, 0, 0, 0, 0},
8717         {0x33, 0x11, 0x11, 0, 0},
8718         {0x34, 0x11, 0x11, 0, 0},
8719         {0x35, 0, 0, 0, 0},
8720         {0x36, 0, 0, 0, 0},
8721         {0x37, 0x3, 0x3, 0, 0},
8722         {0x38, 0xf, 0xf, 0, 0},
8723         {0x39, 0, 0, 0, 0},
8724         {0x3A, 0x2d, 0x2d, 0, 0},
8725         {0x3B, 0, 0, 0, 0},
8726         {0x3C, 0x6e, 0x6e, 0, 0},
8727         {0x3D, 0xf0, 0xf0, 1, 1},
8728         {0x3E, 0, 0, 0, 0},
8729         {0x3F, 0, 0, 0, 0},
8730         {0x40, 0, 0, 0, 0},
8731         {0x41, 0x3, 0x3, 0, 0},
8732         {0x42, 0x3, 0x3, 0, 0},
8733         {0x43, 0, 0, 0, 0},
8734         {0x44, 0x1e, 0x1e, 0, 0},
8735         {0x45, 0, 0, 0, 0},
8736         {0x46, 0x6e, 0x6e, 0, 0},
8737         {0x47, 0xf0, 0xf0, 1, 1},
8738         {0x48, 0, 0, 0, 0},
8739         {0x49, 0x2, 0x2, 0, 0},
8740         {0x4A, 0xff, 0xff, 1, 1},
8741         {0x4B, 0xc, 0xc, 0, 0},
8742         {0x4C, 0, 0, 0, 0},
8743         {0x4D, 0x38, 0x38, 0, 0},
8744         {0x4E, 0x70, 0x70, 1, 1},
8745         {0x4F, 0x2, 0x2, 0, 0},
8746         {0x50, 0x88, 0x88, 0, 0},
8747         {0x51, 0xc, 0xc, 0, 0},
8748         {0x52, 0, 0, 0, 0},
8749         {0x53, 0x8, 0x8, 0, 0},
8750         {0x54, 0x70, 0x70, 1, 1},
8751         {0x55, 0x2, 0x2, 0, 0},
8752         {0x56, 0xff, 0xff, 1, 1},
8753         {0x57, 0, 0, 0, 0},
8754         {0x58, 0x83, 0x83, 0, 0},
8755         {0x59, 0x77, 0x77, 1, 1},
8756         {0x5A, 0, 0, 0, 0},
8757         {0x5B, 0x2, 0x2, 0, 0},
8758         {0x5C, 0x88, 0x88, 0, 0},
8759         {0x5D, 0, 0, 0, 0},
8760         {0x5E, 0x8, 0x8, 0, 0},
8761         {0x5F, 0x77, 0x77, 1, 1},
8762         {0x60, 0x1, 0x1, 0, 0},
8763         {0x61, 0, 0, 0, 0},
8764         {0x62, 0x7, 0x7, 0, 0},
8765         {0x63, 0, 0, 0, 0},
8766         {0x64, 0x7, 0x7, 0, 0},
8767         {0x65, 0, 0, 0, 0},
8768         {0x66, 0, 0, 0, 0},
8769         {0x67, 0x72, 0x72, 1, 1},
8770         {0x68, 0, 0, 0, 0},
8771         {0x69, 0xa, 0xa, 0, 0},
8772         {0x6A, 0, 0, 0, 0},
8773         {0x6B, 0, 0, 0, 0},
8774         {0x6C, 0, 0, 0, 0},
8775         {0x6D, 0, 0, 0, 0},
8776         {0x6E, 0, 0, 0, 0},
8777         {0x6F, 0, 0, 0, 0},
8778         {0x70, 0, 0, 0, 0},
8779         {0x71, 0x2, 0x2, 0, 0},
8780         {0x72, 0, 0, 0, 0},
8781         {0x73, 0, 0, 0, 0},
8782         {0x74, 0xe, 0xe, 0, 0},
8783         {0x75, 0xe, 0xe, 0, 0},
8784         {0x76, 0xe, 0xe, 0, 0},
8785         {0x77, 0x13, 0x13, 0, 0},
8786         {0x78, 0x13, 0x13, 0, 0},
8787         {0x79, 0x1b, 0x1b, 0, 0},
8788         {0x7A, 0x1b, 0x1b, 0, 0},
8789         {0x7B, 0x55, 0x55, 0, 0},
8790         {0x7C, 0x5b, 0x5b, 0, 0},
8791         {0x7D, 0, 0, 0, 0},
8792         {0x7E, 0, 0, 0, 0},
8793         {0x7F, 0, 0, 0, 0},
8794         {0x80, 0, 0, 0, 0},
8795         {0x81, 0, 0, 0, 0},
8796         {0x82, 0, 0, 0, 0},
8797         {0x83, 0, 0, 0, 0},
8798         {0x84, 0, 0, 0, 0},
8799         {0x85, 0, 0, 0, 0},
8800         {0x86, 0, 0, 0, 0},
8801         {0x87, 0, 0, 0, 0},
8802         {0x88, 0, 0, 0, 0},
8803         {0x89, 0, 0, 0, 0},
8804         {0x8A, 0, 0, 0, 0},
8805         {0x8B, 0, 0, 0, 0},
8806         {0x8C, 0, 0, 0, 0},
8807         {0x8D, 0, 0, 0, 0},
8808         {0x8E, 0, 0, 0, 0},
8809         {0x8F, 0, 0, 0, 0},
8810         {0x90, 0, 0, 0, 0},
8811         {0x91, 0, 0, 0, 0},
8812         {0x92, 0, 0, 0, 0},
8813         {0xFFFF, 0, 0, 0, 0}
8814 };
8815
8816 static struct radio_regs regs_RX_2056_A1[] = {
8817         {0x02, 0, 0, 0, 0},
8818         {0x03, 0, 0, 0, 0},
8819         {0x04, 0, 0, 0, 0},
8820         {0x05, 0, 0, 0, 0},
8821         {0x06, 0, 0, 0, 0},
8822         {0x07, 0, 0, 0, 0},
8823         {0x08, 0, 0, 0, 0},
8824         {0x09, 0, 0, 0, 0},
8825         {0x0A, 0, 0, 0, 0},
8826         {0x0B, 0, 0, 0, 0},
8827         {0x0C, 0, 0, 0, 0},
8828         {0x0D, 0, 0, 0, 0},
8829         {0x0E, 0, 0, 0, 0},
8830         {0x0F, 0, 0, 0, 0},
8831         {0x10, 0, 0, 0, 0},
8832         {0x11, 0, 0, 0, 0},
8833         {0x12, 0, 0, 0, 0},
8834         {0x13, 0, 0, 0, 0},
8835         {0x14, 0, 0, 0, 0},
8836         {0x15, 0, 0, 0, 0},
8837         {0x16, 0, 0, 0, 0},
8838         {0x17, 0, 0, 0, 0},
8839         {0x18, 0, 0, 0, 0},
8840         {0x19, 0, 0, 0, 0},
8841         {0x1A, 0, 0, 0, 0},
8842         {0x1B, 0, 0, 0, 0},
8843         {0x1C, 0, 0, 0, 0},
8844         {0x1D, 0, 0, 0, 0},
8845         {0x1E, 0, 0, 0, 0},
8846         {0x1F, 0, 0, 0, 0},
8847         {0x20, 0x3, 0x3, 0, 0},
8848         {0x21, 0, 0, 0, 0},
8849         {0x22, 0, 0, 0, 0},
8850         {0x23, 0x90, 0x90, 0, 0},
8851         {0x24, 0x55, 0x55, 0, 0},
8852         {0x25, 0x15, 0x15, 0, 0},
8853         {0x26, 0x5, 0x5, 0, 0},
8854         {0x27, 0x15, 0x15, 0, 0},
8855         {0x28, 0x5, 0x5, 0, 0},
8856         {0x29, 0x20, 0x20, 0, 0},
8857         {0x2A, 0x11, 0x11, 0, 0},
8858         {0x2B, 0x90, 0x90, 0, 0},
8859         {0x2C, 0, 0, 0, 0},
8860         {0x2D, 0x88, 0x88, 0, 0},
8861         {0x2E, 0x32, 0x32, 0, 0},
8862         {0x2F, 0x77, 0x77, 0, 0},
8863         {0x30, 0x17, 0x17, 1, 1},
8864         {0x31, 0xff, 0xff, 1, 1},
8865         {0x32, 0x20, 0x20, 0, 0},
8866         {0x33, 0, 0, 0, 0},
8867         {0x34, 0x88, 0x88, 0, 0},
8868         {0x35, 0x32, 0x32, 0, 0},
8869         {0x36, 0x77, 0x77, 0, 0},
8870         {0x37, 0x17, 0x17, 1, 1},
8871         {0x38, 0xf0, 0xf0, 1, 1},
8872         {0x39, 0x20, 0x20, 0, 0},
8873         {0x3A, 0x8, 0x8, 0, 0},
8874         {0x3B, 0x55, 0x55, 1, 1},
8875         {0x3C, 0, 0, 0, 0},
8876         {0x3D, 0x44, 0x44, 1, 1},
8877         {0x3E, 0, 0, 0, 0},
8878         {0x3F, 0x44, 0x44, 0, 0},
8879         {0x40, 0xf, 0xf, 1, 1},
8880         {0x41, 0x6, 0x6, 0, 0},
8881         {0x42, 0x4, 0x4, 0, 0},
8882         {0x43, 0x50, 0x50, 1, 1},
8883         {0x44, 0x8, 0x8, 0, 0},
8884         {0x45, 0x55, 0x55, 1, 1},
8885         {0x46, 0, 0, 0, 0},
8886         {0x47, 0x11, 0x11, 0, 0},
8887         {0x48, 0, 0, 0, 0},
8888         {0x49, 0x44, 0x44, 0, 0},
8889         {0x4A, 0x7, 0x7, 0, 0},
8890         {0x4B, 0x6, 0x6, 0, 0},
8891         {0x4C, 0x4, 0x4, 0, 0},
8892         {0x4D, 0, 0, 0, 0},
8893         {0x4E, 0, 0, 0, 0},
8894         {0x4F, 0x26, 0x26, 1, 1},
8895         {0x50, 0x26, 0x26, 1, 1},
8896         {0x51, 0xf, 0xf, 1, 1},
8897         {0x52, 0xf, 0xf, 1, 1},
8898         {0x53, 0x44, 0x44, 0, 0},
8899         {0x54, 0, 0, 0, 0},
8900         {0x55, 0, 0, 0, 0},
8901         {0x56, 0x8, 0x8, 0, 0},
8902         {0x57, 0x8, 0x8, 0, 0},
8903         {0x58, 0x7, 0x7, 0, 0},
8904         {0x59, 0x22, 0x22, 0, 0},
8905         {0x5A, 0x22, 0x22, 0, 0},
8906         {0x5B, 0x2, 0x2, 0, 0},
8907         {0x5C, 0x2f, 0x2f, 1, 1},
8908         {0x5D, 0x7, 0x7, 0, 0},
8909         {0x5E, 0x55, 0x55, 0, 0},
8910         {0x5F, 0x23, 0x23, 0, 0},
8911         {0x60, 0x41, 0x41, 0, 0},
8912         {0x61, 0x1, 0x1, 0, 0},
8913         {0x62, 0xa, 0xa, 0, 0},
8914         {0x63, 0, 0, 0, 0},
8915         {0x64, 0, 0, 0, 0},
8916         {0x65, 0, 0, 0, 0},
8917         {0x66, 0, 0, 0, 0},
8918         {0x67, 0, 0, 0, 0},
8919         {0x68, 0, 0, 0, 0},
8920         {0x69, 0, 0, 0, 0},
8921         {0x6A, 0, 0, 0, 0},
8922         {0x6B, 0xc, 0xc, 0, 0},
8923         {0x6C, 0, 0, 0, 0},
8924         {0x6D, 0, 0, 0, 0},
8925         {0x6E, 0, 0, 0, 0},
8926         {0x6F, 0, 0, 0, 0},
8927         {0x70, 0, 0, 0, 0},
8928         {0x71, 0, 0, 0, 0},
8929         {0x72, 0x22, 0x22, 0, 0},
8930         {0x73, 0x22, 0x22, 0, 0},
8931         {0x74, 0, 0, 1, 1},
8932         {0x75, 0xa, 0xa, 0, 0},
8933         {0x76, 0x1, 0x1, 0, 0},
8934         {0x77, 0x22, 0x22, 0, 0},
8935         {0x78, 0x30, 0x30, 0, 0},
8936         {0x79, 0, 0, 0, 0},
8937         {0x7A, 0, 0, 0, 0},
8938         {0x7B, 0, 0, 0, 0},
8939         {0x7C, 0, 0, 0, 0},
8940         {0x7D, 0, 0, 0, 0},
8941         {0x7E, 0, 0, 0, 0},
8942         {0x7F, 0, 0, 0, 0},
8943         {0x80, 0, 0, 0, 0},
8944         {0x81, 0, 0, 0, 0},
8945         {0x82, 0, 0, 0, 0},
8946         {0x83, 0, 0, 0, 0},
8947         {0x84, 0, 0, 0, 0},
8948         {0x85, 0, 0, 0, 0},
8949         {0x86, 0, 0, 0, 0},
8950         {0x87, 0, 0, 0, 0},
8951         {0x88, 0, 0, 0, 0},
8952         {0x89, 0, 0, 0, 0},
8953         {0x8A, 0, 0, 0, 0},
8954         {0x8B, 0, 0, 0, 0},
8955         {0x8C, 0, 0, 0, 0},
8956         {0x8D, 0, 0, 0, 0},
8957         {0x8E, 0, 0, 0, 0},
8958         {0x8F, 0, 0, 0, 0},
8959         {0x90, 0, 0, 0, 0},
8960         {0x91, 0, 0, 0, 0},
8961         {0x92, 0, 0, 0, 0},
8962         {0x93, 0, 0, 0, 0},
8963         {0x94, 0, 0, 0, 0},
8964         {0xFFFF, 0, 0, 0, 0}
8965 };
8966
8967 static struct radio_regs regs_SYN_2056_rev5[] = {
8968         {0x02, 0, 0, 0, 0},
8969         {0x03, 0, 0, 0, 0},
8970         {0x04, 0, 0, 0, 0},
8971         {0x05, 0, 0, 0, 0},
8972         {0x06, 0, 0, 0, 0},
8973         {0x07, 0, 0, 0, 0},
8974         {0x08, 0, 0, 0, 0},
8975         {0x09, 0x1, 0x1, 0, 0},
8976         {0x0A, 0, 0, 0, 0},
8977         {0x0B, 0, 0, 0, 0},
8978         {0x0C, 0, 0, 0, 0},
8979         {0x0D, 0, 0, 0, 0},
8980         {0x0E, 0, 0, 0, 0},
8981         {0x0F, 0, 0, 0, 0},
8982         {0x10, 0, 0, 0, 0},
8983         {0x11, 0, 0, 0, 0},
8984         {0x12, 0, 0, 0, 0},
8985         {0x13, 0, 0, 0, 0},
8986         {0x14, 0, 0, 0, 0},
8987         {0x15, 0, 0, 0, 0},
8988         {0x16, 0, 0, 0, 0},
8989         {0x17, 0, 0, 0, 0},
8990         {0x18, 0, 0, 0, 0},
8991         {0x19, 0, 0, 0, 0},
8992         {0x1A, 0, 0, 0, 0},
8993         {0x1B, 0, 0, 0, 0},
8994         {0x1C, 0, 0, 0, 0},
8995         {0x1D, 0, 0, 0, 0},
8996         {0x1E, 0, 0, 0, 0},
8997         {0x1F, 0, 0, 0, 0},
8998         {0x20, 0, 0, 0, 0},
8999         {0x21, 0, 0, 0, 0},
9000         {0x22, 0x60, 0x60, 0, 0},
9001         {0x23, 0x6, 0x6, 0, 0},
9002         {0x24, 0xc, 0xc, 0, 0},
9003         {0x25, 0, 0, 0, 0},
9004         {0x26, 0, 0, 0, 0},
9005         {0x27, 0, 0, 0, 0},
9006         {0x28, 0x1, 0x1, 0, 0},
9007         {0x29, 0, 0, 0, 0},
9008         {0x2A, 0, 0, 0, 0},
9009         {0x2B, 0, 0, 0, 0},
9010         {0x2C, 0, 0, 0, 0},
9011         {0x2D, 0, 0, 0, 0},
9012         {0x2E, 0, 0, 0, 0},
9013         {0x2F, 0x1f, 0x1f, 0, 0},
9014         {0x30, 0x15, 0x15, 0, 0},
9015         {0x31, 0xf, 0xf, 0, 0},
9016         {0x32, 0, 0, 0, 0},
9017         {0x33, 0, 0, 0, 0},
9018         {0x34, 0, 0, 0, 0},
9019         {0x35, 0, 0, 0, 0},
9020         {0x36, 0, 0, 0, 0},
9021         {0x37, 0, 0, 0, 0},
9022         {0x38, 0, 0, 0, 0},
9023         {0x39, 0, 0, 0, 0},
9024         {0x3A, 0, 0, 0, 0},
9025         {0x3B, 0, 0, 0, 0},
9026         {0x3C, 0x13, 0x13, 0, 0},
9027         {0x3D, 0xf, 0xf, 0, 0},
9028         {0x3E, 0x18, 0x18, 0, 0},
9029         {0x3F, 0, 0, 0, 0},
9030         {0x40, 0, 0, 0, 0},
9031         {0x41, 0x20, 0x20, 0, 0},
9032         {0x42, 0x20, 0x20, 0, 0},
9033         {0x43, 0, 0, 0, 0},
9034         {0x44, 0x77, 0x77, 0, 0},
9035         {0x45, 0x7, 0x7, 0, 0},
9036         {0x46, 0x1, 0x1, 0, 0},
9037         {0x47, 0x4, 0x4, 0, 0},
9038         {0x48, 0xf, 0xf, 0, 0},
9039         {0x49, 0x30, 0x30, 0, 0},
9040         {0x4A, 0x32, 0x32, 0, 0},
9041         {0x4B, 0xd, 0xd, 0, 0},
9042         {0x4C, 0xd, 0xd, 0, 0},
9043         {0x4D, 0x4, 0x4, 0, 0},
9044         {0x4E, 0x6, 0x6, 0, 0},
9045         {0x4F, 0x1, 0x1, 0, 0},
9046         {0x50, 0x1c, 0x1c, 0, 0},
9047         {0x51, 0x2, 0x2, 0, 0},
9048         {0x52, 0x2, 0x2, 0, 0},
9049         {0x53, 0xf7, 0xf7, 1, 1},
9050         {0x54, 0xb4, 0xb4, 0, 0},
9051         {0x55, 0xd2, 0xd2, 0, 0},
9052         {0x56, 0, 0, 0, 0},
9053         {0x57, 0, 0, 0, 0},
9054         {0x58, 0x4, 0x4, 0, 0},
9055         {0x59, 0x96, 0x96, 0, 0},
9056         {0x5A, 0x3e, 0x3e, 0, 0},
9057         {0x5B, 0x3e, 0x3e, 0, 0},
9058         {0x5C, 0x13, 0x13, 0, 0},
9059         {0x5D, 0x2, 0x2, 0, 0},
9060         {0x5E, 0, 0, 0, 0},
9061         {0x5F, 0x7, 0x7, 0, 0},
9062         {0x60, 0x7, 0x7, 1, 1},
9063         {0x61, 0x8, 0x8, 0, 0},
9064         {0x62, 0x3, 0x3, 0, 0},
9065         {0x63, 0, 0, 0, 0},
9066         {0x64, 0, 0, 0, 0},
9067         {0x65, 0, 0, 0, 0},
9068         {0x66, 0, 0, 0, 0},
9069         {0x67, 0, 0, 0, 0},
9070         {0x68, 0x40, 0x40, 0, 0},
9071         {0x69, 0, 0, 0, 0},
9072         {0x6A, 0, 0, 0, 0},
9073         {0x6B, 0, 0, 0, 0},
9074         {0x6C, 0, 0, 0, 0},
9075         {0x6D, 0x1, 0x1, 0, 0},
9076         {0x6E, 0, 0, 0, 0},
9077         {0x6F, 0, 0, 0, 0},
9078         {0x70, 0x60, 0x60, 0, 0},
9079         {0x71, 0x66, 0x66, 0, 0},
9080         {0x72, 0xc, 0xc, 0, 0},
9081         {0x73, 0x66, 0x66, 0, 0},
9082         {0x74, 0x8f, 0x8f, 1, 1},
9083         {0x75, 0, 0, 0, 0},
9084         {0x76, 0xcc, 0xcc, 0, 0},
9085         {0x77, 0x1, 0x1, 0, 0},
9086         {0x78, 0x66, 0x66, 0, 0},
9087         {0x79, 0x66, 0x66, 0, 0},
9088         {0x7A, 0, 0, 0, 0},
9089         {0x7B, 0, 0, 0, 0},
9090         {0x7C, 0, 0, 0, 0},
9091         {0x7D, 0, 0, 0, 0},
9092         {0x7E, 0, 0, 0, 0},
9093         {0x7F, 0, 0, 0, 0},
9094         {0x80, 0, 0, 0, 0},
9095         {0x81, 0, 0, 0, 0},
9096         {0x82, 0, 0, 0, 0},
9097         {0x83, 0, 0, 0, 0},
9098         {0x84, 0, 0, 0, 0},
9099         {0x85, 0xff, 0xff, 0, 0},
9100         {0x86, 0, 0, 0, 0},
9101         {0x87, 0, 0, 0, 0},
9102         {0x88, 0, 0, 0, 0},
9103         {0x89, 0, 0, 0, 0},
9104         {0x8A, 0, 0, 0, 0},
9105         {0x8B, 0, 0, 0, 0},
9106         {0x8C, 0, 0, 0, 0},
9107         {0x8D, 0, 0, 0, 0},
9108         {0x8E, 0, 0, 0, 0},
9109         {0x8F, 0, 0, 0, 0},
9110         {0x90, 0, 0, 0, 0},
9111         {0x91, 0, 0, 0, 0},
9112         {0x92, 0, 0, 0, 0},
9113         {0x93, 0, 0, 0, 0},
9114         {0x94, 0, 0, 0, 0},
9115         {0x95, 0, 0, 0, 0},
9116         {0x96, 0, 0, 0, 0},
9117         {0x97, 0, 0, 0, 0},
9118         {0x98, 0, 0, 0, 0},
9119         {0x99, 0, 0, 0, 0},
9120         {0x9A, 0, 0, 0, 0},
9121         {0x9B, 0, 0, 0, 0},
9122         {0x9C, 0, 0, 0, 0},
9123         {0x9D, 0, 0, 0, 0},
9124         {0x9E, 0, 0, 0, 0},
9125         {0x9F, 0x6, 0x6, 0, 0},
9126         {0xA0, 0x66, 0x66, 0, 0},
9127         {0xA1, 0x66, 0x66, 0, 0},
9128         {0xA2, 0x66, 0x66, 0, 0},
9129         {0xA3, 0x66, 0x66, 0, 0},
9130         {0xA4, 0x66, 0x66, 0, 0},
9131         {0xA5, 0x66, 0x66, 0, 0},
9132         {0xA6, 0x66, 0x66, 0, 0},
9133         {0xA7, 0x66, 0x66, 0, 0},
9134         {0xA8, 0x66, 0x66, 0, 0},
9135         {0xA9, 0x66, 0x66, 0, 0},
9136         {0xAA, 0x66, 0x66, 0, 0},
9137         {0xAB, 0x66, 0x66, 0, 0},
9138         {0xAC, 0x66, 0x66, 0, 0},
9139         {0xAD, 0x66, 0x66, 0, 0},
9140         {0xAE, 0x66, 0x66, 0, 0},
9141         {0xAF, 0x66, 0x66, 0, 0},
9142         {0xB0, 0x66, 0x66, 0, 0},
9143         {0xB1, 0x66, 0x66, 0, 0},
9144         {0xB2, 0x66, 0x66, 0, 0},
9145         {0xB3, 0xa, 0xa, 0, 0},
9146         {0xB4, 0, 0, 0, 0},
9147         {0xB5, 0, 0, 0, 0},
9148         {0xB6, 0, 0, 0, 0},
9149         {0xFFFF, 0, 0, 0, 0}
9150 };
9151
9152 static struct radio_regs regs_TX_2056_rev5[] = {
9153         {0x02, 0, 0, 0, 0},
9154         {0x03, 0, 0, 0, 0},
9155         {0x04, 0, 0, 0, 0},
9156         {0x05, 0, 0, 0, 0},
9157         {0x06, 0, 0, 0, 0},
9158         {0x07, 0, 0, 0, 0},
9159         {0x08, 0, 0, 0, 0},
9160         {0x09, 0, 0, 0, 0},
9161         {0x0A, 0, 0, 0, 0},
9162         {0x0B, 0, 0, 0, 0},
9163         {0x0C, 0, 0, 0, 0},
9164         {0x0D, 0, 0, 0, 0},
9165         {0x0E, 0, 0, 0, 0},
9166         {0x0F, 0, 0, 0, 0},
9167         {0x10, 0, 0, 0, 0},
9168         {0x11, 0, 0, 0, 0},
9169         {0x12, 0, 0, 0, 0},
9170         {0x13, 0, 0, 0, 0},
9171         {0x14, 0, 0, 0, 0},
9172         {0x15, 0, 0, 0, 0},
9173         {0x16, 0, 0, 0, 0},
9174         {0x17, 0, 0, 0, 0},
9175         {0x18, 0, 0, 0, 0},
9176         {0x19, 0, 0, 0, 0},
9177         {0x1A, 0, 0, 0, 0},
9178         {0x1B, 0, 0, 0, 0},
9179         {0x1C, 0, 0, 0, 0},
9180         {0x1D, 0, 0, 0, 0},
9181         {0x1E, 0, 0, 0, 0},
9182         {0x1F, 0, 0, 0, 0},
9183         {0x20, 0, 0, 0, 0},
9184         {0x21, 0x88, 0x88, 0, 0},
9185         {0x22, 0x88, 0x88, 0, 0},
9186         {0x23, 0x88, 0x88, 0, 0},
9187         {0x24, 0x88, 0x88, 0, 0},
9188         {0x25, 0xc, 0xc, 0, 0},
9189         {0x26, 0, 0, 0, 0},
9190         {0x27, 0x3, 0x3, 0, 0},
9191         {0x28, 0, 0, 0, 0},
9192         {0x29, 0x3, 0x3, 0, 0},
9193         {0x2A, 0x37, 0x37, 0, 0},
9194         {0x2B, 0x3, 0x3, 0, 0},
9195         {0x2C, 0, 0, 0, 0},
9196         {0x2D, 0, 0, 0, 0},
9197         {0x2E, 0x1, 0x1, 0, 0},
9198         {0x2F, 0x1, 0x1, 0, 0},
9199         {0x30, 0, 0, 0, 0},
9200         {0x31, 0, 0, 0, 0},
9201         {0x32, 0, 0, 0, 0},
9202         {0x33, 0x11, 0x11, 0, 0},
9203         {0x34, 0x11, 0x11, 0, 0},
9204         {0x35, 0, 0, 0, 0},
9205         {0x36, 0, 0, 0, 0},
9206         {0x37, 0x3, 0x3, 0, 0},
9207         {0x38, 0xf, 0xf, 0, 0},
9208         {0x39, 0, 0, 0, 0},
9209         {0x3A, 0x2d, 0x2d, 0, 0},
9210         {0x3B, 0, 0, 0, 0},
9211         {0x3C, 0x6e, 0x6e, 0, 0},
9212         {0x3D, 0xf0, 0xf0, 1, 1},
9213         {0x3E, 0, 0, 0, 0},
9214         {0x3F, 0, 0, 0, 0},
9215         {0x40, 0, 0, 0, 0},
9216         {0x41, 0x3, 0x3, 0, 0},
9217         {0x42, 0x3, 0x3, 0, 0},
9218         {0x43, 0, 0, 0, 0},
9219         {0x44, 0x1e, 0x1e, 0, 0},
9220         {0x45, 0, 0, 0, 0},
9221         {0x46, 0x6e, 0x6e, 0, 0},
9222         {0x47, 0xf0, 0xf0, 1, 1},
9223         {0x48, 0, 0, 0, 0},
9224         {0x49, 0x2, 0x2, 0, 0},
9225         {0x4A, 0xff, 0xff, 1, 1},
9226         {0x4B, 0xc, 0xc, 0, 0},
9227         {0x4C, 0, 0, 0, 0},
9228         {0x4D, 0x38, 0x38, 0, 0},
9229         {0x4E, 0x70, 0x70, 1, 1},
9230         {0x4F, 0x2, 0x2, 0, 0},
9231         {0x50, 0x88, 0x88, 0, 0},
9232         {0x51, 0xc, 0xc, 0, 0},
9233         {0x52, 0, 0, 0, 0},
9234         {0x53, 0x8, 0x8, 0, 0},
9235         {0x54, 0x70, 0x70, 1, 1},
9236         {0x55, 0x2, 0x2, 0, 0},
9237         {0x56, 0xff, 0xff, 1, 1},
9238         {0x57, 0, 0, 0, 0},
9239         {0x58, 0x83, 0x83, 0, 0},
9240         {0x59, 0x77, 0x77, 1, 1},
9241         {0x5A, 0, 0, 0, 0},
9242         {0x5B, 0x2, 0x2, 0, 0},
9243         {0x5C, 0x88, 0x88, 0, 0},
9244         {0x5D, 0, 0, 0, 0},
9245         {0x5E, 0x8, 0x8, 0, 0},
9246         {0x5F, 0x77, 0x77, 1, 1},
9247         {0x60, 0x1, 0x1, 0, 0},
9248         {0x61, 0, 0, 0, 0},
9249         {0x62, 0x7, 0x7, 0, 0},
9250         {0x63, 0, 0, 0, 0},
9251         {0x64, 0x7, 0x7, 0, 0},
9252         {0x65, 0, 0, 0, 0},
9253         {0x66, 0, 0, 0, 0},
9254         {0x67, 0, 0, 1, 1},
9255         {0x68, 0, 0, 0, 0},
9256         {0x69, 0xa, 0xa, 0, 0},
9257         {0x6A, 0, 0, 0, 0},
9258         {0x6B, 0, 0, 0, 0},
9259         {0x6C, 0, 0, 0, 0},
9260         {0x6D, 0, 0, 0, 0},
9261         {0x6E, 0, 0, 0, 0},
9262         {0x6F, 0, 0, 0, 0},
9263         {0x70, 0, 0, 0, 0},
9264         {0x71, 0x2, 0x2, 0, 0},
9265         {0x72, 0, 0, 0, 0},
9266         {0x73, 0, 0, 0, 0},
9267         {0x74, 0xe, 0xe, 0, 0},
9268         {0x75, 0xe, 0xe, 0, 0},
9269         {0x76, 0xe, 0xe, 0, 0},
9270         {0x77, 0x13, 0x13, 0, 0},
9271         {0x78, 0x13, 0x13, 0, 0},
9272         {0x79, 0x1b, 0x1b, 0, 0},
9273         {0x7A, 0x1b, 0x1b, 0, 0},
9274         {0x7B, 0x55, 0x55, 0, 0},
9275         {0x7C, 0x5b, 0x5b, 0, 0},
9276         {0x7D, 0, 0, 0, 0},
9277         {0x7E, 0, 0, 0, 0},
9278         {0x7F, 0, 0, 0, 0},
9279         {0x80, 0, 0, 0, 0},
9280         {0x81, 0, 0, 0, 0},
9281         {0x82, 0, 0, 0, 0},
9282         {0x83, 0, 0, 0, 0},
9283         {0x84, 0, 0, 0, 0},
9284         {0x85, 0, 0, 0, 0},
9285         {0x86, 0, 0, 0, 0},
9286         {0x87, 0, 0, 0, 0},
9287         {0x88, 0, 0, 0, 0},
9288         {0x89, 0, 0, 0, 0},
9289         {0x8A, 0, 0, 0, 0},
9290         {0x8B, 0, 0, 0, 0},
9291         {0x8C, 0, 0, 0, 0},
9292         {0x8D, 0, 0, 0, 0},
9293         {0x8E, 0, 0, 0, 0},
9294         {0x8F, 0, 0, 0, 0},
9295         {0x90, 0, 0, 0, 0},
9296         {0x91, 0, 0, 0, 0},
9297         {0x92, 0, 0, 0, 0},
9298         {0x93, 0x70, 0x70, 0, 0},
9299         {0x94, 0x70, 0x70, 0, 0},
9300         {0x95, 0x71, 0x71, 1, 1},
9301         {0x96, 0x71, 0x71, 1, 1},
9302         {0x97, 0x72, 0x72, 1, 1},
9303         {0x98, 0x73, 0x73, 1, 1},
9304         {0x99, 0x74, 0x74, 1, 1},
9305         {0x9A, 0x75, 0x75, 1, 1},
9306         {0xFFFF, 0, 0, 0, 0}
9307 };
9308
9309 static struct radio_regs regs_RX_2056_rev5[] = {
9310         {0x02, 0, 0, 0, 0},
9311         {0x03, 0, 0, 0, 0},
9312         {0x04, 0, 0, 0, 0},
9313         {0x05, 0, 0, 0, 0},
9314         {0x06, 0, 0, 0, 0},
9315         {0x07, 0, 0, 0, 0},
9316         {0x08, 0, 0, 0, 0},
9317         {0x09, 0, 0, 0, 0},
9318         {0x0A, 0, 0, 0, 0},
9319         {0x0B, 0, 0, 0, 0},
9320         {0x0C, 0, 0, 0, 0},
9321         {0x0D, 0, 0, 0, 0},
9322         {0x0E, 0, 0, 0, 0},
9323         {0x0F, 0, 0, 0, 0},
9324         {0x10, 0, 0, 0, 0},
9325         {0x11, 0, 0, 0, 0},
9326         {0x12, 0, 0, 0, 0},
9327         {0x13, 0, 0, 0, 0},
9328         {0x14, 0, 0, 0, 0},
9329         {0x15, 0, 0, 0, 0},
9330         {0x16, 0, 0, 0, 0},
9331         {0x17, 0, 0, 0, 0},
9332         {0x18, 0, 0, 0, 0},
9333         {0x19, 0, 0, 0, 0},
9334         {0x1A, 0, 0, 0, 0},
9335         {0x1B, 0, 0, 0, 0},
9336         {0x1C, 0, 0, 0, 0},
9337         {0x1D, 0, 0, 0, 0},
9338         {0x1E, 0, 0, 0, 0},
9339         {0x1F, 0, 0, 0, 0},
9340         {0x20, 0x3, 0x3, 0, 0},
9341         {0x21, 0, 0, 0, 0},
9342         {0x22, 0, 0, 0, 0},
9343         {0x23, 0x90, 0x90, 0, 0},
9344         {0x24, 0x55, 0x55, 0, 0},
9345         {0x25, 0x15, 0x15, 0, 0},
9346         {0x26, 0x5, 0x5, 0, 0},
9347         {0x27, 0x15, 0x15, 0, 0},
9348         {0x28, 0x5, 0x5, 0, 0},
9349         {0x29, 0x20, 0x20, 0, 0},
9350         {0x2A, 0x11, 0x11, 0, 0},
9351         {0x2B, 0x90, 0x90, 0, 0},
9352         {0x2C, 0, 0, 0, 0},
9353         {0x2D, 0x88, 0x88, 0, 0},
9354         {0x2E, 0x32, 0x32, 0, 0},
9355         {0x2F, 0x77, 0x77, 0, 0},
9356         {0x30, 0x17, 0x17, 1, 1},
9357         {0x31, 0xff, 0xff, 1, 1},
9358         {0x32, 0x20, 0x20, 0, 0},
9359         {0x33, 0, 0, 0, 0},
9360         {0x34, 0x88, 0x88, 0, 0},
9361         {0x35, 0x32, 0x32, 0, 0},
9362         {0x36, 0x77, 0x77, 0, 0},
9363         {0x37, 0x17, 0x17, 1, 1},
9364         {0x38, 0xf0, 0xf0, 1, 1},
9365         {0x39, 0x20, 0x20, 0, 0},
9366         {0x3A, 0x8, 0x8, 0, 0},
9367         {0x3B, 0x55, 0x55, 1, 1},
9368         {0x3C, 0, 0, 0, 0},
9369         {0x3D, 0x88, 0x88, 1, 1},
9370         {0x3E, 0, 0, 0, 0},
9371         {0x3F, 0, 0, 1, 1},
9372         {0x40, 0x7, 0x7, 1, 1},
9373         {0x41, 0x6, 0x6, 0, 0},
9374         {0x42, 0x4, 0x4, 0, 0},
9375         {0x43, 0, 0, 0, 0},
9376         {0x44, 0x8, 0x8, 0, 0},
9377         {0x45, 0x55, 0x55, 1, 1},
9378         {0x46, 0, 0, 0, 0},
9379         {0x47, 0x11, 0x11, 0, 0},
9380         {0x48, 0, 0, 0, 0},
9381         {0x49, 0, 0, 1, 1},
9382         {0x4A, 0x7, 0x7, 0, 0},
9383         {0x4B, 0x6, 0x6, 0, 0},
9384         {0x4C, 0x4, 0x4, 0, 0},
9385         {0x4D, 0, 0, 0, 0},
9386         {0x4E, 0, 0, 0, 0},
9387         {0x4F, 0x26, 0x26, 1, 1},
9388         {0x50, 0x26, 0x26, 1, 1},
9389         {0x51, 0xf, 0xf, 1, 1},
9390         {0x52, 0xf, 0xf, 1, 1},
9391         {0x53, 0x44, 0x44, 0, 0},
9392         {0x54, 0, 0, 0, 0},
9393         {0x55, 0, 0, 0, 0},
9394         {0x56, 0x8, 0x8, 0, 0},
9395         {0x57, 0x8, 0x8, 0, 0},
9396         {0x58, 0x7, 0x7, 0, 0},
9397         {0x59, 0x22, 0x22, 0, 0},
9398         {0x5A, 0x22, 0x22, 0, 0},
9399         {0x5B, 0x2, 0x2, 0, 0},
9400         {0x5C, 0x4, 0x4, 1, 1},
9401         {0x5D, 0x7, 0x7, 0, 0},
9402         {0x5E, 0x55, 0x55, 0, 0},
9403         {0x5F, 0x23, 0x23, 0, 0},
9404         {0x60, 0x41, 0x41, 0, 0},
9405         {0x61, 0x1, 0x1, 0, 0},
9406         {0x62, 0xa, 0xa, 0, 0},
9407         {0x63, 0, 0, 0, 0},
9408         {0x64, 0, 0, 0, 0},
9409         {0x65, 0, 0, 0, 0},
9410         {0x66, 0, 0, 0, 0},
9411         {0x67, 0, 0, 0, 0},
9412         {0x68, 0, 0, 0, 0},
9413         {0x69, 0, 0, 0, 0},
9414         {0x6A, 0, 0, 0, 0},
9415         {0x6B, 0xc, 0xc, 0, 0},
9416         {0x6C, 0, 0, 0, 0},
9417         {0x6D, 0, 0, 0, 0},
9418         {0x6E, 0, 0, 0, 0},
9419         {0x6F, 0, 0, 0, 0},
9420         {0x70, 0, 0, 0, 0},
9421         {0x71, 0, 0, 0, 0},
9422         {0x72, 0x22, 0x22, 0, 0},
9423         {0x73, 0x22, 0x22, 0, 0},
9424         {0x74, 0, 0, 1, 1},
9425         {0x75, 0xa, 0xa, 0, 0},
9426         {0x76, 0x1, 0x1, 0, 0},
9427         {0x77, 0x22, 0x22, 0, 0},
9428         {0x78, 0x30, 0x30, 0, 0},
9429         {0x79, 0, 0, 0, 0},
9430         {0x7A, 0, 0, 0, 0},
9431         {0x7B, 0, 0, 0, 0},
9432         {0x7C, 0, 0, 0, 0},
9433         {0x7D, 0, 0, 0, 0},
9434         {0x7E, 0, 0, 0, 0},
9435         {0x7F, 0, 0, 0, 0},
9436         {0x80, 0, 0, 0, 0},
9437         {0x81, 0, 0, 0, 0},
9438         {0x82, 0, 0, 0, 0},
9439         {0x83, 0, 0, 0, 0},
9440         {0x84, 0, 0, 0, 0},
9441         {0x85, 0, 0, 0, 0},
9442         {0x86, 0, 0, 0, 0},
9443         {0x87, 0, 0, 0, 0},
9444         {0x88, 0, 0, 0, 0},
9445         {0x89, 0, 0, 0, 0},
9446         {0x8A, 0, 0, 0, 0},
9447         {0x8B, 0, 0, 0, 0},
9448         {0x8C, 0, 0, 0, 0},
9449         {0x8D, 0, 0, 0, 0},
9450         {0x8E, 0, 0, 0, 0},
9451         {0x8F, 0, 0, 0, 0},
9452         {0x90, 0, 0, 0, 0},
9453         {0x91, 0, 0, 0, 0},
9454         {0x92, 0, 0, 0, 0},
9455         {0x93, 0, 0, 0, 0},
9456         {0x94, 0, 0, 0, 0},
9457         {0xFFFF, 0, 0, 0, 0}
9458 };
9459
9460 static struct radio_regs regs_SYN_2056_rev6[] = {
9461         {0x02, 0, 0, 0, 0},
9462         {0x03, 0, 0, 0, 0},
9463         {0x04, 0, 0, 0, 0},
9464         {0x05, 0, 0, 0, 0},
9465         {0x06, 0, 0, 0, 0},
9466         {0x07, 0, 0, 0, 0},
9467         {0x08, 0, 0, 0, 0},
9468         {0x09, 0x1, 0x1, 0, 0},
9469         {0x0A, 0, 0, 0, 0},
9470         {0x0B, 0, 0, 0, 0},
9471         {0x0C, 0, 0, 0, 0},
9472         {0x0D, 0, 0, 0, 0},
9473         {0x0E, 0, 0, 0, 0},
9474         {0x0F, 0, 0, 0, 0},
9475         {0x10, 0, 0, 0, 0},
9476         {0x11, 0, 0, 0, 0},
9477         {0x12, 0, 0, 0, 0},
9478         {0x13, 0, 0, 0, 0},
9479         {0x14, 0, 0, 0, 0},
9480         {0x15, 0, 0, 0, 0},
9481         {0x16, 0, 0, 0, 0},
9482         {0x17, 0, 0, 0, 0},
9483         {0x18, 0, 0, 0, 0},
9484         {0x19, 0, 0, 0, 0},
9485         {0x1A, 0, 0, 0, 0},
9486         {0x1B, 0, 0, 0, 0},
9487         {0x1C, 0, 0, 0, 0},
9488         {0x1D, 0, 0, 0, 0},
9489         {0x1E, 0, 0, 0, 0},
9490         {0x1F, 0, 0, 0, 0},
9491         {0x20, 0, 0, 0, 0},
9492         {0x21, 0, 0, 0, 0},
9493         {0x22, 0x60, 0x60, 0, 0},
9494         {0x23, 0x6, 0x6, 0, 0},
9495         {0x24, 0xc, 0xc, 0, 0},
9496         {0x25, 0, 0, 0, 0},
9497         {0x26, 0, 0, 0, 0},
9498         {0x27, 0, 0, 0, 0},
9499         {0x28, 0x1, 0x1, 0, 0},
9500         {0x29, 0, 0, 0, 0},
9501         {0x2A, 0, 0, 0, 0},
9502         {0x2B, 0, 0, 0, 0},
9503         {0x2C, 0, 0, 0, 0},
9504         {0x2D, 0, 0, 0, 0},
9505         {0x2E, 0, 0, 0, 0},
9506         {0x2F, 0x1f, 0x1f, 0, 0},
9507         {0x30, 0x15, 0x15, 0, 0},
9508         {0x31, 0xf, 0xf, 0, 0},
9509         {0x32, 0, 0, 0, 0},
9510         {0x33, 0, 0, 0, 0},
9511         {0x34, 0, 0, 0, 0},
9512         {0x35, 0, 0, 0, 0},
9513         {0x36, 0, 0, 0, 0},
9514         {0x37, 0, 0, 0, 0},
9515         {0x38, 0, 0, 0, 0},
9516         {0x39, 0, 0, 0, 0},
9517         {0x3A, 0, 0, 0, 0},
9518         {0x3B, 0, 0, 0, 0},
9519         {0x3C, 0x13, 0x13, 0, 0},
9520         {0x3D, 0xf, 0xf, 0, 0},
9521         {0x3E, 0x18, 0x18, 0, 0},
9522         {0x3F, 0, 0, 0, 0},
9523         {0x40, 0, 0, 0, 0},
9524         {0x41, 0x20, 0x20, 0, 0},
9525         {0x42, 0x20, 0x20, 0, 0},
9526         {0x43, 0, 0, 0, 0},
9527         {0x44, 0x77, 0x77, 0, 0},
9528         {0x45, 0x7, 0x7, 0, 0},
9529         {0x46, 0x1, 0x1, 0, 0},
9530         {0x47, 0x4, 0x4, 0, 0},
9531         {0x48, 0xf, 0xf, 0, 0},
9532         {0x49, 0x30, 0x30, 0, 0},
9533         {0x4A, 0x32, 0x32, 0, 0},
9534         {0x4B, 0xd, 0xd, 0, 0},
9535         {0x4C, 0xd, 0xd, 0, 0},
9536         {0x4D, 0x4, 0x4, 0, 0},
9537         {0x4E, 0x6, 0x6, 0, 0},
9538         {0x4F, 0x1, 0x1, 0, 0},
9539         {0x50, 0x1c, 0x1c, 0, 0},
9540         {0x51, 0x2, 0x2, 0, 0},
9541         {0x52, 0x2, 0x2, 0, 0},
9542         {0x53, 0xf7, 0xf7, 1, 1},
9543         {0x54, 0xb4, 0xb4, 0, 0},
9544         {0x55, 0xd2, 0xd2, 0, 0},
9545         {0x56, 0, 0, 0, 0},
9546         {0x57, 0, 0, 0, 0},
9547         {0x58, 0x4, 0x4, 0, 0},
9548         {0x59, 0x96, 0x96, 0, 0},
9549         {0x5A, 0x3e, 0x3e, 0, 0},
9550         {0x5B, 0x3e, 0x3e, 0, 0},
9551         {0x5C, 0x13, 0x13, 0, 0},
9552         {0x5D, 0x2, 0x2, 0, 0},
9553         {0x5E, 0, 0, 0, 0},
9554         {0x5F, 0x7, 0x7, 0, 0},
9555         {0x60, 0x7, 0x7, 1, 1},
9556         {0x61, 0x8, 0x8, 0, 0},
9557         {0x62, 0x3, 0x3, 0, 0},
9558         {0x63, 0, 0, 0, 0},
9559         {0x64, 0, 0, 0, 0},
9560         {0x65, 0, 0, 0, 0},
9561         {0x66, 0, 0, 0, 0},
9562         {0x67, 0, 0, 0, 0},
9563         {0x68, 0x40, 0x40, 0, 0},
9564         {0x69, 0, 0, 0, 0},
9565         {0x6A, 0, 0, 0, 0},
9566         {0x6B, 0, 0, 0, 0},
9567         {0x6C, 0, 0, 0, 0},
9568         {0x6D, 0x1, 0x1, 0, 0},
9569         {0x6E, 0, 0, 0, 0},
9570         {0x6F, 0, 0, 0, 0},
9571         {0x70, 0x60, 0x60, 0, 0},
9572         {0x71, 0x66, 0x66, 0, 0},
9573         {0x72, 0xc, 0xc, 0, 0},
9574         {0x73, 0x66, 0x66, 0, 0},
9575         {0x74, 0x8f, 0x8f, 1, 1},
9576         {0x75, 0, 0, 0, 0},
9577         {0x76, 0xcc, 0xcc, 0, 0},
9578         {0x77, 0x1, 0x1, 0, 0},
9579         {0x78, 0x66, 0x66, 0, 0},
9580         {0x79, 0x66, 0x66, 0, 0},
9581         {0x7A, 0, 0, 0, 0},
9582         {0x7B, 0, 0, 0, 0},
9583         {0x7C, 0, 0, 0, 0},
9584         {0x7D, 0, 0, 0, 0},
9585         {0x7E, 0, 0, 0, 0},
9586         {0x7F, 0, 0, 0, 0},
9587         {0x80, 0, 0, 0, 0},
9588         {0x81, 0, 0, 0, 0},
9589         {0x82, 0, 0, 0, 0},
9590         {0x83, 0, 0, 0, 0},
9591         {0x84, 0, 0, 0, 0},
9592         {0x85, 0xff, 0xff, 0, 0},
9593         {0x86, 0, 0, 0, 0},
9594         {0x87, 0, 0, 0, 0},
9595         {0x88, 0, 0, 0, 0},
9596         {0x89, 0, 0, 0, 0},
9597         {0x8A, 0, 0, 0, 0},
9598         {0x8B, 0, 0, 0, 0},
9599         {0x8C, 0, 0, 0, 0},
9600         {0x8D, 0, 0, 0, 0},
9601         {0x8E, 0, 0, 0, 0},
9602         {0x8F, 0, 0, 0, 0},
9603         {0x90, 0, 0, 0, 0},
9604         {0x91, 0, 0, 0, 0},
9605         {0x92, 0, 0, 0, 0},
9606         {0x93, 0, 0, 0, 0},
9607         {0x94, 0, 0, 0, 0},
9608         {0x95, 0, 0, 0, 0},
9609         {0x96, 0, 0, 0, 0},
9610         {0x97, 0, 0, 0, 0},
9611         {0x98, 0, 0, 0, 0},
9612         {0x99, 0, 0, 0, 0},
9613         {0x9A, 0, 0, 0, 0},
9614         {0x9B, 0, 0, 0, 0},
9615         {0x9C, 0, 0, 0, 0},
9616         {0x9D, 0, 0, 0, 0},
9617         {0x9E, 0, 0, 0, 0},
9618         {0x9F, 0x6, 0x6, 0, 0},
9619         {0xA0, 0x66, 0x66, 0, 0},
9620         {0xA1, 0x66, 0x66, 0, 0},
9621         {0xA2, 0x66, 0x66, 0, 0},
9622         {0xA3, 0x66, 0x66, 0, 0},
9623         {0xA4, 0x66, 0x66, 0, 0},
9624         {0xA5, 0x66, 0x66, 0, 0},
9625         {0xA6, 0x66, 0x66, 0, 0},
9626         {0xA7, 0x66, 0x66, 0, 0},
9627         {0xA8, 0x66, 0x66, 0, 0},
9628         {0xA9, 0x66, 0x66, 0, 0},
9629         {0xAA, 0x66, 0x66, 0, 0},
9630         {0xAB, 0x66, 0x66, 0, 0},
9631         {0xAC, 0x66, 0x66, 0, 0},
9632         {0xAD, 0x66, 0x66, 0, 0},
9633         {0xAE, 0x66, 0x66, 0, 0},
9634         {0xAF, 0x66, 0x66, 0, 0},
9635         {0xB0, 0x66, 0x66, 0, 0},
9636         {0xB1, 0x66, 0x66, 0, 0},
9637         {0xB2, 0x66, 0x66, 0, 0},
9638         {0xB3, 0xa, 0xa, 0, 0},
9639         {0xB4, 0, 0, 0, 0},
9640         {0xB5, 0, 0, 0, 0},
9641         {0xB6, 0, 0, 0, 0},
9642         {0xFFFF, 0, 0, 0, 0}
9643 };
9644
9645 static struct radio_regs regs_TX_2056_rev6[] = {
9646         {0x02, 0, 0, 0, 0},
9647         {0x03, 0, 0, 0, 0},
9648         {0x04, 0, 0, 0, 0},
9649         {0x05, 0, 0, 0, 0},
9650         {0x06, 0, 0, 0, 0},
9651         {0x07, 0, 0, 0, 0},
9652         {0x08, 0, 0, 0, 0},
9653         {0x09, 0, 0, 0, 0},
9654         {0x0A, 0, 0, 0, 0},
9655         {0x0B, 0, 0, 0, 0},
9656         {0x0C, 0, 0, 0, 0},
9657         {0x0D, 0, 0, 0, 0},
9658         {0x0E, 0, 0, 0, 0},
9659         {0x0F, 0, 0, 0, 0},
9660         {0x10, 0, 0, 0, 0},
9661         {0x11, 0, 0, 0, 0},
9662         {0x12, 0, 0, 0, 0},
9663         {0x13, 0, 0, 0, 0},
9664         {0x14, 0, 0, 0, 0},
9665         {0x15, 0, 0, 0, 0},
9666         {0x16, 0, 0, 0, 0},
9667         {0x17, 0, 0, 0, 0},
9668         {0x18, 0, 0, 0, 0},
9669         {0x19, 0, 0, 0, 0},
9670         {0x1A, 0, 0, 0, 0},
9671         {0x1B, 0, 0, 0, 0},
9672         {0x1C, 0, 0, 0, 0},
9673         {0x1D, 0, 0, 0, 0},
9674         {0x1E, 0, 0, 0, 0},
9675         {0x1F, 0, 0, 0, 0},
9676         {0x20, 0, 0, 0, 0},
9677         {0x21, 0x88, 0x88, 0, 0},
9678         {0x22, 0x88, 0x88, 0, 0},
9679         {0x23, 0x88, 0x88, 0, 0},
9680         {0x24, 0x88, 0x88, 0, 0},
9681         {0x25, 0xc, 0xc, 0, 0},
9682         {0x26, 0, 0, 0, 0},
9683         {0x27, 0x3, 0x3, 0, 0},
9684         {0x28, 0, 0, 0, 0},
9685         {0x29, 0x3, 0x3, 0, 0},
9686         {0x2A, 0x37, 0x37, 0, 0},
9687         {0x2B, 0x3, 0x3, 0, 0},
9688         {0x2C, 0, 0, 0, 0},
9689         {0x2D, 0, 0, 0, 0},
9690         {0x2E, 0x1, 0x1, 0, 0},
9691         {0x2F, 0x1, 0x1, 0, 0},
9692         {0x30, 0, 0, 0, 0},
9693         {0x31, 0, 0, 0, 0},
9694         {0x32, 0, 0, 0, 0},
9695         {0x33, 0x11, 0x11, 0, 0},
9696         {0x34, 0xee, 0xee, 1, 1},
9697         {0x35, 0, 0, 0, 0},
9698         {0x36, 0, 0, 0, 0},
9699         {0x37, 0x3, 0x3, 0, 0},
9700         {0x38, 0x50, 0x50, 1, 1},
9701         {0x39, 0, 0, 0, 0},
9702         {0x3A, 0x50, 0x50, 1, 1},
9703         {0x3B, 0, 0, 0, 0},
9704         {0x3C, 0x6e, 0x6e, 0, 0},
9705         {0x3D, 0xf0, 0xf0, 1, 1},
9706         {0x3E, 0, 0, 0, 0},
9707         {0x3F, 0, 0, 0, 0},
9708         {0x40, 0, 0, 0, 0},
9709         {0x41, 0x3, 0x3, 0, 0},
9710         {0x42, 0x3, 0x3, 0, 0},
9711         {0x43, 0, 0, 0, 0},
9712         {0x44, 0x1e, 0x1e, 0, 0},
9713         {0x45, 0, 0, 0, 0},
9714         {0x46, 0x6e, 0x6e, 0, 0},
9715         {0x47, 0xf0, 0xf0, 1, 1},
9716         {0x48, 0, 0, 0, 0},
9717         {0x49, 0x2, 0x2, 0, 0},
9718         {0x4A, 0xff, 0xff, 1, 1},
9719         {0x4B, 0xc, 0xc, 0, 0},
9720         {0x4C, 0, 0, 0, 0},
9721         {0x4D, 0x38, 0x38, 0, 0},
9722         {0x4E, 0x70, 0x70, 1, 1},
9723         {0x4F, 0x2, 0x2, 0, 0},
9724         {0x50, 0x88, 0x88, 0, 0},
9725         {0x51, 0xc, 0xc, 0, 0},
9726         {0x52, 0, 0, 0, 0},
9727         {0x53, 0x8, 0x8, 0, 0},
9728         {0x54, 0x70, 0x70, 1, 1},
9729         {0x55, 0x2, 0x2, 0, 0},
9730         {0x56, 0xff, 0xff, 1, 1},
9731         {0x57, 0, 0, 0, 0},
9732         {0x58, 0x83, 0x83, 0, 0},
9733         {0x59, 0x77, 0x77, 1, 1},
9734         {0x5A, 0, 0, 0, 0},
9735         {0x5B, 0x2, 0x2, 0, 0},
9736         {0x5C, 0x88, 0x88, 0, 0},
9737         {0x5D, 0, 0, 0, 0},
9738         {0x5E, 0x8, 0x8, 0, 0},
9739         {0x5F, 0x77, 0x77, 1, 1},
9740         {0x60, 0x1, 0x1, 0, 0},
9741         {0x61, 0, 0, 0, 0},
9742         {0x62, 0x7, 0x7, 0, 0},
9743         {0x63, 0, 0, 0, 0},
9744         {0x64, 0x7, 0x7, 0, 0},
9745         {0x65, 0, 0, 0, 0},
9746         {0x66, 0, 0, 0, 0},
9747         {0x67, 0, 0, 1, 1},
9748         {0x68, 0, 0, 0, 0},
9749         {0x69, 0xa, 0xa, 0, 0},
9750         {0x6A, 0, 0, 0, 0},
9751         {0x6B, 0, 0, 0, 0},
9752         {0x6C, 0, 0, 0, 0},
9753         {0x6D, 0, 0, 0, 0},
9754         {0x6E, 0, 0, 0, 0},
9755         {0x6F, 0, 0, 0, 0},
9756         {0x70, 0, 0, 0, 0},
9757         {0x71, 0x2, 0x2, 0, 0},
9758         {0x72, 0, 0, 0, 0},
9759         {0x73, 0, 0, 0, 0},
9760         {0x74, 0xe, 0xe, 0, 0},
9761         {0x75, 0xe, 0xe, 0, 0},
9762         {0x76, 0xe, 0xe, 0, 0},
9763         {0x77, 0x13, 0x13, 0, 0},
9764         {0x78, 0x13, 0x13, 0, 0},
9765         {0x79, 0x1b, 0x1b, 0, 0},
9766         {0x7A, 0x1b, 0x1b, 0, 0},
9767         {0x7B, 0x55, 0x55, 0, 0},
9768         {0x7C, 0x5b, 0x5b, 0, 0},
9769         {0x7D, 0x30, 0x30, 1, 1},
9770         {0x7E, 0, 0, 0, 0},
9771         {0x7F, 0, 0, 0, 0},
9772         {0x80, 0, 0, 0, 0},
9773         {0x81, 0, 0, 0, 0},
9774         {0x82, 0, 0, 0, 0},
9775         {0x83, 0, 0, 0, 0},
9776         {0x84, 0, 0, 0, 0},
9777         {0x85, 0, 0, 0, 0},
9778         {0x86, 0, 0, 0, 0},
9779         {0x87, 0, 0, 0, 0},
9780         {0x88, 0, 0, 0, 0},
9781         {0x89, 0, 0, 0, 0},
9782         {0x8A, 0, 0, 0, 0},
9783         {0x8B, 0, 0, 0, 0},
9784         {0x8C, 0, 0, 0, 0},
9785         {0x8D, 0, 0, 0, 0},
9786         {0x8E, 0, 0, 0, 0},
9787         {0x8F, 0, 0, 0, 0},
9788         {0x90, 0, 0, 0, 0},
9789         {0x91, 0, 0, 0, 0},
9790         {0x92, 0, 0, 0, 0},
9791         {0x93, 0x70, 0x70, 0, 0},
9792         {0x94, 0x70, 0x70, 0, 0},
9793         {0x95, 0x70, 0x70, 0, 0},
9794         {0x96, 0x70, 0x70, 0, 0},
9795         {0x97, 0x70, 0x70, 0, 0},
9796         {0x98, 0x70, 0x70, 0, 0},
9797         {0x99, 0x70, 0x70, 0, 0},
9798         {0x9A, 0x70, 0x70, 0, 0},
9799         {0xFFFF, 0, 0, 0, 0}
9800 };
9801
9802 static struct radio_regs regs_RX_2056_rev6[] = {
9803         {0x02, 0, 0, 0, 0},
9804         {0x03, 0, 0, 0, 0},
9805         {0x04, 0, 0, 0, 0},
9806         {0x05, 0, 0, 0, 0},
9807         {0x06, 0, 0, 0, 0},
9808         {0x07, 0, 0, 0, 0},
9809         {0x08, 0, 0, 0, 0},
9810         {0x09, 0, 0, 0, 0},
9811         {0x0A, 0, 0, 0, 0},
9812         {0x0B, 0, 0, 0, 0},
9813         {0x0C, 0, 0, 0, 0},
9814         {0x0D, 0, 0, 0, 0},
9815         {0x0E, 0, 0, 0, 0},
9816         {0x0F, 0, 0, 0, 0},
9817         {0x10, 0, 0, 0, 0},
9818         {0x11, 0, 0, 0, 0},
9819         {0x12, 0, 0, 0, 0},
9820         {0x13, 0, 0, 0, 0},
9821         {0x14, 0, 0, 0, 0},
9822         {0x15, 0, 0, 0, 0},
9823         {0x16, 0, 0, 0, 0},
9824         {0x17, 0, 0, 0, 0},
9825         {0x18, 0, 0, 0, 0},
9826         {0x19, 0, 0, 0, 0},
9827         {0x1A, 0, 0, 0, 0},
9828         {0x1B, 0, 0, 0, 0},
9829         {0x1C, 0, 0, 0, 0},
9830         {0x1D, 0, 0, 0, 0},
9831         {0x1E, 0, 0, 0, 0},
9832         {0x1F, 0, 0, 0, 0},
9833         {0x20, 0x3, 0x3, 0, 0},
9834         {0x21, 0, 0, 0, 0},
9835         {0x22, 0, 0, 0, 0},
9836         {0x23, 0x90, 0x90, 0, 0},
9837         {0x24, 0x55, 0x55, 0, 0},
9838         {0x25, 0x15, 0x15, 0, 0},
9839         {0x26, 0x5, 0x5, 0, 0},
9840         {0x27, 0x15, 0x15, 0, 0},
9841         {0x28, 0x5, 0x5, 0, 0},
9842         {0x29, 0x20, 0x20, 0, 0},
9843         {0x2A, 0x11, 0x11, 0, 0},
9844         {0x2B, 0x90, 0x90, 0, 0},
9845         {0x2C, 0, 0, 0, 0},
9846         {0x2D, 0x88, 0x88, 0, 0},
9847         {0x2E, 0x32, 0x32, 0, 0},
9848         {0x2F, 0x77, 0x77, 0, 0},
9849         {0x30, 0x17, 0x17, 1, 1},
9850         {0x31, 0xff, 0xff, 1, 1},
9851         {0x32, 0x20, 0x20, 0, 0},
9852         {0x33, 0, 0, 0, 0},
9853         {0x34, 0x88, 0x88, 0, 0},
9854         {0x35, 0x32, 0x32, 0, 0},
9855         {0x36, 0x77, 0x77, 0, 0},
9856         {0x37, 0x17, 0x17, 1, 1},
9857         {0x38, 0xf0, 0xf0, 1, 1},
9858         {0x39, 0x20, 0x20, 0, 0},
9859         {0x3A, 0x8, 0x8, 0, 0},
9860         {0x3B, 0x55, 0x55, 1, 1},
9861         {0x3C, 0, 0, 0, 0},
9862         {0x3D, 0x88, 0x88, 1, 1},
9863         {0x3E, 0, 0, 0, 0},
9864         {0x3F, 0x44, 0x44, 0, 0},
9865         {0x40, 0x7, 0x7, 1, 1},
9866         {0x41, 0x6, 0x6, 0, 0},
9867         {0x42, 0x4, 0x4, 0, 0},
9868         {0x43, 0, 0, 0, 0},
9869         {0x44, 0x8, 0x8, 0, 0},
9870         {0x45, 0x55, 0x55, 1, 1},
9871         {0x46, 0, 0, 0, 0},
9872         {0x47, 0x11, 0x11, 0, 0},
9873         {0x48, 0, 0, 0, 0},
9874         {0x49, 0x44, 0x44, 0, 0},
9875         {0x4A, 0x7, 0x7, 0, 0},
9876         {0x4B, 0x6, 0x6, 0, 0},
9877         {0x4C, 0x4, 0x4, 0, 0},
9878         {0x4D, 0, 0, 0, 0},
9879         {0x4E, 0, 0, 0, 0},
9880         {0x4F, 0x26, 0x26, 1, 1},
9881         {0x50, 0x26, 0x26, 1, 1},
9882         {0x51, 0xf, 0xf, 1, 1},
9883         {0x52, 0xf, 0xf, 1, 1},
9884         {0x53, 0x44, 0x44, 0, 0},
9885         {0x54, 0, 0, 0, 0},
9886         {0x55, 0, 0, 0, 0},
9887         {0x56, 0x8, 0x8, 0, 0},
9888         {0x57, 0x8, 0x8, 0, 0},
9889         {0x58, 0x7, 0x7, 0, 0},
9890         {0x59, 0x22, 0x22, 0, 0},
9891         {0x5A, 0x22, 0x22, 0, 0},
9892         {0x5B, 0x2, 0x2, 0, 0},
9893         {0x5C, 0x4, 0x4, 1, 1},
9894         {0x5D, 0x7, 0x7, 0, 0},
9895         {0x5E, 0x55, 0x55, 0, 0},
9896         {0x5F, 0x23, 0x23, 0, 0},
9897         {0x60, 0x41, 0x41, 0, 0},
9898         {0x61, 0x1, 0x1, 0, 0},
9899         {0x62, 0xa, 0xa, 0, 0},
9900         {0x63, 0, 0, 0, 0},
9901         {0x64, 0, 0, 0, 0},
9902         {0x65, 0, 0, 0, 0},
9903         {0x66, 0, 0, 0, 0},
9904         {0x67, 0, 0, 0, 0},
9905         {0x68, 0, 0, 0, 0},
9906         {0x69, 0, 0, 0, 0},
9907         {0x6A, 0, 0, 0, 0},
9908         {0x6B, 0xc, 0xc, 0, 0},
9909         {0x6C, 0, 0, 0, 0},
9910         {0x6D, 0, 0, 0, 0},
9911         {0x6E, 0, 0, 0, 0},
9912         {0x6F, 0, 0, 0, 0},
9913         {0x70, 0, 0, 0, 0},
9914         {0x71, 0, 0, 0, 0},
9915         {0x72, 0x22, 0x22, 0, 0},
9916         {0x73, 0x22, 0x22, 0, 0},
9917         {0x74, 0, 0, 1, 1},
9918         {0x75, 0xa, 0xa, 0, 0},
9919         {0x76, 0x1, 0x1, 0, 0},
9920         {0x77, 0x22, 0x22, 0, 0},
9921         {0x78, 0x30, 0x30, 0, 0},
9922         {0x79, 0, 0, 0, 0},
9923         {0x7A, 0, 0, 0, 0},
9924         {0x7B, 0, 0, 0, 0},
9925         {0x7C, 0, 0, 0, 0},
9926         {0x7D, 0x5, 0x5, 1, 1},
9927         {0x7E, 0, 0, 0, 0},
9928         {0x7F, 0, 0, 0, 0},
9929         {0x80, 0, 0, 0, 0},
9930         {0x81, 0, 0, 0, 0},
9931         {0x82, 0, 0, 0, 0},
9932         {0x83, 0, 0, 0, 0},
9933         {0x84, 0, 0, 0, 0},
9934         {0x85, 0, 0, 0, 0},
9935         {0x86, 0, 0, 0, 0},
9936         {0x87, 0, 0, 0, 0},
9937         {0x88, 0, 0, 0, 0},
9938         {0x89, 0, 0, 0, 0},
9939         {0x8A, 0, 0, 0, 0},
9940         {0x8B, 0, 0, 0, 0},
9941         {0x8C, 0, 0, 0, 0},
9942         {0x8D, 0, 0, 0, 0},
9943         {0x8E, 0, 0, 0, 0},
9944         {0x8F, 0, 0, 0, 0},
9945         {0x90, 0, 0, 0, 0},
9946         {0x91, 0, 0, 0, 0},
9947         {0x92, 0, 0, 0, 0},
9948         {0x93, 0, 0, 0, 0},
9949         {0x94, 0, 0, 0, 0},
9950         {0xFFFF, 0, 0, 0, 0}
9951 };
9952
9953 static struct radio_regs regs_SYN_2056_rev7[] = {
9954         {0x02, 0, 0, 0, 0},
9955         {0x03, 0, 0, 0, 0},
9956         {0x04, 0, 0, 0, 0},
9957         {0x05, 0, 0, 0, 0},
9958         {0x06, 0, 0, 0, 0},
9959         {0x07, 0, 0, 0, 0},
9960         {0x08, 0, 0, 0, 0},
9961         {0x09, 0x1, 0x1, 0, 0},
9962         {0x0A, 0, 0, 0, 0},
9963         {0x0B, 0, 0, 0, 0},
9964         {0x0C, 0, 0, 0, 0},
9965         {0x0D, 0, 0, 0, 0},
9966         {0x0E, 0, 0, 0, 0},
9967         {0x0F, 0, 0, 0, 0},
9968         {0x10, 0, 0, 0, 0},
9969         {0x11, 0, 0, 0, 0},
9970         {0x12, 0, 0, 0, 0},
9971         {0x13, 0, 0, 0, 0},
9972         {0x14, 0, 0, 0, 0},
9973         {0x15, 0, 0, 0, 0},
9974         {0x16, 0, 0, 0, 0},
9975         {0x17, 0, 0, 0, 0},
9976         {0x18, 0, 0, 0, 0},
9977         {0x19, 0, 0, 0, 0},
9978         {0x1A, 0, 0, 0, 0},
9979         {0x1B, 0, 0, 0, 0},
9980         {0x1C, 0, 0, 0, 0},
9981         {0x1D, 0, 0, 0, 0},
9982         {0x1E, 0, 0, 0, 0},
9983         {0x1F, 0, 0, 0, 0},
9984         {0x20, 0, 0, 0, 0},
9985         {0x21, 0, 0, 0, 0},
9986         {0x22, 0x60, 0x60, 0, 0},
9987         {0x23, 0x6, 0x6, 0, 0},
9988         {0x24, 0xc, 0xc, 0, 0},
9989         {0x25, 0, 0, 0, 0},
9990         {0x26, 0, 0, 0, 0},
9991         {0x27, 0, 0, 0, 0},
9992         {0x28, 0x1, 0x1, 0, 0},
9993         {0x29, 0, 0, 0, 0},
9994         {0x2A, 0, 0, 0, 0},
9995         {0x2B, 0, 0, 0, 0},
9996         {0x2C, 0, 0, 0, 0},
9997         {0x2D, 0, 0, 0, 0},
9998         {0x2E, 0, 0, 0, 0},
9999         {0x2F, 0x1f, 0x1f, 0, 0},
10000         {0x30, 0x15, 0x15, 0, 0},
10001         {0x31, 0xf, 0xf, 0, 0},
10002         {0x32, 0, 0, 0, 0},
10003         {0x33, 0, 0, 0, 0},
10004         {0x34, 0, 0, 0, 0},
10005         {0x35, 0, 0, 0, 0},
10006         {0x36, 0, 0, 0, 0},
10007         {0x37, 0, 0, 0, 0},
10008         {0x38, 0, 0, 0, 0},
10009         {0x39, 0, 0, 0, 0},
10010         {0x3A, 0, 0, 0, 0},
10011         {0x3B, 0, 0, 0, 0},
10012         {0x3C, 0x13, 0x13, 0, 0},
10013         {0x3D, 0xf, 0xf, 0, 0},
10014         {0x3E, 0x18, 0x18, 0, 0},
10015         {0x3F, 0, 0, 0, 0},
10016         {0x40, 0, 0, 0, 0},
10017         {0x41, 0x20, 0x20, 0, 0},
10018         {0x42, 0x20, 0x20, 0, 0},
10019         {0x43, 0, 0, 0, 0},
10020         {0x44, 0x77, 0x77, 0, 0},
10021         {0x45, 0x7, 0x7, 0, 0},
10022         {0x46, 0x1, 0x1, 0, 0},
10023         {0x47, 0x4, 0x4, 0, 0},
10024         {0x48, 0xf, 0xf, 0, 0},
10025         {0x49, 0x30, 0x30, 0, 0},
10026         {0x4A, 0x32, 0x32, 0, 0},
10027         {0x4B, 0xd, 0xd, 0, 0},
10028         {0x4C, 0xd, 0xd, 0, 0},
10029         {0x4D, 0x4, 0x4, 0, 0},
10030         {0x4E, 0x6, 0x6, 0, 0},
10031         {0x4F, 0x1, 0x1, 0, 0},
10032         {0x50, 0x1c, 0x1c, 0, 0},
10033         {0x51, 0x2, 0x2, 0, 0},
10034         {0x52, 0x2, 0x2, 0, 0},
10035         {0x53, 0xf7, 0xf7, 1, 1},
10036         {0x54, 0xb4, 0xb4, 0, 0},
10037         {0x55, 0xd2, 0xd2, 0, 0},
10038         {0x56, 0, 0, 0, 0},
10039         {0x57, 0, 0, 0, 0},
10040         {0x58, 0x4, 0x4, 0, 0},
10041         {0x59, 0x96, 0x96, 0, 0},
10042         {0x5A, 0x3e, 0x3e, 0, 0},
10043         {0x5B, 0x3e, 0x3e, 0, 0},
10044         {0x5C, 0x13, 0x13, 0, 0},
10045         {0x5D, 0x2, 0x2, 0, 0},
10046         {0x5E, 0, 0, 0, 0},
10047         {0x5F, 0x7, 0x7, 0, 0},
10048         {0x60, 0x7, 0x7, 1, 1},
10049         {0x61, 0x8, 0x8, 0, 0},
10050         {0x62, 0x3, 0x3, 0, 0},
10051         {0x63, 0, 0, 0, 0},
10052         {0x64, 0, 0, 0, 0},
10053         {0x65, 0, 0, 0, 0},
10054         {0x66, 0, 0, 0, 0},
10055         {0x67, 0, 0, 0, 0},
10056         {0x68, 0x40, 0x40, 0, 0},
10057         {0x69, 0, 0, 0, 0},
10058         {0x6A, 0, 0, 0, 0},
10059         {0x6B, 0, 0, 0, 0},
10060         {0x6C, 0, 0, 0, 0},
10061         {0x6D, 0x1, 0x1, 0, 0},
10062         {0x6E, 0, 0, 0, 0},
10063         {0x6F, 0, 0, 0, 0},
10064         {0x70, 0x60, 0x60, 0, 0},
10065         {0x71, 0x66, 0x66, 0, 0},
10066         {0x72, 0xc, 0xc, 0, 0},
10067         {0x73, 0x66, 0x66, 0, 0},
10068         {0x74, 0x8f, 0x8f, 1, 1},
10069         {0x75, 0, 0, 0, 0},
10070         {0x76, 0xcc, 0xcc, 0, 0},
10071         {0x77, 0x1, 0x1, 0, 0},
10072         {0x78, 0x66, 0x66, 0, 0},
10073         {0x79, 0x66, 0x66, 0, 0},
10074         {0x7A, 0, 0, 0, 0},
10075         {0x7B, 0, 0, 0, 0},
10076         {0x7C, 0, 0, 0, 0},
10077         {0x7D, 0, 0, 0, 0},
10078         {0x7E, 0, 0, 0, 0},
10079         {0x7F, 0, 0, 0, 0},
10080         {0x80, 0, 0, 0, 0},
10081         {0x81, 0, 0, 0, 0},
10082         {0x82, 0, 0, 0, 0},
10083         {0x83, 0, 0, 0, 0},
10084         {0x84, 0, 0, 0, 0},
10085         {0x85, 0xff, 0xff, 0, 0},
10086         {0x86, 0, 0, 0, 0},
10087         {0x87, 0, 0, 0, 0},
10088         {0x88, 0, 0, 0, 0},
10089         {0x89, 0, 0, 0, 0},
10090         {0x8A, 0, 0, 0, 0},
10091         {0x8B, 0, 0, 0, 0},
10092         {0x8C, 0, 0, 0, 0},
10093         {0x8D, 0, 0, 0, 0},
10094         {0x8E, 0, 0, 0, 0},
10095         {0x8F, 0, 0, 0, 0},
10096         {0x90, 0, 0, 0, 0},
10097         {0x91, 0, 0, 0, 0},
10098         {0x92, 0, 0, 0, 0},
10099         {0x93, 0, 0, 0, 0},
10100         {0x94, 0, 0, 0, 0},
10101         {0x95, 0, 0, 0, 0},
10102         {0x96, 0, 0, 0, 0},
10103         {0x97, 0, 0, 0, 0},
10104         {0x98, 0, 0, 0, 0},
10105         {0x99, 0, 0, 0, 0},
10106         {0x9A, 0, 0, 0, 0},
10107         {0x9B, 0, 0, 0, 0},
10108         {0x9C, 0, 0, 0, 0},
10109         {0x9D, 0, 0, 0, 0},
10110         {0x9E, 0, 0, 0, 0},
10111         {0x9F, 0x6, 0x6, 0, 0},
10112         {0xA0, 0x66, 0x66, 0, 0},
10113         {0xA1, 0x66, 0x66, 0, 0},
10114         {0xA2, 0x66, 0x66, 0, 0},
10115         {0xA3, 0x66, 0x66, 0, 0},
10116         {0xA4, 0x66, 0x66, 0, 0},
10117         {0xA5, 0x66, 0x66, 0, 0},
10118         {0xA6, 0x66, 0x66, 0, 0},
10119         {0xA7, 0x66, 0x66, 0, 0},
10120         {0xA8, 0x66, 0x66, 0, 0},
10121         {0xA9, 0x66, 0x66, 0, 0},
10122         {0xAA, 0x66, 0x66, 0, 0},
10123         {0xAB, 0x66, 0x66, 0, 0},
10124         {0xAC, 0x66, 0x66, 0, 0},
10125         {0xAD, 0x66, 0x66, 0, 0},
10126         {0xAE, 0x66, 0x66, 0, 0},
10127         {0xAF, 0x66, 0x66, 0, 0},
10128         {0xB0, 0x66, 0x66, 0, 0},
10129         {0xB1, 0x66, 0x66, 0, 0},
10130         {0xB2, 0x66, 0x66, 0, 0},
10131         {0xB3, 0xa, 0xa, 0, 0},
10132         {0xB4, 0, 0, 0, 0},
10133         {0xB5, 0, 0, 0, 0},
10134         {0xB6, 0, 0, 0, 0},
10135         {0xFFFF, 0, 0, 0, 0},
10136 };
10137
10138 static struct radio_regs regs_TX_2056_rev7[] = {
10139         {0x02, 0, 0, 0, 0},
10140         {0x03, 0, 0, 0, 0},
10141         {0x04, 0, 0, 0, 0},
10142         {0x05, 0, 0, 0, 0},
10143         {0x06, 0, 0, 0, 0},
10144         {0x07, 0, 0, 0, 0},
10145         {0x08, 0, 0, 0, 0},
10146         {0x09, 0, 0, 0, 0},
10147         {0x0A, 0, 0, 0, 0},
10148         {0x0B, 0, 0, 0, 0},
10149         {0x0C, 0, 0, 0, 0},
10150         {0x0D, 0, 0, 0, 0},
10151         {0x0E, 0, 0, 0, 0},
10152         {0x0F, 0, 0, 0, 0},
10153         {0x10, 0, 0, 0, 0},
10154         {0x11, 0, 0, 0, 0},
10155         {0x12, 0, 0, 0, 0},
10156         {0x13, 0, 0, 0, 0},
10157         {0x14, 0, 0, 0, 0},
10158         {0x15, 0, 0, 0, 0},
10159         {0x16, 0, 0, 0, 0},
10160         {0x17, 0, 0, 0, 0},
10161         {0x18, 0, 0, 0, 0},
10162         {0x19, 0, 0, 0, 0},
10163         {0x1A, 0, 0, 0, 0},
10164         {0x1B, 0, 0, 0, 0},
10165         {0x1C, 0, 0, 0, 0},
10166         {0x1D, 0, 0, 0, 0},
10167         {0x1E, 0, 0, 0, 0},
10168         {0x1F, 0, 0, 0, 0},
10169         {0x20, 0, 0, 0, 0},
10170         {0x21, 0x88, 0x88, 0, 0},
10171         {0x22, 0x88, 0x88, 0, 0},
10172         {0x23, 0x88, 0x88, 0, 0},
10173         {0x24, 0x88, 0x88, 0, 0},
10174         {0x25, 0xc, 0xc, 0, 0},
10175         {0x26, 0, 0, 0, 0},
10176         {0x27, 0x3, 0x3, 0, 0},
10177         {0x28, 0, 0, 0, 0},
10178         {0x29, 0x3, 0x3, 0, 0},
10179         {0x2A, 0x37, 0x37, 0, 0},
10180         {0x2B, 0x3, 0x3, 0, 0},
10181         {0x2C, 0, 0, 0, 0},
10182         {0x2D, 0, 0, 0, 0},
10183         {0x2E, 0x1, 0x1, 0, 0},
10184         {0x2F, 0x1, 0x1, 0, 0},
10185         {0x30, 0, 0, 0, 0},
10186         {0x31, 0, 0, 0, 0},
10187         {0x32, 0, 0, 0, 0},
10188         {0x33, 0x11, 0x11, 0, 0},
10189         {0x34, 0xee, 0xee, 1, 1},
10190         {0x35, 0, 0, 0, 0},
10191         {0x36, 0, 0, 0, 0},
10192         {0x37, 0x3, 0x3, 0, 0},
10193         {0x38, 0x50, 0x50, 1, 1},
10194         {0x39, 0, 0, 0, 0},
10195         {0x3A, 0x50, 0x50, 1, 1},
10196         {0x3B, 0, 0, 0, 0},
10197         {0x3C, 0x6e, 0x6e, 0, 0},
10198         {0x3D, 0xf0, 0xf0, 1, 1},
10199         {0x3E, 0, 0, 0, 0},
10200         {0x3F, 0, 0, 0, 0},
10201         {0x40, 0, 0, 0, 0},
10202         {0x41, 0x3, 0x3, 0, 0},
10203         {0x42, 0x3, 0x3, 0, 0},
10204         {0x43, 0, 0, 0, 0},
10205         {0x44, 0x1e, 0x1e, 0, 0},
10206         {0x45, 0, 0, 0, 0},
10207         {0x46, 0x6e, 0x6e, 0, 0},
10208         {0x47, 0xf0, 0xf0, 1, 1},
10209         {0x48, 0, 0, 0, 0},
10210         {0x49, 0x2, 0x2, 0, 0},
10211         {0x4A, 0xff, 0xff, 1, 1},
10212         {0x4B, 0xc, 0xc, 0, 0},
10213         {0x4C, 0, 0, 0, 0},
10214         {0x4D, 0x38, 0x38, 0, 0},
10215         {0x4E, 0x70, 0x70, 1, 1},
10216         {0x4F, 0x2, 0x2, 0, 0},
10217         {0x50, 0x88, 0x88, 0, 0},
10218         {0x51, 0xc, 0xc, 0, 0},
10219         {0x52, 0, 0, 0, 0},
10220         {0x53, 0x8, 0x8, 0, 0},
10221         {0x54, 0x70, 0x70, 1, 1},
10222         {0x55, 0x2, 0x2, 0, 0},
10223         {0x56, 0xff, 0xff, 1, 1},
10224         {0x57, 0, 0, 0, 0},
10225         {0x58, 0x83, 0x83, 0, 0},
10226         {0x59, 0x77, 0x77, 1, 1},
10227         {0x5A, 0, 0, 0, 0},
10228         {0x5B, 0x2, 0x2, 0, 0},
10229         {0x5C, 0x88, 0x88, 0, 0},
10230         {0x5D, 0, 0, 0, 0},
10231         {0x5E, 0x8, 0x8, 0, 0},
10232         {0x5F, 0x77, 0x77, 1, 1},
10233         {0x60, 0x1, 0x1, 0, 0},
10234         {0x61, 0, 0, 0, 0},
10235         {0x62, 0x7, 0x7, 0, 0},
10236         {0x63, 0, 0, 0, 0},
10237         {0x64, 0x7, 0x7, 0, 0},
10238         {0x65, 0, 0, 0, 0},
10239         {0x66, 0, 0, 0, 0},
10240         {0x67, 0, 0, 1, 1},
10241         {0x68, 0, 0, 0, 0},
10242         {0x69, 0xa, 0xa, 0, 0},
10243         {0x6A, 0, 0, 0, 0},
10244         {0x6B, 0, 0, 0, 0},
10245         {0x6C, 0, 0, 0, 0},
10246         {0x6D, 0, 0, 0, 0},
10247         {0x6E, 0, 0, 0, 0},
10248         {0x6F, 0, 0, 0, 0},
10249         {0x70, 0, 0, 0, 0},
10250         {0x71, 0x2, 0x2, 0, 0},
10251         {0x72, 0, 0, 0, 0},
10252         {0x73, 0, 0, 0, 0},
10253         {0x74, 0xe, 0xe, 0, 0},
10254         {0x75, 0xe, 0xe, 0, 0},
10255         {0x76, 0xe, 0xe, 0, 0},
10256         {0x77, 0x13, 0x13, 0, 0},
10257         {0x78, 0x13, 0x13, 0, 0},
10258         {0x79, 0x1b, 0x1b, 0, 0},
10259         {0x7A, 0x1b, 0x1b, 0, 0},
10260         {0x7B, 0x55, 0x55, 0, 0},
10261         {0x7C, 0x5b, 0x5b, 0, 0},
10262         {0x7D, 0x30, 0x30, 1, 1},
10263         {0x7E, 0, 0, 0, 0},
10264         {0x7F, 0, 0, 0, 0},
10265         {0x80, 0, 0, 0, 0},
10266         {0x81, 0, 0, 0, 0},
10267         {0x82, 0, 0, 0, 0},
10268         {0x83, 0, 0, 0, 0},
10269         {0x84, 0, 0, 0, 0},
10270         {0x85, 0, 0, 0, 0},
10271         {0x86, 0, 0, 0, 0},
10272         {0x87, 0, 0, 0, 0},
10273         {0x88, 0, 0, 0, 0},
10274         {0x89, 0, 0, 0, 0},
10275         {0x8A, 0, 0, 0, 0},
10276         {0x8B, 0, 0, 0, 0},
10277         {0x8C, 0, 0, 0, 0},
10278         {0x8D, 0, 0, 0, 0},
10279         {0x8E, 0, 0, 0, 0},
10280         {0x8F, 0, 0, 0, 0},
10281         {0x90, 0, 0, 0, 0},
10282         {0x91, 0, 0, 0, 0},
10283         {0x92, 0, 0, 0, 0},
10284         {0x93, 0x70, 0x70, 0, 0},
10285         {0x94, 0x70, 0x70, 0, 0},
10286         {0x95, 0x71, 0x71, 1, 1},
10287         {0x96, 0x71, 0x71, 1, 1},
10288         {0x97, 0x72, 0x72, 1, 1},
10289         {0x98, 0x73, 0x73, 1, 1},
10290         {0x99, 0x74, 0x74, 1, 1},
10291         {0x9A, 0x75, 0x75, 1, 1},
10292         {0xFFFF, 0, 0, 0, 0},
10293 };
10294
10295 static struct radio_regs regs_RX_2056_rev7[] = {
10296         {0x02, 0, 0, 0, 0},
10297         {0x03, 0, 0, 0, 0},
10298         {0x04, 0, 0, 0, 0},
10299         {0x05, 0, 0, 0, 0},
10300         {0x06, 0, 0, 0, 0},
10301         {0x07, 0, 0, 0, 0},
10302         {0x08, 0, 0, 0, 0},
10303         {0x09, 0, 0, 0, 0},
10304         {0x0A, 0, 0, 0, 0},
10305         {0x0B, 0, 0, 0, 0},
10306         {0x0C, 0, 0, 0, 0},
10307         {0x0D, 0, 0, 0, 0},
10308         {0x0E, 0, 0, 0, 0},
10309         {0x0F, 0, 0, 0, 0},
10310         {0x10, 0, 0, 0, 0},
10311         {0x11, 0, 0, 0, 0},
10312         {0x12, 0, 0, 0, 0},
10313         {0x13, 0, 0, 0, 0},
10314         {0x14, 0, 0, 0, 0},
10315         {0x15, 0, 0, 0, 0},
10316         {0x16, 0, 0, 0, 0},
10317         {0x17, 0, 0, 0, 0},
10318         {0x18, 0, 0, 0, 0},
10319         {0x19, 0, 0, 0, 0},
10320         {0x1A, 0, 0, 0, 0},
10321         {0x1B, 0, 0, 0, 0},
10322         {0x1C, 0, 0, 0, 0},
10323         {0x1D, 0, 0, 0, 0},
10324         {0x1E, 0, 0, 0, 0},
10325         {0x1F, 0, 0, 0, 0},
10326         {0x20, 0x3, 0x3, 0, 0},
10327         {0x21, 0, 0, 0, 0},
10328         {0x22, 0, 0, 0, 0},
10329         {0x23, 0x90, 0x90, 0, 0},
10330         {0x24, 0x55, 0x55, 0, 0},
10331         {0x25, 0x15, 0x15, 0, 0},
10332         {0x26, 0x5, 0x5, 0, 0},
10333         {0x27, 0x15, 0x15, 0, 0},
10334         {0x28, 0x5, 0x5, 0, 0},
10335         {0x29, 0x20, 0x20, 0, 0},
10336         {0x2A, 0x11, 0x11, 0, 0},
10337         {0x2B, 0x90, 0x90, 0, 0},
10338         {0x2C, 0, 0, 0, 0},
10339         {0x2D, 0x88, 0x88, 0, 0},
10340         {0x2E, 0x32, 0x32, 0, 0},
10341         {0x2F, 0x77, 0x77, 0, 0},
10342         {0x30, 0x17, 0x17, 1, 1},
10343         {0x31, 0xff, 0xff, 1, 1},
10344         {0x32, 0x20, 0x20, 0, 0},
10345         {0x33, 0, 0, 0, 0},
10346         {0x34, 0x88, 0x88, 0, 0},
10347         {0x35, 0x32, 0x32, 0, 0},
10348         {0x36, 0x77, 0x77, 0, 0},
10349         {0x37, 0x17, 0x17, 1, 1},
10350         {0x38, 0xf0, 0xf0, 1, 1},
10351         {0x39, 0x20, 0x20, 0, 0},
10352         {0x3A, 0x8, 0x8, 0, 0},
10353         {0x3B, 0x55, 0x55, 1, 1},
10354         {0x3C, 0, 0, 0, 0},
10355         {0x3D, 0x88, 0x88, 1, 1},
10356         {0x3E, 0, 0, 0, 0},
10357         {0x3F, 0, 0, 1, 1},
10358         {0x40, 0x7, 0x7, 1, 1},
10359         {0x41, 0x6, 0x6, 0, 0},
10360         {0x42, 0x4, 0x4, 0, 0},
10361         {0x43, 0, 0, 0, 0},
10362         {0x44, 0x8, 0x8, 0, 0},
10363         {0x45, 0x55, 0x55, 1, 1},
10364         {0x46, 0, 0, 0, 0},
10365         {0x47, 0x11, 0x11, 0, 0},
10366         {0x48, 0, 0, 0, 0},
10367         {0x49, 0, 0, 1, 1},
10368         {0x4A, 0x7, 0x7, 0, 0},
10369         {0x4B, 0x6, 0x6, 0, 0},
10370         {0x4C, 0x4, 0x4, 0, 0},
10371         {0x4D, 0, 0, 0, 0},
10372         {0x4E, 0, 0, 0, 0},
10373         {0x4F, 0x26, 0x26, 1, 1},
10374         {0x50, 0x26, 0x26, 1, 1},
10375         {0x51, 0xf, 0xf, 1, 1},
10376         {0x52, 0xf, 0xf, 1, 1},
10377         {0x53, 0x44, 0x44, 0, 0},
10378         {0x54, 0, 0, 0, 0},
10379         {0x55, 0, 0, 0, 0},
10380         {0x56, 0x8, 0x8, 0, 0},
10381         {0x57, 0x8, 0x8, 0, 0},
10382         {0x58, 0x7, 0x7, 0, 0},
10383         {0x59, 0x22, 0x22, 0, 0},
10384         {0x5A, 0x22, 0x22, 0, 0},
10385         {0x5B, 0x2, 0x2, 0, 0},
10386         {0x5C, 0x4, 0x4, 1, 1},
10387         {0x5D, 0x7, 0x7, 0, 0},
10388         {0x5E, 0x55, 0x55, 0, 0},
10389         {0x5F, 0x23, 0x23, 0, 0},
10390         {0x60, 0x41, 0x41, 0, 0},
10391         {0x61, 0x1, 0x1, 0, 0},
10392         {0x62, 0xa, 0xa, 0, 0},
10393         {0x63, 0, 0, 0, 0},
10394         {0x64, 0, 0, 0, 0},
10395         {0x65, 0, 0, 0, 0},
10396         {0x66, 0, 0, 0, 0},
10397         {0x67, 0, 0, 0, 0},
10398         {0x68, 0, 0, 0, 0},
10399         {0x69, 0, 0, 0, 0},
10400         {0x6A, 0, 0, 0, 0},
10401         {0x6B, 0xc, 0xc, 0, 0},
10402         {0x6C, 0, 0, 0, 0},
10403         {0x6D, 0, 0, 0, 0},
10404         {0x6E, 0, 0, 0, 0},
10405         {0x6F, 0, 0, 0, 0},
10406         {0x70, 0, 0, 0, 0},
10407         {0x71, 0, 0, 0, 0},
10408         {0x72, 0x22, 0x22, 0, 0},
10409         {0x73, 0x22, 0x22, 0, 0},
10410         {0x74, 0, 0, 1, 1},
10411         {0x75, 0xa, 0xa, 0, 0},
10412         {0x76, 0x1, 0x1, 0, 0},
10413         {0x77, 0x22, 0x22, 0, 0},
10414         {0x78, 0x30, 0x30, 0, 0},
10415         {0x79, 0, 0, 0, 0},
10416         {0x7A, 0, 0, 0, 0},
10417         {0x7B, 0, 0, 0, 0},
10418         {0x7C, 0, 0, 0, 0},
10419         {0x7D, 0, 0, 0, 0},
10420         {0x7E, 0, 0, 0, 0},
10421         {0x7F, 0, 0, 0, 0},
10422         {0x80, 0, 0, 0, 0},
10423         {0x81, 0, 0, 0, 0},
10424         {0x82, 0, 0, 0, 0},
10425         {0x83, 0, 0, 0, 0},
10426         {0x84, 0, 0, 0, 0},
10427         {0x85, 0, 0, 0, 0},
10428         {0x86, 0, 0, 0, 0},
10429         {0x87, 0, 0, 0, 0},
10430         {0x88, 0, 0, 0, 0},
10431         {0x89, 0, 0, 0, 0},
10432         {0x8A, 0, 0, 0, 0},
10433         {0x8B, 0, 0, 0, 0},
10434         {0x8C, 0, 0, 0, 0},
10435         {0x8D, 0, 0, 0, 0},
10436         {0x8E, 0, 0, 0, 0},
10437         {0x8F, 0, 0, 0, 0},
10438         {0x90, 0, 0, 0, 0},
10439         {0x91, 0, 0, 0, 0},
10440         {0x92, 0, 0, 0, 0},
10441         {0x93, 0, 0, 0, 0},
10442         {0x94, 0, 0, 0, 0},
10443         {0xFFFF, 0, 0, 0, 0},
10444 };
10445
10446 static struct radio_regs regs_SYN_2056_rev8[] = {
10447         {0x02, 0, 0, 0, 0},
10448         {0x03, 0, 0, 0, 0},
10449         {0x04, 0, 0, 0, 0},
10450         {0x05, 0, 0, 0, 0},
10451         {0x06, 0, 0, 0, 0},
10452         {0x07, 0, 0, 0, 0},
10453         {0x08, 0, 0, 0, 0},
10454         {0x09, 0x1, 0x1, 0, 0},
10455         {0x0A, 0, 0, 0, 0},
10456         {0x0B, 0, 0, 0, 0},
10457         {0x0C, 0, 0, 0, 0},
10458         {0x0D, 0, 0, 0, 0},
10459         {0x0E, 0, 0, 0, 0},
10460         {0x0F, 0, 0, 0, 0},
10461         {0x10, 0, 0, 0, 0},
10462         {0x11, 0, 0, 0, 0},
10463         {0x12, 0, 0, 0, 0},
10464         {0x13, 0, 0, 0, 0},
10465         {0x14, 0, 0, 0, 0},
10466         {0x15, 0, 0, 0, 0},
10467         {0x16, 0, 0, 0, 0},
10468         {0x17, 0, 0, 0, 0},
10469         {0x18, 0, 0, 0, 0},
10470         {0x19, 0, 0, 0, 0},
10471         {0x1A, 0, 0, 0, 0},
10472         {0x1B, 0, 0, 0, 0},
10473         {0x1C, 0, 0, 0, 0},
10474         {0x1D, 0, 0, 0, 0},
10475         {0x1E, 0, 0, 0, 0},
10476         {0x1F, 0, 0, 0, 0},
10477         {0x20, 0, 0, 0, 0},
10478         {0x21, 0, 0, 0, 0},
10479         {0x22, 0x60, 0x60, 0, 0},
10480         {0x23, 0x6, 0x6, 0, 0},
10481         {0x24, 0xc, 0xc, 0, 0},
10482         {0x25, 0, 0, 0, 0},
10483         {0x26, 0, 0, 0, 0},
10484         {0x27, 0, 0, 0, 0},
10485         {0x28, 0x1, 0x1, 0, 0},
10486         {0x29, 0, 0, 0, 0},
10487         {0x2A, 0, 0, 0, 0},
10488         {0x2B, 0, 0, 0, 0},
10489         {0x2C, 0, 0, 0, 0},
10490         {0x2D, 0, 0, 0, 0},
10491         {0x2E, 0, 0, 0, 0},
10492         {0x2F, 0x1f, 0x1f, 0, 0},
10493         {0x30, 0x15, 0x15, 0, 0},
10494         {0x31, 0xf, 0xf, 0, 0},
10495         {0x32, 0, 0, 0, 0},
10496         {0x33, 0, 0, 0, 0},
10497         {0x34, 0, 0, 0, 0},
10498         {0x35, 0, 0, 0, 0},
10499         {0x36, 0, 0, 0, 0},
10500         {0x37, 0, 0, 0, 0},
10501         {0x38, 0, 0, 0, 0},
10502         {0x39, 0, 0, 0, 0},
10503         {0x3A, 0, 0, 0, 0},
10504         {0x3B, 0, 0, 0, 0},
10505         {0x3C, 0x13, 0x13, 0, 0},
10506         {0x3D, 0xf, 0xf, 0, 0},
10507         {0x3E, 0x18, 0x18, 0, 0},
10508         {0x3F, 0, 0, 0, 0},
10509         {0x40, 0, 0, 0, 0},
10510         {0x41, 0x20, 0x20, 0, 0},
10511         {0x42, 0x20, 0x20, 0, 0},
10512         {0x43, 0, 0, 0, 0},
10513         {0x44, 0x77, 0x77, 0, 0},
10514         {0x45, 0x7, 0x7, 0, 0},
10515         {0x46, 0x1, 0x1, 0, 0},
10516         {0x47, 0x4, 0x4, 0, 0},
10517         {0x48, 0xf, 0xf, 0, 0},
10518         {0x49, 0x30, 0x30, 0, 0},
10519         {0x4A, 0x32, 0x32, 0, 0},
10520         {0x4B, 0xd, 0xd, 0, 0},
10521         {0x4C, 0xd, 0xd, 0, 0},
10522         {0x4D, 0x4, 0x4, 0, 0},
10523         {0x4E, 0x6, 0x6, 0, 0},
10524         {0x4F, 0x1, 0x1, 0, 0},
10525         {0x50, 0x1c, 0x1c, 0, 0},
10526         {0x51, 0x2, 0x2, 0, 0},
10527         {0x52, 0x2, 0x2, 0, 0},
10528         {0x53, 0xf7, 0xf7, 1, 1},
10529         {0x54, 0xb4, 0xb4, 0, 0},
10530         {0x55, 0xd2, 0xd2, 0, 0},
10531         {0x56, 0, 0, 0, 0},
10532         {0x57, 0, 0, 0, 0},
10533         {0x58, 0x4, 0x4, 0, 0},
10534         {0x59, 0x96, 0x96, 0, 0},
10535         {0x5A, 0x3e, 0x3e, 0, 0},
10536         {0x5B, 0x3e, 0x3e, 0, 0},
10537         {0x5C, 0x13, 0x13, 0, 0},
10538         {0x5D, 0x2, 0x2, 0, 0},
10539         {0x5E, 0, 0, 0, 0},
10540         {0x5F, 0x7, 0x7, 0, 0},
10541         {0x60, 0x7, 0x7, 1, 1},
10542         {0x61, 0x8, 0x8, 0, 0},
10543         {0x62, 0x3, 0x3, 0, 0},
10544         {0x63, 0, 0, 0, 0},
10545         {0x64, 0, 0, 0, 0},
10546         {0x65, 0, 0, 0, 0},
10547         {0x66, 0, 0, 0, 0},
10548         {0x67, 0, 0, 0, 0},
10549         {0x68, 0x40, 0x40, 0, 0},
10550         {0x69, 0, 0, 0, 0},
10551         {0x6A, 0, 0, 0, 0},
10552         {0x6B, 0, 0, 0, 0},
10553         {0x6C, 0, 0, 0, 0},
10554         {0x6D, 0x1, 0x1, 0, 0},
10555         {0x6E, 0, 0, 0, 0},
10556         {0x6F, 0, 0, 0, 0},
10557         {0x70, 0x60, 0x60, 0, 0},
10558         {0x71, 0x66, 0x66, 0, 0},
10559         {0x72, 0xc, 0xc, 0, 0},
10560         {0x73, 0x66, 0x66, 0, 0},
10561         {0x74, 0x8f, 0x8f, 1, 1},
10562         {0x75, 0, 0, 0, 0},
10563         {0x76, 0xcc, 0xcc, 0, 0},
10564         {0x77, 0x1, 0x1, 0, 0},
10565         {0x78, 0x66, 0x66, 0, 0},
10566         {0x79, 0x66, 0x66, 0, 0},
10567         {0x7A, 0, 0, 0, 0},
10568         {0x7B, 0, 0, 0, 0},
10569         {0x7C, 0, 0, 0, 0},
10570         {0x7D, 0, 0, 0, 0},
10571         {0x7E, 0, 0, 0, 0},
10572         {0x7F, 0, 0, 0, 0},
10573         {0x80, 0, 0, 0, 0},
10574         {0x81, 0, 0, 0, 0},
10575         {0x82, 0, 0, 0, 0},
10576         {0x83, 0, 0, 0, 0},
10577         {0x84, 0, 0, 0, 0},
10578         {0x85, 0xff, 0xff, 0, 0},
10579         {0x86, 0, 0, 0, 0},
10580         {0x87, 0, 0, 0, 0},
10581         {0x88, 0, 0, 0, 0},
10582         {0x89, 0, 0, 0, 0},
10583         {0x8A, 0, 0, 0, 0},
10584         {0x8B, 0, 0, 0, 0},
10585         {0x8C, 0, 0, 0, 0},
10586         {0x8D, 0, 0, 0, 0},
10587         {0x8E, 0, 0, 0, 0},
10588         {0x8F, 0, 0, 0, 0},
10589         {0x90, 0, 0, 0, 0},
10590         {0x91, 0, 0, 0, 0},
10591         {0x92, 0, 0, 0, 0},
10592         {0x93, 0, 0, 0, 0},
10593         {0x94, 0, 0, 0, 0},
10594         {0x95, 0, 0, 0, 0},
10595         {0x96, 0, 0, 0, 0},
10596         {0x97, 0, 0, 0, 0},
10597         {0x98, 0, 0, 0, 0},
10598         {0x99, 0, 0, 0, 0},
10599         {0x9A, 0, 0, 0, 0},
10600         {0x9B, 0, 0, 0, 0},
10601         {0x9C, 0, 0, 0, 0},
10602         {0x9D, 0, 0, 0, 0},
10603         {0x9E, 0, 0, 0, 0},
10604         {0x9F, 0x6, 0x6, 0, 0},
10605         {0xA0, 0x66, 0x66, 0, 0},
10606         {0xA1, 0x66, 0x66, 0, 0},
10607         {0xA2, 0x66, 0x66, 0, 0},
10608         {0xA3, 0x66, 0x66, 0, 0},
10609         {0xA4, 0x66, 0x66, 0, 0},
10610         {0xA5, 0x66, 0x66, 0, 0},
10611         {0xA6, 0x66, 0x66, 0, 0},
10612         {0xA7, 0x66, 0x66, 0, 0},
10613         {0xA8, 0x66, 0x66, 0, 0},
10614         {0xA9, 0x66, 0x66, 0, 0},
10615         {0xAA, 0x66, 0x66, 0, 0},
10616         {0xAB, 0x66, 0x66, 0, 0},
10617         {0xAC, 0x66, 0x66, 0, 0},
10618         {0xAD, 0x66, 0x66, 0, 0},
10619         {0xAE, 0x66, 0x66, 0, 0},
10620         {0xAF, 0x66, 0x66, 0, 0},
10621         {0xB0, 0x66, 0x66, 0, 0},
10622         {0xB1, 0x66, 0x66, 0, 0},
10623         {0xB2, 0x66, 0x66, 0, 0},
10624         {0xB3, 0xa, 0xa, 0, 0},
10625         {0xB4, 0, 0, 0, 0},
10626         {0xB5, 0, 0, 0, 0},
10627         {0xB6, 0, 0, 0, 0},
10628         {0xFFFF, 0, 0, 0, 0},
10629 };
10630
10631 static struct radio_regs regs_TX_2056_rev8[] = {
10632         {0x02, 0, 0, 0, 0},
10633         {0x03, 0, 0, 0, 0},
10634         {0x04, 0, 0, 0, 0},
10635         {0x05, 0, 0, 0, 0},
10636         {0x06, 0, 0, 0, 0},
10637         {0x07, 0, 0, 0, 0},
10638         {0x08, 0, 0, 0, 0},
10639         {0x09, 0, 0, 0, 0},
10640         {0x0A, 0, 0, 0, 0},
10641         {0x0B, 0, 0, 0, 0},
10642         {0x0C, 0, 0, 0, 0},
10643         {0x0D, 0, 0, 0, 0},
10644         {0x0E, 0, 0, 0, 0},
10645         {0x0F, 0, 0, 0, 0},
10646         {0x10, 0, 0, 0, 0},
10647         {0x11, 0, 0, 0, 0},
10648         {0x12, 0, 0, 0, 0},
10649         {0x13, 0, 0, 0, 0},
10650         {0x14, 0, 0, 0, 0},
10651         {0x15, 0, 0, 0, 0},
10652         {0x16, 0, 0, 0, 0},
10653         {0x17, 0, 0, 0, 0},
10654         {0x18, 0, 0, 0, 0},
10655         {0x19, 0, 0, 0, 0},
10656         {0x1A, 0, 0, 0, 0},
10657         {0x1B, 0, 0, 0, 0},
10658         {0x1C, 0, 0, 0, 0},
10659         {0x1D, 0, 0, 0, 0},
10660         {0x1E, 0, 0, 0, 0},
10661         {0x1F, 0, 0, 0, 0},
10662         {0x20, 0, 0, 0, 0},
10663         {0x21, 0x88, 0x88, 0, 0},
10664         {0x22, 0x88, 0x88, 0, 0},
10665         {0x23, 0x88, 0x88, 0, 0},
10666         {0x24, 0x88, 0x88, 0, 0},
10667         {0x25, 0xc, 0xc, 0, 0},
10668         {0x26, 0, 0, 0, 0},
10669         {0x27, 0x3, 0x3, 0, 0},
10670         {0x28, 0, 0, 0, 0},
10671         {0x29, 0x3, 0x3, 0, 0},
10672         {0x2A, 0x37, 0x37, 0, 0},
10673         {0x2B, 0x3, 0x3, 0, 0},
10674         {0x2C, 0, 0, 0, 0},
10675         {0x2D, 0, 0, 0, 0},
10676         {0x2E, 0x1, 0x1, 0, 0},
10677         {0x2F, 0x1, 0x1, 0, 0},
10678         {0x30, 0, 0, 0, 0},
10679         {0x31, 0, 0, 0, 0},
10680         {0x32, 0, 0, 0, 0},
10681         {0x33, 0x11, 0x11, 0, 0},
10682         {0x34, 0xee, 0xee, 1, 1},
10683         {0x35, 0, 0, 0, 0},
10684         {0x36, 0, 0, 0, 0},
10685         {0x37, 0x3, 0x3, 0, 0},
10686         {0x38, 0x50, 0x50, 1, 1},
10687         {0x39, 0, 0, 0, 0},
10688         {0x3A, 0x50, 0x50, 1, 1},
10689         {0x3B, 0, 0, 0, 0},
10690         {0x3C, 0x6e, 0x6e, 0, 0},
10691         {0x3D, 0xf0, 0xf0, 1, 1},
10692         {0x3E, 0, 0, 0, 0},
10693         {0x3F, 0, 0, 0, 0},
10694         {0x40, 0, 0, 0, 0},
10695         {0x41, 0x3, 0x3, 0, 0},
10696         {0x42, 0x3, 0x3, 0, 0},
10697         {0x43, 0, 0, 0, 0},
10698         {0x44, 0x1e, 0x1e, 0, 0},
10699         {0x45, 0, 0, 0, 0},
10700         {0x46, 0x6e, 0x6e, 0, 0},
10701         {0x47, 0xf0, 0xf0, 1, 1},
10702         {0x48, 0, 0, 0, 0},
10703         {0x49, 0x2, 0x2, 0, 0},
10704         {0x4A, 0xff, 0xff, 1, 1},
10705         {0x4B, 0xc, 0xc, 0, 0},
10706         {0x4C, 0, 0, 0, 0},
10707         {0x4D, 0x38, 0x38, 0, 0},
10708         {0x4E, 0x70, 0x70, 1, 1},
10709         {0x4F, 0x2, 0x2, 0, 0},
10710         {0x50, 0x88, 0x88, 0, 0},
10711         {0x51, 0xc, 0xc, 0, 0},
10712         {0x52, 0, 0, 0, 0},
10713         {0x53, 0x8, 0x8, 0, 0},
10714         {0x54, 0x70, 0x70, 1, 1},
10715         {0x55, 0x2, 0x2, 0, 0},
10716         {0x56, 0xff, 0xff, 1, 1},
10717         {0x57, 0, 0, 0, 0},
10718         {0x58, 0x83, 0x83, 0, 0},
10719         {0x59, 0x77, 0x77, 1, 1},
10720         {0x5A, 0, 0, 0, 0},
10721         {0x5B, 0x2, 0x2, 0, 0},
10722         {0x5C, 0x88, 0x88, 0, 0},
10723         {0x5D, 0, 0, 0, 0},
10724         {0x5E, 0x8, 0x8, 0, 0},
10725         {0x5F, 0x77, 0x77, 1, 1},
10726         {0x60, 0x1, 0x1, 0, 0},
10727         {0x61, 0, 0, 0, 0},
10728         {0x62, 0x7, 0x7, 0, 0},
10729         {0x63, 0, 0, 0, 0},
10730         {0x64, 0x7, 0x7, 0, 0},
10731         {0x65, 0, 0, 0, 0},
10732         {0x66, 0, 0, 0, 0},
10733         {0x67, 0, 0, 1, 1},
10734         {0x68, 0, 0, 0, 0},
10735         {0x69, 0xa, 0xa, 0, 0},
10736         {0x6A, 0, 0, 0, 0},
10737         {0x6B, 0, 0, 0, 0},
10738         {0x6C, 0, 0, 0, 0},
10739         {0x6D, 0, 0, 0, 0},
10740         {0x6E, 0, 0, 0, 0},
10741         {0x6F, 0, 0, 0, 0},
10742         {0x70, 0, 0, 0, 0},
10743         {0x71, 0x2, 0x2, 0, 0},
10744         {0x72, 0, 0, 0, 0},
10745         {0x73, 0, 0, 0, 0},
10746         {0x74, 0xe, 0xe, 0, 0},
10747         {0x75, 0xe, 0xe, 0, 0},
10748         {0x76, 0xe, 0xe, 0, 0},
10749         {0x77, 0x13, 0x13, 0, 0},
10750         {0x78, 0x13, 0x13, 0, 0},
10751         {0x79, 0x1b, 0x1b, 0, 0},
10752         {0x7A, 0x1b, 0x1b, 0, 0},
10753         {0x7B, 0x55, 0x55, 0, 0},
10754         {0x7C, 0x5b, 0x5b, 0, 0},
10755         {0x7D, 0x30, 0x30, 1, 1},
10756         {0x7E, 0, 0, 0, 0},
10757         {0x7F, 0, 0, 0, 0},
10758         {0x80, 0, 0, 0, 0},
10759         {0x81, 0, 0, 0, 0},
10760         {0x82, 0, 0, 0, 0},
10761         {0x83, 0, 0, 0, 0},
10762         {0x84, 0, 0, 0, 0},
10763         {0x85, 0, 0, 0, 0},
10764         {0x86, 0, 0, 0, 0},
10765         {0x87, 0, 0, 0, 0},
10766         {0x88, 0, 0, 0, 0},
10767         {0x89, 0, 0, 0, 0},
10768         {0x8A, 0, 0, 0, 0},
10769         {0x8B, 0, 0, 0, 0},
10770         {0x8C, 0, 0, 0, 0},
10771         {0x8D, 0, 0, 0, 0},
10772         {0x8E, 0, 0, 0, 0},
10773         {0x8F, 0, 0, 0, 0},
10774         {0x90, 0, 0, 0, 0},
10775         {0x91, 0, 0, 0, 0},
10776         {0x92, 0, 0, 0, 0},
10777         {0x93, 0x70, 0x70, 0, 0},
10778         {0x94, 0x70, 0x70, 0, 0},
10779         {0x95, 0x70, 0x70, 0, 0},
10780         {0x96, 0x70, 0x70, 0, 0},
10781         {0x97, 0x70, 0x70, 0, 0},
10782         {0x98, 0x70, 0x70, 0, 0},
10783         {0x99, 0x70, 0x70, 0, 0},
10784         {0x9A, 0x70, 0x70, 0, 0},
10785         {0xFFFF, 0, 0, 0, 0},
10786 };
10787
10788 static struct radio_regs regs_RX_2056_rev8[] = {
10789         {0x02, 0, 0, 0, 0},
10790         {0x03, 0, 0, 0, 0},
10791         {0x04, 0, 0, 0, 0},
10792         {0x05, 0, 0, 0, 0},
10793         {0x06, 0, 0, 0, 0},
10794         {0x07, 0, 0, 0, 0},
10795         {0x08, 0, 0, 0, 0},
10796         {0x09, 0, 0, 0, 0},
10797         {0x0A, 0, 0, 0, 0},
10798         {0x0B, 0, 0, 0, 0},
10799         {0x0C, 0, 0, 0, 0},
10800         {0x0D, 0, 0, 0, 0},
10801         {0x0E, 0, 0, 0, 0},
10802         {0x0F, 0, 0, 0, 0},
10803         {0x10, 0, 0, 0, 0},
10804         {0x11, 0, 0, 0, 0},
10805         {0x12, 0, 0, 0, 0},
10806         {0x13, 0, 0, 0, 0},
10807         {0x14, 0, 0, 0, 0},
10808         {0x15, 0, 0, 0, 0},
10809         {0x16, 0, 0, 0, 0},
10810         {0x17, 0, 0, 0, 0},
10811         {0x18, 0, 0, 0, 0},
10812         {0x19, 0, 0, 0, 0},
10813         {0x1A, 0, 0, 0, 0},
10814         {0x1B, 0, 0, 0, 0},
10815         {0x1C, 0, 0, 0, 0},
10816         {0x1D, 0, 0, 0, 0},
10817         {0x1E, 0, 0, 0, 0},
10818         {0x1F, 0, 0, 0, 0},
10819         {0x20, 0x3, 0x3, 0, 0},
10820         {0x21, 0, 0, 0, 0},
10821         {0x22, 0, 0, 0, 0},
10822         {0x23, 0x90, 0x90, 0, 0},
10823         {0x24, 0x55, 0x55, 0, 0},
10824         {0x25, 0x15, 0x15, 0, 0},
10825         {0x26, 0x5, 0x5, 0, 0},
10826         {0x27, 0x15, 0x15, 0, 0},
10827         {0x28, 0x5, 0x5, 0, 0},
10828         {0x29, 0x20, 0x20, 0, 0},
10829         {0x2A, 0x11, 0x11, 0, 0},
10830         {0x2B, 0x90, 0x90, 0, 0},
10831         {0x2C, 0, 0, 0, 0},
10832         {0x2D, 0x88, 0x88, 0, 0},
10833         {0x2E, 0x32, 0x32, 0, 0},
10834         {0x2F, 0x77, 0x77, 0, 0},
10835         {0x30, 0x17, 0x17, 1, 1},
10836         {0x31, 0xff, 0xff, 1, 1},
10837         {0x32, 0x20, 0x20, 0, 0},
10838         {0x33, 0, 0, 0, 0},
10839         {0x34, 0x88, 0x88, 0, 0},
10840         {0x35, 0x32, 0x32, 0, 0},
10841         {0x36, 0x77, 0x77, 0, 0},
10842         {0x37, 0x17, 0x17, 1, 1},
10843         {0x38, 0xf0, 0xf0, 1, 1},
10844         {0x39, 0x20, 0x20, 0, 0},
10845         {0x3A, 0x8, 0x8, 0, 0},
10846         {0x3B, 0x55, 0x55, 1, 1},
10847         {0x3C, 0, 0, 0, 0},
10848         {0x3D, 0x88, 0x88, 1, 1},
10849         {0x3E, 0, 0, 0, 0},
10850         {0x3F, 0x44, 0x44, 0, 0},
10851         {0x40, 0x7, 0x7, 1, 1},
10852         {0x41, 0x6, 0x6, 0, 0},
10853         {0x42, 0x4, 0x4, 0, 0},
10854         {0x43, 0, 0, 0, 0},
10855         {0x44, 0x8, 0x8, 0, 0},
10856         {0x45, 0x55, 0x55, 1, 1},
10857         {0x46, 0, 0, 0, 0},
10858         {0x47, 0x11, 0x11, 0, 0},
10859         {0x48, 0, 0, 0, 0},
10860         {0x49, 0x44, 0x44, 0, 0},
10861         {0x4A, 0x7, 0x7, 0, 0},
10862         {0x4B, 0x6, 0x6, 0, 0},
10863         {0x4C, 0x4, 0x4, 0, 0},
10864         {0x4D, 0, 0, 0, 0},
10865         {0x4E, 0, 0, 0, 0},
10866         {0x4F, 0x26, 0x26, 1, 1},
10867         {0x50, 0x26, 0x26, 1, 1},
10868         {0x51, 0xf, 0xf, 1, 1},
10869         {0x52, 0xf, 0xf, 1, 1},
10870         {0x53, 0x44, 0x44, 0, 0},
10871         {0x54, 0, 0, 0, 0},
10872         {0x55, 0, 0, 0, 0},
10873         {0x56, 0x8, 0x8, 0, 0},
10874         {0x57, 0x8, 0x8, 0, 0},
10875         {0x58, 0x7, 0x7, 0, 0},
10876         {0x59, 0x22, 0x22, 0, 0},
10877         {0x5A, 0x22, 0x22, 0, 0},
10878         {0x5B, 0x2, 0x2, 0, 0},
10879         {0x5C, 0x4, 0x4, 1, 1},
10880         {0x5D, 0x7, 0x7, 0, 0},
10881         {0x5E, 0x55, 0x55, 0, 0},
10882         {0x5F, 0x23, 0x23, 0, 0},
10883         {0x60, 0x41, 0x41, 0, 0},
10884         {0x61, 0x1, 0x1, 0, 0},
10885         {0x62, 0xa, 0xa, 0, 0},
10886         {0x63, 0, 0, 0, 0},
10887         {0x64, 0, 0, 0, 0},
10888         {0x65, 0, 0, 0, 0},
10889         {0x66, 0, 0, 0, 0},
10890         {0x67, 0, 0, 0, 0},
10891         {0x68, 0, 0, 0, 0},
10892         {0x69, 0, 0, 0, 0},
10893         {0x6A, 0, 0, 0, 0},
10894         {0x6B, 0xc, 0xc, 0, 0},
10895         {0x6C, 0, 0, 0, 0},
10896         {0x6D, 0, 0, 0, 0},
10897         {0x6E, 0, 0, 0, 0},
10898         {0x6F, 0, 0, 0, 0},
10899         {0x70, 0, 0, 0, 0},
10900         {0x71, 0, 0, 0, 0},
10901         {0x72, 0x22, 0x22, 0, 0},
10902         {0x73, 0x22, 0x22, 0, 0},
10903         {0x74, 0, 0, 1, 1},
10904         {0x75, 0xa, 0xa, 0, 0},
10905         {0x76, 0x1, 0x1, 0, 0},
10906         {0x77, 0x22, 0x22, 0, 0},
10907         {0x78, 0x30, 0x30, 0, 0},
10908         {0x79, 0, 0, 0, 0},
10909         {0x7A, 0, 0, 0, 0},
10910         {0x7B, 0, 0, 0, 0},
10911         {0x7C, 0, 0, 0, 0},
10912         {0x7D, 0x5, 0x5, 1, 1},
10913         {0x7E, 0, 0, 0, 0},
10914         {0x7F, 0, 0, 0, 0},
10915         {0x80, 0, 0, 0, 0},
10916         {0x81, 0, 0, 0, 0},
10917         {0x82, 0, 0, 0, 0},
10918         {0x83, 0, 0, 0, 0},
10919         {0x84, 0, 0, 0, 0},
10920         {0x85, 0, 0, 0, 0},
10921         {0x86, 0, 0, 0, 0},
10922         {0x87, 0, 0, 0, 0},
10923         {0x88, 0, 0, 0, 0},
10924         {0x89, 0, 0, 0, 0},
10925         {0x8A, 0, 0, 0, 0},
10926         {0x8B, 0, 0, 0, 0},
10927         {0x8C, 0, 0, 0, 0},
10928         {0x8D, 0, 0, 0, 0},
10929         {0x8E, 0, 0, 0, 0},
10930         {0x8F, 0, 0, 0, 0},
10931         {0x90, 0, 0, 0, 0},
10932         {0x91, 0, 0, 0, 0},
10933         {0x92, 0, 0, 0, 0},
10934         {0x93, 0, 0, 0, 0},
10935         {0x94, 0, 0, 0, 0},
10936         {0xFFFF, 0, 0, 0, 0},
10937 };
10938
10939 static const struct radio_regs regs_SYN_2056_rev11[] = {
10940         {0x02, 0, 0, 0, 0},
10941         {0x03, 0, 0, 0, 0},
10942         {0x04, 0, 0, 0, 0},
10943         {0x05, 0, 0, 0, 0},
10944         {0x06, 0, 0, 0, 0},
10945         {0x07, 0, 0, 0, 0},
10946         {0x08, 0, 0, 0, 0},
10947         {0x09, 0x1, 0x1, 0, 0},
10948         {0x0A, 0, 0, 0, 0},
10949         {0x0B, 0, 0, 0, 0},
10950         {0x0C, 0, 0, 0, 0},
10951         {0x0D, 0, 0, 0, 0},
10952         {0x0E, 0, 0, 0, 0},
10953         {0x0F, 0, 0, 0, 0},
10954         {0x10, 0, 0, 0, 0},
10955         {0x11, 0, 0, 0, 0},
10956         {0x12, 0, 0, 0, 0},
10957         {0x13, 0, 0, 0, 0},
10958         {0x14, 0, 0, 0, 0},
10959         {0x15, 0, 0, 0, 0},
10960         {0x16, 0, 0, 0, 0},
10961         {0x17, 0, 0, 0, 0},
10962         {0x18, 0, 0, 0, 0},
10963         {0x19, 0, 0, 0, 0},
10964         {0x1A, 0, 0, 0, 0},
10965         {0x1B, 0, 0, 0, 0},
10966         {0x1C, 0, 0, 0, 0},
10967         {0x1D, 0, 0, 0, 0},
10968         {0x1E, 0, 0, 0, 0},
10969         {0x1F, 0, 0, 0, 0},
10970         {0x20, 0, 0, 0, 0},
10971         {0x21, 0, 0, 0, 0},
10972         {0x22, 0x60, 0x60, 0, 0},
10973         {0x23, 0x6, 0x6, 0, 0},
10974         {0x24, 0xc, 0xc, 0, 0},
10975         {0x25, 0, 0, 0, 0},
10976         {0x26, 0, 0, 0, 0},
10977         {0x27, 0, 0, 0, 0},
10978         {0x28, 0x1, 0x1, 0, 0},
10979         {0x29, 0, 0, 0, 0},
10980         {0x2A, 0, 0, 0, 0},
10981         {0x2B, 0, 0, 0, 0},
10982         {0x2C, 0, 0, 0, 0},
10983         {0x2D, 0, 0, 0, 0},
10984         {0x2E, 0, 0, 0, 0},
10985         {0x2F, 0x1f, 0x1f, 0, 0},
10986         {0x30, 0x15, 0x15, 0, 0},
10987         {0x31, 0xf, 0xf, 0, 0},
10988         {0x32, 0, 0, 0, 0},
10989         {0x33, 0, 0, 0, 0},
10990         {0x34, 0, 0, 0, 0},
10991         {0x35, 0, 0, 0, 0},
10992         {0x36, 0, 0, 0, 0},
10993         {0x37, 0, 0, 0, 0},
10994         {0x38, 0, 0, 0, 0},
10995         {0x39, 0, 0, 0, 0},
10996         {0x3A, 0, 0, 0, 0},
10997         {0x3B, 0, 0, 0, 0},
10998         {0x3C, 0x13, 0x13, 0, 0},
10999         {0x3D, 0xf, 0xf, 0, 0},
11000         {0x3E, 0x18, 0x18, 0, 0},
11001         {0x3F, 0, 0, 0, 0},
11002         {0x40, 0, 0, 0, 0},
11003         {0x41, 0x20, 0x20, 0, 0},
11004         {0x42, 0x20, 0x20, 0, 0},
11005         {0x43, 0, 0, 0, 0},
11006         {0x44, 0x77, 0x77, 0, 0},
11007         {0x45, 0x7, 0x7, 0, 0},
11008         {0x46, 0x1, 0x1, 0, 0},
11009         {0x47, 0x6, 0x6, 1, 1},
11010         {0x48, 0xf, 0xf, 0, 0},
11011         {0x49, 0x3f, 0x3f, 1, 1},
11012         {0x4A, 0x32, 0x32, 0, 0},
11013         {0x4B, 0x6, 0x6, 1, 1},
11014         {0x4C, 0x6, 0x6, 1, 1},
11015         {0x4D, 0x4, 0x4, 0, 0},
11016         {0x4E, 0x2b, 0x2b, 1, 1},
11017         {0x4F, 0x1, 0x1, 0, 0},
11018         {0x50, 0x1c, 0x1c, 0, 0},
11019         {0x51, 0x2, 0x2, 0, 0},
11020         {0x52, 0x2, 0x2, 0, 0},
11021         {0x53, 0xf7, 0xf7, 1, 1},
11022         {0x54, 0xb4, 0xb4, 0, 0},
11023         {0x55, 0xd2, 0xd2, 0, 0},
11024         {0x56, 0, 0, 0, 0},
11025         {0x57, 0, 0, 0, 0},
11026         {0x58, 0x4, 0x4, 0, 0},
11027         {0x59, 0x96, 0x96, 0, 0},
11028         {0x5A, 0x3e, 0x3e, 0, 0},
11029         {0x5B, 0x3e, 0x3e, 0, 0},
11030         {0x5C, 0x13, 0x13, 0, 0},
11031         {0x5D, 0x2, 0x2, 0, 0},
11032         {0x5E, 0, 0, 0, 0},
11033         {0x5F, 0x7, 0x7, 0, 0},
11034         {0x60, 0x7, 0x7, 1, 1},
11035         {0x61, 0x8, 0x8, 0, 0},
11036         {0x62, 0x3, 0x3, 0, 0},
11037         {0x63, 0, 0, 0, 0},
11038         {0x64, 0, 0, 0, 0},
11039         {0x65, 0, 0, 0, 0},
11040         {0x66, 0, 0, 0, 0},
11041         {0x67, 0, 0, 0, 0},
11042         {0x68, 0x40, 0x40, 0, 0},
11043         {0x69, 0, 0, 0, 0},
11044         {0x6A, 0, 0, 0, 0},
11045         {0x6B, 0, 0, 0, 0},
11046         {0x6C, 0, 0, 0, 0},
11047         {0x6D, 0x1, 0x1, 0, 0},
11048         {0x6E, 0, 0, 0, 0},
11049         {0x6F, 0, 0, 0, 0},
11050         {0x70, 0x60, 0x60, 0, 0},
11051         {0x71, 0x66, 0x66, 0, 0},
11052         {0x72, 0xc, 0xc, 0, 0},
11053         {0x73, 0x66, 0x66, 0, 0},
11054         {0x74, 0x8f, 0x8f, 1, 1},
11055         {0x75, 0, 0, 0, 0},
11056         {0x76, 0xcc, 0xcc, 0, 0},
11057         {0x77, 0x1, 0x1, 0, 0},
11058         {0x78, 0x66, 0x66, 0, 0},
11059         {0x79, 0x66, 0x66, 0, 0},
11060         {0x7A, 0, 0, 0, 0},
11061         {0x7B, 0, 0, 0, 0},
11062         {0x7C, 0, 0, 0, 0},
11063         {0x7D, 0, 0, 0, 0},
11064         {0x7E, 0, 0, 0, 0},
11065         {0x7F, 0, 0, 0, 0},
11066         {0x80, 0, 0, 0, 0},
11067         {0x81, 0, 0, 0, 0},
11068         {0x82, 0, 0, 0, 0},
11069         {0x83, 0, 0, 0, 0},
11070         {0x84, 0, 0, 0, 0},
11071         {0x85, 0xff, 0xff, 0, 0},
11072         {0x86, 0, 0, 0, 0},
11073         {0x87, 0, 0, 0, 0},
11074         {0x88, 0, 0, 0, 0},
11075         {0x89, 0, 0, 0, 0},
11076         {0x8A, 0, 0, 0, 0},
11077         {0x8B, 0, 0, 0, 0},
11078         {0x8C, 0, 0, 0, 0},
11079         {0x8D, 0, 0, 0, 0},
11080         {0x8E, 0, 0, 0, 0},
11081         {0x8F, 0, 0, 0, 0},
11082         {0x90, 0, 0, 0, 0},
11083         {0x91, 0, 0, 0, 0},
11084         {0x92, 0, 0, 0, 0},
11085         {0x93, 0, 0, 0, 0},
11086         {0x94, 0, 0, 0, 0},
11087         {0x95, 0, 0, 0, 0},
11088         {0x96, 0, 0, 0, 0},
11089         {0x97, 0, 0, 0, 0},
11090         {0x98, 0, 0, 0, 0},
11091         {0x99, 0, 0, 0, 0},
11092         {0x9A, 0, 0, 0, 0},
11093         {0x9B, 0, 0, 0, 0},
11094         {0x9C, 0, 0, 0, 0},
11095         {0x9D, 0, 0, 0, 0},
11096         {0x9E, 0, 0, 0, 0},
11097         {0x9F, 0x6, 0x6, 0, 0},
11098         {0xA0, 0x66, 0x66, 0, 0},
11099         {0xA1, 0x66, 0x66, 0, 0},
11100         {0xA2, 0x66, 0x66, 0, 0},
11101         {0xA3, 0x66, 0x66, 0, 0},
11102         {0xA4, 0x66, 0x66, 0, 0},
11103         {0xA5, 0x66, 0x66, 0, 0},
11104         {0xA6, 0x66, 0x66, 0, 0},
11105         {0xA7, 0x66, 0x66, 0, 0},
11106         {0xA8, 0x66, 0x66, 0, 0},
11107         {0xA9, 0x66, 0x66, 0, 0},
11108         {0xAA, 0x66, 0x66, 0, 0},
11109         {0xAB, 0x66, 0x66, 0, 0},
11110         {0xAC, 0x66, 0x66, 0, 0},
11111         {0xAD, 0x66, 0x66, 0, 0},
11112         {0xAE, 0x66, 0x66, 0, 0},
11113         {0xAF, 0x66, 0x66, 0, 0},
11114         {0xB0, 0x66, 0x66, 0, 0},
11115         {0xB1, 0x66, 0x66, 0, 0},
11116         {0xB2, 0x66, 0x66, 0, 0},
11117         {0xB3, 0xa, 0xa, 0, 0},
11118         {0xB4, 0, 0, 0, 0},
11119         {0xB5, 0, 0, 0, 0},
11120         {0xB6, 0, 0, 0, 0},
11121         {0xFFFF, 0, 0, 0, 0},
11122 };
11123
11124 static const struct radio_regs regs_TX_2056_rev11[] = {
11125         {0x02, 0, 0, 0, 0},
11126         {0x03, 0, 0, 0, 0},
11127         {0x04, 0, 0, 0, 0},
11128         {0x05, 0, 0, 0, 0},
11129         {0x06, 0, 0, 0, 0},
11130         {0x07, 0, 0, 0, 0},
11131         {0x08, 0, 0, 0, 0},
11132         {0x09, 0, 0, 0, 0},
11133         {0x0A, 0, 0, 0, 0},
11134         {0x0B, 0, 0, 0, 0},
11135         {0x0C, 0, 0, 0, 0},
11136         {0x0D, 0, 0, 0, 0},
11137         {0x0E, 0, 0, 0, 0},
11138         {0x0F, 0, 0, 0, 0},
11139         {0x10, 0, 0, 0, 0},
11140         {0x11, 0, 0, 0, 0},
11141         {0x12, 0, 0, 0, 0},
11142         {0x13, 0, 0, 0, 0},
11143         {0x14, 0, 0, 0, 0},
11144         {0x15, 0, 0, 0, 0},
11145         {0x16, 0, 0, 0, 0},
11146         {0x17, 0, 0, 0, 0},
11147         {0x18, 0, 0, 0, 0},
11148         {0x19, 0, 0, 0, 0},
11149         {0x1A, 0, 0, 0, 0},
11150         {0x1B, 0, 0, 0, 0},
11151         {0x1C, 0, 0, 0, 0},
11152         {0x1D, 0, 0, 0, 0},
11153         {0x1E, 0, 0, 0, 0},
11154         {0x1F, 0, 0, 0, 0},
11155         {0x20, 0, 0, 0, 0},
11156         {0x21, 0x88, 0x88, 0, 0},
11157         {0x22, 0x88, 0x88, 0, 0},
11158         {0x23, 0x88, 0x88, 0, 0},
11159         {0x24, 0x88, 0x88, 0, 0},
11160         {0x25, 0xc, 0xc, 0, 0},
11161         {0x26, 0, 0, 0, 0},
11162         {0x27, 0x3, 0x3, 0, 0},
11163         {0x28, 0, 0, 0, 0},
11164         {0x29, 0x3, 0x3, 0, 0},
11165         {0x2A, 0x37, 0x37, 0, 0},
11166         {0x2B, 0x3, 0x3, 0, 0},
11167         {0x2C, 0, 0, 0, 0},
11168         {0x2D, 0, 0, 0, 0},
11169         {0x2E, 0x1, 0x1, 0, 0},
11170         {0x2F, 0x1, 0x1, 0, 0},
11171         {0x30, 0, 0, 0, 0},
11172         {0x31, 0, 0, 0, 0},
11173         {0x32, 0, 0, 0, 0},
11174         {0x33, 0x11, 0x11, 0, 0},
11175         {0x34, 0xee, 0xee, 1, 1},
11176         {0x35, 0, 0, 0, 0},
11177         {0x36, 0, 0, 0, 0},
11178         {0x37, 0x3, 0x3, 0, 0},
11179         {0x38, 0x50, 0x50, 1, 1},
11180         {0x39, 0, 0, 0, 0},
11181         {0x3A, 0x50, 0x50, 1, 1},
11182         {0x3B, 0, 0, 0, 0},
11183         {0x3C, 0x6e, 0x6e, 0, 0},
11184         {0x3D, 0xf0, 0xf0, 1, 1},
11185         {0x3E, 0, 0, 0, 0},
11186         {0x3F, 0, 0, 0, 0},
11187         {0x40, 0, 0, 0, 0},
11188         {0x41, 0x3, 0x3, 0, 0},
11189         {0x42, 0x3, 0x3, 0, 0},
11190         {0x43, 0, 0, 0, 0},
11191         {0x44, 0x1e, 0x1e, 0, 0},
11192         {0x45, 0, 0, 0, 0},
11193         {0x46, 0x6e, 0x6e, 0, 0},
11194         {0x47, 0xf0, 0xf0, 1, 1},
11195         {0x48, 0, 0, 0, 0},
11196         {0x49, 0x2, 0x2, 0, 0},
11197         {0x4A, 0xff, 0xff, 1, 1},
11198         {0x4B, 0xc, 0xc, 0, 0},
11199         {0x4C, 0, 0, 0, 0},
11200         {0x4D, 0x38, 0x38, 0, 0},
11201         {0x4E, 0x70, 0x70, 1, 1},
11202         {0x4F, 0x2, 0x2, 0, 0},
11203         {0x50, 0x88, 0x88, 0, 0},
11204         {0x51, 0xc, 0xc, 0, 0},
11205         {0x52, 0, 0, 0, 0},
11206         {0x53, 0x8, 0x8, 0, 0},
11207         {0x54, 0x70, 0x70, 1, 1},
11208         {0x55, 0x2, 0x2, 0, 0},
11209         {0x56, 0xff, 0xff, 1, 1},
11210         {0x57, 0, 0, 0, 0},
11211         {0x58, 0x83, 0x83, 0, 0},
11212         {0x59, 0x77, 0x77, 1, 1},
11213         {0x5A, 0, 0, 0, 0},
11214         {0x5B, 0x2, 0x2, 0, 0},
11215         {0x5C, 0x88, 0x88, 0, 0},
11216         {0x5D, 0, 0, 0, 0},
11217         {0x5E, 0x8, 0x8, 0, 0},
11218         {0x5F, 0x77, 0x77, 1, 1},
11219         {0x60, 0x1, 0x1, 0, 0},
11220         {0x61, 0, 0, 0, 0},
11221         {0x62, 0x7, 0x7, 0, 0},
11222         {0x63, 0, 0, 0, 0},
11223         {0x64, 0x7, 0x7, 0, 0},
11224         {0x65, 0, 0, 0, 0},
11225         {0x66, 0, 0, 0, 0},
11226         {0x67, 0, 0, 1, 1},
11227         {0x68, 0, 0, 0, 0},
11228         {0x69, 0xa, 0xa, 0, 0},
11229         {0x6A, 0, 0, 0, 0},
11230         {0x6B, 0, 0, 0, 0},
11231         {0x6C, 0, 0, 0, 0},
11232         {0x6D, 0, 0, 0, 0},
11233         {0x6E, 0, 0, 0, 0},
11234         {0x6F, 0, 0, 0, 0},
11235         {0x70, 0, 0, 0, 0},
11236         {0x71, 0x2, 0x2, 0, 0},
11237         {0x72, 0, 0, 0, 0},
11238         {0x73, 0, 0, 0, 0},
11239         {0x74, 0xe, 0xe, 0, 0},
11240         {0x75, 0xe, 0xe, 0, 0},
11241         {0x76, 0xe, 0xe, 0, 0},
11242         {0x77, 0x13, 0x13, 0, 0},
11243         {0x78, 0x13, 0x13, 0, 0},
11244         {0x79, 0x1b, 0x1b, 0, 0},
11245         {0x7A, 0x1b, 0x1b, 0, 0},
11246         {0x7B, 0x55, 0x55, 0, 0},
11247         {0x7C, 0x5b, 0x5b, 0, 0},
11248         {0x7D, 0x30, 0x30, 1, 1},
11249         {0x7E, 0, 0, 0, 0},
11250         {0x7F, 0, 0, 0, 0},
11251         {0x80, 0, 0, 0, 0},
11252         {0x81, 0, 0, 0, 0},
11253         {0x82, 0, 0, 0, 0},
11254         {0x83, 0, 0, 0, 0},
11255         {0x84, 0, 0, 0, 0},
11256         {0x85, 0, 0, 0, 0},
11257         {0x86, 0, 0, 0, 0},
11258         {0x87, 0, 0, 0, 0},
11259         {0x88, 0, 0, 0, 0},
11260         {0x89, 0, 0, 0, 0},
11261         {0x8A, 0, 0, 0, 0},
11262         {0x8B, 0, 0, 0, 0},
11263         {0x8C, 0, 0, 0, 0},
11264         {0x8D, 0, 0, 0, 0},
11265         {0x8E, 0, 0, 0, 0},
11266         {0x8F, 0, 0, 0, 0},
11267         {0x90, 0, 0, 0, 0},
11268         {0x91, 0, 0, 0, 0},
11269         {0x92, 0, 0, 0, 0},
11270         {0x93, 0x70, 0x70, 0, 0},
11271         {0x94, 0x70, 0x70, 0, 0},
11272         {0x95, 0x70, 0x70, 0, 0},
11273         {0x96, 0x70, 0x70, 0, 0},
11274         {0x97, 0x70, 0x70, 0, 0},
11275         {0x98, 0x70, 0x70, 0, 0},
11276         {0x99, 0x70, 0x70, 0, 0},
11277         {0x9A, 0x70, 0x70, 0, 0},
11278         {0xFFFF, 0, 0, 0, 0},
11279 };
11280
11281 static const struct radio_regs regs_RX_2056_rev11[] = {
11282         {0x02, 0, 0, 0, 0},
11283         {0x03, 0, 0, 0, 0},
11284         {0x04, 0, 0, 0, 0},
11285         {0x05, 0, 0, 0, 0},
11286         {0x06, 0, 0, 0, 0},
11287         {0x07, 0, 0, 0, 0},
11288         {0x08, 0, 0, 0, 0},
11289         {0x09, 0, 0, 0, 0},
11290         {0x0A, 0, 0, 0, 0},
11291         {0x0B, 0, 0, 0, 0},
11292         {0x0C, 0, 0, 0, 0},
11293         {0x0D, 0, 0, 0, 0},
11294         {0x0E, 0, 0, 0, 0},
11295         {0x0F, 0, 0, 0, 0},
11296         {0x10, 0, 0, 0, 0},
11297         {0x11, 0, 0, 0, 0},
11298         {0x12, 0, 0, 0, 0},
11299         {0x13, 0, 0, 0, 0},
11300         {0x14, 0, 0, 0, 0},
11301         {0x15, 0, 0, 0, 0},
11302         {0x16, 0, 0, 0, 0},
11303         {0x17, 0, 0, 0, 0},
11304         {0x18, 0, 0, 0, 0},
11305         {0x19, 0, 0, 0, 0},
11306         {0x1A, 0, 0, 0, 0},
11307         {0x1B, 0, 0, 0, 0},
11308         {0x1C, 0, 0, 0, 0},
11309         {0x1D, 0, 0, 0, 0},
11310         {0x1E, 0, 0, 0, 0},
11311         {0x1F, 0, 0, 0, 0},
11312         {0x20, 0x3, 0x3, 0, 0},
11313         {0x21, 0, 0, 0, 0},
11314         {0x22, 0, 0, 0, 0},
11315         {0x23, 0x90, 0x90, 0, 0},
11316         {0x24, 0x55, 0x55, 0, 0},
11317         {0x25, 0x15, 0x15, 0, 0},
11318         {0x26, 0x5, 0x5, 0, 0},
11319         {0x27, 0x15, 0x15, 0, 0},
11320         {0x28, 0x5, 0x5, 0, 0},
11321         {0x29, 0x20, 0x20, 0, 0},
11322         {0x2A, 0x11, 0x11, 0, 0},
11323         {0x2B, 0x90, 0x90, 0, 0},
11324         {0x2C, 0, 0, 0, 0},
11325         {0x2D, 0x88, 0x88, 0, 0},
11326         {0x2E, 0x32, 0x32, 0, 0},
11327         {0x2F, 0x77, 0x77, 0, 0},
11328         {0x30, 0x17, 0x17, 1, 1},
11329         {0x31, 0xff, 0xff, 1, 1},
11330         {0x32, 0x20, 0x20, 0, 0},
11331         {0x33, 0, 0, 0, 0},
11332         {0x34, 0x88, 0x88, 0, 0},
11333         {0x35, 0x32, 0x32, 0, 0},
11334         {0x36, 0x77, 0x77, 0, 0},
11335         {0x37, 0x17, 0x17, 1, 1},
11336         {0x38, 0xf0, 0xf0, 1, 1},
11337         {0x39, 0x20, 0x20, 0, 0},
11338         {0x3A, 0x8, 0x8, 0, 0},
11339         {0x3B, 0x55, 0x55, 1, 1},
11340         {0x3C, 0, 0, 0, 0},
11341         {0x3D, 0x88, 0x88, 1, 1},
11342         {0x3E, 0, 0, 0, 0},
11343         {0x3F, 0x44, 0x44, 0, 0},
11344         {0x40, 0x7, 0x7, 1, 1},
11345         {0x41, 0x6, 0x6, 0, 0},
11346         {0x42, 0x4, 0x4, 0, 0},
11347         {0x43, 0, 0, 0, 0},
11348         {0x44, 0x8, 0x8, 0, 0},
11349         {0x45, 0x55, 0x55, 1, 1},
11350         {0x46, 0, 0, 0, 0},
11351         {0x47, 0x11, 0x11, 0, 0},
11352         {0x48, 0, 0, 0, 0},
11353         {0x49, 0x44, 0x44, 0, 0},
11354         {0x4A, 0x7, 0x7, 0, 0},
11355         {0x4B, 0x6, 0x6, 0, 0},
11356         {0x4C, 0x4, 0x4, 0, 0},
11357         {0x4D, 0, 0, 0, 0},
11358         {0x4E, 0, 0, 0, 0},
11359         {0x4F, 0x26, 0x26, 1, 1},
11360         {0x50, 0x26, 0x26, 1, 1},
11361         {0x51, 0xf, 0xf, 1, 1},
11362         {0x52, 0xf, 0xf, 1, 1},
11363         {0x53, 0x44, 0x44, 0, 0},
11364         {0x54, 0, 0, 0, 0},
11365         {0x55, 0, 0, 0, 0},
11366         {0x56, 0x8, 0x8, 0, 0},
11367         {0x57, 0x8, 0x8, 0, 0},
11368         {0x58, 0x7, 0x7, 0, 0},
11369         {0x59, 0x22, 0x22, 0, 0},
11370         {0x5A, 0x22, 0x22, 0, 0},
11371         {0x5B, 0x2, 0x2, 0, 0},
11372         {0x5C, 0x4, 0x4, 1, 1},
11373         {0x5D, 0x7, 0x7, 0, 0},
11374         {0x5E, 0x55, 0x55, 0, 0},
11375         {0x5F, 0x23, 0x23, 0, 0},
11376         {0x60, 0x41, 0x41, 0, 0},
11377         {0x61, 0x1, 0x1, 0, 0},
11378         {0x62, 0xa, 0xa, 0, 0},
11379         {0x63, 0, 0, 0, 0},
11380         {0x64, 0, 0, 0, 0},
11381         {0x65, 0, 0, 0, 0},
11382         {0x66, 0, 0, 0, 0},
11383         {0x67, 0, 0, 0, 0},
11384         {0x68, 0, 0, 0, 0},
11385         {0x69, 0, 0, 0, 0},
11386         {0x6A, 0, 0, 0, 0},
11387         {0x6B, 0xc, 0xc, 0, 0},
11388         {0x6C, 0, 0, 0, 0},
11389         {0x6D, 0, 0, 0, 0},
11390         {0x6E, 0, 0, 0, 0},
11391         {0x6F, 0, 0, 0, 0},
11392         {0x70, 0, 0, 0, 0},
11393         {0x71, 0, 0, 0, 0},
11394         {0x72, 0x22, 0x22, 0, 0},
11395         {0x73, 0x22, 0x22, 0, 0},
11396         {0x74, 0, 0, 1, 1},
11397         {0x75, 0xa, 0xa, 0, 0},
11398         {0x76, 0x1, 0x1, 0, 0},
11399         {0x77, 0x22, 0x22, 0, 0},
11400         {0x78, 0x30, 0x30, 0, 0},
11401         {0x79, 0, 0, 0, 0},
11402         {0x7A, 0, 0, 0, 0},
11403         {0x7B, 0, 0, 0, 0},
11404         {0x7C, 0, 0, 0, 0},
11405         {0x7D, 0x5, 0x5, 1, 1},
11406         {0x7E, 0, 0, 0, 0},
11407         {0x7F, 0, 0, 0, 0},
11408         {0x80, 0, 0, 0, 0},
11409         {0x81, 0, 0, 0, 0},
11410         {0x82, 0, 0, 0, 0},
11411         {0x83, 0, 0, 0, 0},
11412         {0x84, 0, 0, 0, 0},
11413         {0x85, 0, 0, 0, 0},
11414         {0x86, 0, 0, 0, 0},
11415         {0x87, 0, 0, 0, 0},
11416         {0x88, 0, 0, 0, 0},
11417         {0x89, 0, 0, 0, 0},
11418         {0x8A, 0, 0, 0, 0},
11419         {0x8B, 0, 0, 0, 0},
11420         {0x8C, 0, 0, 0, 0},
11421         {0x8D, 0, 0, 0, 0},
11422         {0x8E, 0, 0, 0, 0},
11423         {0x8F, 0, 0, 0, 0},
11424         {0x90, 0, 0, 0, 0},
11425         {0x91, 0, 0, 0, 0},
11426         {0x92, 0, 0, 0, 0},
11427         {0x93, 0, 0, 0, 0},
11428         {0x94, 0, 0, 0, 0},
11429         {0xFFFF, 0, 0, 0, 0},
11430 };
11431
11432 static struct radio_20xx_regs regs_2057_rev4[] = {
11433         {0x00, 0x84, 0},
11434         {0x01, 0, 0},
11435         {0x02, 0x60, 0},
11436         {0x03, 0x1f, 0},
11437         {0x04, 0x4, 0},
11438         {0x05, 0x2, 0},
11439         {0x06, 0x1, 0},
11440         {0x07, 0x1, 0},
11441         {0x08, 0x1, 0},
11442         {0x09, 0x69, 0},
11443         {0x0A, 0x66, 0},
11444         {0x0B, 0x6, 0},
11445         {0x0C, 0x18, 0},
11446         {0x0D, 0x3, 0},
11447         {0x0E, 0x20, 1},
11448         {0x0F, 0x20, 0},
11449         {0x10, 0, 0},
11450         {0x11, 0x7c, 0},
11451         {0x12, 0x42, 0},
11452         {0x13, 0xbd, 0},
11453         {0x14, 0x7, 0},
11454         {0x15, 0xf7, 0},
11455         {0x16, 0x8, 0},
11456         {0x17, 0x17, 0},
11457         {0x18, 0x7, 0},
11458         {0x19, 0, 0},
11459         {0x1A, 0x2, 0},
11460         {0x1B, 0x13, 0},
11461         {0x1C, 0x3e, 0},
11462         {0x1D, 0x3e, 0},
11463         {0x1E, 0x96, 0},
11464         {0x1F, 0x4, 0},
11465         {0x20, 0, 0},
11466         {0x21, 0, 0},
11467         {0x22, 0x17, 0},
11468         {0x23, 0x4, 0},
11469         {0x24, 0x1, 0},
11470         {0x25, 0x6, 0},
11471         {0x26, 0x4, 0},
11472         {0x27, 0xd, 0},
11473         {0x28, 0xd, 0},
11474         {0x29, 0x30, 0},
11475         {0x2A, 0x32, 0},
11476         {0x2B, 0x8, 0},
11477         {0x2C, 0x1c, 0},
11478         {0x2D, 0x2, 0},
11479         {0x2E, 0x4, 0},
11480         {0x2F, 0x7f, 0},
11481         {0x30, 0x27, 0},
11482         {0x31, 0, 1},
11483         {0x32, 0, 1},
11484         {0x33, 0, 1},
11485         {0x34, 0, 0},
11486         {0x35, 0x26, 1},
11487         {0x36, 0x18, 0},
11488         {0x37, 0x7, 0},
11489         {0x38, 0x66, 0},
11490         {0x39, 0x66, 0},
11491         {0x3A, 0x66, 0},
11492         {0x3B, 0x66, 0},
11493         {0x3C, 0xff, 1},
11494         {0x3D, 0xff, 1},
11495         {0x3E, 0xff, 1},
11496         {0x3F, 0xff, 1},
11497         {0x40, 0x16, 0},
11498         {0x41, 0x7, 0},
11499         {0x42, 0x19, 0},
11500         {0x43, 0x7, 0},
11501         {0x44, 0x6, 0},
11502         {0x45, 0x3, 0},
11503         {0x46, 0x1, 0},
11504         {0x47, 0x7, 0},
11505         {0x48, 0x33, 0},
11506         {0x49, 0x5, 0},
11507         {0x4A, 0x77, 0},
11508         {0x4B, 0x66, 0},
11509         {0x4C, 0x66, 0},
11510         {0x4D, 0, 0},
11511         {0x4E, 0x4, 0},
11512         {0x4F, 0xc, 0},
11513         {0x50, 0, 0},
11514         {0x51, 0x75, 0},
11515         {0x56, 0x7, 0},
11516         {0x57, 0, 0},
11517         {0x58, 0, 0},
11518         {0x59, 0xa8, 0},
11519         {0x5A, 0, 0},
11520         {0x5B, 0x1f, 0},
11521         {0x5C, 0x30, 0},
11522         {0x5D, 0x1, 0},
11523         {0x5E, 0x30, 0},
11524         {0x5F, 0x70, 0},
11525         {0x60, 0, 0},
11526         {0x61, 0, 0},
11527         {0x62, 0x33, 1},
11528         {0x63, 0x19, 0},
11529         {0x64, 0x62, 0},
11530         {0x65, 0, 0},
11531         {0x66, 0x11, 0},
11532         {0x69, 0, 0},
11533         {0x6A, 0x7e, 0},
11534         {0x6B, 0x3f, 0},
11535         {0x6C, 0x7f, 0},
11536         {0x6D, 0x78, 0},
11537         {0x6E, 0xc8, 0},
11538         {0x6F, 0x88, 0},
11539         {0x70, 0x8, 0},
11540         {0x71, 0xf, 0},
11541         {0x72, 0xbc, 0},
11542         {0x73, 0x8, 0},
11543         {0x74, 0x60, 0},
11544         {0x75, 0x1e, 0},
11545         {0x76, 0x70, 0},
11546         {0x77, 0, 0},
11547         {0x78, 0, 0},
11548         {0x79, 0, 0},
11549         {0x7A, 0x33, 0},
11550         {0x7B, 0x1e, 0},
11551         {0x7C, 0x62, 0},
11552         {0x7D, 0x11, 0},
11553         {0x80, 0x3c, 0},
11554         {0x81, 0x9c, 0},
11555         {0x82, 0xa, 0},
11556         {0x83, 0x9d, 0},
11557         {0x84, 0xa, 0},
11558         {0x85, 0, 0},
11559         {0x86, 0x40, 0},
11560         {0x87, 0x40, 0},
11561         {0x88, 0x88, 0},
11562         {0x89, 0x10, 0},
11563         {0x8A, 0xf0, 1},
11564         {0x8B, 0x10, 1},
11565         {0x8C, 0xf0, 1},
11566         {0x8D, 0, 0},
11567         {0x8E, 0, 0},
11568         {0x8F, 0x10, 0},
11569         {0x90, 0x55, 0},
11570         {0x91, 0x3f, 1},
11571         {0x92, 0x36, 1},
11572         {0x93, 0, 0},
11573         {0x94, 0, 0},
11574         {0x95, 0, 0},
11575         {0x96, 0x87, 0},
11576         {0x97, 0x11, 0},
11577         {0x98, 0, 0},
11578         {0x99, 0x33, 0},
11579         {0x9A, 0x88, 0},
11580         {0x9B, 0, 0},
11581         {0x9C, 0x87, 0},
11582         {0x9D, 0x11, 0},
11583         {0x9E, 0, 0},
11584         {0x9F, 0x33, 0},
11585         {0xA0, 0x88, 0},
11586         {0xA1, 0xe1, 0},
11587         {0xA2, 0x3f, 0},
11588         {0xA3, 0x44, 0},
11589         {0xA4, 0x8c, 1},
11590         {0xA5, 0x6d, 0},
11591         {0xA6, 0x22, 0},
11592         {0xA7, 0xbe, 0},
11593         {0xA8, 0x55, 1},
11594         {0xA9, 0xc, 0},
11595         {0xAA, 0xc, 0},
11596         {0xAB, 0xaa, 0},
11597         {0xAC, 0x2, 0},
11598         {0xAD, 0, 0},
11599         {0xAE, 0x10, 0},
11600         {0xAF, 0x1, 1},
11601         {0xB0, 0, 0},
11602         {0xB1, 0, 0},
11603         {0xB2, 0x80, 0},
11604         {0xB3, 0x60, 0},
11605         {0xB4, 0x44, 0},
11606         {0xB5, 0x55, 0},
11607         {0xB6, 0x1, 0},
11608         {0xB7, 0x55, 0},
11609         {0xB8, 0x1, 0},
11610         {0xB9, 0x5, 0},
11611         {0xBA, 0x55, 0},
11612         {0xBB, 0x55, 0},
11613         {0xC1, 0, 0},
11614         {0xC2, 0, 0},
11615         {0xC3, 0, 0},
11616         {0xC4, 0, 0},
11617         {0xC5, 0, 0},
11618         {0xC6, 0, 0},
11619         {0xC7, 0, 0},
11620         {0xC8, 0, 0},
11621         {0xC9, 0, 0},
11622         {0xCA, 0, 0},
11623         {0xCB, 0, 0},
11624         {0xCC, 0, 0},
11625         {0xCD, 0, 0},
11626         {0xCE, 0x5e, 0},
11627         {0xCF, 0xc, 0},
11628         {0xD0, 0xc, 0},
11629         {0xD1, 0xc, 0},
11630         {0xD2, 0, 0},
11631         {0xD3, 0x2b, 0},
11632         {0xD4, 0xc, 0},
11633         {0xD5, 0, 0},
11634         {0xD6, 0x75, 0},
11635         {0xDB, 0x7, 0},
11636         {0xDC, 0, 0},
11637         {0xDD, 0, 0},
11638         {0xDE, 0xa8, 0},
11639         {0xDF, 0, 0},
11640         {0xE0, 0x1f, 0},
11641         {0xE1, 0x30, 0},
11642         {0xE2, 0x1, 0},
11643         {0xE3, 0x30, 0},
11644         {0xE4, 0x70, 0},
11645         {0xE5, 0, 0},
11646         {0xE6, 0, 0},
11647         {0xE7, 0x33, 0},
11648         {0xE8, 0x19, 0},
11649         {0xE9, 0x62, 0},
11650         {0xEA, 0, 0},
11651         {0xEB, 0x11, 0},
11652         {0xEE, 0, 0},
11653         {0xEF, 0x7e, 0},
11654         {0xF0, 0x3f, 0},
11655         {0xF1, 0x7f, 0},
11656         {0xF2, 0x78, 0},
11657         {0xF3, 0xc8, 0},
11658         {0xF4, 0x88, 0},
11659         {0xF5, 0x8, 0},
11660         {0xF6, 0xf, 0},
11661         {0xF7, 0xbc, 0},
11662         {0xF8, 0x8, 0},
11663         {0xF9, 0x60, 0},
11664         {0xFA, 0x1e, 0},
11665         {0xFB, 0x70, 0},
11666         {0xFC, 0, 0},
11667         {0xFD, 0, 0},
11668         {0xFE, 0, 0},
11669         {0xFF, 0x33, 0},
11670         {0x100, 0x1e, 0},
11671         {0x101, 0x62, 0},
11672         {0x102, 0x11, 0},
11673         {0x105, 0x3c, 0},
11674         {0x106, 0x9c, 0},
11675         {0x107, 0xa, 0},
11676         {0x108, 0x9d, 0},
11677         {0x109, 0xa, 0},
11678         {0x10A, 0, 0},
11679         {0x10B, 0x40, 0},
11680         {0x10C, 0x40, 0},
11681         {0x10D, 0x88, 0},
11682         {0x10E, 0x10, 0},
11683         {0x10F, 0xf0, 1},
11684         {0x110, 0x10, 1},
11685         {0x111, 0xf0, 1},
11686         {0x112, 0, 0},
11687         {0x113, 0, 0},
11688         {0x114, 0x10, 0},
11689         {0x115, 0x55, 0},
11690         {0x116, 0x3f, 1},
11691         {0x117, 0x36, 1},
11692         {0x118, 0, 0},
11693         {0x119, 0, 0},
11694         {0x11A, 0, 0},
11695         {0x11B, 0x87, 0},
11696         {0x11C, 0x11, 0},
11697         {0x11D, 0, 0},
11698         {0x11E, 0x33, 0},
11699         {0x11F, 0x88, 0},
11700         {0x120, 0, 0},
11701         {0x121, 0x87, 0},
11702         {0x122, 0x11, 0},
11703         {0x123, 0, 0},
11704         {0x124, 0x33, 0},
11705         {0x125, 0x88, 0},
11706         {0x126, 0xe1, 0},
11707         {0x127, 0x3f, 0},
11708         {0x128, 0x44, 0},
11709         {0x129, 0x8c, 1},
11710         {0x12A, 0x6d, 0},
11711         {0x12B, 0x22, 0},
11712         {0x12C, 0xbe, 0},
11713         {0x12D, 0x55, 1},
11714         {0x12E, 0xc, 0},
11715         {0x12F, 0xc, 0},
11716         {0x130, 0xaa, 0},
11717         {0x131, 0x2, 0},
11718         {0x132, 0, 0},
11719         {0x133, 0x10, 0},
11720         {0x134, 0x1, 1},
11721         {0x135, 0, 0},
11722         {0x136, 0, 0},
11723         {0x137, 0x80, 0},
11724         {0x138, 0x60, 0},
11725         {0x139, 0x44, 0},
11726         {0x13A, 0x55, 0},
11727         {0x13B, 0x1, 0},
11728         {0x13C, 0x55, 0},
11729         {0x13D, 0x1, 0},
11730         {0x13E, 0x5, 0},
11731         {0x13F, 0x55, 0},
11732         {0x140, 0x55, 0},
11733         {0x146, 0, 0},
11734         {0x147, 0, 0},
11735         {0x148, 0, 0},
11736         {0x149, 0, 0},
11737         {0x14A, 0, 0},
11738         {0x14B, 0, 0},
11739         {0x14C, 0, 0},
11740         {0x14D, 0, 0},
11741         {0x14E, 0, 0},
11742         {0x14F, 0, 0},
11743         {0x150, 0, 0},
11744         {0x151, 0, 0},
11745         {0x152, 0, 0},
11746         {0x153, 0, 0},
11747         {0x154, 0xc, 0},
11748         {0x155, 0xc, 0},
11749         {0x156, 0xc, 0},
11750         {0x157, 0, 0},
11751         {0x158, 0x2b, 0},
11752         {0x159, 0x84, 0},
11753         {0x15A, 0x15, 0},
11754         {0x15B, 0xf, 0},
11755         {0x15C, 0, 0},
11756         {0x15D, 0, 0},
11757         {0x15E, 0, 1},
11758         {0x15F, 0, 1},
11759         {0x160, 0, 1},
11760         {0x161, 0, 1},
11761         {0x162, 0, 1},
11762         {0x163, 0, 1},
11763         {0x164, 0, 0},
11764         {0x165, 0, 0},
11765         {0x166, 0, 0},
11766         {0x167, 0, 0},
11767         {0x168, 0, 0},
11768         {0x169, 0x2, 1},
11769         {0x16A, 0, 1},
11770         {0x16B, 0, 1},
11771         {0x16C, 0, 1},
11772         {0x16D, 0, 0},
11773         {0x170, 0, 0},
11774         {0x171, 0x77, 0},
11775         {0x172, 0x77, 0},
11776         {0x173, 0x77, 0},
11777         {0x174, 0x77, 0},
11778         {0x175, 0, 0},
11779         {0x176, 0x3, 0},
11780         {0x177, 0x37, 0},
11781         {0x178, 0x3, 0},
11782         {0x179, 0, 0},
11783         {0x17A, 0x21, 0},
11784         {0x17B, 0x21, 0},
11785         {0x17C, 0, 0},
11786         {0x17D, 0xaa, 0},
11787         {0x17E, 0, 0},
11788         {0x17F, 0xaa, 0},
11789         {0x180, 0, 0},
11790         {0x190, 0, 0},
11791         {0x191, 0x77, 0},
11792         {0x192, 0x77, 0},
11793         {0x193, 0x77, 0},
11794         {0x194, 0x77, 0},
11795         {0x195, 0, 0},
11796         {0x196, 0x3, 0},
11797         {0x197, 0x37, 0},
11798         {0x198, 0x3, 0},
11799         {0x199, 0, 0},
11800         {0x19A, 0x21, 0},
11801         {0x19B, 0x21, 0},
11802         {0x19C, 0, 0},
11803         {0x19D, 0xaa, 0},
11804         {0x19E, 0, 0},
11805         {0x19F, 0xaa, 0},
11806         {0x1A0, 0, 0},
11807         {0x1A1, 0x2, 0},
11808         {0x1A2, 0xf, 0},
11809         {0x1A3, 0xf, 0},
11810         {0x1A4, 0, 1},
11811         {0x1A5, 0, 1},
11812         {0x1A6, 0, 1},
11813         {0x1A7, 0x2, 0},
11814         {0x1A8, 0xf, 0},
11815         {0x1A9, 0xf, 0},
11816         {0x1AA, 0, 1},
11817         {0x1AB, 0, 1},
11818         {0x1AC, 0, 1},
11819         {0xFFFF, 0, 0},
11820 };
11821
11822 static struct radio_20xx_regs regs_2057_rev5[] = {
11823         {0x00, 0, 1},
11824         {0x01, 0x57, 1},
11825         {0x02, 0x20, 1},
11826         {0x03, 0x1f, 0},
11827         {0x04, 0x4, 0},
11828         {0x05, 0x2, 0},
11829         {0x06, 0x1, 0},
11830         {0x07, 0x1, 0},
11831         {0x08, 0x1, 0},
11832         {0x09, 0x69, 0},
11833         {0x0A, 0x66, 0},
11834         {0x0B, 0x6, 0},
11835         {0x0C, 0x18, 0},
11836         {0x0D, 0x3, 0},
11837         {0x0E, 0x20, 0},
11838         {0x0F, 0x20, 0},
11839         {0x10, 0, 0},
11840         {0x11, 0x7c, 0},
11841         {0x12, 0x42, 0},
11842         {0x13, 0xbd, 0},
11843         {0x14, 0x7, 0},
11844         {0x15, 0x87, 0},
11845         {0x16, 0x8, 0},
11846         {0x17, 0x17, 0},
11847         {0x18, 0x7, 0},
11848         {0x19, 0, 0},
11849         {0x1A, 0x2, 0},
11850         {0x1B, 0x13, 0},
11851         {0x1C, 0x3e, 0},
11852         {0x1D, 0x3e, 0},
11853         {0x1E, 0x96, 0},
11854         {0x1F, 0x4, 0},
11855         {0x20, 0, 0},
11856         {0x21, 0, 0},
11857         {0x22, 0x17, 0},
11858         {0x23, 0x6, 1},
11859         {0x24, 0x1, 0},
11860         {0x25, 0x6, 0},
11861         {0x26, 0x4, 0},
11862         {0x27, 0xd, 0},
11863         {0x28, 0xd, 0},
11864         {0x29, 0x30, 0},
11865         {0x2A, 0x32, 0},
11866         {0x2B, 0x8, 0},
11867         {0x2C, 0x1c, 0},
11868         {0x2D, 0x2, 0},
11869         {0x2E, 0x4, 0},
11870         {0x2F, 0x7f, 0},
11871         {0x30, 0x27, 0},
11872         {0x31, 0, 1},
11873         {0x32, 0, 1},
11874         {0x33, 0, 1},
11875         {0x34, 0, 0},
11876         {0x35, 0x20, 0},
11877         {0x36, 0x18, 0},
11878         {0x37, 0x7, 0},
11879         {0x38, 0x66, 0},
11880         {0x39, 0x66, 0},
11881         {0x3C, 0xff, 0},
11882         {0x3D, 0xff, 0},
11883         {0x40, 0x16, 0},
11884         {0x41, 0x7, 0},
11885         {0x45, 0x3, 0},
11886         {0x46, 0x1, 0},
11887         {0x47, 0x7, 0},
11888         {0x4B, 0x66, 0},
11889         {0x4C, 0x66, 0},
11890         {0x4D, 0, 0},
11891         {0x4E, 0x4, 0},
11892         {0x4F, 0xc, 0},
11893         {0x50, 0, 0},
11894         {0x51, 0x70, 1},
11895         {0x56, 0x7, 0},
11896         {0x57, 0, 0},
11897         {0x58, 0, 0},
11898         {0x59, 0x88, 1},
11899         {0x5A, 0, 0},
11900         {0x5B, 0x1f, 0},
11901         {0x5C, 0x20, 1},
11902         {0x5D, 0x1, 0},
11903         {0x5E, 0x30, 0},
11904         {0x5F, 0x70, 0},
11905         {0x60, 0, 0},
11906         {0x61, 0, 0},
11907         {0x62, 0x33, 1},
11908         {0x63, 0xf, 1},
11909         {0x64, 0xf, 1},
11910         {0x65, 0, 0},
11911         {0x66, 0x11, 0},
11912         {0x80, 0x3c, 0},
11913         {0x81, 0x1, 1},
11914         {0x82, 0xa, 0},
11915         {0x85, 0, 0},
11916         {0x86, 0x40, 0},
11917         {0x87, 0x40, 0},
11918         {0x88, 0x88, 0},
11919         {0x89, 0x10, 0},
11920         {0x8A, 0xf0, 0},
11921         {0x8B, 0x10, 0},
11922         {0x8C, 0xf0, 0},
11923         {0x8F, 0x10, 0},
11924         {0x90, 0x55, 0},
11925         {0x91, 0x3f, 1},
11926         {0x92, 0x36, 1},
11927         {0x93, 0, 0},
11928         {0x94, 0, 0},
11929         {0x95, 0, 0},
11930         {0x96, 0x87, 0},
11931         {0x97, 0x11, 0},
11932         {0x98, 0, 0},
11933         {0x99, 0x33, 0},
11934         {0x9A, 0x88, 0},
11935         {0xA1, 0x20, 1},
11936         {0xA2, 0x3f, 0},
11937         {0xA3, 0x44, 0},
11938         {0xA4, 0x8c, 0},
11939         {0xA5, 0x6c, 0},
11940         {0xA6, 0x22, 0},
11941         {0xA7, 0xbe, 0},
11942         {0xA8, 0x55, 0},
11943         {0xAA, 0xc, 0},
11944         {0xAB, 0xaa, 0},
11945         {0xAC, 0x2, 0},
11946         {0xAD, 0, 0},
11947         {0xAE, 0x10, 0},
11948         {0xAF, 0x1, 0},
11949         {0xB0, 0, 0},
11950         {0xB1, 0, 0},
11951         {0xB2, 0x80, 0},
11952         {0xB3, 0x60, 0},
11953         {0xB4, 0x44, 0},
11954         {0xB5, 0x55, 0},
11955         {0xB6, 0x1, 0},
11956         {0xB7, 0x55, 0},
11957         {0xB8, 0x1, 0},
11958         {0xB9, 0x5, 0},
11959         {0xBA, 0x55, 0},
11960         {0xBB, 0x55, 0},
11961         {0xC3, 0, 0},
11962         {0xC4, 0, 0},
11963         {0xC5, 0, 0},
11964         {0xC6, 0, 0},
11965         {0xC7, 0, 0},
11966         {0xC8, 0, 0},
11967         {0xC9, 0, 0},
11968         {0xCA, 0, 0},
11969         {0xCB, 0, 0},
11970         {0xCD, 0, 0},
11971         {0xCE, 0x5e, 0},
11972         {0xCF, 0xc, 0},
11973         {0xD0, 0xc, 0},
11974         {0xD1, 0xc, 0},
11975         {0xD2, 0, 0},
11976         {0xD3, 0x2b, 0},
11977         {0xD4, 0xc, 0},
11978         {0xD5, 0, 0},
11979         {0xD6, 0x70, 1},
11980         {0xDB, 0x7, 0},
11981         {0xDC, 0, 0},
11982         {0xDD, 0, 0},
11983         {0xDE, 0x88, 1},
11984         {0xDF, 0, 0},
11985         {0xE0, 0x1f, 0},
11986         {0xE1, 0x20, 1},
11987         {0xE2, 0x1, 0},
11988         {0xE3, 0x30, 0},
11989         {0xE4, 0x70, 0},
11990         {0xE5, 0, 0},
11991         {0xE6, 0, 0},
11992         {0xE7, 0x33, 0},
11993         {0xE8, 0xf, 1},
11994         {0xE9, 0xf, 1},
11995         {0xEA, 0, 0},
11996         {0xEB, 0x11, 0},
11997         {0x105, 0x3c, 0},
11998         {0x106, 0x1, 1},
11999         {0x107, 0xa, 0},
12000         {0x10A, 0, 0},
12001         {0x10B, 0x40, 0},
12002         {0x10C, 0x40, 0},
12003         {0x10D, 0x88, 0},
12004         {0x10E, 0x10, 0},
12005         {0x10F, 0xf0, 0},
12006         {0x110, 0x10, 0},
12007         {0x111, 0xf0, 0},
12008         {0x114, 0x10, 0},
12009         {0x115, 0x55, 0},
12010         {0x116, 0x3f, 1},
12011         {0x117, 0x36, 1},
12012         {0x118, 0, 0},
12013         {0x119, 0, 0},
12014         {0x11A, 0, 0},
12015         {0x11B, 0x87, 0},
12016         {0x11C, 0x11, 0},
12017         {0x11D, 0, 0},
12018         {0x11E, 0x33, 0},
12019         {0x11F, 0x88, 0},
12020         {0x126, 0x20, 1},
12021         {0x127, 0x3f, 0},
12022         {0x128, 0x44, 0},
12023         {0x129, 0x8c, 0},
12024         {0x12A, 0x6c, 0},
12025         {0x12B, 0x22, 0},
12026         {0x12C, 0xbe, 0},
12027         {0x12D, 0x55, 0},
12028         {0x12F, 0xc, 0},
12029         {0x130, 0xaa, 0},
12030         {0x131, 0x2, 0},
12031         {0x132, 0, 0},
12032         {0x133, 0x10, 0},
12033         {0x134, 0x1, 0},
12034         {0x135, 0, 0},
12035         {0x136, 0, 0},
12036         {0x137, 0x80, 0},
12037         {0x138, 0x60, 0},
12038         {0x139, 0x44, 0},
12039         {0x13A, 0x55, 0},
12040         {0x13B, 0x1, 0},
12041         {0x13C, 0x55, 0},
12042         {0x13D, 0x1, 0},
12043         {0x13E, 0x5, 0},
12044         {0x13F, 0x55, 0},
12045         {0x140, 0x55, 0},
12046         {0x148, 0, 0},
12047         {0x149, 0, 0},
12048         {0x14A, 0, 0},
12049         {0x14B, 0, 0},
12050         {0x14C, 0, 0},
12051         {0x14D, 0, 0},
12052         {0x14E, 0, 0},
12053         {0x14F, 0, 0},
12054         {0x150, 0, 0},
12055         {0x154, 0xc, 0},
12056         {0x155, 0xc, 0},
12057         {0x156, 0xc, 0},
12058         {0x157, 0, 0},
12059         {0x158, 0x2b, 0},
12060         {0x159, 0x84, 0},
12061         {0x15A, 0x15, 0},
12062         {0x15B, 0xf, 0},
12063         {0x15C, 0, 0},
12064         {0x15D, 0, 0},
12065         {0x15E, 0, 1},
12066         {0x15F, 0, 1},
12067         {0x160, 0, 1},
12068         {0x161, 0, 1},
12069         {0x162, 0, 1},
12070         {0x163, 0, 1},
12071         {0x164, 0, 0},
12072         {0x165, 0, 0},
12073         {0x166, 0, 0},
12074         {0x167, 0, 0},
12075         {0x168, 0, 0},
12076         {0x169, 0, 0},
12077         {0x16A, 0, 1},
12078         {0x16B, 0, 1},
12079         {0x16C, 0, 1},
12080         {0x16D, 0, 0},
12081         {0x170, 0, 0},
12082         {0x171, 0x77, 0},
12083         {0x172, 0x77, 0},
12084         {0x173, 0x77, 0},
12085         {0x174, 0x77, 0},
12086         {0x175, 0, 0},
12087         {0x176, 0x3, 0},
12088         {0x177, 0x37, 0},
12089         {0x178, 0x3, 0},
12090         {0x179, 0, 0},
12091         {0x17B, 0x21, 0},
12092         {0x17C, 0, 0},
12093         {0x17D, 0xaa, 0},
12094         {0x17E, 0, 0},
12095         {0x190, 0, 0},
12096         {0x191, 0x77, 0},
12097         {0x192, 0x77, 0},
12098         {0x193, 0x77, 0},
12099         {0x194, 0x77, 0},
12100         {0x195, 0, 0},
12101         {0x196, 0x3, 0},
12102         {0x197, 0x37, 0},
12103         {0x198, 0x3, 0},
12104         {0x199, 0, 0},
12105         {0x19B, 0x21, 0},
12106         {0x19C, 0, 0},
12107         {0x19D, 0xaa, 0},
12108         {0x19E, 0, 0},
12109         {0x1A1, 0x2, 0},
12110         {0x1A2, 0xf, 0},
12111         {0x1A3, 0xf, 0},
12112         {0x1A4, 0, 1},
12113         {0x1A5, 0, 1},
12114         {0x1A6, 0, 1},
12115         {0x1A7, 0x2, 0},
12116         {0x1A8, 0xf, 0},
12117         {0x1A9, 0xf, 0},
12118         {0x1AA, 0, 1},
12119         {0x1AB, 0, 1},
12120         {0x1AC, 0, 1},
12121         {0x1AD, 0x84, 0},
12122         {0x1AE, 0x60, 0},
12123         {0x1AF, 0x47, 0},
12124         {0x1B0, 0x47, 0},
12125         {0x1B1, 0, 0},
12126         {0x1B2, 0, 0},
12127         {0x1B3, 0, 0},
12128         {0x1B4, 0, 0},
12129         {0x1B5, 0, 0},
12130         {0x1B6, 0, 0},
12131         {0x1B7, 0xc, 1},
12132         {0x1B8, 0, 0},
12133         {0x1B9, 0, 0},
12134         {0x1BA, 0, 0},
12135         {0x1BB, 0, 0},
12136         {0x1BC, 0, 0},
12137         {0x1BD, 0, 0},
12138         {0x1BE, 0, 0},
12139         {0x1BF, 0, 0},
12140         {0x1C0, 0, 0},
12141         {0x1C1, 0x1, 1},
12142         {0x1C2, 0x80, 1},
12143         {0x1C3, 0, 0},
12144         {0x1C4, 0, 0},
12145         {0x1C5, 0, 0},
12146         {0x1C6, 0, 0},
12147         {0x1C7, 0, 0},
12148         {0x1C8, 0, 0},
12149         {0x1C9, 0, 0},
12150         {0x1CA, 0, 0},
12151         {0xFFFF, 0, 0}
12152 };
12153
12154 static struct radio_20xx_regs regs_2057_rev5v1[] = {
12155         {0x00, 0x15, 1},
12156         {0x01, 0x57, 1},
12157         {0x02, 0x20, 1},
12158         {0x03, 0x1f, 0},
12159         {0x04, 0x4, 0},
12160         {0x05, 0x2, 0},
12161         {0x06, 0x1, 0},
12162         {0x07, 0x1, 0},
12163         {0x08, 0x1, 0},
12164         {0x09, 0x69, 0},
12165         {0x0A, 0x66, 0},
12166         {0x0B, 0x6, 0},
12167         {0x0C, 0x18, 0},
12168         {0x0D, 0x3, 0},
12169         {0x0E, 0x20, 0},
12170         {0x0F, 0x20, 0},
12171         {0x10, 0, 0},
12172         {0x11, 0x7c, 0},
12173         {0x12, 0x42, 0},
12174         {0x13, 0xbd, 0},
12175         {0x14, 0x7, 0},
12176         {0x15, 0x87, 0},
12177         {0x16, 0x8, 0},
12178         {0x17, 0x17, 0},
12179         {0x18, 0x7, 0},
12180         {0x19, 0, 0},
12181         {0x1A, 0x2, 0},
12182         {0x1B, 0x13, 0},
12183         {0x1C, 0x3e, 0},
12184         {0x1D, 0x3e, 0},
12185         {0x1E, 0x96, 0},
12186         {0x1F, 0x4, 0},
12187         {0x20, 0, 0},
12188         {0x21, 0, 0},
12189         {0x22, 0x17, 0},
12190         {0x23, 0x6, 1},
12191         {0x24, 0x1, 0},
12192         {0x25, 0x6, 0},
12193         {0x26, 0x4, 0},
12194         {0x27, 0xd, 0},
12195         {0x28, 0xd, 0},
12196         {0x29, 0x30, 0},
12197         {0x2A, 0x32, 0},
12198         {0x2B, 0x8, 0},
12199         {0x2C, 0x1c, 0},
12200         {0x2D, 0x2, 0},
12201         {0x2E, 0x4, 0},
12202         {0x2F, 0x7f, 0},
12203         {0x30, 0x27, 0},
12204         {0x31, 0, 1},
12205         {0x32, 0, 1},
12206         {0x33, 0, 1},
12207         {0x34, 0, 0},
12208         {0x35, 0x20, 0},
12209         {0x36, 0x18, 0},
12210         {0x37, 0x7, 0},
12211         {0x38, 0x66, 0},
12212         {0x39, 0x66, 0},
12213         {0x3C, 0xff, 0},
12214         {0x3D, 0xff, 0},
12215         {0x40, 0x16, 0},
12216         {0x41, 0x7, 0},
12217         {0x45, 0x3, 0},
12218         {0x46, 0x1, 0},
12219         {0x47, 0x7, 0},
12220         {0x4B, 0x66, 0},
12221         {0x4C, 0x66, 0},
12222         {0x4D, 0, 0},
12223         {0x4E, 0x4, 0},
12224         {0x4F, 0xc, 0},
12225         {0x50, 0, 0},
12226         {0x51, 0x70, 1},
12227         {0x56, 0x7, 0},
12228         {0x57, 0, 0},
12229         {0x58, 0, 0},
12230         {0x59, 0x88, 1},
12231         {0x5A, 0, 0},
12232         {0x5B, 0x1f, 0},
12233         {0x5C, 0x20, 1},
12234         {0x5D, 0x1, 0},
12235         {0x5E, 0x30, 0},
12236         {0x5F, 0x70, 0},
12237         {0x60, 0, 0},
12238         {0x61, 0, 0},
12239         {0x62, 0x33, 1},
12240         {0x63, 0xf, 1},
12241         {0x64, 0xf, 1},
12242         {0x65, 0, 0},
12243         {0x66, 0x11, 0},
12244         {0x80, 0x3c, 0},
12245         {0x81, 0x1, 1},
12246         {0x82, 0xa, 0},
12247         {0x85, 0, 0},
12248         {0x86, 0x40, 0},
12249         {0x87, 0x40, 0},
12250         {0x88, 0x88, 0},
12251         {0x89, 0x10, 0},
12252         {0x8A, 0xf0, 0},
12253         {0x8B, 0x10, 0},
12254         {0x8C, 0xf0, 0},
12255         {0x8F, 0x10, 0},
12256         {0x90, 0x55, 0},
12257         {0x91, 0x3f, 1},
12258         {0x92, 0x36, 1},
12259         {0x93, 0, 0},
12260         {0x94, 0, 0},
12261         {0x95, 0, 0},
12262         {0x96, 0x87, 0},
12263         {0x97, 0x11, 0},
12264         {0x98, 0, 0},
12265         {0x99, 0x33, 0},
12266         {0x9A, 0x88, 0},
12267         {0xA1, 0x20, 1},
12268         {0xA2, 0x3f, 0},
12269         {0xA3, 0x44, 0},
12270         {0xA4, 0x8c, 0},
12271         {0xA5, 0x6c, 0},
12272         {0xA6, 0x22, 0},
12273         {0xA7, 0xbe, 0},
12274         {0xA8, 0x55, 0},
12275         {0xAA, 0xc, 0},
12276         {0xAB, 0xaa, 0},
12277         {0xAC, 0x2, 0},
12278         {0xAD, 0, 0},
12279         {0xAE, 0x10, 0},
12280         {0xAF, 0x1, 0},
12281         {0xB0, 0, 0},
12282         {0xB1, 0, 0},
12283         {0xB2, 0x80, 0},
12284         {0xB3, 0x60, 0},
12285         {0xB4, 0x44, 0},
12286         {0xB5, 0x55, 0},
12287         {0xB6, 0x1, 0},
12288         {0xB7, 0x55, 0},
12289         {0xB8, 0x1, 0},
12290         {0xB9, 0x5, 0},
12291         {0xBA, 0x55, 0},
12292         {0xBB, 0x55, 0},
12293         {0xC3, 0, 0},
12294         {0xC4, 0, 0},
12295         {0xC5, 0, 0},
12296         {0xC6, 0, 0},
12297         {0xC7, 0, 0},
12298         {0xC8, 0, 0},
12299         {0xC9, 0x1, 1},
12300         {0xCA, 0, 0},
12301         {0xCB, 0, 0},
12302         {0xCD, 0, 0},
12303         {0xCE, 0x5e, 0},
12304         {0xCF, 0xc, 0},
12305         {0xD0, 0xc, 0},
12306         {0xD1, 0xc, 0},
12307         {0xD2, 0, 0},
12308         {0xD3, 0x2b, 0},
12309         {0xD4, 0xc, 0},
12310         {0xD5, 0, 0},
12311         {0xD6, 0x70, 1},
12312         {0xDB, 0x7, 0},
12313         {0xDC, 0, 0},
12314         {0xDD, 0, 0},
12315         {0xDE, 0x88, 1},
12316         {0xDF, 0, 0},
12317         {0xE0, 0x1f, 0},
12318         {0xE1, 0x20, 1},
12319         {0xE2, 0x1, 0},
12320         {0xE3, 0x30, 0},
12321         {0xE4, 0x70, 0},
12322         {0xE5, 0, 0},
12323         {0xE6, 0, 0},
12324         {0xE7, 0x33, 0},
12325         {0xE8, 0xf, 1},
12326         {0xE9, 0xf, 1},
12327         {0xEA, 0, 0},
12328         {0xEB, 0x11, 0},
12329         {0x105, 0x3c, 0},
12330         {0x106, 0x1, 1},
12331         {0x107, 0xa, 0},
12332         {0x10A, 0, 0},
12333         {0x10B, 0x40, 0},
12334         {0x10C, 0x40, 0},
12335         {0x10D, 0x88, 0},
12336         {0x10E, 0x10, 0},
12337         {0x10F, 0xf0, 0},
12338         {0x110, 0x10, 0},
12339         {0x111, 0xf0, 0},
12340         {0x114, 0x10, 0},
12341         {0x115, 0x55, 0},
12342         {0x116, 0x3f, 1},
12343         {0x117, 0x36, 1},
12344         {0x118, 0, 0},
12345         {0x119, 0, 0},
12346         {0x11A, 0, 0},
12347         {0x11B, 0x87, 0},
12348         {0x11C, 0x11, 0},
12349         {0x11D, 0, 0},
12350         {0x11E, 0x33, 0},
12351         {0x11F, 0x88, 0},
12352         {0x126, 0x20, 1},
12353         {0x127, 0x3f, 0},
12354         {0x128, 0x44, 0},
12355         {0x129, 0x8c, 0},
12356         {0x12A, 0x6c, 0},
12357         {0x12B, 0x22, 0},
12358         {0x12C, 0xbe, 0},
12359         {0x12D, 0x55, 0},
12360         {0x12F, 0xc, 0},
12361         {0x130, 0xaa, 0},
12362         {0x131, 0x2, 0},
12363         {0x132, 0, 0},
12364         {0x133, 0x10, 0},
12365         {0x134, 0x1, 0},
12366         {0x135, 0, 0},
12367         {0x136, 0, 0},
12368         {0x137, 0x80, 0},
12369         {0x138, 0x60, 0},
12370         {0x139, 0x44, 0},
12371         {0x13A, 0x55, 0},
12372         {0x13B, 0x1, 0},
12373         {0x13C, 0x55, 0},
12374         {0x13D, 0x1, 0},
12375         {0x13E, 0x5, 0},
12376         {0x13F, 0x55, 0},
12377         {0x140, 0x55, 0},
12378         {0x148, 0, 0},
12379         {0x149, 0, 0},
12380         {0x14A, 0, 0},
12381         {0x14B, 0, 0},
12382         {0x14C, 0, 0},
12383         {0x14D, 0, 0},
12384         {0x14E, 0x1, 1},
12385         {0x14F, 0, 0},
12386         {0x150, 0, 0},
12387         {0x154, 0xc, 0},
12388         {0x155, 0xc, 0},
12389         {0x156, 0xc, 0},
12390         {0x157, 0, 0},
12391         {0x158, 0x2b, 0},
12392         {0x159, 0x84, 0},
12393         {0x15A, 0x15, 0},
12394         {0x15B, 0xf, 0},
12395         {0x15C, 0, 0},
12396         {0x15D, 0, 0},
12397         {0x15E, 0, 1},
12398         {0x15F, 0, 1},
12399         {0x160, 0, 1},
12400         {0x161, 0, 1},
12401         {0x162, 0, 1},
12402         {0x163, 0, 1},
12403         {0x164, 0, 0},
12404         {0x165, 0, 0},
12405         {0x166, 0, 0},
12406         {0x167, 0, 0},
12407         {0x168, 0, 0},
12408         {0x169, 0, 0},
12409         {0x16A, 0, 1},
12410         {0x16B, 0, 1},
12411         {0x16C, 0, 1},
12412         {0x16D, 0, 0},
12413         {0x170, 0, 0},
12414         {0x171, 0x77, 0},
12415         {0x172, 0x77, 0},
12416         {0x173, 0x77, 0},
12417         {0x174, 0x77, 0},
12418         {0x175, 0, 0},
12419         {0x176, 0x3, 0},
12420         {0x177, 0x37, 0},
12421         {0x178, 0x3, 0},
12422         {0x179, 0, 0},
12423         {0x17B, 0x21, 0},
12424         {0x17C, 0, 0},
12425         {0x17D, 0xaa, 0},
12426         {0x17E, 0, 0},
12427         {0x190, 0, 0},
12428         {0x191, 0x77, 0},
12429         {0x192, 0x77, 0},
12430         {0x193, 0x77, 0},
12431         {0x194, 0x77, 0},
12432         {0x195, 0, 0},
12433         {0x196, 0x3, 0},
12434         {0x197, 0x37, 0},
12435         {0x198, 0x3, 0},
12436         {0x199, 0, 0},
12437         {0x19B, 0x21, 0},
12438         {0x19C, 0, 0},
12439         {0x19D, 0xaa, 0},
12440         {0x19E, 0, 0},
12441         {0x1A1, 0x2, 0},
12442         {0x1A2, 0xf, 0},
12443         {0x1A3, 0xf, 0},
12444         {0x1A4, 0, 1},
12445         {0x1A5, 0, 1},
12446         {0x1A6, 0, 1},
12447         {0x1A7, 0x2, 0},
12448         {0x1A8, 0xf, 0},
12449         {0x1A9, 0xf, 0},
12450         {0x1AA, 0, 1},
12451         {0x1AB, 0, 1},
12452         {0x1AC, 0, 1},
12453         {0x1AD, 0x84, 0},
12454         {0x1AE, 0x60, 0},
12455         {0x1AF, 0x47, 0},
12456         {0x1B0, 0x47, 0},
12457         {0x1B1, 0, 0},
12458         {0x1B2, 0, 0},
12459         {0x1B3, 0, 0},
12460         {0x1B4, 0, 0},
12461         {0x1B5, 0, 0},
12462         {0x1B6, 0, 0},
12463         {0x1B7, 0xc, 1},
12464         {0x1B8, 0, 0},
12465         {0x1B9, 0, 0},
12466         {0x1BA, 0, 0},
12467         {0x1BB, 0, 0},
12468         {0x1BC, 0, 0},
12469         {0x1BD, 0, 0},
12470         {0x1BE, 0, 0},
12471         {0x1BF, 0, 0},
12472         {0x1C0, 0, 0},
12473         {0x1C1, 0x1, 1},
12474         {0x1C2, 0x80, 1},
12475         {0x1C3, 0, 0},
12476         {0x1C4, 0, 0},
12477         {0x1C5, 0, 0},
12478         {0x1C6, 0, 0},
12479         {0x1C7, 0, 0},
12480         {0x1C8, 0, 0},
12481         {0x1C9, 0, 0},
12482         {0x1CA, 0, 0},
12483         {0xFFFF, 0, 0}
12484 };
12485
12486 static struct radio_20xx_regs regs_2057_rev7[] = {
12487         {0x00, 0, 1},
12488         {0x01, 0x57, 1},
12489         {0x02, 0x20, 1},
12490         {0x03, 0x1f, 0},
12491         {0x04, 0x4, 0},
12492         {0x05, 0x2, 0},
12493         {0x06, 0x1, 0},
12494         {0x07, 0x1, 0},
12495         {0x08, 0x1, 0},
12496         {0x09, 0x69, 0},
12497         {0x0A, 0x66, 0},
12498         {0x0B, 0x6, 0},
12499         {0x0C, 0x18, 0},
12500         {0x0D, 0x3, 0},
12501         {0x0E, 0x20, 0},
12502         {0x0F, 0x20, 0},
12503         {0x10, 0, 0},
12504         {0x11, 0x7c, 0},
12505         {0x12, 0x42, 0},
12506         {0x13, 0xbd, 0},
12507         {0x14, 0x7, 0},
12508         {0x15, 0x87, 0},
12509         {0x16, 0x8, 0},
12510         {0x17, 0x17, 0},
12511         {0x18, 0x7, 0},
12512         {0x19, 0, 0},
12513         {0x1A, 0x2, 0},
12514         {0x1B, 0x13, 0},
12515         {0x1C, 0x3e, 0},
12516         {0x1D, 0x3e, 0},
12517         {0x1E, 0x96, 0},
12518         {0x1F, 0x4, 0},
12519         {0x20, 0, 0},
12520         {0x21, 0, 0},
12521         {0x22, 0x17, 0},
12522         {0x23, 0x6, 0},
12523         {0x24, 0x1, 0},
12524         {0x25, 0x6, 0},
12525         {0x26, 0x4, 0},
12526         {0x27, 0xd, 0},
12527         {0x28, 0xd, 0},
12528         {0x29, 0x30, 0},
12529         {0x2A, 0x32, 0},
12530         {0x2B, 0x8, 0},
12531         {0x2C, 0x1c, 0},
12532         {0x2D, 0x2, 0},
12533         {0x2E, 0x4, 0},
12534         {0x2F, 0x7f, 0},
12535         {0x30, 0x27, 0},
12536         {0x31, 0, 1},
12537         {0x32, 0, 1},
12538         {0x33, 0, 1},
12539         {0x34, 0, 0},
12540         {0x35, 0x20, 0},
12541         {0x36, 0x18, 0},
12542         {0x37, 0x7, 0},
12543         {0x38, 0x66, 0},
12544         {0x39, 0x66, 0},
12545         {0x3A, 0x66, 0},
12546         {0x3B, 0x66, 0},
12547         {0x3C, 0xff, 0},
12548         {0x3D, 0xff, 0},
12549         {0x3E, 0xff, 0},
12550         {0x3F, 0xff, 0},
12551         {0x40, 0x16, 0},
12552         {0x41, 0x7, 0},
12553         {0x42, 0x19, 0},
12554         {0x43, 0x7, 0},
12555         {0x44, 0x6, 0},
12556         {0x45, 0x3, 0},
12557         {0x46, 0x1, 0},
12558         {0x47, 0x7, 0},
12559         {0x48, 0x33, 0},
12560         {0x49, 0x5, 0},
12561         {0x4A, 0x77, 0},
12562         {0x4B, 0x66, 0},
12563         {0x4C, 0x66, 0},
12564         {0x4D, 0, 0},
12565         {0x4E, 0x4, 0},
12566         {0x4F, 0xc, 0},
12567         {0x50, 0, 0},
12568         {0x51, 0x70, 1},
12569         {0x56, 0x7, 0},
12570         {0x57, 0, 0},
12571         {0x58, 0, 0},
12572         {0x59, 0x88, 1},
12573         {0x5A, 0, 0},
12574         {0x5B, 0x1f, 0},
12575         {0x5C, 0x20, 1},
12576         {0x5D, 0x1, 0},
12577         {0x5E, 0x30, 0},
12578         {0x5F, 0x70, 0},
12579         {0x60, 0, 0},
12580         {0x61, 0, 0},
12581         {0x62, 0x33, 1},
12582         {0x63, 0xf, 1},
12583         {0x64, 0x13, 1},
12584         {0x65, 0, 0},
12585         {0x66, 0xee, 1},
12586         {0x69, 0, 0},
12587         {0x6A, 0x7e, 0},
12588         {0x6B, 0x3f, 0},
12589         {0x6C, 0x7f, 0},
12590         {0x6D, 0x78, 0},
12591         {0x6E, 0x58, 1},
12592         {0x6F, 0x88, 0},
12593         {0x70, 0x8, 0},
12594         {0x71, 0xf, 0},
12595         {0x72, 0xbc, 0},
12596         {0x73, 0x8, 0},
12597         {0x74, 0x60, 0},
12598         {0x75, 0x13, 1},
12599         {0x76, 0x70, 0},
12600         {0x77, 0, 0},
12601         {0x78, 0, 0},
12602         {0x79, 0, 0},
12603         {0x7A, 0x33, 0},
12604         {0x7B, 0x13, 1},
12605         {0x7C, 0x14, 1},
12606         {0x7D, 0xee, 1},
12607         {0x80, 0x3c, 0},
12608         {0x81, 0x1, 1},
12609         {0x82, 0xa, 0},
12610         {0x83, 0x9d, 0},
12611         {0x84, 0xa, 0},
12612         {0x85, 0, 0},
12613         {0x86, 0x40, 0},
12614         {0x87, 0x40, 0},
12615         {0x88, 0x88, 0},
12616         {0x89, 0x10, 0},
12617         {0x8A, 0xf0, 0},
12618         {0x8B, 0x10, 0},
12619         {0x8C, 0xf0, 0},
12620         {0x8D, 0, 0},
12621         {0x8E, 0, 0},
12622         {0x8F, 0x10, 0},
12623         {0x90, 0x55, 0},
12624         {0x91, 0x3f, 1},
12625         {0x92, 0x36, 1},
12626         {0x93, 0, 0},
12627         {0x94, 0, 0},
12628         {0x95, 0, 0},
12629         {0x96, 0x87, 0},
12630         {0x97, 0x11, 0},
12631         {0x98, 0, 0},
12632         {0x99, 0x33, 0},
12633         {0x9A, 0x88, 0},
12634         {0x9B, 0, 0},
12635         {0x9C, 0x87, 0},
12636         {0x9D, 0x11, 0},
12637         {0x9E, 0, 0},
12638         {0x9F, 0x33, 0},
12639         {0xA0, 0x88, 0},
12640         {0xA1, 0x20, 1},
12641         {0xA2, 0x3f, 0},
12642         {0xA3, 0x44, 0},
12643         {0xA4, 0x8c, 0},
12644         {0xA5, 0x6c, 0},
12645         {0xA6, 0x22, 0},
12646         {0xA7, 0xbe, 0},
12647         {0xA8, 0x55, 0},
12648         {0xAA, 0xc, 0},
12649         {0xAB, 0xaa, 0},
12650         {0xAC, 0x2, 0},
12651         {0xAD, 0, 0},
12652         {0xAE, 0x10, 0},
12653         {0xAF, 0x1, 0},
12654         {0xB0, 0, 0},
12655         {0xB1, 0, 0},
12656         {0xB2, 0x80, 0},
12657         {0xB3, 0x60, 0},
12658         {0xB4, 0x44, 0},
12659         {0xB5, 0x55, 0},
12660         {0xB6, 0x1, 0},
12661         {0xB7, 0x55, 0},
12662         {0xB8, 0x1, 0},
12663         {0xB9, 0x5, 0},
12664         {0xBA, 0x55, 0},
12665         {0xBB, 0x55, 0},
12666         {0xC1, 0, 0},
12667         {0xC2, 0, 0},
12668         {0xC3, 0, 0},
12669         {0xC4, 0, 0},
12670         {0xC5, 0, 0},
12671         {0xC6, 0, 0},
12672         {0xC7, 0, 0},
12673         {0xC8, 0, 0},
12674         {0xC9, 0, 0},
12675         {0xCA, 0, 0},
12676         {0xCB, 0, 0},
12677         {0xCC, 0, 0},
12678         {0xCD, 0, 0},
12679         {0xCE, 0x5e, 0},
12680         {0xCF, 0xc, 0},
12681         {0xD0, 0xc, 0},
12682         {0xD1, 0xc, 0},
12683         {0xD2, 0, 0},
12684         {0xD3, 0x2b, 0},
12685         {0xD4, 0xc, 0},
12686         {0xD5, 0, 0},
12687         {0xD6, 0x70, 1},
12688         {0xDB, 0x7, 0},
12689         {0xDC, 0, 0},
12690         {0xDD, 0, 0},
12691         {0xDE, 0x88, 1},
12692         {0xDF, 0, 0},
12693         {0xE0, 0x1f, 0},
12694         {0xE1, 0x20, 1},
12695         {0xE2, 0x1, 0},
12696         {0xE3, 0x30, 0},
12697         {0xE4, 0x70, 0},
12698         {0xE5, 0, 0},
12699         {0xE6, 0, 0},
12700         {0xE7, 0x33, 0},
12701         {0xE8, 0xf, 1},
12702         {0xE9, 0x13, 1},
12703         {0xEA, 0, 0},
12704         {0xEB, 0xee, 1},
12705         {0xEE, 0, 0},
12706         {0xEF, 0x7e, 0},
12707         {0xF0, 0x3f, 0},
12708         {0xF1, 0x7f, 0},
12709         {0xF2, 0x78, 0},
12710         {0xF3, 0x58, 1},
12711         {0xF4, 0x88, 0},
12712         {0xF5, 0x8, 0},
12713         {0xF6, 0xf, 0},
12714         {0xF7, 0xbc, 0},
12715         {0xF8, 0x8, 0},
12716         {0xF9, 0x60, 0},
12717         {0xFA, 0x13, 1},
12718         {0xFB, 0x70, 0},
12719         {0xFC, 0, 0},
12720         {0xFD, 0, 0},
12721         {0xFE, 0, 0},
12722         {0xFF, 0x33, 0},
12723         {0x100, 0x13, 1},
12724         {0x101, 0x14, 1},
12725         {0x102, 0xee, 1},
12726         {0x105, 0x3c, 0},
12727         {0x106, 0x1, 1},
12728         {0x107, 0xa, 0},
12729         {0x108, 0x9d, 0},
12730         {0x109, 0xa, 0},
12731         {0x10A, 0, 0},
12732         {0x10B, 0x40, 0},
12733         {0x10C, 0x40, 0},
12734         {0x10D, 0x88, 0},
12735         {0x10E, 0x10, 0},
12736         {0x10F, 0xf0, 0},
12737         {0x110, 0x10, 0},
12738         {0x111, 0xf0, 0},
12739         {0x112, 0, 0},
12740         {0x113, 0, 0},
12741         {0x114, 0x10, 0},
12742         {0x115, 0x55, 0},
12743         {0x116, 0x3f, 1},
12744         {0x117, 0x36, 1},
12745         {0x118, 0, 0},
12746         {0x119, 0, 0},
12747         {0x11A, 0, 0},
12748         {0x11B, 0x87, 0},
12749         {0x11C, 0x11, 0},
12750         {0x11D, 0, 0},
12751         {0x11E, 0x33, 0},
12752         {0x11F, 0x88, 0},
12753         {0x120, 0, 0},
12754         {0x121, 0x87, 0},
12755         {0x122, 0x11, 0},
12756         {0x123, 0, 0},
12757         {0x124, 0x33, 0},
12758         {0x125, 0x88, 0},
12759         {0x126, 0x20, 1},
12760         {0x127, 0x3f, 0},
12761         {0x128, 0x44, 0},
12762         {0x129, 0x8c, 0},
12763         {0x12A, 0x6c, 0},
12764         {0x12B, 0x22, 0},
12765         {0x12C, 0xbe, 0},
12766         {0x12D, 0x55, 0},
12767         {0x12F, 0xc, 0},
12768         {0x130, 0xaa, 0},
12769         {0x131, 0x2, 0},
12770         {0x132, 0, 0},
12771         {0x133, 0x10, 0},
12772         {0x134, 0x1, 0},
12773         {0x135, 0, 0},
12774         {0x136, 0, 0},
12775         {0x137, 0x80, 0},
12776         {0x138, 0x60, 0},
12777         {0x139, 0x44, 0},
12778         {0x13A, 0x55, 0},
12779         {0x13B, 0x1, 0},
12780         {0x13C, 0x55, 0},
12781         {0x13D, 0x1, 0},
12782         {0x13E, 0x5, 0},
12783         {0x13F, 0x55, 0},
12784         {0x140, 0x55, 0},
12785         {0x146, 0, 0},
12786         {0x147, 0, 0},
12787         {0x148, 0, 0},
12788         {0x149, 0, 0},
12789         {0x14A, 0, 0},
12790         {0x14B, 0, 0},
12791         {0x14C, 0, 0},
12792         {0x14D, 0, 0},
12793         {0x14E, 0, 0},
12794         {0x14F, 0, 0},
12795         {0x150, 0, 0},
12796         {0x151, 0, 0},
12797         {0x154, 0xc, 0},
12798         {0x155, 0xc, 0},
12799         {0x156, 0xc, 0},
12800         {0x157, 0, 0},
12801         {0x158, 0x2b, 0},
12802         {0x159, 0x84, 0},
12803         {0x15A, 0x15, 0},
12804         {0x15B, 0xf, 0},
12805         {0x15C, 0, 0},
12806         {0x15D, 0, 0},
12807         {0x15E, 0, 1},
12808         {0x15F, 0, 1},
12809         {0x160, 0, 1},
12810         {0x161, 0, 1},
12811         {0x162, 0, 1},
12812         {0x163, 0, 1},
12813         {0x164, 0, 0},
12814         {0x165, 0, 0},
12815         {0x166, 0, 0},
12816         {0x167, 0, 0},
12817         {0x168, 0, 0},
12818         {0x169, 0, 0},
12819         {0x16A, 0, 1},
12820         {0x16B, 0, 1},
12821         {0x16C, 0, 1},
12822         {0x16D, 0, 0},
12823         {0x170, 0, 0},
12824         {0x171, 0x77, 0},
12825         {0x172, 0x77, 0},
12826         {0x173, 0x77, 0},
12827         {0x174, 0x77, 0},
12828         {0x175, 0, 0},
12829         {0x176, 0x3, 0},
12830         {0x177, 0x37, 0},
12831         {0x178, 0x3, 0},
12832         {0x179, 0, 0},
12833         {0x17A, 0x21, 0},
12834         {0x17B, 0x21, 0},
12835         {0x17C, 0, 0},
12836         {0x17D, 0xaa, 0},
12837         {0x17E, 0, 0},
12838         {0x17F, 0xaa, 0},
12839         {0x180, 0, 0},
12840         {0x190, 0, 0},
12841         {0x191, 0x77, 0},
12842         {0x192, 0x77, 0},
12843         {0x193, 0x77, 0},
12844         {0x194, 0x77, 0},
12845         {0x195, 0, 0},
12846         {0x196, 0x3, 0},
12847         {0x197, 0x37, 0},
12848         {0x198, 0x3, 0},
12849         {0x199, 0, 0},
12850         {0x19A, 0x21, 0},
12851         {0x19B, 0x21, 0},
12852         {0x19C, 0, 0},
12853         {0x19D, 0xaa, 0},
12854         {0x19E, 0, 0},
12855         {0x19F, 0xaa, 0},
12856         {0x1A0, 0, 0},
12857         {0x1A1, 0x2, 0},
12858         {0x1A2, 0xf, 0},
12859         {0x1A3, 0xf, 0},
12860         {0x1A4, 0, 1},
12861         {0x1A5, 0, 1},
12862         {0x1A6, 0, 1},
12863         {0x1A7, 0x2, 0},
12864         {0x1A8, 0xf, 0},
12865         {0x1A9, 0xf, 0},
12866         {0x1AA, 0, 1},
12867         {0x1AB, 0, 1},
12868         {0x1AC, 0, 1},
12869         {0x1AD, 0x84, 0},
12870         {0x1AE, 0x60, 0},
12871         {0x1AF, 0x47, 0},
12872         {0x1B0, 0x47, 0},
12873         {0x1B1, 0, 0},
12874         {0x1B2, 0, 0},
12875         {0x1B3, 0, 0},
12876         {0x1B4, 0, 0},
12877         {0x1B5, 0, 0},
12878         {0x1B6, 0, 0},
12879         {0x1B7, 0x5, 1},
12880         {0x1B8, 0, 0},
12881         {0x1B9, 0, 0},
12882         {0x1BA, 0, 0},
12883         {0x1BB, 0, 0},
12884         {0x1BC, 0, 0},
12885         {0x1BD, 0, 0},
12886         {0x1BE, 0, 0},
12887         {0x1BF, 0, 0},
12888         {0x1C0, 0, 0},
12889         {0x1C1, 0, 0},
12890         {0x1C2, 0xa0, 1},
12891         {0x1C3, 0, 0},
12892         {0x1C4, 0, 0},
12893         {0x1C5, 0, 0},
12894         {0x1C6, 0, 0},
12895         {0x1C7, 0, 0},
12896         {0x1C8, 0, 0},
12897         {0x1C9, 0, 0},
12898         {0x1CA, 0, 0},
12899         {0xFFFF, 0, 0}
12900 };
12901
12902 static struct radio_20xx_regs regs_2057_rev8[] = {
12903         {0x00, 0x8, 1},
12904         {0x01, 0x57, 1},
12905         {0x02, 0x20, 1},
12906         {0x03, 0x1f, 0},
12907         {0x04, 0x4, 0},
12908         {0x05, 0x2, 0},
12909         {0x06, 0x1, 0},
12910         {0x07, 0x1, 0},
12911         {0x08, 0x1, 0},
12912         {0x09, 0x69, 0},
12913         {0x0A, 0x66, 0},
12914         {0x0B, 0x6, 0},
12915         {0x0C, 0x18, 0},
12916         {0x0D, 0x3, 0},
12917         {0x0E, 0x20, 0},
12918         {0x0F, 0x20, 0},
12919         {0x10, 0, 0},
12920         {0x11, 0x7c, 0},
12921         {0x12, 0x42, 0},
12922         {0x13, 0xbd, 0},
12923         {0x14, 0x7, 0},
12924         {0x15, 0x87, 0},
12925         {0x16, 0x8, 0},
12926         {0x17, 0x17, 0},
12927         {0x18, 0x7, 0},
12928         {0x19, 0, 0},
12929         {0x1A, 0x2, 0},
12930         {0x1B, 0x13, 0},
12931         {0x1C, 0x3e, 0},
12932         {0x1D, 0x3e, 0},
12933         {0x1E, 0x96, 0},
12934         {0x1F, 0x4, 0},
12935         {0x20, 0, 0},
12936         {0x21, 0, 0},
12937         {0x22, 0x17, 0},
12938         {0x23, 0x6, 0},
12939         {0x24, 0x1, 0},
12940         {0x25, 0x6, 0},
12941         {0x26, 0x4, 0},
12942         {0x27, 0xd, 0},
12943         {0x28, 0xd, 0},
12944         {0x29, 0x30, 0},
12945         {0x2A, 0x32, 0},
12946         {0x2B, 0x8, 0},
12947         {0x2C, 0x1c, 0},
12948         {0x2D, 0x2, 0},
12949         {0x2E, 0x4, 0},
12950         {0x2F, 0x7f, 0},
12951         {0x30, 0x27, 0},
12952         {0x31, 0, 1},
12953         {0x32, 0, 1},
12954         {0x33, 0, 1},
12955         {0x34, 0, 0},
12956         {0x35, 0x20, 0},
12957         {0x36, 0x18, 0},
12958         {0x37, 0x7, 0},
12959         {0x38, 0x66, 0},
12960         {0x39, 0x66, 0},
12961         {0x3A, 0x66, 0},
12962         {0x3B, 0x66, 0},
12963         {0x3C, 0xff, 0},
12964         {0x3D, 0xff, 0},
12965         {0x3E, 0xff, 0},
12966         {0x3F, 0xff, 0},
12967         {0x40, 0x16, 0},
12968         {0x41, 0x7, 0},
12969         {0x42, 0x19, 0},
12970         {0x43, 0x7, 0},
12971         {0x44, 0x6, 0},
12972         {0x45, 0x3, 0},
12973         {0x46, 0x1, 0},
12974         {0x47, 0x7, 0},
12975         {0x48, 0x33, 0},
12976         {0x49, 0x5, 0},
12977         {0x4A, 0x77, 0},
12978         {0x4B, 0x66, 0},
12979         {0x4C, 0x66, 0},
12980         {0x4D, 0, 0},
12981         {0x4E, 0x4, 0},
12982         {0x4F, 0xc, 0},
12983         {0x50, 0, 0},
12984         {0x51, 0x70, 1},
12985         {0x56, 0x7, 0},
12986         {0x57, 0, 0},
12987         {0x58, 0, 0},
12988         {0x59, 0x88, 1},
12989         {0x5A, 0, 0},
12990         {0x5B, 0x1f, 0},
12991         {0x5C, 0x20, 1},
12992         {0x5D, 0x1, 0},
12993         {0x5E, 0x30, 0},
12994         {0x5F, 0x70, 0},
12995         {0x60, 0, 0},
12996         {0x61, 0, 0},
12997         {0x62, 0x33, 1},
12998         {0x63, 0xf, 1},
12999         {0x64, 0xf, 1},
13000         {0x65, 0, 0},
13001         {0x66, 0x11, 0},
13002         {0x69, 0, 0},
13003         {0x6A, 0x7e, 0},
13004         {0x6B, 0x3f, 0},
13005         {0x6C, 0x7f, 0},
13006         {0x6D, 0x78, 0},
13007         {0x6E, 0x58, 1},
13008         {0x6F, 0x88, 0},
13009         {0x70, 0x8, 0},
13010         {0x71, 0xf, 0},
13011         {0x72, 0xbc, 0},
13012         {0x73, 0x8, 0},
13013         {0x74, 0x60, 0},
13014         {0x75, 0x13, 1},
13015         {0x76, 0x70, 0},
13016         {0x77, 0, 0},
13017         {0x78, 0, 0},
13018         {0x79, 0, 0},
13019         {0x7A, 0x33, 0},
13020         {0x7B, 0x13, 1},
13021         {0x7C, 0xf, 1},
13022         {0x7D, 0xee, 1},
13023         {0x80, 0x3c, 0},
13024         {0x81, 0x1, 1},
13025         {0x82, 0xa, 0},
13026         {0x83, 0x9d, 0},
13027         {0x84, 0xa, 0},
13028         {0x85, 0, 0},
13029         {0x86, 0x40, 0},
13030         {0x87, 0x40, 0},
13031         {0x88, 0x88, 0},
13032         {0x89, 0x10, 0},
13033         {0x8A, 0xf0, 0},
13034         {0x8B, 0x10, 0},
13035         {0x8C, 0xf0, 0},
13036         {0x8D, 0, 0},
13037         {0x8E, 0, 0},
13038         {0x8F, 0x10, 0},
13039         {0x90, 0x55, 0},
13040         {0x91, 0x3f, 1},
13041         {0x92, 0x36, 1},
13042         {0x93, 0, 0},
13043         {0x94, 0, 0},
13044         {0x95, 0, 0},
13045         {0x96, 0x87, 0},
13046         {0x97, 0x11, 0},
13047         {0x98, 0, 0},
13048         {0x99, 0x33, 0},
13049         {0x9A, 0x88, 0},
13050         {0x9B, 0, 0},
13051         {0x9C, 0x87, 0},
13052         {0x9D, 0x11, 0},
13053         {0x9E, 0, 0},
13054         {0x9F, 0x33, 0},
13055         {0xA0, 0x88, 0},
13056         {0xA1, 0x20, 1},
13057         {0xA2, 0x3f, 0},
13058         {0xA3, 0x44, 0},
13059         {0xA4, 0x8c, 0},
13060         {0xA5, 0x6c, 0},
13061         {0xA6, 0x22, 0},
13062         {0xA7, 0xbe, 0},
13063         {0xA8, 0x55, 0},
13064         {0xAA, 0xc, 0},
13065         {0xAB, 0xaa, 0},
13066         {0xAC, 0x2, 0},
13067         {0xAD, 0, 0},
13068         {0xAE, 0x10, 0},
13069         {0xAF, 0x1, 0},
13070         {0xB0, 0, 0},
13071         {0xB1, 0, 0},
13072         {0xB2, 0x80, 0},
13073         {0xB3, 0x60, 0},
13074         {0xB4, 0x44, 0},
13075         {0xB5, 0x55, 0},
13076         {0xB6, 0x1, 0},
13077         {0xB7, 0x55, 0},
13078         {0xB8, 0x1, 0},
13079         {0xB9, 0x5, 0},
13080         {0xBA, 0x55, 0},
13081         {0xBB, 0x55, 0},
13082         {0xC1, 0, 0},
13083         {0xC2, 0, 0},
13084         {0xC3, 0, 0},
13085         {0xC4, 0, 0},
13086         {0xC5, 0, 0},
13087         {0xC6, 0, 0},
13088         {0xC7, 0, 0},
13089         {0xC8, 0, 0},
13090         {0xC9, 0x1, 1},
13091         {0xCA, 0, 0},
13092         {0xCB, 0, 0},
13093         {0xCC, 0, 0},
13094         {0xCD, 0, 0},
13095         {0xCE, 0x5e, 0},
13096         {0xCF, 0xc, 0},
13097         {0xD0, 0xc, 0},
13098         {0xD1, 0xc, 0},
13099         {0xD2, 0, 0},
13100         {0xD3, 0x2b, 0},
13101         {0xD4, 0xc, 0},
13102         {0xD5, 0, 0},
13103         {0xD6, 0x70, 1},
13104         {0xDB, 0x7, 0},
13105         {0xDC, 0, 0},
13106         {0xDD, 0, 0},
13107         {0xDE, 0x88, 1},
13108         {0xDF, 0, 0},
13109         {0xE0, 0x1f, 0},
13110         {0xE1, 0x20, 1},
13111         {0xE2, 0x1, 0},
13112         {0xE3, 0x30, 0},
13113         {0xE4, 0x70, 0},
13114         {0xE5, 0, 0},
13115         {0xE6, 0, 0},
13116         {0xE7, 0x33, 0},
13117         {0xE8, 0xf, 1},
13118         {0xE9, 0xf, 1},
13119         {0xEA, 0, 0},
13120         {0xEB, 0x11, 0},
13121         {0xEE, 0, 0},
13122         {0xEF, 0x7e, 0},
13123         {0xF0, 0x3f, 0},
13124         {0xF1, 0x7f, 0},
13125         {0xF2, 0x78, 0},
13126         {0xF3, 0x58, 1},
13127         {0xF4, 0x88, 0},
13128         {0xF5, 0x8, 0},
13129         {0xF6, 0xf, 0},
13130         {0xF7, 0xbc, 0},
13131         {0xF8, 0x8, 0},
13132         {0xF9, 0x60, 0},
13133         {0xFA, 0x13, 1},
13134         {0xFB, 0x70, 0},
13135         {0xFC, 0, 0},
13136         {0xFD, 0, 0},
13137         {0xFE, 0, 0},
13138         {0xFF, 0x33, 0},
13139         {0x100, 0x13, 1},
13140         {0x101, 0xf, 1},
13141         {0x102, 0xee, 1},
13142         {0x105, 0x3c, 0},
13143         {0x106, 0x1, 1},
13144         {0x107, 0xa, 0},
13145         {0x108, 0x9d, 0},
13146         {0x109, 0xa, 0},
13147         {0x10A, 0, 0},
13148         {0x10B, 0x40, 0},
13149         {0x10C, 0x40, 0},
13150         {0x10D, 0x88, 0},
13151         {0x10E, 0x10, 0},
13152         {0x10F, 0xf0, 0},
13153         {0x110, 0x10, 0},
13154         {0x111, 0xf0, 0},
13155         {0x112, 0, 0},
13156         {0x113, 0, 0},
13157         {0x114, 0x10, 0},
13158         {0x115, 0x55, 0},
13159         {0x116, 0x3f, 1},
13160         {0x117, 0x36, 1},
13161         {0x118, 0, 0},
13162         {0x119, 0, 0},
13163         {0x11A, 0, 0},
13164         {0x11B, 0x87, 0},
13165         {0x11C, 0x11, 0},
13166         {0x11D, 0, 0},
13167         {0x11E, 0x33, 0},
13168         {0x11F, 0x88, 0},
13169         {0x120, 0, 0},
13170         {0x121, 0x87, 0},
13171         {0x122, 0x11, 0},
13172         {0x123, 0, 0},
13173         {0x124, 0x33, 0},
13174         {0x125, 0x88, 0},
13175         {0x126, 0x20, 1},
13176         {0x127, 0x3f, 0},
13177         {0x128, 0x44, 0},
13178         {0x129, 0x8c, 0},
13179         {0x12A, 0x6c, 0},
13180         {0x12B, 0x22, 0},
13181         {0x12C, 0xbe, 0},
13182         {0x12D, 0x55, 0},
13183         {0x12F, 0xc, 0},
13184         {0x130, 0xaa, 0},
13185         {0x131, 0x2, 0},
13186         {0x132, 0, 0},
13187         {0x133, 0x10, 0},
13188         {0x134, 0x1, 0},
13189         {0x135, 0, 0},
13190         {0x136, 0, 0},
13191         {0x137, 0x80, 0},
13192         {0x138, 0x60, 0},
13193         {0x139, 0x44, 0},
13194         {0x13A, 0x55, 0},
13195         {0x13B, 0x1, 0},
13196         {0x13C, 0x55, 0},
13197         {0x13D, 0x1, 0},
13198         {0x13E, 0x5, 0},
13199         {0x13F, 0x55, 0},
13200         {0x140, 0x55, 0},
13201         {0x146, 0, 0},
13202         {0x147, 0, 0},
13203         {0x148, 0, 0},
13204         {0x149, 0, 0},
13205         {0x14A, 0, 0},
13206         {0x14B, 0, 0},
13207         {0x14C, 0, 0},
13208         {0x14D, 0, 0},
13209         {0x14E, 0x1, 1},
13210         {0x14F, 0, 0},
13211         {0x150, 0, 0},
13212         {0x151, 0, 0},
13213         {0x154, 0xc, 0},
13214         {0x155, 0xc, 0},
13215         {0x156, 0xc, 0},
13216         {0x157, 0, 0},
13217         {0x158, 0x2b, 0},
13218         {0x159, 0x84, 0},
13219         {0x15A, 0x15, 0},
13220         {0x15B, 0xf, 0},
13221         {0x15C, 0, 0},
13222         {0x15D, 0, 0},
13223         {0x15E, 0, 1},
13224         {0x15F, 0, 1},
13225         {0x160, 0, 1},
13226         {0x161, 0, 1},
13227         {0x162, 0, 1},
13228         {0x163, 0, 1},
13229         {0x164, 0, 0},
13230         {0x165, 0, 0},
13231         {0x166, 0, 0},
13232         {0x167, 0, 0},
13233         {0x168, 0, 0},
13234         {0x169, 0, 0},
13235         {0x16A, 0, 1},
13236         {0x16B, 0, 1},
13237         {0x16C, 0, 1},
13238         {0x16D, 0, 0},
13239         {0x170, 0, 0},
13240         {0x171, 0x77, 0},
13241         {0x172, 0x77, 0},
13242         {0x173, 0x77, 0},
13243         {0x174, 0x77, 0},
13244         {0x175, 0, 0},
13245         {0x176, 0x3, 0},
13246         {0x177, 0x37, 0},
13247         {0x178, 0x3, 0},
13248         {0x179, 0, 0},
13249         {0x17A, 0x21, 0},
13250         {0x17B, 0x21, 0},
13251         {0x17C, 0, 0},
13252         {0x17D, 0xaa, 0},
13253         {0x17E, 0, 0},
13254         {0x17F, 0xaa, 0},
13255         {0x180, 0, 0},
13256         {0x190, 0, 0},
13257         {0x191, 0x77, 0},
13258         {0x192, 0x77, 0},
13259         {0x193, 0x77, 0},
13260         {0x194, 0x77, 0},
13261         {0x195, 0, 0},
13262         {0x196, 0x3, 0},
13263         {0x197, 0x37, 0},
13264         {0x198, 0x3, 0},
13265         {0x199, 0, 0},
13266         {0x19A, 0x21, 0},
13267         {0x19B, 0x21, 0},
13268         {0x19C, 0, 0},
13269         {0x19D, 0xaa, 0},
13270         {0x19E, 0, 0},
13271         {0x19F, 0xaa, 0},
13272         {0x1A0, 0, 0},
13273         {0x1A1, 0x2, 0},
13274         {0x1A2, 0xf, 0},
13275         {0x1A3, 0xf, 0},
13276         {0x1A4, 0, 1},
13277         {0x1A5, 0, 1},
13278         {0x1A6, 0, 1},
13279         {0x1A7, 0x2, 0},
13280         {0x1A8, 0xf, 0},
13281         {0x1A9, 0xf, 0},
13282         {0x1AA, 0, 1},
13283         {0x1AB, 0, 1},
13284         {0x1AC, 0, 1},
13285         {0x1AD, 0x84, 0},
13286         {0x1AE, 0x60, 0},
13287         {0x1AF, 0x47, 0},
13288         {0x1B0, 0x47, 0},
13289         {0x1B1, 0, 0},
13290         {0x1B2, 0, 0},
13291         {0x1B3, 0, 0},
13292         {0x1B4, 0, 0},
13293         {0x1B5, 0, 0},
13294         {0x1B6, 0, 0},
13295         {0x1B7, 0x5, 1},
13296         {0x1B8, 0, 0},
13297         {0x1B9, 0, 0},
13298         {0x1BA, 0, 0},
13299         {0x1BB, 0, 0},
13300         {0x1BC, 0, 0},
13301         {0x1BD, 0, 0},
13302         {0x1BE, 0, 0},
13303         {0x1BF, 0, 0},
13304         {0x1C0, 0, 0},
13305         {0x1C1, 0, 0},
13306         {0x1C2, 0xa0, 1},
13307         {0x1C3, 0, 0},
13308         {0x1C4, 0, 0},
13309         {0x1C5, 0, 0},
13310         {0x1C6, 0, 0},
13311         {0x1C7, 0, 0},
13312         {0x1C8, 0, 0},
13313         {0x1C9, 0, 0},
13314         {0x1CA, 0, 0},
13315         {0xFFFF, 0, 0}
13316 };
13317
13318 static s16 nphy_def_lnagains[] = { -2, 10, 19, 25 };
13319
13320 static s32 nphy_lnagain_est0[] = { -315, 40370 };
13321 static s32 nphy_lnagain_est1[] = { -224, 23242 };
13322
13323 static const u16 tbl_iqcal_gainparams_nphy[2][NPHY_IQCAL_NUMGAINS][8] = {
13324         {
13325                 {0x000, 0, 0, 2, 0x69, 0x69, 0x69, 0x69},
13326                 {0x700, 7, 0, 0, 0x69, 0x69, 0x69, 0x69},
13327                 {0x710, 7, 1, 0, 0x68, 0x68, 0x68, 0x68},
13328                 {0x720, 7, 2, 0, 0x67, 0x67, 0x67, 0x67},
13329                 {0x730, 7, 3, 0, 0x66, 0x66, 0x66, 0x66},
13330                 {0x740, 7, 4, 0, 0x65, 0x65, 0x65, 0x65},
13331                 {0x741, 7, 4, 1, 0x65, 0x65, 0x65, 0x65},
13332                 {0x742, 7, 4, 2, 0x65, 0x65, 0x65, 0x65},
13333                 {0x743, 7, 4, 3, 0x65, 0x65, 0x65, 0x65}
13334         },
13335         {
13336                 {0x000, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13337                 {0x700, 7, 0, 0, 0x79, 0x79, 0x79, 0x79},
13338                 {0x710, 7, 1, 0, 0x79, 0x79, 0x79, 0x79},
13339                 {0x720, 7, 2, 0, 0x78, 0x78, 0x78, 0x78},
13340                 {0x730, 7, 3, 0, 0x78, 0x78, 0x78, 0x78},
13341                 {0x740, 7, 4, 0, 0x78, 0x78, 0x78, 0x78},
13342                 {0x741, 7, 4, 1, 0x78, 0x78, 0x78, 0x78},
13343                 {0x742, 7, 4, 2, 0x78, 0x78, 0x78, 0x78},
13344                 {0x743, 7, 4, 3, 0x78, 0x78, 0x78, 0x78}
13345         }
13346 };
13347
13348 static const u32 nphy_tpc_txgain[] = {
13349         0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
13350         0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44,
13351         0x03c82a42, 0x03c82944, 0x03c82942, 0x03c82844,
13352         0x03c82842, 0x03c42b44, 0x03c42b42, 0x03c42a44,
13353         0x03c42a42, 0x03c42944, 0x03c42942, 0x03c42844,
13354         0x03c42842, 0x03c42744, 0x03c42742, 0x03c42644,
13355         0x03c42642, 0x03c42544, 0x03c42542, 0x03c42444,
13356         0x03c42442, 0x03c02b44, 0x03c02b42, 0x03c02a44,
13357         0x03c02a42, 0x03c02944, 0x03c02942, 0x03c02844,
13358         0x03c02842, 0x03c02744, 0x03c02742, 0x03b02b44,
13359         0x03b02b42, 0x03b02a44, 0x03b02a42, 0x03b02944,
13360         0x03b02942, 0x03b02844, 0x03b02842, 0x03b02744,
13361         0x03b02742, 0x03b02644, 0x03b02642, 0x03b02544,
13362         0x03b02542, 0x03a02b44, 0x03a02b42, 0x03a02a44,
13363         0x03a02a42, 0x03a02944, 0x03a02942, 0x03a02844,
13364         0x03a02842, 0x03a02744, 0x03a02742, 0x03902b44,
13365         0x03902b42, 0x03902a44, 0x03902a42, 0x03902944,
13366         0x03902942, 0x03902844, 0x03902842, 0x03902744,
13367         0x03902742, 0x03902644, 0x03902642, 0x03902544,
13368         0x03902542, 0x03802b44, 0x03802b42, 0x03802a44,
13369         0x03802a42, 0x03802944, 0x03802942, 0x03802844,
13370         0x03802842, 0x03802744, 0x03802742, 0x03802644,
13371         0x03802642, 0x03802544, 0x03802542, 0x03802444,
13372         0x03802442, 0x03802344, 0x03802342, 0x03802244,
13373         0x03802242, 0x03802144, 0x03802142, 0x03802044,
13374         0x03802042, 0x03801f44, 0x03801f42, 0x03801e44,
13375         0x03801e42, 0x03801d44, 0x03801d42, 0x03801c44,
13376         0x03801c42, 0x03801b44, 0x03801b42, 0x03801a44,
13377         0x03801a42, 0x03801944, 0x03801942, 0x03801844,
13378         0x03801842, 0x03801744, 0x03801742, 0x03801644,
13379         0x03801642, 0x03801544, 0x03801542, 0x03801444,
13380         0x03801442, 0x03801344, 0x03801342, 0x00002b00
13381 };
13382
13383 static const u16 nphy_tpc_loscale[] = {
13384         256, 256, 271, 271, 287, 256, 256, 271,
13385         271, 287, 287, 304, 304, 256, 256, 271,
13386         271, 287, 287, 304, 304, 322, 322, 341,
13387         341, 362, 362, 383, 383, 256, 256, 271,
13388         271, 287, 287, 304, 304, 322, 322, 256,
13389         256, 271, 271, 287, 287, 304, 304, 322,
13390         322, 341, 341, 362, 362, 256, 256, 271,
13391         271, 287, 287, 304, 304, 322, 322, 256,
13392         256, 271, 271, 287, 287, 304, 304, 322,
13393         322, 341, 341, 362, 362, 256, 256, 271,
13394         271, 287, 287, 304, 304, 322, 322, 341,
13395         341, 362, 362, 383, 383, 406, 406, 430,
13396         430, 455, 455, 482, 482, 511, 511, 541,
13397         541, 573, 573, 607, 607, 643, 643, 681,
13398         681, 722, 722, 764, 764, 810, 810, 858,
13399         858, 908, 908, 962, 962, 1019, 1019, 256
13400 };
13401
13402 static u32 nphy_tpc_txgain_ipa[] = {
13403         0x5ff7002d, 0x5ff7002b, 0x5ff7002a, 0x5ff70029,
13404         0x5ff70028, 0x5ff70027, 0x5ff70026, 0x5ff70025,
13405         0x5ef7002d, 0x5ef7002b, 0x5ef7002a, 0x5ef70029,
13406         0x5ef70028, 0x5ef70027, 0x5ef70026, 0x5ef70025,
13407         0x5df7002d, 0x5df7002b, 0x5df7002a, 0x5df70029,
13408         0x5df70028, 0x5df70027, 0x5df70026, 0x5df70025,
13409         0x5cf7002d, 0x5cf7002b, 0x5cf7002a, 0x5cf70029,
13410         0x5cf70028, 0x5cf70027, 0x5cf70026, 0x5cf70025,
13411         0x5bf7002d, 0x5bf7002b, 0x5bf7002a, 0x5bf70029,
13412         0x5bf70028, 0x5bf70027, 0x5bf70026, 0x5bf70025,
13413         0x5af7002d, 0x5af7002b, 0x5af7002a, 0x5af70029,
13414         0x5af70028, 0x5af70027, 0x5af70026, 0x5af70025,
13415         0x59f7002d, 0x59f7002b, 0x59f7002a, 0x59f70029,
13416         0x59f70028, 0x59f70027, 0x59f70026, 0x59f70025,
13417         0x58f7002d, 0x58f7002b, 0x58f7002a, 0x58f70029,
13418         0x58f70028, 0x58f70027, 0x58f70026, 0x58f70025,
13419         0x57f7002d, 0x57f7002b, 0x57f7002a, 0x57f70029,
13420         0x57f70028, 0x57f70027, 0x57f70026, 0x57f70025,
13421         0x56f7002d, 0x56f7002b, 0x56f7002a, 0x56f70029,
13422         0x56f70028, 0x56f70027, 0x56f70026, 0x56f70025,
13423         0x55f7002d, 0x55f7002b, 0x55f7002a, 0x55f70029,
13424         0x55f70028, 0x55f70027, 0x55f70026, 0x55f70025,
13425         0x54f7002d, 0x54f7002b, 0x54f7002a, 0x54f70029,
13426         0x54f70028, 0x54f70027, 0x54f70026, 0x54f70025,
13427         0x53f7002d, 0x53f7002b, 0x53f7002a, 0x53f70029,
13428         0x53f70028, 0x53f70027, 0x53f70026, 0x53f70025,
13429         0x52f7002d, 0x52f7002b, 0x52f7002a, 0x52f70029,
13430         0x52f70028, 0x52f70027, 0x52f70026, 0x52f70025,
13431         0x51f7002d, 0x51f7002b, 0x51f7002a, 0x51f70029,
13432         0x51f70028, 0x51f70027, 0x51f70026, 0x51f70025,
13433         0x50f7002d, 0x50f7002b, 0x50f7002a, 0x50f70029,
13434         0x50f70028, 0x50f70027, 0x50f70026, 0x50f70025
13435 };
13436
13437 static u32 nphy_tpc_txgain_ipa_rev5[] = {
13438         0x1ff7002d, 0x1ff7002b, 0x1ff7002a, 0x1ff70029,
13439         0x1ff70028, 0x1ff70027, 0x1ff70026, 0x1ff70025,
13440         0x1ef7002d, 0x1ef7002b, 0x1ef7002a, 0x1ef70029,
13441         0x1ef70028, 0x1ef70027, 0x1ef70026, 0x1ef70025,
13442         0x1df7002d, 0x1df7002b, 0x1df7002a, 0x1df70029,
13443         0x1df70028, 0x1df70027, 0x1df70026, 0x1df70025,
13444         0x1cf7002d, 0x1cf7002b, 0x1cf7002a, 0x1cf70029,
13445         0x1cf70028, 0x1cf70027, 0x1cf70026, 0x1cf70025,
13446         0x1bf7002d, 0x1bf7002b, 0x1bf7002a, 0x1bf70029,
13447         0x1bf70028, 0x1bf70027, 0x1bf70026, 0x1bf70025,
13448         0x1af7002d, 0x1af7002b, 0x1af7002a, 0x1af70029,
13449         0x1af70028, 0x1af70027, 0x1af70026, 0x1af70025,
13450         0x19f7002d, 0x19f7002b, 0x19f7002a, 0x19f70029,
13451         0x19f70028, 0x19f70027, 0x19f70026, 0x19f70025,
13452         0x18f7002d, 0x18f7002b, 0x18f7002a, 0x18f70029,
13453         0x18f70028, 0x18f70027, 0x18f70026, 0x18f70025,
13454         0x17f7002d, 0x17f7002b, 0x17f7002a, 0x17f70029,
13455         0x17f70028, 0x17f70027, 0x17f70026, 0x17f70025,
13456         0x16f7002d, 0x16f7002b, 0x16f7002a, 0x16f70029,
13457         0x16f70028, 0x16f70027, 0x16f70026, 0x16f70025,
13458         0x15f7002d, 0x15f7002b, 0x15f7002a, 0x15f70029,
13459         0x15f70028, 0x15f70027, 0x15f70026, 0x15f70025,
13460         0x14f7002d, 0x14f7002b, 0x14f7002a, 0x14f70029,
13461         0x14f70028, 0x14f70027, 0x14f70026, 0x14f70025,
13462         0x13f7002d, 0x13f7002b, 0x13f7002a, 0x13f70029,
13463         0x13f70028, 0x13f70027, 0x13f70026, 0x13f70025,
13464         0x12f7002d, 0x12f7002b, 0x12f7002a, 0x12f70029,
13465         0x12f70028, 0x12f70027, 0x12f70026, 0x12f70025,
13466         0x11f7002d, 0x11f7002b, 0x11f7002a, 0x11f70029,
13467         0x11f70028, 0x11f70027, 0x11f70026, 0x11f70025,
13468         0x10f7002d, 0x10f7002b, 0x10f7002a, 0x10f70029,
13469         0x10f70028, 0x10f70027, 0x10f70026, 0x10f70025
13470 };
13471
13472 static u32 nphy_tpc_txgain_ipa_rev6[] = {
13473         0x0ff7002d, 0x0ff7002b, 0x0ff7002a, 0x0ff70029,
13474         0x0ff70028, 0x0ff70027, 0x0ff70026, 0x0ff70025,
13475         0x0ef7002d, 0x0ef7002b, 0x0ef7002a, 0x0ef70029,
13476         0x0ef70028, 0x0ef70027, 0x0ef70026, 0x0ef70025,
13477         0x0df7002d, 0x0df7002b, 0x0df7002a, 0x0df70029,
13478         0x0df70028, 0x0df70027, 0x0df70026, 0x0df70025,
13479         0x0cf7002d, 0x0cf7002b, 0x0cf7002a, 0x0cf70029,
13480         0x0cf70028, 0x0cf70027, 0x0cf70026, 0x0cf70025,
13481         0x0bf7002d, 0x0bf7002b, 0x0bf7002a, 0x0bf70029,
13482         0x0bf70028, 0x0bf70027, 0x0bf70026, 0x0bf70025,
13483         0x0af7002d, 0x0af7002b, 0x0af7002a, 0x0af70029,
13484         0x0af70028, 0x0af70027, 0x0af70026, 0x0af70025,
13485         0x09f7002d, 0x09f7002b, 0x09f7002a, 0x09f70029,
13486         0x09f70028, 0x09f70027, 0x09f70026, 0x09f70025,
13487         0x08f7002d, 0x08f7002b, 0x08f7002a, 0x08f70029,
13488         0x08f70028, 0x08f70027, 0x08f70026, 0x08f70025,
13489         0x07f7002d, 0x07f7002b, 0x07f7002a, 0x07f70029,
13490         0x07f70028, 0x07f70027, 0x07f70026, 0x07f70025,
13491         0x06f7002d, 0x06f7002b, 0x06f7002a, 0x06f70029,
13492         0x06f70028, 0x06f70027, 0x06f70026, 0x06f70025,
13493         0x05f7002d, 0x05f7002b, 0x05f7002a, 0x05f70029,
13494         0x05f70028, 0x05f70027, 0x05f70026, 0x05f70025,
13495         0x04f7002d, 0x04f7002b, 0x04f7002a, 0x04f70029,
13496         0x04f70028, 0x04f70027, 0x04f70026, 0x04f70025,
13497         0x03f7002d, 0x03f7002b, 0x03f7002a, 0x03f70029,
13498         0x03f70028, 0x03f70027, 0x03f70026, 0x03f70025,
13499         0x02f7002d, 0x02f7002b, 0x02f7002a, 0x02f70029,
13500         0x02f70028, 0x02f70027, 0x02f70026, 0x02f70025,
13501         0x01f7002d, 0x01f7002b, 0x01f7002a, 0x01f70029,
13502         0x01f70028, 0x01f70027, 0x01f70026, 0x01f70025,
13503         0x00f7002d, 0x00f7002b, 0x00f7002a, 0x00f70029,
13504         0x00f70028, 0x00f70027, 0x00f70026, 0x00f70025
13505 };
13506
13507 static u32 nphy_tpc_txgain_ipa_2g_2057rev3[] = {
13508         0x70ff0040, 0x70f7003e, 0x70ef003b, 0x70e70039,
13509         0x70df0037, 0x70d70036, 0x70cf0033, 0x70c70032,
13510         0x70bf0031, 0x70b7002f, 0x70af002e, 0x70a7002d,
13511         0x709f002d, 0x7097002c, 0x708f002c, 0x7087002c,
13512         0x707f002b, 0x7077002c, 0x706f002c, 0x7067002d,
13513         0x705f002e, 0x705f002b, 0x705f0029, 0x7057002a,
13514         0x70570028, 0x704f002a, 0x7047002c, 0x7047002a,
13515         0x70470028, 0x70470026, 0x70470024, 0x70470022,
13516         0x7047001f, 0x70370027, 0x70370024, 0x70370022,
13517         0x70370020, 0x7037001f, 0x7037001d, 0x7037001b,
13518         0x7037001a, 0x70370018, 0x70370017, 0x7027001e,
13519         0x7027001d, 0x7027001a, 0x701f0024, 0x701f0022,
13520         0x701f0020, 0x701f001f, 0x701f001d, 0x701f001b,
13521         0x701f001a, 0x701f0018, 0x701f0017, 0x701f0015,
13522         0x701f0014, 0x701f0013, 0x701f0012, 0x701f0011,
13523         0x70170019, 0x70170018, 0x70170016, 0x70170015,
13524         0x70170014, 0x70170013, 0x70170012, 0x70170010,
13525         0x70170010, 0x7017000f, 0x700f001d, 0x700f001b,
13526         0x700f001a, 0x700f0018, 0x700f0017, 0x700f0015,
13527         0x700f0015, 0x700f0013, 0x700f0013, 0x700f0011,
13528         0x700f0010, 0x700f0010, 0x700f000f, 0x700f000e,
13529         0x700f000d, 0x700f000c, 0x700f000b, 0x700f000b,
13530         0x700f000b, 0x700f000a, 0x700f0009, 0x700f0009,
13531         0x700f0009, 0x700f0008, 0x700f0007, 0x700f0007,
13532         0x700f0006, 0x700f0006, 0x700f0006, 0x700f0006,
13533         0x700f0005, 0x700f0005, 0x700f0005, 0x700f0004,
13534         0x700f0004, 0x700f0004, 0x700f0004, 0x700f0004,
13535         0x700f0004, 0x700f0003, 0x700f0003, 0x700f0003,
13536         0x700f0003, 0x700f0002, 0x700f0002, 0x700f0002,
13537         0x700f0002, 0x700f0002, 0x700f0002, 0x700f0001,
13538         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001,
13539         0x700f0001, 0x700f0001, 0x700f0001, 0x700f0001
13540 };
13541
13542 static u32 nphy_tpc_txgain_ipa_2g_2057rev4n6[] = {
13543         0xf0ff0040, 0xf0f7003e, 0xf0ef003b, 0xf0e70039,
13544         0xf0df0037, 0xf0d70036, 0xf0cf0033, 0xf0c70032,
13545         0xf0bf0031, 0xf0b7002f, 0xf0af002e, 0xf0a7002d,
13546         0xf09f002d, 0xf097002c, 0xf08f002c, 0xf087002c,
13547         0xf07f002b, 0xf077002c, 0xf06f002c, 0xf067002d,
13548         0xf05f002e, 0xf05f002b, 0xf05f0029, 0xf057002a,
13549         0xf0570028, 0xf04f002a, 0xf047002c, 0xf047002a,
13550         0xf0470028, 0xf0470026, 0xf0470024, 0xf0470022,
13551         0xf047001f, 0xf0370027, 0xf0370024, 0xf0370022,
13552         0xf0370020, 0xf037001f, 0xf037001d, 0xf037001b,
13553         0xf037001a, 0xf0370018, 0xf0370017, 0xf027001e,
13554         0xf027001d, 0xf027001a, 0xf01f0024, 0xf01f0022,
13555         0xf01f0020, 0xf01f001f, 0xf01f001d, 0xf01f001b,
13556         0xf01f001a, 0xf01f0018, 0xf01f0017, 0xf01f0015,
13557         0xf01f0014, 0xf01f0013, 0xf01f0012, 0xf01f0011,
13558         0xf0170019, 0xf0170018, 0xf0170016, 0xf0170015,
13559         0xf0170014, 0xf0170013, 0xf0170012, 0xf0170010,
13560         0xf0170010, 0xf017000f, 0xf00f001d, 0xf00f001b,
13561         0xf00f001a, 0xf00f0018, 0xf00f0017, 0xf00f0015,
13562         0xf00f0015, 0xf00f0013, 0xf00f0013, 0xf00f0011,
13563         0xf00f0010, 0xf00f0010, 0xf00f000f, 0xf00f000e,
13564         0xf00f000d, 0xf00f000c, 0xf00f000b, 0xf00f000b,
13565         0xf00f000b, 0xf00f000a, 0xf00f0009, 0xf00f0009,
13566         0xf00f0009, 0xf00f0008, 0xf00f0007, 0xf00f0007,
13567         0xf00f0006, 0xf00f0006, 0xf00f0006, 0xf00f0006,
13568         0xf00f0005, 0xf00f0005, 0xf00f0005, 0xf00f0004,
13569         0xf00f0004, 0xf00f0004, 0xf00f0004, 0xf00f0004,
13570         0xf00f0004, 0xf00f0003, 0xf00f0003, 0xf00f0003,
13571         0xf00f0003, 0xf00f0002, 0xf00f0002, 0xf00f0002,
13572         0xf00f0002, 0xf00f0002, 0xf00f0002, 0xf00f0001,
13573         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001,
13574         0xf00f0001, 0xf00f0001, 0xf00f0001, 0xf00f0001
13575 };
13576
13577 static u32 nphy_tpc_txgain_ipa_2g_2057rev5[] = {
13578         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13579         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13580         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13581         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13582         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13583         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13584         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13585         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13586         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13587         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13588         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13589         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13590         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13591         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13592         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13593         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13594         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13595         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13596         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13597         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13598         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13599         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13600         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13601         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13602         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13603         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13604         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13605         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13606         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13607         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13608         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13609         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13610 };
13611
13612 static u32 nphy_tpc_txgain_ipa_2g_2057rev7[] = {
13613         0x30ff0031, 0x30e70031, 0x30e7002e, 0x30cf002e,
13614         0x30bf002e, 0x30af002e, 0x309f002f, 0x307f0033,
13615         0x307f0031, 0x307f002e, 0x3077002e, 0x306f002e,
13616         0x3067002e, 0x305f002f, 0x30570030, 0x3057002d,
13617         0x304f002e, 0x30470031, 0x3047002e, 0x3047002c,
13618         0x30470029, 0x303f002c, 0x303f0029, 0x3037002d,
13619         0x3037002a, 0x30370028, 0x302f002c, 0x302f002a,
13620         0x302f0028, 0x302f0026, 0x3027002c, 0x30270029,
13621         0x30270027, 0x30270025, 0x30270023, 0x301f002c,
13622         0x301f002a, 0x301f0028, 0x301f0025, 0x301f0024,
13623         0x301f0022, 0x301f001f, 0x3017002d, 0x3017002b,
13624         0x30170028, 0x30170026, 0x30170024, 0x30170022,
13625         0x30170020, 0x3017001e, 0x3017001d, 0x3017001b,
13626         0x3017001a, 0x30170018, 0x30170017, 0x30170015,
13627         0x300f002c, 0x300f0029, 0x300f0027, 0x300f0024,
13628         0x300f0022, 0x300f0021, 0x300f001f, 0x300f001d,
13629         0x300f001b, 0x300f001a, 0x300f0018, 0x300f0017,
13630         0x300f0016, 0x300f0015, 0x300f0115, 0x300f0215,
13631         0x300f0315, 0x300f0415, 0x300f0515, 0x300f0615,
13632         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13633         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13634         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13635         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13636         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13637         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13638         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13639         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13640         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13641         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13642         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13643         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715,
13644         0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715
13645 };
13646
13647 static u32 nphy_tpc_txgain_ipa_5g[] = {
13648         0x7ff70035, 0x7ff70033, 0x7ff70032, 0x7ff70031,
13649         0x7ff7002f, 0x7ff7002e, 0x7ff7002d, 0x7ff7002b,
13650         0x7ff7002a, 0x7ff70029, 0x7ff70028, 0x7ff70027,
13651         0x7ff70026, 0x7ff70024, 0x7ff70023, 0x7ff70022,
13652         0x7ef70028, 0x7ef70027, 0x7ef70026, 0x7ef70025,
13653         0x7ef70024, 0x7ef70023, 0x7df70028, 0x7df70027,
13654         0x7df70026, 0x7df70025, 0x7df70024, 0x7df70023,
13655         0x7df70022, 0x7cf70029, 0x7cf70028, 0x7cf70027,
13656         0x7cf70026, 0x7cf70025, 0x7cf70023, 0x7cf70022,
13657         0x7bf70029, 0x7bf70028, 0x7bf70026, 0x7bf70025,
13658         0x7bf70024, 0x7bf70023, 0x7bf70022, 0x7bf70021,
13659         0x7af70029, 0x7af70028, 0x7af70027, 0x7af70026,
13660         0x7af70025, 0x7af70024, 0x7af70023, 0x7af70022,
13661         0x79f70029, 0x79f70028, 0x79f70027, 0x79f70026,
13662         0x79f70025, 0x79f70024, 0x79f70023, 0x79f70022,
13663         0x78f70029, 0x78f70028, 0x78f70027, 0x78f70026,
13664         0x78f70025, 0x78f70024, 0x78f70023, 0x78f70022,
13665         0x77f70029, 0x77f70028, 0x77f70027, 0x77f70026,
13666         0x77f70025, 0x77f70024, 0x77f70023, 0x77f70022,
13667         0x76f70029, 0x76f70028, 0x76f70027, 0x76f70026,
13668         0x76f70024, 0x76f70023, 0x76f70022, 0x76f70021,
13669         0x75f70029, 0x75f70028, 0x75f70027, 0x75f70026,
13670         0x75f70025, 0x75f70024, 0x75f70023, 0x74f70029,
13671         0x74f70028, 0x74f70026, 0x74f70025, 0x74f70024,
13672         0x74f70023, 0x74f70022, 0x73f70029, 0x73f70027,
13673         0x73f70026, 0x73f70025, 0x73f70024, 0x73f70023,
13674         0x73f70022, 0x72f70028, 0x72f70027, 0x72f70026,
13675         0x72f70025, 0x72f70024, 0x72f70023, 0x72f70022,
13676         0x71f70028, 0x71f70027, 0x71f70026, 0x71f70025,
13677         0x71f70024, 0x71f70023, 0x70f70028, 0x70f70027,
13678         0x70f70026, 0x70f70024, 0x70f70023, 0x70f70022,
13679         0x70f70021, 0x70f70020, 0x70f70020, 0x70f7001f
13680 };
13681
13682 static u32 nphy_tpc_txgain_ipa_5g_2057[] = {
13683         0x7f7f0044, 0x7f7f0040, 0x7f7f003c, 0x7f7f0039,
13684         0x7f7f0036, 0x7e7f003c, 0x7e7f0038, 0x7e7f0035,
13685         0x7d7f003c, 0x7d7f0039, 0x7d7f0036, 0x7d7f0033,
13686         0x7c7f003b, 0x7c7f0037, 0x7c7f0034, 0x7b7f003a,
13687         0x7b7f0036, 0x7b7f0033, 0x7a7f003c, 0x7a7f0039,
13688         0x7a7f0036, 0x7a7f0033, 0x797f003b, 0x797f0038,
13689         0x797f0035, 0x797f0032, 0x787f003b, 0x787f0038,
13690         0x787f0035, 0x787f0032, 0x777f003a, 0x777f0037,
13691         0x777f0034, 0x777f0031, 0x767f003a, 0x767f0036,
13692         0x767f0033, 0x767f0031, 0x757f003a, 0x757f0037,
13693         0x757f0034, 0x747f003c, 0x747f0039, 0x747f0036,
13694         0x747f0033, 0x737f003b, 0x737f0038, 0x737f0035,
13695         0x737f0032, 0x727f0039, 0x727f0036, 0x727f0033,
13696         0x727f0030, 0x717f003a, 0x717f0037, 0x717f0034,
13697         0x707f003b, 0x707f0038, 0x707f0035, 0x707f0032,
13698         0x707f002f, 0x707f002d, 0x707f002a, 0x707f0028,
13699         0x707f0025, 0x707f0023, 0x707f0021, 0x707f0020,
13700         0x707f001e, 0x707f001c, 0x707f001b, 0x707f0019,
13701         0x707f0018, 0x707f0016, 0x707f0015, 0x707f0014,
13702         0x707f0013, 0x707f0012, 0x707f0011, 0x707f0010,
13703         0x707f000f, 0x707f000e, 0x707f000d, 0x707f000d,
13704         0x707f000c, 0x707f000b, 0x707f000b, 0x707f000a,
13705         0x707f0009, 0x707f0009, 0x707f0008, 0x707f0008,
13706         0x707f0007, 0x707f0007, 0x707f0007, 0x707f0006,
13707         0x707f0006, 0x707f0006, 0x707f0005, 0x707f0005,
13708         0x707f0005, 0x707f0004, 0x707f0004, 0x707f0004,
13709         0x707f0004, 0x707f0004, 0x707f0003, 0x707f0003,
13710         0x707f0003, 0x707f0003, 0x707f0003, 0x707f0003,
13711         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13712         0x707f0002, 0x707f0002, 0x707f0002, 0x707f0002,
13713         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001,
13714         0x707f0001, 0x707f0001, 0x707f0001, 0x707f0001
13715 };
13716
13717 static u32 nphy_tpc_txgain_ipa_5g_2057rev7[] = {
13718         0x6f7f0031, 0x6f7f002e, 0x6f7f002c, 0x6f7f002a,
13719         0x6f7f0027, 0x6e7f002e, 0x6e7f002c, 0x6e7f002a,
13720         0x6d7f0030, 0x6d7f002d, 0x6d7f002a, 0x6d7f0028,
13721         0x6c7f0030, 0x6c7f002d, 0x6c7f002b, 0x6b7f002e,
13722         0x6b7f002c, 0x6b7f002a, 0x6b7f0027, 0x6a7f002e,
13723         0x6a7f002c, 0x6a7f002a, 0x697f0030, 0x697f002e,
13724         0x697f002b, 0x697f0029, 0x687f002f, 0x687f002d,
13725         0x687f002a, 0x687f0027, 0x677f002f, 0x677f002d,
13726         0x677f002a, 0x667f0031, 0x667f002e, 0x667f002c,
13727         0x667f002a, 0x657f0030, 0x657f002e, 0x657f002b,
13728         0x657f0029, 0x647f0030, 0x647f002d, 0x647f002b,
13729         0x647f0029, 0x637f002f, 0x637f002d, 0x637f002a,
13730         0x627f0030, 0x627f002d, 0x627f002b, 0x627f0029,
13731         0x617f0030, 0x617f002e, 0x617f002b, 0x617f0029,
13732         0x607f002f, 0x607f002d, 0x607f002a, 0x607f0027,
13733         0x607f0026, 0x607f0023, 0x607f0021, 0x607f0020,
13734         0x607f001e, 0x607f001c, 0x607f001a, 0x607f0019,
13735         0x607f0018, 0x607f0016, 0x607f0015, 0x607f0014,
13736         0x607f0012, 0x607f0012, 0x607f0011, 0x607f000f,
13737         0x607f000f, 0x607f000e, 0x607f000d, 0x607f000c,
13738         0x607f000c, 0x607f000b, 0x607f000b, 0x607f000a,
13739         0x607f0009, 0x607f0009, 0x607f0008, 0x607f0008,
13740         0x607f0008, 0x607f0007, 0x607f0007, 0x607f0006,
13741         0x607f0006, 0x607f0005, 0x607f0005, 0x607f0005,
13742         0x607f0005, 0x607f0005, 0x607f0004, 0x607f0004,
13743         0x607f0004, 0x607f0004, 0x607f0003, 0x607f0003,
13744         0x607f0003, 0x607f0003, 0x607f0002, 0x607f0002,
13745         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13746         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13747         0x607f0002, 0x607f0002, 0x607f0002, 0x607f0002,
13748         0x607f0002, 0x607f0001, 0x607f0001, 0x607f0001,
13749         0x607f0001, 0x607f0001, 0x607f0001, 0x607f0001
13750 };
13751
13752 static s8 nphy_papd_pga_gain_delta_ipa_2g[] = {
13753         -114, -108, -98, -91, -84, -78, -70, -62,
13754         -54, -46, -39, -31, -23, -15, -8, 0
13755 };
13756
13757 static s8 nphy_papd_pga_gain_delta_ipa_5g[] = {
13758         -100, -95, -89, -83, -77, -70, -63, -56,
13759         -48, -41, -33, -25, -19, -12, -6, 0
13760 };
13761
13762 static s16 nphy_papd_padgain_dlt_2g_2057rev3n4[] = {
13763         -159, -113, -86, -72, -62, -54, -48, -43,
13764         -39, -35, -31, -28, -25, -23, -20, -18,
13765         -17, -15, -13, -11, -10, -8, -7, -6,
13766         -5, -4, -3, -3, -2, -1, -1, 0
13767 };
13768
13769 static s16 nphy_papd_padgain_dlt_2g_2057rev5[] = {
13770         -109, -109, -82, -68, -58, -50, -44, -39,
13771         -35, -31, -28, -26, -23, -21, -19, -17,
13772         -16, -14, -13, -11, -10, -9, -8, -7,
13773         -5, -5, -4, -3, -2, -1, -1, 0
13774 };
13775
13776 static s16 nphy_papd_padgain_dlt_2g_2057rev7[] = {
13777         -122, -122, -95, -80, -69, -61, -54, -49,
13778         -43, -39, -35, -32, -28, -26, -23, -21,
13779         -18, -16, -15, -13, -11, -10, -8, -7,
13780         -6, -5, -4, -3, -2, -1, -1, 0
13781 };
13782
13783 static s8 nphy_papd_pgagain_dlt_5g_2057[] = {
13784         -107, -101, -92, -85, -78, -71, -62, -55,
13785         -47, -39, -32, -24, -19, -12, -6, 0
13786 };
13787
13788 static s8 nphy_papd_pgagain_dlt_5g_2057rev7[] = {
13789         -110, -104, -95, -88, -81, -74, -66, -58,
13790         -50, -44, -36, -28, -23, -15, -8, 0
13791 };
13792
13793 static u8 pad_gain_codes_used_2057rev5[] = {
13794         20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
13795         10, 9, 8, 7, 6, 5, 4, 3, 2, 1
13796 };
13797
13798 static u8 pad_gain_codes_used_2057rev7[] = {
13799         15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
13800         5, 4, 3, 2, 1
13801 };
13802
13803 static u8 pad_all_gain_codes_2057[] = {
13804         31, 30, 29, 28, 27, 26, 25, 24, 23, 22,
13805         21, 20, 19, 18, 17, 16, 15, 14, 13, 12,
13806         11, 10, 9, 8, 7, 6, 5, 4, 3, 2,
13807         1, 0
13808 };
13809
13810 static u8 pga_all_gain_codes_2057[] = {
13811         15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
13812 };
13813
13814 static u32 nphy_papd_scaltbl[] = {
13815         0x0ae2002f, 0x0a3b0032, 0x09a70035, 0x09220038,
13816         0x0887003c, 0x081f003f, 0x07a20043, 0x07340047,
13817         0x06d2004b, 0x067a004f, 0x06170054, 0x05bf0059,
13818         0x0571005e, 0x051e0064, 0x04d3006a, 0x04910070,
13819         0x044c0077, 0x040f007e, 0x03d90085, 0x03a1008d,
13820         0x036f0095, 0x033d009e, 0x030b00a8, 0x02e000b2,
13821         0x02b900bc, 0x029200c7, 0x026d00d3, 0x024900e0,
13822         0x022900ed, 0x020a00fb, 0x01ec010a, 0x01d0011a,
13823         0x01b7012a, 0x019e013c, 0x0187014f, 0x01720162,
13824         0x015d0177, 0x0149018e, 0x013701a5, 0x012601be,
13825         0x011501d9, 0x010501f5, 0x00f70212, 0x00e90232,
13826         0x00dc0253, 0x00d00276, 0x00c4029c, 0x00b902c3,
13827         0x00af02ed, 0x00a5031a, 0x009c0349, 0x0093037a,
13828         0x008b03af, 0x008303e7, 0x007c0422, 0x00750461,
13829         0x006e04a3, 0x006804ea, 0x00620534, 0x005d0583,
13830         0x005805d7, 0x0053062f, 0x004e068d, 0x004a06f1
13831 };
13832
13833 static u32 nphy_tpc_txgain_rev3[] = {
13834         0x1f410044, 0x1f410042, 0x1f410040, 0x1f41003e,
13835         0x1f41003c, 0x1f41003b, 0x1f410039, 0x1f410037,
13836         0x1e410044, 0x1e410042, 0x1e410040, 0x1e41003e,
13837         0x1e41003c, 0x1e41003b, 0x1e410039, 0x1e410037,
13838         0x1d410044, 0x1d410042, 0x1d410040, 0x1d41003e,
13839         0x1d41003c, 0x1d41003b, 0x1d410039, 0x1d410037,
13840         0x1c410044, 0x1c410042, 0x1c410040, 0x1c41003e,
13841         0x1c41003c, 0x1c41003b, 0x1c410039, 0x1c410037,
13842         0x1b410044, 0x1b410042, 0x1b410040, 0x1b41003e,
13843         0x1b41003c, 0x1b41003b, 0x1b410039, 0x1b410037,
13844         0x1a410044, 0x1a410042, 0x1a410040, 0x1a41003e,
13845         0x1a41003c, 0x1a41003b, 0x1a410039, 0x1a410037,
13846         0x19410044, 0x19410042, 0x19410040, 0x1941003e,
13847         0x1941003c, 0x1941003b, 0x19410039, 0x19410037,
13848         0x18410044, 0x18410042, 0x18410040, 0x1841003e,
13849         0x1841003c, 0x1841003b, 0x18410039, 0x18410037,
13850         0x17410044, 0x17410042, 0x17410040, 0x1741003e,
13851         0x1741003c, 0x1741003b, 0x17410039, 0x17410037,
13852         0x16410044, 0x16410042, 0x16410040, 0x1641003e,
13853         0x1641003c, 0x1641003b, 0x16410039, 0x16410037,
13854         0x15410044, 0x15410042, 0x15410040, 0x1541003e,
13855         0x1541003c, 0x1541003b, 0x15410039, 0x15410037,
13856         0x14410044, 0x14410042, 0x14410040, 0x1441003e,
13857         0x1441003c, 0x1441003b, 0x14410039, 0x14410037,
13858         0x13410044, 0x13410042, 0x13410040, 0x1341003e,
13859         0x1341003c, 0x1341003b, 0x13410039, 0x13410037,
13860         0x12410044, 0x12410042, 0x12410040, 0x1241003e,
13861         0x1241003c, 0x1241003b, 0x12410039, 0x12410037,
13862         0x11410044, 0x11410042, 0x11410040, 0x1141003e,
13863         0x1141003c, 0x1141003b, 0x11410039, 0x11410037,
13864         0x10410044, 0x10410042, 0x10410040, 0x1041003e,
13865         0x1041003c, 0x1041003b, 0x10410039, 0x10410037
13866 };
13867
13868 static u32 nphy_tpc_txgain_HiPwrEPA[] = {
13869         0x0f410044, 0x0f410042, 0x0f410040, 0x0f41003e,
13870         0x0f41003c, 0x0f41003b, 0x0f410039, 0x0f410037,
13871         0x0e410044, 0x0e410042, 0x0e410040, 0x0e41003e,
13872         0x0e41003c, 0x0e41003b, 0x0e410039, 0x0e410037,
13873         0x0d410044, 0x0d410042, 0x0d410040, 0x0d41003e,
13874         0x0d41003c, 0x0d41003b, 0x0d410039, 0x0d410037,
13875         0x0c410044, 0x0c410042, 0x0c410040, 0x0c41003e,
13876         0x0c41003c, 0x0c41003b, 0x0c410039, 0x0c410037,
13877         0x0b410044, 0x0b410042, 0x0b410040, 0x0b41003e,
13878         0x0b41003c, 0x0b41003b, 0x0b410039, 0x0b410037,
13879         0x0a410044, 0x0a410042, 0x0a410040, 0x0a41003e,
13880         0x0a41003c, 0x0a41003b, 0x0a410039, 0x0a410037,
13881         0x09410044, 0x09410042, 0x09410040, 0x0941003e,
13882         0x0941003c, 0x0941003b, 0x09410039, 0x09410037,
13883         0x08410044, 0x08410042, 0x08410040, 0x0841003e,
13884         0x0841003c, 0x0841003b, 0x08410039, 0x08410037,
13885         0x07410044, 0x07410042, 0x07410040, 0x0741003e,
13886         0x0741003c, 0x0741003b, 0x07410039, 0x07410037,
13887         0x06410044, 0x06410042, 0x06410040, 0x0641003e,
13888         0x0641003c, 0x0641003b, 0x06410039, 0x06410037,
13889         0x05410044, 0x05410042, 0x05410040, 0x0541003e,
13890         0x0541003c, 0x0541003b, 0x05410039, 0x05410037,
13891         0x04410044, 0x04410042, 0x04410040, 0x0441003e,
13892         0x0441003c, 0x0441003b, 0x04410039, 0x04410037,
13893         0x03410044, 0x03410042, 0x03410040, 0x0341003e,
13894         0x0341003c, 0x0341003b, 0x03410039, 0x03410037,
13895         0x02410044, 0x02410042, 0x02410040, 0x0241003e,
13896         0x0241003c, 0x0241003b, 0x02410039, 0x02410037,
13897         0x01410044, 0x01410042, 0x01410040, 0x0141003e,
13898         0x0141003c, 0x0141003b, 0x01410039, 0x01410037,
13899         0x00410044, 0x00410042, 0x00410040, 0x0041003e,
13900         0x0041003c, 0x0041003b, 0x00410039, 0x00410037
13901 };
13902
13903 static u32 nphy_tpc_txgain_epa_2057rev3[] = {
13904         0x80f90040, 0x80e10040, 0x80e1003c, 0x80c9003d,
13905         0x80b9003c, 0x80a9003d, 0x80a1003c, 0x8099003b,
13906         0x8091003b, 0x8089003a, 0x8081003a, 0x80790039,
13907         0x80710039, 0x8069003a, 0x8061003b, 0x8059003d,
13908         0x8051003f, 0x80490042, 0x8049003e, 0x8049003b,
13909         0x8041003e, 0x8041003b, 0x8039003e, 0x8039003b,
13910         0x80390038, 0x80390035, 0x8031003a, 0x80310036,
13911         0x80310033, 0x8029003a, 0x80290037, 0x80290034,
13912         0x80290031, 0x80210039, 0x80210036, 0x80210033,
13913         0x80210030, 0x8019003c, 0x80190039, 0x80190036,
13914         0x80190033, 0x80190030, 0x8019002d, 0x8019002b,
13915         0x80190028, 0x8011003a, 0x80110036, 0x80110033,
13916         0x80110030, 0x8011002e, 0x8011002b, 0x80110029,
13917         0x80110027, 0x80110024, 0x80110022, 0x80110020,
13918         0x8011001f, 0x8011001d, 0x8009003a, 0x80090037,
13919         0x80090034, 0x80090031, 0x8009002e, 0x8009002c,
13920         0x80090029, 0x80090027, 0x80090025, 0x80090023,
13921         0x80090021, 0x8009001f, 0x8009001d, 0x8009011d,
13922         0x8009021d, 0x8009031d, 0x8009041d, 0x8009051d,
13923         0x8009061d, 0x8009071d, 0x8009071d, 0x8009071d,
13924         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13925         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13926         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13927         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13928         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13929         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13930         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13931         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13932         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13933         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13934         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d,
13935         0x8009071d, 0x8009071d, 0x8009071d, 0x8009071d
13936 };
13937
13938 static u32 nphy_tpc_txgain_epa_2057rev5[] = {
13939         0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
13940         0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
13941         0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
13942         0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
13943         0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
13944         0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
13945         0x10390038, 0x10390035, 0x1031003a, 0x10310036,
13946         0x10310033, 0x1029003a, 0x10290037, 0x10290034,
13947         0x10290031, 0x10210039, 0x10210036, 0x10210033,
13948         0x10210030, 0x1019003c, 0x10190039, 0x10190036,
13949         0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
13950         0x10190028, 0x1011003a, 0x10110036, 0x10110033,
13951         0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
13952         0x10110027, 0x10110024, 0x10110022, 0x10110020,
13953         0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
13954         0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
13955         0x10090029, 0x10090027, 0x10090025, 0x10090023,
13956         0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
13957         0x1009001a, 0x10090018, 0x10090017, 0x10090016,
13958         0x10090015, 0x10090013, 0x10090012, 0x10090011,
13959         0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
13960         0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
13961         0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
13962         0x10090008, 0x10090008, 0x10090007, 0x10090007,
13963         0x10090007, 0x10090006, 0x10090006, 0x10090005,
13964         0x10090005, 0x10090005, 0x10090005, 0x10090004,
13965         0x10090004, 0x10090004, 0x10090004, 0x10090003,
13966         0x10090003, 0x10090003, 0x10090003, 0x10090003,
13967         0x10090003, 0x10090002, 0x10090002, 0x10090002,
13968         0x10090002, 0x10090002, 0x10090002, 0x10090002,
13969         0x10090002, 0x10090002, 0x10090001, 0x10090001,
13970         0x10090001, 0x10090001, 0x10090001, 0x10090001
13971 };
13972
13973 static u32 nphy_tpc_5GHz_txgain_rev3[] = {
13974         0xcff70044, 0xcff70042, 0xcff70040, 0xcff7003e,
13975         0xcff7003c, 0xcff7003b, 0xcff70039, 0xcff70037,
13976         0xcef70044, 0xcef70042, 0xcef70040, 0xcef7003e,
13977         0xcef7003c, 0xcef7003b, 0xcef70039, 0xcef70037,
13978         0xcdf70044, 0xcdf70042, 0xcdf70040, 0xcdf7003e,
13979         0xcdf7003c, 0xcdf7003b, 0xcdf70039, 0xcdf70037,
13980         0xccf70044, 0xccf70042, 0xccf70040, 0xccf7003e,
13981         0xccf7003c, 0xccf7003b, 0xccf70039, 0xccf70037,
13982         0xcbf70044, 0xcbf70042, 0xcbf70040, 0xcbf7003e,
13983         0xcbf7003c, 0xcbf7003b, 0xcbf70039, 0xcbf70037,
13984         0xcaf70044, 0xcaf70042, 0xcaf70040, 0xcaf7003e,
13985         0xcaf7003c, 0xcaf7003b, 0xcaf70039, 0xcaf70037,
13986         0xc9f70044, 0xc9f70042, 0xc9f70040, 0xc9f7003e,
13987         0xc9f7003c, 0xc9f7003b, 0xc9f70039, 0xc9f70037,
13988         0xc8f70044, 0xc8f70042, 0xc8f70040, 0xc8f7003e,
13989         0xc8f7003c, 0xc8f7003b, 0xc8f70039, 0xc8f70037,
13990         0xc7f70044, 0xc7f70042, 0xc7f70040, 0xc7f7003e,
13991         0xc7f7003c, 0xc7f7003b, 0xc7f70039, 0xc7f70037,
13992         0xc6f70044, 0xc6f70042, 0xc6f70040, 0xc6f7003e,
13993         0xc6f7003c, 0xc6f7003b, 0xc6f70039, 0xc6f70037,
13994         0xc5f70044, 0xc5f70042, 0xc5f70040, 0xc5f7003e,
13995         0xc5f7003c, 0xc5f7003b, 0xc5f70039, 0xc5f70037,
13996         0xc4f70044, 0xc4f70042, 0xc4f70040, 0xc4f7003e,
13997         0xc4f7003c, 0xc4f7003b, 0xc4f70039, 0xc4f70037,
13998         0xc3f70044, 0xc3f70042, 0xc3f70040, 0xc3f7003e,
13999         0xc3f7003c, 0xc3f7003b, 0xc3f70039, 0xc3f70037,
14000         0xc2f70044, 0xc2f70042, 0xc2f70040, 0xc2f7003e,
14001         0xc2f7003c, 0xc2f7003b, 0xc2f70039, 0xc2f70037,
14002         0xc1f70044, 0xc1f70042, 0xc1f70040, 0xc1f7003e,
14003         0xc1f7003c, 0xc1f7003b, 0xc1f70039, 0xc1f70037,
14004         0xc0f70044, 0xc0f70042, 0xc0f70040, 0xc0f7003e,
14005         0xc0f7003c, 0xc0f7003b, 0xc0f70039, 0xc0f70037
14006 };
14007
14008 static u32 nphy_tpc_5GHz_txgain_rev4[] = {
14009         0x2ff20044, 0x2ff20042, 0x2ff20040, 0x2ff2003e,
14010         0x2ff2003c, 0x2ff2003b, 0x2ff20039, 0x2ff20037,
14011         0x2ef20044, 0x2ef20042, 0x2ef20040, 0x2ef2003e,
14012         0x2ef2003c, 0x2ef2003b, 0x2ef20039, 0x2ef20037,
14013         0x2df20044, 0x2df20042, 0x2df20040, 0x2df2003e,
14014         0x2df2003c, 0x2df2003b, 0x2df20039, 0x2df20037,
14015         0x2cf20044, 0x2cf20042, 0x2cf20040, 0x2cf2003e,
14016         0x2cf2003c, 0x2cf2003b, 0x2cf20039, 0x2cf20037,
14017         0x2bf20044, 0x2bf20042, 0x2bf20040, 0x2bf2003e,
14018         0x2bf2003c, 0x2bf2003b, 0x2bf20039, 0x2bf20037,
14019         0x2af20044, 0x2af20042, 0x2af20040, 0x2af2003e,
14020         0x2af2003c, 0x2af2003b, 0x2af20039, 0x2af20037,
14021         0x29f20044, 0x29f20042, 0x29f20040, 0x29f2003e,
14022         0x29f2003c, 0x29f2003b, 0x29f20039, 0x29f20037,
14023         0x28f20044, 0x28f20042, 0x28f20040, 0x28f2003e,
14024         0x28f2003c, 0x28f2003b, 0x28f20039, 0x28f20037,
14025         0x27f20044, 0x27f20042, 0x27f20040, 0x27f2003e,
14026         0x27f2003c, 0x27f2003b, 0x27f20039, 0x27f20037,
14027         0x26f20044, 0x26f20042, 0x26f20040, 0x26f2003e,
14028         0x26f2003c, 0x26f2003b, 0x26f20039, 0x26f20037,
14029         0x25f20044, 0x25f20042, 0x25f20040, 0x25f2003e,
14030         0x25f2003c, 0x25f2003b, 0x25f20039, 0x25f20037,
14031         0x24f20044, 0x24f20042, 0x24f20040, 0x24f2003e,
14032         0x24f2003c, 0x24f2003b, 0x24f20039, 0x24f20038,
14033         0x23f20041, 0x23f20040, 0x23f2003f, 0x23f2003e,
14034         0x23f2003c, 0x23f2003b, 0x23f20039, 0x23f20037,
14035         0x22f20044, 0x22f20042, 0x22f20040, 0x22f2003e,
14036         0x22f2003c, 0x22f2003b, 0x22f20039, 0x22f20037,
14037         0x21f20044, 0x21f20042, 0x21f20040, 0x21f2003e,
14038         0x21f2003c, 0x21f2003b, 0x21f20039, 0x21f20037,
14039         0x20d20043, 0x20d20041, 0x20d2003e, 0x20d2003c,
14040         0x20d2003a, 0x20d20038, 0x20d20036, 0x20d20034
14041 };
14042
14043 static u32 nphy_tpc_5GHz_txgain_rev5[] = {
14044         0x0f62004a, 0x0f620048, 0x0f620046, 0x0f620044,
14045         0x0f620042, 0x0f620040, 0x0f62003e, 0x0f62003c,
14046         0x0e620044, 0x0e620042, 0x0e620040, 0x0e62003e,
14047         0x0e62003c, 0x0e62003d, 0x0e62003b, 0x0e62003a,
14048         0x0d620043, 0x0d620041, 0x0d620040, 0x0d62003e,
14049         0x0d62003d, 0x0d62003c, 0x0d62003b, 0x0d62003a,
14050         0x0c620041, 0x0c620040, 0x0c62003f, 0x0c62003e,
14051         0x0c62003c, 0x0c62003b, 0x0c620039, 0x0c620037,
14052         0x0b620046, 0x0b620044, 0x0b620042, 0x0b620040,
14053         0x0b62003e, 0x0b62003c, 0x0b62003b, 0x0b62003a,
14054         0x0a620041, 0x0a620040, 0x0a62003e, 0x0a62003c,
14055         0x0a62003b, 0x0a62003a, 0x0a620039, 0x0a620038,
14056         0x0962003e, 0x0962003d, 0x0962003c, 0x0962003b,
14057         0x09620039, 0x09620037, 0x09620035, 0x09620033,
14058         0x08620044, 0x08620042, 0x08620040, 0x0862003e,
14059         0x0862003c, 0x0862003b, 0x0862003a, 0x08620039,
14060         0x07620043, 0x07620042, 0x07620040, 0x0762003f,
14061         0x0762003d, 0x0762003b, 0x0762003a, 0x07620039,
14062         0x0662003e, 0x0662003d, 0x0662003c, 0x0662003b,
14063         0x06620039, 0x06620037, 0x06620035, 0x06620033,
14064         0x05620046, 0x05620044, 0x05620042, 0x05620040,
14065         0x0562003e, 0x0562003c, 0x0562003b, 0x05620039,
14066         0x04620044, 0x04620042, 0x04620040, 0x0462003e,
14067         0x0462003c, 0x0462003b, 0x04620039, 0x04620038,
14068         0x0362003c, 0x0362003b, 0x0362003a, 0x03620039,
14069         0x03620038, 0x03620037, 0x03620035, 0x03620033,
14070         0x0262004c, 0x0262004a, 0x02620048, 0x02620047,
14071         0x02620046, 0x02620044, 0x02620043, 0x02620042,
14072         0x0162004a, 0x01620048, 0x01620046, 0x01620044,
14073         0x01620043, 0x01620042, 0x01620041, 0x01620040,
14074         0x00620042, 0x00620040, 0x0062003e, 0x0062003c,
14075         0x0062003b, 0x00620039, 0x00620037, 0x00620035
14076 };
14077
14078 static u32 nphy_tpc_5GHz_txgain_HiPwrEPA[] = {
14079         0x2ff10044, 0x2ff10042, 0x2ff10040, 0x2ff1003e,
14080         0x2ff1003c, 0x2ff1003b, 0x2ff10039, 0x2ff10037,
14081         0x2ef10044, 0x2ef10042, 0x2ef10040, 0x2ef1003e,
14082         0x2ef1003c, 0x2ef1003b, 0x2ef10039, 0x2ef10037,
14083         0x2df10044, 0x2df10042, 0x2df10040, 0x2df1003e,
14084         0x2df1003c, 0x2df1003b, 0x2df10039, 0x2df10037,
14085         0x2cf10044, 0x2cf10042, 0x2cf10040, 0x2cf1003e,
14086         0x2cf1003c, 0x2cf1003b, 0x2cf10039, 0x2cf10037,
14087         0x2bf10044, 0x2bf10042, 0x2bf10040, 0x2bf1003e,
14088         0x2bf1003c, 0x2bf1003b, 0x2bf10039, 0x2bf10037,
14089         0x2af10044, 0x2af10042, 0x2af10040, 0x2af1003e,
14090         0x2af1003c, 0x2af1003b, 0x2af10039, 0x2af10037,
14091         0x29f10044, 0x29f10042, 0x29f10040, 0x29f1003e,
14092         0x29f1003c, 0x29f1003b, 0x29f10039, 0x29f10037,
14093         0x28f10044, 0x28f10042, 0x28f10040, 0x28f1003e,
14094         0x28f1003c, 0x28f1003b, 0x28f10039, 0x28f10037,
14095         0x27f10044, 0x27f10042, 0x27f10040, 0x27f1003e,
14096         0x27f1003c, 0x27f1003b, 0x27f10039, 0x27f10037,
14097         0x26f10044, 0x26f10042, 0x26f10040, 0x26f1003e,
14098         0x26f1003c, 0x26f1003b, 0x26f10039, 0x26f10037,
14099         0x25f10044, 0x25f10042, 0x25f10040, 0x25f1003e,
14100         0x25f1003c, 0x25f1003b, 0x25f10039, 0x25f10037,
14101         0x24f10044, 0x24f10042, 0x24f10040, 0x24f1003e,
14102         0x24f1003c, 0x24f1003b, 0x24f10039, 0x24f10038,
14103         0x23f10041, 0x23f10040, 0x23f1003f, 0x23f1003e,
14104         0x23f1003c, 0x23f1003b, 0x23f10039, 0x23f10037,
14105         0x22f10044, 0x22f10042, 0x22f10040, 0x22f1003e,
14106         0x22f1003c, 0x22f1003b, 0x22f10039, 0x22f10037,
14107         0x21f10044, 0x21f10042, 0x21f10040, 0x21f1003e,
14108         0x21f1003c, 0x21f1003b, 0x21f10039, 0x21f10037,
14109         0x20d10043, 0x20d10041, 0x20d1003e, 0x20d1003c,
14110         0x20d1003a, 0x20d10038, 0x20d10036, 0x20d10034
14111 };
14112
14113 static u8 ant_sw_ctrl_tbl_rev8_2o3[] = { 0x14, 0x18 };
14114 static u8 ant_sw_ctrl_tbl_rev8[] = { 0x4, 0x8, 0x4, 0x8, 0x11, 0x12 };
14115 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core0[] = {
14116         0x09, 0x0a, 0x15, 0x16, 0x09, 0x0a
14117 };
14118 static u8 ant_sw_ctrl_tbl_rev8_2057v7_core1[] = {
14119         0x09, 0x0a, 0x09, 0x0a, 0x15, 0x16
14120 };
14121
14122 bool wlc_phy_bist_check_phy(struct brcms_phy_pub *pih)
14123 {
14124         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
14125         u32 phybist0, phybist1, phybist2, phybist3, phybist4;
14126
14127         if (NREV_GE(pi->pubpi.phy_rev, 16))
14128                 return true;
14129
14130         phybist0 = read_phy_reg(pi, 0x0e);
14131         phybist1 = read_phy_reg(pi, 0x0f);
14132         phybist2 = read_phy_reg(pi, 0xea);
14133         phybist3 = read_phy_reg(pi, 0xeb);
14134         phybist4 = read_phy_reg(pi, 0x156);
14135
14136         if ((phybist0 == 0) && (phybist1 == 0x4000) && (phybist2 == 0x1fe0) &&
14137             (phybist3 == 0) && (phybist4 == 0))
14138                 return true;
14139
14140         return false;
14141 }
14142
14143 static void wlc_phy_bphy_init_nphy(struct brcms_phy *pi)
14144 {
14145         u16 addr, val;
14146
14147         val = 0x1e1f;
14148         for (addr = (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT);
14149              addr <= (NPHY_TO_BPHY_OFF + BPHY_RSSI_LUT_END); addr++) {
14150                 write_phy_reg(pi, addr, val);
14151                 if (addr == (NPHY_TO_BPHY_OFF + 0x97))
14152                         val = 0x3e3f;
14153                 else
14154                         val -= 0x0202;
14155         }
14156
14157         write_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_STEP, 0x668);
14158 }
14159
14160 void
14161 wlc_phy_table_write_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14162                          u32 width, const void *data)
14163 {
14164         struct phytbl_info tbl;
14165
14166         tbl.tbl_id = id;
14167         tbl.tbl_len = len;
14168         tbl.tbl_offset = offset;
14169         tbl.tbl_width = width;
14170         tbl.tbl_ptr = data;
14171         wlc_phy_write_table_nphy(pi, &tbl);
14172 }
14173
14174 void
14175 wlc_phy_table_read_nphy(struct brcms_phy *pi, u32 id, u32 len, u32 offset,
14176                         u32 width, void *data)
14177 {
14178         struct phytbl_info tbl;
14179
14180         tbl.tbl_id = id;
14181         tbl.tbl_len = len;
14182         tbl.tbl_offset = offset;
14183         tbl.tbl_width = width;
14184         tbl.tbl_ptr = data;
14185         wlc_phy_read_table_nphy(pi, &tbl);
14186 }
14187
14188 static void
14189 wlc_phy_static_table_download_nphy(struct brcms_phy *pi)
14190 {
14191         uint idx;
14192
14193         if (NREV_GE(pi->pubpi.phy_rev, 16)) {
14194                 for (idx = 0; idx < mimophytbl_info_sz_rev16; idx++)
14195                         wlc_phy_write_table_nphy(pi,
14196                                                  &mimophytbl_info_rev16[idx]);
14197         } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14198                 for (idx = 0; idx < mimophytbl_info_sz_rev7; idx++)
14199                         wlc_phy_write_table_nphy(pi,
14200                                                  &mimophytbl_info_rev7[idx]);
14201         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14202                 for (idx = 0; idx < mimophytbl_info_sz_rev3; idx++)
14203                         wlc_phy_write_table_nphy(pi,
14204                                                  &mimophytbl_info_rev3[idx]);
14205         } else {
14206                 for (idx = 0; idx < mimophytbl_info_sz_rev0; idx++)
14207                         wlc_phy_write_table_nphy(pi,
14208                                                  &mimophytbl_info_rev0[idx]);
14209         }
14210 }
14211
14212 static void wlc_phy_tbl_init_nphy(struct brcms_phy *pi)
14213 {
14214         uint idx = 0;
14215         u8 antswctrllut;
14216
14217         if (pi->phy_init_por)
14218                 wlc_phy_static_table_download_nphy(pi);
14219
14220         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14221
14222                 antswctrllut = CHSPEC_IS2G(pi->radio_chanspec) ?
14223                                pi->srom_fem2g.antswctrllut : pi->srom_fem5g.
14224                                antswctrllut;
14225
14226                 switch (antswctrllut) {
14227                 case 0:
14228
14229                         break;
14230
14231                 case 1:
14232
14233                         if (pi->aa2g == 7)
14234                                 wlc_phy_table_write_nphy(
14235                                         pi,
14236                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14237                                         2, 0x21, 8,
14238                                         &ant_sw_ctrl_tbl_rev8_2o3[0]);
14239                         else
14240                                 wlc_phy_table_write_nphy(
14241                                         pi,
14242                                         NPHY_TBL_ID_ANTSWCTRLLUT,
14243                                         2, 0x21, 8,
14244                                         &ant_sw_ctrl_tbl_rev8
14245                                         [0]);
14246
14247                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14248                                                  2, 0x25, 8,
14249                                                  &ant_sw_ctrl_tbl_rev8[2]);
14250                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14251                                                  2, 0x29, 8,
14252                                                  &ant_sw_ctrl_tbl_rev8[4]);
14253                         break;
14254
14255                 case 2:
14256
14257                         wlc_phy_table_write_nphy(
14258                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14259                                 2, 0x1, 8,
14260                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[0]);
14261                         wlc_phy_table_write_nphy(
14262                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14263                                 2, 0x5, 8,
14264                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[2]);
14265                         wlc_phy_table_write_nphy(
14266                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14267                                 2, 0x9, 8,
14268                                 &ant_sw_ctrl_tbl_rev8_2057v7_core0[4]);
14269
14270                         wlc_phy_table_write_nphy(
14271                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14272                                 2, 0x21, 8,
14273                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[0]);
14274                         wlc_phy_table_write_nphy(
14275                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14276                                 2, 0x25, 8,
14277                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[2]);
14278                         wlc_phy_table_write_nphy(
14279                                 pi, NPHY_TBL_ID_ANTSWCTRLLUT,
14280                                 2, 0x29, 8,
14281                                 &ant_sw_ctrl_tbl_rev8_2057v7_core1[4]);
14282                         break;
14283
14284                 default:
14285                         break;
14286                 }
14287
14288         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14289                 for (idx = 0; idx < mimophytbl_info_sz_rev3_volatile; idx++) {
14290
14291                         if (idx == ANT_SWCTRL_TBL_REV3_IDX) {
14292                                 antswctrllut =
14293                                         CHSPEC_IS2G(pi->radio_chanspec) ?
14294                                         pi->srom_fem2g.antswctrllut :
14295                                         pi->srom_fem5g.antswctrllut;
14296                                 switch (antswctrllut) {
14297                                 case 0:
14298                                         wlc_phy_write_table_nphy(
14299                                                 pi,
14300                                                 &mimophytbl_info_rev3_volatile
14301                                                 [idx]);
14302                                         break;
14303                                 case 1:
14304                                         wlc_phy_write_table_nphy(
14305                                                 pi,
14306                                                 &mimophytbl_info_rev3_volatile1
14307                                                 [idx]);
14308                                         break;
14309                                 case 2:
14310                                         wlc_phy_write_table_nphy(
14311                                                 pi,
14312                                                 &mimophytbl_info_rev3_volatile2
14313                                                 [idx]);
14314                                         break;
14315                                 case 3:
14316                                         wlc_phy_write_table_nphy(
14317                                                 pi,
14318                                                 &mimophytbl_info_rev3_volatile3
14319                                                 [idx]);
14320                                         break;
14321                                 default:
14322                                         break;
14323                                 }
14324                         } else {
14325                                 wlc_phy_write_table_nphy(
14326                                         pi,
14327                                         &mimophytbl_info_rev3_volatile[idx]);
14328                         }
14329                 }
14330         } else {
14331                 for (idx = 0; idx < mimophytbl_info_sz_rev0_volatile; idx++)
14332                         wlc_phy_write_table_nphy(pi,
14333                                                  &mimophytbl_info_rev0_volatile
14334                                                  [idx]);
14335         }
14336 }
14337
14338 static void
14339 wlc_phy_write_txmacreg_nphy(struct brcms_phy *pi, u16 holdoff, u16 delay)
14340 {
14341         write_phy_reg(pi, 0x77, holdoff);
14342         write_phy_reg(pi, 0xb4, delay);
14343 }
14344
14345 void wlc_phy_nphy_tkip_rifs_war(struct brcms_phy *pi, u8 rifs)
14346 {
14347         u16 holdoff, delay;
14348
14349         if (rifs) {
14350
14351                 holdoff = 0x10;
14352                 delay = 0x258;
14353         } else {
14354
14355                 holdoff = 0x15;
14356                 delay = 0x320;
14357         }
14358
14359         wlc_phy_write_txmacreg_nphy(pi, holdoff, delay);
14360
14361         if (pi->sh && (pi->sh->_rifs_phy != rifs))
14362                 pi->sh->_rifs_phy = rifs;
14363 }
14364
14365 static void wlc_phy_txpwrctrl_config_nphy(struct brcms_phy *pi)
14366 {
14367
14368         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
14369                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14370                 pi->phy_5g_pwrgain = true;
14371                 return;
14372         }
14373
14374         pi->nphy_txpwrctrl = PHY_TPC_HW_OFF;
14375         pi->phy_5g_pwrgain = false;
14376
14377         if ((pi->sh->boardflags2 & BFL2_TXPWRCTRL_EN) &&
14378             NREV_GE(pi->pubpi.phy_rev, 2) && (pi->sh->sromrev >= 4))
14379                 pi->nphy_txpwrctrl = PHY_TPC_HW_ON;
14380         else if ((pi->sh->sromrev >= 4)
14381                  && (pi->sh->boardflags2 & BFL2_5G_PWRGAIN))
14382                 pi->phy_5g_pwrgain = true;
14383 }
14384
14385 static void wlc_phy_txpwr_srom_read_ppr_nphy(struct brcms_phy *pi)
14386 {
14387         u16 bw40po, cddpo, stbcpo, bwduppo;
14388         uint band_num;
14389         struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14390
14391         if (pi->sh->sromrev >= 9)
14392                 return;
14393
14394         bw40po = sprom->bw40po;
14395         pi->bw402gpo = bw40po & 0xf;
14396         pi->bw405gpo = (bw40po & 0xf0) >> 4;
14397         pi->bw405glpo = (bw40po & 0xf00) >> 8;
14398         pi->bw405ghpo = (bw40po & 0xf000) >> 12;
14399
14400         cddpo = sprom->cddpo;
14401         pi->cdd2gpo = cddpo & 0xf;
14402         pi->cdd5gpo = (cddpo & 0xf0) >> 4;
14403         pi->cdd5glpo = (cddpo & 0xf00) >> 8;
14404         pi->cdd5ghpo = (cddpo & 0xf000) >> 12;
14405
14406         stbcpo = sprom->stbcpo;
14407         pi->stbc2gpo = stbcpo & 0xf;
14408         pi->stbc5gpo = (stbcpo & 0xf0) >> 4;
14409         pi->stbc5glpo = (stbcpo & 0xf00) >> 8;
14410         pi->stbc5ghpo = (stbcpo & 0xf000) >> 12;
14411
14412         bwduppo = sprom->bwduppo;
14413         pi->bwdup2gpo = bwduppo & 0xf;
14414         pi->bwdup5gpo = (bwduppo & 0xf0) >> 4;
14415         pi->bwdup5glpo = (bwduppo & 0xf00) >> 8;
14416         pi->bwdup5ghpo = (bwduppo & 0xf000) >> 12;
14417
14418         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
14419              band_num++) {
14420                 switch (band_num) {
14421                 case 0:
14422                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_2g =
14423                                 sprom->core_pwr_info[0].maxpwr_2g;
14424                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_2g =
14425                                 sprom->core_pwr_info[1].maxpwr_2g;
14426                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_a1 =
14427                                 sprom->core_pwr_info[0].pa_2g[0];
14428                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_a1 =
14429                                 sprom->core_pwr_info[1].pa_2g[0];
14430                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b0 =
14431                                 sprom->core_pwr_info[0].pa_2g[1];
14432                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b0 =
14433                                 sprom->core_pwr_info[1].pa_2g[1];
14434                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_2g_b1 =
14435                                 sprom->core_pwr_info[0].pa_2g[2];
14436                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_2g_b1 =
14437                                 sprom->core_pwr_info[1].pa_2g[2];
14438                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_2g =
14439                                 sprom->core_pwr_info[0].itssi_2g;
14440                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_2g =
14441                                 sprom->core_pwr_info[1].itssi_2g;
14442
14443                         pi->cck2gpo = sprom->cck2gpo;
14444
14445                         pi->ofdm2gpo = sprom->ofdm2gpo;
14446
14447                         pi->mcs2gpo[0] = sprom->mcs2gpo[0];
14448                         pi->mcs2gpo[1] = sprom->mcs2gpo[1];
14449                         pi->mcs2gpo[2] = sprom->mcs2gpo[2];
14450                         pi->mcs2gpo[3] = sprom->mcs2gpo[3];
14451                         pi->mcs2gpo[4] = sprom->mcs2gpo[4];
14452                         pi->mcs2gpo[5] = sprom->mcs2gpo[5];
14453                         pi->mcs2gpo[6] = sprom->mcs2gpo[6];
14454                         pi->mcs2gpo[7] = sprom->mcs2gpo[7];
14455                         break;
14456                 case 1:
14457
14458                         pi->nphy_pwrctrl_info[PHY_CORE_0].max_pwr_5gm =
14459                                 sprom->core_pwr_info[0].maxpwr_5g;
14460                         pi->nphy_pwrctrl_info[PHY_CORE_1].max_pwr_5gm =
14461                                 sprom->core_pwr_info[1].maxpwr_5g;
14462                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_a1 =
14463                                 sprom->core_pwr_info[0].pa_5g[0];
14464                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_a1 =
14465                                 sprom->core_pwr_info[1].pa_5g[0];
14466                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b0 =
14467                                 sprom->core_pwr_info[0].pa_5g[1];
14468                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b0 =
14469                                 sprom->core_pwr_info[1].pa_5g[1];
14470                         pi->nphy_pwrctrl_info[PHY_CORE_0].pwrdet_5gm_b1 =
14471                                 sprom->core_pwr_info[0].pa_5g[2];
14472                         pi->nphy_pwrctrl_info[PHY_CORE_1].pwrdet_5gm_b1 =
14473                                 sprom->core_pwr_info[1].pa_5g[2];
14474                         pi->nphy_pwrctrl_info[PHY_CORE_0].idle_targ_5gm =
14475                                 sprom->core_pwr_info[0].itssi_5g;
14476                         pi->nphy_pwrctrl_info[PHY_CORE_1].idle_targ_5gm =
14477                                 sprom->core_pwr_info[1].itssi_5g;
14478
14479                         pi->ofdm5gpo = sprom->ofdm5gpo;
14480
14481                         pi->mcs5gpo[0] = sprom->mcs5gpo[0];
14482                         pi->mcs5gpo[1] = sprom->mcs5gpo[1];
14483                         pi->mcs5gpo[2] = sprom->mcs5gpo[2];
14484                         pi->mcs5gpo[3] = sprom->mcs5gpo[3];
14485                         pi->mcs5gpo[4] = sprom->mcs5gpo[4];
14486                         pi->mcs5gpo[5] = sprom->mcs5gpo[5];
14487                         pi->mcs5gpo[6] = sprom->mcs5gpo[6];
14488                         pi->mcs5gpo[7] = sprom->mcs5gpo[7];
14489                         break;
14490                 case 2:
14491
14492                         pi->nphy_pwrctrl_info[0].max_pwr_5gl =
14493                                 sprom->core_pwr_info[0].maxpwr_5gl;
14494                         pi->nphy_pwrctrl_info[1].max_pwr_5gl =
14495                                 sprom->core_pwr_info[1].maxpwr_5gl;
14496                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1 =
14497                                 sprom->core_pwr_info[0].pa_5gl[0];
14498                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1 =
14499                                 sprom->core_pwr_info[1].pa_5gl[0];
14500                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0 =
14501                                 sprom->core_pwr_info[0].pa_5gl[1];
14502                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0 =
14503                                 sprom->core_pwr_info[1].pa_5gl[1];
14504                         pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1 =
14505                                 sprom->core_pwr_info[0].pa_5gl[2];
14506                         pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1 =
14507                                 sprom->core_pwr_info[1].pa_5gl[2];
14508                         pi->nphy_pwrctrl_info[0].idle_targ_5gl = 0;
14509                         pi->nphy_pwrctrl_info[1].idle_targ_5gl = 0;
14510
14511                         pi->ofdm5glpo = sprom->ofdm5glpo;
14512
14513                         pi->mcs5glpo[0] = sprom->mcs5glpo[0];
14514                         pi->mcs5glpo[1] = sprom->mcs5glpo[1];
14515                         pi->mcs5glpo[2] = sprom->mcs5glpo[2];
14516                         pi->mcs5glpo[3] = sprom->mcs5glpo[3];
14517                         pi->mcs5glpo[4] = sprom->mcs5glpo[4];
14518                         pi->mcs5glpo[5] = sprom->mcs5glpo[5];
14519                         pi->mcs5glpo[6] = sprom->mcs5glpo[6];
14520                         pi->mcs5glpo[7] = sprom->mcs5glpo[7];
14521                         break;
14522                 case 3:
14523
14524                         pi->nphy_pwrctrl_info[0].max_pwr_5gh =
14525                                 sprom->core_pwr_info[0].maxpwr_5gh;
14526                         pi->nphy_pwrctrl_info[1].max_pwr_5gh =
14527                                 sprom->core_pwr_info[1].maxpwr_5gh;
14528                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1 =
14529                                 sprom->core_pwr_info[0].pa_5gh[0];
14530                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1 =
14531                                 sprom->core_pwr_info[1].pa_5gh[0];
14532                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0 =
14533                                 sprom->core_pwr_info[0].pa_5gh[1];
14534                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0 =
14535                                 sprom->core_pwr_info[1].pa_5gh[1];
14536                         pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1 =
14537                                 sprom->core_pwr_info[0].pa_5gh[2];
14538                         pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1 =
14539                                 sprom->core_pwr_info[1].pa_5gh[2];
14540                         pi->nphy_pwrctrl_info[0].idle_targ_5gh = 0;
14541                         pi->nphy_pwrctrl_info[1].idle_targ_5gh = 0;
14542
14543                         pi->ofdm5ghpo = sprom->ofdm5ghpo;
14544
14545                         pi->mcs5ghpo[0] = sprom->mcs5ghpo[0];
14546                         pi->mcs5ghpo[1] = sprom->mcs5ghpo[1];
14547                         pi->mcs5ghpo[2] = sprom->mcs5ghpo[2];
14548                         pi->mcs5ghpo[3] = sprom->mcs5ghpo[3];
14549                         pi->mcs5ghpo[4] = sprom->mcs5ghpo[4];
14550                         pi->mcs5ghpo[5] = sprom->mcs5ghpo[5];
14551                         pi->mcs5ghpo[6] = sprom->mcs5ghpo[6];
14552                         pi->mcs5ghpo[7] = sprom->mcs5ghpo[7];
14553                         break;
14554                 }
14555         }
14556
14557         wlc_phy_txpwr_apply_nphy(pi);
14558 }
14559
14560 static bool wlc_phy_txpwr_srom_read_nphy(struct brcms_phy *pi)
14561 {
14562         struct ssb_sprom *sprom = &pi->d11core->bus->sprom;
14563
14564         pi->antswitch = sprom->antswitch;
14565         pi->aa2g = sprom->ant_available_bg;
14566         pi->aa5g = sprom->ant_available_a;
14567
14568         pi->srom_fem2g.tssipos = sprom->fem.ghz2.tssipos;
14569         pi->srom_fem2g.extpagain = sprom->fem.ghz2.extpa_gain;
14570         pi->srom_fem2g.pdetrange = sprom->fem.ghz2.pdet_range;
14571         pi->srom_fem2g.triso = sprom->fem.ghz2.tr_iso;
14572         pi->srom_fem2g.antswctrllut = sprom->fem.ghz2.antswlut;
14573
14574         pi->srom_fem5g.tssipos = sprom->fem.ghz5.tssipos;
14575         pi->srom_fem5g.extpagain = sprom->fem.ghz5.extpa_gain;
14576         pi->srom_fem5g.pdetrange = sprom->fem.ghz5.pdet_range;
14577         pi->srom_fem5g.triso = sprom->fem.ghz5.tr_iso;
14578         if (sprom->fem.ghz5.antswlut)
14579                 pi->srom_fem5g.antswctrllut = sprom->fem.ghz5.antswlut;
14580         else
14581                 pi->srom_fem5g.antswctrllut = sprom->fem.ghz2.antswlut;
14582
14583         wlc_phy_txpower_ipa_upd(pi);
14584
14585         pi->phy_txcore_disable_temp = sprom->tempthresh;
14586         if (pi->phy_txcore_disable_temp == 0)
14587                 pi->phy_txcore_disable_temp = PHY_CHAIN_TX_DISABLE_TEMP;
14588
14589         pi->phy_tempsense_offset = sprom->tempoffset;
14590         if (pi->phy_tempsense_offset != 0) {
14591                 if (pi->phy_tempsense_offset >
14592                     (NPHY_SROM_TEMPSHIFT + NPHY_SROM_MAXTEMPOFFSET))
14593                         pi->phy_tempsense_offset = NPHY_SROM_MAXTEMPOFFSET;
14594                 else if (pi->phy_tempsense_offset < (NPHY_SROM_TEMPSHIFT +
14595                                                      NPHY_SROM_MINTEMPOFFSET))
14596                         pi->phy_tempsense_offset = NPHY_SROM_MINTEMPOFFSET;
14597                 else
14598                         pi->phy_tempsense_offset -= NPHY_SROM_TEMPSHIFT;
14599         }
14600
14601         pi->phy_txcore_enable_temp =
14602                 pi->phy_txcore_disable_temp - PHY_HYSTERESIS_DELTATEMP;
14603
14604         pi->phycal_tempdelta = sprom->phycal_tempdelta;
14605         if (pi->phycal_tempdelta > NPHY_CAL_MAXTEMPDELTA)
14606                 pi->phycal_tempdelta = 0;
14607
14608         wlc_phy_txpwr_srom_read_ppr_nphy(pi);
14609
14610         return true;
14611 }
14612
14613 bool wlc_phy_attach_nphy(struct brcms_phy *pi)
14614 {
14615         uint i;
14616
14617         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 6))
14618                 pi->phyhang_avoid = true;
14619
14620         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14621                 pi->nphy_gband_spurwar_en = true;
14622                 if (pi->sh->boardflags2 & BFL2_SPUR_WAR)
14623                         pi->nphy_aband_spurwar_en = true;
14624         }
14625         if (NREV_GE(pi->pubpi.phy_rev, 6) && NREV_LT(pi->pubpi.phy_rev, 7)) {
14626                 if (pi->sh->boardflags2 & BFL2_2G_SPUR_WAR)
14627                         pi->nphy_gband_spurwar2_en = true;
14628         }
14629
14630         pi->n_preamble_override = AUTO;
14631         if (NREV_IS(pi->pubpi.phy_rev, 3) || NREV_IS(pi->pubpi.phy_rev, 4))
14632                 pi->n_preamble_override = BRCMS_N_PREAMBLE_MIXEDMODE;
14633
14634         pi->nphy_txrx_chain = AUTO;
14635         pi->phy_scraminit = AUTO;
14636
14637         pi->nphy_rxcalparams = 0x010100B5;
14638
14639         pi->nphy_perical = PHY_PERICAL_MPHASE;
14640         pi->mphase_cal_phase_id = MPHASE_CAL_STATE_IDLE;
14641         pi->mphase_txcal_numcmds = MPHASE_TXCAL_NUMCMDS;
14642
14643         pi->nphy_gain_boost = true;
14644         pi->nphy_elna_gain_config = false;
14645         pi->radio_is_on = false;
14646
14647         for (i = 0; i < pi->pubpi.phy_corenum; i++)
14648                 pi->nphy_txpwrindex[i].index = AUTO;
14649
14650         wlc_phy_txpwrctrl_config_nphy(pi);
14651         if (pi->nphy_txpwrctrl == PHY_TPC_HW_ON)
14652                 pi->hwpwrctrl_capable = true;
14653
14654         pi->pi_fptr.init = wlc_phy_init_nphy;
14655         pi->pi_fptr.calinit = wlc_phy_cal_init_nphy;
14656         pi->pi_fptr.chanset = wlc_phy_chanspec_set_nphy;
14657         pi->pi_fptr.txpwrrecalc = wlc_phy_txpower_recalc_target_nphy;
14658
14659         if (!wlc_phy_txpwr_srom_read_nphy(pi))
14660                 return false;
14661
14662         return true;
14663 }
14664
14665 static s32 get_rf_pwr_offset(struct brcms_phy *pi, s16 pga_gn, s16 pad_gn)
14666 {
14667         s32 rfpwr_offset = 0;
14668
14669         if (CHSPEC_IS2G(pi->radio_chanspec)) {
14670                 if ((pi->pubpi.radiorev == 3) ||
14671                     (pi->pubpi.radiorev == 4) ||
14672                     (pi->pubpi.radiorev == 6))
14673                         rfpwr_offset = (s16)
14674                                        nphy_papd_padgain_dlt_2g_2057rev3n4
14675                                        [pad_gn];
14676                 else if (pi->pubpi.radiorev == 5)
14677                         rfpwr_offset = (s16)
14678                                        nphy_papd_padgain_dlt_2g_2057rev5
14679                                        [pad_gn];
14680                 else if ((pi->pubpi.radiorev == 7)
14681                          || (pi->pubpi.radiorev ==
14682                              8))
14683                         rfpwr_offset = (s16)
14684                                        nphy_papd_padgain_dlt_2g_2057rev7
14685                                        [pad_gn];
14686         } else {
14687                 if ((pi->pubpi.radiorev == 3) ||
14688                     (pi->pubpi.radiorev == 4) ||
14689                     (pi->pubpi.radiorev == 6))
14690                         rfpwr_offset = (s16)
14691                                        nphy_papd_pgagain_dlt_5g_2057
14692                                        [pga_gn];
14693                 else if ((pi->pubpi.radiorev == 7)
14694                          || (pi->pubpi.radiorev ==
14695                              8))
14696                         rfpwr_offset = (s16)
14697                                        nphy_papd_pgagain_dlt_5g_2057rev7
14698                                        [pga_gn];
14699         }
14700         return rfpwr_offset;
14701 }
14702
14703 static void wlc_phy_update_mimoconfig_nphy(struct brcms_phy *pi, s32 preamble)
14704 {
14705         bool gf_preamble = false;
14706         u16 val;
14707
14708         if (preamble == BRCMS_N_PREAMBLE_GF)
14709                 gf_preamble = true;
14710
14711         val = read_phy_reg(pi, 0xed);
14712
14713         val |= RX_GF_MM_AUTO;
14714         val &= ~RX_GF_OR_MM;
14715         if (gf_preamble)
14716                 val |= RX_GF_OR_MM;
14717
14718         write_phy_reg(pi, 0xed, val);
14719 }
14720
14721 static void wlc_phy_ipa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
14722 {
14723         int j, type;
14724         u16 addr_offset[] = { 0x186, 0x195, 0x2c5};
14725
14726         for (type = 0; type < 3; type++) {
14727                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14728                         write_phy_reg(pi, addr_offset[type] + j,
14729                                       NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
14730         }
14731
14732         if (pi->bw == WL_CHANSPEC_BW_40) {
14733                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14734                         write_phy_reg(pi, 0x186 + j,
14735                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14736         } else {
14737                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
14738                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14739                                 write_phy_reg(pi, 0x186 + j,
14740                                         NPHY_IPA_REV4_txdigi_filtcoeffs[5][j]);
14741                 }
14742
14743                 if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
14744                         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14745                                 write_phy_reg(pi, 0x2c5 + j,
14746                                         NPHY_IPA_REV4_txdigi_filtcoeffs[6][j]);
14747                 }
14748         }
14749 }
14750
14751 static void wlc_phy_ipa_restore_tx_digi_filts_nphy(struct brcms_phy *pi)
14752 {
14753         int j;
14754
14755         if (pi->bw == WL_CHANSPEC_BW_40) {
14756                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14757                         write_phy_reg(pi, 0x195 + j,
14758                                       NPHY_IPA_REV4_txdigi_filtcoeffs[4][j]);
14759         } else {
14760                 for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
14761                         write_phy_reg(pi, 0x186 + j,
14762                                       NPHY_IPA_REV4_txdigi_filtcoeffs[3][j]);
14763         }
14764 }
14765
14766 static void
14767 wlc_phy_set_rfseq_nphy(struct brcms_phy *pi, u8 cmd, u8 *events, u8 *dlys,
14768                        u8 len)
14769 {
14770         u32 t1_offset, t2_offset;
14771         u8 ctr;
14772         u8 end_event =
14773                 NREV_GE(pi->pubpi.phy_rev,
14774                         3) ? NPHY_REV3_RFSEQ_CMD_END : NPHY_RFSEQ_CMD_END;
14775         u8 end_dly = 1;
14776
14777         if (pi->phyhang_avoid)
14778                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
14779
14780         t1_offset = cmd << 4;
14781         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t1_offset, 8,
14782                                  events);
14783         t2_offset = t1_offset + 0x080;
14784         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, len, t2_offset, 8,
14785                                  dlys);
14786
14787         for (ctr = len; ctr < 16; ctr++) {
14788                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14789                                          t1_offset + ctr, 8, &end_event);
14790                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14791                                          t2_offset + ctr, 8, &end_dly);
14792         }
14793
14794         if (pi->phyhang_avoid)
14795                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
14796 }
14797
14798 static u16 wlc_phy_read_lpf_bw_ctl_nphy(struct brcms_phy *pi, u16 offset)
14799 {
14800         u16 lpf_bw_ctl_val = 0;
14801         u16 rx2tx_lpf_rc_lut_offset = 0;
14802
14803         if (offset == 0) {
14804                 if (CHSPEC_IS40(pi->radio_chanspec))
14805                         rx2tx_lpf_rc_lut_offset = 0x159;
14806                 else
14807                         rx2tx_lpf_rc_lut_offset = 0x154;
14808         } else {
14809                 rx2tx_lpf_rc_lut_offset = offset;
14810         }
14811         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
14812                                 (u32) rx2tx_lpf_rc_lut_offset, 16,
14813                                 &lpf_bw_ctl_val);
14814
14815         lpf_bw_ctl_val = lpf_bw_ctl_val & 0x7;
14816
14817         return lpf_bw_ctl_val;
14818 }
14819
14820 static void
14821 wlc_phy_rfctrl_override_nphy_rev7(struct brcms_phy *pi, u16 field, u16 value,
14822                                   u8 core_mask, u8 off, u8 override_id)
14823 {
14824         u8 core_num;
14825         u16 addr = 0, en_addr = 0, val_addr = 0, en_mask = 0, val_mask = 0;
14826         u8 val_shift = 0;
14827
14828         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
14829                 en_mask = field;
14830                 for (core_num = 0; core_num < 2; core_num++) {
14831                         if (override_id == NPHY_REV7_RFCTRLOVERRIDE_ID0) {
14832
14833                                 switch (field) {
14834                                 case (0x1 << 2):
14835                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14836                                         val_addr = (core_num == 0) ? 0x7a :
14837                                                    0x7d;
14838                                         val_mask = (0x1 << 1);
14839                                         val_shift = 1;
14840                                         break;
14841                                 case (0x1 << 3):
14842                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14843                                         val_addr = (core_num == 0) ? 0x7a :
14844                                                    0x7d;
14845                                         val_mask = (0x1 << 2);
14846                                         val_shift = 2;
14847                                         break;
14848                                 case (0x1 << 4):
14849                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14850                                         val_addr = (core_num == 0) ? 0x7a :
14851                                                    0x7d;
14852                                         val_mask = (0x1 << 4);
14853                                         val_shift = 4;
14854                                         break;
14855                                 case (0x1 << 5):
14856                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14857                                         val_addr = (core_num == 0) ? 0x7a :
14858                                                    0x7d;
14859                                         val_mask = (0x1 << 5);
14860                                         val_shift = 5;
14861                                         break;
14862                                 case (0x1 << 6):
14863                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14864                                         val_addr = (core_num == 0) ? 0x7a :
14865                                                    0x7d;
14866                                         val_mask = (0x1 << 6);
14867                                         val_shift = 6;
14868                                         break;
14869                                 case (0x1 << 7):
14870                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14871                                         val_addr = (core_num == 0) ? 0x7a :
14872                                                    0x7d;
14873                                         val_mask = (0x1 << 7);
14874                                         val_shift = 7;
14875                                         break;
14876                                 case (0x1 << 10):
14877                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14878                                         val_addr = (core_num == 0) ? 0xf8 :
14879                                                    0xfa;
14880                                         val_mask = (0x7 << 4);
14881                                         val_shift = 4;
14882                                         break;
14883                                 case (0x1 << 11):
14884                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14885                                         val_addr = (core_num == 0) ? 0x7b :
14886                                                    0x7e;
14887                                         val_mask = (0xffff << 0);
14888                                         val_shift = 0;
14889                                         break;
14890                                 case (0x1 << 12):
14891                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14892                                         val_addr = (core_num == 0) ? 0x7c :
14893                                                    0x7f;
14894                                         val_mask = (0xffff << 0);
14895                                         val_shift = 0;
14896                                         break;
14897                                 case (0x3 << 13):
14898                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14899                                         val_addr = (core_num == 0) ? 0x348 :
14900                                                    0x349;
14901                                         val_mask = (0xff << 0);
14902                                         val_shift = 0;
14903                                         break;
14904                                 case (0x1 << 13):
14905                                         en_addr = (core_num == 0) ? 0xe7 : 0xec;
14906                                         val_addr = (core_num == 0) ? 0x348 :
14907                                                    0x349;
14908                                         val_mask = (0xf << 0);
14909                                         val_shift = 0;
14910                                         break;
14911                                 default:
14912                                         addr = 0xffff;
14913                                         break;
14914                                 }
14915                         } else if (override_id ==
14916                                    NPHY_REV7_RFCTRLOVERRIDE_ID1) {
14917
14918                                 switch (field) {
14919                                 case (0x1 << 1):
14920                                         en_addr = (core_num == 0) ? 0x342 :
14921                                                   0x343;
14922                                         val_addr = (core_num == 0) ? 0x340 :
14923                                                    0x341;
14924                                         val_mask = (0x1 << 1);
14925                                         val_shift = 1;
14926                                         break;
14927                                 case (0x1 << 3):
14928                                         en_addr = (core_num == 0) ? 0x342 :
14929                                                   0x343;
14930                                         val_addr = (core_num == 0) ? 0x340 :
14931                                                    0x341;
14932                                         val_mask = (0x1 << 3);
14933                                         val_shift = 3;
14934                                         break;
14935                                 case (0x1 << 5):
14936                                         en_addr = (core_num == 0) ? 0x342 :
14937                                                   0x343;
14938                                         val_addr = (core_num == 0) ? 0x340 :
14939                                                    0x341;
14940                                         val_mask = (0x1 << 5);
14941                                         val_shift = 5;
14942                                         break;
14943                                 case (0x1 << 4):
14944                                         en_addr = (core_num == 0) ? 0x342 :
14945                                                   0x343;
14946                                         val_addr = (core_num == 0) ? 0x340 :
14947                                                    0x341;
14948                                         val_mask = (0x1 << 4);
14949                                         val_shift = 4;
14950                                         break;
14951                                 case (0x1 << 2):
14952
14953                                         en_addr = (core_num == 0) ? 0x342 :
14954                                                   0x343;
14955                                         val_addr = (core_num == 0) ? 0x340 :
14956                                                    0x341;
14957                                         val_mask = (0x1 << 2);
14958                                         val_shift = 2;
14959                                         break;
14960                                 case (0x1 << 7):
14961
14962                                         en_addr = (core_num == 0) ? 0x342 :
14963                                                   0x343;
14964                                         val_addr = (core_num == 0) ? 0x340 :
14965                                                    0x341;
14966                                         val_mask = (0x7 << 8);
14967                                         val_shift = 8;
14968                                         break;
14969                                 case (0x1 << 11):
14970                                         en_addr = (core_num == 0) ? 0x342 :
14971                                                   0x343;
14972                                         val_addr = (core_num == 0) ? 0x340 :
14973                                                    0x341;
14974                                         val_mask = (0x1 << 14);
14975                                         val_shift = 14;
14976                                         break;
14977                                 case (0x1 << 10):
14978                                         en_addr = (core_num == 0) ? 0x342 :
14979                                                   0x343;
14980                                         val_addr = (core_num == 0) ? 0x340 :
14981                                                    0x341;
14982                                         val_mask = (0x1 << 13);
14983                                         val_shift = 13;
14984                                         break;
14985                                 case (0x1 << 9):
14986                                         en_addr = (core_num == 0) ? 0x342 :
14987                                                   0x343;
14988                                         val_addr = (core_num == 0) ? 0x340 :
14989                                                    0x341;
14990                                         val_mask = (0x1 << 12);
14991                                         val_shift = 12;
14992                                         break;
14993                                 case (0x1 << 8):
14994                                         en_addr = (core_num == 0) ? 0x342 :
14995                                                   0x343;
14996                                         val_addr = (core_num == 0) ? 0x340 :
14997                                                    0x341;
14998                                         val_mask = (0x1 << 11);
14999                                         val_shift = 11;
15000                                         break;
15001                                 case (0x1 << 6):
15002                                         en_addr = (core_num == 0) ? 0x342 :
15003                                                   0x343;
15004                                         val_addr = (core_num == 0) ? 0x340 :
15005                                                    0x341;
15006                                         val_mask = (0x1 << 6);
15007                                         val_shift = 6;
15008                                         break;
15009                                 case (0x1 << 0):
15010                                         en_addr = (core_num == 0) ? 0x342 :
15011                                                   0x343;
15012                                         val_addr = (core_num == 0) ? 0x340 :
15013                                                    0x341;
15014                                         val_mask = (0x1 << 0);
15015                                         val_shift = 0;
15016                                         break;
15017                                 default:
15018                                         addr = 0xffff;
15019                                         break;
15020                                 }
15021                         } else if (override_id ==
15022                                    NPHY_REV7_RFCTRLOVERRIDE_ID2) {
15023
15024                                 switch (field) {
15025                                 case (0x1 << 3):
15026                                         en_addr = (core_num == 0) ? 0x346 :
15027                                                   0x347;
15028                                         val_addr = (core_num == 0) ? 0x344 :
15029                                                    0x345;
15030                                         val_mask = (0x1 << 3);
15031                                         val_shift = 3;
15032                                         break;
15033                                 case (0x1 << 1):
15034                                         en_addr = (core_num == 0) ? 0x346 :
15035                                                   0x347;
15036                                         val_addr = (core_num == 0) ? 0x344 :
15037                                                    0x345;
15038                                         val_mask = (0x1 << 1);
15039                                         val_shift = 1;
15040                                         break;
15041                                 case (0x1 << 0):
15042                                         en_addr = (core_num == 0) ? 0x346 :
15043                                                   0x347;
15044                                         val_addr = (core_num == 0) ? 0x344 :
15045                                                    0x345;
15046                                         val_mask = (0x1 << 0);
15047                                         val_shift = 0;
15048                                         break;
15049                                 case (0x1 << 2):
15050                                         en_addr = (core_num == 0) ? 0x346 :
15051                                                   0x347;
15052                                         val_addr = (core_num == 0) ? 0x344 :
15053                                                    0x345;
15054                                         val_mask = (0x1 << 2);
15055                                         val_shift = 2;
15056                                         break;
15057                                 case (0x1 << 4):
15058                                         en_addr = (core_num == 0) ? 0x346 :
15059                                                   0x347;
15060                                         val_addr = (core_num == 0) ? 0x344 :
15061                                                    0x345;
15062                                         val_mask = (0x1 << 4);
15063                                         val_shift = 4;
15064                                         break;
15065                                 default:
15066                                         addr = 0xffff;
15067                                         break;
15068                                 }
15069                         }
15070
15071                         if (off) {
15072                                 and_phy_reg(pi, en_addr, ~en_mask);
15073                                 and_phy_reg(pi, val_addr, ~val_mask);
15074                         } else {
15075
15076                                 if ((core_mask == 0)
15077                                     || (core_mask & (1 << core_num))) {
15078                                         or_phy_reg(pi, en_addr, en_mask);
15079
15080                                         if (addr != 0xffff)
15081                                                 mod_phy_reg(pi, val_addr,
15082                                                             val_mask,
15083                                                             (value <<
15084                                                              val_shift));
15085                                 }
15086                         }
15087                 }
15088         }
15089 }
15090
15091 static void wlc_phy_adjust_lnagaintbl_nphy(struct brcms_phy *pi)
15092 {
15093         uint core;
15094         int ctr;
15095         s16 gain_delta[2];
15096         u8 curr_channel;
15097         u16 minmax_gain[2];
15098         u16 regval[4];
15099
15100         if (pi->phyhang_avoid)
15101                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
15102
15103         if (pi->nphy_gain_boost) {
15104                 if ((CHSPEC_IS2G(pi->radio_chanspec))) {
15105
15106                         gain_delta[0] = 6;
15107                         gain_delta[1] = 6;
15108                 } else {
15109
15110                         curr_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
15111                         gain_delta[0] =
15112                                 (s16)
15113                                 PHY_HW_ROUND(((nphy_lnagain_est0[0] *
15114                                                curr_channel) +
15115                                               nphy_lnagain_est0[1]), 13);
15116                         gain_delta[1] =
15117                                 (s16)
15118                                 PHY_HW_ROUND(((nphy_lnagain_est1[0] *
15119                                                curr_channel) +
15120                                               nphy_lnagain_est1[1]), 13);
15121                 }
15122         } else {
15123
15124                 gain_delta[0] = 0;
15125                 gain_delta[1] = 0;
15126         }
15127
15128         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
15129                 if (pi->nphy_elna_gain_config) {
15130
15131                         regval[0] = nphy_def_lnagains[2] + gain_delta[core];
15132                         regval[1] = nphy_def_lnagains[3] + gain_delta[core];
15133                         regval[2] = nphy_def_lnagains[3] + gain_delta[core];
15134                         regval[3] = nphy_def_lnagains[3] + gain_delta[core];
15135                 } else {
15136                         for (ctr = 0; ctr < 4; ctr++)
15137                                 regval[ctr] =
15138                                         nphy_def_lnagains[ctr] +
15139                                         gain_delta[core];
15140                 }
15141                 wlc_phy_table_write_nphy(pi, core, 4, 8, 16, regval);
15142
15143                 minmax_gain[core] =
15144                         (u16) (nphy_def_lnagains[2] + gain_delta[core] + 4);
15145         }
15146
15147         mod_phy_reg(pi, 0x1e, (0xff << 0), (minmax_gain[0] << 0));
15148         mod_phy_reg(pi, 0x34, (0xff << 0), (minmax_gain[1] << 0));
15149
15150         if (pi->phyhang_avoid)
15151                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
15152 }
15153
15154 static void
15155 wlc_phy_war_force_trsw_to_R_cliplo_nphy(struct brcms_phy *pi, u8 core)
15156 {
15157         if (core == PHY_CORE_0) {
15158                 write_phy_reg(pi, 0x38, 0x4);
15159                 if (CHSPEC_IS2G(pi->radio_chanspec))
15160                         write_phy_reg(pi, 0x37, 0x0060);
15161                 else
15162                         write_phy_reg(pi, 0x37, 0x1080);
15163         } else if (core == PHY_CORE_1) {
15164                 write_phy_reg(pi, 0x2ae, 0x4);
15165                 if (CHSPEC_IS2G(pi->radio_chanspec))
15166                         write_phy_reg(pi, 0x2ad, 0x0060);
15167                 else
15168                         write_phy_reg(pi, 0x2ad, 0x1080);
15169         }
15170 }
15171
15172 static void wlc_phy_war_txchain_upd_nphy(struct brcms_phy *pi, u8 txchain)
15173 {
15174         u8 txchain0, txchain1;
15175
15176         txchain0 = txchain & 0x1;
15177         txchain1 = (txchain & 0x2) >> 1;
15178         if (!txchain0)
15179                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
15180
15181         if (!txchain1)
15182                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
15183 }
15184
15185 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev5(struct brcms_phy *pi)
15186 {
15187         s8 lna1_gain_db[] = { 8, 13, 17, 22 };
15188         s8 lna2_gain_db[] = { -2, 7, 11, 15 };
15189         s8 tia_gain_db[] = { -4, -1, 2, 5, 5, 5, 5, 5, 5, 5 };
15190         s8 tia_gainbits[] = {
15191                 0x0, 0x01, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15192
15193         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15194         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15195
15196         mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15197
15198         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3c << 0));
15199         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3c << 0));
15200
15201         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x8, 8,
15202                                  lna1_gain_db);
15203         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x8, 8,
15204                                  lna1_gain_db);
15205
15206         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10, 8,
15207                                  lna2_gain_db);
15208         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10, 8,
15209                                  lna2_gain_db);
15210
15211         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15212                                  tia_gain_db);
15213         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15214                                  tia_gain_db);
15215
15216         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15217                                  tia_gainbits);
15218         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15219                                  tia_gainbits);
15220
15221         write_phy_reg(pi, 0x37, 0x74);
15222         write_phy_reg(pi, 0x2ad, 0x74);
15223         write_phy_reg(pi, 0x38, 0x18);
15224         write_phy_reg(pi, 0x2ae, 0x18);
15225
15226         write_phy_reg(pi, 0x2b, 0xe8);
15227         write_phy_reg(pi, 0x41, 0xe8);
15228
15229         if (CHSPEC_IS20(pi->radio_chanspec)) {
15230
15231                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x12 << 0));
15232                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x12 << 0));
15233         } else {
15234
15235                 mod_phy_reg(pi, 0x300, (0x3f << 0), (0x10 << 0));
15236                 mod_phy_reg(pi, 0x301, (0x3f << 0), (0x10 << 0));
15237         }
15238 }
15239
15240 static void wlc_phy_workarounds_nphy_gainctrl_2057_rev6(struct brcms_phy *pi)
15241 {
15242         u16 currband;
15243         s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15244         s8 *lna1_gain_db = NULL;
15245         s8 *lna1_gain_db_2 = NULL;
15246         s8 *lna2_gain_db = NULL;
15247         s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15248         s8 *tia_gain_db;
15249         s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15250         s8 *tia_gainbits;
15251         u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15252         u16 *rfseq_init_gain;
15253         u16 init_gaincode;
15254         u16 clip1hi_gaincode;
15255         u16 clip1md_gaincode = 0;
15256         u16 clip1md_gaincode_B;
15257         u16 clip1lo_gaincode;
15258         u16 clip1lo_gaincode_B;
15259         u8 crsminl_th = 0;
15260         u8 crsminu_th;
15261         u16 nbclip_th = 0;
15262         u8 w1clip_th;
15263         u16 freq;
15264         s8 nvar_baseline_offset0 = 0, nvar_baseline_offset1 = 0;
15265         u8 chg_nbclip_th = 0;
15266
15267         mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15268         mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15269
15270         currband = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15271         if (currband == 0) {
15272
15273                 lna1_gain_db = lna1G_gain_db_rev7;
15274
15275                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15276                                          lna1_gain_db);
15277                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15278                                          lna1_gain_db);
15279
15280                 mod_phy_reg(pi, 0x283, (0xff << 0), (0x40 << 0));
15281
15282                 if (CHSPEC_IS40(pi->radio_chanspec)) {
15283                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x3e << 0));
15284                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x3e << 0));
15285                 }
15286
15287                 mod_phy_reg(pi, 0x289, (0xff << 0), (0x46 << 0));
15288
15289                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15290                         mod_phy_reg(pi, 0x300, (0x3f << 0), (13 << 0));
15291                         mod_phy_reg(pi, 0x301, (0x3f << 0), (13 << 0));
15292                 }
15293         } else {
15294
15295                 init_gaincode = 0x9e;
15296                 clip1hi_gaincode = 0x9e;
15297                 clip1md_gaincode_B = 0x24;
15298                 clip1lo_gaincode = 0x8a;
15299                 clip1lo_gaincode_B = 8;
15300                 rfseq_init_gain = rfseqA_init_gain_rev7;
15301
15302                 tia_gain_db = tiaA_gain_db_rev7;
15303                 tia_gainbits = tiaA_gainbits_rev7;
15304
15305                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
15306                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15307
15308                         w1clip_th = 25;
15309                         clip1md_gaincode = 0x82;
15310
15311                         if ((freq <= 5080) || (freq == 5825)) {
15312
15313                                 s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15314                                 s8 lna1A_gain_db_2_rev7[] = {
15315                                         11, 17, 22, 25};
15316                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15317
15318                                 crsminu_th = 0x3e;
15319                                 lna1_gain_db = lna1A_gain_db_rev7;
15320                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15321                                 lna2_gain_db = lna2A_gain_db_rev7;
15322                         } else if ((freq >= 5500) && (freq <= 5700)) {
15323
15324                                 s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15325                                 s8 lna1A_gain_db_2_rev7[] = {
15326                                         12, 18, 22, 26};
15327                                 s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15328
15329                                 crsminu_th = 0x45;
15330                                 clip1md_gaincode_B = 0x14;
15331                                 nbclip_th = 0xff;
15332                                 chg_nbclip_th = 1;
15333                                 lna1_gain_db = lna1A_gain_db_rev7;
15334                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15335                                 lna2_gain_db = lna2A_gain_db_rev7;
15336                         } else {
15337
15338                                 s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15339                                 s8 lna1A_gain_db_2_rev7[] = {
15340                                         12, 18, 22, 26};
15341                                 s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15342
15343                                 crsminu_th = 0x41;
15344                                 lna1_gain_db = lna1A_gain_db_rev7;
15345                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15346                                 lna2_gain_db = lna2A_gain_db_rev7;
15347                         }
15348
15349                         if (freq <= 4920) {
15350                                 nvar_baseline_offset0 = 5;
15351                                 nvar_baseline_offset1 = 5;
15352                         } else if ((freq > 4920) && (freq <= 5320)) {
15353                                 nvar_baseline_offset0 = 3;
15354                                 nvar_baseline_offset1 = 5;
15355                         } else if ((freq > 5320) && (freq <= 5700)) {
15356                                 nvar_baseline_offset0 = 3;
15357                                 nvar_baseline_offset1 = 2;
15358                         } else {
15359                                 nvar_baseline_offset0 = 4;
15360                                 nvar_baseline_offset1 = 0;
15361                         }
15362                 } else {
15363
15364                         crsminu_th = 0x3a;
15365                         crsminl_th = 0x3a;
15366                         w1clip_th = 20;
15367
15368                         if ((freq >= 4920) && (freq <= 5320)) {
15369                                 nvar_baseline_offset0 = 4;
15370                                 nvar_baseline_offset1 = 5;
15371                         } else if ((freq > 5320) && (freq <= 5550)) {
15372                                 nvar_baseline_offset0 = 4;
15373                                 nvar_baseline_offset1 = 2;
15374                         } else {
15375                                 nvar_baseline_offset0 = 5;
15376                                 nvar_baseline_offset1 = 3;
15377                         }
15378                 }
15379
15380                 write_phy_reg(pi, 0x20, init_gaincode);
15381                 write_phy_reg(pi, 0x2a7, init_gaincode);
15382
15383                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15384                                          pi->pubpi.phy_corenum, 0x106, 16,
15385                                          rfseq_init_gain);
15386
15387                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15388                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15389
15390                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15391                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15392
15393                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15394                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15395                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15396                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15397
15398                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15399                                          tia_gain_db);
15400                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15401                                          tia_gain_db);
15402
15403                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15404                                          tia_gainbits);
15405                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15406                                          tia_gainbits);
15407
15408                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15409
15410                 if (chg_nbclip_th == 1) {
15411                         write_phy_reg(pi, 0x2b, nbclip_th);
15412                         write_phy_reg(pi, 0x41, nbclip_th);
15413                 }
15414
15415                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15416                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15417
15418                 mod_phy_reg(pi, 0x2e4,
15419                             (0x3f << 0), (nvar_baseline_offset0 << 0));
15420
15421                 mod_phy_reg(pi, 0x2e4,
15422                             (0x3f << 6), (nvar_baseline_offset1 << 6));
15423
15424                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15425
15426                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15427                                                  lna1_gain_db);
15428                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15429                                                  lna1_gain_db_2);
15430
15431                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15432                                                  8, lna2_gain_db);
15433                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15434                                                  8, lna2_gain_db);
15435
15436                         write_phy_reg(pi, 0x24, clip1md_gaincode);
15437                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15438                 } else {
15439                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15440                 }
15441         }
15442 }
15443
15444 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15445 {
15446         u16 w1th, hpf_code, currband;
15447         int ctr;
15448         u8 rfseq_updategainu_events[] = {
15449                 NPHY_RFSEQ_CMD_RX_GAIN,
15450                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15451                 NPHY_RFSEQ_CMD_SET_HPF_BW
15452         };
15453         u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15454         s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15455         s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15456         s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15457         s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15458         s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15459         s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15460         s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15461         s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15462         s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15463         s8 *lna1_gain_db = NULL;
15464         s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15465         s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15466         s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15467         s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15468         s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15469         s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15470         s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15471         s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15472         s8 *lna2_gain_db = NULL;
15473         s8 tiaG_gain_db[] = {
15474                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15475         s8 tiaA_gain_db[] = {
15476                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15477         s8 tiaA_gain_db_rev4[] = {
15478                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15479         s8 tiaA_gain_db_rev5[] = {
15480                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15481         s8 tiaA_gain_db_rev6[] = {
15482                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15483         s8 *tia_gain_db;
15484         s8 tiaG_gainbits[] = {
15485                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15486         s8 tiaA_gainbits[] = {
15487                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15488         s8 tiaA_gainbits_rev4[] = {
15489                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15490         s8 tiaA_gainbits_rev5[] = {
15491                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15492         s8 tiaA_gainbits_rev6[] = {
15493                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15494         s8 *tia_gainbits;
15495         s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15496         s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15497         u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15498         u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15499         u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15500         u16 rfseqG_init_gain_rev5_elna[] = {
15501                 0x013f, 0x013f, 0x013f, 0x013f };
15502         u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15503         u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15504         u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15505         u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15506         u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15507         u16 rfseqA_init_gain_rev4_elna[] = {
15508                 0x314f, 0x314f, 0x314f, 0x314f };
15509         u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15510         u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15511         u16 *rfseq_init_gain;
15512         u16 initG_gaincode = 0x627e;
15513         u16 initG_gaincode_rev4 = 0x527e;
15514         u16 initG_gaincode_rev5 = 0x427e;
15515         u16 initG_gaincode_rev5_elna = 0x027e;
15516         u16 initG_gaincode_rev6 = 0x527e;
15517         u16 initG_gaincode_rev6_224B0 = 0x427e;
15518         u16 initG_gaincode_rev6_elna = 0x127e;
15519         u16 initA_gaincode = 0x52de;
15520         u16 initA_gaincode_rev4 = 0x629e;
15521         u16 initA_gaincode_rev4_elna = 0x329e;
15522         u16 initA_gaincode_rev5 = 0x729e;
15523         u16 initA_gaincode_rev6 = 0x729e;
15524         u16 init_gaincode;
15525         u16 clip1hiG_gaincode = 0x107e;
15526         u16 clip1hiG_gaincode_rev4 = 0x007e;
15527         u16 clip1hiG_gaincode_rev5 = 0x1076;
15528         u16 clip1hiG_gaincode_rev6 = 0x007e;
15529         u16 clip1hiA_gaincode = 0x00de;
15530         u16 clip1hiA_gaincode_rev4 = 0x029e;
15531         u16 clip1hiA_gaincode_rev5 = 0x029e;
15532         u16 clip1hiA_gaincode_rev6 = 0x029e;
15533         u16 clip1hi_gaincode;
15534         u16 clip1mdG_gaincode = 0x0066;
15535         u16 clip1mdA_gaincode = 0x00ca;
15536         u16 clip1mdA_gaincode_rev4 = 0x1084;
15537         u16 clip1mdA_gaincode_rev5 = 0x2084;
15538         u16 clip1mdA_gaincode_rev6 = 0x2084;
15539         u16 clip1md_gaincode = 0;
15540         u16 clip1loG_gaincode = 0x0074;
15541         u16 clip1loG_gaincode_rev5[] = {
15542                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15543         };
15544         u16 clip1loG_gaincode_rev6[] = {
15545                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15546         };
15547         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15548         u16 clip1loA_gaincode = 0x00cc;
15549         u16 clip1loA_gaincode_rev4 = 0x0086;
15550         u16 clip1loA_gaincode_rev5 = 0x2086;
15551         u16 clip1loA_gaincode_rev6 = 0x2086;
15552         u16 clip1lo_gaincode;
15553         u8 crsminG_th = 0x18;
15554         u8 crsminG_th_rev5 = 0x18;
15555         u8 crsminG_th_rev6 = 0x18;
15556         u8 crsminA_th = 0x1e;
15557         u8 crsminA_th_rev4 = 0x24;
15558         u8 crsminA_th_rev5 = 0x24;
15559         u8 crsminA_th_rev6 = 0x24;
15560         u8 crsmin_th;
15561         u8 crsminlG_th = 0x18;
15562         u8 crsminlG_th_rev5 = 0x18;
15563         u8 crsminlG_th_rev6 = 0x18;
15564         u8 crsminlA_th = 0x1e;
15565         u8 crsminlA_th_rev4 = 0x24;
15566         u8 crsminlA_th_rev5 = 0x24;
15567         u8 crsminlA_th_rev6 = 0x24;
15568         u8 crsminl_th = 0;
15569         u8 crsminuG_th = 0x18;
15570         u8 crsminuG_th_rev5 = 0x18;
15571         u8 crsminuG_th_rev6 = 0x18;
15572         u8 crsminuA_th = 0x1e;
15573         u8 crsminuA_th_rev4 = 0x24;
15574         u8 crsminuA_th_rev5 = 0x24;
15575         u8 crsminuA_th_rev6 = 0x24;
15576         u8 crsminuA_th_rev6_224B0 = 0x2d;
15577         u8 crsminu_th;
15578         u16 nbclipG_th = 0x20d;
15579         u16 nbclipG_th_rev4 = 0x1a1;
15580         u16 nbclipG_th_rev5 = 0x1d0;
15581         u16 nbclipG_th_rev6 = 0x1d0;
15582         u16 nbclipA_th = 0x1a1;
15583         u16 nbclipA_th_rev4 = 0x107;
15584         u16 nbclipA_th_rev5 = 0x0a9;
15585         u16 nbclipA_th_rev6 = 0x0f0;
15586         u16 nbclip_th = 0;
15587         u8 w1clipG_th = 5;
15588         u8 w1clipG_th_rev5 = 9;
15589         u8 w1clipG_th_rev6 = 5;
15590         u8 w1clipA_th = 25, w1clip_th;
15591         u8 rssi_gain_default = 0x50;
15592         u8 rssiG_gain_rev6_224B0 = 0x50;
15593         u8 rssiA_gain_rev5 = 0x90;
15594         u8 rssiA_gain_rev6 = 0x90;
15595         u8 rssi_gain;
15596         u16 regval[21];
15597         u8 triso;
15598
15599         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15600                 pi->srom_fem2g.triso;
15601
15602         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15603                 if (pi->pubpi.radiorev == 5) {
15604                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15605                 } else if (pi->pubpi.radiorev == 7) {
15606                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15607
15608                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15609                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15610
15611                 } else if ((pi->pubpi.radiorev == 3)
15612                            || (pi->pubpi.radiorev == 8)) {
15613                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15614
15615                         if (pi->pubpi.radiorev == 8) {
15616                                 mod_phy_reg(pi, 0x283,
15617                                             (0xff << 0), (0x44 << 0));
15618                                 mod_phy_reg(pi, 0x280,
15619                                             (0xff << 0), (0x44 << 0));
15620                         }
15621                 } else {
15622                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15623                 }
15624         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15625
15626                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15627
15628                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15629                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15630
15631                 currband =
15632                         read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15633                 if (currband == 0) {
15634                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15635                                 if (pi->pubpi.radiorev == 11) {
15636                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
15637                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
15638                                         rfseq_init_gain =
15639                                                 rfseqG_init_gain_rev6_224B0;
15640                                         init_gaincode =
15641                                                 initG_gaincode_rev6_224B0;
15642                                         clip1hi_gaincode =
15643                                                 clip1hiG_gaincode_rev6;
15644                                         clip1lo_gaincode =
15645                                                 clip1loG_gaincode_rev6_224B0;
15646                                         nbclip_th = nbclipG_th_rev6;
15647                                         w1clip_th = w1clipG_th_rev6;
15648                                         crsmin_th = crsminG_th_rev6;
15649                                         crsminl_th = crsminlG_th_rev6;
15650                                         crsminu_th = crsminuG_th_rev6;
15651                                         rssi_gain = rssiG_gain_rev6_224B0;
15652                                 } else {
15653                                         lna1_gain_db = lna1G_gain_db_rev6;
15654                                         lna2_gain_db = lna2G_gain_db_rev6;
15655                                         if (pi->sh->boardflags & BFL_EXTLNA) {
15656
15657                                                 rfseq_init_gain =
15658                                                      rfseqG_init_gain_rev6_elna;
15659                                                 init_gaincode =
15660                                                        initG_gaincode_rev6_elna;
15661                                         } else {
15662                                                 rfseq_init_gain =
15663                                                         rfseqG_init_gain_rev6;
15664                                                 init_gaincode =
15665                                                         initG_gaincode_rev6;
15666                                         }
15667                                         clip1hi_gaincode =
15668                                                 clip1hiG_gaincode_rev6;
15669                                         switch (triso) {
15670                                         case 0:
15671                                                 clip1lo_gaincode =
15672                                                         clip1loG_gaincode_rev6
15673                                                         [0];
15674                                                 break;
15675                                         case 1:
15676                                                 clip1lo_gaincode =
15677                                                         clip1loG_gaincode_rev6
15678                                                         [1];
15679                                                 break;
15680                                         case 2:
15681                                                 clip1lo_gaincode =
15682                                                         clip1loG_gaincode_rev6
15683                                                         [2];
15684                                                 break;
15685                                         case 3:
15686                                         default:
15687
15688                                                 clip1lo_gaincode =
15689                                                         clip1loG_gaincode_rev6
15690                                                         [3];
15691                                                 break;
15692                                         case 4:
15693                                                 clip1lo_gaincode =
15694                                                         clip1loG_gaincode_rev6
15695                                                         [4];
15696                                                 break;
15697                                         case 5:
15698                                                 clip1lo_gaincode =
15699                                                         clip1loG_gaincode_rev6
15700                                                         [5];
15701                                                 break;
15702                                         case 6:
15703                                                 clip1lo_gaincode =
15704                                                         clip1loG_gaincode_rev6
15705                                                         [6];
15706                                                 break;
15707                                         case 7:
15708                                                 clip1lo_gaincode =
15709                                                         clip1loG_gaincode_rev6
15710                                                         [7];
15711                                                 break;
15712                                         }
15713                                         nbclip_th = nbclipG_th_rev6;
15714                                         w1clip_th = w1clipG_th_rev6;
15715                                         crsmin_th = crsminG_th_rev6;
15716                                         crsminl_th = crsminlG_th_rev6;
15717                                         crsminu_th = crsminuG_th_rev6;
15718                                         rssi_gain = rssi_gain_default;
15719                                 }
15720                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15721                                 lna1_gain_db = lna1G_gain_db_rev5;
15722                                 lna2_gain_db = lna2G_gain_db_rev5;
15723                                 if (pi->sh->boardflags & BFL_EXTLNA) {
15724
15725                                         rfseq_init_gain =
15726                                                 rfseqG_init_gain_rev5_elna;
15727                                         init_gaincode =
15728                                                 initG_gaincode_rev5_elna;
15729                                 } else {
15730                                         rfseq_init_gain = rfseqG_init_gain_rev5;
15731                                         init_gaincode = initG_gaincode_rev5;
15732                                 }
15733                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15734                                 switch (triso) {
15735                                 case 0:
15736                                         clip1lo_gaincode =
15737                                                 clip1loG_gaincode_rev5[0];
15738                                         break;
15739                                 case 1:
15740                                         clip1lo_gaincode =
15741                                                 clip1loG_gaincode_rev5[1];
15742                                         break;
15743                                 case 2:
15744                                         clip1lo_gaincode =
15745                                                 clip1loG_gaincode_rev5[2];
15746                                         break;
15747                                 case 3:
15748
15749                                         clip1lo_gaincode =
15750                                                 clip1loG_gaincode_rev5[3];
15751                                         break;
15752                                 case 4:
15753                                         clip1lo_gaincode =
15754                                                 clip1loG_gaincode_rev5[4];
15755                                         break;
15756                                 case 5:
15757                                         clip1lo_gaincode =
15758                                                 clip1loG_gaincode_rev5[5];
15759                                         break;
15760                                 case 6:
15761                                         clip1lo_gaincode =
15762                                                 clip1loG_gaincode_rev5[6];
15763                                         break;
15764                                 case 7:
15765                                         clip1lo_gaincode =
15766                                                 clip1loG_gaincode_rev5[7];
15767                                         break;
15768                                 default:
15769                                         clip1lo_gaincode =
15770                                                 clip1loG_gaincode_rev5[3];
15771                                         break;
15772                                 }
15773                                 nbclip_th = nbclipG_th_rev5;
15774                                 w1clip_th = w1clipG_th_rev5;
15775                                 crsmin_th = crsminG_th_rev5;
15776                                 crsminl_th = crsminlG_th_rev5;
15777                                 crsminu_th = crsminuG_th_rev5;
15778                                 rssi_gain = rssi_gain_default;
15779                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15780                                 lna1_gain_db = lna1G_gain_db_rev4;
15781                                 lna2_gain_db = lna2G_gain_db;
15782                                 rfseq_init_gain = rfseqG_init_gain_rev4;
15783                                 init_gaincode = initG_gaincode_rev4;
15784                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15785                                 clip1lo_gaincode = clip1loG_gaincode;
15786                                 nbclip_th = nbclipG_th_rev4;
15787                                 w1clip_th = w1clipG_th;
15788                                 crsmin_th = crsminG_th;
15789                                 crsminl_th = crsminlG_th;
15790                                 crsminu_th = crsminuG_th;
15791                                 rssi_gain = rssi_gain_default;
15792                         } else {
15793                                 lna1_gain_db = lna1G_gain_db;
15794                                 lna2_gain_db = lna2G_gain_db;
15795                                 rfseq_init_gain = rfseqG_init_gain;
15796                                 init_gaincode = initG_gaincode;
15797                                 clip1hi_gaincode = clip1hiG_gaincode;
15798                                 clip1lo_gaincode = clip1loG_gaincode;
15799                                 nbclip_th = nbclipG_th;
15800                                 w1clip_th = w1clipG_th;
15801                                 crsmin_th = crsminG_th;
15802                                 crsminl_th = crsminlG_th;
15803                                 crsminu_th = crsminuG_th;
15804                                 rssi_gain = rssi_gain_default;
15805                         }
15806                         tia_gain_db = tiaG_gain_db;
15807                         tia_gainbits = tiaG_gainbits;
15808                         clip1md_gaincode = clip1mdG_gaincode;
15809                 } else {
15810                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15811                                 lna1_gain_db = lna1A_gain_db_rev6;
15812                                 lna2_gain_db = lna2A_gain_db_rev6;
15813                                 tia_gain_db = tiaA_gain_db_rev6;
15814                                 tia_gainbits = tiaA_gainbits_rev6;
15815                                 rfseq_init_gain = rfseqA_init_gain_rev6;
15816                                 init_gaincode = initA_gaincode_rev6;
15817                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15818                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
15819                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
15820                                 crsmin_th = crsminA_th_rev6;
15821                                 crsminl_th = crsminlA_th_rev6;
15822                                 if ((pi->pubpi.radiorev == 11) &&
15823                                     (CHSPEC_IS40(pi->radio_chanspec) == 0))
15824                                         crsminu_th = crsminuA_th_rev6_224B0;
15825                                 else
15826                                         crsminu_th = crsminuA_th_rev6;
15827
15828                                 nbclip_th = nbclipA_th_rev6;
15829                                 rssi_gain = rssiA_gain_rev6;
15830                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15831                                 lna1_gain_db = lna1A_gain_db_rev5;
15832                                 lna2_gain_db = lna2A_gain_db_rev5;
15833                                 tia_gain_db = tiaA_gain_db_rev5;
15834                                 tia_gainbits = tiaA_gainbits_rev5;
15835                                 rfseq_init_gain = rfseqA_init_gain_rev5;
15836                                 init_gaincode = initA_gaincode_rev5;
15837                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15838                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
15839                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
15840                                 crsmin_th = crsminA_th_rev5;
15841                                 crsminl_th = crsminlA_th_rev5;
15842                                 crsminu_th = crsminuA_th_rev5;
15843                                 nbclip_th = nbclipA_th_rev5;
15844                                 rssi_gain = rssiA_gain_rev5;
15845                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15846                                 lna1_gain_db = lna1A_gain_db_rev4;
15847                                 lna2_gain_db = lna2A_gain_db_rev4;
15848                                 tia_gain_db = tiaA_gain_db_rev4;
15849                                 tia_gainbits = tiaA_gainbits_rev4;
15850                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15851
15852                                         rfseq_init_gain =
15853                                                 rfseqA_init_gain_rev4_elna;
15854                                         init_gaincode =
15855                                                 initA_gaincode_rev4_elna;
15856                                 } else {
15857                                         rfseq_init_gain = rfseqA_init_gain_rev4;
15858                                         init_gaincode = initA_gaincode_rev4;
15859                                 }
15860                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15861                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
15862                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
15863                                 crsmin_th = crsminA_th_rev4;
15864                                 crsminl_th = crsminlA_th_rev4;
15865                                 crsminu_th = crsminuA_th_rev4;
15866                                 nbclip_th = nbclipA_th_rev4;
15867                                 rssi_gain = rssi_gain_default;
15868                         } else {
15869                                 lna1_gain_db = lna1A_gain_db;
15870                                 lna2_gain_db = lna2A_gain_db;
15871                                 tia_gain_db = tiaA_gain_db;
15872                                 tia_gainbits = tiaA_gainbits;
15873                                 rfseq_init_gain = rfseqA_init_gain;
15874                                 init_gaincode = initA_gaincode;
15875                                 clip1hi_gaincode = clip1hiA_gaincode;
15876                                 clip1md_gaincode = clip1mdA_gaincode;
15877                                 clip1lo_gaincode = clip1loA_gaincode;
15878                                 crsmin_th = crsminA_th;
15879                                 crsminl_th = crsminlA_th;
15880                                 crsminu_th = crsminuA_th;
15881                                 nbclip_th = nbclipA_th;
15882                                 rssi_gain = rssi_gain_default;
15883                         }
15884                         w1clip_th = w1clipA_th;
15885                 }
15886
15887                 write_radio_reg(pi,
15888                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15889                                  RADIO_2056_RX0), 0x17);
15890                 write_radio_reg(pi,
15891                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15892                                  RADIO_2056_RX1), 0x17);
15893
15894                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15895                                 0xf0);
15896                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15897                                 0xf0);
15898
15899                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15900                                 0x0);
15901                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15902                                 0x0);
15903
15904                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15905                                 rssi_gain);
15906                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15907                                 rssi_gain);
15908
15909                 write_radio_reg(pi,
15910                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15911                                  RADIO_2056_RX0), 0x17);
15912                 write_radio_reg(pi,
15913                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15914                                  RADIO_2056_RX1), 0x17);
15915
15916                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15917                                 0xFF);
15918                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15919                                 0xFF);
15920
15921                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15922                                          8, lna1_gain_db);
15923                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15924                                          8, lna1_gain_db);
15925
15926                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15927                                          8, lna2_gain_db);
15928                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15929                                          8, lna2_gain_db);
15930
15931                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15932                                          8, tia_gain_db);
15933                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15934                                          8, tia_gain_db);
15935
15936                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15937                                          8, tia_gainbits);
15938                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15939                                          8, tia_gainbits);
15940
15941                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15942                                          8, &lpf_gain_db);
15943                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15944                                          8, &lpf_gain_db);
15945                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15946                                          8, &lpf_gainbits);
15947                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15948                                          8, &lpf_gainbits);
15949
15950                 write_phy_reg(pi, 0x20, init_gaincode);
15951                 write_phy_reg(pi, 0x2a7, init_gaincode);
15952
15953                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15954                                          pi->pubpi.phy_corenum, 0x106, 16,
15955                                          rfseq_init_gain);
15956
15957                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15958                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15959
15960                 write_phy_reg(pi, 0x24, clip1md_gaincode);
15961                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15962
15963                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15964                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15965
15966                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15967                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15968                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15969
15970                 write_phy_reg(pi, 0x2b, nbclip_th);
15971                 write_phy_reg(pi, 0x41, nbclip_th);
15972
15973                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15974                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15975
15976                 write_phy_reg(pi, 0x150, 0x809c);
15977
15978         } else {
15979
15980                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15981                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15982
15983                 write_phy_reg(pi, 0x2b, 0x84);
15984                 write_phy_reg(pi, 0x41, 0x84);
15985
15986                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15987                         write_phy_reg(pi, 0x6b, 0x2b);
15988                         write_phy_reg(pi, 0x6c, 0x2b);
15989                         write_phy_reg(pi, 0x6d, 0x9);
15990                         write_phy_reg(pi, 0x6e, 0x9);
15991                 }
15992
15993                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15994                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15995                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15996
15997                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15998                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15999                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
16000
16001                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
16002                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16003                 }
16004
16005                 write_phy_reg(pi, 0x150, 0x809c);
16006
16007                 if (pi->nphy_gain_boost)
16008                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16009                             (CHSPEC_IS40(pi->radio_chanspec)))
16010                                 hpf_code = 4;
16011                         else
16012                                 hpf_code = 5;
16013                 else if (CHSPEC_IS40(pi->radio_chanspec))
16014                         hpf_code = 6;
16015                 else
16016                         hpf_code = 7;
16017
16018                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16019                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16020
16021                 for (ctr = 0; ctr < 4; ctr++)
16022                         regval[ctr] = (hpf_code << 8) | 0x7c;
16023                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16024
16025                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16026
16027                 if (pi->nphy_elna_gain_config) {
16028                         regval[0] = 0;
16029                         regval[1] = 1;
16030                         regval[2] = 1;
16031                         regval[3] = 1;
16032                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16033                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16034
16035                         for (ctr = 0; ctr < 4; ctr++)
16036                                 regval[ctr] = (hpf_code << 8) | 0x74;
16037                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16038                 }
16039
16040                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16041                         for (ctr = 0; ctr < 21; ctr++)
16042                                 regval[ctr] = 3 * ctr;
16043                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16044                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16045
16046                         for (ctr = 0; ctr < 21; ctr++)
16047                                 regval[ctr] = (u16) ctr;
16048                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16049                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16050                 }
16051
16052                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16053                                        rfseq_updategainu_events,
16054                                        rfseq_updategainu_dlys,
16055                                        sizeof(rfseq_updategainu_events) /
16056                                        sizeof(rfseq_updategainu_events[0]));
16057
16058                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16059
16060                 if (CHSPEC_IS2G(pi->radio_chanspec))
16061                         mod_phy_reg(pi,
16062                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16063                                     0x7f, 0x4);
16064         }
16065 }
16066
16067 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
16068 {
16069         u8 rfseq_rx2tx_events[] = {
16070                 NPHY_RFSEQ_CMD_NOP,
16071                 NPHY_RFSEQ_CMD_RXG_FBW,
16072                 NPHY_RFSEQ_CMD_TR_SWITCH,
16073                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16074                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16075                 NPHY_RFSEQ_CMD_TX_GAIN,
16076                 NPHY_RFSEQ_CMD_EXT_PA
16077         };
16078         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16079         u8 rfseq_tx2rx_events[] = {
16080                 NPHY_RFSEQ_CMD_NOP,
16081                 NPHY_RFSEQ_CMD_EXT_PA,
16082                 NPHY_RFSEQ_CMD_TX_GAIN,
16083                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16084                 NPHY_RFSEQ_CMD_TR_SWITCH,
16085                 NPHY_RFSEQ_CMD_RXG_FBW,
16086                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16087         };
16088         u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16089         u8 rfseq_tx2rx_events_rev3[] = {
16090                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16091                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16092                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16093                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16094                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16095                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16096                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16097                 NPHY_REV3_RFSEQ_CMD_END
16098         };
16099         u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16100         u8 rfseq_rx2tx_events_rev3[] = {
16101                 NPHY_REV3_RFSEQ_CMD_NOP,
16102                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16103                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16104                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16105                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16106                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16107                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16108                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16109                 NPHY_REV3_RFSEQ_CMD_END
16110         };
16111         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16112
16113         u8 rfseq_rx2tx_events_rev3_ipa[] = {
16114                 NPHY_REV3_RFSEQ_CMD_NOP,
16115                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16116                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16117                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16118                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16119                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16120                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16121                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16122                 NPHY_REV3_RFSEQ_CMD_END
16123         };
16124         u8 rfseq_rx2tx_dlys_rev3_ipa[] = { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16125         u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16126
16127         s16 alpha0, alpha1, alpha2;
16128         s16 beta0, beta1, beta2;
16129         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16130             stbc_data_weights;
16131         u8 chan_freq_range = 0;
16132         u16 dac_control = 0x0002;
16133         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16134         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16135         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16136         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16137         u16 *aux_adc_vmid;
16138         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16139         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16140         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16141         u16 *aux_adc_gain;
16142         u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16143         u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16144         s32 min_nvar_val = 0x18d;
16145         s32 min_nvar_offset_6mbps = 20;
16146         u8 pdetrange;
16147         u8 triso;
16148         u16 regval;
16149         u16 afectrl_adc_ctrl1_rev7 = 0x20;
16150         u16 afectrl_adc_ctrl2_rev7 = 0x0;
16151         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16152         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16153         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16154         u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16155         u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16156         u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16157         u16 ipalvlshift_3p3_war_en = 0;
16158         u16 rccal_bcap_val, rccal_scap_val;
16159         u16 rccal_tx20_11b_bcap = 0;
16160         u16 rccal_tx20_11b_scap = 0;
16161         u16 rccal_tx20_11n_bcap = 0;
16162         u16 rccal_tx20_11n_scap = 0;
16163         u16 rccal_tx40_11n_bcap = 0;
16164         u16 rccal_tx40_11n_scap = 0;
16165         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16166         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16167         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16168         u16 tx_lpf_bw_ofdm_20mhz = 0;
16169         u16 tx_lpf_bw_ofdm_40mhz = 0;
16170         u16 tx_lpf_bw_11b = 0;
16171         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16172         u16 txgm_idac_bleed = 0;
16173         bool rccal_ovrd = false;
16174         u16 freq;
16175         int coreNum;
16176
16177         if (CHSPEC_IS5G(pi->radio_chanspec))
16178                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
16179         else
16180                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
16181
16182         if (pi->phyhang_avoid)
16183                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
16184
16185         or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
16186
16187         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
16188
16189                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16190                         mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16191
16192                         mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16193                         mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16194                         mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16195                         mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16196                         mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16197                         mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16198                         mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16199                         mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16200                         mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16201                         mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16202                         mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16203                         mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16204                         mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16205                         mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16206                         mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16207                         mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16208                 }
16209
16210                 if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16211                         write_phy_reg(pi, 0x23f, 0x1b0);
16212                         write_phy_reg(pi, 0x240, 0x1b0);
16213                 }
16214
16215                 if (NREV_GE(pi->pubpi.phy_rev, 8))
16216                         mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16217
16218                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16219                                          &dac_control);
16220                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16221                                          &dac_control);
16222
16223                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16224                                         1, 0, 32, &leg_data_weights);
16225                 leg_data_weights = leg_data_weights & 0xffffff;
16226                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16227                                          1, 0, 32, &leg_data_weights);
16228
16229                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16230                                          2, 0x15e, 16,
16231                                          rfseq_rx2tx_dacbufpu_rev7);
16232                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16233                                          rfseq_rx2tx_dacbufpu_rev7);
16234
16235                 if (PHY_IPA(pi))
16236                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16237                                                rfseq_rx2tx_events_rev3_ipa,
16238                                                rfseq_rx2tx_dlys_rev3_ipa,
16239                                                ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16240
16241                 mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16242                 mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16243
16244                 tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16245                 tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16246                 tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16247
16248                 if (PHY_IPA(pi)) {
16249
16250                         if (((pi->pubpi.radiorev == 5)
16251                              && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16252                             || (pi->pubpi.radiorev == 7)
16253                             || (pi->pubpi.radiorev == 8)) {
16254
16255                                 rccal_bcap_val =
16256                                         read_radio_reg(
16257                                                 pi,
16258                                                 RADIO_2057_RCCAL_BCAP_VAL);
16259                                 rccal_scap_val =
16260                                         read_radio_reg(
16261                                                 pi,
16262                                                 RADIO_2057_RCCAL_SCAP_VAL);
16263
16264                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16265                                 rccal_tx20_11b_scap = rccal_scap_val;
16266
16267                                 if ((pi->pubpi.radiorev == 5) &&
16268                                     (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16269
16270                                         rccal_tx20_11n_bcap = rccal_bcap_val;
16271                                         rccal_tx20_11n_scap = rccal_scap_val;
16272                                         rccal_tx40_11n_bcap = 0xc;
16273                                         rccal_tx40_11n_scap = 0xc;
16274
16275                                         rccal_ovrd = true;
16276
16277                                 } else if ((pi->pubpi.radiorev == 7)
16278                                            || (pi->pubpi.radiorev == 8)) {
16279
16280                                         tx_lpf_bw_ofdm_20mhz = 4;
16281                                         tx_lpf_bw_11b = 1;
16282
16283                                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16284                                                 rccal_tx20_11n_bcap = 0xc;
16285                                                 rccal_tx20_11n_scap = 0xc;
16286                                                 rccal_tx40_11n_bcap = 0xa;
16287                                                 rccal_tx40_11n_scap = 0xa;
16288                                         } else {
16289                                                 rccal_tx20_11n_bcap = 0x14;
16290                                                 rccal_tx20_11n_scap = 0x14;
16291                                                 rccal_tx40_11n_bcap = 0xf;
16292                                                 rccal_tx40_11n_scap = 0xf;
16293                                         }
16294
16295                                         rccal_ovrd = true;
16296                                 }
16297                         }
16298
16299                 } else {
16300
16301                         if (pi->pubpi.radiorev == 5) {
16302
16303                                 tx_lpf_bw_ofdm_20mhz = 1;
16304                                 tx_lpf_bw_ofdm_40mhz = 3;
16305
16306                                 rccal_bcap_val =
16307                                         read_radio_reg(
16308                                                 pi,
16309                                                 RADIO_2057_RCCAL_BCAP_VAL);
16310                                 rccal_scap_val =
16311                                         read_radio_reg(
16312                                                 pi,
16313                                                 RADIO_2057_RCCAL_SCAP_VAL);
16314
16315                                 rccal_tx20_11b_bcap = rccal_bcap_val;
16316                                 rccal_tx20_11b_scap = rccal_scap_val;
16317
16318                                 rccal_tx20_11n_bcap = 0x13;
16319                                 rccal_tx20_11n_scap = 0x11;
16320                                 rccal_tx40_11n_bcap = 0x13;
16321                                 rccal_tx40_11n_scap = 0x11;
16322
16323                                 rccal_ovrd = true;
16324                         }
16325                 }
16326
16327                 if (rccal_ovrd) {
16328
16329                         rx2tx_lpf_rc_lut_tx20_11b =
16330                                 (rccal_tx20_11b_bcap << 8) |
16331                                 (rccal_tx20_11b_scap << 3) |
16332                                 tx_lpf_bw_11b;
16333                         rx2tx_lpf_rc_lut_tx20_11n =
16334                                 (rccal_tx20_11n_bcap << 8) |
16335                                 (rccal_tx20_11n_scap << 3) |
16336                                 tx_lpf_bw_ofdm_20mhz;
16337                         rx2tx_lpf_rc_lut_tx40_11n =
16338                                 (rccal_tx40_11n_bcap << 8) |
16339                                 (rccal_tx40_11n_scap << 3) |
16340                                 tx_lpf_bw_ofdm_40mhz;
16341
16342                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16343                                 wlc_phy_table_write_nphy(
16344                                         pi, NPHY_TBL_ID_RFSEQ,
16345                                         1,
16346                                         0x152 + coreNum * 0x10,
16347                                         16,
16348                                         &rx2tx_lpf_rc_lut_tx20_11b);
16349                                 wlc_phy_table_write_nphy(
16350                                         pi, NPHY_TBL_ID_RFSEQ,
16351                                         1,
16352                                         0x153 + coreNum * 0x10,
16353                                         16,
16354                                         &rx2tx_lpf_rc_lut_tx20_11n);
16355                                 wlc_phy_table_write_nphy(
16356                                         pi, NPHY_TBL_ID_RFSEQ,
16357                                         1,
16358                                         0x154 + coreNum * 0x10,
16359                                         16,
16360                                         &rx2tx_lpf_rc_lut_tx20_11n);
16361                                 wlc_phy_table_write_nphy(
16362                                         pi, NPHY_TBL_ID_RFSEQ,
16363                                         1,
16364                                         0x155 + coreNum * 0x10,
16365                                         16,
16366                                         &rx2tx_lpf_rc_lut_tx40_11n);
16367                                 wlc_phy_table_write_nphy(
16368                                         pi, NPHY_TBL_ID_RFSEQ,
16369                                         1,
16370                                         0x156 + coreNum * 0x10,
16371                                         16,
16372                                         &rx2tx_lpf_rc_lut_tx40_11n);
16373                                 wlc_phy_table_write_nphy(
16374                                         pi, NPHY_TBL_ID_RFSEQ,
16375                                         1,
16376                                         0x157 + coreNum * 0x10,
16377                                         16,
16378                                         &rx2tx_lpf_rc_lut_tx40_11n);
16379                                 wlc_phy_table_write_nphy(
16380                                         pi, NPHY_TBL_ID_RFSEQ,
16381                                         1,
16382                                         0x158 + coreNum * 0x10,
16383                                         16,
16384                                         &rx2tx_lpf_rc_lut_tx40_11n);
16385                                 wlc_phy_table_write_nphy(
16386                                         pi, NPHY_TBL_ID_RFSEQ,
16387                                         1,
16388                                         0x159 + coreNum * 0x10,
16389                                         16,
16390                                         &rx2tx_lpf_rc_lut_tx40_11n);
16391                         }
16392
16393                         wlc_phy_rfctrl_override_nphy_rev7(
16394                                 pi, (0x1 << 4),
16395                                 1, 0x3, 0,
16396                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
16397                 }
16398
16399                 write_phy_reg(pi, 0x32f, 0x3);
16400
16401                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16402                         wlc_phy_rfctrl_override_nphy_rev7(
16403                                 pi, (0x1 << 2),
16404                                 1, 0x3, 0,
16405                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
16406
16407                 if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16408                     (pi->pubpi.radiorev == 6)) {
16409                         if ((pi->sh->sromrev >= 8)
16410                             && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16411                                 ipalvlshift_3p3_war_en = 1;
16412
16413                         if (ipalvlshift_3p3_war_en) {
16414                                 write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG,
16415                                                 0x5);
16416                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL1,
16417                                                 0x30);
16418                                 write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16419                                 or_radio_reg(pi,
16420                                              RADIO_2057_RXTXBIAS_CONFIG_CORE0,
16421                                              0x1);
16422                                 or_radio_reg(pi,
16423                                              RADIO_2057_RXTXBIAS_CONFIG_CORE1,
16424                                              0x1);
16425
16426                                 ipa2g_mainbias = 0x1f;
16427
16428                                 ipa2g_casconv = 0x6f;
16429
16430                                 ipa2g_biasfilt = 0xaa;
16431                         } else {
16432
16433                                 ipa2g_mainbias = 0x2b;
16434
16435                                 ipa2g_casconv = 0x7f;
16436
16437                                 ipa2g_biasfilt = 0xee;
16438                         }
16439
16440                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16441                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16442                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16443                                                          coreNum, IPA2G_IMAIN,
16444                                                          ipa2g_mainbias);
16445                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16446                                                          coreNum, IPA2G_CASCONV,
16447                                                          ipa2g_casconv);
16448                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16449                                                          coreNum,
16450                                                          IPA2G_BIAS_FILTER,
16451                                                          ipa2g_biasfilt);
16452                                 }
16453                         }
16454                 }
16455
16456                 if (PHY_IPA(pi)) {
16457                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
16458                                 if ((pi->pubpi.radiorev == 3)
16459                                     || (pi->pubpi.radiorev == 4)
16460                                     || (pi->pubpi.radiorev == 6))
16461                                         txgm_idac_bleed = 0x7f;
16462
16463                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16464                                         if (txgm_idac_bleed != 0)
16465                                                 WRITE_RADIO_REG4(
16466                                                         pi, RADIO_2057,
16467                                                         CORE, coreNum,
16468                                                         TXGM_IDAC_BLEED,
16469                                                         txgm_idac_bleed);
16470                                 }
16471
16472                                 if (pi->pubpi.radiorev == 5) {
16473
16474                                         for (coreNum = 0; coreNum <= 1;
16475                                              coreNum++) {
16476                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16477                                                                  CORE, coreNum,
16478                                                                  IPA2G_CASCONV,
16479                                                                  0x13);
16480                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16481                                                                  CORE, coreNum,
16482                                                                  IPA2G_IMAIN,
16483                                                                  0x1f);
16484                                                 WRITE_RADIO_REG4(
16485                                                         pi, RADIO_2057,
16486                                                         CORE, coreNum,
16487                                                         IPA2G_BIAS_FILTER,
16488                                                         0xee);
16489                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16490                                                                  CORE, coreNum,
16491                                                                  PAD2G_IDACS,
16492                                                                  0x8a);
16493                                                 WRITE_RADIO_REG4(
16494                                                         pi, RADIO_2057,
16495                                                         CORE, coreNum,
16496                                                         PAD_BIAS_FILTER_BWS,
16497                                                         0x3e);
16498                                         }
16499
16500                                 } else if ((pi->pubpi.radiorev == 7)
16501                                            || (pi->pubpi.radiorev == 8)) {
16502
16503                                         if (CHSPEC_IS40(pi->radio_chanspec) ==
16504                                             0) {
16505                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16506                                                                  CORE, 0,
16507                                                                  IPA2G_IMAIN,
16508                                                                  0x14);
16509                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16510                                                                  CORE, 1,
16511                                                                  IPA2G_IMAIN,
16512                                                                  0x12);
16513                                         } else {
16514                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16515                                                                  CORE, 0,
16516                                                                  IPA2G_IMAIN,
16517                                                                  0x16);
16518                                                 WRITE_RADIO_REG4(pi, RADIO_2057,
16519                                                                  CORE, 1,
16520                                                                  IPA2G_IMAIN,
16521                                                                  0x16);
16522                                         }
16523                                 }
16524
16525                         } else {
16526                                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(
16527                                                         pi->radio_chanspec));
16528                                 if (((freq >= 5180) && (freq <= 5230))
16529                                     || ((freq >= 5745) && (freq <= 5805))) {
16530                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16531                                                          0, IPA5G_BIAS_FILTER,
16532                                                          0xff);
16533                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16534                                                          1, IPA5G_BIAS_FILTER,
16535                                                          0xff);
16536                                 }
16537                         }
16538                 } else {
16539
16540                         if (pi->pubpi.radiorev != 5) {
16541                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16542                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16543                                                          coreNum,
16544                                                          TXMIX2G_TUNE_BOOST_PU,
16545                                                          0x61);
16546                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16547                                                          coreNum,
16548                                                          TXGM_IDAC_BLEED, 0x70);
16549                                 }
16550                         }
16551                 }
16552
16553                 if (pi->pubpi.radiorev == 4) {
16554                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16555                                                  0x05, 16,
16556                                                  &afectrl_adc_ctrl1_rev7);
16557                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16558                                                  0x15, 16,
16559                                                  &afectrl_adc_ctrl1_rev7);
16560
16561                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16562                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16563                                                  AFE_VCM_CAL_MASTER, 0x0);
16564                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16565                                                  AFE_SET_VCM_I, 0x3f);
16566                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16567                                                  AFE_SET_VCM_Q, 0x3f);
16568                         }
16569                 } else {
16570                         mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16571                         mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16572                         mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16573                         mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16574
16575                         mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16576                         mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16577                         mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16578                         mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16579
16580                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16581                                                  0x05, 16,
16582                                                  &afectrl_adc_ctrl2_rev7);
16583                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1,
16584                                                  0x15, 16,
16585                                                  &afectrl_adc_ctrl2_rev7);
16586
16587                         mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16588                         mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16589                         mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16590                         mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16591                 }
16592
16593                 write_phy_reg(pi, 0x6a, 0x2);
16594
16595                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16596                                          &min_nvar_offset_6mbps);
16597
16598                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16599                                          &rfseq_pktgn_lpf_hpc_rev7);
16600
16601                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16602                                          &rfseq_pktgn_lpf_h_hpc_rev7);
16603
16604                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16605                                          &rfseq_htpktgn_lpf_hpc_rev7);
16606
16607                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16608                                          &rfseq_cckpktgn_lpf_hpc_rev7);
16609
16610                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16611                                          &rfseq_tx2rx_lpf_h_hpc_rev7);
16612
16613                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16614                                          &rfseq_rx2tx_lpf_h_hpc_rev7);
16615
16616                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16617                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16618                                                  32, &min_nvar_val);
16619                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16620                                                  127, 32, &min_nvar_val);
16621                 } else {
16622                         min_nvar_val = noise_var_tbl_rev7[3];
16623                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16624                                                  32, &min_nvar_val);
16625
16626                         min_nvar_val = noise_var_tbl_rev7[127];
16627                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16628                                                  127, 32, &min_nvar_val);
16629                 }
16630
16631                 wlc_phy_workarounds_nphy_gainctrl(pi);
16632
16633                 pdetrange =
16634                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16635                         pdetrange : pi->srom_fem2g.pdetrange;
16636
16637                 if (pdetrange == 0) {
16638                         chan_freq_range =
16639                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16640                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16641                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16642                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16643                                 aux_adc_gain_rev7[3] = 2;
16644                         } else {
16645                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16646                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16647                                 aux_adc_gain_rev7[3] = 3;
16648                         }
16649                 } else if (pdetrange == 1) {
16650                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16651                                 aux_adc_vmid_rev7_core0[3] = 0x7c;
16652                                 aux_adc_vmid_rev7_core1[3] = 0x7c;
16653                                 aux_adc_gain_rev7[3] = 2;
16654                         } else {
16655                                 aux_adc_vmid_rev7_core0[3] = 0x8c;
16656                                 aux_adc_vmid_rev7_core1[3] = 0x8c;
16657                                 aux_adc_gain_rev7[3] = 1;
16658                         }
16659                 } else if (pdetrange == 2) {
16660                         if (pi->pubpi.radioid == BCM2057_ID) {
16661                                 if ((pi->pubpi.radiorev == 5)
16662                                     || (pi->pubpi.radiorev == 7)
16663                                     || (pi->pubpi.radiorev == 8)) {
16664                                         if (chan_freq_range ==
16665                                             WL_CHAN_FREQ_RANGE_2G) {
16666                                                 aux_adc_vmid_rev7_core0[3] =
16667                                                         0x8c;
16668                                                 aux_adc_vmid_rev7_core1[3] =
16669                                                         0x8c;
16670                                                 aux_adc_gain_rev7[3] = 0;
16671                                         } else {
16672                                                 aux_adc_vmid_rev7_core0[3] =
16673                                                         0x96;
16674                                                 aux_adc_vmid_rev7_core1[3] =
16675                                                         0x96;
16676                                                 aux_adc_gain_rev7[3] = 0;
16677                                         }
16678                                 }
16679                         }
16680
16681                 } else if (pdetrange == 3) {
16682                         if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16683                                 aux_adc_vmid_rev7_core0[3] = 0x89;
16684                                 aux_adc_vmid_rev7_core1[3] = 0x89;
16685                                 aux_adc_gain_rev7[3] = 0;
16686                         }
16687
16688                 } else if (pdetrange == 5) {
16689
16690                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16691                                 aux_adc_vmid_rev7_core0[3] = 0x80;
16692                                 aux_adc_vmid_rev7_core1[3] = 0x80;
16693                                 aux_adc_gain_rev7[3] = 3;
16694                         } else {
16695                                 aux_adc_vmid_rev7_core0[3] = 0x70;
16696                                 aux_adc_vmid_rev7_core1[3] = 0x70;
16697                                 aux_adc_gain_rev7[3] = 2;
16698                         }
16699                 }
16700
16701                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16702                                          &aux_adc_vmid_rev7_core0);
16703                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16704                                          &aux_adc_vmid_rev7_core1);
16705                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16706                                          &aux_adc_gain_rev7);
16707                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16708                                          &aux_adc_gain_rev7);
16709
16710         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
16711
16712                 write_phy_reg(pi, 0x23f, 0x1f8);
16713                 write_phy_reg(pi, 0x240, 0x1f8);
16714
16715                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16716                                         1, 0, 32, &leg_data_weights);
16717                 leg_data_weights = leg_data_weights & 0xffffff;
16718                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16719                                          1, 0, 32, &leg_data_weights);
16720
16721                 alpha0 = 293;
16722                 alpha1 = 435;
16723                 alpha2 = 261;
16724                 beta0 = 366;
16725                 beta1 = 205;
16726                 beta2 = 32;
16727                 write_phy_reg(pi, 0x145, alpha0);
16728                 write_phy_reg(pi, 0x146, alpha1);
16729                 write_phy_reg(pi, 0x147, alpha2);
16730                 write_phy_reg(pi, 0x148, beta0);
16731                 write_phy_reg(pi, 0x149, beta1);
16732                 write_phy_reg(pi, 0x14a, beta2);
16733
16734                 write_phy_reg(pi, 0x38, 0xC);
16735                 write_phy_reg(pi, 0x2ae, 0xC);
16736
16737                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16738                                        rfseq_tx2rx_events_rev3,
16739                                        rfseq_tx2rx_dlys_rev3,
16740                                        ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16741
16742                 if (PHY_IPA(pi))
16743                         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16744                                                rfseq_rx2tx_events_rev3_ipa,
16745                                                rfseq_rx2tx_dlys_rev3_ipa,
16746                                                ARRAY_SIZE(rfseq_rx2tx_events_rev3_ipa));
16747
16748                 if ((pi->sh->hw_phyrxchain != 0x3) &&
16749                     (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16750
16751                         if (PHY_IPA(pi)) {
16752                                 rfseq_rx2tx_dlys_rev3[5] = 59;
16753                                 rfseq_rx2tx_dlys_rev3[6] = 1;
16754                                 rfseq_rx2tx_events_rev3[7] =
16755                                         NPHY_REV3_RFSEQ_CMD_END;
16756                         }
16757
16758                         wlc_phy_set_rfseq_nphy(
16759                                 pi, NPHY_RFSEQ_RX2TX,
16760                                 rfseq_rx2tx_events_rev3,
16761                                 rfseq_rx2tx_dlys_rev3,
16762                                 ARRAY_SIZE(rfseq_rx2tx_events_rev3));
16763                 }
16764
16765                 if (CHSPEC_IS2G(pi->radio_chanspec))
16766                         write_phy_reg(pi, 0x6a, 0x2);
16767                 else
16768                         write_phy_reg(pi, 0x6a, 0x9c40);
16769
16770                 mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16771
16772                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16773                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16774                                                  32, &min_nvar_val);
16775                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16776                                                  127, 32, &min_nvar_val);
16777                 } else {
16778                         min_nvar_val = noise_var_tbl_rev3[3];
16779                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16780                                                  32, &min_nvar_val);
16781
16782                         min_nvar_val = noise_var_tbl_rev3[127];
16783                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16784                                                  127, 32, &min_nvar_val);
16785                 }
16786
16787                 wlc_phy_workarounds_nphy_gainctrl(pi);
16788
16789                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16790                                          &dac_control);
16791                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16792                                          &dac_control);
16793
16794                 pdetrange =
16795                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16796                         pdetrange : pi->srom_fem2g.pdetrange;
16797
16798                 if (pdetrange == 0) {
16799                         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16800                                 aux_adc_vmid = aux_adc_vmid_rev4;
16801                                 aux_adc_gain = aux_adc_gain_rev4;
16802                         } else {
16803                                 aux_adc_vmid = aux_adc_vmid_rev3;
16804                                 aux_adc_gain = aux_adc_gain_rev3;
16805                         }
16806                         chan_freq_range =
16807                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16808                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16809                                 switch (chan_freq_range) {
16810                                 case WL_CHAN_FREQ_RANGE_5GL:
16811                                         aux_adc_vmid[3] = 0x89;
16812                                         aux_adc_gain[3] = 0;
16813                                         break;
16814                                 case WL_CHAN_FREQ_RANGE_5GM:
16815                                         aux_adc_vmid[3] = 0x89;
16816                                         aux_adc_gain[3] = 0;
16817                                         break;
16818                                 case WL_CHAN_FREQ_RANGE_5GH:
16819                                         aux_adc_vmid[3] = 0x89;
16820                                         aux_adc_gain[3] = 0;
16821                                         break;
16822                                 default:
16823                                         break;
16824                                 }
16825                         }
16826                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16827                                                  0x08, 16, aux_adc_vmid);
16828                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16829                                                  0x18, 16, aux_adc_vmid);
16830                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16831                                                  0x0c, 16, aux_adc_gain);
16832                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16833                                                  0x1c, 16, aux_adc_gain);
16834                 } else if (pdetrange == 1) {
16835                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16836                                                  0x08, 16, sk_adc_vmid);
16837                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16838                                                  0x18, 16, sk_adc_vmid);
16839                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16840                                                  0x0c, 16, sk_adc_gain);
16841                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16842                                                  0x1c, 16, sk_adc_gain);
16843                 } else if (pdetrange == 2) {
16844
16845                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16846                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16847
16848                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16849                                 chan_freq_range =
16850                                         wlc_phy_get_chan_freq_range_nphy(pi, 0);
16851                                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16852                                         bcm_adc_vmid[3] = 0x8e;
16853                                         bcm_adc_gain[3] = 0x03;
16854                                 } else {
16855                                         bcm_adc_vmid[3] = 0x94;
16856                                         bcm_adc_gain[3] = 0x03;
16857                                 }
16858                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16859                                 bcm_adc_vmid[3] = 0x84;
16860                                 bcm_adc_gain[3] = 0x02;
16861                         }
16862
16863                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16864                                                  0x08, 16, bcm_adc_vmid);
16865                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16866                                                  0x18, 16, bcm_adc_vmid);
16867                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16868                                                  0x0c, 16, bcm_adc_gain);
16869                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16870                                                  0x1c, 16, bcm_adc_gain);
16871                 } else if (pdetrange == 3) {
16872                         chan_freq_range =
16873                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16874                         if ((NREV_GE(pi->pubpi.phy_rev, 4))
16875                             && (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16876
16877                                 u16 auxadc_vmid[] = {
16878                                         0xa2, 0xb4, 0xb4, 0x270
16879                                 };
16880                                 u16 auxadc_gain[] = {
16881                                         0x02, 0x02, 0x02, 0x00
16882                                 };
16883
16884                                 wlc_phy_table_write_nphy(pi,
16885                                                          NPHY_TBL_ID_AFECTRL, 4,
16886                                                          0x08, 16, auxadc_vmid);
16887                                 wlc_phy_table_write_nphy(pi,
16888                                                          NPHY_TBL_ID_AFECTRL, 4,
16889                                                          0x18, 16, auxadc_vmid);
16890                                 wlc_phy_table_write_nphy(pi,
16891                                                          NPHY_TBL_ID_AFECTRL, 4,
16892                                                          0x0c, 16, auxadc_gain);
16893                                 wlc_phy_table_write_nphy(pi,
16894                                                          NPHY_TBL_ID_AFECTRL, 4,
16895                                                          0x1c, 16, auxadc_gain);
16896                         }
16897                 } else if ((pdetrange == 4) || (pdetrange == 5)) {
16898                         u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16899                         u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16900                         u16 Vmid[2], Av[2];
16901
16902                         chan_freq_range =
16903                                 wlc_phy_get_chan_freq_range_nphy(pi, 0);
16904                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16905                                 Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16906                                 Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16907                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16908                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16909                         } else {
16910                                 Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16911                                 Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16912                                 Av[0] = (pdetrange == 4) ? 2 : 0;
16913                                 Av[1] = (pdetrange == 4) ? 2 : 0;
16914                         }
16915
16916                         bcm_adc_vmid[3] = Vmid[0];
16917                         bcm_adc_gain[3] = Av[0];
16918                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16919                                                  0x08, 16, bcm_adc_vmid);
16920                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16921                                                  0x0c, 16, bcm_adc_gain);
16922
16923                         bcm_adc_vmid[3] = Vmid[1];
16924                         bcm_adc_gain[3] = Av[1];
16925                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16926                                                  0x18, 16, bcm_adc_vmid);
16927                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16928                                                  0x1c, 16, bcm_adc_gain);
16929                 }
16930
16931                 write_radio_reg(pi,
16932                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0),
16933                                 0x0);
16934                 write_radio_reg(pi,
16935                                 (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1),
16936                                 0x0);
16937
16938                 write_radio_reg(pi,
16939                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0),
16940                                 0x6);
16941                 write_radio_reg(pi,
16942                                 (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1),
16943                                 0x6);
16944
16945                 write_radio_reg(pi,
16946                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0),
16947                                 0x7);
16948                 write_radio_reg(pi,
16949                                 (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1),
16950                                 0x7);
16951
16952                 write_radio_reg(pi,
16953                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0),
16954                                 0x88);
16955                 write_radio_reg(pi,
16956                                 (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1),
16957                                 0x88);
16958
16959                 write_radio_reg(pi,
16960                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0),
16961                                 0x0);
16962                 write_radio_reg(pi,
16963                                 (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1),
16964                                 0x0);
16965
16966                 write_radio_reg(pi,
16967                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0),
16968                                 0x0);
16969                 write_radio_reg(pi,
16970                                 (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1),
16971                                 0x0);
16972
16973                 triso =
16974                         (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.
16975                         triso : pi->srom_fem2g.triso;
16976                 if (triso == 7) {
16977                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16978                         wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16979                 }
16980
16981                 wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16982
16983                 if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16984                      (CHSPEC_IS5G(pi->radio_chanspec))) ||
16985                     (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16986                       (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16987                      (CHSPEC_IS2G(pi->radio_chanspec)))) {
16988                         nss1_data_weights = 0x00088888;
16989                         ht_data_weights = 0x00088888;
16990                         stbc_data_weights = 0x00088888;
16991                 } else {
16992                         nss1_data_weights = 0x88888888;
16993                         ht_data_weights = 0x88888888;
16994                         stbc_data_weights = 0x88888888;
16995                 }
16996                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16997                                          1, 1, 32, &nss1_data_weights);
16998                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16999                                          1, 2, 32, &ht_data_weights);
17000                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
17001                                          1, 3, 32, &stbc_data_weights);
17002
17003                 if (NREV_IS(pi->pubpi.phy_rev, 4)) {
17004                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
17005                                 write_radio_reg(pi,
17006                                                 RADIO_2056_TX_GMBB_IDAC |
17007                                                 RADIO_2056_TX0, 0x70);
17008                                 write_radio_reg(pi,
17009                                                 RADIO_2056_TX_GMBB_IDAC |
17010                                                 RADIO_2056_TX1, 0x70);
17011                         }
17012                 }
17013
17014                 if (!pi->edcrs_threshold_lock) {
17015                         write_phy_reg(pi, 0x224, 0x3eb);
17016                         write_phy_reg(pi, 0x225, 0x3eb);
17017                         write_phy_reg(pi, 0x226, 0x341);
17018                         write_phy_reg(pi, 0x227, 0x341);
17019                         write_phy_reg(pi, 0x228, 0x42b);
17020                         write_phy_reg(pi, 0x229, 0x42b);
17021                         write_phy_reg(pi, 0x22a, 0x381);
17022                         write_phy_reg(pi, 0x22b, 0x381);
17023                         write_phy_reg(pi, 0x22c, 0x42b);
17024                         write_phy_reg(pi, 0x22d, 0x42b);
17025                         write_phy_reg(pi, 0x22e, 0x381);
17026                         write_phy_reg(pi, 0x22f, 0x381);
17027                 }
17028
17029                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
17030
17031                         if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
17032                                 wlapi_bmac_mhf(pi->sh->physhim, MHF4,
17033                                               MHF4_BPHY_TXCORE0,
17034                                               MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
17035                 }
17036         } else {
17037
17038                 if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
17039                     (pi->sh->boardtype == 0x8b)) {
17040                         uint i;
17041                         u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
17042                         for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
17043                                 rfseq_rx2tx_dlys[i] = war_dlys[i];
17044                 }
17045
17046                 if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
17047                         and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
17048                         and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
17049                 } else {
17050                         or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
17051                         or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
17052                 }
17053
17054                 regval = 0x000a;
17055                 wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
17056                 wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
17057
17058                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17059                         regval = 0xcdaa;
17060                         wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
17061                         wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
17062                 }
17063
17064                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17065                         regval = 0x0000;
17066                         wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
17067                         wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
17068
17069                         regval = 0x7aab;
17070                         wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
17071                         wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
17072
17073                         regval = 0x0800;
17074                         wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
17075                         wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
17076                 }
17077
17078                 write_phy_reg(pi, 0xf8, 0x02d8);
17079                 write_phy_reg(pi, 0xf9, 0x0301);
17080                 write_phy_reg(pi, 0xfa, 0x02d8);
17081                 write_phy_reg(pi, 0xfb, 0x0301);
17082
17083                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
17084                                        rfseq_rx2tx_dlys,
17085                                        ARRAY_SIZE(rfseq_rx2tx_events));
17086
17087                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
17088                                        rfseq_tx2rx_dlys,
17089                                        ARRAY_SIZE(rfseq_tx2rx_events));
17090
17091                 wlc_phy_workarounds_nphy_gainctrl(pi);
17092
17093                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
17094
17095                         if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
17096                                 wlapi_bmac_mhf(pi->sh->physhim, MHF3,
17097                                                MHF3_NPHY_MLADV_WAR,
17098                                                MHF3_NPHY_MLADV_WAR,
17099                                                BRCM_BAND_ALL);
17100
17101                 } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
17102                         write_phy_reg(pi, 0x1e3, 0x0);
17103                         write_phy_reg(pi, 0x1e4, 0x0);
17104                 }
17105
17106                 if (NREV_LT(pi->pubpi.phy_rev, 2))
17107                         mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17108
17109                 alpha0 = 293;
17110                 alpha1 = 435;
17111                 alpha2 = 261;
17112                 beta0 = 366;
17113                 beta1 = 205;
17114                 beta2 = 32;
17115                 write_phy_reg(pi, 0x145, alpha0);
17116                 write_phy_reg(pi, 0x146, alpha1);
17117                 write_phy_reg(pi, 0x147, alpha2);
17118                 write_phy_reg(pi, 0x148, beta0);
17119                 write_phy_reg(pi, 0x149, beta1);
17120                 write_phy_reg(pi, 0x14a, beta2);
17121
17122                 if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17123                         mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17124
17125                         write_phy_reg(pi, 0x192, 0xb5);
17126                         write_phy_reg(pi, 0x193, 0xa4);
17127                         write_phy_reg(pi, 0x194, 0x0);
17128                 }
17129
17130                 if (NREV_IS(pi->pubpi.phy_rev, 2))
17131                         mod_phy_reg(pi, 0x221,
17132                                     NPHY_FORCESIG_DECODEGATEDCLKS,
17133                                     NPHY_FORCESIG_DECODEGATEDCLKS);
17134         }
17135
17136         if (pi->phyhang_avoid)
17137                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17138 }
17139
17140 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17141 {
17142         int j, type = 2;
17143         u16 addr_offset = 0x2c5;
17144
17145         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17146                 write_phy_reg(pi, addr_offset + j,
17147                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17148 }
17149
17150 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17151 {
17152
17153         if (write == 0) {
17154                 vals[0] = read_phy_reg(pi, 0x2c);
17155                 vals[1] = read_phy_reg(pi, 0x42);
17156         } else {
17157                 write_phy_reg(pi, 0x2c, vals[0]);
17158                 write_phy_reg(pi, 0x42, vals[1]);
17159         }
17160 }
17161
17162 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17163 {
17164         u8 core;
17165
17166         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17167                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17168                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17169                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17170                                                  TX_SSI_MASTER, 0x5);
17171                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17172                                                  TX_SSI_MUX, 0xe);
17173
17174                                 if (pi->pubpi.radiorev != 5)
17175                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17176                                                          core, TSSIA, 0);
17177
17178                                 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17179                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17180                                                          core, TSSIG, 0x1);
17181                                 else
17182                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17183                                                          core, TSSIG, 0x31);
17184                         } else {
17185                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17186                                                  TX_SSI_MASTER, 0x9);
17187                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17188                                                  TX_SSI_MUX, 0xc);
17189                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17190                                                  TSSIG, 0);
17191
17192                                 if (pi->pubpi.radiorev != 5) {
17193                                         if (!NREV_IS(pi->pubpi.phy_rev, 7))
17194                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17195                                                                  TX, core,
17196                                                                  TSSIA, 0x1);
17197                                         else
17198                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17199                                                                  TX, core,
17200                                                                  TSSIA, 0x31);
17201                                 }
17202                         }
17203                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17204                                          0);
17205                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17206                                          0);
17207                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17208                                          0x3);
17209                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17210                                          0x0);
17211                 }
17212         } else {
17213                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17214                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17215                                 0x80);
17216                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17217                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17218
17219                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17220                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17221                                          0x0);
17222                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17223                                          0x0);
17224                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17225                                          0x3);
17226                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17227                                          0x0);
17228                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17229                                          0x8);
17230                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17231                                          0x0);
17232                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17233                                          0x0);
17234
17235                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17236                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17237                                                  TX_SSI_MASTER, 0x5);
17238
17239                                 if (pi->pubpi.radiorev != 5)
17240                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17241                                                          core, TSSIA, 0x0);
17242                                 if (NREV_GE(pi->pubpi.phy_rev, 5))
17243                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17244                                                          core, TSSIG, 0x31);
17245                                 else
17246                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17247                                                          core, TSSIG, 0x11);
17248                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17249                                                  TX_SSI_MUX, 0xe);
17250                         } else {
17251                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17252                                                  TX_SSI_MASTER, 0x9);
17253                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17254                                                  TSSIA, 0x31);
17255                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17256                                                  TSSIG, 0x0);
17257                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17258                                                  TX_SSI_MUX, 0xc);
17259                         }
17260                 }
17261         }
17262 }
17263
17264 static void
17265 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17266                              u8 core_mask, u8 off)
17267 {
17268         u8 core_num;
17269         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17270                 0, val_mask = 0;
17271         u8 shift = 0, val_shift = 0;
17272
17273         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17274
17275                 en_mask = field;
17276                 for (core_num = 0; core_num < 2; core_num++) {
17277
17278                         switch (field) {
17279                         case (0x1 << 1):
17280                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17281                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17282                                 val_mask = (0x1 << 0);
17283                                 val_shift = 0;
17284                                 break;
17285                         case (0x1 << 2):
17286                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17287                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17288                                 val_mask = (0x1 << 1);
17289                                 val_shift = 1;
17290                                 break;
17291                         case (0x1 << 3):
17292                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17293                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17294                                 val_mask = (0x1 << 2);
17295                                 val_shift = 2;
17296                                 break;
17297                         case (0x1 << 4):
17298                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17299                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17300                                 val_mask = (0x1 << 4);
17301                                 val_shift = 4;
17302                                 break;
17303                         case (0x1 << 5):
17304                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17305                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17306                                 val_mask = (0x1 << 5);
17307                                 val_shift = 5;
17308                                 break;
17309                         case (0x1 << 6):
17310                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17311                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17312                                 val_mask = (0x1 << 6);
17313                                 val_shift = 6;
17314                                 break;
17315                         case (0x1 << 7):
17316                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17317                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17318                                 val_mask = (0x1 << 7);
17319                                 val_shift = 7;
17320                                 break;
17321                         case (0x1 << 8):
17322                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17323                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17324                                 val_mask = (0x7 << 8);
17325                                 val_shift = 8;
17326                                 break;
17327                         case (0x1 << 11):
17328                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17329                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17330                                 val_mask = (0x7 << 13);
17331                                 val_shift = 13;
17332                                 break;
17333
17334                         case (0x1 << 9):
17335                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17336                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17337                                 val_mask = (0x7 << 0);
17338                                 val_shift = 0;
17339                                 break;
17340
17341                         case (0x1 << 10):
17342                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17343                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17344                                 val_mask = (0x7 << 4);
17345                                 val_shift = 4;
17346                                 break;
17347
17348                         case (0x1 << 12):
17349                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17350                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17351                                 val_mask = (0xffff << 0);
17352                                 val_shift = 0;
17353                                 break;
17354                         case (0x1 << 13):
17355                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17356                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17357                                 val_mask = (0xffff << 0);
17358                                 val_shift = 0;
17359                                 break;
17360                         case (0x1 << 14):
17361                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17362                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17363                                 val_mask = (0x3 << 6);
17364                                 val_shift = 6;
17365                                 break;
17366                         case (0x1 << 0):
17367                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17368                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17369                                 val_mask = (0x1 << 15);
17370                                 val_shift = 15;
17371                                 break;
17372                         default:
17373                                 addr = 0xffff;
17374                                 break;
17375                         }
17376
17377                         if (off) {
17378                                 and_phy_reg(pi, en_addr, ~en_mask);
17379                                 and_phy_reg(pi, val_addr, ~val_mask);
17380                         } else {
17381
17382                                 if ((core_mask == 0)
17383                                     || (core_mask & (1 << core_num))) {
17384                                         or_phy_reg(pi, en_addr, en_mask);
17385
17386                                         if (addr != 0xffff)
17387                                                 mod_phy_reg(pi, val_addr,
17388                                                             val_mask,
17389                                                             (value <<
17390                                                              val_shift));
17391                                 }
17392                         }
17393                 }
17394         } else {
17395
17396                 if (off) {
17397                         and_phy_reg(pi, 0xec, ~field);
17398                         value = 0x0;
17399                 } else {
17400                         or_phy_reg(pi, 0xec, field);
17401                 }
17402
17403                 for (core_num = 0; core_num < 2; core_num++) {
17404
17405                         switch (field) {
17406                         case (0x1 << 1):
17407                         case (0x1 << 9):
17408                         case (0x1 << 12):
17409                         case (0x1 << 13):
17410                         case (0x1 << 14):
17411                                 addr = 0x78;
17412
17413                                 core_mask = 0x1;
17414                                 break;
17415                         case (0x1 << 2):
17416                         case (0x1 << 3):
17417                         case (0x1 << 4):
17418                         case (0x1 << 5):
17419                         case (0x1 << 6):
17420                         case (0x1 << 7):
17421                         case (0x1 << 8):
17422                                 addr = (core_num == 0) ? 0x7a : 0x7d;
17423                                 break;
17424                         case (0x1 << 10):
17425                                 addr = (core_num == 0) ? 0x7b : 0x7e;
17426                                 break;
17427                         case (0x1 << 11):
17428                                 addr = (core_num == 0) ? 0x7c : 0x7f;
17429                                 break;
17430                         default:
17431                                 addr = 0xffff;
17432                         }
17433
17434                         switch (field) {
17435                         case (0x1 << 1):
17436                                 mask = (0x7 << 3);
17437                                 shift = 3;
17438                                 break;
17439                         case (0x1 << 9):
17440                                 mask = (0x1 << 2);
17441                                 shift = 2;
17442                                 break;
17443                         case (0x1 << 12):
17444                                 mask = (0x1 << 8);
17445                                 shift = 8;
17446                                 break;
17447                         case (0x1 << 13):
17448                                 mask = (0x1 << 9);
17449                                 shift = 9;
17450                                 break;
17451                         case (0x1 << 14):
17452                                 mask = (0xf << 12);
17453                                 shift = 12;
17454                                 break;
17455                         case (0x1 << 2):
17456                                 mask = (0x1 << 0);
17457                                 shift = 0;
17458                                 break;
17459                         case (0x1 << 3):
17460                                 mask = (0x1 << 1);
17461                                 shift = 1;
17462                                 break;
17463                         case (0x1 << 4):
17464                                 mask = (0x1 << 2);
17465                                 shift = 2;
17466                                 break;
17467                         case (0x1 << 5):
17468                                 mask = (0x3 << 4);
17469                                 shift = 4;
17470                                 break;
17471                         case (0x1 << 6):
17472                                 mask = (0x3 << 6);
17473                                 shift = 6;
17474                                 break;
17475                         case (0x1 << 7):
17476                                 mask = (0x1 << 8);
17477                                 shift = 8;
17478                                 break;
17479                         case (0x1 << 8):
17480                                 mask = (0x1 << 9);
17481                                 shift = 9;
17482                                 break;
17483                         case (0x1 << 10):
17484                                 mask = 0x1fff;
17485                                 shift = 0x0;
17486                                 break;
17487                         case (0x1 << 11):
17488                                 mask = 0x1fff;
17489                                 shift = 0x0;
17490                                 break;
17491                         default:
17492                                 mask = 0x0;
17493                                 shift = 0x0;
17494                                 break;
17495                         }
17496
17497                         if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17498                                 mod_phy_reg(pi, addr, mask, (value << shift));
17499                 }
17500
17501                 or_phy_reg(pi, 0xec, (0x1 << 0));
17502                 or_phy_reg(pi, 0x78, (0x1 << 0));
17503                 udelay(1);
17504                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17505         }
17506 }
17507
17508 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17509 {
17510         s32 rssi_buf[4];
17511         s32 int_val;
17512
17513         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17514
17515                 return;
17516
17517         if (PHY_IPA(pi))
17518                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17519
17520         if (NREV_GE(pi->pubpi.phy_rev, 7))
17521                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17522                                                   0, 0x3, 0,
17523                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17524         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17525                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17526
17527         wlc_phy_stopplayback_nphy(pi);
17528
17529         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17530
17531         udelay(20);
17532         int_val =
17533                 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17534                                        1);
17535         wlc_phy_stopplayback_nphy(pi);
17536         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17537
17538         if (NREV_GE(pi->pubpi.phy_rev, 7))
17539                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17540                                                   0, 0x3, 1,
17541                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17542         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17543                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17544
17545         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17546
17547                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17548                         (u8) ((int_val >> 24) & 0xff);
17549                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17550                         (u8) ((int_val >> 24) & 0xff);
17551
17552                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17553                         (u8) ((int_val >> 8) & 0xff);
17554                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17555                         (u8) ((int_val >> 8) & 0xff);
17556         } else {
17557                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17558                         (u8) ((int_val >> 24) & 0xff);
17559
17560                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17561                         (u8) ((int_val >> 8) & 0xff);
17562
17563                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17564                         (u8) ((int_val >> 16) & 0xff);
17565                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17566                         (u8) ((int_val) & 0xff);
17567         }
17568
17569 }
17570
17571 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17572 {
17573         u8 idx, idx2, i, delta_ind;
17574
17575         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17576                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17577
17578         for (i = 0; i < 4; i++) {
17579                 idx2 = 0;
17580
17581                 delta_ind = 0;
17582
17583                 switch (i) {
17584                 case 0:
17585
17586                         if (CHSPEC_IS40(pi->radio_chanspec)
17587                             && NPHY_IS_SROM_REINTERPRET) {
17588                                 idx = TXP_FIRST_MCS_40_SISO;
17589                         } else {
17590                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17591                                       TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17592                                 delta_ind = 1;
17593                         }
17594                         break;
17595
17596                 case 1:
17597
17598                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17599                               TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17600                         break;
17601
17602                 case 2:
17603
17604                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17605                               TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17606                         break;
17607
17608                 case 3:
17609
17610                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17611                               TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17612                         break;
17613                 }
17614
17615                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17616                         pi->tx_power_offset[idx];
17617                 idx = idx + delta_ind;
17618                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17619                         pi->tx_power_offset[idx];
17620                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17621                         pi->tx_power_offset[idx];
17622                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17623                         pi->tx_power_offset[idx++];
17624
17625                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17626                         pi->tx_power_offset[idx++];
17627                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17628                         pi->tx_power_offset[idx];
17629                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17630                         pi->tx_power_offset[idx];
17631                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17632                         pi->tx_power_offset[idx++];
17633
17634                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17635                         pi->tx_power_offset[idx++];
17636                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17637                         pi->tx_power_offset[idx];
17638                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17639                         pi->tx_power_offset[idx];
17640                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17641                         pi->tx_power_offset[idx++];
17642
17643                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17644                         pi->tx_power_offset[idx];
17645                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17646                         pi->tx_power_offset[idx++];
17647                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17648                         pi->tx_power_offset[idx];
17649                 idx = idx + 1 - delta_ind;
17650                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17651                         pi->tx_power_offset[idx];
17652
17653                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17654                         pi->tx_power_offset[idx];
17655                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17656                         pi->tx_power_offset[idx];
17657                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17658                         pi->tx_power_offset[idx];
17659                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17660                         pi->tx_power_offset[idx];
17661         }
17662 }
17663
17664 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17665 {
17666         u32 idx;
17667         s16 a1[2], b0[2], b1[2];
17668         s8 target_pwr_qtrdbm[2];
17669         s32 num, den, pwr_est;
17670         u8 chan_freq_range;
17671         u8 idle_tssi[2];
17672         u32 tbl_id, tbl_len, tbl_offset;
17673         u32 regval[64];
17674         u8 core;
17675
17676         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17677                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17678                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17679                 udelay(1);
17680         }
17681
17682         if (pi->phyhang_avoid)
17683                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17684
17685         or_phy_reg(pi, 0x122, (0x1 << 0));
17686
17687         if (NREV_GE(pi->pubpi.phy_rev, 3))
17688                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17689         else
17690                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17691
17692         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17693                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17694
17695         if (pi->sh->sromrev < 4) {
17696                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17697                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17698                 a1[0] = -424;
17699                 a1[1] = -424;
17700                 b0[0] = 5612;
17701                 b0[1] = 5612;
17702                 b1[1] = -1393;
17703                 b1[0] = -1393;
17704         } else {
17705
17706                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17707                 switch (chan_freq_range) {
17708                 case WL_CHAN_FREQ_RANGE_2G:
17709                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17710                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17711                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17712                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17713                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17714                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17715                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17716                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17717                         break;
17718                 case WL_CHAN_FREQ_RANGE_5GL:
17719                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17720                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17721                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17722                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17723                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17724                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17725                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17726                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17727                         break;
17728                 case WL_CHAN_FREQ_RANGE_5GM:
17729                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17730                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17731                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17732                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17733                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17734                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17735                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17736                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17737                         break;
17738                 case WL_CHAN_FREQ_RANGE_5GH:
17739                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17740                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17741                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17742                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17743                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17744                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17745                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17746                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17747                         break;
17748                 default:
17749                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17750                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17751                         a1[0] = -424;
17752                         a1[1] = -424;
17753                         b0[0] = 5612;
17754                         b0[1] = 5612;
17755                         b1[1] = -1393;
17756                         b1[0] = -1393;
17757                         break;
17758                 }
17759         }
17760
17761         /* use the provided transmit power */
17762         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17763         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17764
17765         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17766                 if (pi->srom_fem2g.tssipos)
17767                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
17768
17769                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17770                         for (core = 0; core <= 1; core++) {
17771                                 if (PHY_IPA(pi)) {
17772                                         if (CHSPEC_IS2G(pi->radio_chanspec))
17773                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17774                                                                  TX, core,
17775                                                                  TX_SSI_MUX,
17776                                                                  0xe);
17777                                         else
17778                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17779                                                                  TX, core,
17780                                                                  TX_SSI_MUX,
17781                                                                  0xc);
17782                                 }
17783                         }
17784                 } else {
17785                         if (PHY_IPA(pi)) {
17786
17787                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17788                                                 RADIO_2056_TX0,
17789                                                 (CHSPEC_IS5G
17790                                                  (pi->radio_chanspec)) ?
17791                                                  0xc : 0xe);
17792                                 write_radio_reg(pi,
17793                                                 RADIO_2056_TX_TX_SSI_MUX |
17794                                                 RADIO_2056_TX1,
17795                                                 (CHSPEC_IS5G
17796                                                  (pi->radio_chanspec)) ?
17797                                                  0xc : 0xe);
17798                         } else {
17799
17800                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17801                                                 RADIO_2056_TX0, 0x11);
17802                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17803                                                 RADIO_2056_TX1, 0x11);
17804                         }
17805                 }
17806         }
17807
17808         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17809                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17810                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17811                 udelay(1);
17812         }
17813
17814         if (NREV_GE(pi->pubpi.phy_rev, 7))
17815                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17816                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17817         else
17818                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17819                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17820
17821         if (NREV_GE(pi->pubpi.phy_rev, 7))
17822                 mod_phy_reg(pi, 0x222, (0xff << 0),
17823                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17824         else if (NREV_GT(pi->pubpi.phy_rev, 1))
17825                 mod_phy_reg(pi, 0x222, (0xff << 0),
17826                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17827
17828         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17829                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17830
17831         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17832
17833         write_phy_reg(pi, 0x1e9,
17834                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17835
17836         write_phy_reg(pi, 0x1ea,
17837                       (target_pwr_qtrdbm[0] << 0) |
17838                       (target_pwr_qtrdbm[1] << 8));
17839
17840         tbl_len = 64;
17841         tbl_offset = 0;
17842         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17843              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17844
17845                 for (idx = 0; idx < tbl_len; idx++) {
17846                         num = 8 *
17847                               (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17848                         den = 32768 + a1[tbl_id - 26] * idx;
17849                         pwr_est = max(((4 * num + den / 2) / den), -8);
17850                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17851                                 if (idx <=
17852                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17853                                         pwr_est =
17854                                                 max(pwr_est,
17855                                                     target_pwr_qtrdbm
17856                                                     [tbl_id - 26] + 1);
17857                         }
17858                         regval[idx] = (u32) pwr_est;
17859                 }
17860                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17861                                          regval);
17862         }
17863
17864         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17865         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17866                                  pi->adj_pwr_tbl_nphy);
17867         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17868                                  pi->adj_pwr_tbl_nphy);
17869
17870         if (pi->phyhang_avoid)
17871                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17872 }
17873
17874 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17875 {
17876         u32 *tx_pwrctrl_tbl = NULL;
17877
17878         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17879                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17880                         if ((pi->pubpi.radiorev == 4)
17881                             || (pi->pubpi.radiorev == 6))
17882                                 tx_pwrctrl_tbl =
17883                                         nphy_tpc_txgain_ipa_2g_2057rev4n6;
17884                         else if (pi->pubpi.radiorev == 3)
17885                                 tx_pwrctrl_tbl =
17886                                         nphy_tpc_txgain_ipa_2g_2057rev3;
17887                         else if (pi->pubpi.radiorev == 5)
17888                                 tx_pwrctrl_tbl =
17889                                         nphy_tpc_txgain_ipa_2g_2057rev5;
17890                         else if ((pi->pubpi.radiorev == 7)
17891                                  || (pi->pubpi.radiorev == 8))
17892                                 tx_pwrctrl_tbl =
17893                                         nphy_tpc_txgain_ipa_2g_2057rev7;
17894                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17895                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17896                         if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17897                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17898                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17899                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17900                 } else {
17901                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17902                 }
17903         } else {
17904
17905                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17906                         if ((pi->pubpi.radiorev == 3) ||
17907                             (pi->pubpi.radiorev == 4) ||
17908                             (pi->pubpi.radiorev == 6))
17909                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17910                         else if ((pi->pubpi.radiorev == 7)
17911                                  || (pi->pubpi.radiorev == 8))
17912                                 tx_pwrctrl_tbl =
17913                                         nphy_tpc_txgain_ipa_5g_2057rev7;
17914                 } else {
17915                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17916                 }
17917         }
17918
17919         return tx_pwrctrl_tbl;
17920 }
17921
17922 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17923 {
17924         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17925                 if (pi->nphy_rssical_chanspec_2G == 0)
17926                         return;
17927
17928                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17929                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17930                                       RADIO_2057_VCM_MASK,
17931                                       pi->rssical_cache.
17932                                       rssical_radio_regs_2G[0]);
17933                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17934                                       RADIO_2057_VCM_MASK,
17935                                       pi->rssical_cache.
17936                                       rssical_radio_regs_2G[1]);
17937                 } else {
17938                         mod_radio_reg(pi,
17939                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17940                                       RADIO_2056_VCM_MASK,
17941                                       pi->rssical_cache.
17942                                       rssical_radio_regs_2G[0]);
17943                         mod_radio_reg(pi,
17944                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17945                                       RADIO_2056_VCM_MASK,
17946                                       pi->rssical_cache.
17947                                       rssical_radio_regs_2G[1]);
17948                 }
17949
17950                 write_phy_reg(pi, 0x1a6,
17951                               pi->rssical_cache.rssical_phyregs_2G[0]);
17952                 write_phy_reg(pi, 0x1ac,
17953                               pi->rssical_cache.rssical_phyregs_2G[1]);
17954                 write_phy_reg(pi, 0x1b2,
17955                               pi->rssical_cache.rssical_phyregs_2G[2]);
17956                 write_phy_reg(pi, 0x1b8,
17957                               pi->rssical_cache.rssical_phyregs_2G[3]);
17958                 write_phy_reg(pi, 0x1a4,
17959                               pi->rssical_cache.rssical_phyregs_2G[4]);
17960                 write_phy_reg(pi, 0x1aa,
17961                               pi->rssical_cache.rssical_phyregs_2G[5]);
17962                 write_phy_reg(pi, 0x1b0,
17963                               pi->rssical_cache.rssical_phyregs_2G[6]);
17964                 write_phy_reg(pi, 0x1b6,
17965                               pi->rssical_cache.rssical_phyregs_2G[7]);
17966                 write_phy_reg(pi, 0x1a5,
17967                               pi->rssical_cache.rssical_phyregs_2G[8]);
17968                 write_phy_reg(pi, 0x1ab,
17969                               pi->rssical_cache.rssical_phyregs_2G[9]);
17970                 write_phy_reg(pi, 0x1b1,
17971                               pi->rssical_cache.rssical_phyregs_2G[10]);
17972                 write_phy_reg(pi, 0x1b7,
17973                               pi->rssical_cache.rssical_phyregs_2G[11]);
17974
17975         } else {
17976                 if (pi->nphy_rssical_chanspec_5G == 0)
17977                         return;
17978
17979                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17980                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17981                                       RADIO_2057_VCM_MASK,
17982                                       pi->rssical_cache.
17983                                       rssical_radio_regs_5G[0]);
17984                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17985                                       RADIO_2057_VCM_MASK,
17986                                       pi->rssical_cache.
17987                                       rssical_radio_regs_5G[1]);
17988                 } else {
17989                         mod_radio_reg(pi,
17990                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17991                                       RADIO_2056_VCM_MASK,
17992                                       pi->rssical_cache.
17993                                       rssical_radio_regs_5G[0]);
17994                         mod_radio_reg(pi,
17995                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17996                                       RADIO_2056_VCM_MASK,
17997                                       pi->rssical_cache.
17998                                       rssical_radio_regs_5G[1]);
17999                 }
18000
18001                 write_phy_reg(pi, 0x1a6,
18002                               pi->rssical_cache.rssical_phyregs_5G[0]);
18003                 write_phy_reg(pi, 0x1ac,
18004                               pi->rssical_cache.rssical_phyregs_5G[1]);
18005                 write_phy_reg(pi, 0x1b2,
18006                               pi->rssical_cache.rssical_phyregs_5G[2]);
18007                 write_phy_reg(pi, 0x1b8,
18008                               pi->rssical_cache.rssical_phyregs_5G[3]);
18009                 write_phy_reg(pi, 0x1a4,
18010                               pi->rssical_cache.rssical_phyregs_5G[4]);
18011                 write_phy_reg(pi, 0x1aa,
18012                               pi->rssical_cache.rssical_phyregs_5G[5]);
18013                 write_phy_reg(pi, 0x1b0,
18014                               pi->rssical_cache.rssical_phyregs_5G[6]);
18015                 write_phy_reg(pi, 0x1b6,
18016                               pi->rssical_cache.rssical_phyregs_5G[7]);
18017                 write_phy_reg(pi, 0x1a5,
18018                               pi->rssical_cache.rssical_phyregs_5G[8]);
18019                 write_phy_reg(pi, 0x1ab,
18020                               pi->rssical_cache.rssical_phyregs_5G[9]);
18021                 write_phy_reg(pi, 0x1b1,
18022                               pi->rssical_cache.rssical_phyregs_5G[10]);
18023                 write_phy_reg(pi, 0x1b7,
18024                               pi->rssical_cache.rssical_phyregs_5G[11]);
18025         }
18026 }
18027
18028 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
18029 {
18030         u16 txcal_gain[2];
18031
18032         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
18033         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
18034         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18035         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18036
18037         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18038                                 txcal_gain);
18039
18040         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18041                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
18042                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
18043         } else {
18044                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
18045                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
18046         }
18047
18048         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
18049                                  txcal_gain);
18050 }
18051
18052 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
18053 {
18054         bool save_bbmult = false;
18055         u8 txcal_index_2057_rev5n7 = 0;
18056         u8 txcal_index_2057_rev3n4n6 = 10;
18057
18058         if (pi->use_int_tx_iqlo_cal_nphy) {
18059                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18060                         if ((pi->pubpi.radiorev == 3) ||
18061                             (pi->pubpi.radiorev == 4) ||
18062                             (pi->pubpi.radiorev == 6)) {
18063
18064                                 pi->nphy_txcal_pwr_idx[0] =
18065                                         txcal_index_2057_rev3n4n6;
18066                                 pi->nphy_txcal_pwr_idx[1] =
18067                                         txcal_index_2057_rev3n4n6;
18068                                 wlc_phy_txpwr_index_nphy(
18069                                         pi, 3,
18070                                         txcal_index_2057_rev3n4n6,
18071                                         false);
18072                         } else {
18073
18074                                 pi->nphy_txcal_pwr_idx[0] =
18075                                         txcal_index_2057_rev5n7;
18076                                 pi->nphy_txcal_pwr_idx[1] =
18077                                         txcal_index_2057_rev5n7;
18078                                 wlc_phy_txpwr_index_nphy(
18079                                         pi, 3,
18080                                         txcal_index_2057_rev5n7,
18081                                         false);
18082                         }
18083                         save_bbmult = true;
18084
18085                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
18086                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18087                         if (pi->sh->hw_phytxchain != 3) {
18088                                 pi->nphy_txcal_pwr_idx[1] =
18089                                         pi->nphy_txcal_pwr_idx[0];
18090                                 wlc_phy_txpwr_index_nphy(pi, 3,
18091                                                          pi->
18092                                                          nphy_txcal_pwr_idx[0],
18093                                                          true);
18094                                 save_bbmult = true;
18095                         }
18096
18097                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18098                         if (PHY_IPA(pi)) {
18099                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18100                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18101                                                                     false);
18102                                 } else {
18103                                         pi->nphy_txcal_pwr_idx[0] = 80;
18104                                         pi->nphy_txcal_pwr_idx[1] = 80;
18105                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
18106                                                                  false);
18107                                         save_bbmult = true;
18108                                 }
18109                         } else {
18110                                 wlc_phy_internal_cal_txgain_nphy(pi);
18111                                 save_bbmult = true;
18112                         }
18113
18114                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18115                         if (PHY_IPA(pi)) {
18116                                 if (CHSPEC_IS2G(pi->radio_chanspec))
18117                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18118                                                                     false);
18119                                 else
18120                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
18121                                                                     false);
18122                         } else {
18123                                 wlc_phy_internal_cal_txgain_nphy(pi);
18124                                 save_bbmult = true;
18125                         }
18126                 }
18127
18128         } else {
18129                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18130         }
18131
18132         if (save_bbmult)
18133                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18134                                         &pi->nphy_txcal_bbmult);
18135 }
18136
18137 static void
18138 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18139                                  u8 core_code)
18140 {
18141         u16 mask;
18142         u16 val;
18143         u8 core;
18144
18145         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18146                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18147                         if (core_code == RADIO_MIMO_CORESEL_CORE1
18148                             && core == PHY_CORE_1)
18149                                 continue;
18150                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
18151                                  && core == PHY_CORE_0)
18152                                 continue;
18153
18154                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18155
18156                                 mask = (0x1 << 10);
18157                                 val = 1 << 10;
18158                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18159                                             0x92, mask, val);
18160                         }
18161
18162                         if (field == NPHY_RfctrlIntc_override_OFF) {
18163
18164                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18165                                               0x92, 0);
18166
18167                                 wlc_phy_force_rfseq_nphy(pi,
18168                                                          NPHY_RFSEQ_RESET2RX);
18169                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18170
18171                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18172
18173                                         mask = (0x1 << 6) | (0x1 << 7);
18174
18175                                         val = value << 6;
18176                                         mod_phy_reg(pi,
18177                                                     (core ==
18178                                                      PHY_CORE_0) ? 0x91 : 0x92,
18179                                                     mask, val);
18180
18181                                         or_phy_reg(pi,
18182                                                    (core ==
18183                                                     PHY_CORE_0) ? 0x91 : 0x92,
18184                                                    (0x1 << 10));
18185
18186                                         and_phy_reg(pi, 0x2ff, (u16)
18187                                                     ~(0x3 << 14));
18188                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
18189                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
18190                                 } else {
18191
18192                                         mask = (0x1 << 6) |
18193                                                (0x1 << 7) |
18194                                                (0x1 << 8) | (0x1 << 9);
18195                                         val = value << 6;
18196                                         mod_phy_reg(pi,
18197                                                     (core ==
18198                                                      PHY_CORE_0) ? 0x91 : 0x92,
18199                                                     mask, val);
18200
18201                                         mask = (0x1 << 0);
18202                                         val = 1 << 0;
18203                                         mod_phy_reg(pi,
18204                                                     (core ==
18205                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18206                                                     mask, val);
18207
18208                                         mask = (core == PHY_CORE_0) ?
18209                                                (0x1 << 0) : (0x1 << 1);
18210                                         val = 1 << ((core == PHY_CORE_0) ?
18211                                                     0 : 1);
18212                                         mod_phy_reg(pi, 0x78, mask, val);
18213
18214                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18215                                                   != 0), 10000);
18216                                         if (WARN(read_phy_reg(pi, 0x78) & val,
18217                                                  "HW error: override failed"))
18218                                                 return;
18219
18220                                         mask = (0x1 << 0);
18221                                         val = 0 << 0;
18222                                         mod_phy_reg(pi,
18223                                                     (core ==
18224                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18225                                                     mask, val);
18226                                 }
18227                         } else if (field == NPHY_RfctrlIntc_override_PA) {
18228                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18229
18230                                         mask = (0x1 << 4) | (0x1 << 5);
18231
18232                                         if (CHSPEC_IS5G(pi->radio_chanspec))
18233                                                 val = value << 5;
18234                                         else
18235                                                 val = value << 4;
18236
18237                                         mod_phy_reg(pi,
18238                                                     (core ==
18239                                                      PHY_CORE_0) ? 0x91 : 0x92,
18240                                                     mask, val);
18241
18242                                         or_phy_reg(pi,
18243                                                    (core ==
18244                                                     PHY_CORE_0) ? 0x91 : 0x92,
18245                                                    (0x1 << 12));
18246                                 } else {
18247
18248                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18249                                                 mask = (0x1 << 5);
18250                                                 val = value << 5;
18251                                         } else {
18252                                                 mask = (0x1 << 4);
18253                                                 val = value << 4;
18254                                         }
18255                                         mod_phy_reg(pi,
18256                                                     (core ==
18257                                                      PHY_CORE_0) ? 0x91 : 0x92,
18258                                                     mask, val);
18259                                 }
18260                         } else if (field ==
18261                                    NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18262                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18263                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18264
18265                                                 mask = (0x1 << 0);
18266                                                 val = value << 0;
18267                                                 mod_phy_reg(pi,
18268                                                             (core ==
18269                                                              PHY_CORE_0) ? 0x91
18270                                                             : 0x92, mask, val);
18271
18272                                                 mask = (0x1 << 2);
18273                                                 mod_phy_reg(pi,
18274                                                             (core ==
18275                                                              PHY_CORE_0) ? 0x91
18276                                                             : 0x92, mask, 0);
18277                                         } else {
18278
18279                                                 mask = (0x1 << 2);
18280                                                 val = value << 2;
18281                                                 mod_phy_reg(pi,
18282                                                             (core ==
18283                                                              PHY_CORE_0) ? 0x91
18284                                                             : 0x92, mask, val);
18285
18286                                                 mask = (0x1 << 0);
18287                                                 mod_phy_reg(pi,
18288                                                             (core ==
18289                                                              PHY_CORE_0) ? 0x91
18290                                                             : 0x92, mask, 0);
18291                                         }
18292
18293                                         mask = (0x1 << 11);
18294                                         val = 1 << 11;
18295                                         mod_phy_reg(pi,
18296                                                     (core ==
18297                                                      PHY_CORE_0) ? 0x91 : 0x92,
18298                                                     mask, val);
18299                                 } else {
18300
18301                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18302                                                 mask = (0x1 << 0);
18303                                                 val = value << 0;
18304                                         } else {
18305                                                 mask = (0x1 << 2);
18306                                                 val = value << 2;
18307                                         }
18308                                         mod_phy_reg(pi,
18309                                                     (core ==
18310                                                      PHY_CORE_0) ? 0x91 : 0x92,
18311                                                     mask, val);
18312                                 }
18313                         } else if (field ==
18314                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18315                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18316                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18317
18318                                                 mask = (0x1 << 1);
18319                                                 val = value << 1;
18320                                                 mod_phy_reg(pi,
18321                                                             (core ==
18322                                                              PHY_CORE_0) ? 0x91
18323                                                             : 0x92, mask, val);
18324
18325                                                 mask = (0x1 << 3);
18326                                                 mod_phy_reg(pi,
18327                                                             (core ==
18328                                                              PHY_CORE_0) ? 0x91
18329                                                             : 0x92, mask, 0);
18330                                         } else {
18331
18332                                                 mask = (0x1 << 3);
18333                                                 val = value << 3;
18334                                                 mod_phy_reg(pi,
18335                                                             (core ==
18336                                                              PHY_CORE_0) ? 0x91
18337                                                             : 0x92, mask, val);
18338
18339                                                 mask = (0x1 << 1);
18340                                                 mod_phy_reg(pi,
18341                                                             (core ==
18342                                                              PHY_CORE_0) ? 0x91
18343                                                             : 0x92, mask, 0);
18344                                         }
18345
18346                                         mask = (0x1 << 11);
18347                                         val = 1 << 11;
18348                                         mod_phy_reg(pi,
18349                                                     (core ==
18350                                                      PHY_CORE_0) ? 0x91 : 0x92,
18351                                                     mask, val);
18352                                 } else {
18353
18354                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18355                                                 mask = (0x1 << 1);
18356                                                 val = value << 1;
18357                                         } else {
18358                                                 mask = (0x1 << 3);
18359                                                 val = value << 3;
18360                                         }
18361                                         mod_phy_reg(pi,
18362                                                     (core ==
18363                                                      PHY_CORE_0) ? 0x91 : 0x92,
18364                                                     mask, val);
18365                                 }
18366                         }
18367                 }
18368         }
18369 }
18370
18371 void
18372 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18373                             bool debug)
18374 {
18375         int gainctrl_loopidx;
18376         uint core;
18377         u16 m0m1, curr_m0m1;
18378         s32 delta_power;
18379         s32 txpwrindex;
18380         s32 qdBm_power[2];
18381         u16 orig_BBConfig;
18382         u16 phy_saveregs[4];
18383         u32 freq_test;
18384         u16 ampl_test = 250;
18385         uint stepsize;
18386         bool phyhang_avoid_state = false;
18387
18388         if (NREV_GE(pi->pubpi.phy_rev, 7))
18389                 stepsize = 2;
18390         else
18391                 stepsize = 1;
18392
18393         if (CHSPEC_IS40(pi->radio_chanspec))
18394                 freq_test = 5000;
18395         else
18396                 freq_test = 2500;
18397
18398         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18399         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18400
18401         if (pi->phyhang_avoid)
18402                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18403
18404         phyhang_avoid_state = pi->phyhang_avoid;
18405         pi->phyhang_avoid = false;
18406
18407         phy_saveregs[0] = read_phy_reg(pi, 0x91);
18408         phy_saveregs[1] = read_phy_reg(pi, 0x92);
18409         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18410         phy_saveregs[3] = read_phy_reg(pi, 0xec);
18411         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18412                                          RADIO_MIMO_CORESEL_CORE1 |
18413                                          RADIO_MIMO_CORESEL_CORE2);
18414
18415         if (!debug) {
18416                 wlc_phy_rfctrlintc_override_nphy(pi,
18417                                                  NPHY_RfctrlIntc_override_TRSW,
18418                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
18419                 wlc_phy_rfctrlintc_override_nphy(pi,
18420                                                  NPHY_RfctrlIntc_override_TRSW,
18421                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
18422         } else {
18423                 wlc_phy_rfctrlintc_override_nphy(pi,
18424                                                  NPHY_RfctrlIntc_override_TRSW,
18425                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
18426                 wlc_phy_rfctrlintc_override_nphy(pi,
18427                                                  NPHY_RfctrlIntc_override_TRSW,
18428                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
18429         }
18430
18431         orig_BBConfig = read_phy_reg(pi, 0x01);
18432         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18433
18434         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18435
18436         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18437                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18438
18439                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18440                      gainctrl_loopidx++) {
18441                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18442                                              false);
18443
18444                         if (core == PHY_CORE_0)
18445                                 curr_m0m1 = m0m1 & 0xff00;
18446                         else
18447                                 curr_m0m1 = m0m1 & 0x00ff;
18448
18449                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18450                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18451
18452                         udelay(50);
18453
18454                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18455                                                  NPHY_CAL_TSSISAMPS);
18456
18457                         pi->nphy_bb_mult_save = 0;
18458                         wlc_phy_stopplayback_nphy(pi);
18459
18460                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18461
18462                         txpwrindex -= stepsize * delta_power;
18463                         if (txpwrindex < 0)
18464                                 txpwrindex = 0;
18465                         else if (txpwrindex > 127)
18466                                 txpwrindex = 127;
18467
18468                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18469                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18470                                     (pi->srom_fem5g.extpagain == 3)) {
18471                                         if (txpwrindex < 30)
18472                                                 txpwrindex = 30;
18473                                 }
18474                         } else {
18475                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18476                                     (pi->srom_fem2g.extpagain == 3)) {
18477                                         if (txpwrindex < 50)
18478                                                 txpwrindex = 50;
18479                                 }
18480                         }
18481
18482                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
18483                                                  (u8) txpwrindex, true);
18484                 }
18485
18486                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18487
18488                 if (debug) {
18489                         u16 radio_gain;
18490                         u16 dbg_m0m1;
18491
18492                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18493
18494                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18495                                              false);
18496
18497                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18498                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18499
18500                         udelay(100);
18501
18502                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18503                                                  NPHY_CAL_TSSISAMPS);
18504
18505                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18506                                                 &radio_gain);
18507
18508                         mdelay(4000);
18509                         pi->nphy_bb_mult_save = 0;
18510                         wlc_phy_stopplayback_nphy(pi);
18511                 }
18512         }
18513
18514         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18515         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18516
18517         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18518
18519         write_phy_reg(pi, 0x01, orig_BBConfig);
18520
18521         write_phy_reg(pi, 0x91, phy_saveregs[0]);
18522         write_phy_reg(pi, 0x92, phy_saveregs[1]);
18523         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18524         write_phy_reg(pi, 0xec, phy_saveregs[3]);
18525
18526         pi->phyhang_avoid = phyhang_avoid_state;
18527
18528         if (pi->phyhang_avoid)
18529                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18530 }
18531
18532 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18533 {
18534         void *tbl_ptr;
18535         int coreNum;
18536         u16 *txcal_radio_regs = NULL;
18537
18538         if (pi->phyhang_avoid)
18539                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18540
18541         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18542
18543                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18544                                           &pi->calibration_cache.
18545                                           rxcal_coeffs_2G);
18546
18547                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18548                         txcal_radio_regs =
18549                                 pi->calibration_cache.txcal_radio_regs_2G;
18550                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18551
18552                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18553                                 read_radio_reg(pi,
18554                                                RADIO_2056_TX_LOFT_FINE_I |
18555                                                RADIO_2056_TX0);
18556                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18557                                 read_radio_reg(pi,
18558                                                RADIO_2056_TX_LOFT_FINE_Q |
18559                                                RADIO_2056_TX0);
18560                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18561                                 read_radio_reg(pi,
18562                                                RADIO_2056_TX_LOFT_FINE_I |
18563                                                RADIO_2056_TX1);
18564                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18565                                 read_radio_reg(pi,
18566                                                RADIO_2056_TX_LOFT_FINE_Q |
18567                                                RADIO_2056_TX1);
18568
18569                         pi->calibration_cache.txcal_radio_regs_2G[4] =
18570                                 read_radio_reg(pi,
18571                                                RADIO_2056_TX_LOFT_COARSE_I |
18572                                                RADIO_2056_TX0);
18573                         pi->calibration_cache.txcal_radio_regs_2G[5] =
18574                                 read_radio_reg(pi,
18575                                                RADIO_2056_TX_LOFT_COARSE_Q |
18576                                                RADIO_2056_TX0);
18577                         pi->calibration_cache.txcal_radio_regs_2G[6] =
18578                                 read_radio_reg(pi,
18579                                                RADIO_2056_TX_LOFT_COARSE_I |
18580                                                RADIO_2056_TX1);
18581                         pi->calibration_cache.txcal_radio_regs_2G[7] =
18582                                 read_radio_reg(pi,
18583                                                RADIO_2056_TX_LOFT_COARSE_Q |
18584                                                RADIO_2056_TX1);
18585                 } else {
18586                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18587                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18588                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18589                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18590                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18591                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18592                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18593                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18594                 }
18595
18596                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18597                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18598         } else {
18599
18600                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18601                                           &pi->calibration_cache.
18602                                           rxcal_coeffs_5G);
18603
18604                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18605                         txcal_radio_regs =
18606                                 pi->calibration_cache.txcal_radio_regs_5G;
18607                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18608
18609                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18610                                 read_radio_reg(pi,
18611                                                RADIO_2056_TX_LOFT_FINE_I |
18612                                                RADIO_2056_TX0);
18613                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18614                                 read_radio_reg(pi,
18615                                                RADIO_2056_TX_LOFT_FINE_Q |
18616                                                RADIO_2056_TX0);
18617                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18618                                 read_radio_reg(pi,
18619                                                RADIO_2056_TX_LOFT_FINE_I |
18620                                                RADIO_2056_TX1);
18621                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18622                                 read_radio_reg(pi,
18623                                                RADIO_2056_TX_LOFT_FINE_Q |
18624                                                RADIO_2056_TX1);
18625
18626                         pi->calibration_cache.txcal_radio_regs_5G[4] =
18627                                 read_radio_reg(pi,
18628                                                RADIO_2056_TX_LOFT_COARSE_I |
18629                                                RADIO_2056_TX0);
18630                         pi->calibration_cache.txcal_radio_regs_5G[5] =
18631                                 read_radio_reg(pi,
18632                                                RADIO_2056_TX_LOFT_COARSE_Q |
18633                                                RADIO_2056_TX0);
18634                         pi->calibration_cache.txcal_radio_regs_5G[6] =
18635                                 read_radio_reg(pi,
18636                                                RADIO_2056_TX_LOFT_COARSE_I |
18637                                                RADIO_2056_TX1);
18638                         pi->calibration_cache.txcal_radio_regs_5G[7] =
18639                                 read_radio_reg(pi,
18640                                                RADIO_2056_TX_LOFT_COARSE_Q |
18641                                                RADIO_2056_TX1);
18642                 } else {
18643                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18644                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18645                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18646                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18647                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18648                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18649                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18650                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18651                 }
18652
18653                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18654                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18655         }
18656         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18657                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18658
18659                         txcal_radio_regs[2 * coreNum] =
18660                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18661                                                 LOFT_FINE_I);
18662                         txcal_radio_regs[2 * coreNum + 1] =
18663                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18664                                                 LOFT_FINE_Q);
18665
18666                         txcal_radio_regs[2 * coreNum + 4] =
18667                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18668                                                 LOFT_COARSE_I);
18669                         txcal_radio_regs[2 * coreNum + 5] =
18670                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18671                                                 LOFT_COARSE_Q);
18672                 }
18673         }
18674
18675         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18676
18677         if (pi->phyhang_avoid)
18678                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18679 }
18680
18681 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18682 {
18683         struct nphy_iq_comp tx_comp;
18684
18685         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18686
18687         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18688         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18689         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18690         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18691 }
18692
18693 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18694 {
18695         u16 *loft_comp;
18696         u16 txcal_coeffs_bphy[4];
18697         u16 *tbl_ptr;
18698         int coreNum;
18699         u16 *txcal_radio_regs = NULL;
18700
18701         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18702                 if (pi->nphy_iqcal_chanspec_2G == 0)
18703                         return;
18704
18705                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18706                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18707         } else {
18708                 if (pi->nphy_iqcal_chanspec_5G == 0)
18709                         return;
18710
18711                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18712                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18713         }
18714
18715         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18716
18717         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18718                 txcal_coeffs_bphy[0] = tbl_ptr[0];
18719                 txcal_coeffs_bphy[1] = tbl_ptr[1];
18720                 txcal_coeffs_bphy[2] = tbl_ptr[2];
18721                 txcal_coeffs_bphy[3] = tbl_ptr[3];
18722         } else {
18723                 txcal_coeffs_bphy[0] = 0;
18724                 txcal_coeffs_bphy[1] = 0;
18725                 txcal_coeffs_bphy[2] = 0;
18726                 txcal_coeffs_bphy[3] = 0;
18727         }
18728
18729         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18730                                  txcal_coeffs_bphy);
18731
18732         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18733
18734         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18735
18736         if (NREV_LT(pi->pubpi.phy_rev, 2))
18737                 wlc_phy_tx_iq_war_nphy(pi);
18738
18739         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18740                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18741                         txcal_radio_regs =
18742                                 pi->calibration_cache.txcal_radio_regs_2G;
18743                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18744
18745                         write_radio_reg(pi,
18746                                         RADIO_2056_TX_LOFT_FINE_I |
18747                                         RADIO_2056_TX0,
18748                                         pi->calibration_cache.
18749                                         txcal_radio_regs_2G[0]);
18750                         write_radio_reg(pi,
18751                                         RADIO_2056_TX_LOFT_FINE_Q |
18752                                         RADIO_2056_TX0,
18753                                         pi->calibration_cache.
18754                                         txcal_radio_regs_2G[1]);
18755                         write_radio_reg(pi,
18756                                         RADIO_2056_TX_LOFT_FINE_I |
18757                                         RADIO_2056_TX1,
18758                                         pi->calibration_cache.
18759                                         txcal_radio_regs_2G[2]);
18760                         write_radio_reg(pi,
18761                                         RADIO_2056_TX_LOFT_FINE_Q |
18762                                         RADIO_2056_TX1,
18763                                         pi->calibration_cache.
18764                                         txcal_radio_regs_2G[3]);
18765
18766                         write_radio_reg(pi,
18767                                         RADIO_2056_TX_LOFT_COARSE_I |
18768                                         RADIO_2056_TX0,
18769                                         pi->calibration_cache.
18770                                         txcal_radio_regs_2G[4]);
18771                         write_radio_reg(pi,
18772                                         RADIO_2056_TX_LOFT_COARSE_Q |
18773                                         RADIO_2056_TX0,
18774                                         pi->calibration_cache.
18775                                         txcal_radio_regs_2G[5]);
18776                         write_radio_reg(pi,
18777                                         RADIO_2056_TX_LOFT_COARSE_I |
18778                                         RADIO_2056_TX1,
18779                                         pi->calibration_cache.
18780                                         txcal_radio_regs_2G[6]);
18781                         write_radio_reg(pi,
18782                                         RADIO_2056_TX_LOFT_COARSE_Q |
18783                                         RADIO_2056_TX1,
18784                                         pi->calibration_cache.
18785                                         txcal_radio_regs_2G[7]);
18786                 } else {
18787                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18788                                         pi->calibration_cache.
18789                                         txcal_radio_regs_2G[0]);
18790                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18791                                         pi->calibration_cache.
18792                                         txcal_radio_regs_2G[1]);
18793                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18794                                         pi->calibration_cache.
18795                                         txcal_radio_regs_2G[2]);
18796                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18797                                         pi->calibration_cache.
18798                                         txcal_radio_regs_2G[3]);
18799                 }
18800
18801                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18802                                           &pi->calibration_cache.
18803                                           rxcal_coeffs_2G);
18804         } else {
18805                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18806                         txcal_radio_regs =
18807                                 pi->calibration_cache.txcal_radio_regs_5G;
18808                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18809
18810                         write_radio_reg(pi,
18811                                         RADIO_2056_TX_LOFT_FINE_I |
18812                                         RADIO_2056_TX0,
18813                                         pi->calibration_cache.
18814                                         txcal_radio_regs_5G[0]);
18815                         write_radio_reg(pi,
18816                                         RADIO_2056_TX_LOFT_FINE_Q |
18817                                         RADIO_2056_TX0,
18818                                         pi->calibration_cache.
18819                                         txcal_radio_regs_5G[1]);
18820                         write_radio_reg(pi,
18821                                         RADIO_2056_TX_LOFT_FINE_I |
18822                                         RADIO_2056_TX1,
18823                                         pi->calibration_cache.
18824                                         txcal_radio_regs_5G[2]);
18825                         write_radio_reg(pi,
18826                                         RADIO_2056_TX_LOFT_FINE_Q |
18827                                         RADIO_2056_TX1,
18828                                         pi->calibration_cache.
18829                                         txcal_radio_regs_5G[3]);
18830
18831                         write_radio_reg(pi,
18832                                         RADIO_2056_TX_LOFT_COARSE_I |
18833                                         RADIO_2056_TX0,
18834                                         pi->calibration_cache.
18835                                         txcal_radio_regs_5G[4]);
18836                         write_radio_reg(pi,
18837                                         RADIO_2056_TX_LOFT_COARSE_Q |
18838                                         RADIO_2056_TX0,
18839                                         pi->calibration_cache.
18840                                         txcal_radio_regs_5G[5]);
18841                         write_radio_reg(pi,
18842                                         RADIO_2056_TX_LOFT_COARSE_I |
18843                                         RADIO_2056_TX1,
18844                                         pi->calibration_cache.
18845                                         txcal_radio_regs_5G[6]);
18846                         write_radio_reg(pi,
18847                                         RADIO_2056_TX_LOFT_COARSE_Q |
18848                                         RADIO_2056_TX1,
18849                                         pi->calibration_cache.
18850                                         txcal_radio_regs_5G[7]);
18851                 } else {
18852                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18853                                         pi->calibration_cache.
18854                                         txcal_radio_regs_5G[0]);
18855                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18856                                         pi->calibration_cache.
18857                                         txcal_radio_regs_5G[1]);
18858                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18859                                         pi->calibration_cache.
18860                                         txcal_radio_regs_5G[2]);
18861                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18862                                         pi->calibration_cache.
18863                                         txcal_radio_regs_5G[3]);
18864                 }
18865
18866                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18867                                           &pi->calibration_cache.
18868                                           rxcal_coeffs_5G);
18869         }
18870
18871         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18872                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18873
18874                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18875                                          LOFT_FINE_I,
18876                                          txcal_radio_regs[2 * coreNum]);
18877                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18878                                          LOFT_FINE_Q,
18879                                          txcal_radio_regs[2 * coreNum + 1]);
18880
18881                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18882                                          LOFT_COARSE_I,
18883                                          txcal_radio_regs[2 * coreNum + 4]);
18884                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18885                                          LOFT_COARSE_Q,
18886                                          txcal_radio_regs[2 * coreNum + 5]);
18887                 }
18888         }
18889 }
18890
18891 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18892 {
18893         u32 idx;
18894         u16 iqloCalbuf[7];
18895         u32 iqcomp, locomp, curr_locomp;
18896         s8 locomp_i, locomp_q;
18897         s8 curr_locomp_i, curr_locomp_q;
18898         u32 tbl_id, tbl_len, tbl_offset;
18899         u32 regval[128];
18900
18901         if (pi->phyhang_avoid)
18902                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18903
18904         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18905
18906         tbl_len = 128;
18907         tbl_offset = 320;
18908         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18909              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18910                 iqcomp =
18911                         (tbl_id ==
18912                          26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18913                         (iqloCalbuf[1] & 0x3ff)
18914                         : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18915                         (iqloCalbuf[3] & 0x3ff);
18916
18917                 for (idx = 0; idx < tbl_len; idx++)
18918                         regval[idx] = iqcomp;
18919                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18920                                          regval);
18921         }
18922
18923         tbl_offset = 448;
18924         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18925              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18926
18927                 locomp =
18928                         (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18929                 locomp_i = (s8) ((locomp >> 8) & 0xff);
18930                 locomp_q = (s8) ((locomp) & 0xff);
18931                 for (idx = 0; idx < tbl_len; idx++) {
18932                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18933                                 curr_locomp_i = locomp_i;
18934                                 curr_locomp_q = locomp_q;
18935                         } else {
18936                                 curr_locomp_i = (s8) ((locomp_i *
18937                                                        nphy_tpc_loscale[idx] +
18938                                                        128) >> 8);
18939                                 curr_locomp_q =
18940                                         (s8) ((locomp_q *
18941                                                nphy_tpc_loscale[idx] +
18942                                                128) >> 8);
18943                         }
18944                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18945                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
18946                         regval[idx] = curr_locomp;
18947                 }
18948                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18949                                          regval);
18950         }
18951
18952         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18953
18954                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18955                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18956         }
18957
18958         if (pi->phyhang_avoid)
18959                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18960 }
18961
18962 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18963 {
18964         u8 tx_lpf_bw = 0;
18965
18966         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18967                 if (CHSPEC_IS40(pi->radio_chanspec))
18968                         tx_lpf_bw = 3;
18969                 else
18970                         tx_lpf_bw = 1;
18971
18972                 if (PHY_IPA(pi)) {
18973                         if (CHSPEC_IS40(pi->radio_chanspec))
18974                                 tx_lpf_bw = 5;
18975                         else
18976                                 tx_lpf_bw = 4;
18977                 }
18978
18979                 write_phy_reg(pi, 0xe8,
18980                               (tx_lpf_bw << 0) |
18981                               (tx_lpf_bw << 3) |
18982                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18983
18984                 if (PHY_IPA(pi)) {
18985
18986                         if (CHSPEC_IS40(pi->radio_chanspec))
18987                                 tx_lpf_bw = 4;
18988                         else
18989                                 tx_lpf_bw = 1;
18990
18991                         write_phy_reg(pi, 0xe9,
18992                                       (tx_lpf_bw << 0) |
18993                                       (tx_lpf_bw << 3) |
18994                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18995                 }
18996         }
18997 }
18998
18999 static void
19000 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
19001 {
19002         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
19003                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19004                     CHSPEC_IS40(pi->radio_chanspec)) {
19005                         if (!pi->nphy_anarxlpf_adjusted) {
19006                                 write_radio_reg(pi,
19007                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19008                                                  RADIO_2056_RX0),
19009                                                 ((pi->nphy_rccal_value +
19010                                                   reduction_factr) | 0x80));
19011
19012                                 pi->nphy_anarxlpf_adjusted = true;
19013                         }
19014                 } else {
19015                         if (pi->nphy_anarxlpf_adjusted) {
19016                                 write_radio_reg(pi,
19017                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
19018                                                  RADIO_2056_RX0),
19019                                                 (pi->nphy_rccal_value | 0x80));
19020
19021                                 pi->nphy_anarxlpf_adjusted = false;
19022                         }
19023                 }
19024         }
19025 }
19026
19027 static void
19028 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
19029                                  int *tone_id_buf, u32 *noise_var_buf)
19030 {
19031         int i;
19032         u32 offset;
19033         int tone_id;
19034         int tbllen =
19035                 CHSPEC_IS40(pi->radio_chanspec) ?
19036                 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
19037
19038         if (pi->nphy_noisevars_adjusted) {
19039                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
19040                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
19041                         offset = (tone_id >= 0) ?
19042                                  ((tone_id *
19043                                    2) + 1) : (tbllen + (tone_id * 2) + 1);
19044                         wlc_phy_table_write_nphy(
19045                                 pi, NPHY_TBL_ID_NOISEVAR, 1,
19046                                 offset, 32,
19047                                 &pi->nphy_saved_noisevars.min_noise_vars[i]);
19048                 }
19049
19050                 pi->nphy_saved_noisevars.bufcount = 0;
19051                 pi->nphy_noisevars_adjusted = false;
19052         }
19053
19054         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
19055                 pi->nphy_saved_noisevars.bufcount = 0;
19056
19057                 for (i = 0; i < ntones; i++) {
19058                         tone_id = tone_id_buf[i];
19059                         offset = (tone_id >= 0) ?
19060                                  ((tone_id * 2) + 1) :
19061                                  (tbllen + (tone_id * 2) + 1);
19062                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
19063                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19064                                                 offset, 32,
19065                                                 &pi->nphy_saved_noisevars.
19066                                                 min_noise_vars[i]);
19067                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
19068                                                  offset, 32, &noise_var_buf[i]);
19069                         pi->nphy_saved_noisevars.bufcount++;
19070                 }
19071
19072                 pi->nphy_noisevars_adjusted = true;
19073         }
19074 }
19075
19076 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
19077 {
19078         u16 regval;
19079
19080         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19081                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
19082                     CHSPEC_IS40(pi->radio_chanspec)) {
19083                         if (!pi->nphy_crsminpwr_adjusted) {
19084                                 regval = read_phy_reg(pi, 0x27d);
19085                                 pi->nphy_crsminpwr[0] = regval & 0xff;
19086                                 regval &= 0xff00;
19087                                 regval |= (u16) minpwr;
19088                                 write_phy_reg(pi, 0x27d, regval);
19089
19090                                 regval = read_phy_reg(pi, 0x280);
19091                                 pi->nphy_crsminpwr[1] = regval & 0xff;
19092                                 regval &= 0xff00;
19093                                 regval |= (u16) minpwr;
19094                                 write_phy_reg(pi, 0x280, regval);
19095
19096                                 regval = read_phy_reg(pi, 0x283);
19097                                 pi->nphy_crsminpwr[2] = regval & 0xff;
19098                                 regval &= 0xff00;
19099                                 regval |= (u16) minpwr;
19100                                 write_phy_reg(pi, 0x283, regval);
19101
19102                                 pi->nphy_crsminpwr_adjusted = true;
19103                         }
19104                 } else {
19105                         if (pi->nphy_crsminpwr_adjusted) {
19106                                 regval = read_phy_reg(pi, 0x27d);
19107                                 regval &= 0xff00;
19108                                 regval |= pi->nphy_crsminpwr[0];
19109                                 write_phy_reg(pi, 0x27d, regval);
19110
19111                                 regval = read_phy_reg(pi, 0x280);
19112                                 regval &= 0xff00;
19113                                 regval |= pi->nphy_crsminpwr[1];
19114                                 write_phy_reg(pi, 0x280, regval);
19115
19116                                 regval = read_phy_reg(pi, 0x283);
19117                                 regval &= 0xff00;
19118                                 regval |= pi->nphy_crsminpwr[2];
19119                                 write_phy_reg(pi, 0x283, regval);
19120
19121                                 pi->nphy_crsminpwr_adjusted = false;
19122                         }
19123                 }
19124         }
19125 }
19126
19127 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19128 {
19129         u16 cur_channel = 0;
19130         int nphy_adj_tone_id_buf[] = { 57, 58 };
19131         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19132         bool isAdjustNoiseVar = false;
19133         uint numTonesAdjust = 0;
19134         u32 tempval = 0;
19135
19136         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19137                 if (pi->phyhang_avoid)
19138                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19139
19140                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19141
19142                 if (pi->nphy_gband_spurwar_en) {
19143
19144                         wlc_phy_adjust_rx_analpfbw_nphy(
19145                                 pi,
19146                                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19147
19148                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19149                                 if ((cur_channel == 11)
19150                                     && CHSPEC_IS40(pi->radio_chanspec))
19151                                         wlc_phy_adjust_min_noisevar_nphy(
19152                                                 pi, 2,
19153                                                 nphy_adj_tone_id_buf,
19154                                                 nphy_adj_noise_var_buf);
19155                                 else
19156                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19157                                                                          NULL,
19158                                                                          NULL);
19159                         }
19160
19161                         wlc_phy_adjust_crsminpwr_nphy(pi,
19162                                                      NPHY_ADJUSTED_MINCRSPOWER);
19163                 }
19164
19165                 if ((pi->nphy_gband_spurwar2_en)
19166                     && CHSPEC_IS2G(pi->radio_chanspec)) {
19167
19168                         if (CHSPEC_IS40(pi->radio_chanspec)) {
19169                                 switch (cur_channel) {
19170                                 case 3:
19171                                         nphy_adj_tone_id_buf[0] = 57;
19172                                         nphy_adj_tone_id_buf[1] = 58;
19173                                         nphy_adj_noise_var_buf[0] = 0x22f;
19174                                         nphy_adj_noise_var_buf[1] = 0x25f;
19175                                         isAdjustNoiseVar = true;
19176                                         break;
19177                                 case 4:
19178                                         nphy_adj_tone_id_buf[0] = 41;
19179                                         nphy_adj_tone_id_buf[1] = 42;
19180                                         nphy_adj_noise_var_buf[0] = 0x22f;
19181                                         nphy_adj_noise_var_buf[1] = 0x25f;
19182                                         isAdjustNoiseVar = true;
19183                                         break;
19184                                 case 5:
19185                                         nphy_adj_tone_id_buf[0] = 25;
19186                                         nphy_adj_tone_id_buf[1] = 26;
19187                                         nphy_adj_noise_var_buf[0] = 0x24f;
19188                                         nphy_adj_noise_var_buf[1] = 0x25f;
19189                                         isAdjustNoiseVar = true;
19190                                         break;
19191                                 case 6:
19192                                         nphy_adj_tone_id_buf[0] = 9;
19193                                         nphy_adj_tone_id_buf[1] = 10;
19194                                         nphy_adj_noise_var_buf[0] = 0x22f;
19195                                         nphy_adj_noise_var_buf[1] = 0x24f;
19196                                         isAdjustNoiseVar = true;
19197                                         break;
19198                                 case 7:
19199                                         nphy_adj_tone_id_buf[0] = 121;
19200                                         nphy_adj_tone_id_buf[1] = 122;
19201                                         nphy_adj_noise_var_buf[0] = 0x18f;
19202                                         nphy_adj_noise_var_buf[1] = 0x24f;
19203                                         isAdjustNoiseVar = true;
19204                                         break;
19205                                 case 8:
19206                                         nphy_adj_tone_id_buf[0] = 105;
19207                                         nphy_adj_tone_id_buf[1] = 106;
19208                                         nphy_adj_noise_var_buf[0] = 0x22f;
19209                                         nphy_adj_noise_var_buf[1] = 0x25f;
19210                                         isAdjustNoiseVar = true;
19211                                         break;
19212                                 case 9:
19213                                         nphy_adj_tone_id_buf[0] = 89;
19214                                         nphy_adj_tone_id_buf[1] = 90;
19215                                         nphy_adj_noise_var_buf[0] = 0x22f;
19216                                         nphy_adj_noise_var_buf[1] = 0x24f;
19217                                         isAdjustNoiseVar = true;
19218                                         break;
19219                                 case 10:
19220                                         nphy_adj_tone_id_buf[0] = 73;
19221                                         nphy_adj_tone_id_buf[1] = 74;
19222                                         nphy_adj_noise_var_buf[0] = 0x22f;
19223                                         nphy_adj_noise_var_buf[1] = 0x24f;
19224                                         isAdjustNoiseVar = true;
19225                                         break;
19226                                 default:
19227                                         isAdjustNoiseVar = false;
19228                                         break;
19229                                 }
19230                         }
19231
19232                         if (isAdjustNoiseVar) {
19233                                 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19234
19235                                 wlc_phy_adjust_min_noisevar_nphy(
19236                                         pi,
19237                                         numTonesAdjust,
19238                                         nphy_adj_tone_id_buf,
19239                                         nphy_adj_noise_var_buf);
19240
19241                                 tempval = 0;
19242
19243                         } else {
19244                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19245                                                                  NULL);
19246                         }
19247                 }
19248
19249                 if ((pi->nphy_aband_spurwar_en) &&
19250                     (CHSPEC_IS5G(pi->radio_chanspec))) {
19251                         switch (cur_channel) {
19252                         case 54:
19253                                 nphy_adj_tone_id_buf[0] = 32;
19254                                 nphy_adj_noise_var_buf[0] = 0x25f;
19255                                 break;
19256                         case 38:
19257                         case 102:
19258                         case 118:
19259                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19260                                     (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19261                                         nphy_adj_tone_id_buf[0] = 32;
19262                                         nphy_adj_noise_var_buf[0] = 0x21f;
19263                                 } else {
19264                                         nphy_adj_tone_id_buf[0] = 0;
19265                                         nphy_adj_noise_var_buf[0] = 0x0;
19266                                 }
19267                                 break;
19268                         case 134:
19269                                 nphy_adj_tone_id_buf[0] = 32;
19270                                 nphy_adj_noise_var_buf[0] = 0x21f;
19271                                 break;
19272                         case 151:
19273                                 nphy_adj_tone_id_buf[0] = 16;
19274                                 nphy_adj_noise_var_buf[0] = 0x23f;
19275                                 break;
19276                         case 153:
19277                         case 161:
19278                                 nphy_adj_tone_id_buf[0] = 48;
19279                                 nphy_adj_noise_var_buf[0] = 0x23f;
19280                                 break;
19281                         default:
19282                                 nphy_adj_tone_id_buf[0] = 0;
19283                                 nphy_adj_noise_var_buf[0] = 0x0;
19284                                 break;
19285                         }
19286
19287                         if (nphy_adj_tone_id_buf[0]
19288                             && nphy_adj_noise_var_buf[0])
19289                                 wlc_phy_adjust_min_noisevar_nphy(
19290                                         pi, 1,
19291                                         nphy_adj_tone_id_buf,
19292                                         nphy_adj_noise_var_buf);
19293                         else
19294                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19295                                                                  NULL);
19296                 }
19297
19298                 if (pi->phyhang_avoid)
19299                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19300         }
19301 }
19302
19303 void wlc_phy_init_nphy(struct brcms_phy *pi)
19304 {
19305         u16 val;
19306         u16 clip1_ths[2];
19307         struct nphy_txgains target_gain;
19308         u8 tx_pwr_ctrl_state;
19309         bool do_nphy_cal = false;
19310         uint core;
19311         u32 d11_clk_ctl_st;
19312         bool do_rssi_cal = false;
19313
19314         core = 0;
19315
19316         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19317                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19318
19319         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19320             ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19321              (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19322                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19323                     (CHSPEC_IS2G(pi->radio_chanspec)))
19324                         bcma_cc_set32(&pi->d11core->bus->drv_cc,
19325                                       BCMA_CC_CHIPCTL, 0x40);
19326         }
19327
19328         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19329                 bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19330                                             ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19331
19332         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19333             CHSPEC_IS40(pi->radio_chanspec)) {
19334
19335                 d11_clk_ctl_st = bcma_read32(pi->d11core,
19336                                              D11REGOFFS(clk_ctl_st));
19337                 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19338                             ~(CCS_FORCEHT | CCS_HTAREQ));
19339
19340                 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19341                              d11_clk_ctl_st);
19342         }
19343
19344         pi->use_int_tx_iqlo_cal_nphy =
19345                 (PHY_IPA(pi) ||
19346                  (NREV_GE(pi->pubpi.phy_rev, 7) ||
19347                   (NREV_GE(pi->pubpi.phy_rev, 5)
19348                    && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19349
19350         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19351
19352         pi->nphy_deaf_count = 0;
19353
19354         wlc_phy_tbl_init_nphy(pi);
19355
19356         pi->nphy_crsminpwr_adjusted = false;
19357         pi->nphy_noisevars_adjusted = false;
19358
19359         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19360                 write_phy_reg(pi, 0xe7, 0);
19361                 write_phy_reg(pi, 0xec, 0);
19362                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19363                         write_phy_reg(pi, 0x342, 0);
19364                         write_phy_reg(pi, 0x343, 0);
19365                         write_phy_reg(pi, 0x346, 0);
19366                         write_phy_reg(pi, 0x347, 0);
19367                 }
19368                 write_phy_reg(pi, 0xe5, 0);
19369                 write_phy_reg(pi, 0xe6, 0);
19370         } else {
19371                 write_phy_reg(pi, 0xec, 0);
19372         }
19373
19374         write_phy_reg(pi, 0x91, 0);
19375         write_phy_reg(pi, 0x92, 0);
19376         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19377                 write_phy_reg(pi, 0x93, 0);
19378                 write_phy_reg(pi, 0x94, 0);
19379         }
19380
19381         and_phy_reg(pi, 0xa1, ~3);
19382
19383         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19384                 write_phy_reg(pi, 0x8f, 0);
19385                 write_phy_reg(pi, 0xa5, 0);
19386         } else {
19387                 write_phy_reg(pi, 0xa5, 0);
19388         }
19389
19390         if (NREV_IS(pi->pubpi.phy_rev, 2))
19391                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19392         else if (NREV_LT(pi->pubpi.phy_rev, 2))
19393                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19394
19395         write_phy_reg(pi, 0x203, 32);
19396         write_phy_reg(pi, 0x201, 32);
19397
19398         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19399                 write_phy_reg(pi, 0x20d, 160);
19400         else
19401                 write_phy_reg(pi, 0x20d, 184);
19402
19403         write_phy_reg(pi, 0x13a, 200);
19404
19405         write_phy_reg(pi, 0x70, 80);
19406
19407         write_phy_reg(pi, 0x1ff, 48);
19408
19409         if (NREV_LT(pi->pubpi.phy_rev, 8))
19410                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19411
19412         wlc_phy_stf_chain_upd_nphy(pi);
19413
19414         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19415                 write_phy_reg(pi, 0x180, 0xaa8);
19416                 write_phy_reg(pi, 0x181, 0x9a4);
19417         }
19418
19419         if (PHY_IPA(pi)) {
19420                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19421
19422                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19423                                     0x29b, (0x1 << 0), (1) << 0);
19424
19425                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19426                                     0x29c, (0x1ff << 7),
19427                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19428
19429                 }
19430
19431                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19432         } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19433                 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19434         }
19435
19436         wlc_phy_workarounds_nphy(pi);
19437
19438         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19439
19440         val = read_phy_reg(pi, 0x01);
19441         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19442         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19443         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19444
19445         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19446
19447         wlc_phy_pa_override_nphy(pi, OFF);
19448         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19449         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19450         wlc_phy_pa_override_nphy(pi, ON);
19451
19452         wlc_phy_classifier_nphy(pi, 0, 0);
19453         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19454
19455         if (CHSPEC_IS2G(pi->radio_chanspec))
19456                 wlc_phy_bphy_init_nphy(pi);
19457
19458         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19459         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19460
19461         wlc_phy_txpwr_fixpower_nphy(pi);
19462
19463         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19464
19465         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19466
19467         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19468                 u32 *tx_pwrctrl_tbl = NULL;
19469                 u16 idx;
19470                 s16 pga_gn = 0;
19471                 s16 pad_gn = 0;
19472                 s32 rfpwr_offset;
19473
19474                 if (PHY_IPA(pi)) {
19475                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19476                 } else {
19477                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
19478                                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19479                                         tx_pwrctrl_tbl =
19480                                                 nphy_tpc_5GHz_txgain_rev3;
19481                                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19482                                         tx_pwrctrl_tbl =
19483                                                 (pi->srom_fem5g.extpagain ==
19484                                                  3) ?
19485                                                 nphy_tpc_5GHz_txgain_HiPwrEPA :
19486                                                 nphy_tpc_5GHz_txgain_rev4;
19487                                 else
19488                                         tx_pwrctrl_tbl =
19489                                                 nphy_tpc_5GHz_txgain_rev5;
19490                         } else {
19491                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19492                                         if (pi->pubpi.radiorev == 5)
19493                                                 tx_pwrctrl_tbl =
19494                                                    nphy_tpc_txgain_epa_2057rev5;
19495                                         else if (pi->pubpi.radiorev == 3)
19496                                                 tx_pwrctrl_tbl =
19497                                                    nphy_tpc_txgain_epa_2057rev3;
19498                                 } else {
19499                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19500                                             (pi->srom_fem2g.extpagain == 3))
19501                                                 tx_pwrctrl_tbl =
19502                                                        nphy_tpc_txgain_HiPwrEPA;
19503                                         else
19504                                                 tx_pwrctrl_tbl =
19505                                                         nphy_tpc_txgain_rev3;
19506                                 }
19507                         }
19508                 }
19509
19510                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19511                                          192, 32, tx_pwrctrl_tbl);
19512                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19513                                          192, 32, tx_pwrctrl_tbl);
19514
19515                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19516
19517                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19518
19519                         for (idx = 0; idx < 128; idx++) {
19520                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19521                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19522                                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19523                                                                  pad_gn);
19524                                 wlc_phy_table_write_nphy(
19525                                         pi,
19526                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19527                                         1, 576 + idx, 32,
19528                                         &rfpwr_offset);
19529                                 wlc_phy_table_write_nphy(
19530                                         pi,
19531                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19532                                         1, 576 + idx, 32,
19533                                         &rfpwr_offset);
19534                         }
19535                 } else {
19536
19537                         for (idx = 0; idx < 128; idx++) {
19538                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19539                                 if (CHSPEC_IS2G(pi->radio_chanspec))
19540                                         rfpwr_offset = (s16)
19541                                                  nphy_papd_pga_gain_delta_ipa_2g
19542                                                                        [pga_gn];
19543                                 else
19544                                         rfpwr_offset = (s16)
19545                                                  nphy_papd_pga_gain_delta_ipa_5g
19546                                                                        [pga_gn];
19547
19548                                 wlc_phy_table_write_nphy(
19549                                         pi,
19550                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19551                                         1, 576 + idx, 32,
19552                                         &rfpwr_offset);
19553                                 wlc_phy_table_write_nphy(
19554                                         pi,
19555                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19556                                         1, 576 + idx, 32,
19557                                         &rfpwr_offset);
19558                         }
19559
19560                 }
19561         } else {
19562
19563                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19564                                          192, 32, nphy_tpc_txgain);
19565                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19566                                          192, 32, nphy_tpc_txgain);
19567         }
19568
19569         if (pi->sh->phyrxchain != 0x3)
19570                 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19571                                              pi->sh->phyrxchain);
19572
19573         if (PHY_PERICAL_MPHASE_PENDING(pi))
19574                 wlc_phy_cal_perical_mphase_restart(pi);
19575
19576         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19577                 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19578                               (pi->nphy_rssical_chanspec_2G == 0) :
19579                               (pi->nphy_rssical_chanspec_5G == 0);
19580
19581                 if (do_rssi_cal)
19582                         wlc_phy_rssi_cal_nphy(pi);
19583                 else
19584                         wlc_phy_restore_rssical_nphy(pi);
19585         } else {
19586                 wlc_phy_rssi_cal_nphy(pi);
19587         }
19588
19589         if (!SCAN_RM_IN_PROGRESS(pi))
19590                 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19591                               (pi->nphy_iqcal_chanspec_2G == 0) :
19592                               (pi->nphy_iqcal_chanspec_5G == 0);
19593
19594         if (!pi->do_initcal)
19595                 do_nphy_cal = false;
19596
19597         if (do_nphy_cal) {
19598
19599                 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19600
19601                 if (pi->antsel_type == ANTSEL_2x3)
19602                         wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19603                                             true);
19604
19605                 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19606                         wlc_phy_rssi_cal_nphy(pi);
19607
19608                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19609                                 pi->nphy_cal_orig_pwr_idx[0] =
19610                                         pi->nphy_txpwrindex[PHY_CORE_0]
19611                                         .
19612                                         index_internal;
19613                                 pi->nphy_cal_orig_pwr_idx[1] =
19614                                         pi->nphy_txpwrindex[PHY_CORE_1]
19615                                         .
19616                                         index_internal;
19617
19618                                 wlc_phy_precal_txgain_nphy(pi);
19619                                 target_gain =
19620                                         wlc_phy_get_tx_gain_nphy(pi);
19621                         }
19622
19623                         if (wlc_phy_cal_txiqlo_nphy
19624                                     (pi, target_gain, true,
19625                                     false) == 0) {
19626                                 if (wlc_phy_cal_rxiq_nphy
19627                                             (pi, target_gain, 2,
19628                                             false) == 0)
19629                                         wlc_phy_savecal_nphy(pi);
19630
19631                         }
19632                 } else if (pi->mphase_cal_phase_id ==
19633                            MPHASE_CAL_STATE_IDLE) {
19634                         wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19635                                             PHY_PERICAL_PHYINIT);
19636                 }
19637         } else {
19638                 wlc_phy_restorecal_nphy(pi);
19639         }
19640
19641         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19642
19643         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19644
19645         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19646
19647         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19648
19649                 write_phy_reg(pi, 0x70, 50);
19650
19651         wlc_phy_txlpfbw_nphy(pi);
19652
19653         wlc_phy_spurwar_nphy(pi);
19654
19655 }
19656
19657 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19658 {
19659         u16 val;
19660
19661         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19662
19663         val = read_phy_reg(pi, 0x01);
19664         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19665         udelay(1);
19666         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19667
19668         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19669
19670         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19671 }
19672
19673 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19674 {
19675         u16 rfctrlintc_override_val;
19676
19677         if (!en) {
19678
19679                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19680                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19681
19682                 if (NREV_GE(pi->pubpi.phy_rev, 7))
19683                         rfctrlintc_override_val = 0x1480;
19684                 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19685                         rfctrlintc_override_val =
19686                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19687                 else
19688                         rfctrlintc_override_val =
19689                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19690
19691                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19692                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19693         } else {
19694                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19695                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19696         }
19697
19698 }
19699
19700 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19701 {
19702
19703         u16 txrx_chain =
19704                 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19705         bool CoreActv_override = false;
19706
19707         if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19708                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19709                 CoreActv_override = true;
19710
19711                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19712                         and_phy_reg(pi, 0xa0, ~0x20);
19713         } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19714                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19715                 CoreActv_override = true;
19716
19717                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19718                         or_phy_reg(pi, 0xa0, 0x20);
19719         }
19720
19721         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19722
19723         if (CoreActv_override) {
19724                 pi->nphy_perical = PHY_PERICAL_DISABLE;
19725                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19726         } else {
19727                 pi->nphy_perical = PHY_PERICAL_MPHASE;
19728                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19729         }
19730 }
19731
19732 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19733 {
19734         u16 regval;
19735         u16 tbl_buf[16];
19736         uint i;
19737         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19738         u16 tbl_opcode;
19739         bool suspend;
19740
19741         pi->sh->phyrxchain = rxcore_bitmask;
19742
19743         if (!pi->sh->clk)
19744                 return;
19745
19746         suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19747                          MCTL_EN_MAC));
19748         if (!suspend)
19749                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19750
19751         if (pi->phyhang_avoid)
19752                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19753
19754         regval = read_phy_reg(pi, 0xa2);
19755         regval &= ~(0xf << 4);
19756         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19757         write_phy_reg(pi, 0xa2, regval);
19758
19759         if ((rxcore_bitmask & 0x3) != 0x3) {
19760
19761                 write_phy_reg(pi, 0x20e, 1);
19762
19763                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19764                         if (pi->rx2tx_biasentry == -1) {
19765                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19766                                                         ARRAY_SIZE(tbl_buf), 80,
19767                                                         16, tbl_buf);
19768
19769                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19770                                         if (tbl_buf[i] ==
19771                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19772                                                 pi->rx2tx_biasentry = (u8) i;
19773                                                 tbl_opcode =
19774                                                         NPHY_REV3_RFSEQ_CMD_NOP;
19775                                                 wlc_phy_table_write_nphy(
19776                                                         pi,
19777                                                         NPHY_TBL_ID_RFSEQ,
19778                                                         1, i,
19779                                                         16,
19780                                                         &tbl_opcode);
19781                                                 break;
19782                                         } else if (tbl_buf[i] ==
19783                                                    NPHY_REV3_RFSEQ_CMD_END)
19784                                                 break;
19785                                 }
19786                         }
19787                 }
19788         } else {
19789
19790                 write_phy_reg(pi, 0x20e, 30);
19791
19792                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19793                         if (pi->rx2tx_biasentry != -1) {
19794                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19795                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19796                                                          1, pi->rx2tx_biasentry,
19797                                                          16, &tbl_opcode);
19798                                 pi->rx2tx_biasentry = -1;
19799                         }
19800                 }
19801         }
19802
19803         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19804
19805         if (pi->phyhang_avoid)
19806                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19807
19808         if (!suspend)
19809                 wlapi_enable_mac(pi->sh->physhim);
19810 }
19811
19812 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19813 {
19814         u16 regval, rxen_bits;
19815         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19816
19817         regval = read_phy_reg(pi, 0xa2);
19818         rxen_bits = (regval >> 4) & 0xf;
19819
19820         return (u8) rxen_bits;
19821 }
19822
19823 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19824 {
19825         return PHY_IPA(pi);
19826 }
19827
19828 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19829 {
19830 }
19831
19832 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19833 {
19834
19835         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19836         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19837
19838         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19839         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19840
19841 }
19842
19843 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19844 {
19845         struct radio_20xx_regs *regs_2057_ptr = NULL;
19846
19847         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19848                 regs_2057_ptr = regs_2057_rev4;
19849         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19850                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
19851                 switch (pi->pubpi.radiorev) {
19852                 case 5:
19853
19854                         if (NREV_IS(pi->pubpi.phy_rev, 8))
19855                                 regs_2057_ptr = regs_2057_rev5;
19856                         else if (NREV_IS(pi->pubpi.phy_rev, 9))
19857                                 regs_2057_ptr = regs_2057_rev5v1;
19858                         break;
19859
19860                 case 7:
19861
19862                         regs_2057_ptr = regs_2057_rev7;
19863                         break;
19864
19865                 case 8:
19866
19867                         regs_2057_ptr = regs_2057_rev8;
19868                         break;
19869
19870                 default:
19871                         break;
19872                 }
19873         }
19874
19875         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19876 }
19877
19878 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19879 {
19880         u16 rcal_reg = 0;
19881         int i;
19882
19883         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19884
19885                 if (pi->pubpi.radiorev == 5) {
19886
19887                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
19888
19889                         udelay(10);
19890
19891                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19892                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19893                                       0x1);
19894                 }
19895                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19896
19897                 udelay(10);
19898
19899                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19900
19901                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19902                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19903                         if (rcal_reg & 0x1)
19904                                 break;
19905
19906                         udelay(100);
19907                 }
19908
19909                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19910                          "HW error: radio calib2"))
19911                         return 0;
19912
19913                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19914
19915                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19916
19917                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19918                 if (pi->pubpi.radiorev == 5) {
19919
19920                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19921                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19922                                       0x0);
19923                 }
19924
19925                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19926
19927                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19928                                       rcal_reg);
19929                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19930                                       rcal_reg << 2);
19931                 }
19932
19933         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19934                 u16 savereg;
19935
19936                 savereg =
19937                         read_radio_reg(
19938                                 pi,
19939                                 RADIO_2056_SYN_PLL_MAST2 |
19940                                 RADIO_2056_SYN);
19941                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19942                                 savereg | 0x7);
19943                 udelay(10);
19944
19945                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19946                                 0x1);
19947                 udelay(10);
19948
19949                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19950                                 0x9);
19951
19952                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19953                         rcal_reg = read_radio_reg(
19954                                 pi,
19955                                 RADIO_2056_SYN_RCAL_CODE_OUT |
19956                                 RADIO_2056_SYN);
19957                         if (rcal_reg & 0x80)
19958                                 break;
19959
19960                         udelay(100);
19961                 }
19962
19963                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19964                          "HW error: radio calib3"))
19965                         return 0;
19966
19967                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19968                                 0x1);
19969
19970                 rcal_reg =
19971                         read_radio_reg(pi,
19972                                        RADIO_2056_SYN_RCAL_CODE_OUT |
19973                                        RADIO_2056_SYN);
19974
19975                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19976                                 0x0);
19977
19978                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19979                                 savereg);
19980
19981                 return rcal_reg & 0x1f;
19982         }
19983         return rcal_reg & 0x3e;
19984 }
19985
19986 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19987 {
19988         u16 rccal_valid;
19989         int i;
19990         bool chip43226_6362A0;
19991
19992         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19993                             || (pi->pubpi.radiorev == 4)
19994                             || (pi->pubpi.radiorev == 6));
19995
19996         rccal_valid = 0;
19997         if (chip43226_6362A0) {
19998                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19999                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
20000         } else {
20001                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
20002
20003                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
20004         }
20005         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20006         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20007
20008         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20009                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20010                 if (rccal_valid & 0x2)
20011                         break;
20012
20013                 udelay(500);
20014         }
20015
20016         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20017
20018         rccal_valid = 0;
20019         if (chip43226_6362A0) {
20020                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
20021                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20022         } else {
20023                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
20024
20025                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
20026         }
20027         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20028         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20029
20030         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20031                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20032                 if (rccal_valid & 0x2)
20033                         break;
20034
20035                 udelay(500);
20036         }
20037
20038         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20039
20040         rccal_valid = 0;
20041         if (chip43226_6362A0) {
20042                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
20043
20044                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
20045                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
20046         } else {
20047                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
20048                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
20049                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
20050         }
20051         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
20052
20053         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
20054                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
20055                 if (rccal_valid & 0x2)
20056                         break;
20057
20058                 udelay(500);
20059         }
20060
20061         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
20062                 return 0;
20063
20064         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
20065
20066         return rccal_valid;
20067 }
20068
20069 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
20070 {
20071
20072         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
20073
20074         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
20075         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
20076         mdelay(2);
20077         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
20078         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
20079
20080         if (pi->phy_init_por) {
20081                 wlc_phy_radio205x_rcal(pi);
20082                 wlc_phy_radio2057_rccal(pi);
20083         }
20084
20085         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
20086 }
20087
20088 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20089 {
20090         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20091         const struct radio_regs *regs_TX_2056_ptr = NULL;
20092         const struct radio_regs *regs_RX_2056_ptr = NULL;
20093
20094         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20095                 regs_SYN_2056_ptr = regs_SYN_2056;
20096                 regs_TX_2056_ptr = regs_TX_2056;
20097                 regs_RX_2056_ptr = regs_RX_2056;
20098         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20099                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20100                 regs_TX_2056_ptr = regs_TX_2056_A1;
20101                 regs_RX_2056_ptr = regs_RX_2056_A1;
20102         } else {
20103                 switch (pi->pubpi.radiorev) {
20104                 case 5:
20105                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20106                         regs_TX_2056_ptr = regs_TX_2056_rev5;
20107                         regs_RX_2056_ptr = regs_RX_2056_rev5;
20108                         break;
20109
20110                 case 6:
20111                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20112                         regs_TX_2056_ptr = regs_TX_2056_rev6;
20113                         regs_RX_2056_ptr = regs_RX_2056_rev6;
20114                         break;
20115
20116                 case 7:
20117                 case 9:
20118                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20119                         regs_TX_2056_ptr = regs_TX_2056_rev7;
20120                         regs_RX_2056_ptr = regs_RX_2056_rev7;
20121                         break;
20122
20123                 case 8:
20124                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20125                         regs_TX_2056_ptr = regs_TX_2056_rev8;
20126                         regs_RX_2056_ptr = regs_RX_2056_rev8;
20127                         break;
20128
20129                 case 11:
20130                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20131                         regs_TX_2056_ptr = regs_TX_2056_rev11;
20132                         regs_RX_2056_ptr = regs_RX_2056_rev11;
20133                         break;
20134
20135                 default:
20136                         break;
20137                 }
20138         }
20139
20140         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20141
20142         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20143
20144         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20145
20146         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20147
20148         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20149 }
20150
20151 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20152 {
20153         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20154
20155         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20156         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20157         udelay(1000);
20158         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20159
20160         if ((pi->sh->boardflags2 & BFL2_LEGACY)
20161             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20162                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20163         else
20164                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20165
20166         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20167
20168         if (pi->phy_init_por)
20169                 wlc_phy_radio205x_rcal(pi);
20170 }
20171
20172 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20173 {
20174
20175         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20176         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20177
20178         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20179 }
20180
20181 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20182 {
20183         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20184 }
20185
20186 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20187 {
20188
20189         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20190                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20191
20192         if (((pi->sh->sromrev >= 4)
20193              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20194             || ((pi->sh->sromrev < 4))) {
20195                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20196                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20197         }
20198
20199         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20200         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20201
20202         and_radio_reg(pi, RADIO_2055_CAL_MISC,
20203                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20204
20205         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20206
20207         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20208
20209         udelay(1000);
20210
20211         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20212
20213         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20214                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20215
20216         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20217                   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20218                  "HW error: radio calibration1\n"))
20219                 return;
20220
20221         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20222                       ~(RADIO_2055_CAL_LPO_ENABLE));
20223
20224         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20225
20226         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20227         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20228
20229         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20230         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20231
20232         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20233                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20234         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20235                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20236         if (pi->nphy_gain_boost) {
20237                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20238                               ~(RADIO_2055_GAINBST_DISABLE));
20239                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20240                               ~(RADIO_2055_GAINBST_DISABLE));
20241         } else {
20242                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20243                              RADIO_2055_GAINBST_DISABLE);
20244                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20245                              RADIO_2055_GAINBST_DISABLE);
20246         }
20247
20248         udelay(2);
20249 }
20250
20251 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20252 {
20253         if (on) {
20254                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20255                         if (!pi->radio_is_on) {
20256                                 wlc_phy_radio_preinit_205x(pi);
20257                                 wlc_phy_radio_init_2057(pi);
20258                                 wlc_phy_radio_postinit_2057(pi);
20259                         }
20260
20261                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20262                                              pi->radio_chanspec);
20263                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20264                         wlc_phy_radio_preinit_205x(pi);
20265                         wlc_phy_radio_init_2056(pi);
20266                         wlc_phy_radio_postinit_2056(pi);
20267
20268                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20269                                              pi->radio_chanspec);
20270                 } else {
20271                         wlc_phy_radio_preinit_2055(pi);
20272                         wlc_phy_radio_init_2055(pi);
20273                         wlc_phy_radio_postinit_2055(pi);
20274                 }
20275
20276                 pi->radio_is_on = true;
20277
20278         } else {
20279
20280                 if (NREV_GE(pi->pubpi.phy_rev, 3)
20281                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
20282                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20283                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20284
20285                         write_radio_reg(pi,
20286                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20287                                         RADIO_2056_TX0, 0);
20288                         write_radio_reg(pi,
20289                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20290                                         RADIO_2056_TX0, 0);
20291                         write_radio_reg(pi,
20292                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20293                                         RADIO_2056_TX0, 0);
20294                         write_radio_reg(pi,
20295                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20296                                         RADIO_2056_TX0, 0);
20297                         mod_radio_reg(pi,
20298                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20299                                       RADIO_2056_TX0, 0xf0, 0);
20300                         write_radio_reg(pi,
20301                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20302                                         RADIO_2056_TX0, 0);
20303
20304                         write_radio_reg(pi,
20305                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20306                                         RADIO_2056_TX1, 0);
20307                         write_radio_reg(pi,
20308                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20309                                         RADIO_2056_TX1, 0);
20310                         write_radio_reg(pi,
20311                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20312                                         RADIO_2056_TX1, 0);
20313                         write_radio_reg(pi,
20314                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20315                                         RADIO_2056_TX1, 0);
20316                         mod_radio_reg(pi,
20317                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20318                                       RADIO_2056_TX1, 0xf0, 0);
20319                         write_radio_reg(pi,
20320                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20321                                         RADIO_2056_TX1, 0);
20322
20323                         pi->radio_is_on = false;
20324                 }
20325
20326                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20327                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20328                         pi->radio_is_on = false;
20329                 }
20330
20331         }
20332 }
20333
20334 static bool
20335 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20336                        const struct chan_info_nphy_radio2057 **t0,
20337                        const struct chan_info_nphy_radio205x **t1,
20338                        const struct chan_info_nphy_radio2057_rev5 **t2,
20339                        const struct chan_info_nphy_2055 **t3)
20340 {
20341         uint i;
20342         const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20343         const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20344         const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20345         u32 tbl_len = 0;
20346
20347         int freq = 0;
20348
20349         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20350
20351                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20352
20353                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20354                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20355
20356                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20357                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
20358                         switch (pi->pubpi.radiorev) {
20359
20360                         case 5:
20361
20362                                 if (pi->pubpi.radiover == 0x0) {
20363
20364                                         chan_info_tbl_p_2 =
20365                                                 chan_info_nphyrev8_2057_rev5;
20366                                         tbl_len = ARRAY_SIZE(
20367                                                   chan_info_nphyrev8_2057_rev5);
20368
20369                                 } else if (pi->pubpi.radiover == 0x1) {
20370
20371                                         chan_info_tbl_p_2 =
20372                                                 chan_info_nphyrev9_2057_rev5v1;
20373                                         tbl_len = ARRAY_SIZE(
20374                                                 chan_info_nphyrev9_2057_rev5v1);
20375
20376                                 }
20377                                 break;
20378
20379                         case 7:
20380                                 chan_info_tbl_p_0 =
20381                                         chan_info_nphyrev8_2057_rev7;
20382                                 tbl_len = ARRAY_SIZE(
20383                                                   chan_info_nphyrev8_2057_rev7);
20384                                 break;
20385
20386                         case 8:
20387                                 chan_info_tbl_p_0 =
20388                                         chan_info_nphyrev8_2057_rev8;
20389                                 tbl_len = ARRAY_SIZE(
20390                                                   chan_info_nphyrev8_2057_rev8);
20391                                 break;
20392
20393                         default:
20394                                 break;
20395                         }
20396                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20397
20398                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20399                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20400                 } else {
20401                         goto fail;
20402                 }
20403
20404                 for (i = 0; i < tbl_len; i++) {
20405                         if (pi->pubpi.radiorev == 5) {
20406
20407                                 if (chan_info_tbl_p_2[i].chan == channel)
20408                                         break;
20409                         } else {
20410
20411                                 if (chan_info_tbl_p_0[i].chan == channel)
20412                                         break;
20413                         }
20414                 }
20415
20416                 if (i >= tbl_len)
20417                         goto fail;
20418
20419                 if (pi->pubpi.radiorev == 5) {
20420                         *t2 = &chan_info_tbl_p_2[i];
20421                         freq = chan_info_tbl_p_2[i].freq;
20422                 } else {
20423                         *t0 = &chan_info_tbl_p_0[i];
20424                         freq = chan_info_tbl_p_0[i].freq;
20425                 }
20426
20427         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20428                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20429                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20430                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20431                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20432                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20433                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20434                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20435                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
20436                         switch (pi->pubpi.radiorev) {
20437                         case 5:
20438                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20439                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20440                                 break;
20441                         case 6:
20442                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20443                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20444                                 break;
20445                         case 7:
20446                         case 9:
20447                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20448                                 tbl_len =
20449                                         ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20450                                 break;
20451                         case 8:
20452                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20453                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20454                                 break;
20455                         case 11:
20456                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20457                                 tbl_len = ARRAY_SIZE(
20458                                                     chan_info_nphyrev6_2056v11);
20459                                 break;
20460                         default:
20461                                 break;
20462                         }
20463                 }
20464
20465                 for (i = 0; i < tbl_len; i++) {
20466                         if (chan_info_tbl_p_1[i].chan == channel)
20467                                 break;
20468                 }
20469
20470                 if (i >= tbl_len)
20471                         goto fail;
20472
20473                 *t1 = &chan_info_tbl_p_1[i];
20474                 freq = chan_info_tbl_p_1[i].freq;
20475
20476         } else {
20477                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20478                         if (chan_info_nphy_2055[i].chan == channel)
20479                                 break;
20480
20481                 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20482                         goto fail;
20483
20484                 *t3 = &chan_info_nphy_2055[i];
20485                 freq = chan_info_nphy_2055[i].freq;
20486         }
20487
20488         *f = freq;
20489         return true;
20490
20491 fail:
20492         *f = WL_CHAN_FREQ_RANGE_2G;
20493         return false;
20494 }
20495
20496 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20497 {
20498         int freq;
20499         const struct chan_info_nphy_radio2057 *t0 = NULL;
20500         const struct chan_info_nphy_radio205x *t1 = NULL;
20501         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20502         const struct chan_info_nphy_2055 *t3 = NULL;
20503
20504         if (channel == 0)
20505                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20506
20507         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20508
20509         if (CHSPEC_IS2G(pi->radio_chanspec))
20510                 return WL_CHAN_FREQ_RANGE_2G;
20511
20512         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20513                 return WL_CHAN_FREQ_RANGE_5GL;
20514         else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20515                 return WL_CHAN_FREQ_RANGE_5GM;
20516         else
20517                 return WL_CHAN_FREQ_RANGE_5GH;
20518 }
20519
20520 static void
20521 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20522                                  const struct chan_info_nphy_2055 *ci)
20523 {
20524
20525         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20526         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20527         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20528         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20529
20530         BRCMS_PHY_WAR_PR51571(pi);
20531
20532         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20533         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20534         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20535         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20536
20537         BRCMS_PHY_WAR_PR51571(pi);
20538
20539         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20540         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20541         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20542         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20543
20544         BRCMS_PHY_WAR_PR51571(pi);
20545
20546         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20547                         ci->RF_core1_lgbuf_a_tune);
20548         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20549                         ci->RF_core1_lgbuf_g_tune);
20550         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20551         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20552                         ci->RF_core1_tx_pga_pad_tn);
20553
20554         BRCMS_PHY_WAR_PR51571(pi);
20555
20556         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20557                         ci->RF_core1_tx_mx_bgtrim);
20558         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20559                         ci->RF_core2_lgbuf_a_tune);
20560         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20561                         ci->RF_core2_lgbuf_g_tune);
20562         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20563
20564         BRCMS_PHY_WAR_PR51571(pi);
20565
20566         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20567                         ci->RF_core2_tx_pga_pad_tn);
20568         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20569                         ci->RF_core2_tx_mx_bgtrim);
20570
20571         udelay(50);
20572
20573         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20574         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20575
20576         BRCMS_PHY_WAR_PR51571(pi);
20577
20578         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20579
20580         udelay(300);
20581 }
20582
20583 static void
20584 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20585                                  const struct chan_info_nphy_radio205x *ci)
20586 {
20587         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20588
20589         write_radio_reg(pi,
20590                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20591                         ci->RF_SYN_pll_vcocal1);
20592         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20593                         ci->RF_SYN_pll_vcocal2);
20594         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20595                         ci->RF_SYN_pll_refdiv);
20596         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20597                         ci->RF_SYN_pll_mmd2);
20598         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20599                         ci->RF_SYN_pll_mmd1);
20600         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20601                         ci->RF_SYN_pll_loopfilter1);
20602         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20603                         ci->RF_SYN_pll_loopfilter2);
20604         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20605                         ci->RF_SYN_pll_loopfilter3);
20606         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20607                         ci->RF_SYN_pll_loopfilter4);
20608         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20609                         ci->RF_SYN_pll_loopfilter5);
20610         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20611                         ci->RF_SYN_reserved_addr27);
20612         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20613                         ci->RF_SYN_reserved_addr28);
20614         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20615                         ci->RF_SYN_reserved_addr29);
20616         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20617                         ci->RF_SYN_logen_VCOBUF1);
20618         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20619                         ci->RF_SYN_logen_MIXER2);
20620         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20621                         ci->RF_SYN_logen_BUF3);
20622         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20623                         ci->RF_SYN_logen_BUF4);
20624
20625         write_radio_reg(pi,
20626                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20627                         ci->RF_RX0_lnaa_tune);
20628         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20629                         ci->RF_RX0_lnag_tune);
20630         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20631                         ci->RF_TX0_intpaa_boost_tune);
20632         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20633                         ci->RF_TX0_intpag_boost_tune);
20634         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20635                         ci->RF_TX0_pada_boost_tune);
20636         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20637                         ci->RF_TX0_padg_boost_tune);
20638         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20639                         ci->RF_TX0_pgaa_boost_tune);
20640         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20641                         ci->RF_TX0_pgag_boost_tune);
20642         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20643                         ci->RF_TX0_mixa_boost_tune);
20644         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20645                         ci->RF_TX0_mixg_boost_tune);
20646
20647         write_radio_reg(pi,
20648                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20649                         ci->RF_RX1_lnaa_tune);
20650         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20651                         ci->RF_RX1_lnag_tune);
20652         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20653                         ci->RF_TX1_intpaa_boost_tune);
20654         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20655                         ci->RF_TX1_intpag_boost_tune);
20656         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20657                         ci->RF_TX1_pada_boost_tune);
20658         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20659                         ci->RF_TX1_padg_boost_tune);
20660         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20661                         ci->RF_TX1_pgaa_boost_tune);
20662         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20663                         ci->RF_TX1_pgag_boost_tune);
20664         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20665                         ci->RF_TX1_mixa_boost_tune);
20666         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20667                         ci->RF_TX1_mixg_boost_tune);
20668
20669         if (NREV_IS(pi->pubpi.phy_rev, 3))
20670                 regs_SYN_2056_ptr = regs_SYN_2056;
20671         else if (NREV_IS(pi->pubpi.phy_rev, 4))
20672                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20673         else {
20674                 switch (pi->pubpi.radiorev) {
20675                 case 5:
20676                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20677                         break;
20678                 case 6:
20679                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20680                         break;
20681                 case 7:
20682                 case 9:
20683                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20684                         break;
20685                 case 8:
20686                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20687                         break;
20688                 case 11:
20689                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20690                         break;
20691                 }
20692         }
20693         if (CHSPEC_IS2G(pi->radio_chanspec))
20694                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20695                                 RADIO_2056_SYN,
20696                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20697         else
20698                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20699                                 RADIO_2056_SYN,
20700                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20701
20702         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20703                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20704                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20705                                         RADIO_2056_SYN, 0x1f);
20706                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20707                                         RADIO_2056_SYN, 0x1f);
20708
20709                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20710                             (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20711                                 write_radio_reg(pi,
20712                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20713                                                 RADIO_2056_SYN, 0x14);
20714                                 write_radio_reg(pi,
20715                                                 RADIO_2056_SYN_PLL_CP2 |
20716                                                 RADIO_2056_SYN, 0x00);
20717                         } else {
20718                                 write_radio_reg(pi,
20719                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20720                                                 RADIO_2056_SYN, 0xb);
20721                                 write_radio_reg(pi,
20722                                                 RADIO_2056_SYN_PLL_CP2 |
20723                                                 RADIO_2056_SYN, 0x14);
20724                         }
20725                 }
20726         }
20727
20728         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20729             (CHSPEC_IS2G(pi->radio_chanspec))) {
20730                 write_radio_reg(pi,
20731                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20732                                 0x1f);
20733                 write_radio_reg(pi,
20734                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20735                                 0x1f);
20736                 write_radio_reg(pi,
20737                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20738                                 0xb);
20739                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20740                                 0x20);
20741         }
20742
20743         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20744                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20745                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20746                                         RADIO_2056_SYN, 0x1f);
20747                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20748                                         RADIO_2056_SYN, 0x1f);
20749                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20750                                         RADIO_2056_SYN, 0x5);
20751                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20752                                         RADIO_2056_SYN, 0xc);
20753                 }
20754         }
20755
20756         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20757                 u16 pag_boost_tune;
20758                 u16 padg_boost_tune;
20759                 u16 pgag_boost_tune;
20760                 u16 mixg_boost_tune;
20761                 u16 bias, cascbias;
20762                 uint core;
20763
20764                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20765
20766                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20767
20768                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20769                                                  PADG_IDAC, 0xcc);
20770
20771                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20772                                     (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20773                                         bias = 0x40;
20774                                         cascbias = 0x45;
20775                                         pag_boost_tune = 0x5;
20776                                         pgag_boost_tune = 0x33;
20777                                         padg_boost_tune = 0x77;
20778                                         mixg_boost_tune = 0x55;
20779                                 } else {
20780                                         bias = 0x25;
20781                                         cascbias = 0x20;
20782
20783                                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20784                                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20785                                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20786                                                 bias = 0x2a;
20787                                                 cascbias = 0x38;
20788                                         }
20789
20790                                         pag_boost_tune = 0x4;
20791                                         pgag_boost_tune = 0x03;
20792                                         padg_boost_tune = 0x77;
20793                                         mixg_boost_tune = 0x65;
20794                                 }
20795
20796                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20797                                                  INTPAG_IMAIN_STAT, bias);
20798                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20799                                                  INTPAG_IAUX_STAT, bias);
20800                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20801                                                  INTPAG_CASCBIAS, cascbias);
20802
20803                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20804                                                  INTPAG_BOOST_TUNE,
20805                                                  pag_boost_tune);
20806                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20807                                                  PGAG_BOOST_TUNE,
20808                                                  pgag_boost_tune);
20809                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20810                                                  PADG_BOOST_TUNE,
20811                                                  padg_boost_tune);
20812                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20813                                                  MIXG_BOOST_TUNE,
20814                                                  mixg_boost_tune);
20815                         } else {
20816
20817                                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20818                                        0x40 : 0x20;
20819
20820                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20821                                                  INTPAG_IMAIN_STAT, bias);
20822                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20823                                                  INTPAG_IAUX_STAT, bias);
20824                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20825                                                  INTPAG_CASCBIAS, 0x30);
20826                         }
20827                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20828                                          0xee);
20829                 }
20830         }
20831
20832         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20833             && CHSPEC_IS5G(pi->radio_chanspec)) {
20834                 u16 paa_boost_tune;
20835                 u16 pada_boost_tune;
20836                 u16 pgaa_boost_tune;
20837                 u16 mixa_boost_tune;
20838                 u16 freq, pabias, cascbias;
20839                 uint core;
20840
20841                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20842
20843                 if (freq < 5150) {
20844
20845                         paa_boost_tune = 0xa;
20846                         pada_boost_tune = 0x77;
20847                         pgaa_boost_tune = 0xf;
20848                         mixa_boost_tune = 0xf;
20849                 } else if (freq < 5340) {
20850
20851                         paa_boost_tune = 0x8;
20852                         pada_boost_tune = 0x77;
20853                         pgaa_boost_tune = 0xfb;
20854                         mixa_boost_tune = 0xf;
20855                 } else if (freq < 5650) {
20856
20857                         paa_boost_tune = 0x0;
20858                         pada_boost_tune = 0x77;
20859                         pgaa_boost_tune = 0xb;
20860                         mixa_boost_tune = 0xf;
20861                 } else {
20862
20863                         paa_boost_tune = 0x0;
20864                         pada_boost_tune = 0x77;
20865                         if (freq != 5825)
20866                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20867                         else
20868                                 pgaa_boost_tune = 6;
20869
20870                         mixa_boost_tune = 0xf;
20871                 }
20872
20873                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20874                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20875                                          INTPAA_BOOST_TUNE, paa_boost_tune);
20876                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20877                                          PADA_BOOST_TUNE, pada_boost_tune);
20878                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20879                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
20880                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20881                                          MIXA_BOOST_TUNE, mixa_boost_tune);
20882
20883                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20884                                          TXSPARE1, 0x30);
20885                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20886                                          PA_SPARE2, 0xee);
20887
20888                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20889                                          PADA_CASCBIAS, 0x3);
20890
20891                         cascbias = 0x30;
20892
20893                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20894                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20895                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20896                                 cascbias = 0x35;
20897
20898                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20899
20900                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20901                                          INTPAA_IAUX_STAT, pabias);
20902                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20903                                          INTPAA_IMAIN_STAT, pabias);
20904                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20905                                          INTPAA_CASCBIAS, cascbias);
20906                 }
20907         }
20908
20909         udelay(50);
20910
20911         wlc_phy_radio205x_vcocal_nphy(pi);
20912 }
20913
20914 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20915 {
20916         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20917                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20918                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20919                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20920                               (1 << 2));
20921                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20922         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20923                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20924                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20925                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20926                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20927                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20928         }
20929
20930         udelay(300);
20931 }
20932
20933 static void
20934 wlc_phy_chanspec_radio2057_setup(
20935         struct brcms_phy *pi,
20936         const struct chan_info_nphy_radio2057 *ci,
20937         const struct chan_info_nphy_radio2057_rev5 *
20938         ci2)
20939 {
20940         int coreNum;
20941         u16 txmix2g_tune_boost_pu = 0;
20942         u16 pad2g_tune_pus = 0;
20943
20944         if (pi->pubpi.radiorev == 5) {
20945
20946                 write_radio_reg(pi,
20947                                 RADIO_2057_VCOCAL_COUNTVAL0,
20948                                 ci2->RF_vcocal_countval0);
20949                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20950                                 ci2->RF_vcocal_countval1);
20951                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20952                                 ci2->RF_rfpll_refmaster_sparextalsize);
20953                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20954                                 ci2->RF_rfpll_loopfilter_r1);
20955                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20956                                 ci2->RF_rfpll_loopfilter_c2);
20957                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20958                                 ci2->RF_rfpll_loopfilter_c1);
20959                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20960                                 ci2->RF_cp_kpd_idac);
20961                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20962                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20963                 write_radio_reg(pi,
20964                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20965                 write_radio_reg(pi,
20966                                 RADIO_2057_LOGEN_MX2G_TUNE,
20967                                 ci2->RF_logen_mx2g_tune);
20968                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20969                                 ci2->RF_logen_indbuf2g_tune);
20970
20971                 write_radio_reg(pi,
20972                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20973                                 ci2->RF_txmix2g_tune_boost_pu_core0);
20974                 write_radio_reg(pi,
20975                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20976                                 ci2->RF_pad2g_tune_pus_core0);
20977                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20978                                 ci2->RF_lna2g_tune_core0);
20979
20980                 write_radio_reg(pi,
20981                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20982                                 ci2->RF_txmix2g_tune_boost_pu_core1);
20983                 write_radio_reg(pi,
20984                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20985                                 ci2->RF_pad2g_tune_pus_core1);
20986                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20987                                 ci2->RF_lna2g_tune_core1);
20988
20989         } else {
20990
20991                 write_radio_reg(pi,
20992                                 RADIO_2057_VCOCAL_COUNTVAL0,
20993                                 ci->RF_vcocal_countval0);
20994                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20995                                 ci->RF_vcocal_countval1);
20996                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20997                                 ci->RF_rfpll_refmaster_sparextalsize);
20998                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20999                                 ci->RF_rfpll_loopfilter_r1);
21000                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21001                                 ci->RF_rfpll_loopfilter_c2);
21002                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21003                                 ci->RF_rfpll_loopfilter_c1);
21004                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
21005                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
21006                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
21007                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
21008                 write_radio_reg(pi,
21009                                 RADIO_2057_LOGEN_MX2G_TUNE,
21010                                 ci->RF_logen_mx2g_tune);
21011                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
21012                                 ci->RF_logen_mx5g_tune);
21013                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
21014                                 ci->RF_logen_indbuf2g_tune);
21015                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
21016                                 ci->RF_logen_indbuf5g_tune);
21017
21018                 write_radio_reg(pi,
21019                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
21020                                 ci->RF_txmix2g_tune_boost_pu_core0);
21021                 write_radio_reg(pi,
21022                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
21023                                 ci->RF_pad2g_tune_pus_core0);
21024                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
21025                                 ci->RF_pga_boost_tune_core0);
21026                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
21027                                 ci->RF_txmix5g_boost_tune_core0);
21028                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
21029                                 ci->RF_pad5g_tune_misc_pus_core0);
21030                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
21031                                 ci->RF_lna2g_tune_core0);
21032                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
21033                                 ci->RF_lna5g_tune_core0);
21034
21035                 write_radio_reg(pi,
21036                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
21037                                 ci->RF_txmix2g_tune_boost_pu_core1);
21038                 write_radio_reg(pi,
21039                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
21040                                 ci->RF_pad2g_tune_pus_core1);
21041                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
21042                                 ci->RF_pga_boost_tune_core1);
21043                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
21044                                 ci->RF_txmix5g_boost_tune_core1);
21045                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
21046                                 ci->RF_pad5g_tune_misc_pus_core1);
21047                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
21048                                 ci->RF_lna2g_tune_core1);
21049                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
21050                                 ci->RF_lna5g_tune_core1);
21051         }
21052
21053         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
21054
21055                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21056                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21057                                         0x3f);
21058                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21059                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21060                                         0x8);
21061                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21062                                         0x8);
21063                 } else {
21064                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21065                                         0x1f);
21066                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21067                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21068                                         0x8);
21069                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21070                                         0x8);
21071                 }
21072         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
21073                    (pi->pubpi.radiorev == 8)) {
21074
21075                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
21076                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21077                                         0x1b);
21078                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
21079                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21080                                         0xa);
21081                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21082                                         0xa);
21083                 } else {
21084                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
21085                                         0x1f);
21086                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21087                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21088                                         0x8);
21089                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21090                                         0x8);
21091                 }
21092
21093         }
21094
21095         if (CHSPEC_IS2G(pi->radio_chanspec)) {
21096                 if (PHY_IPA(pi)) {
21097                         if (pi->pubpi.radiorev == 3)
21098                                 txmix2g_tune_boost_pu = 0x6b;
21099
21100                         if (pi->pubpi.radiorev == 5)
21101                                 pad2g_tune_pus = 0x73;
21102
21103                 } else {
21104                         if (pi->pubpi.radiorev != 5) {
21105                                 pad2g_tune_pus = 0x3;
21106
21107                                 txmix2g_tune_boost_pu = 0x61;
21108                         }
21109                 }
21110
21111                 for (coreNum = 0; coreNum <= 1; coreNum++) {
21112
21113                         if (txmix2g_tune_boost_pu != 0)
21114                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21115                                                  TXMIX2G_TUNE_BOOST_PU,
21116                                                  txmix2g_tune_boost_pu);
21117
21118                         if (pad2g_tune_pus != 0)
21119                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21120                                                  PAD2G_TUNE_PUS,
21121                                                  pad2g_tune_pus);
21122                 }
21123         }
21124
21125         udelay(50);
21126
21127         wlc_phy_radio205x_vcocal_nphy(pi);
21128 }
21129
21130 static void
21131 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21132                             const struct nphy_sfo_cfg *ci)
21133 {
21134         u16 val;
21135
21136         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21137         if (CHSPEC_IS5G(chanspec) && !val) {
21138
21139                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21140                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21141                       (val | MAC_PHY_FORCE_CLK));
21142
21143                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21144                            (BBCFG_RESETCCA | BBCFG_RESETRX));
21145
21146                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21147
21148                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21149         } else if (!CHSPEC_IS5G(chanspec) && val) {
21150
21151                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21152
21153                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21154                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21155                       (val | MAC_PHY_FORCE_CLK));
21156
21157                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21158                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21159
21160                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21161         }
21162
21163         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21164         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21165         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21166
21167         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21168         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21169         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21170
21171         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21172                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21173
21174                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21175         } else {
21176                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21177                                         NPHY_ClassifierCtrl_ofdm_en);
21178
21179                 if (CHSPEC_IS2G(chanspec))
21180                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21181         }
21182
21183         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21184                 wlc_phy_txpwr_fixpower_nphy(pi);
21185
21186         if (NREV_LT(pi->pubpi.phy_rev, 3))
21187                 wlc_phy_adjust_lnagaintbl_nphy(pi);
21188
21189         wlc_phy_txlpfbw_nphy(pi);
21190
21191         if (NREV_GE(pi->pubpi.phy_rev, 3)
21192             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21193                 u8 spuravoid = 0;
21194
21195                 val = CHSPEC_CHANNEL(chanspec);
21196                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21197                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21198                                 if ((val == 13) || (val == 14) || (val == 153))
21199                                         spuravoid = 1;
21200                         } else if (((val >= 5) && (val <= 8)) || (val == 13)
21201                                    || (val == 14)) {
21202                                 spuravoid = 1;
21203                         }
21204                 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21205                         if (val == 54)
21206                                 spuravoid = 1;
21207                 } else if (pi->nphy_aband_spurwar_en &&
21208                     ((val == 38) || (val == 102) || (val == 118))) {
21209                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21210                             && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21211                                 spuravoid = 0;
21212                         } else {
21213                                 spuravoid = 1;
21214                         }
21215                 }
21216
21217                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21218                         spuravoid = 1;
21219
21220                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21221                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21222                         bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21223                                                      spuravoid);
21224                 } else {
21225                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21226                         bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21227                                                      spuravoid);
21228                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21229                 }
21230
21231                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21232                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21233                         if (spuravoid == 1) {
21234                                 bcma_write16(pi->d11core,
21235                                              D11REGOFFS(tsf_clk_frac_l),
21236                                              0x5341);
21237                                 bcma_write16(pi->d11core,
21238                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21239                         } else {
21240                                 bcma_write16(pi->d11core,
21241                                              D11REGOFFS(tsf_clk_frac_l),
21242                                              0x8889);
21243                                 bcma_write16(pi->d11core,
21244                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21245                         }
21246                 }
21247
21248                 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21249                       (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21250                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21251
21252                 mod_phy_reg(pi, 0x01, (0x1 << 15),
21253                             ((spuravoid > 0) ? (0x1 << 15) : 0));
21254
21255                 wlc_phy_resetcca_nphy(pi);
21256
21257                 pi->phy_isspuravoid = (spuravoid > 0);
21258         }
21259
21260         if (NREV_LT(pi->pubpi.phy_rev, 7))
21261                 write_phy_reg(pi, 0x17e, 0x3830);
21262
21263         wlc_phy_spurwar_nphy(pi);
21264 }
21265
21266 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21267 {
21268         int freq;
21269         const struct chan_info_nphy_radio2057 *t0 = NULL;
21270         const struct chan_info_nphy_radio205x *t1 = NULL;
21271         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21272         const struct chan_info_nphy_2055 *t3 = NULL;
21273
21274         if (!wlc_phy_chan2freq_nphy
21275                     (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21276                 return;
21277
21278         wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21279
21280         if (CHSPEC_BW(chanspec) != pi->bw)
21281                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21282
21283         if (CHSPEC_IS40(chanspec)) {
21284                 if (CHSPEC_SB_UPPER(chanspec)) {
21285                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21286                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21287                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21288                 } else {
21289                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21290                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21291                                 and_phy_reg(pi, 0x310,
21292                                             (~PRIM_SEL_UP20 & 0xffff));
21293                 }
21294         }
21295
21296         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21297                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21298
21299                         if ((pi->pubpi.radiorev <= 4)
21300                             || (pi->pubpi.radiorev == 6)) {
21301                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21302                                               0x2,
21303                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21304                                                : 0));
21305                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21306                                               0x2,
21307                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21308                                                : 0));
21309                         }
21310
21311                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21312                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21313                                 (pi->pubpi.radiorev == 5) ?
21314                                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21315                                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21316
21317                 } else {
21318
21319                         mod_radio_reg(pi,
21320                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21321                                       0x4,
21322                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21323                         wlc_phy_chanspec_radio2056_setup(pi, t1);
21324
21325                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21326                                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21327                 }
21328
21329         } else {
21330
21331                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21332                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21333                                : (0x05 << 4)));
21334
21335                 wlc_phy_chanspec_radio2055_setup(pi, t3);
21336                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21337                                             (const struct nphy_sfo_cfg *)
21338                                              &(t3->PHY_BW1a));
21339         }
21340
21341 }
21342
21343 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21344 {
21345         struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21346         u16 mask = 0xfc00;
21347         u32 mc = 0;
21348
21349         if (NREV_GE(pi->pubpi.phy_rev, 7))
21350                 return;
21351
21352         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21353                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21354
21355                 if (!lut_init)
21356                         return;
21357
21358                 if (pi->srom_fem2g.antswctrllut == 0) {
21359                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21360                                                  1, 0x02, 16, &v0);
21361                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21362                                                  1, 0x03, 16, &v1);
21363                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21364                                                  1, 0x08, 16, &v2);
21365                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21366                                                  1, 0x0C, 16, &v3);
21367                 }
21368
21369                 if (pi->srom_fem5g.antswctrllut == 0) {
21370                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21371                                                  1, 0x12, 16, &v0);
21372                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21373                                                  1, 0x13, 16, &v1);
21374                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21375                                                  1, 0x18, 16, &v2);
21376                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21377                                                  1, 0x1C, 16, &v3);
21378                 }
21379         } else {
21380
21381                 write_phy_reg(pi, 0xc8, 0x0);
21382                 write_phy_reg(pi, 0xc9, 0x0);
21383
21384                 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21385
21386                 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21387                 mc &= ~MCTL_GPOUT_SEL_MASK;
21388                 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21389
21390                 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21391
21392                 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21393
21394                 if (lut_init) {
21395                         write_phy_reg(pi, 0xf8, 0x02d8);
21396                         write_phy_reg(pi, 0xf9, 0x0301);
21397                         write_phy_reg(pi, 0xfa, 0x02d8);
21398                         write_phy_reg(pi, 0xfb, 0x0301);
21399                 }
21400         }
21401 }
21402
21403 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21404 {
21405         u16 curr_ctl, new_ctl;
21406         bool suspended = false;
21407
21408         if (D11REV_IS(pi->sh->corerev, 16)) {
21409                 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21410                              MCTL_EN_MAC) ? false : true;
21411                 if (!suspended)
21412                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
21413         }
21414
21415         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21416
21417         new_ctl = (curr_ctl & (~mask)) | (val & mask);
21418
21419         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21420
21421         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21422                 wlapi_enable_mac(pi->sh->physhim);
21423
21424         return new_ctl;
21425 }
21426
21427 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21428 {
21429         u16 trigger_mask, status_mask;
21430         u16 orig_RfseqCoreActv;
21431
21432         switch (cmd) {
21433         case NPHY_RFSEQ_RX2TX:
21434                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21435                 status_mask = NPHY_RfseqStatus_rx2tx;
21436                 break;
21437         case NPHY_RFSEQ_TX2RX:
21438                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21439                 status_mask = NPHY_RfseqStatus_tx2rx;
21440                 break;
21441         case NPHY_RFSEQ_RESET2RX:
21442                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21443                 status_mask = NPHY_RfseqStatus_reset2rx;
21444                 break;
21445         case NPHY_RFSEQ_UPDATEGAINH:
21446                 trigger_mask = NPHY_RfseqTrigger_updategainh;
21447                 status_mask = NPHY_RfseqStatus_updategainh;
21448                 break;
21449         case NPHY_RFSEQ_UPDATEGAINL:
21450                 trigger_mask = NPHY_RfseqTrigger_updategainl;
21451                 status_mask = NPHY_RfseqStatus_updategainl;
21452                 break;
21453         case NPHY_RFSEQ_UPDATEGAINU:
21454                 trigger_mask = NPHY_RfseqTrigger_updategainu;
21455                 status_mask = NPHY_RfseqStatus_updategainu;
21456                 break;
21457         default:
21458                 return;
21459         }
21460
21461         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21462         or_phy_reg(pi, 0xa1,
21463                    (NPHY_RfseqMode_CoreActv_override |
21464                     NPHY_RfseqMode_Trigger_override));
21465         or_phy_reg(pi, 0xa3, trigger_mask);
21466         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21467         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21468         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21469 }
21470
21471 static void
21472 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21473                                      u8 core_mask, u8 off)
21474 {
21475         u16 rfmxgain = 0, lpfgain = 0;
21476         u16 tgain = 0;
21477
21478         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21479
21480                 switch (cmd) {
21481                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21482                         wlc_phy_rfctrl_override_nphy_rev7(
21483                                 pi, (0x1 << 5),
21484                                 value, core_mask, off,
21485                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21486                         wlc_phy_rfctrl_override_nphy_rev7(
21487                                 pi, (0x1 << 4), value,
21488                                 core_mask, off,
21489                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21490                         wlc_phy_rfctrl_override_nphy_rev7(
21491                                 pi, (0x1 << 3), value,
21492                                 core_mask, off,
21493                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21494                         break;
21495                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21496                         wlc_phy_rfctrl_override_nphy_rev7(
21497                                 pi, (0x1 << 2),
21498                                 value, core_mask, off,
21499                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21500                         wlc_phy_rfctrl_override_nphy_rev7(
21501                                 pi, (0x1 << 1), value,
21502                                 core_mask, off,
21503                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21504                         wlc_phy_rfctrl_override_nphy_rev7(
21505                                 pi, (0x1 << 0), value,
21506                                 core_mask, off,
21507                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21508                         wlc_phy_rfctrl_override_nphy_rev7(
21509                                 pi, (0x1 << 1), value,
21510                                 core_mask, off,
21511                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21512                         wlc_phy_rfctrl_override_nphy_rev7(
21513                                 pi, (0x1 << 11), 0,
21514                                 core_mask, off,
21515                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21516                         break;
21517                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21518                         wlc_phy_rfctrl_override_nphy_rev7(
21519                                 pi, (0x1 << 2),
21520                                 value, core_mask, off,
21521                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21522                         wlc_phy_rfctrl_override_nphy_rev7(
21523                                 pi, (0x1 << 1), value,
21524                                 core_mask, off,
21525                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21526                         wlc_phy_rfctrl_override_nphy_rev7(
21527                                 pi, (0x1 << 0), value,
21528                                 core_mask, off,
21529                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21530                         wlc_phy_rfctrl_override_nphy_rev7(
21531                                 pi, (0x1 << 2), value,
21532                                 core_mask, off,
21533                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21534                         wlc_phy_rfctrl_override_nphy_rev7(
21535                                 pi, (0x1 << 11), 1,
21536                                 core_mask, off,
21537                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21538                         break;
21539                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21540                         rfmxgain = value & 0x000ff;
21541                         lpfgain = value & 0x0ff00;
21542                         lpfgain = lpfgain >> 8;
21543
21544                         wlc_phy_rfctrl_override_nphy_rev7(
21545                                 pi, (0x1 << 11),
21546                                 rfmxgain, core_mask,
21547                                 off,
21548                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21549                         wlc_phy_rfctrl_override_nphy_rev7(
21550                                 pi, (0x3 << 13),
21551                                 lpfgain, core_mask,
21552                                 off,
21553                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21554                         break;
21555                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21556                         tgain = value & 0x7fff;
21557                         lpfgain = value & 0x8000;
21558                         lpfgain = lpfgain >> 14;
21559
21560                         wlc_phy_rfctrl_override_nphy_rev7(
21561                                 pi, (0x1 << 12),
21562                                 tgain, core_mask, off,
21563                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21564                         wlc_phy_rfctrl_override_nphy_rev7(
21565                                 pi, (0x1 << 13),
21566                                 lpfgain, core_mask,
21567                                 off,
21568                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21569                         break;
21570                 }
21571         }
21572 }
21573
21574 static void
21575 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21576                                u8 coresel, u8 rail, u8 rssi_type)
21577 {
21578         u16 valuetostuff;
21579
21580         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21581                  NPHY_RSSICAL_MAXREAD : offset;
21582         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21583                  -NPHY_RSSICAL_MAXREAD - 1 : offset;
21584
21585         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21586
21587         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21588              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21589             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21590                 write_phy_reg(pi, 0x1a6, valuetostuff);
21591
21592         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21593              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21594             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21595                 write_phy_reg(pi, 0x1ac, valuetostuff);
21596
21597         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21598              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21599             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21600                 write_phy_reg(pi, 0x1b2, valuetostuff);
21601
21602         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21603              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21604             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21605                 write_phy_reg(pi, 0x1b8, valuetostuff);
21606
21607         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21608              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21609             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21610                 write_phy_reg(pi, 0x1a4, valuetostuff);
21611
21612         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21613              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21614             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21615                 write_phy_reg(pi, 0x1aa, valuetostuff);
21616
21617         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21618              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21619             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21620                 write_phy_reg(pi, 0x1b0, valuetostuff);
21621
21622         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21623              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21624             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21625                 write_phy_reg(pi, 0x1b6, valuetostuff);
21626
21627         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21628              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21629             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21630                 write_phy_reg(pi, 0x1a5, valuetostuff);
21631         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21632              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21633             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21634                 write_phy_reg(pi, 0x1ab, valuetostuff);
21635
21636         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21637              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21638             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21639                 write_phy_reg(pi, 0x1b1, valuetostuff);
21640
21641         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21642              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21643             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21644                 write_phy_reg(pi, 0x1b7, valuetostuff);
21645
21646         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21647              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21648             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21649                 write_phy_reg(pi, 0x1a7, valuetostuff);
21650         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21651              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21652             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21653                 write_phy_reg(pi, 0x1ad, valuetostuff);
21654         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21655              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21656             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21657                 write_phy_reg(pi, 0x1b3, valuetostuff);
21658         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21659              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21660             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21661                 write_phy_reg(pi, 0x1b9, valuetostuff);
21662
21663         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21664              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21665             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21666                 write_phy_reg(pi, 0x1a8, valuetostuff);
21667
21668         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21669              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21670             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21671                 write_phy_reg(pi, 0x1ae, valuetostuff);
21672
21673         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21674              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21675             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21676                 write_phy_reg(pi, 0x1b4, valuetostuff);
21677
21678         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21679              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21680             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21681                 write_phy_reg(pi, 0x1ba, valuetostuff);
21682
21683         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21684              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21685             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21686                 write_phy_reg(pi, 0x1a9, valuetostuff);
21687         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21688              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21689             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21690                 write_phy_reg(pi, 0x1b5, valuetostuff);
21691
21692         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21693              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21694             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21695                 write_phy_reg(pi, 0x1af, valuetostuff);
21696
21697         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21698              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21699             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21700                 write_phy_reg(pi, 0x1bb, valuetostuff);
21701 }
21702
21703 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21704 {
21705         if (PHY_IPA(pi)) {
21706                 if (NREV_GE(pi->pubpi.phy_rev, 7))
21707                         write_radio_reg(pi,
21708                                         ((core == PHY_CORE_0) ?
21709                                          RADIO_2057_TX0_TX_SSI_MUX :
21710                                          RADIO_2057_TX1_TX_SSI_MUX),
21711                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21712                                         0xc : 0xe));
21713                 else
21714                         write_radio_reg(pi,
21715                                         RADIO_2056_TX_TX_SSI_MUX |
21716                                         ((core == PHY_CORE_0) ?
21717                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21718                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21719                                         0xc : 0xe));
21720         } else {
21721                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21722                         write_radio_reg(pi,
21723                                         ((core == PHY_CORE_0) ?
21724                                          RADIO_2057_TX0_TX_SSI_MUX :
21725                                          RADIO_2057_TX1_TX_SSI_MUX),
21726                                         0x11);
21727
21728                         if (pi->pubpi.radioid == BCM2057_ID)
21729                                 write_radio_reg(pi,
21730                                                 RADIO_2057_IQTEST_SEL_PU, 0x1);
21731
21732                 } else {
21733                         write_radio_reg(pi,
21734                                         RADIO_2056_TX_TX_SSI_MUX |
21735                                         ((core == PHY_CORE_0) ?
21736                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21737                                         0x11);
21738                 }
21739         }
21740 }
21741
21742 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21743 {
21744         u16 mask, val;
21745         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21746             startseq;
21747         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21748             rfctrlovr_trigger_val;
21749         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21750         u16 rfctrlcmd_val, rfctrlovr_val;
21751         u8 core;
21752
21753         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21754                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21755                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21756                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21757
21758                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21759                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21760
21761                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21762                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21763
21764                         mask = (0x1 << 2) |
21765                                (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21766                         mod_phy_reg(pi, 0xf9, mask, 0);
21767                         mod_phy_reg(pi, 0xfb, mask, 0);
21768
21769                 } else {
21770                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21771                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21772                                     && core == PHY_CORE_1)
21773                                         continue;
21774                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21775                                          && core == PHY_CORE_0)
21776                                         continue;
21777
21778                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21779                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
21780
21781                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21782                                     rssi_type == NPHY_RSSI_SEL_W2 ||
21783                                     rssi_type == NPHY_RSSI_SEL_NB) {
21784                                         mod_phy_reg(pi,
21785                                                     (core ==
21786                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
21787                                                     (0x3 << 8), 0);
21788
21789                                         mask = (0x1 << 2) |
21790                                                (0x1 << 3) |
21791                                                (0x1 << 4) | (0x1 << 5);
21792                                         mod_phy_reg(pi,
21793                                                     (core ==
21794                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21795                                                     mask, 0);
21796
21797                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
21798                                                 if (CHSPEC_IS5G(
21799                                                           pi->radio_chanspec)) {
21800                                                         mask = (0x1 << 2);
21801                                                         val = 1 << 2;
21802                                                 } else {
21803                                                         mask = (0x1 << 3);
21804                                                         val = 1 << 3;
21805                                                 }
21806                                         } else if (rssi_type ==
21807                                                    NPHY_RSSI_SEL_W2) {
21808                                                 mask = (0x1 << 4);
21809                                                 val = 1 << 4;
21810                                         } else {
21811                                                 mask = (0x1 << 5);
21812                                                 val = 1 << 5;
21813                                         }
21814                                         mod_phy_reg(pi,
21815                                                     (core ==
21816                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21817                                                     mask, val);
21818
21819                                         mask = (0x1 << 5);
21820                                         val = 1 << 5;
21821                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
21822                                                     0xe5 : 0xe6, mask, val);
21823                                 } else {
21824                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
21825                                                 mask = (0x3 << 8);
21826                                                 val = 1 << 8;
21827                                                 mod_phy_reg(pi,
21828                                                             (core ==
21829                                                              PHY_CORE_0) ? 0xa6
21830                                                             : 0xa7, mask, val);
21831                                                 mask = (0x3 << 10);
21832                                                 val = 1 << 10;
21833                                                 mod_phy_reg(pi,
21834                                                             (core ==
21835                                                              PHY_CORE_0) ? 0xa6
21836                                                             : 0xa7, mask, val);
21837                                         } else if (rssi_type ==
21838                                                    NPHY_RSSI_SEL_IQ) {
21839                                                 mask = (0x3 << 8);
21840                                                 val = 2 << 8;
21841                                                 mod_phy_reg(pi,
21842                                                             (core ==
21843                                                              PHY_CORE_0) ? 0xa6
21844                                                             : 0xa7, mask, val);
21845                                                 mask = (0x3 << 10);
21846                                                 val = 2 << 10;
21847                                                 mod_phy_reg(pi,
21848                                                             (core ==
21849                                                              PHY_CORE_0) ? 0xa6
21850                                                             : 0xa7, mask, val);
21851                                         } else {
21852                                                 mask = (0x3 << 8);
21853                                                 val = 3 << 8;
21854                                                 mod_phy_reg(pi,
21855                                                             (core ==
21856                                                              PHY_CORE_0) ? 0xa6
21857                                                             : 0xa7, mask, val);
21858                                                 mask = (0x3 << 10);
21859                                                 val = 3 << 10;
21860                                                 mod_phy_reg(pi,
21861                                                             (core ==
21862                                                              PHY_CORE_0) ? 0xa6
21863                                                             : 0xa7, mask, val);
21864                                                 brcms_phy_wr_tx_mux(pi, core);
21865                                                 afectrlovr_rssi_val = 1 << 9;
21866                                                 mod_phy_reg(pi,
21867                                                            (core ==
21868                                                             PHY_CORE_0) ? 0x8f
21869                                                            : 0xa5, (0x1 << 9),
21870                                                            afectrlovr_rssi_val);
21871                                         }
21872                                 }
21873                         }
21874                 }
21875         } else {
21876
21877                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21878                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21879                     (rssi_type == NPHY_RSSI_SEL_NB))
21880                         val = 0x0;
21881                 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21882                         val = 0x1;
21883                 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21884                         val = 0x2;
21885                 else
21886                         val = 0x3;
21887
21888                 mask = ((0x3 << 12) | (0x3 << 14));
21889                 val = (val << 12) | (val << 14);
21890                 mod_phy_reg(pi, 0xa6, mask, val);
21891                 mod_phy_reg(pi, 0xa7, mask, val);
21892
21893                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21894                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21895                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21896                         if (rssi_type == NPHY_RSSI_SEL_W1)
21897                                 val = 0x1;
21898                         if (rssi_type == NPHY_RSSI_SEL_W2)
21899                                 val = 0x2;
21900                         if (rssi_type == NPHY_RSSI_SEL_NB)
21901                                 val = 0x3;
21902
21903                         mask = (0x3 << 4);
21904                         val = (val << 4);
21905                         mod_phy_reg(pi, 0x7a, mask, val);
21906                         mod_phy_reg(pi, 0x7d, mask, val);
21907                 }
21908
21909                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21910                         afectrlovr_rssi_val = 0;
21911                         rfctrlcmd_rxen_val = 0;
21912                         rfctrlcmd_coresel_val = 0;
21913                         rfctrlovr_rssi_val = 0;
21914                         rfctrlovr_rxen_val = 0;
21915                         rfctrlovr_coresel_val = 0;
21916                         rfctrlovr_trigger_val = 0;
21917                         startseq = 0;
21918                 } else {
21919                         afectrlovr_rssi_val = 1;
21920                         rfctrlcmd_rxen_val = 1;
21921                         rfctrlcmd_coresel_val = core_code;
21922                         rfctrlovr_rssi_val = 1;
21923                         rfctrlovr_rxen_val = 1;
21924                         rfctrlovr_coresel_val = 1;
21925                         rfctrlovr_trigger_val = 1;
21926                         startseq = 1;
21927                 }
21928
21929                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21930                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21931                                        12) | (afectrlovr_rssi_val << 13);
21932                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21933                             afectrlovr_rssi_val);
21934
21935                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21936                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21937                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21938                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21939                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21940                                         (rfctrlcmd_coresel_val << 3);
21941
21942                         rfctrlovr_mask = ((0x1 << 5) |
21943                                           (0x1 << 12) |
21944                                           (0x1 << 1) | (0x1 << 0));
21945                         rfctrlovr_val = (rfctrlovr_rssi_val <<
21946                                          5) |
21947                                         (rfctrlovr_rxen_val << 12) |
21948                                         (rfctrlovr_coresel_val << 1) |
21949                                         (rfctrlovr_trigger_val << 0);
21950
21951                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21952                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21953
21954                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21955                         udelay(20);
21956
21957                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21958                 }
21959         }
21960 }
21961
21962 int
21963 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21964                        u8 nsamps)
21965 {
21966         s16 rssi0, rssi1;
21967         u16 afectrlCore1_save = 0;
21968         u16 afectrlCore2_save = 0;
21969         u16 afectrlOverride1_save = 0;
21970         u16 afectrlOverride2_save = 0;
21971         u16 rfctrlOverrideAux0_save = 0;
21972         u16 rfctrlOverrideAux1_save = 0;
21973         u16 rfctrlMiscReg1_save = 0;
21974         u16 rfctrlMiscReg2_save = 0;
21975         u16 rfctrlcmd_save = 0;
21976         u16 rfctrloverride_save = 0;
21977         u16 rfctrlrssiothers1_save = 0;
21978         u16 rfctrlrssiothers2_save = 0;
21979         s8 tmp_buf[4];
21980         u8 ctr = 0, samp = 0;
21981         s32 rssi_out_val;
21982         u16 gpiosel_orig;
21983
21984         afectrlCore1_save = read_phy_reg(pi, 0xa6);
21985         afectrlCore2_save = read_phy_reg(pi, 0xa7);
21986         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21987                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21988                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21989                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21990                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21991                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21992                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21993         } else {
21994                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21995                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21996                 rfctrloverride_save = read_phy_reg(pi, 0xec);
21997                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21998                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21999         }
22000
22001         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22002
22003         gpiosel_orig = read_phy_reg(pi, 0xca);
22004         if (NREV_LT(pi->pubpi.phy_rev, 2))
22005                 write_phy_reg(pi, 0xca, 5);
22006
22007         for (ctr = 0; ctr < 4; ctr++)
22008                 rssi_buf[ctr] = 0;
22009
22010         for (samp = 0; samp < nsamps; samp++) {
22011                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
22012                         rssi0 = read_phy_reg(pi, 0x1c9);
22013                         rssi1 = read_phy_reg(pi, 0x1ca);
22014                 } else {
22015                         rssi0 = read_phy_reg(pi, 0x219);
22016                         rssi1 = read_phy_reg(pi, 0x21a);
22017                 }
22018
22019                 ctr = 0;
22020                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
22021                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
22022                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
22023                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
22024
22025                 for (ctr = 0; ctr < 4; ctr++)
22026                         rssi_buf[ctr] += tmp_buf[ctr];
22027
22028         }
22029
22030         rssi_out_val = rssi_buf[3] & 0xff;
22031         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
22032         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
22033         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
22034
22035         if (NREV_LT(pi->pubpi.phy_rev, 2))
22036                 write_phy_reg(pi, 0xca, gpiosel_orig);
22037
22038         write_phy_reg(pi, 0xa6, afectrlCore1_save);
22039         write_phy_reg(pi, 0xa7, afectrlCore2_save);
22040         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22041                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
22042                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
22043                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
22044                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22045                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
22046                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
22047         } else {
22048                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
22049                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
22050                 write_phy_reg(pi, 0xec, rfctrloverride_save);
22051                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
22052                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
22053         }
22054
22055         return rssi_out_val;
22056 }
22057
22058 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
22059 {
22060         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
22061         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
22062         u16 pwrdet_rxtx_core1_save;
22063         u16 pwrdet_rxtx_core2_save;
22064         u16 afectrlCore1_save;
22065         u16 afectrlCore2_save;
22066         u16 afectrlOverride_save;
22067         u16 afectrlOverride2_save;
22068         u16 pd_pll_ts_save;
22069         u16 gpioSel_save;
22070         s32 radio_temp[4];
22071         s32 radio_temp2[4];
22072         u16 syn_tempprocsense_save;
22073         s16 offset = 0;
22074
22075         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22076                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
22077                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
22078                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
22079                 s32 auxADC_Vl;
22080                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
22081                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
22082                 u16 RSSIMultCoef0QPowerDet_save;
22083                 u16 tempsense_Rcal;
22084
22085                 syn_tempprocsense_save =
22086                         read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22087
22088                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22089                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22090                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22091                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22092                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22093                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22094                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22095                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22096                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22097
22098                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22099                                         &auxADC_Vmid_save);
22100                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22101                                         &auxADC_Av_save);
22102                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22103                                         &auxADC_rssi_ctrlL_save);
22104                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22105                                         &auxADC_rssi_ctrlH_save);
22106
22107                 write_phy_reg(pi, 0x1ae, 0x0);
22108
22109                 auxADC_rssi_ctrlL = 0x0;
22110                 auxADC_rssi_ctrlH = 0x20;
22111                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22112                                          &auxADC_rssi_ctrlL);
22113                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22114                                          &auxADC_rssi_ctrlH);
22115
22116                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22117
22118                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22119                                 tempsense_Rcal | 0x01);
22120
22121                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22122                                                   1, 0, 0,
22123                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
22124                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22125                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22126                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22127                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22128
22129                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22130                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22131                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22132                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22133                 udelay(5);
22134                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22135                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22136                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22137                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22138                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22139                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22140                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22141                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22142                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22143                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22144
22145                 auxADC_Vmid = 0xA3;
22146                 auxADC_Av = 0x0;
22147                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22148                                          &auxADC_Vmid);
22149                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22150                                          &auxADC_Av);
22151
22152                 udelay(3);
22153
22154                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22155                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22156                                 tempsense_Rcal | 0x03);
22157
22158                 udelay(5);
22159                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22160
22161                 auxADC_Av = 0x7;
22162                 if (radio_temp[1] + radio_temp2[1] < -30) {
22163                         auxADC_Vmid = 0x45;
22164                         auxADC_Vl = 263;
22165                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22166                         auxADC_Vmid = 0x200;
22167                         auxADC_Vl = 467;
22168                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22169                         auxADC_Vmid = 0x266;
22170                         auxADC_Vl = 634;
22171                 } else {
22172                         auxADC_Vmid = 0x2D5;
22173                         auxADC_Vl = 816;
22174                 }
22175
22176                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22177                                          &auxADC_Vmid);
22178                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22179                                          &auxADC_Av);
22180
22181                 udelay(3);
22182
22183                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22184                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22185                                 tempsense_Rcal | 0x01);
22186
22187                 udelay(5);
22188                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22189
22190                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22191                                 syn_tempprocsense_save);
22192
22193                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22194                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22195                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22196                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22197                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22198                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22199                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22200                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22201                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22202
22203                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22204                                          &auxADC_Vmid_save);
22205                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22206                                          &auxADC_Av_save);
22207                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22208                                          &auxADC_rssi_ctrlL_save);
22209                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22210                                          &auxADC_rssi_ctrlH_save);
22211
22212                 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22213                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22214                                          + 88 * (auxADC_Vl) - 27111 +
22215                                          128) / 256;
22216                 } else {
22217                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22218                                          + 82 * (auxADC_Vl) - 28861 +
22219                                          128) / 256;
22220                 }
22221
22222                 offset = (s16) pi->phy_tempsense_offset;
22223
22224         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22225                 syn_tempprocsense_save =
22226                         read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22227
22228                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22229                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22230                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22231                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22232                 gpioSel_save = read_phy_reg(pi, 0xca);
22233
22234                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22235
22236                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22237                 if (NREV_LT(pi->pubpi.phy_rev, 7))
22238                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22239
22240                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22241                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22242                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22243                 else
22244                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22245
22246                 radio_temp[0] =
22247                         (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22248
22249                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22250                                 syn_tempprocsense_save);
22251
22252                 write_phy_reg(pi, 0xca, gpioSel_save);
22253                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22254                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22255                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22256                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22257
22258                 offset = (s16) pi->phy_tempsense_offset;
22259         } else {
22260
22261                 pwrdet_rxtx_core1_save =
22262                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22263                 pwrdet_rxtx_core2_save =
22264                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22265                 core1_txrf_iqcal1_save =
22266                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22267                 core1_txrf_iqcal2_save =
22268                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22269                 core2_txrf_iqcal1_save =
22270                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22271                 core2_txrf_iqcal2_save =
22272                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22273                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22274
22275                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22276                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22277                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22278                 gpioSel_save = read_phy_reg(pi, 0xca);
22279
22280                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22281                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22282                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22283                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22284                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22285                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22286                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22287
22288                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22289                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22290
22291                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22292                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22293
22294                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22295                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22296
22297                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22298                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22299                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22300                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22301
22302                 radio_temp[0] =
22303                         (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22304                          radio_temp[3]);
22305
22306                 radio_temp[0] =
22307                         (radio_temp[0] +
22308                          (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22309
22310                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22311
22312                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22313                                 pwrdet_rxtx_core1_save);
22314                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22315                                 pwrdet_rxtx_core2_save);
22316                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22317                                 core1_txrf_iqcal1_save);
22318                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22319                                 core2_txrf_iqcal1_save);
22320                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22321                                 core1_txrf_iqcal2_save);
22322                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22323                                 core2_txrf_iqcal2_save);
22324                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22325
22326                 write_phy_reg(pi, 0xca, gpioSel_save);
22327                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22328                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22329                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22330         }
22331
22332         return (s16) radio_temp[0] + offset;
22333 }
22334
22335 static void
22336 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22337 {
22338         u8 core;
22339
22340         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22341                 if (rssi_type == NPHY_RSSI_SEL_NB) {
22342                         if (core == PHY_CORE_0) {
22343                                 mod_radio_reg(pi,
22344                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
22345                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22346                                               vcm_buf[2 *
22347                                                       core] <<
22348                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22349                                 mod_radio_reg(pi,
22350                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22351                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22352                                               vcm_buf[2 * core +
22353                                                       1] <<
22354                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22355                         } else {
22356                                 mod_radio_reg(pi,
22357                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
22358                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22359                                               vcm_buf[2 *
22360                                                       core] <<
22361                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22362                                 mod_radio_reg(pi,
22363                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22364                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22365                                               vcm_buf[2 * core +
22366                                                       1] <<
22367                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22368                         }
22369                 } else {
22370                         if (core == PHY_CORE_0)
22371                                 mod_radio_reg(pi,
22372                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22373                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22374                                               vcm_buf[2 *
22375                                                       core] <<
22376                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22377                         else
22378                                 mod_radio_reg(pi,
22379                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22380                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22381                                               vcm_buf[2 *
22382                                                       core] <<
22383                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22384                 }
22385         }
22386 }
22387
22388 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22389 {
22390         u16 classif_state;
22391         u16 clip_state[2];
22392         u16 clip_off[] = { 0xffff, 0xffff };
22393         s32 target_code;
22394         u8 vcm, min_vcm;
22395         u8 vcm_final = 0;
22396         u8 result_idx;
22397         s32 poll_results[8][4] = {
22398                 {0, 0, 0, 0},
22399                 {0, 0, 0, 0},
22400                 {0, 0, 0, 0},
22401                 {0, 0, 0, 0},
22402                 {0, 0, 0, 0},
22403                 {0, 0, 0, 0},
22404                 {0, 0, 0, 0},
22405                 {0, 0, 0, 0}
22406         };
22407         s32 poll_result_core[4] = { 0, 0, 0, 0 };
22408         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22409         s32 fine_digital_offset[4];
22410         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22411         s32 min_poll;
22412         u8 vcm_level_max;
22413         u8 core;
22414         u8 wb_cnt;
22415         u8 rssi_type;
22416         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22417         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22418         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22419         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22420         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22421         u16 NPHY_RfctrlCmd_save;
22422         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22423         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22424         u8 rxcore_state;
22425         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22426         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22427         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22428         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22429
22430         NPHY_REV7_RfctrlOverride3_save =
22431                 NPHY_REV7_RfctrlOverride4_save =
22432                 NPHY_REV7_RfctrlOverride5_save =
22433                 NPHY_REV7_RfctrlOverride6_save =
22434                 NPHY_REV7_RfctrlMiscReg3_save =
22435                 NPHY_REV7_RfctrlMiscReg4_save =
22436                 NPHY_REV7_RfctrlMiscReg5_save =
22437                 NPHY_REV7_RfctrlMiscReg6_save = 0;
22438
22439         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22440         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22441         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22442         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22443
22444         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22445         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22446         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22447         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22448         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22449         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22450         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22451         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22452         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22453                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22454                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22455                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22456                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22457         }
22458         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22459         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22460         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22461         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22462         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22463         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22464                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22465                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22466                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22467                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22468         }
22469         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22470         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22471
22472         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22473                                          RADIO_MIMO_CORESEL_ALLRXTX);
22474         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22475                                          RADIO_MIMO_CORESEL_ALLRXTX);
22476
22477         if (NREV_GE(pi->pubpi.phy_rev, 7))
22478                 wlc_phy_rfctrl_override_1tomany_nphy(
22479                         pi,
22480                         NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22481                         0, 0, 0);
22482         else
22483                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22484
22485         if (NREV_GE(pi->pubpi.phy_rev, 7))
22486                 wlc_phy_rfctrl_override_1tomany_nphy(
22487                         pi,
22488                         NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22489                         1, 0, 0);
22490         else
22491                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22492
22493         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22494                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22495                                                   1, 0, 0,
22496                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22497                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22498                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22499         } else {
22500                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22501                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22502         }
22503
22504         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22505                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22506                         wlc_phy_rfctrl_override_nphy_rev7(
22507                                 pi, (0x1 << 5),
22508                                 0, 0, 0,
22509                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22510                         wlc_phy_rfctrl_override_nphy_rev7(
22511                                 pi, (0x1 << 4), 1, 0,
22512                                 0,
22513                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22514                 } else {
22515                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22516                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22517                 }
22518
22519         } else {
22520                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22521                         wlc_phy_rfctrl_override_nphy_rev7(
22522                                 pi, (0x1 << 4),
22523                                 0, 0, 0,
22524                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22525                         wlc_phy_rfctrl_override_nphy_rev7(
22526                                 pi, (0x1 << 5), 1, 0,
22527                                 0,
22528                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22529                 } else {
22530                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22531                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22532                 }
22533         }
22534
22535         rxcore_state = wlc_phy_rxcore_getstate_nphy(
22536                 (struct brcms_phy_pub *) pi);
22537
22538         vcm_level_max = 8;
22539
22540         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22541
22542                 if ((rxcore_state & (1 << core)) == 0)
22543                         continue;
22544
22545                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22546                                                core ==
22547                                                PHY_CORE_0 ?
22548                                                RADIO_MIMO_CORESEL_CORE1 :
22549                                                RADIO_MIMO_CORESEL_CORE2,
22550                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22551                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22552                                                core ==
22553                                                PHY_CORE_0 ?
22554                                                RADIO_MIMO_CORESEL_CORE1 :
22555                                                RADIO_MIMO_CORESEL_CORE2,
22556                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22557
22558                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22559                         if (NREV_GE(pi->pubpi.phy_rev, 7))
22560                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22561                                               RADIO_2057_NB_MASTER_CORE0 :
22562                                               RADIO_2057_NB_MASTER_CORE1,
22563                                               RADIO_2057_VCM_MASK, vcm);
22564                         else
22565                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22566                                               ((core ==
22567                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
22568                                                RADIO_2056_RX1),
22569                                               RADIO_2056_VCM_MASK,
22570                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
22571
22572                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22573                                                &poll_results[vcm][0],
22574                                                NPHY_RSSICAL_NPOLL);
22575                 }
22576
22577                 for (result_idx = 0; result_idx < 4; result_idx++) {
22578                         if ((core == result_idx / 2) &&
22579                             (result_idx % 2 == 0)) {
22580
22581                                 min_d = NPHY_RSSICAL_MAXD;
22582                                 min_vcm = 0;
22583                                 min_poll =
22584                                         NPHY_RSSICAL_MAXREAD *
22585                                         NPHY_RSSICAL_NPOLL + 1;
22586                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22587                                         curr_d =
22588                                                 poll_results[vcm][result_idx] *
22589                                                 poll_results[vcm][result_idx] +
22590                                                 poll_results[vcm][result_idx +
22591                                                                   1] *
22592                                                 poll_results[vcm][result_idx +
22593                                                                   1];
22594                                         if (curr_d < min_d) {
22595                                                 min_d = curr_d;
22596                                                 min_vcm = vcm;
22597                                         }
22598                                         if (poll_results[vcm][result_idx] <
22599                                             min_poll)
22600                                                 min_poll =
22601                                                         poll_results[vcm]
22602                                                         [result_idx];
22603                                 }
22604                                 vcm_final = min_vcm;
22605                                 poll_results_min[result_idx] = min_poll;
22606                         }
22607                 }
22608
22609                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22610                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
22611                                       RADIO_2057_NB_MASTER_CORE0 :
22612                                       RADIO_2057_NB_MASTER_CORE1,
22613                                       RADIO_2057_VCM_MASK, vcm_final);
22614                 else
22615                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22616                                       ((core ==
22617                                         PHY_CORE_0) ? RADIO_2056_RX0 :
22618                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22619                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22620
22621                 for (result_idx = 0; result_idx < 4; result_idx++) {
22622                         if (core == result_idx / 2) {
22623                                 fine_digital_offset[result_idx] =
22624                                         (NPHY_RSSICAL_NB_TARGET *
22625                                          NPHY_RSSICAL_NPOLL) -
22626                                         poll_results[vcm_final][result_idx];
22627                                 if (fine_digital_offset[result_idx] < 0) {
22628                                         fine_digital_offset[result_idx] =
22629                                                 abs(fine_digital_offset
22630                                                     [result_idx]);
22631                                         fine_digital_offset[result_idx] +=
22632                                                 (NPHY_RSSICAL_NPOLL / 2);
22633                                         fine_digital_offset[result_idx] /=
22634                                                 NPHY_RSSICAL_NPOLL;
22635                                         fine_digital_offset[result_idx] =
22636                                                 -fine_digital_offset[
22637                                                                     result_idx];
22638                                 } else {
22639                                         fine_digital_offset[result_idx] +=
22640                                                 (NPHY_RSSICAL_NPOLL / 2);
22641                                         fine_digital_offset[result_idx] /=
22642                                                 NPHY_RSSICAL_NPOLL;
22643                                 }
22644
22645                                 if (poll_results_min[result_idx] ==
22646                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22647                                         fine_digital_offset[result_idx] =
22648                                                 (NPHY_RSSICAL_NB_TARGET -
22649                                                  NPHY_RSSICAL_MAXREAD - 1);
22650
22651                                 wlc_phy_scale_offset_rssi_nphy(
22652                                         pi, 0x0,
22653                                         (s8)
22654                                         fine_digital_offset
22655                                         [result_idx],
22656                                         (result_idx / 2 == 0) ?
22657                                         RADIO_MIMO_CORESEL_CORE1 :
22658                                         RADIO_MIMO_CORESEL_CORE2,
22659                                         (result_idx % 2 == 0) ?
22660                                         NPHY_RAIL_I : NPHY_RAIL_Q,
22661                                         NPHY_RSSI_SEL_NB);
22662                         }
22663                 }
22664
22665         }
22666
22667         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22668
22669                 if ((rxcore_state & (1 << core)) == 0)
22670                         continue;
22671
22672                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22673                         if (wb_cnt == 0) {
22674                                 rssi_type = NPHY_RSSI_SEL_W1;
22675                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22676                         } else {
22677                                 rssi_type = NPHY_RSSI_SEL_W2;
22678                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22679                         }
22680
22681                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22682                                                        core ==
22683                                                        PHY_CORE_0 ?
22684                                                        RADIO_MIMO_CORESEL_CORE1
22685                                                        :
22686                                                        RADIO_MIMO_CORESEL_CORE2,
22687                                                        NPHY_RAIL_I, rssi_type);
22688                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22689                                                        core ==
22690                                                        PHY_CORE_0 ?
22691                                                        RADIO_MIMO_CORESEL_CORE1
22692                                                        :
22693                                                        RADIO_MIMO_CORESEL_CORE2,
22694                                                        NPHY_RAIL_Q, rssi_type);
22695
22696                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22697                                                NPHY_RSSICAL_NPOLL);
22698
22699                         for (result_idx = 0; result_idx < 4; result_idx++) {
22700                                 if (core == result_idx / 2) {
22701                                         fine_digital_offset[result_idx] =
22702                                                 (target_code *
22703                                                  NPHY_RSSICAL_NPOLL) -
22704                                                 poll_result_core[result_idx];
22705                                         if (fine_digital_offset[result_idx] <
22706                                             0) {
22707                                                 fine_digital_offset[result_idx]
22708                                                         = abs(
22709                                                             fine_digital_offset
22710                                                             [result_idx]);
22711                                                 fine_digital_offset[result_idx]
22712                                                         += (NPHY_RSSICAL_NPOLL
22713                                                             / 2);
22714                                                 fine_digital_offset[result_idx]
22715                                                         /= NPHY_RSSICAL_NPOLL;
22716                                                 fine_digital_offset[result_idx]
22717                                                         = -fine_digital_offset
22718                                                                 [result_idx];
22719                                         } else {
22720                                                 fine_digital_offset[result_idx]
22721                                                         += (NPHY_RSSICAL_NPOLL
22722                                                             / 2);
22723                                                 fine_digital_offset[result_idx]
22724                                                         /= NPHY_RSSICAL_NPOLL;
22725                                         }
22726
22727                                         wlc_phy_scale_offset_rssi_nphy(
22728                                                 pi, 0x0,
22729                                                 (s8)
22730                                                 fine_digital_offset
22731                                                 [core *
22732                                                  2],
22733                                                 (core == PHY_CORE_0) ?
22734                                                 RADIO_MIMO_CORESEL_CORE1 :
22735                                                 RADIO_MIMO_CORESEL_CORE2,
22736                                                 (result_idx % 2 == 0) ?
22737                                                 NPHY_RAIL_I :
22738                                                 NPHY_RAIL_Q,
22739                                                 rssi_type);
22740                                 }
22741                         }
22742
22743                 }
22744         }
22745
22746         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22747         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22748
22749         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22750
22751         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22752         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22753         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22754
22755         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22756         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22757         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22758
22759         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22760         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22761         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22762         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22763         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22764         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22765         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22766                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22767                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22768                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22769                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22770         }
22771         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22772         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22773         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22774         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22775         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22776         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22777                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22778                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22779                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22780                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22781         }
22782         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22783         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22784
22785         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22786                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22787                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22788                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22789                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22790                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22791                 } else {
22792                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22793                                 read_radio_reg(pi,
22794                                                RADIO_2056_RX_RSSI_MISC |
22795                                                RADIO_2056_RX0);
22796                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22797                                 read_radio_reg(pi,
22798                                                RADIO_2056_RX_RSSI_MISC |
22799                                                RADIO_2056_RX1);
22800                 }
22801
22802                 pi->rssical_cache.rssical_phyregs_2G[0] =
22803                         read_phy_reg(pi, 0x1a6);
22804                 pi->rssical_cache.rssical_phyregs_2G[1] =
22805                         read_phy_reg(pi, 0x1ac);
22806                 pi->rssical_cache.rssical_phyregs_2G[2] =
22807                         read_phy_reg(pi, 0x1b2);
22808                 pi->rssical_cache.rssical_phyregs_2G[3] =
22809                         read_phy_reg(pi, 0x1b8);
22810                 pi->rssical_cache.rssical_phyregs_2G[4] =
22811                         read_phy_reg(pi, 0x1a4);
22812                 pi->rssical_cache.rssical_phyregs_2G[5] =
22813                         read_phy_reg(pi, 0x1aa);
22814                 pi->rssical_cache.rssical_phyregs_2G[6] =
22815                         read_phy_reg(pi, 0x1b0);
22816                 pi->rssical_cache.rssical_phyregs_2G[7] =
22817                         read_phy_reg(pi, 0x1b6);
22818                 pi->rssical_cache.rssical_phyregs_2G[8] =
22819                         read_phy_reg(pi, 0x1a5);
22820                 pi->rssical_cache.rssical_phyregs_2G[9] =
22821                         read_phy_reg(pi, 0x1ab);
22822                 pi->rssical_cache.rssical_phyregs_2G[10] =
22823                         read_phy_reg(pi, 0x1b1);
22824                 pi->rssical_cache.rssical_phyregs_2G[11] =
22825                         read_phy_reg(pi, 0x1b7);
22826
22827                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22828         } else {
22829                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22830                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22831                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22832                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22833                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22834                 } else {
22835                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22836                                 read_radio_reg(pi,
22837                                                RADIO_2056_RX_RSSI_MISC |
22838                                                RADIO_2056_RX0);
22839                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22840                                 read_radio_reg(pi,
22841                                                RADIO_2056_RX_RSSI_MISC |
22842                                                RADIO_2056_RX1);
22843                 }
22844
22845                 pi->rssical_cache.rssical_phyregs_5G[0] =
22846                         read_phy_reg(pi, 0x1a6);
22847                 pi->rssical_cache.rssical_phyregs_5G[1] =
22848                         read_phy_reg(pi, 0x1ac);
22849                 pi->rssical_cache.rssical_phyregs_5G[2] =
22850                         read_phy_reg(pi, 0x1b2);
22851                 pi->rssical_cache.rssical_phyregs_5G[3] =
22852                         read_phy_reg(pi, 0x1b8);
22853                 pi->rssical_cache.rssical_phyregs_5G[4] =
22854                         read_phy_reg(pi, 0x1a4);
22855                 pi->rssical_cache.rssical_phyregs_5G[5] =
22856                         read_phy_reg(pi, 0x1aa);
22857                 pi->rssical_cache.rssical_phyregs_5G[6] =
22858                         read_phy_reg(pi, 0x1b0);
22859                 pi->rssical_cache.rssical_phyregs_5G[7] =
22860                         read_phy_reg(pi, 0x1b6);
22861                 pi->rssical_cache.rssical_phyregs_5G[8] =
22862                         read_phy_reg(pi, 0x1a5);
22863                 pi->rssical_cache.rssical_phyregs_5G[9] =
22864                         read_phy_reg(pi, 0x1ab);
22865                 pi->rssical_cache.rssical_phyregs_5G[10] =
22866                         read_phy_reg(pi, 0x1b1);
22867                 pi->rssical_cache.rssical_phyregs_5G[11] =
22868                         read_phy_reg(pi, 0x1b7);
22869
22870                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22871         }
22872
22873         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22874         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22875 }
22876
22877 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22878 {
22879         s32 target_code;
22880         u16 classif_state;
22881         u16 clip_state[2];
22882         u16 rssi_ctrl_state[2], pd_state[2];
22883         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22884         u16 rfctrlintc_override_val;
22885         u16 clip_off[] = { 0xffff, 0xffff };
22886         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22887         u8 vcm, min_vcm, vcm_tmp[4];
22888         u8 vcm_final[4] = { 0, 0, 0, 0 };
22889         u8 result_idx, ctr;
22890         s32 poll_results[4][4] = {
22891                 {0, 0, 0, 0},
22892                 {0, 0, 0, 0},
22893                 {0, 0, 0, 0},
22894                 {0, 0, 0, 0}
22895         };
22896         s32 poll_miniq[4][2] = {
22897                 {0, 0},
22898                 {0, 0},
22899                 {0, 0},
22900                 {0, 0}
22901         };
22902         s32 min_d, curr_d;
22903         s32 fine_digital_offset[4];
22904         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22905         s32 min_poll;
22906
22907         switch (rssi_type) {
22908         case NPHY_RSSI_SEL_NB:
22909                 target_code = NPHY_RSSICAL_NB_TARGET;
22910                 break;
22911         case NPHY_RSSI_SEL_W1:
22912                 target_code = NPHY_RSSICAL_W1_TARGET;
22913                 break;
22914         case NPHY_RSSI_SEL_W2:
22915                 target_code = NPHY_RSSICAL_W2_TARGET;
22916                 break;
22917         default:
22918                 return;
22919         }
22920
22921         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22922         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22923         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22924         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22925
22926         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22927         rfctrlintc_override_val =
22928                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22929
22930         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22931         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22932         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22933         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22934
22935         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22936         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22937         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22938         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22939
22940         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22941                   RADIO_2055_WBRSSI_G2_PD;
22942         pd_state[0] =
22943                 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22944         pd_state[1] =
22945                 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22946         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22947         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22948         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22949                          RADIO_2055_WBRSSI_G2_SEL;
22950         rssi_ctrl_state[0] =
22951                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22952         rssi_ctrl_state[1] =
22953                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22954         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22955
22956         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22957                                        NPHY_RAIL_I, rssi_type);
22958         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22959                                        NPHY_RAIL_Q, rssi_type);
22960
22961         for (vcm = 0; vcm < 4; vcm++) {
22962
22963                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22964                 if (rssi_type != NPHY_RSSI_SEL_W2)
22965                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22966
22967                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22968                                        NPHY_RSSICAL_NPOLL);
22969
22970                 if ((rssi_type == NPHY_RSSI_SEL_W1)
22971                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
22972                         for (ctr = 0; ctr < 2; ctr++)
22973                                 poll_miniq[vcm][ctr] =
22974                                         min(poll_results[vcm][ctr * 2 + 0],
22975                                             poll_results[vcm][ctr * 2 + 1]);
22976                 }
22977         }
22978
22979         for (result_idx = 0; result_idx < 4; result_idx++) {
22980                 min_d = NPHY_RSSICAL_MAXD;
22981                 min_vcm = 0;
22982                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22983                 for (vcm = 0; vcm < 4; vcm++) {
22984                         curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22985                                       poll_results[vcm][result_idx] :
22986                                       poll_miniq[vcm][result_idx / 2]) -
22987                                      (target_code * NPHY_RSSICAL_NPOLL));
22988                         if (curr_d < min_d) {
22989                                 min_d = curr_d;
22990                                 min_vcm = vcm;
22991                         }
22992                         if (poll_results[vcm][result_idx] < min_poll)
22993                                 min_poll = poll_results[vcm][result_idx];
22994                 }
22995                 vcm_final[result_idx] = min_vcm;
22996                 poll_results_min[result_idx] = min_poll;
22997         }
22998
22999         if (rssi_type != NPHY_RSSI_SEL_W2)
23000                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
23001
23002         for (result_idx = 0; result_idx < 4; result_idx++) {
23003                 fine_digital_offset[result_idx] =
23004                         (target_code * NPHY_RSSICAL_NPOLL) -
23005                         poll_results[vcm_final[result_idx]][result_idx];
23006                 if (fine_digital_offset[result_idx] < 0) {
23007                         fine_digital_offset[result_idx] =
23008                                 abs(fine_digital_offset[result_idx]);
23009                         fine_digital_offset[result_idx] +=
23010                                 (NPHY_RSSICAL_NPOLL / 2);
23011                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23012                         fine_digital_offset[result_idx] =
23013                                 -fine_digital_offset[result_idx];
23014                 } else {
23015                         fine_digital_offset[result_idx] +=
23016                                 (NPHY_RSSICAL_NPOLL / 2);
23017                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
23018                 }
23019
23020                 if (poll_results_min[result_idx] ==
23021                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
23022                         fine_digital_offset[result_idx] =
23023                                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
23024
23025                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
23026                                                (s8)
23027                                                fine_digital_offset[result_idx],
23028                                                (result_idx / 2 ==
23029                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
23030                                                RADIO_MIMO_CORESEL_CORE2,
23031                                                (result_idx % 2 ==
23032                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
23033                                                rssi_type);
23034         }
23035
23036         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
23037         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
23038         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
23039                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23040                                      NPHY_RSSI_SEL_NB);
23041         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
23042                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23043                                      NPHY_RSSI_SEL_W1);
23044         else /* RADIO_2055_WBRSSI_G2_SEL */
23045                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
23046                                      NPHY_RSSI_SEL_W2);
23047         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
23048                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23049                                      NPHY_RSSI_SEL_NB);
23050         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
23051                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23052                                      NPHY_RSSI_SEL_W1);
23053         else /* RADIO_2055_WBRSSI_G1_SEL */
23054                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
23055                                      NPHY_RSSI_SEL_W2);
23056         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
23057
23058         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
23059         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
23060         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
23061         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
23062
23063         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
23064         wlc_phy_clip_det_nphy(pi, 1, clip_state);
23065
23066         wlc_phy_resetcca_nphy(pi);
23067 }
23068
23069 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
23070 {
23071         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23072                 wlc_phy_rssi_cal_nphy_rev3(pi);
23073         } else {
23074                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
23075                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
23076                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
23077         }
23078 }
23079
23080 int
23081 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
23082 {
23083         s16 rxpwr, rxpwr0, rxpwr1;
23084         s16 phyRx0_l, phyRx2_l;
23085
23086         rxpwr = 0;
23087         rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23088         rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23089
23090         if (rxpwr0 > 127)
23091                 rxpwr0 -= 256;
23092         if (rxpwr1 > 127)
23093                 rxpwr1 -= 256;
23094
23095         phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23096         phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23097         if (phyRx2_l > 127)
23098                 phyRx2_l -= 256;
23099
23100         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23101                 rxpwr0 = rxpwr1;
23102                 rxpwr1 = phyRx2_l;
23103         }
23104
23105         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23106                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23107         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23108                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23109         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23110                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23111
23112         return rxpwr;
23113 }
23114
23115 static void
23116 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23117                              u16 num_samps)
23118 {
23119         u16 t;
23120         u32 *data_buf = NULL;
23121
23122         data_buf = kmalloc(sizeof(u32) * num_samps, GFP_ATOMIC);
23123         if (data_buf == NULL)
23124                 return;
23125
23126         if (pi->phyhang_avoid)
23127                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23128
23129         for (t = 0; t < num_samps; t++)
23130                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23131                               (((unsigned int)tone_buf[t].q) & 0x3ff);
23132         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23133                                  data_buf);
23134
23135         kfree(data_buf);
23136
23137         if (pi->phyhang_avoid)
23138                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23139 }
23140
23141 static u16
23142 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23143                               u8 dac_test_mode)
23144 {
23145         u8 phy_bw, is_phybw40;
23146         u16 num_samps, t, spur;
23147         s32 theta = 0, rot = 0;
23148         u32 tbl_len;
23149         struct cordic_iq *tone_buf = NULL;
23150
23151         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23152         phy_bw = (is_phybw40 == 1) ? 40 : 20;
23153         tbl_len = (phy_bw << 3);
23154
23155         if (dac_test_mode == 1) {
23156                 spur = read_phy_reg(pi, 0x01);
23157                 spur = (spur >> 15) & 1;
23158                 phy_bw = (spur == 1) ? 82 : 80;
23159                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23160
23161                 tbl_len = (phy_bw << 1);
23162         }
23163
23164         tone_buf = kmalloc(sizeof(struct cordic_iq) * tbl_len, GFP_ATOMIC);
23165         if (tone_buf == NULL)
23166                 return 0;
23167
23168         num_samps = (u16) tbl_len;
23169         rot = ((f_kHz * 36) / phy_bw) / 100;
23170         theta = 0;
23171
23172         for (t = 0; t < num_samps; t++) {
23173
23174                 tone_buf[t] = cordic_calc_iq(theta);
23175
23176                 theta += rot;
23177
23178                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23179                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23180         }
23181
23182         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23183
23184         kfree(tone_buf);
23185
23186         return num_samps;
23187 }
23188
23189 static void
23190 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23191                         u16 wait, u8 iqmode, u8 dac_test_mode,
23192                         bool modify_bbmult)
23193 {
23194         u16 bb_mult;
23195         u8 phy_bw, sample_cmd;
23196         u16 orig_RfseqCoreActv;
23197         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23198             lpf_bw_ctl_miscreg4;
23199
23200         if (pi->phyhang_avoid)
23201                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23202
23203         phy_bw = 20;
23204         if (CHSPEC_IS40(pi->radio_chanspec))
23205                 phy_bw = 40;
23206
23207         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23208
23209                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23210                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23211                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23212                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23213                                               (0x7 << 8);
23214                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23215                                               (0x7 << 8);
23216                 } else {
23217                         wlc_phy_rfctrl_override_nphy_rev7(
23218                                 pi,
23219                                 (0x1 << 7),
23220                                 wlc_phy_read_lpf_bw_ctl_nphy
23221                                         (pi,
23222                                         0), 0, 0,
23223                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23224
23225                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23226
23227                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23228                                               (0x7 << 8);
23229                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23230                                               (0x7 << 8);
23231                 }
23232         }
23233
23234         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23235
23236                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23237                                         &bb_mult);
23238                 pi->nphy_bb_mult_save =
23239                         BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23240         }
23241
23242         if (modify_bbmult) {
23243                 bb_mult = (phy_bw == 20) ? 100 : 71;
23244                 bb_mult = (bb_mult << 8) + bb_mult;
23245                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23246                                          &bb_mult);
23247         }
23248
23249         if (pi->phyhang_avoid)
23250                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23251
23252         write_phy_reg(pi, 0xc6, num_samps - 1);
23253
23254         if (loops != 0xffff)
23255                 write_phy_reg(pi, 0xc4, loops - 1);
23256         else
23257                 write_phy_reg(pi, 0xc4, loops);
23258
23259         write_phy_reg(pi, 0xc5, wait);
23260
23261         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23262         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23263         if (iqmode) {
23264
23265                 and_phy_reg(pi, 0xc2, 0x7FFF);
23266
23267                 or_phy_reg(pi, 0xc2, 0x8000);
23268         } else {
23269
23270                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23271                 write_phy_reg(pi, 0xc3, sample_cmd);
23272         }
23273
23274         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23275
23276         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23277 }
23278
23279 int
23280 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23281                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23282 {
23283         u16 num_samps;
23284         u16 loops = 0xffff;
23285         u16 wait = 0;
23286
23287         num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23288                                                   dac_test_mode);
23289         if (num_samps == 0)
23290                 return -EBADE;
23291
23292         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23293                                 dac_test_mode, modify_bbmult);
23294
23295         return 0;
23296 }
23297
23298 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23299 {
23300         u16 playback_status;
23301         u16 bb_mult;
23302
23303         if (pi->phyhang_avoid)
23304                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23305
23306         playback_status = read_phy_reg(pi, 0xc7);
23307         if (playback_status & 0x1)
23308                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23309         else if (playback_status & 0x2)
23310                 and_phy_reg(pi, 0xc2,
23311                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23312
23313         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23314
23315         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23316
23317                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23318                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23319                                          &bb_mult);
23320
23321                 pi->nphy_bb_mult_save = 0;
23322         }
23323
23324         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23325                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23326                         wlc_phy_rfctrl_override_nphy_rev7(
23327                                 pi,
23328                                 (0x1 << 7),
23329                                 0, 0, 1,
23330                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23331                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23332                 }
23333         }
23334
23335         if (pi->phyhang_avoid)
23336                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23337 }
23338
23339 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23340 {
23341         u32 *tx_pwrctrl_tbl = NULL;
23342         uint phyrev = pi->pubpi.phy_rev;
23343
23344         if (PHY_IPA(pi)) {
23345                 tx_pwrctrl_tbl =
23346                         wlc_phy_get_ipa_gaintbl_nphy(pi);
23347         } else {
23348                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23349                         if (NREV_IS(phyrev, 3))
23350                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23351                         else if (NREV_IS(phyrev, 4))
23352                                 tx_pwrctrl_tbl =
23353                                         (pi->srom_fem5g.extpagain == 3) ?
23354                                         nphy_tpc_5GHz_txgain_HiPwrEPA :
23355                                         nphy_tpc_5GHz_txgain_rev4;
23356                         else
23357                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23358                 } else {
23359                         if (NREV_GE(phyrev, 7)) {
23360                                 if (pi->pubpi.radiorev == 3)
23361                                         tx_pwrctrl_tbl =
23362                                                 nphy_tpc_txgain_epa_2057rev3;
23363                                 else if (pi->pubpi.radiorev == 5)
23364                                         tx_pwrctrl_tbl =
23365                                                 nphy_tpc_txgain_epa_2057rev5;
23366                         } else {
23367                                 if (NREV_GE(phyrev, 5) &&
23368                                    (pi->srom_fem2g.extpagain == 3))
23369                                         tx_pwrctrl_tbl =
23370                                                 nphy_tpc_txgain_HiPwrEPA;
23371                                 else
23372                                         tx_pwrctrl_tbl =
23373                                                 nphy_tpc_txgain_rev3;
23374                         }
23375                 }
23376         }
23377         return tx_pwrctrl_tbl;
23378 }
23379
23380 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23381 {
23382         u16 base_idx[2], curr_gain[2];
23383         u8 core_no;
23384         struct nphy_txgains target_gain;
23385         u32 *tx_pwrctrl_tbl = NULL;
23386
23387         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23388                 if (pi->phyhang_avoid)
23389                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23390
23391                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23392                                         curr_gain);
23393
23394                 if (pi->phyhang_avoid)
23395                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23396
23397                 for (core_no = 0; core_no < 2; core_no++) {
23398                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23399                                 target_gain.ipa[core_no] =
23400                                         curr_gain[core_no] & 0x0007;
23401                                 target_gain.pad[core_no] =
23402                                         ((curr_gain[core_no] & 0x00F8) >> 3);
23403                                 target_gain.pga[core_no] =
23404                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23405                                 target_gain.txgm[core_no] =
23406                                         ((curr_gain[core_no] & 0x7000) >> 12);
23407                                 target_gain.txlpf[core_no] =
23408                                         ((curr_gain[core_no] & 0x8000) >> 15);
23409                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23410                                 target_gain.ipa[core_no] =
23411                                         curr_gain[core_no] & 0x000F;
23412                                 target_gain.pad[core_no] =
23413                                         ((curr_gain[core_no] & 0x00F0) >> 4);
23414                                 target_gain.pga[core_no] =
23415                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23416                                 target_gain.txgm[core_no] =
23417                                         ((curr_gain[core_no] & 0x7000) >> 12);
23418                         } else {
23419                                 target_gain.ipa[core_no] =
23420                                         curr_gain[core_no] & 0x0003;
23421                                 target_gain.pad[core_no] =
23422                                         ((curr_gain[core_no] & 0x000C) >> 2);
23423                                 target_gain.pga[core_no] =
23424                                         ((curr_gain[core_no] & 0x0070) >> 4);
23425                                 target_gain.txgm[core_no] =
23426                                         ((curr_gain[core_no] & 0x0380) >> 7);
23427                         }
23428                 }
23429         } else {
23430                 uint phyrev = pi->pubpi.phy_rev;
23431
23432                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23433                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23434                 for (core_no = 0; core_no < 2; core_no++) {
23435                         if (NREV_GE(phyrev, 3)) {
23436                                 tx_pwrctrl_tbl =
23437                                         brcms_phy_get_tx_pwrctrl_tbl(pi);
23438                                 if (NREV_GE(phyrev, 7)) {
23439                                         target_gain.ipa[core_no] =
23440                                                 (tx_pwrctrl_tbl
23441                                                  [base_idx[core_no]]
23442                                                  >> 16) & 0x7;
23443                                         target_gain.pad[core_no] =
23444                                                 (tx_pwrctrl_tbl
23445                                                  [base_idx[core_no]]
23446                                                  >> 19) & 0x1f;
23447                                         target_gain.pga[core_no] =
23448                                                 (tx_pwrctrl_tbl
23449                                                  [base_idx[core_no]]
23450                                                  >> 24) & 0xf;
23451                                         target_gain.txgm[core_no] =
23452                                                 (tx_pwrctrl_tbl
23453                                                  [base_idx[core_no]]
23454                                                  >> 28) & 0x7;
23455                                         target_gain.txlpf[core_no] =
23456                                                 (tx_pwrctrl_tbl
23457                                                  [base_idx[core_no]]
23458                                                  >> 31) & 0x1;
23459                                 } else {
23460                                         target_gain.ipa[core_no] =
23461                                                 (tx_pwrctrl_tbl
23462                                                  [base_idx[core_no]]
23463                                                  >> 16) & 0xf;
23464                                         target_gain.pad[core_no] =
23465                                                 (tx_pwrctrl_tbl
23466                                                  [base_idx[core_no]]
23467                                                  >> 20) & 0xf;
23468                                         target_gain.pga[core_no] =
23469                                                 (tx_pwrctrl_tbl
23470                                                  [base_idx[core_no]]
23471                                                  >> 24) & 0xf;
23472                                         target_gain.txgm[core_no] =
23473                                                 (tx_pwrctrl_tbl
23474                                                 [base_idx[core_no]]
23475                                                  >> 28) & 0x7;
23476                                 }
23477                         } else {
23478                                 target_gain.ipa[core_no] =
23479                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23480                                          16) & 0x3;
23481                                 target_gain.pad[core_no] =
23482                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23483                                          18) & 0x3;
23484                                 target_gain.pga[core_no] =
23485                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23486                                          20) & 0x7;
23487                                 target_gain.txgm[core_no] =
23488                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23489                                          23) & 0x7;
23490                         }
23491                 }
23492         }
23493
23494         return target_gain;
23495 }
23496
23497 static void
23498 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23499                               struct nphy_txgains target_gain,
23500                               struct nphy_iqcal_params *params)
23501 {
23502         u8 k;
23503         int idx;
23504         u16 gain_index;
23505         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23506
23507         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23508                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23509                         params->txlpf = target_gain.txlpf[core_no];
23510
23511                 params->txgm = target_gain.txgm[core_no];
23512                 params->pga = target_gain.pga[core_no];
23513                 params->pad = target_gain.pad[core_no];
23514                 params->ipa = target_gain.ipa[core_no];
23515                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23516                         params->cal_gain =
23517                                 ((params->txlpf << 15) | (params->txgm << 12) |
23518                                  (params->pga << 8) |
23519                                  (params->pad << 3) | (params->ipa));
23520                 else
23521                         params->cal_gain =
23522                                 ((params->txgm << 12) | (params->pga << 8) |
23523                                  (params->pad << 4) | (params->ipa));
23524
23525                 params->ncorr[0] = 0x79;
23526                 params->ncorr[1] = 0x79;
23527                 params->ncorr[2] = 0x79;
23528                 params->ncorr[3] = 0x79;
23529                 params->ncorr[4] = 0x79;
23530         } else {
23531
23532                 gain_index = ((target_gain.pad[core_no] << 0) |
23533                               (target_gain.pga[core_no] << 4) |
23534                               (target_gain.txgm[core_no] << 8));
23535
23536                 idx = -1;
23537                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23538                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23539                             gain_index) {
23540                                 idx = k;
23541                                 break;
23542                         }
23543                 }
23544
23545                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23546                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23547                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23548                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23549                                     (params->pad << 2));
23550                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23551                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23552                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23553                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23554         }
23555 }
23556
23557 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23558 {
23559         u16 jtag_core, core;
23560
23561         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23562
23563                 for (core = 0; core <= 1; core++) {
23564
23565                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23566                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23567                                                 TX_SSI_MASTER);
23568
23569                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23570                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23571                                                 IQCAL_VCM_HG);
23572
23573                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23574                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23575                                                 IQCAL_IDAC);
23576
23577                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23578                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23579                                                 TSSI_VCM);
23580
23581                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23582
23583                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23584                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23585                                                 TX_SSI_MUX);
23586
23587                         if (pi->pubpi.radiorev != 5)
23588                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23589                                         READ_RADIO_REG3(pi, RADIO_2057, TX,
23590                                                         core,
23591                                                         TSSIA);
23592
23593                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23594                                READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23595
23596                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23597                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23598                                                 TSSI_MISC1);
23599
23600                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23601                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23602                                                  TX_SSI_MASTER, 0x0a);
23603                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23604                                                  IQCAL_VCM_HG, 0x43);
23605                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23606                                                  IQCAL_IDAC, 0x55);
23607                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23608                                                  TSSI_VCM, 0x00);
23609                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23610                                                  TSSIG, 0x00);
23611                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23612                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23613                                                          core, TX_SSI_MUX, 0x4);
23614                                         if (!(pi->
23615                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23616                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23617                                                                  TX, core,
23618                                                                  TSSIA, 0x31);
23619                                         else
23620                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23621                                                                  TX, core,
23622                                                                  TSSIA, 0x21);
23623                                 }
23624                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23625                                                  TSSI_MISC1, 0x00);
23626                         } else {
23627                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23628                                                  TX_SSI_MASTER, 0x06);
23629                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23630                                                  IQCAL_VCM_HG, 0x43);
23631                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23632                                                  IQCAL_IDAC, 0x55);
23633                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23634                                                  TSSI_VCM, 0x00);
23635
23636                                 if (pi->pubpi.radiorev != 5)
23637                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23638                                                          core, TSSIA, 0x00);
23639                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23640                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23641                                                          core, TX_SSI_MUX,
23642                                                          0x06);
23643                                         if (!(pi->
23644                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23645                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23646                                                                  TX, core,
23647                                                                  TSSIG, 0x31);
23648                                         else
23649                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23650                                                                  TX, core,
23651                                                                  TSSIG, 0x21);
23652                                 }
23653                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23654                                                  TSSI_MISC1, 0x00);
23655                         }
23656                 }
23657         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23658
23659                 for (core = 0; core <= 1; core++) {
23660                         jtag_core =
23661                                 (core ==
23662                                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23663
23664                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23665                                 read_radio_reg(pi,
23666                                                RADIO_2056_TX_TX_SSI_MASTER |
23667                                                jtag_core);
23668
23669                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23670                                 read_radio_reg(pi,
23671                                                RADIO_2056_TX_IQCAL_VCM_HG |
23672                                                jtag_core);
23673
23674                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23675                                 read_radio_reg(pi,
23676                                                RADIO_2056_TX_IQCAL_IDAC |
23677                                                jtag_core);
23678
23679                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23680                                 read_radio_reg(
23681                                         pi,
23682                                         RADIO_2056_TX_TSSI_VCM |
23683                                         jtag_core);
23684
23685                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23686                                 read_radio_reg(pi,
23687                                                RADIO_2056_TX_TX_AMP_DET |
23688                                                jtag_core);
23689
23690                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23691                                 read_radio_reg(pi,
23692                                                RADIO_2056_TX_TX_SSI_MUX |
23693                                                jtag_core);
23694
23695                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23696                                 read_radio_reg(pi,
23697                                                RADIO_2056_TX_TSSIA | jtag_core);
23698
23699                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23700                                 read_radio_reg(pi,
23701                                                RADIO_2056_TX_TSSIG | jtag_core);
23702
23703                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23704                                 read_radio_reg(pi,
23705                                                RADIO_2056_TX_TSSI_MISC1 |
23706                                                jtag_core);
23707
23708                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23709                                 read_radio_reg(pi,
23710                                                RADIO_2056_TX_TSSI_MISC2 |
23711                                                jtag_core);
23712
23713                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23714                                 read_radio_reg(pi,
23715                                                RADIO_2056_TX_TSSI_MISC3 |
23716                                                jtag_core);
23717
23718                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23719                                 write_radio_reg(pi,
23720                                                 RADIO_2056_TX_TX_SSI_MASTER |
23721                                                 jtag_core, 0x0a);
23722                                 write_radio_reg(pi,
23723                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23724                                                 jtag_core, 0x40);
23725                                 write_radio_reg(pi,
23726                                                 RADIO_2056_TX_IQCAL_IDAC |
23727                                                 jtag_core, 0x55);
23728                                 write_radio_reg(pi,
23729                                                 RADIO_2056_TX_TSSI_VCM |
23730                                                 jtag_core, 0x00);
23731                                 write_radio_reg(pi,
23732                                                 RADIO_2056_TX_TX_AMP_DET |
23733                                                 jtag_core, 0x00);
23734
23735                                 if (PHY_IPA(pi)) {
23736                                         write_radio_reg(
23737                                                 pi,
23738                                                 RADIO_2056_TX_TX_SSI_MUX
23739                                                 | jtag_core, 0x4);
23740                                         write_radio_reg(pi,
23741                                                         RADIO_2056_TX_TSSIA |
23742                                                         jtag_core, 0x1);
23743                                 } else {
23744                                         write_radio_reg(
23745                                                 pi,
23746                                                 RADIO_2056_TX_TX_SSI_MUX
23747                                                 | jtag_core, 0x00);
23748                                         write_radio_reg(pi,
23749                                                         RADIO_2056_TX_TSSIA |
23750                                                         jtag_core, 0x2f);
23751                                 }
23752                                 write_radio_reg(pi,
23753                                                 RADIO_2056_TX_TSSIG | jtag_core,
23754                                                 0x00);
23755                                 write_radio_reg(pi,
23756                                                 RADIO_2056_TX_TSSI_MISC1 |
23757                                                 jtag_core, 0x00);
23758
23759                                 write_radio_reg(pi,
23760                                                 RADIO_2056_TX_TSSI_MISC2 |
23761                                                 jtag_core, 0x00);
23762                                 write_radio_reg(pi,
23763                                                 RADIO_2056_TX_TSSI_MISC3 |
23764                                                 jtag_core, 0x00);
23765                         } else {
23766                                 write_radio_reg(pi,
23767                                                 RADIO_2056_TX_TX_SSI_MASTER |
23768                                                 jtag_core, 0x06);
23769                                 write_radio_reg(pi,
23770                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23771                                                 jtag_core, 0x40);
23772                                 write_radio_reg(pi,
23773                                                 RADIO_2056_TX_IQCAL_IDAC |
23774                                                 jtag_core, 0x55);
23775                                 write_radio_reg(pi,
23776                                                 RADIO_2056_TX_TSSI_VCM |
23777                                                 jtag_core, 0x00);
23778                                 write_radio_reg(pi,
23779                                                 RADIO_2056_TX_TX_AMP_DET |
23780                                                 jtag_core, 0x00);
23781                                 write_radio_reg(pi,
23782                                                 RADIO_2056_TX_TSSIA | jtag_core,
23783                                                 0x00);
23784
23785                                 if (PHY_IPA(pi)) {
23786
23787                                         write_radio_reg(
23788                                                 pi,
23789                                                 RADIO_2056_TX_TX_SSI_MUX
23790                                                 | jtag_core, 0x06);
23791                                         if (NREV_LT(pi->pubpi.phy_rev, 5))
23792                                                 write_radio_reg(
23793                                                         pi,
23794                                                         RADIO_2056_TX_TSSIG
23795                                                         | jtag_core,
23796                                                         0x11);
23797                                         else
23798                                                 write_radio_reg(
23799                                                         pi,
23800                                                         RADIO_2056_TX_TSSIG
23801                                                         | jtag_core,
23802                                                         0x1);
23803                                 } else {
23804                                         write_radio_reg(
23805                                                 pi,
23806                                                 RADIO_2056_TX_TX_SSI_MUX
23807                                                 | jtag_core, 0x00);
23808                                         write_radio_reg(pi,
23809                                                         RADIO_2056_TX_TSSIG |
23810                                                         jtag_core, 0x20);
23811                                 }
23812
23813                                 write_radio_reg(pi,
23814                                                 RADIO_2056_TX_TSSI_MISC1 |
23815                                                 jtag_core, 0x00);
23816                                 write_radio_reg(pi,
23817                                                 RADIO_2056_TX_TSSI_MISC2 |
23818                                                 jtag_core, 0x00);
23819                                 write_radio_reg(pi,
23820                                                 RADIO_2056_TX_TSSI_MISC3 |
23821                                                 jtag_core, 0x00);
23822                         }
23823                 }
23824         } else {
23825
23826                 pi->tx_rx_cal_radio_saveregs[0] =
23827                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23828                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23829                 pi->tx_rx_cal_radio_saveregs[1] =
23830                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23831                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23832
23833                 pi->tx_rx_cal_radio_saveregs[2] =
23834                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23835                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23836                 pi->tx_rx_cal_radio_saveregs[3] =
23837                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23838                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23839
23840                 pi->tx_rx_cal_radio_saveregs[4] =
23841                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23842                 pi->tx_rx_cal_radio_saveregs[5] =
23843                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23844
23845                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23846                     0) {
23847
23848                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23849                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23850                 } else {
23851
23852                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23853                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23854                 }
23855
23856                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23857
23858                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23859                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23860                 } else {
23861
23862                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23863                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23864                 }
23865         }
23866 }
23867
23868 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23869 {
23870         u16 jtag_core, core;
23871
23872         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23873                 for (core = 0; core <= 1; core++) {
23874
23875                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23876                                          TX_SSI_MASTER,
23877                                          pi->
23878                                          tx_rx_cal_radio_saveregs[(core * 11) +
23879                                                                   0]);
23880
23881                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23882                                          pi->
23883                                          tx_rx_cal_radio_saveregs[(core * 11) +
23884                                                                   1]);
23885
23886                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23887                                          pi->
23888                                          tx_rx_cal_radio_saveregs[(core * 11) +
23889                                                                   2]);
23890
23891                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23892                                          pi->
23893                                          tx_rx_cal_radio_saveregs[(core * 11) +
23894                                                                   3]);
23895
23896                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23897                                          pi->
23898                                          tx_rx_cal_radio_saveregs[(core * 11) +
23899                                                                   5]);
23900
23901                         if (pi->pubpi.radiorev != 5)
23902                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23903                                                  TSSIA,
23904                                                  pi->tx_rx_cal_radio_saveregs
23905                                                              [(core * 11) + 6]);
23906
23907                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23908                                          pi->
23909                                          tx_rx_cal_radio_saveregs[(core * 11) +
23910                                                                   7]);
23911
23912                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23913                                          pi->
23914                                          tx_rx_cal_radio_saveregs[(core * 11) +
23915                                                                   8]);
23916                 }
23917         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23918                 for (core = 0; core <= 1; core++) {
23919                         jtag_core = (core == PHY_CORE_0) ?
23920                                      RADIO_2056_TX0 : RADIO_2056_TX1;
23921
23922                         write_radio_reg(pi,
23923                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23924                                         pi->
23925                                         tx_rx_cal_radio_saveregs[(core * 11) +
23926                                                                  0]);
23927
23928                         write_radio_reg(pi,
23929                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23930                                         pi->
23931                                         tx_rx_cal_radio_saveregs[(core * 11) +
23932                                                                  1]);
23933
23934                         write_radio_reg(pi,
23935                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23936                                         pi->
23937                                         tx_rx_cal_radio_saveregs[(core * 11) +
23938                                                                  2]);
23939
23940                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23941                                         pi->
23942                                         tx_rx_cal_radio_saveregs[(core * 11) +
23943                                                                  3]);
23944
23945                         write_radio_reg(pi,
23946                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23947                                         pi->
23948                                         tx_rx_cal_radio_saveregs[(core * 11) +
23949                                                                  4]);
23950
23951                         write_radio_reg(pi,
23952                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23953                                         pi->
23954                                         tx_rx_cal_radio_saveregs[(core * 11) +
23955                                                                  5]);
23956
23957                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23958                                         pi->
23959                                         tx_rx_cal_radio_saveregs[(core * 11) +
23960                                                                  6]);
23961
23962                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23963                                         pi->
23964                                         tx_rx_cal_radio_saveregs[(core * 11) +
23965                                                                  7]);
23966
23967                         write_radio_reg(pi,
23968                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23969                                         pi->
23970                                         tx_rx_cal_radio_saveregs[(core * 11) +
23971                                                                  8]);
23972
23973                         write_radio_reg(pi,
23974                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23975                                         pi->
23976                                         tx_rx_cal_radio_saveregs[(core * 11) +
23977                                                                  9]);
23978
23979                         write_radio_reg(pi,
23980                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23981                                         pi->
23982                                         tx_rx_cal_radio_saveregs[(core * 11) +
23983                                                                  10]);
23984                 }
23985         } else {
23986
23987                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23988                                 pi->tx_rx_cal_radio_saveregs[0]);
23989                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23990                                 pi->tx_rx_cal_radio_saveregs[1]);
23991                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23992                                 pi->tx_rx_cal_radio_saveregs[2]);
23993                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23994                                 pi->tx_rx_cal_radio_saveregs[3]);
23995                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23996                                 pi->tx_rx_cal_radio_saveregs[4]);
23997                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23998                                 pi->tx_rx_cal_radio_saveregs[5]);
23999         }
24000 }
24001
24002 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
24003 {
24004         u16 val, mask;
24005
24006         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24007                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24008                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24009
24010                 mask = ((0x3 << 8) | (0x3 << 10));
24011                 val = (0x2 << 8);
24012                 val |= (0x2 << 10);
24013                 mod_phy_reg(pi, 0xa6, mask, val);
24014                 mod_phy_reg(pi, 0xa7, mask, val);
24015
24016                 val = read_phy_reg(pi, 0x8f);
24017                 pi->tx_rx_cal_phy_saveregs[2] = val;
24018                 val |= ((0x1 << 9) | (0x1 << 10));
24019                 write_phy_reg(pi, 0x8f, val);
24020
24021                 val = read_phy_reg(pi, 0xa5);
24022                 pi->tx_rx_cal_phy_saveregs[3] = val;
24023                 val |= ((0x1 << 9) | (0x1 << 10));
24024                 write_phy_reg(pi, 0xa5, val);
24025
24026                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
24027                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
24028
24029                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24030                                         &val);
24031                 pi->tx_rx_cal_phy_saveregs[5] = val;
24032                 val = 0;
24033                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24034                                          &val);
24035
24036                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24037                                         &val);
24038                 pi->tx_rx_cal_phy_saveregs[6] = val;
24039                 val = 0;
24040                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24041                                          &val);
24042
24043                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
24044                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
24045
24046                 if (!(pi->use_int_tx_iqlo_cal_nphy))
24047                         wlc_phy_rfctrlintc_override_nphy(
24048                                 pi,
24049                                 NPHY_RfctrlIntc_override_PA,
24050                                 1,
24051                                 RADIO_MIMO_CORESEL_CORE1
24052                                 |
24053                                 RADIO_MIMO_CORESEL_CORE2);
24054                 else
24055                         wlc_phy_rfctrlintc_override_nphy(
24056                                 pi,
24057                                 NPHY_RfctrlIntc_override_PA,
24058                                 0,
24059                                 RADIO_MIMO_CORESEL_CORE1
24060                                 |
24061                                 RADIO_MIMO_CORESEL_CORE2);
24062
24063                 wlc_phy_rfctrlintc_override_nphy(pi,
24064                                                  NPHY_RfctrlIntc_override_TRSW,
24065                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
24066                 wlc_phy_rfctrlintc_override_nphy(pi,
24067                                                  NPHY_RfctrlIntc_override_TRSW,
24068                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
24069
24070                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
24071                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
24072                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
24073                             0x29b, (0x1 << 0), (0) << 0);
24074
24075                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
24076                             0x29b, (0x1 << 0), (0) << 0);
24077
24078                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24079                     || NREV_GE(pi->pubpi.phy_rev, 8))
24080                         wlc_phy_rfctrl_override_nphy_rev7(
24081                                 pi, (0x1 << 7),
24082                                 wlc_phy_read_lpf_bw_ctl_nphy
24083                                         (pi,
24084                                         0), 0, 0,
24085                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24086
24087                 if (pi->use_int_tx_iqlo_cal_nphy
24088                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24089
24090                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24091
24092                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24093                                               1 << 4);
24094
24095                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24096                                         mod_radio_reg(
24097                                                 pi,
24098                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24099                                                 1, 0);
24100                                         mod_radio_reg(
24101                                                 pi,
24102                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24103                                                 1, 0);
24104                                 } else {
24105                                         mod_radio_reg(
24106                                              pi,
24107                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24108                                              1, 0);
24109                                         mod_radio_reg(
24110                                              pi,
24111                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24112                                              1, 0);
24113                                 }
24114                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24115                                 wlc_phy_rfctrl_override_nphy_rev7(
24116                                         pi,
24117                                         (0x1 << 3), 0,
24118                                         0x3, 0,
24119                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24120                         }
24121                 }
24122         } else {
24123                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24124                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24125
24126                 mask = ((0x3 << 12) | (0x3 << 14));
24127                 val = (0x2 << 12);
24128                 val |= (0x2 << 14);
24129                 mod_phy_reg(pi, 0xa6, mask, val);
24130                 mod_phy_reg(pi, 0xa7, mask, val);
24131
24132                 val = read_phy_reg(pi, 0xa5);
24133                 pi->tx_rx_cal_phy_saveregs[2] = val;
24134                 val |= ((0x1 << 12) | (0x1 << 13));
24135                 write_phy_reg(pi, 0xa5, val);
24136
24137                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24138                                         &val);
24139                 pi->tx_rx_cal_phy_saveregs[3] = val;
24140                 val |= 0x2000;
24141                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24142                                          &val);
24143
24144                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24145                                         &val);
24146                 pi->tx_rx_cal_phy_saveregs[4] = val;
24147                 val |= 0x2000;
24148                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24149                                          &val);
24150
24151                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24152                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24153                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24154                 write_phy_reg(pi, 0x91, val);
24155                 write_phy_reg(pi, 0x92, val);
24156         }
24157 }
24158
24159 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24160 {
24161         u16 mask;
24162
24163         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24164                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24165                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24166                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24167                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24168                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24169
24170                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24171                                          &pi->tx_rx_cal_phy_saveregs[5]);
24172                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24173                                          &pi->tx_rx_cal_phy_saveregs[6]);
24174
24175                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24176                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24177
24178                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24179                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24180
24181                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24182                     || NREV_GE(pi->pubpi.phy_rev, 8))
24183                         wlc_phy_rfctrl_override_nphy_rev7(
24184                                 pi, (0x1 << 7), 0, 0,
24185                                 1,
24186                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24187
24188                 wlc_phy_resetcca_nphy(pi);
24189
24190                 if (pi->use_int_tx_iqlo_cal_nphy
24191                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24192
24193                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24194                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24195                                         mod_radio_reg(
24196                                                 pi,
24197                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24198                                                 1, 1);
24199                                         mod_radio_reg(
24200                                                 pi,
24201                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24202                                                 1, 1);
24203                                 } else {
24204                                         mod_radio_reg(
24205                                              pi,
24206                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24207                                              1, 1);
24208                                         mod_radio_reg(
24209                                              pi,
24210                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24211                                              1, 1);
24212                                 }
24213
24214                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24215                                               0);
24216                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24217                                 wlc_phy_rfctrl_override_nphy_rev7(
24218                                         pi,
24219                                         (0x1 << 3), 0,
24220                                         0x3, 1,
24221                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24222                         }
24223                 }
24224         } else {
24225                 mask = ((0x3 << 12) | (0x3 << 14));
24226                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24227                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24228                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24229
24230                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24231                                          &pi->tx_rx_cal_phy_saveregs[3]);
24232
24233                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24234                                          &pi->tx_rx_cal_phy_saveregs[4]);
24235
24236                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24237                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24238         }
24239 }
24240
24241 void
24242 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24243 {
24244         u16 tssi_reg;
24245         s32 temp, pwrindex[2];
24246         s32 idle_tssi[2];
24247         s32 rssi_buf[4];
24248         s32 tssival[2];
24249         u8 tssi_type;
24250
24251         tssi_reg = read_phy_reg(pi, 0x1e9);
24252
24253         temp = (s32) (tssi_reg & 0x3f);
24254         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24255
24256         temp = (s32) ((tssi_reg >> 8) & 0x3f);
24257         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24258
24259         tssi_type =
24260                 CHSPEC_IS5G(pi->radio_chanspec) ?
24261                 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24262
24263         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24264
24265         tssival[0] = rssi_buf[0] / ((s32) num_samps);
24266         tssival[1] = rssi_buf[2] / ((s32) num_samps);
24267
24268         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24269         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24270
24271         if (pwrindex[0] < 0)
24272                 pwrindex[0] = 0;
24273         else if (pwrindex[0] > 63)
24274                 pwrindex[0] = 63;
24275
24276         if (pwrindex[1] < 0)
24277                 pwrindex[1] = 0;
24278         else if (pwrindex[1] > 63)
24279                 pwrindex[1] = 63;
24280
24281         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24282                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24283         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24284                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24285 }
24286
24287 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24288 {
24289         int index;
24290         u32 bbmult_scale;
24291         u16 bbmult;
24292         u16 tblentry;
24293
24294         struct nphy_txiqcal_ladder ladder_lo[] = {
24295                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24296                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24297                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24298         };
24299
24300         struct nphy_txiqcal_ladder ladder_iq[] = {
24301                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24302                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24303                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24304         };
24305
24306         bbmult = (core == PHY_CORE_0) ?
24307                  ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24308                  (pi->nphy_txcal_bbmult & 0xff);
24309
24310         for (index = 0; index < 18; index++) {
24311                 bbmult_scale = ladder_lo[index].percent * bbmult;
24312                 bbmult_scale /= 100;
24313
24314                 tblentry =
24315                         ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24316                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24317                                          &tblentry);
24318
24319                 bbmult_scale = ladder_iq[index].percent * bbmult;
24320                 bbmult_scale /= 100;
24321
24322                 tblentry =
24323                         ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24324                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24325                                          16, &tblentry);
24326         }
24327 }
24328
24329 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24330 {
24331         u16 tmp;
24332         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24333
24334         tmp = (tmp & (0x7f << 8)) >> 8;
24335         return (u8) tmp;
24336 }
24337
24338 static void
24339 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24340 {
24341         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24342
24343         if (NREV_GT(pi->pubpi.phy_rev, 1))
24344                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24345 }
24346
24347 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24348 {
24349         u16 m0m1;
24350
24351         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24352
24353         return m0m1;
24354 }
24355
24356 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24357 {
24358         u16 m0m1 = (u16) ((m0 << 8) | m1);
24359
24360         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24361         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24362 }
24363
24364 static void
24365 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24366                             struct nphy_papd_restore_state *state, u8 core)
24367 {
24368         s32 tone_freq;
24369         u8 off_core;
24370         u16 mixgain = 0;
24371
24372         off_core = core ^ 0x1;
24373         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24374
24375                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24376                     || NREV_GE(pi->pubpi.phy_rev, 8))
24377                         wlc_phy_rfctrl_override_nphy_rev7(
24378                                 pi, (0x1 << 7),
24379                                 wlc_phy_read_lpf_bw_ctl_nphy
24380                                         (pi,
24381                                         0), 0, 0,
24382                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24383
24384                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24385                         if (pi->pubpi.radiorev == 5)
24386                                 mixgain = (core == 0) ? 0x20 : 0x00;
24387                         else if ((pi->pubpi.radiorev == 7)
24388                                  || (pi->pubpi.radiorev == 8))
24389                                 mixgain = 0x00;
24390                         else if ((pi->pubpi.radiorev <= 4)
24391                                  || (pi->pubpi.radiorev == 6))
24392                                 mixgain = 0x00;
24393                 } else {
24394                         if ((pi->pubpi.radiorev == 4) ||
24395                             (pi->pubpi.radiorev == 6))
24396                                 mixgain = 0x50;
24397                         else if ((pi->pubpi.radiorev == 3)
24398                                  || (pi->pubpi.radiorev == 7)
24399                                  || (pi->pubpi.radiorev == 8))
24400                                 mixgain = 0x0;
24401                 }
24402
24403                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24404                                                   mixgain, (1 << core), 0,
24405                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24406
24407                 wlc_phy_rfctrl_override_1tomany_nphy(
24408                         pi,
24409                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24410                         1, (1 << core), 0);
24411                 wlc_phy_rfctrl_override_1tomany_nphy(
24412                         pi,
24413                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24414                         0, (1 << off_core), 0);
24415
24416                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24417                                                   0, 0x3, 0,
24418                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24419                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24420                                                   (1 << core), 0,
24421                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24422                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24423                                                   (1 << core), 0,
24424                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24425                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24426                                                   (1 << core), 0,
24427                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24428                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24429                                                   (1 << core), 0,
24430                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24431                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24432                                                   (1 << core), 0,
24433                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24434                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24435                                                   (1 << core), 0,
24436                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24437                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24438                                                   (1 << core), 0,
24439                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24440
24441                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24442                                                   0, (1 << core), 0,
24443                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24444                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24445                                                   (1 << core), 0,
24446                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24447
24448                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24449                                                     0xa6 : 0xa7);
24450                 state->afeoverride[core] =
24451                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24452                 state->afectrl[off_core] =
24453                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24454                 state->afeoverride[off_core] =
24455                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24456
24457                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24458                             (0x1 << 2), 0);
24459                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24460                                  0xa5), (0x1 << 2), (0x1 << 2));
24461
24462                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24463                             (0x1 << 2), (0x1 << 2));
24464                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24465                                  0x8f), (0x1 << 2), (0x1 << 2));
24466
24467                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24468                         state->pwrup[core] =
24469                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24470                                                 TXRXCOUPLE_2G_PWRUP);
24471                         state->atten[core] =
24472                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24473                                                 TXRXCOUPLE_2G_ATTEN);
24474                         state->pwrup[off_core] =
24475                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24476                                                 TXRXCOUPLE_2G_PWRUP);
24477                         state->atten[off_core] =
24478                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24479                                                 TXRXCOUPLE_2G_ATTEN);
24480
24481                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24482                                          TXRXCOUPLE_2G_PWRUP, 0xc);
24483
24484                         if ((pi->pubpi.radiorev == 3) ||
24485                             (pi->pubpi.radiorev == 4) ||
24486                             (pi->pubpi.radiorev == 6))
24487                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24488                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24489                         else if (pi->pubpi.radiorev == 5)
24490                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24491                                                  TXRXCOUPLE_2G_ATTEN,
24492                                                  (core == 0) ? 0xf7 : 0xf2);
24493                         else if ((pi->pubpi.radiorev == 7)
24494                                  || (pi->pubpi.radiorev == 8))
24495                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24496                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24497
24498                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24499                                          TXRXCOUPLE_2G_PWRUP, 0x0);
24500                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24501                                          TXRXCOUPLE_2G_ATTEN, 0xff);
24502                 } else {
24503                         state->pwrup[core] =
24504                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24505                                                 TXRXCOUPLE_5G_PWRUP);
24506                         state->atten[core] =
24507                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24508                                                 TXRXCOUPLE_5G_ATTEN);
24509                         state->pwrup[off_core] =
24510                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24511                                                 TXRXCOUPLE_5G_PWRUP);
24512                         state->atten[off_core] =
24513                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24514                                                 TXRXCOUPLE_5G_ATTEN);
24515
24516                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24517                                          TXRXCOUPLE_5G_PWRUP, 0xc);
24518
24519                         if ((pi->pubpi.radiorev == 7)
24520                             || (pi->pubpi.radiorev == 8))
24521                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24522                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
24523
24524                         else
24525                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24526                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
24527
24528                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24529                                          TXRXCOUPLE_5G_PWRUP, 0x0);
24530                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24531                                          TXRXCOUPLE_5G_ATTEN, 0xff);
24532                 }
24533
24534                 tone_freq = 4000;
24535
24536                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24537
24538                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24539                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24540
24541                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24542                             0x2a4, (0x1 << 13), (1) << 13);
24543
24544                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24545                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24546
24547                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24548                             0x2a4, (0x1 << 13), (0) << 13);
24549
24550         } else {
24551
24552                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24553
24554                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24555
24556                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24557
24558                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24559                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24560
24561                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24562                                                     0xa6 : 0xa7);
24563                 state->afeoverride[core] =
24564                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24565
24566                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24567                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24568                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24569                                  0xa5),
24570                             (0x1 << 0) |
24571                             (0x1 << 1) |
24572                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24573
24574                 state->vga_master[core] =
24575                         READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24576                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24577                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24578                         state->fbmix[core] =
24579                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24580                                                 TXFBMIX_G);
24581                         state->intpa_master[core] =
24582                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24583                                                 INTPAG_MASTER);
24584
24585                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24586                                          0x03);
24587                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24588                                          INTPAG_MASTER, 0x04);
24589                 } else {
24590                         state->fbmix[core] =
24591                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24592                                                 TXFBMIX_A);
24593                         state->intpa_master[core] =
24594                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24595                                                 INTPAA_MASTER);
24596
24597                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24598                                          0x03);
24599                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24600                                          INTPAA_MASTER, 0x04);
24601
24602                 }
24603
24604                 tone_freq = 4000;
24605
24606                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24607
24608                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24609                             0x29b, (0x1 << 0), (1) << 0);
24610
24611                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24612                             0x29b, (0x1 << 0), (0) << 0);
24613
24614                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24615         }
24616 }
24617
24618 static void
24619 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24620                               struct nphy_papd_restore_state *state)
24621 {
24622         u8 core;
24623
24624         wlc_phy_stopplayback_nphy(pi);
24625
24626         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24627
24628                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24629
24630                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24631                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24632                                                  TXRXCOUPLE_2G_PWRUP, 0);
24633                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24634                                                  TXRXCOUPLE_2G_ATTEN,
24635                                                  state->atten[core]);
24636                         } else {
24637                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24638                                                  TXRXCOUPLE_5G_PWRUP, 0);
24639                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24640                                                  TXRXCOUPLE_5G_ATTEN,
24641                                                  state->atten[core]);
24642                         }
24643                 }
24644
24645                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24646                         wlc_phy_rfctrl_override_nphy_rev7(
24647                                 pi, (0x1 << 2),
24648                                 1, 0x3, 0,
24649                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24650                 else
24651                         wlc_phy_rfctrl_override_nphy_rev7(
24652                                 pi, (0x1 << 2),
24653                                 0, 0x3, 1,
24654                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24655
24656                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24657                                                   0, 0x3, 1,
24658                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24659                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24660                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24661                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24662                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24663                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24664                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24665                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24666                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24667                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24668                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24669                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24670                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24671                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24672                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24673                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24674                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24675                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24676                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24677                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24678                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24679                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24680                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24681                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24682                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24683                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24684                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24685                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24686                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24687                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24688                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24689
24690                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24691
24692                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24693                                       0xa6 : 0xa7, state->afectrl[core]);
24694                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24695                                       0xa5, state->afeoverride[core]);
24696                 }
24697
24698                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24699                                             (state->mm & 0xff));
24700
24701                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24702                     || NREV_GE(pi->pubpi.phy_rev, 8))
24703                         wlc_phy_rfctrl_override_nphy_rev7(
24704                                 pi, (0x1 << 7), 0, 0,
24705                                 1,
24706                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24707         } else {
24708                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24709                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24710                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24711
24712                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24713                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24714
24715                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24716
24717                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24718                                          state->vga_master[core]);
24719                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24720                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24721                                                  TXFBMIX_G, state->fbmix[core]);
24722                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24723                                                  INTPAG_MASTER,
24724                                                  state->intpa_master[core]);
24725                         } else {
24726                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24727                                                  TXFBMIX_A, state->fbmix[core]);
24728                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24729                                                  INTPAA_MASTER,
24730                                                  state->intpa_master[core]);
24731                         }
24732
24733                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24734                                       0xa6 : 0xa7, state->afectrl[core]);
24735                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24736                                       0xa5, state->afeoverride[core]);
24737                 }
24738
24739                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24740                                             (state->mm & 0xff));
24741
24742                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24743         }
24744 }
24745
24746 static void
24747 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24748                 u32 end)
24749 {
24750         u32 *buf, *src, *dst, sz;
24751
24752         sz = end - start + 1;
24753
24754         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24755         if (NULL == buf)
24756                 return;
24757
24758         src = buf;
24759         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24760
24761         wlc_phy_table_read_nphy(pi,
24762                                 (core ==
24763                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24764                                  NPHY_TBL_ID_EPSILONTBL1),
24765                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24766
24767         do {
24768                 u32 phy_a1, phy_a2;
24769                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24770
24771                 phy_a1 = end - min(end, (winsz >> 1));
24772                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24773                                end + (winsz >> 1));
24774                 phy_a3 = phy_a2 - phy_a1 + 1;
24775                 phy_a6 = 0;
24776                 phy_a7 = 0;
24777
24778                 do {
24779                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24780                                                     &phy_a5);
24781                         phy_a6 += phy_a4;
24782                         phy_a7 += phy_a5;
24783                 } while (phy_a2-- != phy_a1);
24784
24785                 phy_a6 /= phy_a3;
24786                 phy_a7 /= phy_a3;
24787                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24788         } while (end-- != start);
24789
24790         wlc_phy_table_write_nphy(pi,
24791                                  (core ==
24792                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24793                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24794
24795         kfree(buf);
24796 }
24797
24798 static void
24799 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24800                 enum phy_cal_mode cal_mode, u8 core)
24801 {
24802         u16 phy_a1, phy_a2, phy_a3;
24803         u16 phy_a4, phy_a5;
24804         bool phy_a6;
24805         u8 phy_a7, m[2];
24806         u32 phy_a8 = 0;
24807         struct nphy_txgains phy_a9;
24808
24809         if (NREV_LT(pi->pubpi.phy_rev, 3))
24810                 return;
24811
24812         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24813
24814         phy_a6 = ((cal_mode == CAL_GCTRL)
24815                   || (cal_mode == CAL_SOFT)) ? true : false;
24816
24817         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24818
24819                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24820
24821                 if (CHSPEC_IS2G(pi->radio_chanspec))
24822                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24823                                   (phy_a9.txgm[core] << 12) |
24824                                   (phy_a9.pga[core] << 8) |
24825                                   (txgains->gains.pad[core] << 3) |
24826                                   (phy_a9.ipa[core]));
24827                 else
24828                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24829                                   (phy_a9.txgm[core] << 12) |
24830                                   (txgains->gains.pga[core] << 8) |
24831                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24832
24833                 wlc_phy_rfctrl_override_1tomany_nphy(
24834                         pi,
24835                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24836                         phy_a5, (1 << core), 0);
24837
24838                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24839                         if ((pi->pubpi.radiorev <= 4)
24840                             || (pi->pubpi.radiorev == 6))
24841                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24842                                           60 : 79;
24843                         else
24844                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24845                                           45 : 64;
24846                 } else {
24847                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24848                 }
24849
24850                 m[phy_a7] = 0;
24851                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24852
24853                 phy_a2 = 63;
24854
24855                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24856                         if ((pi->pubpi.radiorev == 4)
24857                             || (pi->pubpi.radiorev == 6)) {
24858                                 phy_a1 = 30;
24859                                 phy_a3 = 30;
24860                         } else {
24861                                 phy_a1 = 25;
24862                                 phy_a3 = 25;
24863                         }
24864                 } else {
24865                         if ((pi->pubpi.radiorev == 5)
24866                             || (pi->pubpi.radiorev == 7)
24867                             || (pi->pubpi.radiorev == 8)) {
24868                                 phy_a1 = 25;
24869                                 phy_a3 = 25;
24870                         } else {
24871                                 phy_a1 = 35;
24872                                 phy_a3 = 35;
24873                         }
24874                 }
24875
24876                 if (cal_mode == CAL_GCTRL) {
24877                         if ((pi->pubpi.radiorev == 5)
24878                             && (CHSPEC_IS2G(pi->radio_chanspec)))
24879                                 phy_a1 = 55;
24880                         else if (((pi->pubpi.radiorev == 7) &&
24881                                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
24882                                  ((pi->pubpi.radiorev == 8) &&
24883                                   (CHSPEC_IS2G(pi->radio_chanspec))))
24884                                 phy_a1 = 60;
24885                         else
24886                                 phy_a1 = 63;
24887
24888                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24889
24890                         phy_a1 = 35;
24891                         phy_a3 = 35;
24892                 }
24893
24894                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24895                             0x29b, (0x1 << 0), (1) << 0);
24896
24897                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24898                             0x29b, (0x1 << 0), (0) << 0);
24899
24900                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24901                             0x2a4, (0x1 << 13), (1) << 13);
24902
24903                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24904                             0x2a4, (0x1 << 13), (0) << 13);
24905
24906                 write_phy_reg(pi, 0x2a1, 0x80);
24907                 write_phy_reg(pi, 0x2a2, 0x100);
24908
24909                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24910                             0x2a4, (0x7 << 4), (11) << 4);
24911
24912                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24913                             0x2a4, (0x7 << 8), (11) << 8);
24914
24915                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24916                             0x2a4, (0x7 << 0), (0x3) << 0);
24917
24918                 write_phy_reg(pi, 0x2e5, 0x20);
24919
24920                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24921
24922                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24923
24924                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24925
24926                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24927                                                   1, ((core == 0) ? 1 : 2), 0,
24928                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24929                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24930                                                   0, ((core == 0) ? 2 : 1), 0,
24931                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24932
24933                 write_phy_reg(pi, 0x2be, 1);
24934                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24935
24936                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24937                                                   0, 0x3, 0,
24938                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24939
24940                 wlc_phy_table_write_nphy(pi,
24941                                          (core ==
24942                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24943                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24944                                          32, &phy_a8);
24945
24946                 if (cal_mode != CAL_GCTRL) {
24947                         if (CHSPEC_IS5G(pi->radio_chanspec))
24948                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24949                 }
24950
24951                 wlc_phy_rfctrl_override_1tomany_nphy(
24952                         pi,
24953                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24954                         phy_a5, (1 << core), 1);
24955
24956         } else {
24957
24958                 if (txgains) {
24959                         if (txgains->useindex) {
24960                                 phy_a4 = 15 - ((txgains->index) >> 3);
24961                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24962                                         if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24963                                             pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24964                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24965                                         } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24966                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
24967                                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24968                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24969                                         } else {
24970                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
24971                                         }
24972                                 } else {
24973                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
24974                                 }
24975                                 wlc_phy_rfctrl_override_nphy(pi,
24976                                                              (0x1 << 13),
24977                                                              phy_a5,
24978                                                              (1 << core), 0);
24979                         } else {
24980                                 wlc_phy_rfctrl_override_nphy(pi,
24981                                                              (0x1 << 13),
24982                                                              0x5bf7,
24983                                                              (1 << core), 0);
24984                         }
24985                 }
24986
24987                 if (CHSPEC_IS2G(pi->radio_chanspec))
24988                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24989                 else
24990                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24991
24992                 m[phy_a7] = 0;
24993                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24994
24995                 phy_a2 = 63;
24996
24997                 if (cal_mode == CAL_FULL) {
24998                         phy_a1 = 25;
24999                         phy_a3 = 25;
25000                 } else if (cal_mode == CAL_SOFT) {
25001                         phy_a1 = 25;
25002                         phy_a3 = 25;
25003                 } else if (cal_mode == CAL_GCTRL) {
25004                         phy_a1 = 63;
25005                         phy_a3 = 25;
25006                 } else {
25007
25008                         phy_a1 = 25;
25009                         phy_a3 = 25;
25010                 }
25011
25012                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
25013                             0x29b, (0x1 << 0), (1) << 0);
25014
25015                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
25016                             0x29b, (0x1 << 0), (0) << 0);
25017
25018                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25019                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25020                                     0x2a4, (0x1 << 13), (1) << 13);
25021
25022                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25023                                     0x2a4, (0x1 << 13), (0) << 13);
25024
25025                         write_phy_reg(pi, 0x2a1, 0x20);
25026                         write_phy_reg(pi, 0x2a2, 0x60);
25027
25028                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25029                                     0x2a4, (0xf << 4), (9) << 4);
25030
25031                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25032                                     0x2a4, (0xf << 8), (9) << 8);
25033
25034                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25035                                     0x2a4, (0xf << 0), (0x2) << 0);
25036
25037                         write_phy_reg(pi, 0x2e5, 0x20);
25038                 } else {
25039                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25040                                     0x2a4, (0x1 << 11), (1) << 11);
25041
25042                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
25043                                     0x2a4, (0x1 << 11), (0) << 11);
25044
25045                         write_phy_reg(pi, 0x2a1, 0x80);
25046                         write_phy_reg(pi, 0x2a2, 0x600);
25047
25048                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25049                                     0x2a4, (0x7 << 4), (0) << 4);
25050
25051                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25052                                     0x2a4, (0x7 << 8), (0) << 8);
25053
25054                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
25055                                     0x2a4, (0x7 << 0), (0x3) << 0);
25056
25057                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
25058
25059                 }
25060
25061                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
25062
25063                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
25064
25065                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
25066
25067                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
25068
25069                 write_phy_reg(pi, 0x2be, 1);
25070                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
25071
25072                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
25073
25074                 wlc_phy_table_write_nphy(pi,
25075                                          (core ==
25076                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
25077                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
25078                                          32, &phy_a8);
25079
25080                 if (cal_mode != CAL_GCTRL)
25081                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
25082         }
25083 }
25084
25085 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25086 {
25087         int phy_a1;
25088         int phy_a2;
25089         bool phy_a3;
25090         struct nphy_ipa_txcalgains phy_a4;
25091         bool phy_a5 = false;
25092         bool phy_a6 = true;
25093         s32 phy_a7, phy_a8;
25094         u32 phy_a9;
25095         int phy_a10;
25096         bool phy_a11 = false;
25097         int phy_a12;
25098         u8 phy_a13 = 0;
25099         u8 phy_a14;
25100         u8 *phy_a15 = NULL;
25101
25102         phy_a4.useindex = true;
25103         phy_a12 = start_gain;
25104
25105         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25106
25107                 phy_a2 = 20;
25108                 phy_a1 = 1;
25109
25110                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25111                         if (pi->pubpi.radiorev == 5) {
25112
25113                                 phy_a15 = pad_gain_codes_used_2057rev5;
25114                                 phy_a13 =
25115                                         ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25116
25117                         } else if ((pi->pubpi.radiorev == 7)
25118                                    || (pi->pubpi.radiorev == 8)) {
25119
25120                                 phy_a15 = pad_gain_codes_used_2057rev7;
25121                                 phy_a13 =
25122                                         ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25123
25124                         } else {
25125
25126                                 phy_a15 = pad_all_gain_codes_2057;
25127                                 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25128                                           1;
25129                         }
25130
25131                 } else {
25132
25133                         phy_a15 = pga_all_gain_codes_2057;
25134                         phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25135                 }
25136
25137                 phy_a14 = 0;
25138
25139                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25140                         if (CHSPEC_IS2G(pi->radio_chanspec))
25141                                 phy_a4.gains.pad[core] =
25142                                         (u16) phy_a15[phy_a12];
25143                         else
25144                                 phy_a4.gains.pga[core] =
25145                                         (u16) phy_a15[phy_a12];
25146
25147                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25148
25149                         wlc_phy_table_read_nphy(pi,
25150                                                 (core ==
25151                                                  PHY_CORE_0 ?
25152                                                  NPHY_TBL_ID_EPSILONTBL0 :
25153                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25154                                                 63, 32, &phy_a9);
25155
25156                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25157
25158                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25159                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25160
25161                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25162                                 if (!phy_a3)
25163                                         phy_a12 -= (u8) phy_a1;
25164
25165                                 phy_a11 = true;
25166                                 break;
25167                         }
25168
25169                         if (phy_a3)
25170                                 phy_a12 += (u8) phy_a1;
25171                         else
25172                                 phy_a12 -= (u8) phy_a1;
25173
25174                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25175                                 if (phy_a12 < phy_a14)
25176                                         phy_a12 = phy_a14;
25177                                 else
25178                                         phy_a12 = phy_a13;
25179
25180                                 phy_a11 = true;
25181                                 break;
25182                         }
25183
25184                         phy_a6 = false;
25185                         phy_a5 = phy_a3;
25186                 }
25187
25188         } else {
25189                 phy_a2 = 10;
25190                 phy_a1 = 8;
25191                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25192                         phy_a4.index = (u8) phy_a12;
25193                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25194
25195                         wlc_phy_table_read_nphy(pi,
25196                                                 (core ==
25197                                                  PHY_CORE_0 ?
25198                                                  NPHY_TBL_ID_EPSILONTBL0 :
25199                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25200                                                 63, 32, &phy_a9);
25201
25202                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25203
25204                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25205                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25206
25207                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25208                                 if (!phy_a3)
25209                                         phy_a12 -= (u8) phy_a1;
25210
25211                                 phy_a11 = true;
25212                                 break;
25213                         }
25214
25215                         if (phy_a3)
25216                                 phy_a12 += (u8) phy_a1;
25217                         else
25218                                 phy_a12 -= (u8) phy_a1;
25219
25220                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
25221                                 if (phy_a12 < 0)
25222                                         phy_a12 = 0;
25223                                 else
25224                                         phy_a12 = 127;
25225
25226                                 phy_a11 = true;
25227                                 break;
25228                         }
25229
25230                         phy_a6 = false;
25231                         phy_a5 = phy_a3;
25232                 }
25233
25234         }
25235
25236         if (NREV_GE(pi->pubpi.phy_rev, 7))
25237                 return (u8) phy_a15[phy_a12];
25238         else
25239                 return (u8) phy_a12;
25240
25241 }
25242
25243 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25244 {
25245         struct nphy_ipa_txcalgains phy_b1[2];
25246         struct nphy_papd_restore_state phy_b2;
25247         bool phy_b3;
25248         u8 phy_b4;
25249         u8 phy_b5;
25250         s16 phy_b6, phy_b7, phy_b8;
25251         u16 phy_b9;
25252         s16 phy_b10, phy_b11, phy_b12;
25253
25254         phy_b11 = 0;
25255         phy_b12 = 0;
25256         phy_b7 = 0;
25257         phy_b8 = 0;
25258         phy_b6 = 0;
25259
25260         if (pi->nphy_papd_skip == 1)
25261                 return;
25262
25263         phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25264                         MCTL_EN_MAC));
25265         if (!phy_b3)
25266                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25267
25268         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25269
25270         pi->nphy_force_papd_cal = false;
25271
25272         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25273                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25274                         wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25275
25276         pi->nphy_papd_last_cal = pi->sh->now;
25277         pi->nphy_papd_recal_counter++;
25278
25279         phy_b4 = pi->nphy_txpwrctrl;
25280         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25281
25282         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25283                                  nphy_papd_scaltbl);
25284         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25285                                  nphy_papd_scaltbl);
25286
25287         phy_b9 = read_phy_reg(pi, 0x01);
25288         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25289
25290         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25291                 s32 i, val = 0;
25292                 for (i = 0; i < 64; i++)
25293                         wlc_phy_table_write_nphy(pi,
25294                                                  ((phy_b5 ==
25295                                                    PHY_CORE_0) ?
25296                                                   NPHY_TBL_ID_EPSILONTBL0 :
25297                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
25298                                                  i, 32, &val);
25299         }
25300
25301         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25302
25303         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25304         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25305                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25306
25307                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25308                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25309                                 if ((pi->pubpi.radiorev == 3)
25310                                     || (pi->pubpi.radiorev == 4)
25311                                     || (pi->pubpi.radiorev == 6)) {
25312                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25313                                                 23;
25314                                 } else if (pi->pubpi.radiorev == 5) {
25315                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25316                                                 0;
25317                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25318                                                 wlc_phy_a3_nphy(
25319                                                         pi,
25320                                                         pi->
25321                                                         nphy_papd_cal_gain_index
25322                                                         [phy_b5],
25323                                                         phy_b5);
25324
25325                                 } else if ((pi->pubpi.radiorev == 7)
25326                                            || (pi->pubpi.radiorev == 8)) {
25327
25328                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25329                                                 0;
25330                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25331                                                 wlc_phy_a3_nphy(
25332                                                         pi,
25333                                                         pi->
25334                                                         nphy_papd_cal_gain_index
25335                                                         [phy_b5],
25336                                                         phy_b5);
25337
25338                                 }
25339
25340                                 phy_b1[phy_b5].gains.pad[phy_b5] =
25341                                         pi->nphy_papd_cal_gain_index[phy_b5];
25342
25343                         } else {
25344                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25345                                 pi->nphy_papd_cal_gain_index[phy_b5] =
25346                                         wlc_phy_a3_nphy(
25347                                                 pi,
25348                                                 pi->
25349                                                 nphy_papd_cal_gain_index
25350                                                 [phy_b5], phy_b5);
25351                                 phy_b1[phy_b5].gains.pga[phy_b5] =
25352                                         pi->nphy_papd_cal_gain_index[phy_b5];
25353                         }
25354                 } else {
25355                         phy_b1[phy_b5].useindex = true;
25356                         phy_b1[phy_b5].index = 16;
25357                         phy_b1[phy_b5].index =
25358                                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25359                                                 phy_b5);
25360
25361                         pi->nphy_papd_cal_gain_index[phy_b5] =
25362                                 15 - ((phy_b1[phy_b5].index) >> 3);
25363                 }
25364
25365                 switch (pi->nphy_papd_cal_type) {
25366                 case 0:
25367                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25368                         break;
25369                 case 1:
25370                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25371                         break;
25372                 }
25373
25374                 if (NREV_GE(pi->pubpi.phy_rev, 7))
25375                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25376         }
25377
25378         if (NREV_LT(pi->pubpi.phy_rev, 7))
25379                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25380
25381         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25382                 int eps_offset = 0;
25383
25384                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25385                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25386                                 if (pi->pubpi.radiorev == 3)
25387                                         eps_offset = -2;
25388                                 else if (pi->pubpi.radiorev == 5)
25389                                         eps_offset = 3;
25390                                 else
25391                                         eps_offset = -1;
25392                         } else {
25393                                 eps_offset = 2;
25394                         }
25395
25396                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25397                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25398                                 phy_b10 = 0;
25399                                 if ((pi->pubpi.radiorev == 3) ||
25400                                     (pi->pubpi.radiorev == 4) ||
25401                                     (pi->pubpi.radiorev == 6)) {
25402                                         phy_b12 = -(
25403                                             nphy_papd_padgain_dlt_2g_2057rev3n4
25404                                                              [phy_b8] + 1) / 2;
25405                                         phy_b10 = -1;
25406                                 } else if (pi->pubpi.radiorev == 5) {
25407                                         phy_b12 = -(
25408                                             nphy_papd_padgain_dlt_2g_2057rev5
25409                                                              [phy_b8] + 1) / 2;
25410                                 } else if ((pi->pubpi.radiorev == 7) ||
25411                                            (pi->pubpi.radiorev == 8)) {
25412                                         phy_b12 = -(
25413                                             nphy_papd_padgain_dlt_2g_2057rev7
25414                                                              [phy_b8] + 1) / 2;
25415                                 }
25416                         } else {
25417                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25418                                 if ((pi->pubpi.radiorev == 3) ||
25419                                     (pi->pubpi.radiorev == 4) ||
25420                                     (pi->pubpi.radiorev == 6))
25421                                         phy_b11 =
25422                                                 -(nphy_papd_pgagain_dlt_5g_2057
25423                                                   [phy_b7]
25424                                                   + 1) / 2;
25425                                 else if ((pi->pubpi.radiorev == 7)
25426                                          || (pi->pubpi.radiorev == 8))
25427                                         phy_b11 = -(
25428                                               nphy_papd_pgagain_dlt_5g_2057rev7
25429                                                              [phy_b7] + 1) / 2;
25430
25431                                 phy_b10 = -9;
25432                         }
25433
25434                         if (CHSPEC_IS2G(pi->radio_chanspec))
25435                                 phy_b6 =
25436                                         -60 + 27 + eps_offset + phy_b12 +
25437                                         phy_b10;
25438                         else
25439                                 phy_b6 =
25440                                         -60 + 27 + eps_offset + phy_b11 +
25441                                         phy_b10;
25442
25443                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25444                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25445
25446                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25447                 } else {
25448                         if (NREV_LT(pi->pubpi.phy_rev, 5))
25449                                 eps_offset = 4;
25450                         else
25451                                 eps_offset = 2;
25452
25453                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25454
25455                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25456                                 phy_b11 =
25457                                         -(nphy_papd_pga_gain_delta_ipa_2g[
25458                                                   phy_b7] +
25459                                           1) / 2;
25460                                 phy_b10 = 0;
25461                         } else {
25462                                 phy_b11 =
25463                                         -(nphy_papd_pga_gain_delta_ipa_5g[
25464                                                   phy_b7] +
25465                                           1) / 2;
25466                                 phy_b10 = -9;
25467                         }
25468
25469                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25470
25471                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25472                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25473
25474                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25475                 }
25476         }
25477
25478         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25479                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25480
25481         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25482                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25483
25484         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25485                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25486                             0x2a4, (0x1 << 13), (0) << 13);
25487
25488                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25489                             0x2a4, (0x1 << 13), (0) << 13);
25490
25491         } else {
25492                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25493                             0x2a4, (0x1 << 11), (0) << 11);
25494
25495                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25496                             0x2a4, (0x1 << 11), (0) << 11);
25497
25498         }
25499         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25500
25501         write_phy_reg(pi, 0x01, phy_b9);
25502
25503         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25504
25505         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25506         if (phy_b4 == PHY_TPC_HW_OFF) {
25507                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25508                                          (s8) (pi->nphy_txpwrindex[0].
25509                                                index_internal), false);
25510                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25511                                          (s8) (pi->nphy_txpwrindex[1].
25512                                                index_internal), false);
25513         }
25514
25515         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25516
25517         if (!phy_b3)
25518                 wlapi_enable_mac(pi->sh->physhim);
25519 }
25520
25521 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25522 {
25523         struct nphy_txgains target_gain;
25524         u8 tx_pwr_ctrl_state;
25525         bool fullcal = true;
25526         bool restore_tx_gain = false;
25527         bool mphase;
25528
25529         if (PHY_MUTED(pi))
25530                 return;
25531
25532         if (caltype == PHY_PERICAL_AUTO)
25533                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25534         else if (caltype == PHY_PERICAL_PARTIAL)
25535                 fullcal = false;
25536
25537         if (pi->cal_type_override != PHY_PERICAL_AUTO)
25538                 fullcal =
25539                         (pi->cal_type_override ==
25540                          PHY_PERICAL_FULL) ? true : false;
25541
25542         if ((pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT)) {
25543                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25544                         wlc_phy_cal_perical_mphase_restart(pi);
25545         }
25546
25547         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL))
25548                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25549
25550         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25551
25552         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25553
25554         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25555             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25556                 pi->nphy_cal_orig_pwr_idx[0] =
25557                         (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25558                 pi->nphy_cal_orig_pwr_idx[1] =
25559                         (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25560
25561                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25562                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25563                                                 0x110, 16,
25564                                                 pi->nphy_cal_orig_tx_gain);
25565                 } else {
25566                         pi->nphy_cal_orig_tx_gain[0] = 0;
25567                         pi->nphy_cal_orig_tx_gain[1] = 0;
25568                 }
25569         }
25570         target_gain = wlc_phy_get_tx_gain_nphy(pi);
25571         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25572         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25573
25574         if (pi->antsel_type == ANTSEL_2x3)
25575                 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25576
25577         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25578         if (!mphase) {
25579
25580                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25581                         wlc_phy_precal_txgain_nphy(pi);
25582                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25583                         restore_tx_gain = true;
25584
25585                         target_gain = pi->nphy_cal_target_gain;
25586                 }
25587                 if (0 ==
25588                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25589                                             mphase)) {
25590                         if (PHY_IPA(pi))
25591                                 wlc_phy_a4(pi, true);
25592
25593                         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25594                         wlapi_enable_mac(pi->sh->physhim);
25595                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25596                                              10000);
25597                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25598                         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25599
25600                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25601                                         (pi->first_cal_after_assoc ||
25602                                         (pi->cal_type_override ==
25603                                          PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25604                                 wlc_phy_savecal_nphy(pi);
25605
25606                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25607
25608                                 pi->nphy_perical_last = pi->sh->now;
25609                         }
25610                 }
25611                 if (caltype != PHY_PERICAL_AUTO)
25612                         wlc_phy_rssi_cal_nphy(pi);
25613
25614                 if (pi->first_cal_after_assoc
25615                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25616                         pi->first_cal_after_assoc = false;
25617                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25618                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25619                 }
25620
25621                 if (NREV_GE(pi->pubpi.phy_rev, 3))
25622                         wlc_phy_radio205x_vcocal_nphy(pi);
25623         } else {
25624                 switch (pi->mphase_cal_phase_id) {
25625                 case MPHASE_CAL_STATE_INIT:
25626                         pi->nphy_perical_last = pi->sh->now;
25627                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25628
25629                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25630                                 wlc_phy_precal_txgain_nphy(pi);
25631
25632                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25633                         pi->mphase_cal_phase_id++;
25634                         break;
25635
25636                 case MPHASE_CAL_STATE_TXPHASE0:
25637                 case MPHASE_CAL_STATE_TXPHASE1:
25638                 case MPHASE_CAL_STATE_TXPHASE2:
25639                 case MPHASE_CAL_STATE_TXPHASE3:
25640                 case MPHASE_CAL_STATE_TXPHASE4:
25641                 case MPHASE_CAL_STATE_TXPHASE5:
25642                         if ((pi->radar_percal_mask & 0x10) != 0)
25643                                 pi->nphy_rxcal_active = true;
25644
25645                         if (wlc_phy_cal_txiqlo_nphy
25646                                     (pi, pi->nphy_cal_target_gain, fullcal,
25647                                     true) != 0) {
25648
25649                                 wlc_phy_cal_perical_mphase_reset(pi);
25650                                 break;
25651                         }
25652
25653                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25654                             (pi->mphase_cal_phase_id ==
25655                              MPHASE_CAL_STATE_TXPHASE4))
25656                                 pi->mphase_cal_phase_id += 2;
25657                         else
25658                                 pi->mphase_cal_phase_id++;
25659                         break;
25660
25661                 case MPHASE_CAL_STATE_PAPDCAL:
25662                         if ((pi->radar_percal_mask & 0x2) != 0)
25663                                 pi->nphy_rxcal_active = true;
25664
25665                         if (PHY_IPA(pi))
25666                                 wlc_phy_a4(pi, true);
25667
25668                         pi->mphase_cal_phase_id++;
25669                         break;
25670
25671                 case MPHASE_CAL_STATE_RXCAL:
25672                         if ((pi->radar_percal_mask & 0x1) != 0)
25673                                 pi->nphy_rxcal_active = true;
25674                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25675                                                   (pi->first_cal_after_assoc ||
25676                                                    (pi->cal_type_override ==
25677                                                     PHY_PERICAL_FULL)) ? 2 : 0,
25678                                                   false) == 0)
25679                                 wlc_phy_savecal_nphy(pi);
25680
25681                         pi->mphase_cal_phase_id++;
25682                         break;
25683
25684                 case MPHASE_CAL_STATE_RSSICAL:
25685                         if ((pi->radar_percal_mask & 0x4) != 0)
25686                                 pi->nphy_rxcal_active = true;
25687                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25688                         wlc_phy_rssi_cal_nphy(pi);
25689
25690                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25691                                 wlc_phy_radio205x_vcocal_nphy(pi);
25692
25693                         restore_tx_gain = true;
25694
25695                         if (pi->first_cal_after_assoc)
25696                                 pi->mphase_cal_phase_id++;
25697                         else
25698                                 wlc_phy_cal_perical_mphase_reset(pi);
25699
25700                         break;
25701
25702                 case MPHASE_CAL_STATE_IDLETSSI:
25703                         if ((pi->radar_percal_mask & 0x8) != 0)
25704                                 pi->nphy_rxcal_active = true;
25705
25706                         if (pi->first_cal_after_assoc) {
25707                                 pi->first_cal_after_assoc = false;
25708                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25709                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25710                         }
25711
25712                         wlc_phy_cal_perical_mphase_reset(pi);
25713                         break;
25714
25715                 default:
25716                         wlc_phy_cal_perical_mphase_reset(pi);
25717                         break;
25718                 }
25719         }
25720
25721         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25722                 if (restore_tx_gain) {
25723                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25724
25725                                 wlc_phy_txpwr_index_nphy(pi, 1,
25726                                                          pi->
25727                                                          nphy_cal_orig_pwr_idx
25728                                                          [0], false);
25729                                 wlc_phy_txpwr_index_nphy(pi, 2,
25730                                                          pi->
25731                                                          nphy_cal_orig_pwr_idx
25732                                                          [1], false);
25733
25734                                 pi->nphy_txpwrindex[0].index = -1;
25735                                 pi->nphy_txpwrindex[1].index = -1;
25736                         } else {
25737                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25738                                                          (s8) (pi->
25739                                                                nphy_txpwrindex
25740                                                                [0].
25741                                                                index_internal),
25742                                                          false);
25743                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25744                                                          (s8) (pi->
25745                                                                nphy_txpwrindex
25746                                                                [1].
25747                                                                index_internal),
25748                                                          false);
25749                         }
25750                 }
25751         }
25752
25753         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25754         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25755         wlapi_enable_mac(pi->sh->physhim);
25756 }
25757
25758 int
25759 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25760                         bool fullcal, bool mphase)
25761 {
25762         u16 val;
25763         u16 tbl_buf[11];
25764         u8 cal_cnt;
25765         u16 cal_cmd;
25766         u8 num_cals, max_cal_cmds;
25767         u16 core_no, cal_type;
25768         u16 diq_start = 0;
25769         u8 phy_bw;
25770         u16 max_val;
25771         u16 tone_freq;
25772         u16 gain_save[2];
25773         u16 cal_gain[2];
25774         struct nphy_iqcal_params cal_params[2];
25775         u32 tbl_len;
25776         void *tbl_ptr;
25777         bool ladder_updated[2];
25778         u8 mphase_cal_lastphase = 0;
25779         int bcmerror = 0;
25780         bool phyhang_avoid_state = false;
25781
25782         u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25783                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25784                 0x1902,
25785                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25786                 0x6407
25787         };
25788
25789         u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25790                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25791                 0x3200,
25792                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25793                 0x6407
25794         };
25795
25796         u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25797                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25798                 0x1202,
25799                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25800                 0x4707
25801         };
25802
25803         u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25804                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25805                 0x2300,
25806                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25807                 0x4707
25808         };
25809
25810         u16 tbl_tx_iqlo_cal_startcoefs[] = {
25811                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25812                 0x0000
25813         };
25814
25815         u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25816                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25817                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25818         };
25819
25820         u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25821                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25822                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25823         };
25824
25825         u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25826                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25827                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25828                 0x0000
25829         };
25830
25831         u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25832                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25833                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25834         };
25835
25836         u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25837                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25838                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25839         };
25840
25841         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25842
25843         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25844                 phyhang_avoid_state = pi->phyhang_avoid;
25845                 pi->phyhang_avoid = false;
25846         }
25847
25848         if (CHSPEC_IS40(pi->radio_chanspec))
25849                 phy_bw = 40;
25850         else
25851                 phy_bw = 20;
25852
25853         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25854
25855         for (core_no = 0; core_no <= 1; core_no++) {
25856                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25857                                               &cal_params[core_no]);
25858                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25859         }
25860
25861         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25862
25863         wlc_phy_txcal_radio_setup_nphy(pi);
25864
25865         wlc_phy_txcal_physetup_nphy(pi);
25866
25867         ladder_updated[0] = ladder_updated[1] = false;
25868         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25869               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25870                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25871
25872                 if (phy_bw == 40) {
25873                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25874                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25875                 } else {
25876                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25877                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25878                 }
25879                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25880                                          16, tbl_ptr);
25881
25882                 if (phy_bw == 40) {
25883                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25884                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25885                 } else {
25886                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25887                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25888                 }
25889                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25890                                          16, tbl_ptr);
25891         }
25892
25893         if (NREV_GE(pi->pubpi.phy_rev, 7))
25894                 write_phy_reg(pi, 0xc2, 0x8ad9);
25895         else
25896                 write_phy_reg(pi, 0xc2, 0x8aa9);
25897
25898         max_val = 250;
25899         tone_freq = (phy_bw == 20) ? 2500 : 5000;
25900
25901         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25902                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25903                 bcmerror = 0;
25904         } else {
25905                 bcmerror =
25906                         wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25907                                              false);
25908         }
25909
25910         if (bcmerror == 0) {
25911
25912                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25913                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
25914                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25915                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25916                                 tbl_len -= 2;
25917                 } else {
25918                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25919
25920                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
25921                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25922                                 if (NREV_LT(pi->pubpi.phy_rev, 3))
25923                                         tbl_len -= 2;
25924                         } else {
25925
25926                                 fullcal = true;
25927
25928                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25929                                         tbl_ptr =
25930                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25931                                         tbl_len = ARRAY_SIZE(
25932                                            tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25933                                 } else {
25934                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25935                                         tbl_len = ARRAY_SIZE(
25936                                                     tbl_tx_iqlo_cal_startcoefs);
25937                                 }
25938                         }
25939                 }
25940                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25941                                          16, tbl_ptr);
25942
25943                 if (fullcal) {
25944                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25945                                        ARRAY_SIZE(
25946                                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25947                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25948                 } else {
25949                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25950                                        ARRAY_SIZE(
25951                                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25952                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25953                 }
25954
25955                 if (mphase) {
25956                         cal_cnt = pi->mphase_txcal_cmdidx;
25957                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25958                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25959                         else
25960                                 num_cals = max_cal_cmds;
25961                 } else {
25962                         cal_cnt = 0;
25963                         num_cals = max_cal_cmds;
25964                 }
25965
25966                 for (; cal_cnt < num_cals; cal_cnt++) {
25967
25968                         if (fullcal) {
25969                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25970                                           tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25971                                           [cal_cnt] :
25972                                           tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25973                         } else {
25974                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25975                                           tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25976                                         cal_cnt]
25977                                           : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25978                         }
25979
25980                         core_no = ((cal_cmd & 0x3000) >> 12);
25981                         cal_type = ((cal_cmd & 0x0F00) >> 8);
25982
25983                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25984                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
25985                              PHY_IPA(pi)
25986                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25987                                 if (!ladder_updated[core_no]) {
25988                                         wlc_phy_update_txcal_ladder_nphy(
25989                                                 pi,
25990                                                 core_no);
25991                                         ladder_updated[core_no] = true;
25992                                 }
25993                         }
25994
25995                         val =
25996                                 (cal_params[core_no].
25997                                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
25998                         write_phy_reg(pi, 0xc1, val);
25999
26000                         if ((cal_type == 1) || (cal_type == 3)
26001                             || (cal_type == 4)) {
26002
26003                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26004                                                         1, 69 + core_no, 16,
26005                                                         tbl_buf);
26006
26007                                 diq_start = tbl_buf[0];
26008
26009                                 tbl_buf[0] = 0;
26010                                 wlc_phy_table_write_nphy(pi,
26011                                                          NPHY_TBL_ID_IQLOCAL, 1,
26012                                                          69 + core_no, 16,
26013                                                          tbl_buf);
26014                         }
26015
26016                         write_phy_reg(pi, 0xc0, cal_cmd);
26017
26018                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
26019                                  20000);
26020                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
26021                                  "HW error: txiq calib"))
26022                                 return -EIO;
26023
26024                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26025                                                 tbl_len, 96, 16, tbl_buf);
26026                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26027                                                  tbl_len, 64, 16, tbl_buf);
26028
26029                         if ((cal_type == 1) || (cal_type == 3)
26030                             || (cal_type == 4)) {
26031
26032                                 tbl_buf[0] = diq_start;
26033
26034                         }
26035
26036                 }
26037
26038                 if (mphase) {
26039                         pi->mphase_txcal_cmdidx = num_cals;
26040                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
26041                                 pi->mphase_txcal_cmdidx = 0;
26042                 }
26043
26044                 mphase_cal_lastphase =
26045                         (NREV_LE(pi->pubpi.phy_rev, 2)) ?
26046                         MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
26047
26048                 if (!mphase
26049                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
26050
26051                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
26052                                                 16, tbl_buf);
26053                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26054                                                  16, tbl_buf);
26055
26056                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26057
26058                                 tbl_buf[0] = 0;
26059                                 tbl_buf[1] = 0;
26060                                 tbl_buf[2] = 0;
26061                                 tbl_buf[3] = 0;
26062
26063                         }
26064                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26065                                                  16, tbl_buf);
26066
26067                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
26068                                                 16, tbl_buf);
26069                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26070                                                  16, tbl_buf);
26071
26072                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26073                                                  16, tbl_buf);
26074
26075                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
26076                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26077                                 tbl_len -= 2;
26078
26079                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26080                                                 tbl_len, 96, 16,
26081                                                 pi->nphy_txiqlocal_bestc);
26082
26083                         pi->nphy_txiqlocal_coeffsvalid = true;
26084                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
26085                 } else {
26086                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26087                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26088                                 tbl_len -= 2;
26089
26090                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26091                                                 tbl_len, 96, 16,
26092                                                 pi->mphase_txcal_bestcoeffs);
26093                 }
26094
26095                 wlc_phy_stopplayback_nphy(pi);
26096
26097                 write_phy_reg(pi, 0xc2, 0x0000);
26098
26099         }
26100
26101         wlc_phy_txcal_phycleanup_nphy(pi);
26102
26103         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26104                                  gain_save);
26105
26106         wlc_phy_txcal_radio_cleanup_nphy(pi);
26107
26108         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26109                 if (!mphase
26110                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26111                         wlc_phy_tx_iq_war_nphy(pi);
26112         }
26113
26114         if (NREV_GE(pi->pubpi.phy_rev, 4))
26115                 pi->phyhang_avoid = phyhang_avoid_state;
26116
26117         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26118
26119         return bcmerror;
26120 }
26121
26122 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26123 {
26124         u16 tbl_buf[7];
26125
26126         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26127             (pi->nphy_txiqlocal_coeffsvalid)) {
26128                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26129                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26130
26131                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26132                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26133                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26134                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26135
26136                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26137                                                  16, pi->nphy_txiqlocal_bestc);
26138
26139                         tbl_buf[0] = 0;
26140                         tbl_buf[1] = 0;
26141                         tbl_buf[2] = 0;
26142                         tbl_buf[3] = 0;
26143                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26144                                                  16, tbl_buf);
26145
26146                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26147                                                  16,
26148                                                  &pi->nphy_txiqlocal_bestc[5]);
26149
26150                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26151                                                  16,
26152                                                  &pi->nphy_txiqlocal_bestc[5]);
26153                 }
26154         }
26155 }
26156
26157 void
26158 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26159                           struct nphy_iq_comp *pcomp)
26160 {
26161         if (write) {
26162                 write_phy_reg(pi, 0x9a, pcomp->a0);
26163                 write_phy_reg(pi, 0x9b, pcomp->b0);
26164                 write_phy_reg(pi, 0x9c, pcomp->a1);
26165                 write_phy_reg(pi, 0x9d, pcomp->b1);
26166         } else {
26167                 pcomp->a0 = read_phy_reg(pi, 0x9a);
26168                 pcomp->b0 = read_phy_reg(pi, 0x9b);
26169                 pcomp->a1 = read_phy_reg(pi, 0x9c);
26170                 pcomp->b1 = read_phy_reg(pi, 0x9d);
26171         }
26172 }
26173
26174 void
26175 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26176                        u16 num_samps, u8 wait_time, u8 wait_for_crs)
26177 {
26178         u8 core;
26179
26180         write_phy_reg(pi, 0x12b, num_samps);
26181         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26182         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26183                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26184
26185         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26186
26187         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26188                  10000);
26189         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26190                  "HW error: rxiq est"))
26191                 return;
26192
26193         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26194                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26195                         est[core].i_pwr =
26196                                 (read_phy_reg(pi,
26197                                               NPHY_IqestipwrAccHi(core)) << 16)
26198                                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26199                         est[core].q_pwr =
26200                                 (read_phy_reg(pi,
26201                                               NPHY_IqestqpwrAccHi(core)) << 16)
26202                                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26203                         est[core].iq_prod =
26204                                 (read_phy_reg(pi,
26205                                               NPHY_IqestIqAccHi(core)) << 16) |
26206                                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26207                 }
26208         }
26209 }
26210
26211 #define CAL_RETRY_CNT 2
26212 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26213 {
26214         u8 curr_core;
26215         struct phy_iq_est est[PHY_CORE_MAX];
26216         struct nphy_iq_comp old_comp, new_comp;
26217         s32 iq = 0;
26218         u32 ii = 0, qq = 0;
26219         s16 iq_nbits, qq_nbits, brsh, arsh;
26220         s32 a, b, temp;
26221         int bcmerror = 0;
26222         uint cal_retry = 0;
26223
26224         if (core_mask == 0x0)
26225                 return;
26226
26227         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26228         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26229         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26230
26231 cal_try:
26232         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26233
26234         new_comp = old_comp;
26235
26236         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26237
26238                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26239                         iq = est[curr_core].iq_prod;
26240                         ii = est[curr_core].i_pwr;
26241                         qq = est[curr_core].q_pwr;
26242                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26243                         iq = est[curr_core].iq_prod;
26244                         ii = est[curr_core].i_pwr;
26245                         qq = est[curr_core].q_pwr;
26246                 } else {
26247                         continue;
26248                 }
26249
26250                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26251                         bcmerror = -EBADE;
26252                         break;
26253                 }
26254
26255                 iq_nbits = wlc_phy_nbits(iq);
26256                 qq_nbits = wlc_phy_nbits(qq);
26257
26258                 arsh = 10 - (30 - iq_nbits);
26259                 if (arsh >= 0) {
26260                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26261                         temp = (s32) (ii >> arsh);
26262                         if (temp == 0) {
26263                                 bcmerror = -EBADE;
26264                                 break;
26265                         }
26266                 } else {
26267                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26268                         temp = (s32) (ii << -arsh);
26269                         if (temp == 0) {
26270                                 bcmerror = -EBADE;
26271                                 break;
26272                         }
26273                 }
26274
26275                 a /= temp;
26276
26277                 brsh = qq_nbits - 31 + 20;
26278                 if (brsh >= 0) {
26279                         b = (qq << (31 - qq_nbits));
26280                         temp = (s32) (ii >> brsh);
26281                         if (temp == 0) {
26282                                 bcmerror = -EBADE;
26283                                 break;
26284                         }
26285                 } else {
26286                         b = (qq << (31 - qq_nbits));
26287                         temp = (s32) (ii << -brsh);
26288                         if (temp == 0) {
26289                                 bcmerror = -EBADE;
26290                                 break;
26291                         }
26292                 }
26293                 b /= temp;
26294                 b -= a * a;
26295                 b = (s32) int_sqrt((unsigned long) b);
26296                 b -= (1 << 10);
26297
26298                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26299                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26300                                 new_comp.a0 = (s16) a & 0x3ff;
26301                                 new_comp.b0 = (s16) b & 0x3ff;
26302                         } else {
26303
26304                                 new_comp.a0 = (s16) b & 0x3ff;
26305                                 new_comp.b0 = (s16) a & 0x3ff;
26306                         }
26307                 }
26308                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26309                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26310                                 new_comp.a1 = (s16) a & 0x3ff;
26311                                 new_comp.b1 = (s16) b & 0x3ff;
26312                         } else {
26313
26314                                 new_comp.a1 = (s16) b & 0x3ff;
26315                                 new_comp.b1 = (s16) a & 0x3ff;
26316                         }
26317                 }
26318         }
26319
26320         if (bcmerror != 0) {
26321                 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26322
26323                 if (cal_retry < CAL_RETRY_CNT) {
26324                         cal_retry++;
26325                         goto cal_try;
26326                 }
26327
26328                 new_comp = old_comp;
26329         }
26330
26331         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26332 }
26333
26334 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26335 {
26336         u16 offtune_val;
26337         u16 bias_g = 0;
26338         u16 bias_a = 0;
26339
26340         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26341                 if (rx_core == PHY_CORE_0) {
26342                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26343                                 pi->tx_rx_cal_radio_saveregs[0] =
26344                                         read_radio_reg(pi,
26345                                             RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26346                                 pi->tx_rx_cal_radio_saveregs[1] =
26347                                         read_radio_reg(pi,
26348                                             RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26349
26350                                 write_radio_reg(pi,
26351                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26352                                         0x3);
26353                                 write_radio_reg(pi,
26354                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26355                                         0xaf);
26356
26357                         } else {
26358                                 pi->tx_rx_cal_radio_saveregs[0] =
26359                                         read_radio_reg(pi,
26360                                             RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26361                                 pi->tx_rx_cal_radio_saveregs[1] =
26362                                         read_radio_reg(pi,
26363                                             RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26364
26365                                 write_radio_reg(
26366                                         pi,
26367                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26368                                         0x3);
26369                                 write_radio_reg(
26370                                         pi,
26371                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26372                                         0x7f);
26373                         }
26374
26375                 } else {
26376                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26377                                 pi->tx_rx_cal_radio_saveregs[0] =
26378                                         read_radio_reg(pi,
26379                                             RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26380                                 pi->tx_rx_cal_radio_saveregs[1] =
26381                                         read_radio_reg(pi,
26382                                             RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26383
26384                                 write_radio_reg(
26385                                         pi,
26386                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26387                                         0x3);
26388                                 write_radio_reg(
26389                                         pi,
26390                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26391                                         0xaf);
26392
26393                         } else {
26394                                 pi->tx_rx_cal_radio_saveregs[0] =
26395                                         read_radio_reg(pi,
26396                                             RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26397                                 pi->tx_rx_cal_radio_saveregs[1] =
26398                                         read_radio_reg(pi,
26399                                             RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26400
26401                                 write_radio_reg(pi,
26402                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26403                                         0x3);
26404                                 write_radio_reg(pi,
26405                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26406                                         0x7f);
26407                         }
26408                 }
26409
26410         } else {
26411                 if (rx_core == PHY_CORE_0) {
26412                         pi->tx_rx_cal_radio_saveregs[0] =
26413                                 read_radio_reg(pi,
26414                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26415                                                RADIO_2056_TX1);
26416                         pi->tx_rx_cal_radio_saveregs[1] =
26417                                 read_radio_reg(pi,
26418                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26419                                                RADIO_2056_RX0);
26420
26421                         if (pi->pubpi.radiorev >= 5) {
26422                                 pi->tx_rx_cal_radio_saveregs[2] =
26423                                         read_radio_reg(pi,
26424                                                        RADIO_2056_RX_RXSPARE2 |
26425                                                        RADIO_2056_RX0);
26426                                 pi->tx_rx_cal_radio_saveregs[3] =
26427                                         read_radio_reg(pi,
26428                                                        RADIO_2056_TX_TXSPARE2 |
26429                                                        RADIO_2056_TX1);
26430                         }
26431
26432                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26433
26434                                 if (pi->pubpi.radiorev >= 5) {
26435                                         pi->tx_rx_cal_radio_saveregs[4] =
26436                                                 read_radio_reg(pi,
26437                                                       RADIO_2056_RX_LNAA_MASTER
26438                                                       | RADIO_2056_RX0);
26439
26440                                         write_radio_reg(
26441                                                 pi,
26442                                                 RADIO_2056_RX_LNAA_MASTER
26443                                                 | RADIO_2056_RX0, 0x40);
26444
26445                                         write_radio_reg(pi,
26446                                                 RADIO_2056_TX_TXSPARE2 |
26447                                                 RADIO_2056_TX1, bias_a);
26448
26449                                         write_radio_reg(pi,
26450                                                 RADIO_2056_RX_RXSPARE2 |
26451                                                 RADIO_2056_RX0, bias_a);
26452                                 } else {
26453                                         pi->tx_rx_cal_radio_saveregs[4] =
26454                                                 read_radio_reg(pi,
26455                                                         RADIO_2056_RX_LNAA_TUNE
26456                                                         | RADIO_2056_RX0);
26457
26458                                         offtune_val =
26459                                                 (pi->tx_rx_cal_radio_saveregs
26460                                                  [2] & 0xF0) >> 8;
26461                                         offtune_val =
26462                                                 (offtune_val <= 0x7) ? 0xF : 0;
26463
26464                                         mod_radio_reg(pi,
26465                                                       RADIO_2056_RX_LNAA_TUNE |
26466                                                       RADIO_2056_RX0, 0xF0,
26467                                                       (offtune_val << 8));
26468                                 }
26469
26470                                 write_radio_reg(pi,
26471                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26472                                                 RADIO_2056_TX1, 0x9);
26473                                 write_radio_reg(pi,
26474                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26475                                                 RADIO_2056_RX0, 0x9);
26476                         } else {
26477                                 if (pi->pubpi.radiorev >= 5) {
26478                                         pi->tx_rx_cal_radio_saveregs[4] =
26479                                                 read_radio_reg(
26480                                                       pi,
26481                                                       RADIO_2056_RX_LNAG_MASTER
26482                                                     | RADIO_2056_RX0);
26483
26484                                         write_radio_reg(
26485                                                 pi,
26486                                                 RADIO_2056_RX_LNAG_MASTER
26487                                                 | RADIO_2056_RX0, 0x40);
26488
26489                                         write_radio_reg(
26490                                                 pi,
26491                                                 RADIO_2056_TX_TXSPARE2
26492                                                 |
26493                                                 RADIO_2056_TX1, bias_g);
26494
26495                                         write_radio_reg(
26496                                                 pi,
26497                                                 RADIO_2056_RX_RXSPARE2
26498                                                 |
26499                                                 RADIO_2056_RX0, bias_g);
26500
26501                                 } else {
26502                                         pi->tx_rx_cal_radio_saveregs[4] =
26503                                                 read_radio_reg(
26504                                                         pi,
26505                                                         RADIO_2056_RX_LNAG_TUNE
26506                                                         | RADIO_2056_RX0);
26507
26508                                         offtune_val =
26509                                                 (pi->
26510                                                  tx_rx_cal_radio_saveregs[2] &
26511                                                  0xF0) >> 8;
26512                                         offtune_val =
26513                                                 (offtune_val <= 0x7) ? 0xF : 0;
26514
26515                                         mod_radio_reg(pi,
26516                                                       RADIO_2056_RX_LNAG_TUNE |
26517                                                       RADIO_2056_RX0, 0xF0,
26518                                                       (offtune_val << 8));
26519                                 }
26520
26521                                 write_radio_reg(pi,
26522                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26523                                                 RADIO_2056_TX1, 0x6);
26524                                 write_radio_reg(pi,
26525                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26526                                                 RADIO_2056_RX0, 0x6);
26527                         }
26528
26529                 } else {
26530                         pi->tx_rx_cal_radio_saveregs[0] =
26531                                 read_radio_reg(pi,
26532                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26533                                                RADIO_2056_TX0);
26534                         pi->tx_rx_cal_radio_saveregs[1] =
26535                                 read_radio_reg(pi,
26536                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26537                                                RADIO_2056_RX1);
26538
26539                         if (pi->pubpi.radiorev >= 5) {
26540                                 pi->tx_rx_cal_radio_saveregs[2] =
26541                                         read_radio_reg(pi,
26542                                                        RADIO_2056_RX_RXSPARE2 |
26543                                                        RADIO_2056_RX1);
26544                                 pi->tx_rx_cal_radio_saveregs[3] =
26545                                         read_radio_reg(pi,
26546                                                        RADIO_2056_TX_TXSPARE2 |
26547                                                        RADIO_2056_TX0);
26548                         }
26549
26550                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26551
26552                                 if (pi->pubpi.radiorev >= 5) {
26553                                         pi->tx_rx_cal_radio_saveregs[4] =
26554                                                 read_radio_reg(
26555                                                        pi,
26556                                                        RADIO_2056_RX_LNAA_MASTER
26557                                                        | RADIO_2056_RX1);
26558
26559                                         write_radio_reg(
26560                                                 pi,
26561                                                 RADIO_2056_RX_LNAA_MASTER |
26562                                                 RADIO_2056_RX1, 0x40);
26563
26564                                         write_radio_reg(
26565                                                 pi,
26566                                                 RADIO_2056_TX_TXSPARE2
26567                                                 |
26568                                                 RADIO_2056_TX0, bias_a);
26569
26570                                         write_radio_reg(
26571                                                 pi,
26572                                                 RADIO_2056_RX_RXSPARE2
26573                                                 |
26574                                                 RADIO_2056_RX1, bias_a);
26575                                 } else {
26576                                         pi->tx_rx_cal_radio_saveregs[4] =
26577                                                 read_radio_reg(
26578                                                         pi,
26579                                                         RADIO_2056_RX_LNAA_TUNE
26580                                                         | RADIO_2056_RX1);
26581
26582                                         offtune_val =
26583                                                 (pi->
26584                                                  tx_rx_cal_radio_saveregs[2] &
26585                                                  0xF0) >> 8;
26586                                         offtune_val =
26587                                                 (offtune_val <= 0x7) ? 0xF : 0;
26588
26589                                         mod_radio_reg(pi,
26590                                                       RADIO_2056_RX_LNAA_TUNE |
26591                                                       RADIO_2056_RX1, 0xF0,
26592                                                       (offtune_val << 8));
26593                                 }
26594
26595                                 write_radio_reg(pi,
26596                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26597                                                 RADIO_2056_TX0, 0x9);
26598                                 write_radio_reg(pi,
26599                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26600                                                 RADIO_2056_RX1, 0x9);
26601                         } else {
26602                                 if (pi->pubpi.radiorev >= 5) {
26603                                         pi->tx_rx_cal_radio_saveregs[4] =
26604                                                 read_radio_reg(
26605                                                       pi,
26606                                                       RADIO_2056_RX_LNAG_MASTER
26607                                                     | RADIO_2056_RX1);
26608
26609                                         write_radio_reg(
26610                                                 pi,
26611                                                 RADIO_2056_RX_LNAG_MASTER
26612                                                 | RADIO_2056_RX1, 0x40);
26613
26614                                         write_radio_reg(
26615                                                 pi,
26616                                                 RADIO_2056_TX_TXSPARE2
26617                                                 |
26618                                                 RADIO_2056_TX0, bias_g);
26619
26620                                         write_radio_reg(
26621                                                 pi,
26622                                                 RADIO_2056_RX_RXSPARE2
26623                                                 |
26624                                                 RADIO_2056_RX1, bias_g);
26625                                 } else {
26626                                         pi->tx_rx_cal_radio_saveregs[4] =
26627                                                 read_radio_reg(
26628                                                         pi,
26629                                                         RADIO_2056_RX_LNAG_TUNE
26630                                                         | RADIO_2056_RX1);
26631
26632                                         offtune_val =
26633                                                 (pi->
26634                                                  tx_rx_cal_radio_saveregs[2] &
26635                                                  0xF0) >> 8;
26636                                         offtune_val =
26637                                                 (offtune_val <= 0x7) ? 0xF : 0;
26638
26639                                         mod_radio_reg(pi,
26640                                                       RADIO_2056_RX_LNAG_TUNE |
26641                                                       RADIO_2056_RX1, 0xF0,
26642                                                       (offtune_val << 8));
26643                                 }
26644
26645                                 write_radio_reg(pi,
26646                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26647                                                 RADIO_2056_TX0, 0x6);
26648                                 write_radio_reg(pi,
26649                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26650                                                 RADIO_2056_RX1, 0x6);
26651                         }
26652                 }
26653         }
26654 }
26655
26656 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26657 {
26658         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26659                 if (rx_core == PHY_CORE_0) {
26660                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26661                                 write_radio_reg(
26662                                         pi,
26663                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26664                                         pi->
26665                                         tx_rx_cal_radio_saveregs[0]);
26666                                 write_radio_reg(
26667                                         pi,
26668                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26669                                         pi->
26670                                         tx_rx_cal_radio_saveregs[1]);
26671
26672                         } else {
26673                                 write_radio_reg(
26674                                         pi,
26675                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26676                                         pi->
26677                                         tx_rx_cal_radio_saveregs[0]);
26678                                 write_radio_reg(
26679                                         pi,
26680                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26681                                         pi->
26682                                         tx_rx_cal_radio_saveregs[1]);
26683                         }
26684
26685                 } else {
26686                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26687                                 write_radio_reg(
26688                                         pi,
26689                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26690                                         pi->
26691                                         tx_rx_cal_radio_saveregs[0]);
26692                                 write_radio_reg(
26693                                         pi,
26694                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26695                                         pi->
26696                                         tx_rx_cal_radio_saveregs[1]);
26697
26698                         } else {
26699                                 write_radio_reg(
26700                                         pi,
26701                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26702                                         pi->
26703                                         tx_rx_cal_radio_saveregs[0]);
26704                                 write_radio_reg(
26705                                         pi,
26706                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26707                                         pi->
26708                                         tx_rx_cal_radio_saveregs[1]);
26709                         }
26710                 }
26711
26712         } else {
26713                 if (rx_core == PHY_CORE_0) {
26714                         write_radio_reg(pi,
26715                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26716                                         RADIO_2056_TX1,
26717                                         pi->tx_rx_cal_radio_saveregs[0]);
26718
26719                         write_radio_reg(pi,
26720                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26721                                         RADIO_2056_RX0,
26722                                         pi->tx_rx_cal_radio_saveregs[1]);
26723
26724                         if (pi->pubpi.radiorev >= 5) {
26725                                 write_radio_reg(pi,
26726                                                 RADIO_2056_RX_RXSPARE2 |
26727                                                 RADIO_2056_RX0,
26728                                                 pi->
26729                                                 tx_rx_cal_radio_saveregs[2]);
26730
26731                                 write_radio_reg(pi,
26732                                                 RADIO_2056_TX_TXSPARE2 |
26733                                                 RADIO_2056_TX1,
26734                                                 pi->
26735                                                 tx_rx_cal_radio_saveregs[3]);
26736                         }
26737
26738                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26739                                 if (pi->pubpi.radiorev >= 5)
26740                                         write_radio_reg(
26741                                                 pi,
26742                                                 RADIO_2056_RX_LNAA_MASTER
26743                                                 | RADIO_2056_RX0,
26744                                                 pi->
26745                                                 tx_rx_cal_radio_saveregs
26746                                                 [4]);
26747                                 else
26748                                         write_radio_reg(
26749                                                 pi,
26750                                                 RADIO_2056_RX_LNAA_TUNE
26751                                                 | RADIO_2056_RX0,
26752                                                 pi->
26753                                                 tx_rx_cal_radio_saveregs
26754                                                 [4]);
26755                         } else {
26756                                 if (pi->pubpi.radiorev >= 5)
26757                                         write_radio_reg(
26758                                                 pi,
26759                                                 RADIO_2056_RX_LNAG_MASTER
26760                                                 | RADIO_2056_RX0,
26761                                                 pi->
26762                                                 tx_rx_cal_radio_saveregs
26763                                                 [4]);
26764                                 else
26765                                         write_radio_reg(
26766                                                 pi,
26767                                                 RADIO_2056_RX_LNAG_TUNE
26768                                                 | RADIO_2056_RX0,
26769                                                 pi->
26770                                                 tx_rx_cal_radio_saveregs
26771                                                 [4]);
26772                         }
26773
26774                 } else {
26775                         write_radio_reg(pi,
26776                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26777                                         RADIO_2056_TX0,
26778                                         pi->tx_rx_cal_radio_saveregs[0]);
26779
26780                         write_radio_reg(pi,
26781                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26782                                         RADIO_2056_RX1,
26783                                         pi->tx_rx_cal_radio_saveregs[1]);
26784
26785                         if (pi->pubpi.radiorev >= 5) {
26786                                 write_radio_reg(pi,
26787                                                 RADIO_2056_RX_RXSPARE2 |
26788                                                 RADIO_2056_RX1,
26789                                                 pi->
26790                                                 tx_rx_cal_radio_saveregs[2]);
26791
26792                                 write_radio_reg(pi,
26793                                                 RADIO_2056_TX_TXSPARE2 |
26794                                                 RADIO_2056_TX0,
26795                                                 pi->
26796                                                 tx_rx_cal_radio_saveregs[3]);
26797                         }
26798
26799                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26800                                 if (pi->pubpi.radiorev >= 5)
26801                                         write_radio_reg(
26802                                                 pi,
26803                                                 RADIO_2056_RX_LNAA_MASTER
26804                                                 | RADIO_2056_RX1,
26805                                                 pi->
26806                                                 tx_rx_cal_radio_saveregs
26807                                                 [4]);
26808                                 else
26809                                         write_radio_reg(
26810                                                 pi,
26811                                                 RADIO_2056_RX_LNAA_TUNE
26812                                                 | RADIO_2056_RX1,
26813                                                 pi->
26814                                                 tx_rx_cal_radio_saveregs
26815                                                 [4]);
26816                         } else {
26817                                 if (pi->pubpi.radiorev >= 5)
26818                                         write_radio_reg(
26819                                                 pi,
26820                                                 RADIO_2056_RX_LNAG_MASTER
26821                                                 | RADIO_2056_RX1,
26822                                                 pi->
26823                                                 tx_rx_cal_radio_saveregs
26824                                                 [4]);
26825                                 else
26826                                         write_radio_reg(
26827                                                 pi,
26828                                                 RADIO_2056_RX_LNAG_TUNE
26829                                                 | RADIO_2056_RX1,
26830                                                 pi->
26831                                                 tx_rx_cal_radio_saveregs
26832                                                 [4]);
26833                         }
26834                 }
26835         }
26836 }
26837
26838 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26839 {
26840         u8 tx_core;
26841         u16 rx_antval, tx_antval;
26842
26843         if (NREV_GE(pi->pubpi.phy_rev, 7))
26844                 tx_core = rx_core;
26845         else
26846                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26847
26848         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26849         pi->tx_rx_cal_phy_saveregs[1] =
26850                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26851         pi->tx_rx_cal_phy_saveregs[2] =
26852                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26853         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26854         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26855         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26856         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26857         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26858         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26859         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26860                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26861                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26862                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26863                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26864         }
26865
26866         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26867         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26868         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26869                     0x29b, (0x1 << 0), (0) << 0);
26870
26871         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26872                     0x29b, (0x1 << 0), (0) << 0);
26873
26874         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26875
26876                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26877
26878                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26879
26880         } else {
26881
26882                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26883                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26884                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26885                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26886         }
26887
26888         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26889         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26890                     (0x1 << 2), (0x1 << 2));
26891         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26892                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26893                             (0x1 << 0) | (0x1 << 1), 0);
26894                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26895                             0x8f : 0xa5,
26896                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26897         }
26898
26899         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26900                                          RADIO_MIMO_CORESEL_CORE1 |
26901                                          RADIO_MIMO_CORESEL_CORE2);
26902
26903         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26904                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26905                                                   0, 0, 0,
26906                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26907                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26908                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26909                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26910                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26911                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26912                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26913                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26914                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26915                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26916                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26917                 if (CHSPEC_IS40(pi->radio_chanspec))
26918                         wlc_phy_rfctrl_override_nphy_rev7(
26919                                 pi,
26920                                 (0x1 << 7),
26921                                 2, 0, 0,
26922                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26923                 else
26924                         wlc_phy_rfctrl_override_nphy_rev7(
26925                                 pi,
26926                                 (0x1 << 7),
26927                                 0, 0, 0,
26928                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26929
26930                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26931                                                   0, 0, 0,
26932                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26933                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26934                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26935         } else {
26936                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26937         }
26938
26939         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26940
26941         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26942
26943                 wlc_phy_rfctrlintc_override_nphy(pi,
26944                                                  NPHY_RfctrlIntc_override_TRSW,
26945                                                  0x1, rx_core + 1);
26946         } else {
26947
26948                 if (rx_core == PHY_CORE_0) {
26949                         rx_antval = 0x1;
26950                         tx_antval = 0x8;
26951                 } else {
26952                         rx_antval = 0x4;
26953                         tx_antval = 0x2;
26954                 }
26955
26956                 wlc_phy_rfctrlintc_override_nphy(pi,
26957                                                  NPHY_RfctrlIntc_override_TRSW,
26958                                                  rx_antval, rx_core + 1);
26959                 wlc_phy_rfctrlintc_override_nphy(pi,
26960                                                  NPHY_RfctrlIntc_override_TRSW,
26961                                                  tx_antval, tx_core + 1);
26962         }
26963 }
26964
26965 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26966 {
26967
26968         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26969         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26970                       pi->tx_rx_cal_phy_saveregs[1]);
26971         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26972                       pi->tx_rx_cal_phy_saveregs[2]);
26973         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26974         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26975
26976         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26977         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26978         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26979         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26980         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26981                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26982                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26983                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26984                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26985         }
26986
26987         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26988         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26989 }
26990
26991 static void
26992 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26993                                  u16 *rxgain, u8 cal_type)
26994 {
26995
26996         u16 num_samps;
26997         struct phy_iq_est est[PHY_CORE_MAX];
26998         u8 tx_core;
26999         struct nphy_iq_comp save_comp, zero_comp;
27000         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
27001             thresh_pwr = 10000;
27002         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
27003         bool gainctrl_done = false;
27004         u8 mix_tia_gain = 3;
27005         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
27006         s8 curr_gaintbl_index = 3;
27007         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
27008         const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
27009         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
27010         int fine_gain_idx;
27011         s8 txpwrindex;
27012         u16 nphy_rxcal_txgain[2];
27013
27014         if (NREV_GE(pi->pubpi.phy_rev, 7))
27015                 tx_core = rx_core;
27016         else
27017                 tx_core = 1 - rx_core;
27018
27019         num_samps = 1024;
27020         desired_log2_pwr = (cal_type == 0) ? 13 : 13;
27021
27022         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
27023         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
27024         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
27025
27026         if (CHSPEC_IS5G(pi->radio_chanspec)) {
27027                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27028                         mix_tia_gain = 3;
27029                 else if (NREV_GE(pi->pubpi.phy_rev, 4))
27030                         mix_tia_gain = 4;
27031                 else
27032                         mix_tia_gain = 6;
27033                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27034                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
27035                 else
27036                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
27037         } else {
27038                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27039                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
27040                 else
27041                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
27042         }
27043
27044         do {
27045
27046                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
27047                         0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
27048                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
27049                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
27050                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
27051                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
27052                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
27053
27054                 if (NREV_GE(pi->pubpi.phy_rev, 7))
27055                         wlc_phy_rfctrl_override_1tomany_nphy(
27056                                 pi,
27057                                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
27058                                 ((lpf_biq1 << 12) |
27059                                  (lpf_biq0 << 8) |
27060                                  (mix_tia_gain << 4) | (lna2 << 2)
27061                                  | lna1), 0x3, 0);
27062                 else
27063                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27064                                                      ((hpvga << 12) |
27065                                                       (lpf_biq1 << 10) |
27066                                                       (lpf_biq0 << 8) |
27067                                                       (mix_tia_gain << 4) |
27068                                                       (lna2 << 2) | lna1), 0x3,
27069                                                      0);
27070
27071                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
27072
27073                 if (txpwrindex == -1) {
27074                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
27075                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
27076                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
27077                                                  2, 0x110, 16,
27078                                                  nphy_rxcal_txgain);
27079                 } else {
27080                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
27081                                                  false);
27082                 }
27083
27084                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
27085                                      NPHY_RXCAL_TONEFREQ_40MHz :
27086                                      NPHY_RXCAL_TONEFREQ_20MHz,
27087                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27088
27089                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27090                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27091                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27092                 curr_pwr = i_pwr + q_pwr;
27093
27094                 switch (gainctrl_dirn) {
27095                 case NPHY_RXCAL_GAIN_INIT:
27096                         if (curr_pwr > thresh_pwr) {
27097                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27098                                 prev_gaintbl_index = curr_gaintbl_index;
27099                                 curr_gaintbl_index--;
27100                         } else {
27101                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27102                                 prev_gaintbl_index = curr_gaintbl_index;
27103                                 curr_gaintbl_index++;
27104                         }
27105                         break;
27106
27107                 case NPHY_RXCAL_GAIN_UP:
27108                         if (curr_pwr > thresh_pwr) {
27109                                 gainctrl_done = true;
27110                                 optim_pwr = prev_pwr;
27111                                 optim_gaintbl_index = prev_gaintbl_index;
27112                         } else {
27113                                 prev_gaintbl_index = curr_gaintbl_index;
27114                                 curr_gaintbl_index++;
27115                         }
27116                         break;
27117
27118                 case NPHY_RXCAL_GAIN_DOWN:
27119                         if (curr_pwr > thresh_pwr) {
27120                                 prev_gaintbl_index = curr_gaintbl_index;
27121                                 curr_gaintbl_index--;
27122                         } else {
27123                                 gainctrl_done = true;
27124                                 optim_pwr = curr_pwr;
27125                                 optim_gaintbl_index = curr_gaintbl_index;
27126                         }
27127                         break;
27128
27129                 default:
27130                         break;
27131                 }
27132
27133                 if ((curr_gaintbl_index < 0) ||
27134                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27135                         gainctrl_done = true;
27136                         optim_pwr = curr_pwr;
27137                         optim_gaintbl_index = prev_gaintbl_index;
27138                 } else {
27139                         prev_pwr = curr_pwr;
27140                 }
27141
27142                 wlc_phy_stopplayback_nphy(pi);
27143         } while (!gainctrl_done);
27144
27145         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27146         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27147         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27148         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27149         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27150         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27151
27152         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27153         delta_pwr = desired_log2_pwr - actual_log2_pwr;
27154
27155         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27156                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27157
27158                 if (fine_gain_idx + (int)lpf_biq0 > 10)
27159                         lpf_biq1 = 10 - lpf_biq0;
27160                 else
27161                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
27162
27163                 wlc_phy_rfctrl_override_1tomany_nphy(
27164                         pi,
27165                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27166                         ((lpf_biq1 << 12) |
27167                          (lpf_biq0 << 8) |
27168                          (mix_tia_gain << 4) |
27169                          (lna2 << 2) | lna1), 0x3,
27170                         0);
27171         } else {
27172                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27173                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27174                                              ((hpvga << 12) |
27175                                               (lpf_biq1 << 10) |
27176                                               (lpf_biq0 << 8) |
27177                                               (mix_tia_gain << 4) |
27178                                               (lna2 << 2) |
27179                                               lna1), 0x3, 0);
27180         }
27181
27182         if (rxgain != NULL) {
27183                 *rxgain++ = lna1;
27184                 *rxgain++ = lna2;
27185                 *rxgain++ = mix_tia_gain;
27186                 *rxgain++ = lpf_biq0;
27187                 *rxgain++ = lpf_biq1;
27188                 *rxgain = hpvga;
27189         }
27190
27191         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27192 }
27193
27194 static void
27195 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27196                             u8 cal_type)
27197 {
27198         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27199 }
27200
27201 static u8
27202 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27203 {
27204         u32 target_bws[2] = { 9500, 21000 };
27205         u32 ref_tones[2] = { 3000, 6000 };
27206         u32 target_bw, ref_tone;
27207
27208         u32 target_pwr_ratios[2] = { 28606, 18468 };
27209         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27210
27211         u16 start_rccal_ovr_val = 128;
27212         u16 txlpf_rccal_lpc_ovr_val = 128;
27213         u16 rxlpf_rccal_hpc_ovr_val = 159;
27214
27215         u16 orig_txlpf_rccal_lpc_ovr_val;
27216         u16 orig_rxlpf_rccal_hpc_ovr_val;
27217         u16 radio_addr_offset_rx;
27218         u16 radio_addr_offset_tx;
27219         u16 orig_dcBypass;
27220         u16 orig_RxStrnFilt40Num[6];
27221         u16 orig_RxStrnFilt40Den[4];
27222         u16 orig_rfctrloverride[2];
27223         u16 orig_rfctrlauxreg[2];
27224         u16 orig_rfctrlrssiothers;
27225         u16 tx_lpf_bw = 4;
27226
27227         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27228         u16 lpf_hpc = 7, hpvga_hpc = 7;
27229
27230         s8 rccal_stepsize;
27231         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27232         u32 ref_iq_vals = 0, target_iq_vals = 0;
27233         u16 num_samps, log_num_samps = 10;
27234         struct phy_iq_est est[PHY_CORE_MAX];
27235
27236         if (NREV_GE(pi->pubpi.phy_rev, 7))
27237                 return 0;
27238
27239         num_samps = (1 << log_num_samps);
27240
27241         if (CHSPEC_IS40(pi->radio_chanspec)) {
27242                 target_bw = target_bws[1];
27243                 target_pwr_ratio = target_pwr_ratios[1];
27244                 ref_tone = ref_tones[1];
27245                 rx_lpf_bw = rx_lpf_bws[1];
27246         } else {
27247                 target_bw = target_bws[0];
27248                 target_pwr_ratio = target_pwr_ratios[0];
27249                 ref_tone = ref_tones[0];
27250                 rx_lpf_bw = rx_lpf_bws[0];
27251         }
27252
27253         if (core_idx == 0) {
27254                 radio_addr_offset_rx = RADIO_2056_RX0;
27255                 radio_addr_offset_tx =
27256                         (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27257         } else {
27258                 radio_addr_offset_rx = RADIO_2056_RX1;
27259                 radio_addr_offset_tx =
27260                         (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27261         }
27262
27263         orig_txlpf_rccal_lpc_ovr_val =
27264                 read_radio_reg(pi,
27265                                (RADIO_2056_TX_TXLPF_RCCAL |
27266                                 radio_addr_offset_tx));
27267         orig_rxlpf_rccal_hpc_ovr_val =
27268                 read_radio_reg(pi,
27269                                (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27270                                 radio_addr_offset_rx));
27271
27272         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27273
27274         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27275         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27276         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27277         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27278         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27279         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27280         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27281         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27282         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27283         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27284
27285         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27286         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27287         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27288         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27289         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27290
27291         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27292                         txlpf_rccal_lpc_ovr_val);
27293
27294         write_radio_reg(pi,
27295                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27296                         rxlpf_rccal_hpc_ovr_val);
27297
27298         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27299
27300         write_phy_reg(pi, 0x267, 0x02d4);
27301         write_phy_reg(pi, 0x268, 0x0000);
27302         write_phy_reg(pi, 0x269, 0x0000);
27303         write_phy_reg(pi, 0x26a, 0x0000);
27304         write_phy_reg(pi, 0x26b, 0x0000);
27305         write_phy_reg(pi, 0x26c, 0x02d4);
27306         write_phy_reg(pi, 0x26d, 0x0000);
27307         write_phy_reg(pi, 0x26e, 0x0000);
27308         write_phy_reg(pi, 0x26f, 0x0000);
27309         write_phy_reg(pi, 0x270, 0x0000);
27310
27311         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27312         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27313         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27314         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27315
27316         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27317                     (0x7 << 10), (tx_lpf_bw << 10));
27318         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27319                     (0x7 << 0), (hpvga_hpc << 0));
27320         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27321                     (0x7 << 4), (lpf_hpc << 4));
27322         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27323                     (0x7 << 8), (rx_lpf_bw << 8));
27324
27325         rccal_stepsize = 16;
27326         rccal_val = start_rccal_ovr_val + rccal_stepsize;
27327
27328         while (rccal_stepsize >= 0) {
27329                 write_radio_reg(pi,
27330                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27331                                  radio_addr_offset_rx), rccal_val);
27332
27333                 if (rccal_stepsize == 16) {
27334
27335                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27336                                              0, 1, false);
27337                         udelay(2);
27338
27339                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27340
27341                         if (core_idx == 0)
27342                                 ref_iq_vals =
27343                                         max_t(u32, (est[0].i_pwr +
27344                                                     est[0].q_pwr) >>
27345                                               (log_num_samps + 1),
27346                                               1);
27347                         else
27348                                 ref_iq_vals =
27349                                         max_t(u32, (est[1].i_pwr +
27350                                                     est[1].q_pwr) >>
27351                                               (log_num_samps + 1),
27352                                               1);
27353
27354                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27355                                              0, 1, false);
27356                         udelay(2);
27357                 }
27358
27359                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27360
27361                 if (core_idx == 0)
27362                         target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27363                                          (log_num_samps + 1);
27364                 else
27365                         target_iq_vals =
27366                                 (est[1].i_pwr +
27367                                  est[1].q_pwr) >> (log_num_samps + 1);
27368
27369                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27370
27371                 if (rccal_stepsize == 0)
27372                         rccal_stepsize--;
27373                 else if (rccal_stepsize == 1) {
27374                         last_rccal_val = rccal_val;
27375                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27376                         last_pwr_ratio = pwr_ratio;
27377                         rccal_stepsize--;
27378                 } else {
27379                         rccal_stepsize = (rccal_stepsize >> 1);
27380                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27381                                       rccal_stepsize : (-rccal_stepsize));
27382                 }
27383
27384                 if (rccal_stepsize == -1) {
27385                         best_rccal_val =
27386                                 (abs((int)last_pwr_ratio -
27387                                      (int)target_pwr_ratio) <
27388                                  abs((int)pwr_ratio -
27389                                      (int)target_pwr_ratio)) ? last_rccal_val :
27390                                 rccal_val;
27391
27392                         if (CHSPEC_IS40(pi->radio_chanspec)) {
27393                                 if ((best_rccal_val > 140)
27394                                     || (best_rccal_val < 135))
27395                                         best_rccal_val = 138;
27396                         } else {
27397                                 if ((best_rccal_val > 142)
27398                                     || (best_rccal_val < 137))
27399                                         best_rccal_val = 140;
27400                         }
27401
27402                         write_radio_reg(pi,
27403                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27404                                          radio_addr_offset_rx), best_rccal_val);
27405                 }
27406         }
27407
27408         wlc_phy_stopplayback_nphy(pi);
27409
27410         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27411                         orig_txlpf_rccal_lpc_ovr_val);
27412         write_radio_reg(pi,
27413                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27414                         orig_rxlpf_rccal_hpc_ovr_val);
27415
27416         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27417
27418         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27419         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27420         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27421         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27422         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27423         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27424         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27425         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27426         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27427         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27428
27429         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27430         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27431         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27432         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27433         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27434
27435         pi->nphy_anarxlpf_adjusted = false;
27436
27437         return best_rccal_val - 0x80;
27438 }
27439
27440 #define WAIT_FOR_SCOPE  4000
27441 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27442                                       struct nphy_txgains target_gain,
27443                                       u8 cal_type, bool debug)
27444 {
27445         u16 orig_BBConfig;
27446         u8 core_no, rx_core;
27447         u8 best_rccal[2];
27448         u16 gain_save[2];
27449         u16 cal_gain[2];
27450         struct nphy_iqcal_params cal_params[2];
27451         u8 rxcore_state;
27452         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27453         s8 txlpf_idac;
27454         bool phyhang_avoid_state = false;
27455         bool skip_rxiqcal = false;
27456
27457         orig_BBConfig = read_phy_reg(pi, 0x01);
27458         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27459
27460         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27461
27462         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27463                 phyhang_avoid_state = pi->phyhang_avoid;
27464                 pi->phyhang_avoid = false;
27465         }
27466
27467         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27468
27469         for (core_no = 0; core_no <= 1; core_no++) {
27470                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27471                                               &cal_params[core_no]);
27472                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27473         }
27474
27475         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27476
27477         rxcore_state = wlc_phy_rxcore_getstate_nphy(
27478                 (struct brcms_phy_pub *) pi);
27479
27480         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27481
27482                 skip_rxiqcal =
27483                         ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27484
27485                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27486
27487                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27488
27489                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27490
27491                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27492
27493                         wlc_phy_tx_tone_nphy(pi,
27494                                              (CHSPEC_IS40(
27495                                                       pi->radio_chanspec)) ?
27496                                              NPHY_RXCAL_TONEFREQ_40MHz :
27497                                              NPHY_RXCAL_TONEFREQ_20MHz,
27498                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
27499                                              false);
27500
27501                         if (debug)
27502                                 mdelay(WAIT_FOR_SCOPE);
27503
27504                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27505                         wlc_phy_stopplayback_nphy(pi);
27506                 }
27507
27508                 if (((cal_type == 1) || (cal_type == 2))
27509                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
27510
27511                         if (rx_core == PHY_CORE_1) {
27512
27513                                 if (rxcore_state == 1)
27514                                         wlc_phy_rxcore_setstate_nphy(
27515                                                 (struct brcms_phy_pub *) pi, 3);
27516
27517                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27518                                                             1);
27519
27520                                 best_rccal[rx_core] =
27521                                         wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27522                                 pi->nphy_rccal_value = best_rccal[rx_core];
27523
27524                                 if (rxcore_state == 1)
27525                                         wlc_phy_rxcore_setstate_nphy(
27526                                                 (struct brcms_phy_pub *) pi,
27527                                                 rxcore_state);
27528                         }
27529                 }
27530
27531                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27532
27533                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27534                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27535         }
27536
27537         if ((cal_type == 1) || (cal_type == 2)) {
27538
27539                 best_rccal[0] = best_rccal[1];
27540                 write_radio_reg(pi,
27541                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27542                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27543
27544                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27545                         rxlpf_rccal_hpc =
27546                                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27547                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27548
27549                         if (PHY_IPA(pi)) {
27550                                 txlpf_rccal_lpc +=
27551                                         (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27552                                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27553                                              0x0e : 0x13;
27554                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27555                                                  TXLPF_IDAC_4, txlpf_idac);
27556                         }
27557
27558                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27559                                               0);
27560                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27561                                               0);
27562
27563                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27564                                              ((rx_core ==
27565                                                PHY_CORE_0) ? RADIO_2056_RX0 :
27566                                               RADIO_2056_RX1)),
27567                                         (rxlpf_rccal_hpc | 0x80));
27568
27569                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27570                                              ((rx_core ==
27571                                                PHY_CORE_0) ? RADIO_2056_TX0 :
27572                                               RADIO_2056_TX1)),
27573                                         (txlpf_rccal_lpc | 0x80));
27574                 }
27575         }
27576
27577         write_phy_reg(pi, 0x01, orig_BBConfig);
27578
27579         wlc_phy_resetcca_nphy(pi);
27580
27581         if (NREV_GE(pi->pubpi.phy_rev, 7))
27582                 wlc_phy_rfctrl_override_1tomany_nphy(
27583                         pi,
27584                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27585                         0, 0x3, 1);
27586         else
27587                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27588
27589         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27590
27591         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27592                                  gain_save);
27593
27594         if (NREV_GE(pi->pubpi.phy_rev, 4))
27595                 pi->phyhang_avoid = phyhang_avoid_state;
27596
27597         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27598
27599         return 0;
27600 }
27601
27602 static int
27603 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27604                            struct nphy_txgains target_gain, bool debug)
27605 {
27606         struct phy_iq_est est[PHY_CORE_MAX];
27607         u8 core_num, rx_core, tx_core;
27608         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27609         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27610         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27611         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27612         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27613         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27614         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27615         u16 num_samps;
27616         u32 i_pwr, q_pwr, tot_pwr[3];
27617         u8 gain_pass, use_hpf_num;
27618         u16 mask, val1, val2;
27619         u16 core_no;
27620         u16 gain_save[2];
27621         u16 cal_gain[2];
27622         struct nphy_iqcal_params cal_params[2];
27623         u8 phy_bw;
27624         int bcmerror = 0;
27625         bool first_playtone = true;
27626
27627         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27628
27629         if (NREV_LT(pi->pubpi.phy_rev, 2))
27630                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27631
27632         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27633
27634         for (core_no = 0; core_no <= 1; core_no++) {
27635                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27636                                               &cal_params[core_no]);
27637                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27638         }
27639
27640         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27641
27642         num_samps = 1024;
27643         desired_log2_pwr = 13;
27644
27645         for (core_num = 0; core_num < 2; core_num++) {
27646
27647                 rx_core = core_num;
27648                 tx_core = 1 - core_num;
27649
27650                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27651                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27652                                                 0xa6 : 0xa7);
27653                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27654                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27655                                                  0x91 : 0x92);
27656                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27657                                                  0x91 : 0x92);
27658
27659                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27660                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27661
27662                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27663                            ((0x1 << 1) | (0x1 << 2)));
27664                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27665
27666                 if (((pi->nphy_rxcalparams) & 0xff000000))
27667                         write_phy_reg(pi,
27668                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27669                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27670                                         0x140 : 0x110));
27671                 else
27672                         write_phy_reg(pi,
27673                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27674                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27675                                        0x180 : 0x120));
27676
27677                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27678                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27679                                0x114));
27680
27681                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27682                 if (rx_core == PHY_CORE_0) {
27683                         val1 = RADIO_2055_COUPLE_RX_MASK;
27684                         val2 = RADIO_2055_COUPLE_TX_MASK;
27685                 } else {
27686                         val1 = RADIO_2055_COUPLE_TX_MASK;
27687                         val2 = RADIO_2055_COUPLE_RX_MASK;
27688                 }
27689
27690                 if ((pi->nphy_rxcalparams & 0x10000)) {
27691                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27692                                       val1);
27693                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27694                                       val2);
27695                 }
27696
27697                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27698
27699                         if (debug)
27700                                 mdelay(WAIT_FOR_SCOPE);
27701
27702                         if (gain_pass < 3) {
27703                                 curr_lna = lna_vals[gain_pass];
27704                                 curr_hpf1 = hpf1_vals[gain_pass];
27705                                 curr_hpf2 = hpf2_vals[gain_pass];
27706                         } else {
27707
27708                                 if (tot_pwr[1] > 10000) {
27709                                         curr_lna = lna_vals[2];
27710                                         curr_hpf1 = hpf1_vals[2];
27711                                         curr_hpf2 = hpf2_vals[2];
27712                                         use_hpf_num = 1;
27713                                         curr_hpf = curr_hpf1;
27714                                         actual_log2_pwr =
27715                                                 wlc_phy_nbits(tot_pwr[2]);
27716                                 } else {
27717                                         if (tot_pwr[0] > 10000) {
27718                                                 curr_lna = lna_vals[1];
27719                                                 curr_hpf1 = hpf1_vals[1];
27720                                                 curr_hpf2 = hpf2_vals[1];
27721                                                 use_hpf_num = 1;
27722                                                 curr_hpf = curr_hpf1;
27723                                                 actual_log2_pwr =
27724                                                         wlc_phy_nbits(
27725                                                                 tot_pwr[1]);
27726                                         } else {
27727                                                 curr_lna = lna_vals[0];
27728                                                 curr_hpf1 = hpf1_vals[0];
27729                                                 curr_hpf2 = hpf2_vals[0];
27730                                                 use_hpf_num = 2;
27731                                                 curr_hpf = curr_hpf2;
27732                                                 actual_log2_pwr =
27733                                                         wlc_phy_nbits(
27734                                                                 tot_pwr[0]);
27735                                         }
27736                                 }
27737
27738                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27739                                 curr_hpf += hpf_change;
27740                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27741                                 if (use_hpf_num == 1)
27742                                         curr_hpf1 = curr_hpf;
27743                                 else
27744                                         curr_hpf2 = curr_hpf;
27745                         }
27746
27747                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27748                                                      ((curr_hpf2 << 8) |
27749                                                       (curr_hpf1 << 4) |
27750                                                       (curr_lna << 2)), 0x3, 0);
27751                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27752
27753                         wlc_phy_stopplayback_nphy(pi);
27754
27755                         if (first_playtone) {
27756                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27757                                                 (u16) (pi->nphy_rxcalparams &
27758                                                        0xffff), 0, 0, true);
27759                                 first_playtone = false;
27760                         } else {
27761                                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27762                                           40 : 20;
27763                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27764                                                         0, 0, 0, true);
27765                         }
27766
27767                         if (bcmerror == 0) {
27768                                 if (gain_pass < 3) {
27769
27770                                         wlc_phy_rx_iq_est_nphy(pi, est,
27771                                                                num_samps, 32,
27772                                                                0);
27773                                         i_pwr = (est[rx_core].i_pwr +
27774                                                  num_samps / 2) / num_samps;
27775                                         q_pwr = (est[rx_core].q_pwr +
27776                                                  num_samps / 2) / num_samps;
27777                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
27778                                 } else {
27779
27780                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
27781                                                                      (1 <<
27782                                                                       rx_core));
27783                                 }
27784
27785                                 wlc_phy_stopplayback_nphy(pi);
27786                         }
27787
27788                         if (bcmerror != 0)
27789                                 break;
27790                 }
27791
27792                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27793                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27794
27795                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27796                               0x92, orig_RfctrlIntcTx);
27797                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27798                               0x92, orig_RfctrlIntcRx);
27799                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27800                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27801                               0xa7, orig_AfectrlCore);
27802                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27803
27804                 if (bcmerror != 0)
27805                         break;
27806         }
27807
27808         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27809         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27810
27811         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27812                                  gain_save);
27813
27814         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27815
27816         return bcmerror;
27817 }
27818
27819 int
27820 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27821                       u8 cal_type, bool debug)
27822 {
27823         if (NREV_GE(pi->pubpi.phy_rev, 7))
27824                 cal_type = 0;
27825
27826         if (NREV_GE(pi->pubpi.phy_rev, 3))
27827                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27828                                                   debug);
27829         else
27830                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27831 }
27832
27833 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27834 {
27835         uint core;
27836         u32 txgain;
27837         u16 rad_gain, dac_gain, bbmult, m1m2;
27838         u8 txpi[2], chan_freq_range;
27839         s32 rfpwr_offset;
27840
27841         if (pi->phyhang_avoid)
27842                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27843
27844         if (pi->sh->sromrev < 4) {
27845                 txpi[0] = txpi[1] = 72;
27846         } else {
27847
27848                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27849                 switch (chan_freq_range) {
27850                 case WL_CHAN_FREQ_RANGE_2G:
27851                 case WL_CHAN_FREQ_RANGE_5GL:
27852                 case WL_CHAN_FREQ_RANGE_5GM:
27853                 case WL_CHAN_FREQ_RANGE_5GH:
27854                         txpi[0] = 0;
27855                         txpi[1] = 0;
27856                         break;
27857                 default:
27858                         txpi[0] = txpi[1] = 91;
27859                         break;
27860                 }
27861         }
27862
27863         if (NREV_GE(pi->pubpi.phy_rev, 7))
27864                 txpi[0] = txpi[1] = 30;
27865         else if (NREV_GE(pi->pubpi.phy_rev, 3))
27866                 txpi[0] = txpi[1] = 40;
27867
27868         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27869
27870                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27871                     (txpi[1] < 40) || (txpi[1] > 100))
27872                         txpi[0] = txpi[1] = 91;
27873         }
27874
27875         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27876         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27877         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27878         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27879
27880         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27881                 uint phyrev = pi->pubpi.phy_rev;
27882
27883                 if (NREV_GE(phyrev, 3)) {
27884                         if (PHY_IPA(pi)) {
27885                                 u32 *tx_gaintbl =
27886                                         wlc_phy_get_ipa_gaintbl_nphy(pi);
27887                                 txgain = tx_gaintbl[txpi[core]];
27888                         } else {
27889                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27890                                         if (NREV_IS(phyrev, 3)) {
27891                                                 txgain =
27892                                                       nphy_tpc_5GHz_txgain_rev3
27893                                                                    [txpi[core]];
27894                                         } else if (NREV_IS(phyrev, 4)) {
27895                                                 txgain = (
27896                                                   pi->srom_fem5g.extpagain ==
27897                                                   3) ?
27898                                                   nphy_tpc_5GHz_txgain_HiPwrEPA
27899                                                  [txpi[core]] :
27900                                                  nphy_tpc_5GHz_txgain_rev4
27901                                                  [txpi[core]];
27902                                         } else {
27903                                                 txgain =
27904                                                       nphy_tpc_5GHz_txgain_rev5
27905                                                                    [txpi[core]];
27906                                         }
27907                                 } else {
27908                                         if (NREV_GE(phyrev, 5) &&
27909                                             (pi->srom_fem2g.extpagain == 3)) {
27910                                                 txgain =
27911                                                         nphy_tpc_txgain_HiPwrEPA
27912                                                         [txpi[core]];
27913                                         } else {
27914                                                 txgain = nphy_tpc_txgain_rev3
27915                                                          [txpi[core]];
27916                                         }
27917                                 }
27918                         }
27919                 } else {
27920                         txgain = nphy_tpc_txgain[txpi[core]];
27921                 }
27922
27923                 if (NREV_GE(phyrev, 3))
27924                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27925                 else
27926                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27927
27928                 if (NREV_GE(phyrev, 7))
27929                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27930                 else
27931                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27932
27933                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27934
27935                 if (NREV_GE(phyrev, 3))
27936                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27937                                          0xa5), (0x1 << 8), (0x1 << 8));
27938                 else
27939                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27940
27941                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27942
27943                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27944                                          &rad_gain);
27945
27946                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27947                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27948                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27949                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27950
27951                 if (PHY_IPA(pi)) {
27952                         wlc_phy_table_read_nphy(pi,
27953                                                 (core ==
27954                                                  PHY_CORE_0 ?
27955                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27956                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27957                                                 576 + txpi[core], 32,
27958                                                 &rfpwr_offset);
27959
27960                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27961                                     0x29b, (0x1ff << 4),
27962                                     ((s16) rfpwr_offset) << 4);
27963
27964                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27965                                     0x29b, (0x1 << 2), (1) << 2);
27966
27967                 }
27968         }
27969
27970         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27971
27972         if (pi->phyhang_avoid)
27973                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27974 }
27975
27976 static void
27977 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27978                                 u8 tmp_max_pwr, u8 rate_start,
27979                                 u8 rate_end)
27980 {
27981         u8 rate;
27982         u8 word_num, nibble_num;
27983         u8 tmp_nibble;
27984
27985         for (rate = rate_start; rate <= rate_end; rate++) {
27986                 word_num = (rate - rate_start) >> 2;
27987                 nibble_num = (rate - rate_start) & 0x3;
27988                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27989
27990                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27991         }
27992 }
27993
27994 static void
27995 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27996                             u8 rate_start, u8 rate_end)
27997 {
27998         u8 rate;
27999
28000         for (rate = rate_start; rate <= rate_end; rate++)
28001                 srom_max[rate] -= 2 * pwr_offset;
28002 }
28003
28004 void
28005 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
28006                                 u8 rate_mcs_end, u8 rate_ofdm_start)
28007 {
28008         u8 rate1, rate2;
28009
28010         rate2 = rate_ofdm_start;
28011         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
28012                 power[rate1] = power[rate2];
28013                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
28014         }
28015         power[rate_mcs_end] = power[rate_mcs_end - 1];
28016 }
28017
28018 void
28019 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
28020                                 u8 rate_ofdm_end, u8 rate_mcs_start)
28021 {
28022         u8 rate1, rate2;
28023
28024         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
28025              rate1 <= rate_ofdm_end; rate1++, rate2++) {
28026                 power[rate1] = power[rate2];
28027                 if (rate1 == rate_ofdm_start)
28028                         power[++rate1] = power[rate2];
28029         }
28030 }
28031
28032 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
28033 {
28034         uint rate1, rate2, band_num;
28035         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
28036         u8 tmp_max_pwr = 0;
28037         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
28038         u8 *tx_srom_max_rate = NULL;
28039
28040         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
28041              band_num++) {
28042                 switch (band_num) {
28043                 case 0:
28044
28045                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
28046                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
28047
28048                         pwr_offsets1[0] = pi->cck2gpo;
28049                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
28050                                                         pwr_offsets1,
28051                                                         tmp_max_pwr,
28052                                                         TXP_FIRST_CCK,
28053                                                         TXP_LAST_CCK);
28054
28055                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
28056                         pwr_offsets1[1] =
28057                                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
28058
28059                         pwr_offsets2 = pi->mcs2gpo;
28060
28061                         tmp_cddpo = pi->cdd2gpo;
28062                         tmp_stbcpo = pi->stbc2gpo;
28063                         tmp_bw40po = pi->bw402gpo;
28064
28065                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
28066                         break;
28067                 case 1:
28068
28069                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
28070                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
28071
28072                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
28073                         pwr_offsets1[1] =
28074                                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
28075
28076                         pwr_offsets2 = pi->mcs5gpo;
28077
28078                         tmp_cddpo = pi->cdd5gpo;
28079                         tmp_stbcpo = pi->stbc5gpo;
28080                         tmp_bw40po = pi->bw405gpo;
28081
28082                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
28083                         break;
28084                 case 2:
28085
28086                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28087                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28088
28089                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28090                         pwr_offsets1[1] =
28091                                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28092
28093                         pwr_offsets2 = pi->mcs5glpo;
28094
28095                         tmp_cddpo = pi->cdd5glpo;
28096                         tmp_stbcpo = pi->stbc5glpo;
28097                         tmp_bw40po = pi->bw405glpo;
28098
28099                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28100                         break;
28101                 case 3:
28102
28103                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28104                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28105
28106                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28107                         pwr_offsets1[1] =
28108                                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28109
28110                         pwr_offsets2 = pi->mcs5ghpo;
28111
28112                         tmp_cddpo = pi->cdd5ghpo;
28113                         tmp_stbcpo = pi->stbc5ghpo;
28114                         tmp_bw40po = pi->bw405ghpo;
28115
28116                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28117                         break;
28118                 }
28119
28120                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28121                                                 tmp_max_pwr, TXP_FIRST_OFDM,
28122                                                 TXP_LAST_OFDM);
28123
28124                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28125                                                 TXP_FIRST_MCS_20_SISO,
28126                                                 TXP_LAST_MCS_20_SISO,
28127                                                 TXP_FIRST_OFDM);
28128
28129                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28130                                                 tmp_max_pwr,
28131                                                 TXP_FIRST_MCS_20_CDD,
28132                                                 TXP_LAST_MCS_20_CDD);
28133
28134                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28135                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28136                                                     TXP_FIRST_MCS_20_CDD,
28137                                                     TXP_LAST_MCS_20_CDD);
28138
28139                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28140                                                 TXP_FIRST_OFDM_20_CDD,
28141                                                 TXP_LAST_OFDM_20_CDD,
28142                                                 TXP_FIRST_MCS_20_CDD);
28143
28144                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28145                                                 tmp_max_pwr,
28146                                                 TXP_FIRST_MCS_20_STBC,
28147                                                 TXP_LAST_MCS_20_STBC);
28148
28149                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28150                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28151                                                     tmp_stbcpo,
28152                                                     TXP_FIRST_MCS_20_STBC,
28153                                                     TXP_LAST_MCS_20_STBC);
28154
28155                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28156                                                 &pwr_offsets2[2], tmp_max_pwr,
28157                                                 TXP_FIRST_MCS_20_SDM,
28158                                                 TXP_LAST_MCS_20_SDM);
28159
28160                 if (NPHY_IS_SROM_REINTERPRET) {
28161
28162                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28163                                                         &pwr_offsets2[4],
28164                                                         tmp_max_pwr,
28165                                                         TXP_FIRST_MCS_40_SISO,
28166                                                         TXP_LAST_MCS_40_SISO);
28167
28168                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28169                                                         TXP_FIRST_OFDM_40_SISO,
28170                                                         TXP_LAST_OFDM_40_SISO,
28171                                                         TXP_FIRST_MCS_40_SISO);
28172
28173                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28174                                                         &pwr_offsets2[4],
28175                                                         tmp_max_pwr,
28176                                                         TXP_FIRST_MCS_40_CDD,
28177                                                         TXP_LAST_MCS_40_CDD);
28178
28179                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28180                                                     TXP_FIRST_MCS_40_CDD,
28181                                                     TXP_LAST_MCS_40_CDD);
28182
28183                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28184                                                         TXP_FIRST_OFDM_40_CDD,
28185                                                         TXP_LAST_OFDM_40_CDD,
28186                                                         TXP_FIRST_MCS_40_CDD);
28187
28188                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28189                                                         &pwr_offsets2[4],
28190                                                         tmp_max_pwr,
28191                                                         TXP_FIRST_MCS_40_STBC,
28192                                                         TXP_LAST_MCS_40_STBC);
28193
28194                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28195                                                     tmp_stbcpo,
28196                                                     TXP_FIRST_MCS_40_STBC,
28197                                                     TXP_LAST_MCS_40_STBC);
28198
28199                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28200                                                         &pwr_offsets2[6],
28201                                                         tmp_max_pwr,
28202                                                         TXP_FIRST_MCS_40_SDM,
28203                                                         TXP_LAST_MCS_40_SDM);
28204                 } else {
28205
28206                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28207                                      TXP_FIRST_OFDM;
28208                              rate1 <= TXP_LAST_MCS_40_SDM;
28209                              rate1++, rate2++)
28210                                 tx_srom_max_rate[rate1] =
28211                                         tx_srom_max_rate[rate2];
28212                 }
28213
28214                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28215                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28216                                                     tmp_bw40po,
28217                                                     TXP_FIRST_OFDM_40_SISO,
28218                                                     TXP_LAST_MCS_40_SDM);
28219
28220                 tx_srom_max_rate[TXP_MCS_32] =
28221                         tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28222         }
28223
28224         return;
28225 }
28226
28227 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28228 {
28229         u8 tx_pwr_ctrl_state;
28230         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28231         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28232
28233         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28234
28235         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28236                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28237                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28238                 udelay(1);
28239         }
28240
28241         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28242
28243         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28244                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28245 }
28246
28247 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28248 {
28249         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28250                                             (0x1 << 14) | (0x1 << 13));
28251 }
28252
28253 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28254 {
28255         u16 tmp;
28256         u16 pwr_idx[2];
28257
28258         if (wlc_phy_txpwr_ison_nphy(pi)) {
28259                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28260                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28261
28262                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28263         } else {
28264                 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28265                         << 8) |
28266                         (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28267         }
28268
28269         return tmp;
28270 }
28271
28272 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28273 {
28274         if (PHY_IPA(pi)
28275             && (pi->nphy_force_papd_cal
28276                 || (wlc_phy_txpwr_ison_nphy(pi)
28277                     &&
28278                     (((u32)
28279                       abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28280                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28281                      || ((u32)
28282                          abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28283                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28284                 wlc_phy_a4(pi, true);
28285 }
28286
28287 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28288 {
28289         u16 mask = 0, val = 0, ishw = 0;
28290         u8 ctr;
28291         uint core;
28292         u32 tbl_offset;
28293         u32 tbl_len;
28294         u16 regval[84];
28295
28296         if (pi->phyhang_avoid)
28297                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28298
28299         switch (ctrl_type) {
28300         case PHY_TPC_HW_OFF:
28301         case PHY_TPC_HW_ON:
28302                 pi->nphy_txpwrctrl = ctrl_type;
28303                 break;
28304         default:
28305                 break;
28306         }
28307
28308         if (ctrl_type == PHY_TPC_HW_OFF) {
28309                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28310
28311                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28312                                 for (core = 0; core < pi->pubpi.phy_corenum;
28313                                      core++)
28314                                         pi->nphy_txpwr_idx[core] =
28315                                                 wlc_phy_txpwr_idx_cur_get_nphy(
28316                                                         pi,
28317                                                         (u8) core);
28318                         }
28319
28320                 }
28321
28322                 tbl_len = 84;
28323                 tbl_offset = 64;
28324                 for (ctr = 0; ctr < tbl_len; ctr++)
28325                         regval[ctr] = 0;
28326                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28327                                          regval);
28328                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28329                                          regval);
28330
28331                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28332                         and_phy_reg(pi, 0x1e7,
28333                                     (u16) (~((0x1 << 15) |
28334                                              (0x1 << 14) | (0x1 << 13))));
28335                 else
28336                         and_phy_reg(pi, 0x1e7,
28337                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28338
28339                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28340                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28341                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28342                 } else {
28343                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28344                 }
28345
28346                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28347                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28348                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28349                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28350
28351                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28352                     pi->bw == WL_CHANSPEC_BW_40)
28353                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28354                                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28355
28356         } else {
28357
28358                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28359                                          8, pi->adj_pwr_tbl_nphy);
28360                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28361                                          8, pi->adj_pwr_tbl_nphy);
28362
28363                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28364                 mask = (0x1 << 14) | (0x1 << 13);
28365                 val = (ishw << 14) | (ishw << 13);
28366
28367                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28368                         mask |= (0x1 << 15);
28369                         val |= (ishw << 15);
28370                 }
28371
28372                 mod_phy_reg(pi, 0x1e7, mask, val);
28373
28374                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28375                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28376                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28377                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28378                         } else {
28379                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28380                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28381                                         mod_phy_reg(pi, 0x222,
28382                                                     (0xff << 0), 0x64);
28383                         }
28384                 }
28385
28386                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28387                         if ((pi->nphy_txpwr_idx[0] != 128)
28388                             && (pi->nphy_txpwr_idx[1] != 128))
28389                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28390                                                                pi->
28391                                                                nphy_txpwr_idx
28392                                                                [0],
28393                                                                pi->
28394                                                                nphy_txpwr_idx
28395                                                                [1]);
28396                 }
28397
28398                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28399                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28400                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28401                 } else {
28402                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28403                 }
28404
28405                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28406                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28407                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28408                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28409
28410                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28411                     pi->bw == WL_CHANSPEC_BW_40)
28412                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28413                                        0x0, BRCM_BAND_ALL);
28414
28415                 if (PHY_IPA(pi)) {
28416                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28417                                     0x29b, (0x1 << 2), (0) << 2);
28418
28419                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28420                                     0x29b, (0x1 << 2), (0) << 2);
28421
28422                 }
28423
28424         }
28425
28426         if (pi->phyhang_avoid)
28427                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28428 }
28429
28430 void
28431 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28432                          bool restore_cals)
28433 {
28434         u8 core, txpwrctl_tbl;
28435         u16 tx_ind0, iq_ind0, lo_ind0;
28436         u16 m1m2;
28437         u32 txgain;
28438         u16 rad_gain, dac_gain;
28439         u8 bbmult;
28440         u32 iqcomp;
28441         u16 iqcomp_a, iqcomp_b;
28442         u32 locomp;
28443         u16 tmpval;
28444         u8 tx_pwr_ctrl_state;
28445         s32 rfpwr_offset;
28446         u16 regval[2];
28447
28448         if (pi->phyhang_avoid)
28449                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28450
28451         tx_ind0 = 192;
28452         iq_ind0 = 320;
28453         lo_ind0 = 448;
28454
28455         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28456
28457                 if ((core_mask & (1 << core)) == 0)
28458                         continue;
28459
28460                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28461
28462                 if (txpwrindex < 0) {
28463                         if (pi->nphy_txpwrindex[core].index < 0)
28464                                 continue;
28465
28466                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28467                                 mod_phy_reg(pi, 0x8f,
28468                                             (0x1 << 8),
28469                                             pi->nphy_txpwrindex[core].
28470                                             AfectrlOverride);
28471                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28472                                             pi->nphy_txpwrindex[core].
28473                                             AfectrlOverride);
28474                         } else {
28475                                 mod_phy_reg(pi, 0xa5,
28476                                             (0x1 << 14),
28477                                             pi->nphy_txpwrindex[core].
28478                                             AfectrlOverride);
28479                         }
28480
28481                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28482                                       0xaa : 0xab,
28483                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28484
28485                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28486                                                  &pi->nphy_txpwrindex[core].
28487                                                  rad_gain);
28488
28489                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28490                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28491                         m1m2 |= ((core == PHY_CORE_0) ?
28492                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28493                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28494                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28495
28496                         if (restore_cals) {
28497                                 wlc_phy_table_write_nphy(
28498                                         pi, 15, 2, (80 + 2 * core), 16,
28499                                         &pi->nphy_txpwrindex[core].iqcomp_a);
28500                                 wlc_phy_table_write_nphy(
28501                                         pi, 15, 1, (85 + core), 16,
28502                                         &pi->nphy_txpwrindex[core].locomp);
28503                                 wlc_phy_table_write_nphy(
28504                                         pi, 15, 1, (93 + core), 16,
28505                                         &pi->nphy_txpwrindex[core].locomp);
28506                         }
28507
28508                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28509
28510                         pi->nphy_txpwrindex[core].index_internal =
28511                                 pi->nphy_txpwrindex[core].index_internal_save;
28512                 } else {
28513
28514                         if (pi->nphy_txpwrindex[core].index < 0) {
28515
28516                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28517                                         mod_phy_reg(pi, 0x8f,
28518                                                     (0x1 << 8),
28519                                                     pi->nphy_txpwrindex[core].
28520                                                     AfectrlOverride);
28521                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28522                                                     pi->nphy_txpwrindex[core].
28523                                                     AfectrlOverride);
28524                                 } else {
28525                                         pi->nphy_txpwrindex[core].
28526                                         AfectrlOverride =
28527                                                 read_phy_reg(pi, 0xa5);
28528                                 }
28529
28530                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28531                                         read_phy_reg(pi, (core == PHY_CORE_0) ?
28532                                                          0xaa : 0xab);
28533
28534                                 wlc_phy_table_read_nphy(pi, 7, 1,
28535                                                         (0x110 + core), 16,
28536                                                         &pi->
28537                                                         nphy_txpwrindex[core].
28538                                                         rad_gain);
28539
28540                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28541                                                         &tmpval);
28542                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28543                                 tmpval &= 0xff;
28544                                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28545
28546                                 wlc_phy_table_read_nphy(pi, 15, 2,
28547                                                         (80 + 2 * core), 16,
28548                                                         &pi->
28549                                                         nphy_txpwrindex[core].
28550                                                         iqcomp_a);
28551
28552                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28553                                                         16,
28554                                                         &pi->
28555                                                         nphy_txpwrindex[core].
28556                                                         locomp);
28557
28558                                 pi->nphy_txpwrindex[core].index_internal_save =
28559                                         pi->nphy_txpwrindex[core].
28560                                         index_internal;
28561                         }
28562
28563                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28564                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28565
28566                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28567                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28568
28569                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28570                                                 (tx_ind0 + txpwrindex), 32,
28571                                                 &txgain);
28572
28573                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28574                                 rad_gain = (txgain >> 16) &
28575                                            ((1 << (32 - 16 + 1)) - 1);
28576                         else
28577                                 rad_gain = (txgain >> 16) &
28578                                            ((1 << (28 - 16 + 1)) - 1);
28579
28580                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28581                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28582
28583                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28584                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28585                                                  0xa5), (0x1 << 8), (0x1 << 8));
28586                         else
28587                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28588
28589                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28590                                       0xaa : 0xab, dac_gain);
28591
28592                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28593                                                  &rad_gain);
28594
28595                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28596                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28597                         m1m2 |= ((core == PHY_CORE_0) ?
28598                                 (bbmult << 8) : (bbmult << 0));
28599
28600                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28601
28602                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28603                                                 (iq_ind0 + txpwrindex), 32,
28604                                                 &iqcomp);
28605                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28606                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28607
28608                         if (restore_cals) {
28609                                 regval[0] = (u16) iqcomp_a;
28610                                 regval[1] = (u16) iqcomp_b;
28611                                 wlc_phy_table_write_nphy(pi, 15, 2,
28612                                                          (80 + 2 * core), 16,
28613                                                          regval);
28614                         }
28615
28616                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28617                                                 (lo_ind0 + txpwrindex), 32,
28618                                                 &locomp);
28619                         if (restore_cals)
28620                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28621                                                          16, &locomp);
28622
28623                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28624                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28625
28626                         if (PHY_IPA(pi)) {
28627                                 wlc_phy_table_read_nphy(pi,
28628                                                 (core == PHY_CORE_0 ?
28629                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28630                                                  NPHY_TBL_ID_CORE2TXPWRCTL),
28631                                                 1, 576 + txpwrindex, 32,
28632                                                 &rfpwr_offset);
28633
28634                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28635                                             0x29b, (0x1ff << 4),
28636                                             ((s16) rfpwr_offset) << 4);
28637
28638                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28639                                             0x29b, (0x1 << 2), (1) << 2);
28640
28641                         }
28642
28643                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28644                 }
28645
28646                 pi->nphy_txpwrindex[core].index = txpwrindex;
28647         }
28648
28649         if (pi->phyhang_avoid)
28650                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28651 }
28652
28653 void
28654 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28655                                    u8 txp_rate_idx)
28656 {
28657         u8 chan_freq_range;
28658
28659         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28660         switch (chan_freq_range) {
28661         case WL_CHAN_FREQ_RANGE_2G:
28662                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28663                 break;
28664         case WL_CHAN_FREQ_RANGE_5GM:
28665                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28666                 break;
28667         case WL_CHAN_FREQ_RANGE_5GL:
28668                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28669                 break;
28670         case WL_CHAN_FREQ_RANGE_5GH:
28671                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28672                 break;
28673         default:
28674                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28675                 break;
28676         }
28677
28678         return;
28679 }
28680
28681 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28682 {
28683         u16 clip_off[] = { 0xffff, 0xffff };
28684
28685         if (enable) {
28686                 if (pi->nphy_deaf_count == 0) {
28687                         pi->classifier_state =
28688                                 wlc_phy_classifier_nphy(pi, 0, 0);
28689                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28690                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28691                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
28692                 }
28693
28694                 pi->nphy_deaf_count++;
28695
28696                 wlc_phy_resetcca_nphy(pi);
28697
28698         } else {
28699                 pi->nphy_deaf_count--;
28700
28701                 if (pi->nphy_deaf_count == 0) {
28702                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
28703                                                 pi->classifier_state);
28704                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28705                 }
28706         }
28707 }
28708
28709 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28710 {
28711         wlapi_suspend_mac_and_wait(pi->sh->physhim);
28712
28713         if (mode) {
28714                 if (pi->nphy_deaf_count == 0)
28715                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28716         } else if (pi->nphy_deaf_count > 0) {
28717                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28718         }
28719
28720         wlapi_enable_mac(pi->sh->physhim);
28721 }