netfilter: netns: shrink netns_ct struct
[linux-2.6-microblaze.git] / drivers / net / wireless / broadcom / 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, const u8 *events,
14768                        const u8 *dlys, 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         static const s8 lna1G_gain_db_rev7[] = { 9, 14, 19, 24 };
15244         const s8 *lna1_gain_db = NULL;
15245         const s8 *lna1_gain_db_2 = NULL;
15246         const s8 *lna2_gain_db = NULL;
15247         static const s8 tiaA_gain_db_rev7[] = { -9, -6, -3, 0, 3, 3, 3, 3, 3, 3 };
15248         const s8 *tia_gain_db;
15249         static const s8 tiaA_gainbits_rev7[] = { 0, 1, 2, 3, 4, 4, 4, 4, 4, 4 };
15250         const s8 *tia_gainbits;
15251         static const u16 rfseqA_init_gain_rev7[] = { 0x624f, 0x624f };
15252         const 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                                 static const s8 lna1A_gain_db_rev7[] = { 11, 16, 20, 24 };
15314                                 static const s8 lna1A_gain_db_2_rev7[] = { 11, 17, 22, 25};
15315                                 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15316
15317                                 crsminu_th = 0x3e;
15318                                 lna1_gain_db = lna1A_gain_db_rev7;
15319                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15320                                 lna2_gain_db = lna2A_gain_db_rev7;
15321                         } else if ((freq >= 5500) && (freq <= 5700)) {
15322
15323                                 static const s8 lna1A_gain_db_rev7[] = { 11, 17, 21, 25 };
15324                                 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15325                                 static const s8 lna2A_gain_db_rev7[] = { 1, 8, 12, 16 };
15326
15327                                 crsminu_th = 0x45;
15328                                 clip1md_gaincode_B = 0x14;
15329                                 nbclip_th = 0xff;
15330                                 chg_nbclip_th = 1;
15331                                 lna1_gain_db = lna1A_gain_db_rev7;
15332                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15333                                 lna2_gain_db = lna2A_gain_db_rev7;
15334                         } else {
15335
15336                                 static const s8 lna1A_gain_db_rev7[] = { 12, 18, 22, 26 };
15337                                 static const s8 lna1A_gain_db_2_rev7[] = { 12, 18, 22, 26};
15338                                 static const s8 lna2A_gain_db_rev7[] = { -1, 6, 10, 14 };
15339
15340                                 crsminu_th = 0x41;
15341                                 lna1_gain_db = lna1A_gain_db_rev7;
15342                                 lna1_gain_db_2 = lna1A_gain_db_2_rev7;
15343                                 lna2_gain_db = lna2A_gain_db_rev7;
15344                         }
15345
15346                         if (freq <= 4920) {
15347                                 nvar_baseline_offset0 = 5;
15348                                 nvar_baseline_offset1 = 5;
15349                         } else if ((freq > 4920) && (freq <= 5320)) {
15350                                 nvar_baseline_offset0 = 3;
15351                                 nvar_baseline_offset1 = 5;
15352                         } else if ((freq > 5320) && (freq <= 5700)) {
15353                                 nvar_baseline_offset0 = 3;
15354                                 nvar_baseline_offset1 = 2;
15355                         } else {
15356                                 nvar_baseline_offset0 = 4;
15357                                 nvar_baseline_offset1 = 0;
15358                         }
15359                 } else {
15360
15361                         crsminu_th = 0x3a;
15362                         crsminl_th = 0x3a;
15363                         w1clip_th = 20;
15364
15365                         if ((freq >= 4920) && (freq <= 5320)) {
15366                                 nvar_baseline_offset0 = 4;
15367                                 nvar_baseline_offset1 = 5;
15368                         } else if ((freq > 5320) && (freq <= 5550)) {
15369                                 nvar_baseline_offset0 = 4;
15370                                 nvar_baseline_offset1 = 2;
15371                         } else {
15372                                 nvar_baseline_offset0 = 5;
15373                                 nvar_baseline_offset1 = 3;
15374                         }
15375                 }
15376
15377                 write_phy_reg(pi, 0x20, init_gaincode);
15378                 write_phy_reg(pi, 0x2a7, init_gaincode);
15379
15380                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15381                                          pi->pubpi.phy_corenum, 0x106, 16,
15382                                          rfseq_init_gain);
15383
15384                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15385                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15386
15387                 write_phy_reg(pi, 0x36, clip1md_gaincode_B);
15388                 write_phy_reg(pi, 0x2ac, clip1md_gaincode_B);
15389
15390                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15391                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15392                 write_phy_reg(pi, 0x38, clip1lo_gaincode_B);
15393                 write_phy_reg(pi, 0x2ae, clip1lo_gaincode_B);
15394
15395                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20, 8,
15396                                          tia_gain_db);
15397                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20, 8,
15398                                          tia_gain_db);
15399
15400                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20, 8,
15401                                          tia_gainbits);
15402                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20, 8,
15403                                          tia_gainbits);
15404
15405                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15406
15407                 if (chg_nbclip_th == 1) {
15408                         write_phy_reg(pi, 0x2b, nbclip_th);
15409                         write_phy_reg(pi, 0x41, nbclip_th);
15410                 }
15411
15412                 mod_phy_reg(pi, 0x300, (0x3f << 0), (w1clip_th << 0));
15413                 mod_phy_reg(pi, 0x301, (0x3f << 0), (w1clip_th << 0));
15414
15415                 mod_phy_reg(pi, 0x2e4,
15416                             (0x3f << 0), (nvar_baseline_offset0 << 0));
15417
15418                 mod_phy_reg(pi, 0x2e4,
15419                             (0x3f << 6), (nvar_baseline_offset1 << 6));
15420
15421                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15422
15423                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8, 8,
15424                                                  lna1_gain_db);
15425                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8, 8,
15426                                                  lna1_gain_db_2);
15427
15428                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15429                                                  8, lna2_gain_db);
15430                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15431                                                  8, lna2_gain_db);
15432
15433                         write_phy_reg(pi, 0x24, clip1md_gaincode);
15434                         write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15435                 } else {
15436                         mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15437                 }
15438         }
15439 }
15440
15441 static void wlc_phy_workarounds_nphy_gainctrl(struct brcms_phy *pi)
15442 {
15443         u16 w1th, hpf_code, currband;
15444         int ctr;
15445         u8 rfseq_updategainu_events[] = {
15446                 NPHY_RFSEQ_CMD_RX_GAIN,
15447                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
15448                 NPHY_RFSEQ_CMD_SET_HPF_BW
15449         };
15450         static const u8 rfseq_updategainu_dlys[] = { 10, 30, 1 };
15451         static const s8 lna1G_gain_db[] = { 7, 11, 16, 23 };
15452         static const s8 lna1G_gain_db_rev4[] = { 8, 12, 17, 25 };
15453         static const s8 lna1G_gain_db_rev5[] = { 9, 13, 18, 26 };
15454         static const s8 lna1G_gain_db_rev6[] = { 8, 13, 18, 25 };
15455         static const s8 lna1G_gain_db_rev6_224B0[] = { 10, 14, 19, 27 };
15456         static const s8 lna1A_gain_db[] = { 7, 11, 17, 23 };
15457         static const s8 lna1A_gain_db_rev4[] = { 8, 12, 18, 23 };
15458         static const s8 lna1A_gain_db_rev5[] = { 6, 10, 16, 21 };
15459         static const s8 lna1A_gain_db_rev6[] = { 6, 10, 16, 21 };
15460         const s8 *lna1_gain_db = NULL;
15461         static const s8 lna2G_gain_db[] = { -5, 6, 10, 14 };
15462         static const s8 lna2G_gain_db_rev5[] = { -3, 7, 11, 16 };
15463         static const s8 lna2G_gain_db_rev6[] = { -5, 6, 10, 14 };
15464         static const s8 lna2G_gain_db_rev6_224B0[] = { -5, 6, 10, 15 };
15465         static const s8 lna2A_gain_db[] = { -6, 2, 6, 10 };
15466         static const s8 lna2A_gain_db_rev4[] = { -5, 2, 6, 10 };
15467         static const s8 lna2A_gain_db_rev5[] = { -7, 0, 4, 8 };
15468         static const s8 lna2A_gain_db_rev6[] = { -7, 0, 4, 8 };
15469         const s8 *lna2_gain_db = NULL;
15470         static const s8 tiaG_gain_db[] = {
15471                 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A };
15472         static const s8 tiaA_gain_db[] = {
15473                 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 };
15474         static const s8 tiaA_gain_db_rev4[] = {
15475                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15476         static const s8 tiaA_gain_db_rev5[] = {
15477                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15478         static const s8 tiaA_gain_db_rev6[] = {
15479                 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d };
15480         const s8 *tia_gain_db;
15481         static const s8 tiaG_gainbits[] = {
15482                 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 };
15483         static const s8 tiaA_gainbits[] = {
15484                 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 };
15485         static const s8 tiaA_gainbits_rev4[] = {
15486                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15487         static const s8 tiaA_gainbits_rev5[] = {
15488                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15489         static const s8 tiaA_gainbits_rev6[] = {
15490                 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 };
15491         const s8 *tia_gainbits;
15492         static const s8 lpf_gain_db[] = { 0x00, 0x06, 0x0c, 0x12, 0x12, 0x12 };
15493         static const s8 lpf_gainbits[] = { 0x00, 0x01, 0x02, 0x03, 0x03, 0x03 };
15494         static const u16 rfseqG_init_gain[] = { 0x613f, 0x613f, 0x613f, 0x613f };
15495         static const u16 rfseqG_init_gain_rev4[] = { 0x513f, 0x513f, 0x513f, 0x513f };
15496         static const u16 rfseqG_init_gain_rev5[] = { 0x413f, 0x413f, 0x413f, 0x413f };
15497         static const u16 rfseqG_init_gain_rev5_elna[] = {
15498                 0x013f, 0x013f, 0x013f, 0x013f };
15499         static const u16 rfseqG_init_gain_rev6[] = { 0x513f, 0x513f };
15500         static const u16 rfseqG_init_gain_rev6_224B0[] = { 0x413f, 0x413f };
15501         static const u16 rfseqG_init_gain_rev6_elna[] = { 0x113f, 0x113f };
15502         static const u16 rfseqA_init_gain[] = { 0x516f, 0x516f, 0x516f, 0x516f };
15503         static const u16 rfseqA_init_gain_rev4[] = { 0x614f, 0x614f, 0x614f, 0x614f };
15504         static const u16 rfseqA_init_gain_rev4_elna[] = {
15505                 0x314f, 0x314f, 0x314f, 0x314f };
15506         static const u16 rfseqA_init_gain_rev5[] = { 0x714f, 0x714f, 0x714f, 0x714f };
15507         static const u16 rfseqA_init_gain_rev6[] = { 0x714f, 0x714f };
15508         const u16 *rfseq_init_gain;
15509         u16 initG_gaincode = 0x627e;
15510         u16 initG_gaincode_rev4 = 0x527e;
15511         u16 initG_gaincode_rev5 = 0x427e;
15512         u16 initG_gaincode_rev5_elna = 0x027e;
15513         u16 initG_gaincode_rev6 = 0x527e;
15514         u16 initG_gaincode_rev6_224B0 = 0x427e;
15515         u16 initG_gaincode_rev6_elna = 0x127e;
15516         u16 initA_gaincode = 0x52de;
15517         u16 initA_gaincode_rev4 = 0x629e;
15518         u16 initA_gaincode_rev4_elna = 0x329e;
15519         u16 initA_gaincode_rev5 = 0x729e;
15520         u16 initA_gaincode_rev6 = 0x729e;
15521         u16 init_gaincode;
15522         u16 clip1hiG_gaincode = 0x107e;
15523         u16 clip1hiG_gaincode_rev4 = 0x007e;
15524         u16 clip1hiG_gaincode_rev5 = 0x1076;
15525         u16 clip1hiG_gaincode_rev6 = 0x007e;
15526         u16 clip1hiA_gaincode = 0x00de;
15527         u16 clip1hiA_gaincode_rev4 = 0x029e;
15528         u16 clip1hiA_gaincode_rev5 = 0x029e;
15529         u16 clip1hiA_gaincode_rev6 = 0x029e;
15530         u16 clip1hi_gaincode;
15531         u16 clip1mdG_gaincode = 0x0066;
15532         u16 clip1mdA_gaincode = 0x00ca;
15533         u16 clip1mdA_gaincode_rev4 = 0x1084;
15534         u16 clip1mdA_gaincode_rev5 = 0x2084;
15535         u16 clip1mdA_gaincode_rev6 = 0x2084;
15536         u16 clip1md_gaincode = 0;
15537         u16 clip1loG_gaincode = 0x0074;
15538         static const u16 clip1loG_gaincode_rev5[] = {
15539                 0x0062, 0x0064, 0x006a, 0x106a, 0x106c, 0x1074, 0x107c, 0x207c
15540         };
15541         static const u16 clip1loG_gaincode_rev6[] = {
15542                 0x106a, 0x106c, 0x1074, 0x107c, 0x007e, 0x107e, 0x207e, 0x307e
15543         };
15544         u16 clip1loG_gaincode_rev6_224B0 = 0x1074;
15545         u16 clip1loA_gaincode = 0x00cc;
15546         u16 clip1loA_gaincode_rev4 = 0x0086;
15547         u16 clip1loA_gaincode_rev5 = 0x2086;
15548         u16 clip1loA_gaincode_rev6 = 0x2086;
15549         u16 clip1lo_gaincode;
15550         u8 crsminG_th = 0x18;
15551         u8 crsminG_th_rev5 = 0x18;
15552         u8 crsminG_th_rev6 = 0x18;
15553         u8 crsminA_th = 0x1e;
15554         u8 crsminA_th_rev4 = 0x24;
15555         u8 crsminA_th_rev5 = 0x24;
15556         u8 crsminA_th_rev6 = 0x24;
15557         u8 crsmin_th;
15558         u8 crsminlG_th = 0x18;
15559         u8 crsminlG_th_rev5 = 0x18;
15560         u8 crsminlG_th_rev6 = 0x18;
15561         u8 crsminlA_th = 0x1e;
15562         u8 crsminlA_th_rev4 = 0x24;
15563         u8 crsminlA_th_rev5 = 0x24;
15564         u8 crsminlA_th_rev6 = 0x24;
15565         u8 crsminl_th = 0;
15566         u8 crsminuG_th = 0x18;
15567         u8 crsminuG_th_rev5 = 0x18;
15568         u8 crsminuG_th_rev6 = 0x18;
15569         u8 crsminuA_th = 0x1e;
15570         u8 crsminuA_th_rev4 = 0x24;
15571         u8 crsminuA_th_rev5 = 0x24;
15572         u8 crsminuA_th_rev6 = 0x24;
15573         u8 crsminuA_th_rev6_224B0 = 0x2d;
15574         u8 crsminu_th;
15575         u16 nbclipG_th = 0x20d;
15576         u16 nbclipG_th_rev4 = 0x1a1;
15577         u16 nbclipG_th_rev5 = 0x1d0;
15578         u16 nbclipG_th_rev6 = 0x1d0;
15579         u16 nbclipA_th = 0x1a1;
15580         u16 nbclipA_th_rev4 = 0x107;
15581         u16 nbclipA_th_rev5 = 0x0a9;
15582         u16 nbclipA_th_rev6 = 0x0f0;
15583         u16 nbclip_th = 0;
15584         u8 w1clipG_th = 5;
15585         u8 w1clipG_th_rev5 = 9;
15586         u8 w1clipG_th_rev6 = 5;
15587         u8 w1clipA_th = 25, w1clip_th;
15588         u8 rssi_gain_default = 0x50;
15589         u8 rssiG_gain_rev6_224B0 = 0x50;
15590         u8 rssiA_gain_rev5 = 0x90;
15591         u8 rssiA_gain_rev6 = 0x90;
15592         u8 rssi_gain;
15593         u16 regval[21];
15594         u8 triso;
15595
15596         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ? pi->srom_fem5g.triso :
15597                 pi->srom_fem2g.triso;
15598
15599         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
15600                 if (pi->pubpi.radiorev == 5) {
15601                         wlc_phy_workarounds_nphy_gainctrl_2057_rev5(pi);
15602                 } else if (pi->pubpi.radiorev == 7) {
15603                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15604
15605                         mod_phy_reg(pi, 0x283, (0xff << 0), (0x44 << 0));
15606                         mod_phy_reg(pi, 0x280, (0xff << 0), (0x44 << 0));
15607
15608                 } else if ((pi->pubpi.radiorev == 3)
15609                            || (pi->pubpi.radiorev == 8)) {
15610                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15611
15612                         if (pi->pubpi.radiorev == 8) {
15613                                 mod_phy_reg(pi, 0x283,
15614                                             (0xff << 0), (0x44 << 0));
15615                                 mod_phy_reg(pi, 0x280,
15616                                             (0xff << 0), (0x44 << 0));
15617                         }
15618                 } else {
15619                         wlc_phy_workarounds_nphy_gainctrl_2057_rev6(pi);
15620                 }
15621         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
15622
15623                 mod_phy_reg(pi, 0xa0, (0x1 << 6), (1 << 6));
15624
15625                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15626                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15627
15628                 currband =
15629                         read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
15630                 if (currband == 0) {
15631                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15632                                 if (pi->pubpi.radiorev == 11) {
15633                                         lna1_gain_db = lna1G_gain_db_rev6_224B0;
15634                                         lna2_gain_db = lna2G_gain_db_rev6_224B0;
15635                                         rfseq_init_gain =
15636                                                 rfseqG_init_gain_rev6_224B0;
15637                                         init_gaincode =
15638                                                 initG_gaincode_rev6_224B0;
15639                                         clip1hi_gaincode =
15640                                                 clip1hiG_gaincode_rev6;
15641                                         clip1lo_gaincode =
15642                                                 clip1loG_gaincode_rev6_224B0;
15643                                         nbclip_th = nbclipG_th_rev6;
15644                                         w1clip_th = w1clipG_th_rev6;
15645                                         crsmin_th = crsminG_th_rev6;
15646                                         crsminl_th = crsminlG_th_rev6;
15647                                         crsminu_th = crsminuG_th_rev6;
15648                                         rssi_gain = rssiG_gain_rev6_224B0;
15649                                 } else {
15650                                         lna1_gain_db = lna1G_gain_db_rev6;
15651                                         lna2_gain_db = lna2G_gain_db_rev6;
15652                                         if (pi->sh->boardflags & BFL_EXTLNA) {
15653
15654                                                 rfseq_init_gain =
15655                                                      rfseqG_init_gain_rev6_elna;
15656                                                 init_gaincode =
15657                                                        initG_gaincode_rev6_elna;
15658                                         } else {
15659                                                 rfseq_init_gain =
15660                                                         rfseqG_init_gain_rev6;
15661                                                 init_gaincode =
15662                                                         initG_gaincode_rev6;
15663                                         }
15664                                         clip1hi_gaincode =
15665                                                 clip1hiG_gaincode_rev6;
15666                                         switch (triso) {
15667                                         case 0:
15668                                                 clip1lo_gaincode =
15669                                                         clip1loG_gaincode_rev6
15670                                                         [0];
15671                                                 break;
15672                                         case 1:
15673                                                 clip1lo_gaincode =
15674                                                         clip1loG_gaincode_rev6
15675                                                         [1];
15676                                                 break;
15677                                         case 2:
15678                                                 clip1lo_gaincode =
15679                                                         clip1loG_gaincode_rev6
15680                                                         [2];
15681                                                 break;
15682                                         case 3:
15683                                         default:
15684
15685                                                 clip1lo_gaincode =
15686                                                         clip1loG_gaincode_rev6
15687                                                         [3];
15688                                                 break;
15689                                         case 4:
15690                                                 clip1lo_gaincode =
15691                                                         clip1loG_gaincode_rev6
15692                                                         [4];
15693                                                 break;
15694                                         case 5:
15695                                                 clip1lo_gaincode =
15696                                                         clip1loG_gaincode_rev6
15697                                                         [5];
15698                                                 break;
15699                                         case 6:
15700                                                 clip1lo_gaincode =
15701                                                         clip1loG_gaincode_rev6
15702                                                         [6];
15703                                                 break;
15704                                         case 7:
15705                                                 clip1lo_gaincode =
15706                                                         clip1loG_gaincode_rev6
15707                                                         [7];
15708                                                 break;
15709                                         }
15710                                         nbclip_th = nbclipG_th_rev6;
15711                                         w1clip_th = w1clipG_th_rev6;
15712                                         crsmin_th = crsminG_th_rev6;
15713                                         crsminl_th = crsminlG_th_rev6;
15714                                         crsminu_th = crsminuG_th_rev6;
15715                                         rssi_gain = rssi_gain_default;
15716                                 }
15717                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15718                                 lna1_gain_db = lna1G_gain_db_rev5;
15719                                 lna2_gain_db = lna2G_gain_db_rev5;
15720                                 if (pi->sh->boardflags & BFL_EXTLNA) {
15721
15722                                         rfseq_init_gain =
15723                                                 rfseqG_init_gain_rev5_elna;
15724                                         init_gaincode =
15725                                                 initG_gaincode_rev5_elna;
15726                                 } else {
15727                                         rfseq_init_gain = rfseqG_init_gain_rev5;
15728                                         init_gaincode = initG_gaincode_rev5;
15729                                 }
15730                                 clip1hi_gaincode = clip1hiG_gaincode_rev5;
15731                                 switch (triso) {
15732                                 case 0:
15733                                         clip1lo_gaincode =
15734                                                 clip1loG_gaincode_rev5[0];
15735                                         break;
15736                                 case 1:
15737                                         clip1lo_gaincode =
15738                                                 clip1loG_gaincode_rev5[1];
15739                                         break;
15740                                 case 2:
15741                                         clip1lo_gaincode =
15742                                                 clip1loG_gaincode_rev5[2];
15743                                         break;
15744                                 case 3:
15745
15746                                         clip1lo_gaincode =
15747                                                 clip1loG_gaincode_rev5[3];
15748                                         break;
15749                                 case 4:
15750                                         clip1lo_gaincode =
15751                                                 clip1loG_gaincode_rev5[4];
15752                                         break;
15753                                 case 5:
15754                                         clip1lo_gaincode =
15755                                                 clip1loG_gaincode_rev5[5];
15756                                         break;
15757                                 case 6:
15758                                         clip1lo_gaincode =
15759                                                 clip1loG_gaincode_rev5[6];
15760                                         break;
15761                                 case 7:
15762                                         clip1lo_gaincode =
15763                                                 clip1loG_gaincode_rev5[7];
15764                                         break;
15765                                 default:
15766                                         clip1lo_gaincode =
15767                                                 clip1loG_gaincode_rev5[3];
15768                                         break;
15769                                 }
15770                                 nbclip_th = nbclipG_th_rev5;
15771                                 w1clip_th = w1clipG_th_rev5;
15772                                 crsmin_th = crsminG_th_rev5;
15773                                 crsminl_th = crsminlG_th_rev5;
15774                                 crsminu_th = crsminuG_th_rev5;
15775                                 rssi_gain = rssi_gain_default;
15776                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15777                                 lna1_gain_db = lna1G_gain_db_rev4;
15778                                 lna2_gain_db = lna2G_gain_db;
15779                                 rfseq_init_gain = rfseqG_init_gain_rev4;
15780                                 init_gaincode = initG_gaincode_rev4;
15781                                 clip1hi_gaincode = clip1hiG_gaincode_rev4;
15782                                 clip1lo_gaincode = clip1loG_gaincode;
15783                                 nbclip_th = nbclipG_th_rev4;
15784                                 w1clip_th = w1clipG_th;
15785                                 crsmin_th = crsminG_th;
15786                                 crsminl_th = crsminlG_th;
15787                                 crsminu_th = crsminuG_th;
15788                                 rssi_gain = rssi_gain_default;
15789                         } else {
15790                                 lna1_gain_db = lna1G_gain_db;
15791                                 lna2_gain_db = lna2G_gain_db;
15792                                 rfseq_init_gain = rfseqG_init_gain;
15793                                 init_gaincode = initG_gaincode;
15794                                 clip1hi_gaincode = clip1hiG_gaincode;
15795                                 clip1lo_gaincode = clip1loG_gaincode;
15796                                 nbclip_th = nbclipG_th;
15797                                 w1clip_th = w1clipG_th;
15798                                 crsmin_th = crsminG_th;
15799                                 crsminl_th = crsminlG_th;
15800                                 crsminu_th = crsminuG_th;
15801                                 rssi_gain = rssi_gain_default;
15802                         }
15803                         tia_gain_db = tiaG_gain_db;
15804                         tia_gainbits = tiaG_gainbits;
15805                         clip1md_gaincode = clip1mdG_gaincode;
15806                 } else {
15807                         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
15808                                 lna1_gain_db = lna1A_gain_db_rev6;
15809                                 lna2_gain_db = lna2A_gain_db_rev6;
15810                                 tia_gain_db = tiaA_gain_db_rev6;
15811                                 tia_gainbits = tiaA_gainbits_rev6;
15812                                 rfseq_init_gain = rfseqA_init_gain_rev6;
15813                                 init_gaincode = initA_gaincode_rev6;
15814                                 clip1hi_gaincode = clip1hiA_gaincode_rev6;
15815                                 clip1md_gaincode = clip1mdA_gaincode_rev6;
15816                                 clip1lo_gaincode = clip1loA_gaincode_rev6;
15817                                 crsmin_th = crsminA_th_rev6;
15818                                 crsminl_th = crsminlA_th_rev6;
15819                                 if ((pi->pubpi.radiorev == 11) &&
15820                                     (CHSPEC_IS40(pi->radio_chanspec) == 0))
15821                                         crsminu_th = crsminuA_th_rev6_224B0;
15822                                 else
15823                                         crsminu_th = crsminuA_th_rev6;
15824
15825                                 nbclip_th = nbclipA_th_rev6;
15826                                 rssi_gain = rssiA_gain_rev6;
15827                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
15828                                 lna1_gain_db = lna1A_gain_db_rev5;
15829                                 lna2_gain_db = lna2A_gain_db_rev5;
15830                                 tia_gain_db = tiaA_gain_db_rev5;
15831                                 tia_gainbits = tiaA_gainbits_rev5;
15832                                 rfseq_init_gain = rfseqA_init_gain_rev5;
15833                                 init_gaincode = initA_gaincode_rev5;
15834                                 clip1hi_gaincode = clip1hiA_gaincode_rev5;
15835                                 clip1md_gaincode = clip1mdA_gaincode_rev5;
15836                                 clip1lo_gaincode = clip1loA_gaincode_rev5;
15837                                 crsmin_th = crsminA_th_rev5;
15838                                 crsminl_th = crsminlA_th_rev5;
15839                                 crsminu_th = crsminuA_th_rev5;
15840                                 nbclip_th = nbclipA_th_rev5;
15841                                 rssi_gain = rssiA_gain_rev5;
15842                         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
15843                                 lna1_gain_db = lna1A_gain_db_rev4;
15844                                 lna2_gain_db = lna2A_gain_db_rev4;
15845                                 tia_gain_db = tiaA_gain_db_rev4;
15846                                 tia_gainbits = tiaA_gainbits_rev4;
15847                                 if (pi->sh->boardflags & BFL_EXTLNA_5GHz) {
15848
15849                                         rfseq_init_gain =
15850                                                 rfseqA_init_gain_rev4_elna;
15851                                         init_gaincode =
15852                                                 initA_gaincode_rev4_elna;
15853                                 } else {
15854                                         rfseq_init_gain = rfseqA_init_gain_rev4;
15855                                         init_gaincode = initA_gaincode_rev4;
15856                                 }
15857                                 clip1hi_gaincode = clip1hiA_gaincode_rev4;
15858                                 clip1md_gaincode = clip1mdA_gaincode_rev4;
15859                                 clip1lo_gaincode = clip1loA_gaincode_rev4;
15860                                 crsmin_th = crsminA_th_rev4;
15861                                 crsminl_th = crsminlA_th_rev4;
15862                                 crsminu_th = crsminuA_th_rev4;
15863                                 nbclip_th = nbclipA_th_rev4;
15864                                 rssi_gain = rssi_gain_default;
15865                         } else {
15866                                 lna1_gain_db = lna1A_gain_db;
15867                                 lna2_gain_db = lna2A_gain_db;
15868                                 tia_gain_db = tiaA_gain_db;
15869                                 tia_gainbits = tiaA_gainbits;
15870                                 rfseq_init_gain = rfseqA_init_gain;
15871                                 init_gaincode = initA_gaincode;
15872                                 clip1hi_gaincode = clip1hiA_gaincode;
15873                                 clip1md_gaincode = clip1mdA_gaincode;
15874                                 clip1lo_gaincode = clip1loA_gaincode;
15875                                 crsmin_th = crsminA_th;
15876                                 crsminl_th = crsminlA_th;
15877                                 crsminu_th = crsminuA_th;
15878                                 nbclip_th = nbclipA_th;
15879                                 rssi_gain = rssi_gain_default;
15880                         }
15881                         w1clip_th = w1clipA_th;
15882                 }
15883
15884                 write_radio_reg(pi,
15885                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15886                                  RADIO_2056_RX0), 0x17);
15887                 write_radio_reg(pi,
15888                                 (RADIO_2056_RX_BIASPOLE_LNAG1_IDAC |
15889                                  RADIO_2056_RX1), 0x17);
15890
15891                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX0),
15892                                 0xf0);
15893                 write_radio_reg(pi, (RADIO_2056_RX_LNAG2_IDAC | RADIO_2056_RX1),
15894                                 0xf0);
15895
15896                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX0),
15897                                 0x0);
15898                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_POLE | RADIO_2056_RX1),
15899                                 0x0);
15900
15901                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX0),
15902                                 rssi_gain);
15903                 write_radio_reg(pi, (RADIO_2056_RX_RSSI_GAIN | RADIO_2056_RX1),
15904                                 rssi_gain);
15905
15906                 write_radio_reg(pi,
15907                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15908                                  RADIO_2056_RX0), 0x17);
15909                 write_radio_reg(pi,
15910                                 (RADIO_2056_RX_BIASPOLE_LNAA1_IDAC |
15911                                  RADIO_2056_RX1), 0x17);
15912
15913                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX0),
15914                                 0xFF);
15915                 write_radio_reg(pi, (RADIO_2056_RX_LNAA2_IDAC | RADIO_2056_RX1),
15916                                 0xFF);
15917
15918                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 8,
15919                                          8, lna1_gain_db);
15920                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 8,
15921                                          8, lna1_gain_db);
15922
15923                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 4, 0x10,
15924                                          8, lna2_gain_db);
15925                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 4, 0x10,
15926                                          8, lna2_gain_db);
15927
15928                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 10, 0x20,
15929                                          8, tia_gain_db);
15930                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 10, 0x20,
15931                                          8, tia_gain_db);
15932
15933                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 10, 0x20,
15934                                          8, tia_gainbits);
15935                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 10, 0x20,
15936                                          8, tia_gainbits);
15937
15938                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN1, 6, 0x40,
15939                                          8, &lpf_gain_db);
15940                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAIN2, 6, 0x40,
15941                                          8, &lpf_gain_db);
15942                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS1, 6, 0x40,
15943                                          8, &lpf_gainbits);
15944                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_GAINBITS2, 6, 0x40,
15945                                          8, &lpf_gainbits);
15946
15947                 write_phy_reg(pi, 0x20, init_gaincode);
15948                 write_phy_reg(pi, 0x2a7, init_gaincode);
15949
15950                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
15951                                          pi->pubpi.phy_corenum, 0x106, 16,
15952                                          rfseq_init_gain);
15953
15954                 write_phy_reg(pi, 0x22, clip1hi_gaincode);
15955                 write_phy_reg(pi, 0x2a9, clip1hi_gaincode);
15956
15957                 write_phy_reg(pi, 0x24, clip1md_gaincode);
15958                 write_phy_reg(pi, 0x2ab, clip1md_gaincode);
15959
15960                 write_phy_reg(pi, 0x37, clip1lo_gaincode);
15961                 write_phy_reg(pi, 0x2ad, clip1lo_gaincode);
15962
15963                 mod_phy_reg(pi, 0x27d, (0xff << 0), (crsmin_th << 0));
15964                 mod_phy_reg(pi, 0x280, (0xff << 0), (crsminl_th << 0));
15965                 mod_phy_reg(pi, 0x283, (0xff << 0), (crsminu_th << 0));
15966
15967                 write_phy_reg(pi, 0x2b, nbclip_th);
15968                 write_phy_reg(pi, 0x41, nbclip_th);
15969
15970                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1clip_th << 0));
15971                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1clip_th << 0));
15972
15973                 write_phy_reg(pi, 0x150, 0x809c);
15974
15975         } else {
15976
15977                 mod_phy_reg(pi, 0x1c, (0x1 << 13), (1 << 13));
15978                 mod_phy_reg(pi, 0x32, (0x1 << 13), (1 << 13));
15979
15980                 write_phy_reg(pi, 0x2b, 0x84);
15981                 write_phy_reg(pi, 0x41, 0x84);
15982
15983                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15984                         write_phy_reg(pi, 0x6b, 0x2b);
15985                         write_phy_reg(pi, 0x6c, 0x2b);
15986                         write_phy_reg(pi, 0x6d, 0x9);
15987                         write_phy_reg(pi, 0x6e, 0x9);
15988                 }
15989
15990                 w1th = NPHY_RSSICAL_W1_TARGET - 4;
15991                 mod_phy_reg(pi, 0x27, (0x3f << 0), (w1th << 0));
15992                 mod_phy_reg(pi, 0x3d, (0x3f << 0), (w1th << 0));
15993
15994                 if (CHSPEC_IS20(pi->radio_chanspec)) {
15995                         mod_phy_reg(pi, 0x1c, (0x1f << 0), (0x1 << 0));
15996                         mod_phy_reg(pi, 0x32, (0x1f << 0), (0x1 << 0));
15997
15998                         mod_phy_reg(pi, 0x1d, (0x1f << 0), (0x1 << 0));
15999                         mod_phy_reg(pi, 0x33, (0x1f << 0), (0x1 << 0));
16000                 }
16001
16002                 write_phy_reg(pi, 0x150, 0x809c);
16003
16004                 if (pi->nphy_gain_boost)
16005                         if ((CHSPEC_IS2G(pi->radio_chanspec)) &&
16006                             (CHSPEC_IS40(pi->radio_chanspec)))
16007                                 hpf_code = 4;
16008                         else
16009                                 hpf_code = 5;
16010                 else if (CHSPEC_IS40(pi->radio_chanspec))
16011                         hpf_code = 6;
16012                 else
16013                         hpf_code = 7;
16014
16015                 mod_phy_reg(pi, 0x20, (0x1f << 7), (hpf_code << 7));
16016                 mod_phy_reg(pi, 0x36, (0x1f << 7), (hpf_code << 7));
16017
16018                 for (ctr = 0; ctr < 4; ctr++)
16019                         regval[ctr] = (hpf_code << 8) | 0x7c;
16020                 wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16021
16022                 wlc_phy_adjust_lnagaintbl_nphy(pi);
16023
16024                 if (pi->nphy_elna_gain_config) {
16025                         regval[0] = 0;
16026                         regval[1] = 1;
16027                         regval[2] = 1;
16028                         regval[3] = 1;
16029                         wlc_phy_table_write_nphy(pi, 2, 4, 8, 16, regval);
16030                         wlc_phy_table_write_nphy(pi, 3, 4, 8, 16, regval);
16031
16032                         for (ctr = 0; ctr < 4; ctr++)
16033                                 regval[ctr] = (hpf_code << 8) | 0x74;
16034                         wlc_phy_table_write_nphy(pi, 7, 4, 0x106, 16, regval);
16035                 }
16036
16037                 if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16038                         for (ctr = 0; ctr < 21; ctr++)
16039                                 regval[ctr] = 3 * ctr;
16040                         wlc_phy_table_write_nphy(pi, 0, 21, 32, 16, regval);
16041                         wlc_phy_table_write_nphy(pi, 1, 21, 32, 16, regval);
16042
16043                         for (ctr = 0; ctr < 21; ctr++)
16044                                 regval[ctr] = (u16) ctr;
16045                         wlc_phy_table_write_nphy(pi, 2, 21, 32, 16, regval);
16046                         wlc_phy_table_write_nphy(pi, 3, 21, 32, 16, regval);
16047                 }
16048
16049                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_UPDATEGAINU,
16050                                        rfseq_updategainu_events,
16051                                        rfseq_updategainu_dlys,
16052                                        ARRAY_SIZE(rfseq_updategainu_events));
16053
16054                 mod_phy_reg(pi, 0x153, (0xff << 8), (90 << 8));
16055
16056                 if (CHSPEC_IS2G(pi->radio_chanspec))
16057                         mod_phy_reg(pi,
16058                                     (NPHY_TO_BPHY_OFF + BPHY_OPTIONAL_MODES),
16059                                     0x7f, 0x4);
16060         }
16061 }
16062
16063 static void wlc_phy_workarounds_nphy_rev7(struct brcms_phy *pi)
16064 {
16065         static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16066                 NPHY_REV3_RFSEQ_CMD_NOP,
16067                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16068                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16069                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16070                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16071                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16072                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16073                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16074                 NPHY_REV3_RFSEQ_CMD_END
16075         };
16076         static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16077                 { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16078         static const u16 rfseq_rx2tx_dacbufpu_rev7[] = { 0x10f, 0x10f };
16079         u32 leg_data_weights;
16080         u8 chan_freq_range = 0;
16081         static const u16 dac_control = 0x0002;
16082         u16 aux_adc_vmid_rev7_core0[] = { 0x8e, 0x96, 0x96, 0x96 };
16083         u16 aux_adc_vmid_rev7_core1[] = { 0x8f, 0x9f, 0x9f, 0x96 };
16084         u16 aux_adc_gain_rev7[] = { 0x02, 0x02, 0x02, 0x02 };
16085         s32 min_nvar_val = 0x18d;
16086         s32 min_nvar_offset_6mbps = 20;
16087         u8 pdetrange;
16088         u16 afectrl_adc_ctrl1_rev7 = 0x20;
16089         u16 afectrl_adc_ctrl2_rev7 = 0x0;
16090         u16 rfseq_rx2tx_lpf_h_hpc_rev7 = 0x77;
16091         u16 rfseq_tx2rx_lpf_h_hpc_rev7 = 0x77;
16092         u16 rfseq_pktgn_lpf_h_hpc_rev7 = 0x77;
16093         static const u16 rfseq_htpktgn_lpf_hpc_rev7[] = { 0x77, 0x11, 0x11 };
16094         static const u16 rfseq_pktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16095         static const u16 rfseq_cckpktgn_lpf_hpc_rev7[] = { 0x11, 0x11 };
16096         u16 ipalvlshift_3p3_war_en = 0;
16097         u16 rccal_bcap_val, rccal_scap_val;
16098         u16 rccal_tx20_11b_bcap = 0;
16099         u16 rccal_tx20_11b_scap = 0;
16100         u16 rccal_tx20_11n_bcap = 0;
16101         u16 rccal_tx20_11n_scap = 0;
16102         u16 rccal_tx40_11n_bcap = 0;
16103         u16 rccal_tx40_11n_scap = 0;
16104         u16 rx2tx_lpf_rc_lut_tx20_11b = 0;
16105         u16 rx2tx_lpf_rc_lut_tx20_11n = 0;
16106         u16 rx2tx_lpf_rc_lut_tx40_11n = 0;
16107         u16 tx_lpf_bw_ofdm_20mhz = 0;
16108         u16 tx_lpf_bw_ofdm_40mhz = 0;
16109         u16 tx_lpf_bw_11b = 0;
16110         u16 ipa2g_mainbias, ipa2g_casconv, ipa2g_biasfilt;
16111         u16 txgm_idac_bleed = 0;
16112         bool rccal_ovrd = false;
16113         u16 freq;
16114         int coreNum;
16115
16116
16117         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
16118                 mod_phy_reg(pi, 0x221, (0x1 << 4), (1 << 4));
16119
16120                 mod_phy_reg(pi, 0x160, (0x7f << 0), (32 << 0));
16121                 mod_phy_reg(pi, 0x160, (0x7f << 8), (39 << 8));
16122                 mod_phy_reg(pi, 0x161, (0x7f << 0), (46 << 0));
16123                 mod_phy_reg(pi, 0x161, (0x7f << 8), (51 << 8));
16124                 mod_phy_reg(pi, 0x162, (0x7f << 0), (55 << 0));
16125                 mod_phy_reg(pi, 0x162, (0x7f << 8), (58 << 8));
16126                 mod_phy_reg(pi, 0x163, (0x7f << 0), (60 << 0));
16127                 mod_phy_reg(pi, 0x163, (0x7f << 8), (62 << 8));
16128                 mod_phy_reg(pi, 0x164, (0x7f << 0), (62 << 0));
16129                 mod_phy_reg(pi, 0x164, (0x7f << 8), (63 << 8));
16130                 mod_phy_reg(pi, 0x165, (0x7f << 0), (63 << 0));
16131                 mod_phy_reg(pi, 0x165, (0x7f << 8), (64 << 8));
16132                 mod_phy_reg(pi, 0x166, (0x7f << 0), (64 << 0));
16133                 mod_phy_reg(pi, 0x166, (0x7f << 8), (64 << 8));
16134                 mod_phy_reg(pi, 0x167, (0x7f << 0), (64 << 0));
16135                 mod_phy_reg(pi, 0x167, (0x7f << 8), (64 << 8));
16136         }
16137
16138         if (NREV_LE(pi->pubpi.phy_rev, 8)) {
16139                 write_phy_reg(pi, 0x23f, 0x1b0);
16140                 write_phy_reg(pi, 0x240, 0x1b0);
16141         }
16142
16143         if (NREV_GE(pi->pubpi.phy_rev, 8))
16144                 mod_phy_reg(pi, 0xbd, (0xff << 0), (114 << 0));
16145
16146         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16147                                  &dac_control);
16148         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16149                                  &dac_control);
16150
16151         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16152                                 1, 0, 32, &leg_data_weights);
16153         leg_data_weights = leg_data_weights & 0xffffff;
16154         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16155                                  1, 0, 32, &leg_data_weights);
16156
16157         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
16158                                  2, 0x15e, 16, rfseq_rx2tx_dacbufpu_rev7);
16159         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x16e, 16,
16160                                  rfseq_rx2tx_dacbufpu_rev7);
16161
16162         if (PHY_IPA(pi))
16163                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16164                                        rfseq_rx2tx_events_rev3_ipa,
16165                                        rfseq_rx2tx_dlys_rev3_ipa,
16166                                        ARRAY_SIZE
16167                                        (rfseq_rx2tx_events_rev3_ipa));
16168
16169         mod_phy_reg(pi, 0x299, (0x3 << 14), (0x1 << 14));
16170         mod_phy_reg(pi, 0x29d, (0x3 << 14), (0x1 << 14));
16171
16172         tx_lpf_bw_ofdm_20mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x154);
16173         tx_lpf_bw_ofdm_40mhz = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x159);
16174         tx_lpf_bw_11b = wlc_phy_read_lpf_bw_ctl_nphy(pi, 0x152);
16175
16176         if (PHY_IPA(pi)) {
16177
16178                 if (((pi->pubpi.radiorev == 5)
16179                      && (CHSPEC_IS40(pi->radio_chanspec) == 1))
16180                     || (pi->pubpi.radiorev == 7)
16181                     || (pi->pubpi.radiorev == 8)) {
16182
16183                         rccal_bcap_val =
16184                             read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16185                         rccal_scap_val =
16186                             read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16187
16188                         rccal_tx20_11b_bcap = rccal_bcap_val;
16189                         rccal_tx20_11b_scap = rccal_scap_val;
16190
16191                         if ((pi->pubpi.radiorev == 5) &&
16192                             (CHSPEC_IS40(pi->radio_chanspec) == 1)) {
16193
16194                                 rccal_tx20_11n_bcap = rccal_bcap_val;
16195                                 rccal_tx20_11n_scap = rccal_scap_val;
16196                                 rccal_tx40_11n_bcap = 0xc;
16197                                 rccal_tx40_11n_scap = 0xc;
16198
16199                                 rccal_ovrd = true;
16200
16201                         } else if ((pi->pubpi.radiorev == 7)
16202                                    || (pi->pubpi.radiorev == 8)) {
16203
16204                                 tx_lpf_bw_ofdm_20mhz = 4;
16205                                 tx_lpf_bw_11b = 1;
16206
16207                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16208                                         rccal_tx20_11n_bcap = 0xc;
16209                                         rccal_tx20_11n_scap = 0xc;
16210                                         rccal_tx40_11n_bcap = 0xa;
16211                                         rccal_tx40_11n_scap = 0xa;
16212                                 } else {
16213                                         rccal_tx20_11n_bcap = 0x14;
16214                                         rccal_tx20_11n_scap = 0x14;
16215                                         rccal_tx40_11n_bcap = 0xf;
16216                                         rccal_tx40_11n_scap = 0xf;
16217                                 }
16218
16219                                 rccal_ovrd = true;
16220                         }
16221                 }
16222
16223         } else {
16224
16225                 if (pi->pubpi.radiorev == 5) {
16226
16227                         tx_lpf_bw_ofdm_20mhz = 1;
16228                         tx_lpf_bw_ofdm_40mhz = 3;
16229
16230                         rccal_bcap_val =
16231                             read_radio_reg(pi, RADIO_2057_RCCAL_BCAP_VAL);
16232                         rccal_scap_val =
16233                             read_radio_reg(pi, RADIO_2057_RCCAL_SCAP_VAL);
16234
16235                         rccal_tx20_11b_bcap = rccal_bcap_val;
16236                         rccal_tx20_11b_scap = rccal_scap_val;
16237
16238                         rccal_tx20_11n_bcap = 0x13;
16239                         rccal_tx20_11n_scap = 0x11;
16240                         rccal_tx40_11n_bcap = 0x13;
16241                         rccal_tx40_11n_scap = 0x11;
16242
16243                         rccal_ovrd = true;
16244                 }
16245         }
16246
16247         if (rccal_ovrd) {
16248
16249                 rx2tx_lpf_rc_lut_tx20_11b =
16250                     (rccal_tx20_11b_bcap << 8) |
16251                     (rccal_tx20_11b_scap << 3) | tx_lpf_bw_11b;
16252                 rx2tx_lpf_rc_lut_tx20_11n =
16253                     (rccal_tx20_11n_bcap << 8) |
16254                     (rccal_tx20_11n_scap << 3) | tx_lpf_bw_ofdm_20mhz;
16255                 rx2tx_lpf_rc_lut_tx40_11n =
16256                     (rccal_tx40_11n_bcap << 8) |
16257                     (rccal_tx40_11n_scap << 3) | tx_lpf_bw_ofdm_40mhz;
16258
16259                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16260                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16261                                                  0x152 + coreNum * 0x10, 16,
16262                                                  &rx2tx_lpf_rc_lut_tx20_11b);
16263                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16264                                                  0x153 + coreNum * 0x10, 16,
16265                                                  &rx2tx_lpf_rc_lut_tx20_11n);
16266                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16267                                                  0x154 + coreNum * 0x10, 16,
16268                                                  &rx2tx_lpf_rc_lut_tx20_11n);
16269                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16270                                                  0x155 + coreNum * 0x10, 16,
16271                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16272                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16273                                                  0x156 + coreNum * 0x10, 16,
16274                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16275                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16276                                                  0x157 + coreNum * 0x10, 16,
16277                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16278                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16279                                                  0x158 + coreNum * 0x10, 16,
16280                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16281                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1,
16282                                                  0x159 + coreNum * 0x10, 16,
16283                                                  &rx2tx_lpf_rc_lut_tx40_11n);
16284                 }
16285
16286                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 1, 0x3, 0,
16287                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
16288         }
16289
16290         write_phy_reg(pi, 0x32f, 0x3);
16291
16292         if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
16293                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 0,
16294                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
16295
16296         if ((pi->pubpi.radiorev == 3) || (pi->pubpi.radiorev == 4) ||
16297             (pi->pubpi.radiorev == 6)) {
16298                 if ((pi->sh->sromrev >= 8)
16299                     && (pi->sh->boardflags2 & BFL2_IPALVLSHIFT_3P3))
16300                         ipalvlshift_3p3_war_en = 1;
16301
16302                 if (ipalvlshift_3p3_war_en) {
16303                         write_radio_reg(pi, RADIO_2057_GPAIO_CONFIG, 0x5);
16304                         write_radio_reg(pi, RADIO_2057_GPAIO_SEL1, 0x30);
16305                         write_radio_reg(pi, RADIO_2057_GPAIO_SEL0, 0x0);
16306                         or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE0, 0x1);
16307                         or_radio_reg(pi, RADIO_2057_RXTXBIAS_CONFIG_CORE1, 0x1);
16308
16309                         ipa2g_mainbias = 0x1f;
16310
16311                         ipa2g_casconv = 0x6f;
16312
16313                         ipa2g_biasfilt = 0xaa;
16314                 } else {
16315
16316                         ipa2g_mainbias = 0x2b;
16317
16318                         ipa2g_casconv = 0x7f;
16319
16320                         ipa2g_biasfilt = 0xee;
16321                 }
16322
16323                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16324                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16325                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16326                                                  coreNum, IPA2G_IMAIN,
16327                                                  ipa2g_mainbias);
16328                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16329                                                  coreNum, IPA2G_CASCONV,
16330                                                  ipa2g_casconv);
16331                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16332                                                  coreNum,
16333                                                  IPA2G_BIAS_FILTER,
16334                                                  ipa2g_biasfilt);
16335                         }
16336                 }
16337         }
16338
16339         if (PHY_IPA(pi)) {
16340                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
16341                         if ((pi->pubpi.radiorev == 3)
16342                             || (pi->pubpi.radiorev == 4)
16343                             || (pi->pubpi.radiorev == 6))
16344                                 txgm_idac_bleed = 0x7f;
16345
16346                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16347                                 if (txgm_idac_bleed != 0)
16348                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16349                                                          CORE, coreNum,
16350                                                          TXGM_IDAC_BLEED,
16351                                                          txgm_idac_bleed);
16352                         }
16353
16354                         if (pi->pubpi.radiorev == 5) {
16355                                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16356                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16357                                                          CORE, coreNum,
16358                                                          IPA2G_CASCONV,
16359                                                          0x13);
16360                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16361                                                          CORE, coreNum,
16362                                                          IPA2G_IMAIN,
16363                                                          0x1f);
16364                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16365                                                          CORE, coreNum,
16366                                                          IPA2G_BIAS_FILTER,
16367                                                          0xee);
16368                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16369                                                          CORE, coreNum,
16370                                                          PAD2G_IDACS,
16371                                                          0x8a);
16372                                         WRITE_RADIO_REG4(pi, RADIO_2057,
16373                                                          CORE, coreNum,
16374                                                          PAD_BIAS_FILTER_BWS,
16375                                                          0x3e);
16376                                 }
16377                         } else if ((pi->pubpi.radiorev == 7) ||
16378                                    (pi->pubpi.radiorev == 8)) {
16379
16380                                 if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16381                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16382                                                          0, IPA2G_IMAIN, 0x14);
16383                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16384                                                          1, IPA2G_IMAIN, 0x12);
16385                                 } else {
16386                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16387                                                          0, IPA2G_IMAIN, 0x16);
16388                                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16389                                                          1, IPA2G_IMAIN, 0x16);
16390                                 }
16391                         }
16392
16393                 } else {
16394                         freq =
16395                             CHAN5G_FREQ(CHSPEC_CHANNEL
16396                                         (pi->radio_chanspec));
16397                         if (((freq >= 5180) && (freq <= 5230))
16398                             || ((freq >= 5745) && (freq <= 5805))) {
16399                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16400                                                  0, IPA5G_BIAS_FILTER, 0xff);
16401                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE,
16402                                                  1, IPA5G_BIAS_FILTER, 0xff);
16403                         }
16404                 }
16405         } else {
16406
16407                 if (pi->pubpi.radiorev != 5) {
16408                         for (coreNum = 0; coreNum <= 1; coreNum++) {
16409                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16410                                                  TXMIX2G_TUNE_BOOST_PU, 0x61);
16411                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16412                                                  TXGM_IDAC_BLEED, 0x70);
16413                         }
16414                 }
16415         }
16416
16417         if (pi->pubpi.radiorev == 4) {
16418                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16419                                          &afectrl_adc_ctrl1_rev7);
16420                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16421                                          &afectrl_adc_ctrl1_rev7);
16422
16423                 for (coreNum = 0; coreNum <= 1; coreNum++) {
16424                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16425                                          AFE_VCM_CAL_MASTER, 0x0);
16426                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16427                                          AFE_SET_VCM_I, 0x3f);
16428                         WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
16429                                          AFE_SET_VCM_Q, 0x3f);
16430                 }
16431         } else {
16432                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
16433                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
16434                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
16435                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
16436
16437                 mod_phy_reg(pi, 0xa6, (0x1 << 0), 0);
16438                 mod_phy_reg(pi, 0x8f, (0x1 << 0), (0x1 << 0));
16439                 mod_phy_reg(pi, 0xa7, (0x1 << 0), 0);
16440                 mod_phy_reg(pi, 0xa5, (0x1 << 0), (0x1 << 0));
16441
16442                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x05, 16,
16443                                          &afectrl_adc_ctrl2_rev7);
16444                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x15, 16,
16445                                          &afectrl_adc_ctrl2_rev7);
16446
16447                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
16448                 mod_phy_reg(pi, 0x8f, (0x1 << 2), 0);
16449                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
16450                 mod_phy_reg(pi, 0xa5, (0x1 << 2), 0);
16451         }
16452
16453         write_phy_reg(pi, 0x6a, 0x2);
16454
16455         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 256, 32,
16456                                  &min_nvar_offset_6mbps);
16457
16458         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x138, 16,
16459                                  &rfseq_pktgn_lpf_hpc_rev7);
16460
16461         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x141, 16,
16462                                  &rfseq_pktgn_lpf_h_hpc_rev7);
16463
16464         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 3, 0x133, 16,
16465                                  &rfseq_htpktgn_lpf_hpc_rev7);
16466
16467         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x146, 16,
16468                                  &rfseq_cckpktgn_lpf_hpc_rev7);
16469
16470         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x123, 16,
16471                                  &rfseq_tx2rx_lpf_h_hpc_rev7);
16472
16473         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 1, 0x12A, 16,
16474                                  &rfseq_rx2tx_lpf_h_hpc_rev7);
16475
16476         if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16477                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16478                                          32, &min_nvar_val);
16479                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16480                                          127, 32, &min_nvar_val);
16481         } else {
16482                 min_nvar_val = noise_var_tbl_rev7[3];
16483                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16484                                          32, &min_nvar_val);
16485
16486                 min_nvar_val = noise_var_tbl_rev7[127];
16487                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16488                                          127, 32, &min_nvar_val);
16489         }
16490
16491         wlc_phy_workarounds_nphy_gainctrl(pi);
16492
16493         pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16494                     pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16495
16496         if (pdetrange == 0) {
16497                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16498                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16499                         aux_adc_vmid_rev7_core0[3] = 0x70;
16500                         aux_adc_vmid_rev7_core1[3] = 0x70;
16501                         aux_adc_gain_rev7[3] = 2;
16502                 } else {
16503                         aux_adc_vmid_rev7_core0[3] = 0x80;
16504                         aux_adc_vmid_rev7_core1[3] = 0x80;
16505                         aux_adc_gain_rev7[3] = 3;
16506                 }
16507         } else if (pdetrange == 1) {
16508                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16509                         aux_adc_vmid_rev7_core0[3] = 0x7c;
16510                         aux_adc_vmid_rev7_core1[3] = 0x7c;
16511                         aux_adc_gain_rev7[3] = 2;
16512                 } else {
16513                         aux_adc_vmid_rev7_core0[3] = 0x8c;
16514                         aux_adc_vmid_rev7_core1[3] = 0x8c;
16515                         aux_adc_gain_rev7[3] = 1;
16516                 }
16517         } else if (pdetrange == 2) {
16518                 if (pi->pubpi.radioid == BCM2057_ID) {
16519                         if ((pi->pubpi.radiorev == 5)
16520                             || (pi->pubpi.radiorev == 7)
16521                             || (pi->pubpi.radiorev == 8)) {
16522                                 if (chan_freq_range ==
16523                                     WL_CHAN_FREQ_RANGE_2G) {
16524                                         aux_adc_vmid_rev7_core0[3] = 0x8c;
16525                                         aux_adc_vmid_rev7_core1[3] = 0x8c;
16526                                         aux_adc_gain_rev7[3] = 0;
16527                                 } else {
16528                                         aux_adc_vmid_rev7_core0[3] = 0x96;
16529                                         aux_adc_vmid_rev7_core1[3] = 0x96;
16530                                         aux_adc_gain_rev7[3] = 0;
16531                                 }
16532                         }
16533                 }
16534
16535         } else if (pdetrange == 3) {
16536                 if (chan_freq_range == WL_CHAN_FREQ_RANGE_2G) {
16537                         aux_adc_vmid_rev7_core0[3] = 0x89;
16538                         aux_adc_vmid_rev7_core1[3] = 0x89;
16539                         aux_adc_gain_rev7[3] = 0;
16540                 }
16541
16542         } else if (pdetrange == 5) {
16543
16544                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16545                         aux_adc_vmid_rev7_core0[3] = 0x80;
16546                         aux_adc_vmid_rev7_core1[3] = 0x80;
16547                         aux_adc_gain_rev7[3] = 3;
16548                 } else {
16549                         aux_adc_vmid_rev7_core0[3] = 0x70;
16550                         aux_adc_vmid_rev7_core1[3] = 0x70;
16551                         aux_adc_gain_rev7[3] = 2;
16552                 }
16553         }
16554
16555         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x08, 16,
16556                                  &aux_adc_vmid_rev7_core0);
16557         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x18, 16,
16558                                  &aux_adc_vmid_rev7_core1);
16559         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x0c, 16,
16560                                  &aux_adc_gain_rev7);
16561         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4, 0x1c, 16,
16562                                  &aux_adc_gain_rev7);
16563 }
16564
16565 static void wlc_phy_workarounds_nphy_rev3(struct brcms_phy *pi)
16566 {
16567         static const u8 rfseq_tx2rx_events_rev3[] = {
16568                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16569                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16570                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16571                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16572                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16573                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16574                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16575                 NPHY_REV3_RFSEQ_CMD_END
16576         };
16577         static const u8 rfseq_tx2rx_dlys_rev3[] = { 8, 4, 2, 2, 4, 4, 6, 1 };
16578         u8 rfseq_rx2tx_events_rev3[] = {
16579                 NPHY_REV3_RFSEQ_CMD_NOP,
16580                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16581                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16582                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16583                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16584                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16585                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16586                 NPHY_REV3_RFSEQ_CMD_EXT_PA,
16587                 NPHY_REV3_RFSEQ_CMD_END
16588         };
16589         u8 rfseq_rx2tx_dlys_rev3[] = { 8, 6, 6, 4, 4, 18, 42, 1, 1 };
16590         static const u8 rfseq_rx2tx_events_rev3_ipa[] = {
16591                 NPHY_REV3_RFSEQ_CMD_NOP,
16592                 NPHY_REV3_RFSEQ_CMD_RXG_FBW,
16593                 NPHY_REV3_RFSEQ_CMD_TR_SWITCH,
16594                 NPHY_REV3_RFSEQ_CMD_CLR_HIQ_DIS,
16595                 NPHY_REV3_RFSEQ_CMD_RXPD_TXPD,
16596                 NPHY_REV3_RFSEQ_CMD_TX_GAIN,
16597                 NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS,
16598                 NPHY_REV3_RFSEQ_CMD_INT_PA_PU,
16599                 NPHY_REV3_RFSEQ_CMD_END
16600         };
16601         static const u8 rfseq_rx2tx_dlys_rev3_ipa[] =
16602             { 8, 6, 6, 4, 4, 16, 43, 1, 1 };
16603         s16 alpha0, alpha1, alpha2;
16604         s16 beta0, beta1, beta2;
16605         u32 leg_data_weights, ht_data_weights, nss1_data_weights,
16606             stbc_data_weights;
16607         u8 chan_freq_range = 0;
16608         static const u16 dac_control = 0x0002;
16609         u16 aux_adc_vmid_rev4[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16610         u16 aux_adc_vmid_rev3[] = { 0xa2, 0xb4, 0xb4, 0x89 };
16611         u16 *aux_adc_vmid;
16612         u16 aux_adc_gain_rev4[] = { 0x02, 0x02, 0x02, 0x00 };
16613         u16 aux_adc_gain_rev3[] = { 0x02, 0x02, 0x02, 0x00 };
16614         u16 *aux_adc_gain;
16615         static const u16 sk_adc_vmid[] = { 0xb4, 0xb4, 0xb4, 0x24 };
16616         static const u16 sk_adc_gain[] = { 0x02, 0x02, 0x02, 0x02 };
16617         s32 min_nvar_val = 0x18d;
16618         u8 pdetrange;
16619         u8 triso;
16620
16621         write_phy_reg(pi, 0x23f, 0x1f8);
16622         write_phy_reg(pi, 0x240, 0x1f8);
16623
16624         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16625                                 1, 0, 32, &leg_data_weights);
16626         leg_data_weights = leg_data_weights & 0xffffff;
16627         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16628                                  1, 0, 32, &leg_data_weights);
16629
16630         alpha0 = 293;
16631         alpha1 = 435;
16632         alpha2 = 261;
16633         beta0 = 366;
16634         beta1 = 205;
16635         beta2 = 32;
16636         write_phy_reg(pi, 0x145, alpha0);
16637         write_phy_reg(pi, 0x146, alpha1);
16638         write_phy_reg(pi, 0x147, alpha2);
16639         write_phy_reg(pi, 0x148, beta0);
16640         write_phy_reg(pi, 0x149, beta1);
16641         write_phy_reg(pi, 0x14a, beta2);
16642
16643         write_phy_reg(pi, 0x38, 0xC);
16644         write_phy_reg(pi, 0x2ae, 0xC);
16645
16646         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX,
16647                                rfseq_tx2rx_events_rev3,
16648                                rfseq_tx2rx_dlys_rev3,
16649                                ARRAY_SIZE(rfseq_tx2rx_events_rev3));
16650
16651         if (PHY_IPA(pi))
16652                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16653                                        rfseq_rx2tx_events_rev3_ipa,
16654                                        rfseq_rx2tx_dlys_rev3_ipa,
16655                                        ARRAY_SIZE (rfseq_rx2tx_events_rev3_ipa));
16656
16657         if ((pi->sh->hw_phyrxchain != 0x3) &&
16658             (pi->sh->hw_phyrxchain != pi->sh->hw_phytxchain)) {
16659
16660                 if (PHY_IPA(pi)) {
16661                         rfseq_rx2tx_dlys_rev3[5] = 59;
16662                         rfseq_rx2tx_dlys_rev3[6] = 1;
16663                         rfseq_rx2tx_events_rev3[7] = NPHY_REV3_RFSEQ_CMD_END;
16664                 }
16665
16666                 wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX,
16667                                        rfseq_rx2tx_events_rev3,
16668                                        rfseq_rx2tx_dlys_rev3,
16669                                        ARRAY_SIZE (rfseq_rx2tx_events_rev3));
16670         }
16671
16672         if (CHSPEC_IS2G(pi->radio_chanspec))
16673                 write_phy_reg(pi, 0x6a, 0x2);
16674         else
16675                 write_phy_reg(pi, 0x6a, 0x9c40);
16676
16677         mod_phy_reg(pi, 0x294, (0xf << 8), (7 << 8));
16678
16679         if (CHSPEC_IS40(pi->radio_chanspec) == 0) {
16680                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16681                                          32, &min_nvar_val);
16682                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16683                                          127, 32, &min_nvar_val);
16684         } else {
16685                 min_nvar_val = noise_var_tbl_rev3[3];
16686                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1, 3,
16687                                          32, &min_nvar_val);
16688
16689                 min_nvar_val = noise_var_tbl_rev3[127];
16690                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
16691                                          127, 32, &min_nvar_val);
16692         }
16693
16694         wlc_phy_workarounds_nphy_gainctrl(pi);
16695
16696         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x00, 16,
16697                                  &dac_control);
16698         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x10, 16,
16699                                  &dac_control);
16700
16701         pdetrange = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16702                         pi->srom_fem5g.pdetrange : pi->srom_fem2g.pdetrange;
16703
16704         if (pdetrange == 0) {
16705                 if (NREV_GE(pi->pubpi.phy_rev, 4)) {
16706                         aux_adc_vmid = aux_adc_vmid_rev4;
16707                         aux_adc_gain = aux_adc_gain_rev4;
16708                 } else {
16709                         aux_adc_vmid = aux_adc_vmid_rev3;
16710                         aux_adc_gain = aux_adc_gain_rev3;
16711                 }
16712                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16713                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16714                         switch (chan_freq_range) {
16715                         case WL_CHAN_FREQ_RANGE_5GL:
16716                                 aux_adc_vmid[3] = 0x89;
16717                                 aux_adc_gain[3] = 0;
16718                                 break;
16719                         case WL_CHAN_FREQ_RANGE_5GM:
16720                                 aux_adc_vmid[3] = 0x89;
16721                                 aux_adc_gain[3] = 0;
16722                                 break;
16723                         case WL_CHAN_FREQ_RANGE_5GH:
16724                                 aux_adc_vmid[3] = 0x89;
16725                                 aux_adc_gain[3] = 0;
16726                                 break;
16727                         default:
16728                                 break;
16729                         }
16730                 }
16731                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16732                                          0x08, 16, aux_adc_vmid);
16733                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16734                                          0x18, 16, aux_adc_vmid);
16735                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16736                                          0x0c, 16, aux_adc_gain);
16737                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16738                                          0x1c, 16, aux_adc_gain);
16739         } else if (pdetrange == 1) {
16740                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16741                                          0x08, 16, sk_adc_vmid);
16742                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16743                                          0x18, 16, sk_adc_vmid);
16744                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16745                                          0x0c, 16, sk_adc_gain);
16746                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16747                                          0x1c, 16, sk_adc_gain);
16748         } else if (pdetrange == 2) {
16749
16750                 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x74 };
16751                 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x04 };
16752
16753                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16754                         chan_freq_range =
16755                             wlc_phy_get_chan_freq_range_nphy(pi, 0);
16756                         if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16757                                 bcm_adc_vmid[3] = 0x8e;
16758                                 bcm_adc_gain[3] = 0x03;
16759                         } else {
16760                                 bcm_adc_vmid[3] = 0x94;
16761                                 bcm_adc_gain[3] = 0x03;
16762                         }
16763                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
16764                         bcm_adc_vmid[3] = 0x84;
16765                         bcm_adc_gain[3] = 0x02;
16766                 }
16767
16768                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16769                                          0x08, 16, bcm_adc_vmid);
16770                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16771                                          0x18, 16, bcm_adc_vmid);
16772                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16773                                          0x0c, 16, bcm_adc_gain);
16774                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16775                                          0x1c, 16, bcm_adc_gain);
16776         } else if (pdetrange == 3) {
16777                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16778                 if ((NREV_GE(pi->pubpi.phy_rev, 4)) &&
16779                     (chan_freq_range == WL_CHAN_FREQ_RANGE_2G)) {
16780                         u16 auxadc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x270 };
16781                         u16 auxadc_gain[] = { 0x02, 0x02, 0x02, 0x00 };
16782
16783                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16784                                                  0x08, 16, auxadc_vmid);
16785                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16786                                                  0x18, 16, auxadc_vmid);
16787                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16788                                                  0x0c, 16, auxadc_gain);
16789                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16790                                                  0x1c, 16, auxadc_gain);
16791                 }
16792         } else if ((pdetrange == 4) || (pdetrange == 5)) {
16793                 u16 bcm_adc_vmid[] = { 0xa2, 0xb4, 0xb4, 0x0 };
16794                 u16 bcm_adc_gain[] = { 0x02, 0x02, 0x02, 0x0 };
16795                 u16 Vmid[2], Av[2];
16796
16797                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
16798                 if (chan_freq_range != WL_CHAN_FREQ_RANGE_2G) {
16799                         Vmid[0] = (pdetrange == 4) ? 0x8e : 0x89;
16800                         Vmid[1] = (pdetrange == 4) ? 0x96 : 0x89;
16801                         Av[0] = (pdetrange == 4) ? 2 : 0;
16802                         Av[1] = (pdetrange == 4) ? 2 : 0;
16803                 } else {
16804                         Vmid[0] = (pdetrange == 4) ? 0x89 : 0x74;
16805                         Vmid[1] = (pdetrange == 4) ? 0x8b : 0x70;
16806                         Av[0] = (pdetrange == 4) ? 2 : 0;
16807                         Av[1] = (pdetrange == 4) ? 2 : 0;
16808                 }
16809
16810                 bcm_adc_vmid[3] = Vmid[0];
16811                 bcm_adc_gain[3] = Av[0];
16812                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16813                                          0x08, 16, bcm_adc_vmid);
16814                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16815                                          0x0c, 16, bcm_adc_gain);
16816
16817                 bcm_adc_vmid[3] = Vmid[1];
16818                 bcm_adc_gain[3] = Av[1];
16819                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16820                                          0x18, 16, bcm_adc_vmid);
16821                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 4,
16822                                          0x1c, 16, bcm_adc_gain);
16823         }
16824
16825         write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX0), 0x0);
16826         write_radio_reg(pi, (RADIO_2056_RX_MIXA_MAST_BIAS | RADIO_2056_RX1), 0x0);
16827
16828         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX0), 0x6);
16829         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_MAIN | RADIO_2056_RX1), 0x6);
16830
16831         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX0), 0x7);
16832         write_radio_reg(pi, (RADIO_2056_RX_MIXA_BIAS_AUX | RADIO_2056_RX1), 0x7);
16833
16834         write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX0), 0x88);
16835         write_radio_reg(pi, (RADIO_2056_RX_MIXA_LOB_BIAS | RADIO_2056_RX1), 0x88);
16836
16837         write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16838         write_radio_reg(pi, (RADIO_2056_RX_MIXA_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16839
16840         write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX0), 0x0);
16841         write_radio_reg(pi, (RADIO_2056_RX_MIXG_CMFB_IDAC | RADIO_2056_RX1), 0x0);
16842
16843         triso = (CHSPEC_IS5G(pi->radio_chanspec)) ?
16844                  pi->srom_fem5g.triso : pi->srom_fem2g.triso;
16845         if (triso == 7) {
16846                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_0);
16847                 wlc_phy_war_force_trsw_to_R_cliplo_nphy(pi, PHY_CORE_1);
16848         }
16849
16850         wlc_phy_war_txchain_upd_nphy(pi, pi->sh->hw_phytxchain);
16851
16852         if (((pi->sh->boardflags2 & BFL2_APLL_WAR) &&
16853              (CHSPEC_IS5G(pi->radio_chanspec))) ||
16854             (((pi->sh->boardflags2 & BFL2_GPLL_WAR) ||
16855               (pi->sh->boardflags2 & BFL2_GPLL_WAR2)) &&
16856              (CHSPEC_IS2G(pi->radio_chanspec)))) {
16857                 nss1_data_weights = 0x00088888;
16858                 ht_data_weights = 0x00088888;
16859                 stbc_data_weights = 0x00088888;
16860         } else {
16861                 nss1_data_weights = 0x88888888;
16862                 ht_data_weights = 0x88888888;
16863                 stbc_data_weights = 0x88888888;
16864         }
16865         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16866                                  1, 1, 32, &nss1_data_weights);
16867         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16868                                  1, 2, 32, &ht_data_weights);
16869         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CMPMETRICDATAWEIGHTTBL,
16870                                  1, 3, 32, &stbc_data_weights);
16871
16872         if (NREV_IS(pi->pubpi.phy_rev, 4)) {
16873                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
16874                         write_radio_reg(pi,
16875                                         RADIO_2056_TX_GMBB_IDAC |
16876                                         RADIO_2056_TX0, 0x70);
16877                         write_radio_reg(pi,
16878                                         RADIO_2056_TX_GMBB_IDAC |
16879                                         RADIO_2056_TX1, 0x70);
16880                 }
16881         }
16882
16883         if (!pi->edcrs_threshold_lock) {
16884                 write_phy_reg(pi, 0x224, 0x3eb);
16885                 write_phy_reg(pi, 0x225, 0x3eb);
16886                 write_phy_reg(pi, 0x226, 0x341);
16887                 write_phy_reg(pi, 0x227, 0x341);
16888                 write_phy_reg(pi, 0x228, 0x42b);
16889                 write_phy_reg(pi, 0x229, 0x42b);
16890                 write_phy_reg(pi, 0x22a, 0x381);
16891                 write_phy_reg(pi, 0x22b, 0x381);
16892                 write_phy_reg(pi, 0x22c, 0x42b);
16893                 write_phy_reg(pi, 0x22d, 0x42b);
16894                 write_phy_reg(pi, 0x22e, 0x381);
16895                 write_phy_reg(pi, 0x22f, 0x381);
16896         }
16897
16898         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
16899
16900                 if (pi->sh->boardflags2 & BFL2_SINGLEANT_CCK)
16901                         wlapi_bmac_mhf(pi->sh->physhim, MHF4,
16902                                        MHF4_BPHY_TXCORE0,
16903                                        MHF4_BPHY_TXCORE0, BRCM_BAND_ALL);
16904         }
16905 }
16906
16907 static void wlc_phy_workarounds_nphy_rev1(struct brcms_phy *pi)
16908 {
16909         static const u8 rfseq_rx2tx_events[] = {
16910                 NPHY_RFSEQ_CMD_NOP,
16911                 NPHY_RFSEQ_CMD_RXG_FBW,
16912                 NPHY_RFSEQ_CMD_TR_SWITCH,
16913                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS,
16914                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16915                 NPHY_RFSEQ_CMD_TX_GAIN,
16916                 NPHY_RFSEQ_CMD_EXT_PA
16917         };
16918         u8 rfseq_rx2tx_dlys[] = { 8, 6, 6, 2, 4, 60, 1 };
16919         static const u8 rfseq_tx2rx_events[] = {
16920                 NPHY_RFSEQ_CMD_NOP,
16921                 NPHY_RFSEQ_CMD_EXT_PA,
16922                 NPHY_RFSEQ_CMD_TX_GAIN,
16923                 NPHY_RFSEQ_CMD_RXPD_TXPD,
16924                 NPHY_RFSEQ_CMD_TR_SWITCH,
16925                 NPHY_RFSEQ_CMD_RXG_FBW,
16926                 NPHY_RFSEQ_CMD_CLR_HIQ_DIS
16927         };
16928         static const u8 rfseq_tx2rx_dlys[] = { 8, 6, 2, 4, 4, 6, 1 };
16929         s16 alpha0, alpha1, alpha2;
16930         s16 beta0, beta1, beta2;
16931         u16 regval;
16932
16933         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD ||
16934             (pi->sh->boardtype == 0x8b)) {
16935                 uint i;
16936                 u8 war_dlys[] = { 1, 6, 6, 2, 4, 20, 1 };
16937                 for (i = 0; i < ARRAY_SIZE(rfseq_rx2tx_dlys); i++)
16938                         rfseq_rx2tx_dlys[i] = war_dlys[i];
16939         }
16940
16941         if (CHSPEC_IS5G(pi->radio_chanspec) && pi->phy_5g_pwrgain) {
16942                 and_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0xf7);
16943                 and_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0xf7);
16944         } else {
16945                 or_radio_reg(pi, RADIO_2055_CORE1_TX_RF_SPARE, 0x8);
16946                 or_radio_reg(pi, RADIO_2055_CORE2_TX_RF_SPARE, 0x8);
16947         }
16948
16949         regval = 0x000a;
16950         wlc_phy_table_write_nphy(pi, 8, 1, 0, 16, &regval);
16951         wlc_phy_table_write_nphy(pi, 8, 1, 0x10, 16, &regval);
16952
16953         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
16954                 regval = 0xcdaa;
16955                 wlc_phy_table_write_nphy(pi, 8, 1, 0x02, 16, &regval);
16956                 wlc_phy_table_write_nphy(pi, 8, 1, 0x12, 16, &regval);
16957         }
16958
16959         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16960                 regval = 0x0000;
16961                 wlc_phy_table_write_nphy(pi, 8, 1, 0x08, 16, &regval);
16962                 wlc_phy_table_write_nphy(pi, 8, 1, 0x18, 16, &regval);
16963
16964                 regval = 0x7aab;
16965                 wlc_phy_table_write_nphy(pi, 8, 1, 0x07, 16, &regval);
16966                 wlc_phy_table_write_nphy(pi, 8, 1, 0x17, 16, &regval);
16967
16968                 regval = 0x0800;
16969                 wlc_phy_table_write_nphy(pi, 8, 1, 0x06, 16, &regval);
16970                 wlc_phy_table_write_nphy(pi, 8, 1, 0x16, 16, &regval);
16971         }
16972
16973         write_phy_reg(pi, 0xf8, 0x02d8);
16974         write_phy_reg(pi, 0xf9, 0x0301);
16975         write_phy_reg(pi, 0xfa, 0x02d8);
16976         write_phy_reg(pi, 0xfb, 0x0301);
16977
16978         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX, rfseq_rx2tx_events,
16979                                rfseq_rx2tx_dlys,
16980                                ARRAY_SIZE(rfseq_rx2tx_events));
16981
16982         wlc_phy_set_rfseq_nphy(pi, NPHY_RFSEQ_TX2RX, rfseq_tx2rx_events,
16983                                rfseq_tx2rx_dlys,
16984                                ARRAY_SIZE(rfseq_tx2rx_events));
16985
16986         wlc_phy_workarounds_nphy_gainctrl(pi);
16987
16988         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
16989
16990                 if (read_phy_reg(pi, 0xa0) & NPHY_MLenable)
16991                         wlapi_bmac_mhf(pi->sh->physhim, MHF3,
16992                                        MHF3_NPHY_MLADV_WAR,
16993                                        MHF3_NPHY_MLADV_WAR, BRCM_BAND_ALL);
16994
16995         } else if (NREV_IS(pi->pubpi.phy_rev, 2)) {
16996                 write_phy_reg(pi, 0x1e3, 0x0);
16997                 write_phy_reg(pi, 0x1e4, 0x0);
16998         }
16999
17000         if (NREV_LT(pi->pubpi.phy_rev, 2))
17001                 mod_phy_reg(pi, 0x90, (0x1 << 7), 0);
17002
17003         alpha0 = 293;
17004         alpha1 = 435;
17005         alpha2 = 261;
17006         beta0 = 366;
17007         beta1 = 205;
17008         beta2 = 32;
17009         write_phy_reg(pi, 0x145, alpha0);
17010         write_phy_reg(pi, 0x146, alpha1);
17011         write_phy_reg(pi, 0x147, alpha2);
17012         write_phy_reg(pi, 0x148, beta0);
17013         write_phy_reg(pi, 0x149, beta1);
17014         write_phy_reg(pi, 0x14a, beta2);
17015
17016         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17017                 mod_phy_reg(pi, 0x142, (0xf << 12), 0);
17018
17019                 write_phy_reg(pi, 0x192, 0xb5);
17020                 write_phy_reg(pi, 0x193, 0xa4);
17021                 write_phy_reg(pi, 0x194, 0x0);
17022         }
17023
17024         if (NREV_IS(pi->pubpi.phy_rev, 2))
17025                 mod_phy_reg(pi, 0x221,
17026                             NPHY_FORCESIG_DECODEGATEDCLKS,
17027                             NPHY_FORCESIG_DECODEGATEDCLKS);
17028 }
17029
17030 static void wlc_phy_workarounds_nphy(struct brcms_phy *pi)
17031 {
17032         if (CHSPEC_IS5G(pi->radio_chanspec))
17033                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 0);
17034         else
17035                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_cck_en, 1);
17036
17037         if (pi->phyhang_avoid)
17038                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17039
17040         or_phy_reg(pi, 0xb1, NPHY_IQFlip_ADC1 | NPHY_IQFlip_ADC2);
17041
17042         if (NREV_GE(pi->pubpi.phy_rev, 7))
17043                 wlc_phy_workarounds_nphy_rev7(pi);
17044         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17045                 wlc_phy_workarounds_nphy_rev3(pi);
17046         else
17047                 wlc_phy_workarounds_nphy_rev1(pi);
17048
17049         if (pi->phyhang_avoid)
17050                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17051 }
17052
17053 static void wlc_phy_extpa_set_tx_digi_filts_nphy(struct brcms_phy *pi)
17054 {
17055         int j, type = 2;
17056         u16 addr_offset = 0x2c5;
17057
17058         for (j = 0; j < NPHY_NUM_DIG_FILT_COEFFS; j++)
17059                 write_phy_reg(pi, addr_offset + j,
17060                               NPHY_IPA_REV4_txdigi_filtcoeffs[type][j]);
17061 }
17062
17063 static void wlc_phy_clip_det_nphy(struct brcms_phy *pi, u8 write, u16 *vals)
17064 {
17065
17066         if (write == 0) {
17067                 vals[0] = read_phy_reg(pi, 0x2c);
17068                 vals[1] = read_phy_reg(pi, 0x42);
17069         } else {
17070                 write_phy_reg(pi, 0x2c, vals[0]);
17071                 write_phy_reg(pi, 0x42, vals[1]);
17072         }
17073 }
17074
17075 static void wlc_phy_ipa_internal_tssi_setup_nphy(struct brcms_phy *pi)
17076 {
17077         u8 core;
17078
17079         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17080                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17081                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17082                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17083                                                  TX_SSI_MASTER, 0x5);
17084                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17085                                                  TX_SSI_MUX, 0xe);
17086
17087                                 if (pi->pubpi.radiorev != 5)
17088                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17089                                                          core, TSSIA, 0);
17090
17091                                 if (!NREV_IS(pi->pubpi.phy_rev, 7))
17092                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17093                                                          core, TSSIG, 0x1);
17094                                 else
17095                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
17096                                                          core, TSSIG, 0x31);
17097                         } else {
17098                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17099                                                  TX_SSI_MASTER, 0x9);
17100                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17101                                                  TX_SSI_MUX, 0xc);
17102                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
17103                                                  TSSIG, 0);
17104
17105                                 if (pi->pubpi.radiorev != 5) {
17106                                         if (!NREV_IS(pi->pubpi.phy_rev, 7))
17107                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17108                                                                  TX, core,
17109                                                                  TSSIA, 0x1);
17110                                         else
17111                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17112                                                                  TX, core,
17113                                                                  TSSIA, 0x31);
17114                                 }
17115                         }
17116                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
17117                                          0);
17118                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
17119                                          0);
17120                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
17121                                          0x3);
17122                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
17123                                          0x0);
17124                 }
17125         } else {
17126                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR31,
17127                                 (CHSPEC_IS2G(pi->radio_chanspec)) ? 0x128 :
17128                                 0x80);
17129                 WRITE_RADIO_SYN(pi, RADIO_2056, RESERVED_ADDR30, 0x0);
17130                 WRITE_RADIO_SYN(pi, RADIO_2056, GPIO_MASTER1, 0x29);
17131
17132                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
17133                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_VCM_HG,
17134                                          0x0);
17135                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, IQCAL_IDAC,
17136                                          0x0);
17137                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_VCM,
17138                                          0x3);
17139                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TX_AMP_DET,
17140                                          0x0);
17141                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC1,
17142                                          0x8);
17143                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC2,
17144                                          0x0);
17145                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, TSSI_MISC3,
17146                                          0x0);
17147
17148                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17149                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17150                                                  TX_SSI_MASTER, 0x5);
17151
17152                                 if (pi->pubpi.radiorev != 5)
17153                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17154                                                          core, TSSIA, 0x0);
17155                                 if (NREV_GE(pi->pubpi.phy_rev, 5))
17156                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17157                                                          core, TSSIG, 0x31);
17158                                 else
17159                                         WRITE_RADIO_REG2(pi, RADIO_2056, TX,
17160                                                          core, TSSIG, 0x11);
17161                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17162                                                  TX_SSI_MUX, 0xe);
17163                         } else {
17164                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17165                                                  TX_SSI_MASTER, 0x9);
17166                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17167                                                  TSSIA, 0x31);
17168                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17169                                                  TSSIG, 0x0);
17170                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
17171                                                  TX_SSI_MUX, 0xc);
17172                         }
17173                 }
17174         }
17175 }
17176
17177 static void
17178 wlc_phy_rfctrl_override_nphy(struct brcms_phy *pi, u16 field, u16 value,
17179                              u8 core_mask, u8 off)
17180 {
17181         u8 core_num;
17182         u16 addr = 0, mask = 0, en_addr = 0, val_addr = 0, en_mask =
17183                 0, val_mask = 0;
17184         u8 shift = 0, val_shift = 0;
17185
17186         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
17187
17188                 en_mask = field;
17189                 for (core_num = 0; core_num < 2; core_num++) {
17190
17191                         switch (field) {
17192                         case (0x1 << 1):
17193                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17194                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17195                                 val_mask = (0x1 << 0);
17196                                 val_shift = 0;
17197                                 break;
17198                         case (0x1 << 2):
17199                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17200                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17201                                 val_mask = (0x1 << 1);
17202                                 val_shift = 1;
17203                                 break;
17204                         case (0x1 << 3):
17205                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17206                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17207                                 val_mask = (0x1 << 2);
17208                                 val_shift = 2;
17209                                 break;
17210                         case (0x1 << 4):
17211                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17212                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17213                                 val_mask = (0x1 << 4);
17214                                 val_shift = 4;
17215                                 break;
17216                         case (0x1 << 5):
17217                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17218                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17219                                 val_mask = (0x1 << 5);
17220                                 val_shift = 5;
17221                                 break;
17222                         case (0x1 << 6):
17223                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17224                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17225                                 val_mask = (0x1 << 6);
17226                                 val_shift = 6;
17227                                 break;
17228                         case (0x1 << 7):
17229                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17230                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17231                                 val_mask = (0x1 << 7);
17232                                 val_shift = 7;
17233                                 break;
17234                         case (0x1 << 8):
17235                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17236                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17237                                 val_mask = (0x7 << 8);
17238                                 val_shift = 8;
17239                                 break;
17240                         case (0x1 << 11):
17241                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17242                                 val_addr = (core_num == 0) ? 0x7a : 0x7d;
17243                                 val_mask = (0x7 << 13);
17244                                 val_shift = 13;
17245                                 break;
17246
17247                         case (0x1 << 9):
17248                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17249                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17250                                 val_mask = (0x7 << 0);
17251                                 val_shift = 0;
17252                                 break;
17253
17254                         case (0x1 << 10):
17255                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17256                                 val_addr = (core_num == 0) ? 0xf8 : 0xfa;
17257                                 val_mask = (0x7 << 4);
17258                                 val_shift = 4;
17259                                 break;
17260
17261                         case (0x1 << 12):
17262                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17263                                 val_addr = (core_num == 0) ? 0x7b : 0x7e;
17264                                 val_mask = (0xffff << 0);
17265                                 val_shift = 0;
17266                                 break;
17267                         case (0x1 << 13):
17268                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17269                                 val_addr = (core_num == 0) ? 0x7c : 0x7f;
17270                                 val_mask = (0xffff << 0);
17271                                 val_shift = 0;
17272                                 break;
17273                         case (0x1 << 14):
17274                                 en_addr = (core_num == 0) ? 0xe7 : 0xec;
17275                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17276                                 val_mask = (0x3 << 6);
17277                                 val_shift = 6;
17278                                 break;
17279                         case (0x1 << 0):
17280                                 en_addr = (core_num == 0) ? 0xe5 : 0xe6;
17281                                 val_addr = (core_num == 0) ? 0xf9 : 0xfb;
17282                                 val_mask = (0x1 << 15);
17283                                 val_shift = 15;
17284                                 break;
17285                         default:
17286                                 addr = 0xffff;
17287                                 break;
17288                         }
17289
17290                         if (off) {
17291                                 and_phy_reg(pi, en_addr, ~en_mask);
17292                                 and_phy_reg(pi, val_addr, ~val_mask);
17293                         } else {
17294
17295                                 if ((core_mask == 0)
17296                                     || (core_mask & (1 << core_num))) {
17297                                         or_phy_reg(pi, en_addr, en_mask);
17298
17299                                         if (addr != 0xffff)
17300                                                 mod_phy_reg(pi, val_addr,
17301                                                             val_mask,
17302                                                             (value <<
17303                                                              val_shift));
17304                                 }
17305                         }
17306                 }
17307         } else {
17308
17309                 if (off) {
17310                         and_phy_reg(pi, 0xec, ~field);
17311                         value = 0x0;
17312                 } else {
17313                         or_phy_reg(pi, 0xec, field);
17314                 }
17315
17316                 for (core_num = 0; core_num < 2; core_num++) {
17317
17318                         switch (field) {
17319                         case (0x1 << 1):
17320                         case (0x1 << 9):
17321                         case (0x1 << 12):
17322                         case (0x1 << 13):
17323                         case (0x1 << 14):
17324                                 addr = 0x78;
17325
17326                                 core_mask = 0x1;
17327                                 break;
17328                         case (0x1 << 2):
17329                         case (0x1 << 3):
17330                         case (0x1 << 4):
17331                         case (0x1 << 5):
17332                         case (0x1 << 6):
17333                         case (0x1 << 7):
17334                         case (0x1 << 8):
17335                                 addr = (core_num == 0) ? 0x7a : 0x7d;
17336                                 break;
17337                         case (0x1 << 10):
17338                                 addr = (core_num == 0) ? 0x7b : 0x7e;
17339                                 break;
17340                         case (0x1 << 11):
17341                                 addr = (core_num == 0) ? 0x7c : 0x7f;
17342                                 break;
17343                         default:
17344                                 addr = 0xffff;
17345                         }
17346
17347                         switch (field) {
17348                         case (0x1 << 1):
17349                                 mask = (0x7 << 3);
17350                                 shift = 3;
17351                                 break;
17352                         case (0x1 << 9):
17353                                 mask = (0x1 << 2);
17354                                 shift = 2;
17355                                 break;
17356                         case (0x1 << 12):
17357                                 mask = (0x1 << 8);
17358                                 shift = 8;
17359                                 break;
17360                         case (0x1 << 13):
17361                                 mask = (0x1 << 9);
17362                                 shift = 9;
17363                                 break;
17364                         case (0x1 << 14):
17365                                 mask = (0xf << 12);
17366                                 shift = 12;
17367                                 break;
17368                         case (0x1 << 2):
17369                                 mask = (0x1 << 0);
17370                                 shift = 0;
17371                                 break;
17372                         case (0x1 << 3):
17373                                 mask = (0x1 << 1);
17374                                 shift = 1;
17375                                 break;
17376                         case (0x1 << 4):
17377                                 mask = (0x1 << 2);
17378                                 shift = 2;
17379                                 break;
17380                         case (0x1 << 5):
17381                                 mask = (0x3 << 4);
17382                                 shift = 4;
17383                                 break;
17384                         case (0x1 << 6):
17385                                 mask = (0x3 << 6);
17386                                 shift = 6;
17387                                 break;
17388                         case (0x1 << 7):
17389                                 mask = (0x1 << 8);
17390                                 shift = 8;
17391                                 break;
17392                         case (0x1 << 8):
17393                                 mask = (0x1 << 9);
17394                                 shift = 9;
17395                                 break;
17396                         case (0x1 << 10):
17397                                 mask = 0x1fff;
17398                                 shift = 0x0;
17399                                 break;
17400                         case (0x1 << 11):
17401                                 mask = 0x1fff;
17402                                 shift = 0x0;
17403                                 break;
17404                         default:
17405                                 mask = 0x0;
17406                                 shift = 0x0;
17407                                 break;
17408                         }
17409
17410                         if ((addr != 0xffff) && (core_mask & (1 << core_num)))
17411                                 mod_phy_reg(pi, addr, mask, (value << shift));
17412                 }
17413
17414                 or_phy_reg(pi, 0xec, (0x1 << 0));
17415                 or_phy_reg(pi, 0x78, (0x1 << 0));
17416                 udelay(1);
17417                 and_phy_reg(pi, 0xec, ~(0x1 << 0));
17418         }
17419 }
17420
17421 static void wlc_phy_txpwrctrl_idle_tssi_nphy(struct brcms_phy *pi)
17422 {
17423         s32 rssi_buf[4];
17424         s32 int_val;
17425
17426         if (SCAN_RM_IN_PROGRESS(pi) || PLT_INPROG_PHY(pi) || PHY_MUTED(pi))
17427
17428                 return;
17429
17430         if (PHY_IPA(pi))
17431                 wlc_phy_ipa_internal_tssi_setup_nphy(pi);
17432
17433         if (NREV_GE(pi->pubpi.phy_rev, 7))
17434                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17435                                                   0, 0x3, 0,
17436                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17437         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17438                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 0);
17439
17440         wlc_phy_stopplayback_nphy(pi);
17441
17442         wlc_phy_tx_tone_nphy(pi, 4000, 0, 0, 0, false);
17443
17444         udelay(20);
17445         int_val =
17446                 wlc_phy_poll_rssi_nphy(pi, (u8) NPHY_RSSI_SEL_TSSI_2G, rssi_buf,
17447                                        1);
17448         wlc_phy_stopplayback_nphy(pi);
17449         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, 0);
17450
17451         if (NREV_GE(pi->pubpi.phy_rev, 7))
17452                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12),
17453                                                   0, 0x3, 1,
17454                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
17455         else if (NREV_GE(pi->pubpi.phy_rev, 3))
17456                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 3, 1);
17457
17458         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17459
17460                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17461                         (u8) ((int_val >> 24) & 0xff);
17462                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17463                         (u8) ((int_val >> 24) & 0xff);
17464
17465                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17466                         (u8) ((int_val >> 8) & 0xff);
17467                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17468                         (u8) ((int_val >> 8) & 0xff);
17469         } else {
17470                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_2g =
17471                         (u8) ((int_val >> 24) & 0xff);
17472
17473                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_2g =
17474                         (u8) ((int_val >> 8) & 0xff);
17475
17476                 pi->nphy_pwrctrl_info[PHY_CORE_0].idle_tssi_5g =
17477                         (u8) ((int_val >> 16) & 0xff);
17478                 pi->nphy_pwrctrl_info[PHY_CORE_1].idle_tssi_5g =
17479                         (u8) ((int_val) & 0xff);
17480         }
17481
17482 }
17483
17484 static void wlc_phy_txpwr_limit_to_tbl_nphy(struct brcms_phy *pi)
17485 {
17486         u8 idx, idx2, i, delta_ind;
17487
17488         for (idx = TXP_FIRST_CCK; idx <= TXP_LAST_CCK; idx++)
17489                 pi->adj_pwr_tbl_nphy[idx] = pi->tx_power_offset[idx];
17490
17491         for (i = 0; i < 4; i++) {
17492                 idx2 = 0;
17493
17494                 delta_ind = 0;
17495
17496                 switch (i) {
17497                 case 0:
17498
17499                         if (CHSPEC_IS40(pi->radio_chanspec)
17500                             && NPHY_IS_SROM_REINTERPRET) {
17501                                 idx = TXP_FIRST_MCS_40_SISO;
17502                         } else {
17503                                 idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17504                                       TXP_FIRST_OFDM_40_SISO : TXP_FIRST_OFDM;
17505                                 delta_ind = 1;
17506                         }
17507                         break;
17508
17509                 case 1:
17510
17511                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17512                               TXP_FIRST_MCS_40_CDD : TXP_FIRST_MCS_20_CDD;
17513                         break;
17514
17515                 case 2:
17516
17517                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17518                               TXP_FIRST_MCS_40_STBC : TXP_FIRST_MCS_20_STBC;
17519                         break;
17520
17521                 case 3:
17522
17523                         idx = (CHSPEC_IS40(pi->radio_chanspec)) ?
17524                               TXP_FIRST_MCS_40_SDM : TXP_FIRST_MCS_20_SDM;
17525                         break;
17526                 }
17527
17528                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17529                         pi->tx_power_offset[idx];
17530                 idx = idx + delta_ind;
17531                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17532                         pi->tx_power_offset[idx];
17533                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17534                         pi->tx_power_offset[idx];
17535                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17536                         pi->tx_power_offset[idx++];
17537
17538                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17539                         pi->tx_power_offset[idx++];
17540                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17541                         pi->tx_power_offset[idx];
17542                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17543                         pi->tx_power_offset[idx];
17544                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17545                         pi->tx_power_offset[idx++];
17546
17547                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17548                         pi->tx_power_offset[idx++];
17549                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17550                         pi->tx_power_offset[idx];
17551                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17552                         pi->tx_power_offset[idx];
17553                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17554                         pi->tx_power_offset[idx++];
17555
17556                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17557                         pi->tx_power_offset[idx];
17558                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17559                         pi->tx_power_offset[idx++];
17560                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17561                         pi->tx_power_offset[idx];
17562                 idx = idx + 1 - delta_ind;
17563                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17564                         pi->tx_power_offset[idx];
17565
17566                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17567                         pi->tx_power_offset[idx];
17568                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17569                         pi->tx_power_offset[idx];
17570                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17571                         pi->tx_power_offset[idx];
17572                 pi->adj_pwr_tbl_nphy[4 + 4 * (idx2++) + i] =
17573                         pi->tx_power_offset[idx];
17574         }
17575 }
17576
17577 static void wlc_phy_txpwrctrl_pwr_setup_nphy(struct brcms_phy *pi)
17578 {
17579         u32 idx;
17580         s16 a1[2], b0[2], b1[2];
17581         s8 target_pwr_qtrdbm[2];
17582         s32 num, den, pwr_est;
17583         u8 chan_freq_range;
17584         u8 idle_tssi[2];
17585         u32 tbl_id, tbl_len, tbl_offset;
17586         u32 regval[64];
17587         u8 core;
17588
17589         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17590                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17591                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17592                 udelay(1);
17593         }
17594
17595         if (pi->phyhang_avoid)
17596                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
17597
17598         or_phy_reg(pi, 0x122, (0x1 << 0));
17599
17600         if (NREV_GE(pi->pubpi.phy_rev, 3))
17601                 and_phy_reg(pi, 0x1e7, (u16) (~(0x1 << 15)));
17602         else
17603                 or_phy_reg(pi, 0x1e7, (0x1 << 15));
17604
17605         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17606                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17607
17608         if (pi->sh->sromrev < 4) {
17609                 idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17610                 idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17611                 a1[0] = -424;
17612                 a1[1] = -424;
17613                 b0[0] = 5612;
17614                 b0[1] = 5612;
17615                 b1[1] = -1393;
17616                 b1[0] = -1393;
17617         } else {
17618
17619                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
17620                 switch (chan_freq_range) {
17621                 case WL_CHAN_FREQ_RANGE_2G:
17622                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17623                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17624                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_a1;
17625                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_a1;
17626                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b0;
17627                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b0;
17628                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_2g_b1;
17629                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_2g_b1;
17630                         break;
17631                 case WL_CHAN_FREQ_RANGE_5GL:
17632                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17633                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17634                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_a1;
17635                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_a1;
17636                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b0;
17637                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b0;
17638                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gl_b1;
17639                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gl_b1;
17640                         break;
17641                 case WL_CHAN_FREQ_RANGE_5GM:
17642                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17643                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17644                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_a1;
17645                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_a1;
17646                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b0;
17647                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b0;
17648                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gm_b1;
17649                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gm_b1;
17650                         break;
17651                 case WL_CHAN_FREQ_RANGE_5GH:
17652                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_5g;
17653                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_5g;
17654                         a1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_a1;
17655                         a1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_a1;
17656                         b0[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b0;
17657                         b0[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b0;
17658                         b1[0] = pi->nphy_pwrctrl_info[0].pwrdet_5gh_b1;
17659                         b1[1] = pi->nphy_pwrctrl_info[1].pwrdet_5gh_b1;
17660                         break;
17661                 default:
17662                         idle_tssi[0] = pi->nphy_pwrctrl_info[0].idle_tssi_2g;
17663                         idle_tssi[1] = pi->nphy_pwrctrl_info[1].idle_tssi_2g;
17664                         a1[0] = -424;
17665                         a1[1] = -424;
17666                         b0[0] = 5612;
17667                         b0[1] = 5612;
17668                         b1[1] = -1393;
17669                         b1[0] = -1393;
17670                         break;
17671                 }
17672         }
17673
17674         /* use the provided transmit power */
17675         target_pwr_qtrdbm[0] = (s8) pi->tx_power_max;
17676         target_pwr_qtrdbm[1] = (s8) pi->tx_power_max;
17677
17678         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
17679                 if (pi->srom_fem2g.tssipos)
17680                         or_phy_reg(pi, 0x1e9, (0x1 << 14));
17681
17682                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17683                         for (core = 0; core <= 1; core++) {
17684                                 if (PHY_IPA(pi)) {
17685                                         if (CHSPEC_IS2G(pi->radio_chanspec))
17686                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17687                                                                  TX, core,
17688                                                                  TX_SSI_MUX,
17689                                                                  0xe);
17690                                         else
17691                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
17692                                                                  TX, core,
17693                                                                  TX_SSI_MUX,
17694                                                                  0xc);
17695                                 }
17696                         }
17697                 } else {
17698                         if (PHY_IPA(pi)) {
17699
17700                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17701                                                 RADIO_2056_TX0,
17702                                                 (CHSPEC_IS5G
17703                                                  (pi->radio_chanspec)) ?
17704                                                  0xc : 0xe);
17705                                 write_radio_reg(pi,
17706                                                 RADIO_2056_TX_TX_SSI_MUX |
17707                                                 RADIO_2056_TX1,
17708                                                 (CHSPEC_IS5G
17709                                                  (pi->radio_chanspec)) ?
17710                                                  0xc : 0xe);
17711                         } else {
17712
17713                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17714                                                 RADIO_2056_TX0, 0x11);
17715                                 write_radio_reg(pi, RADIO_2056_TX_TX_SSI_MUX |
17716                                                 RADIO_2056_TX1, 0x11);
17717                         }
17718                 }
17719         }
17720
17721         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
17722                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
17723                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
17724                 udelay(1);
17725         }
17726
17727         if (NREV_GE(pi->pubpi.phy_rev, 7))
17728                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17729                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17730         else
17731                 mod_phy_reg(pi, 0x1e7, (0x7f << 0),
17732                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17733
17734         if (NREV_GE(pi->pubpi.phy_rev, 7))
17735                 mod_phy_reg(pi, 0x222, (0xff << 0),
17736                             (NPHY_TxPwrCtrlCmd_pwrIndex_init_rev7 << 0));
17737         else if (NREV_GT(pi->pubpi.phy_rev, 1))
17738                 mod_phy_reg(pi, 0x222, (0xff << 0),
17739                             (NPHY_TxPwrCtrlCmd_pwrIndex_init << 0));
17740
17741         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
17742                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
17743
17744         write_phy_reg(pi, 0x1e8, (0x3 << 8) | (240 << 0));
17745
17746         write_phy_reg(pi, 0x1e9,
17747                       (1 << 15) | (idle_tssi[0] << 0) | (idle_tssi[1] << 8));
17748
17749         write_phy_reg(pi, 0x1ea,
17750                       (target_pwr_qtrdbm[0] << 0) |
17751                       (target_pwr_qtrdbm[1] << 8));
17752
17753         tbl_len = 64;
17754         tbl_offset = 0;
17755         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
17756              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
17757
17758                 for (idx = 0; idx < tbl_len; idx++) {
17759                         num = 8 *
17760                               (16 * b0[tbl_id - 26] + b1[tbl_id - 26] * idx);
17761                         den = 32768 + a1[tbl_id - 26] * idx;
17762                         pwr_est = max(((4 * num + den / 2) / den), -8);
17763                         if (NREV_LT(pi->pubpi.phy_rev, 3)) {
17764                                 if (idx <=
17765                                     (uint) (31 - idle_tssi[tbl_id - 26] + 1))
17766                                         pwr_est =
17767                                                 max(pwr_est,
17768                                                     target_pwr_qtrdbm
17769                                                     [tbl_id - 26] + 1);
17770                         }
17771                         regval[idx] = (u32) pwr_est;
17772                 }
17773                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
17774                                          regval);
17775         }
17776
17777         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
17778         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64, 8,
17779                                  pi->adj_pwr_tbl_nphy);
17780         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64, 8,
17781                                  pi->adj_pwr_tbl_nphy);
17782
17783         if (pi->phyhang_avoid)
17784                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
17785 }
17786
17787 static u32 *wlc_phy_get_ipa_gaintbl_nphy(struct brcms_phy *pi)
17788 {
17789         u32 *tx_pwrctrl_tbl = NULL;
17790
17791         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17792                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17793                         if ((pi->pubpi.radiorev == 4)
17794                             || (pi->pubpi.radiorev == 6))
17795                                 tx_pwrctrl_tbl =
17796                                         nphy_tpc_txgain_ipa_2g_2057rev4n6;
17797                         else if (pi->pubpi.radiorev == 3)
17798                                 tx_pwrctrl_tbl =
17799                                         nphy_tpc_txgain_ipa_2g_2057rev3;
17800                         else if (pi->pubpi.radiorev == 5)
17801                                 tx_pwrctrl_tbl =
17802                                         nphy_tpc_txgain_ipa_2g_2057rev5;
17803                         else if ((pi->pubpi.radiorev == 7)
17804                                  || (pi->pubpi.radiorev == 8))
17805                                 tx_pwrctrl_tbl =
17806                                         nphy_tpc_txgain_ipa_2g_2057rev7;
17807                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
17808                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev6;
17809                         if (pi->sh->chip == BCMA_CHIP_ID_BCM47162)
17810                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17811                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
17812                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_rev5;
17813                 } else {
17814                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa;
17815                 }
17816         } else {
17817
17818                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17819                         if ((pi->pubpi.radiorev == 3) ||
17820                             (pi->pubpi.radiorev == 4) ||
17821                             (pi->pubpi.radiorev == 6))
17822                                 tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g_2057;
17823                         else if ((pi->pubpi.radiorev == 7)
17824                                  || (pi->pubpi.radiorev == 8))
17825                                 tx_pwrctrl_tbl =
17826                                         nphy_tpc_txgain_ipa_5g_2057rev7;
17827                 } else {
17828                         tx_pwrctrl_tbl = nphy_tpc_txgain_ipa_5g;
17829                 }
17830         }
17831
17832         return tx_pwrctrl_tbl;
17833 }
17834
17835 static void wlc_phy_restore_rssical_nphy(struct brcms_phy *pi)
17836 {
17837         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17838                 if (pi->nphy_rssical_chanspec_2G == 0)
17839                         return;
17840
17841                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17842                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17843                                       RADIO_2057_VCM_MASK,
17844                                       pi->rssical_cache.
17845                                       rssical_radio_regs_2G[0]);
17846                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17847                                       RADIO_2057_VCM_MASK,
17848                                       pi->rssical_cache.
17849                                       rssical_radio_regs_2G[1]);
17850                 } else {
17851                         mod_radio_reg(pi,
17852                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17853                                       RADIO_2056_VCM_MASK,
17854                                       pi->rssical_cache.
17855                                       rssical_radio_regs_2G[0]);
17856                         mod_radio_reg(pi,
17857                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17858                                       RADIO_2056_VCM_MASK,
17859                                       pi->rssical_cache.
17860                                       rssical_radio_regs_2G[1]);
17861                 }
17862
17863                 write_phy_reg(pi, 0x1a6,
17864                               pi->rssical_cache.rssical_phyregs_2G[0]);
17865                 write_phy_reg(pi, 0x1ac,
17866                               pi->rssical_cache.rssical_phyregs_2G[1]);
17867                 write_phy_reg(pi, 0x1b2,
17868                               pi->rssical_cache.rssical_phyregs_2G[2]);
17869                 write_phy_reg(pi, 0x1b8,
17870                               pi->rssical_cache.rssical_phyregs_2G[3]);
17871                 write_phy_reg(pi, 0x1a4,
17872                               pi->rssical_cache.rssical_phyregs_2G[4]);
17873                 write_phy_reg(pi, 0x1aa,
17874                               pi->rssical_cache.rssical_phyregs_2G[5]);
17875                 write_phy_reg(pi, 0x1b0,
17876                               pi->rssical_cache.rssical_phyregs_2G[6]);
17877                 write_phy_reg(pi, 0x1b6,
17878                               pi->rssical_cache.rssical_phyregs_2G[7]);
17879                 write_phy_reg(pi, 0x1a5,
17880                               pi->rssical_cache.rssical_phyregs_2G[8]);
17881                 write_phy_reg(pi, 0x1ab,
17882                               pi->rssical_cache.rssical_phyregs_2G[9]);
17883                 write_phy_reg(pi, 0x1b1,
17884                               pi->rssical_cache.rssical_phyregs_2G[10]);
17885                 write_phy_reg(pi, 0x1b7,
17886                               pi->rssical_cache.rssical_phyregs_2G[11]);
17887
17888         } else {
17889                 if (pi->nphy_rssical_chanspec_5G == 0)
17890                         return;
17891
17892                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17893                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0,
17894                                       RADIO_2057_VCM_MASK,
17895                                       pi->rssical_cache.
17896                                       rssical_radio_regs_5G[0]);
17897                         mod_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1,
17898                                       RADIO_2057_VCM_MASK,
17899                                       pi->rssical_cache.
17900                                       rssical_radio_regs_5G[1]);
17901                 } else {
17902                         mod_radio_reg(pi,
17903                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX0,
17904                                       RADIO_2056_VCM_MASK,
17905                                       pi->rssical_cache.
17906                                       rssical_radio_regs_5G[0]);
17907                         mod_radio_reg(pi,
17908                                       RADIO_2056_RX_RSSI_MISC | RADIO_2056_RX1,
17909                                       RADIO_2056_VCM_MASK,
17910                                       pi->rssical_cache.
17911                                       rssical_radio_regs_5G[1]);
17912                 }
17913
17914                 write_phy_reg(pi, 0x1a6,
17915                               pi->rssical_cache.rssical_phyregs_5G[0]);
17916                 write_phy_reg(pi, 0x1ac,
17917                               pi->rssical_cache.rssical_phyregs_5G[1]);
17918                 write_phy_reg(pi, 0x1b2,
17919                               pi->rssical_cache.rssical_phyregs_5G[2]);
17920                 write_phy_reg(pi, 0x1b8,
17921                               pi->rssical_cache.rssical_phyregs_5G[3]);
17922                 write_phy_reg(pi, 0x1a4,
17923                               pi->rssical_cache.rssical_phyregs_5G[4]);
17924                 write_phy_reg(pi, 0x1aa,
17925                               pi->rssical_cache.rssical_phyregs_5G[5]);
17926                 write_phy_reg(pi, 0x1b0,
17927                               pi->rssical_cache.rssical_phyregs_5G[6]);
17928                 write_phy_reg(pi, 0x1b6,
17929                               pi->rssical_cache.rssical_phyregs_5G[7]);
17930                 write_phy_reg(pi, 0x1a5,
17931                               pi->rssical_cache.rssical_phyregs_5G[8]);
17932                 write_phy_reg(pi, 0x1ab,
17933                               pi->rssical_cache.rssical_phyregs_5G[9]);
17934                 write_phy_reg(pi, 0x1b1,
17935                               pi->rssical_cache.rssical_phyregs_5G[10]);
17936                 write_phy_reg(pi, 0x1b7,
17937                               pi->rssical_cache.rssical_phyregs_5G[11]);
17938         }
17939 }
17940
17941 static void wlc_phy_internal_cal_txgain_nphy(struct brcms_phy *pi)
17942 {
17943         u16 txcal_gain[2];
17944
17945         pi->nphy_txcal_pwr_idx[0] = pi->nphy_cal_orig_pwr_idx[0];
17946         pi->nphy_txcal_pwr_idx[1] = pi->nphy_cal_orig_pwr_idx[0];
17947         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
17948         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
17949
17950         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17951                                 txcal_gain);
17952
17953         if (CHSPEC_IS2G(pi->radio_chanspec)) {
17954                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F40;
17955                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F40;
17956         } else {
17957                 txcal_gain[0] = (txcal_gain[0] & 0xF000) | 0x0F60;
17958                 txcal_gain[1] = (txcal_gain[1] & 0xF000) | 0x0F60;
17959         }
17960
17961         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
17962                                  txcal_gain);
17963 }
17964
17965 static void wlc_phy_precal_txgain_nphy(struct brcms_phy *pi)
17966 {
17967         bool save_bbmult = false;
17968         u8 txcal_index_2057_rev5n7 = 0;
17969         u8 txcal_index_2057_rev3n4n6 = 10;
17970
17971         if (pi->use_int_tx_iqlo_cal_nphy) {
17972                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
17973                         if ((pi->pubpi.radiorev == 3) ||
17974                             (pi->pubpi.radiorev == 4) ||
17975                             (pi->pubpi.radiorev == 6)) {
17976
17977                                 pi->nphy_txcal_pwr_idx[0] =
17978                                         txcal_index_2057_rev3n4n6;
17979                                 pi->nphy_txcal_pwr_idx[1] =
17980                                         txcal_index_2057_rev3n4n6;
17981                                 wlc_phy_txpwr_index_nphy(
17982                                         pi, 3,
17983                                         txcal_index_2057_rev3n4n6,
17984                                         false);
17985                         } else {
17986
17987                                 pi->nphy_txcal_pwr_idx[0] =
17988                                         txcal_index_2057_rev5n7;
17989                                 pi->nphy_txcal_pwr_idx[1] =
17990                                         txcal_index_2057_rev5n7;
17991                                 wlc_phy_txpwr_index_nphy(
17992                                         pi, 3,
17993                                         txcal_index_2057_rev5n7,
17994                                         false);
17995                         }
17996                         save_bbmult = true;
17997
17998                 } else if (NREV_LT(pi->pubpi.phy_rev, 5)) {
17999                         wlc_phy_cal_txgainctrl_nphy(pi, 11, false);
18000                         if (pi->sh->hw_phytxchain != 3) {
18001                                 pi->nphy_txcal_pwr_idx[1] =
18002                                         pi->nphy_txcal_pwr_idx[0];
18003                                 wlc_phy_txpwr_index_nphy(pi, 3,
18004                                                          pi->
18005                                                          nphy_txcal_pwr_idx[0],
18006                                                          true);
18007                                 save_bbmult = true;
18008                         }
18009
18010                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
18011                         if (PHY_IPA(pi)) {
18012                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
18013                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18014                                                                     false);
18015                                 } else {
18016                                         pi->nphy_txcal_pwr_idx[0] = 80;
18017                                         pi->nphy_txcal_pwr_idx[1] = 80;
18018                                         wlc_phy_txpwr_index_nphy(pi, 3, 80,
18019                                                                  false);
18020                                         save_bbmult = true;
18021                                 }
18022                         } else {
18023                                 wlc_phy_internal_cal_txgain_nphy(pi);
18024                                 save_bbmult = true;
18025                         }
18026
18027                 } else if (NREV_IS(pi->pubpi.phy_rev, 6)) {
18028                         if (PHY_IPA(pi)) {
18029                                 if (CHSPEC_IS2G(pi->radio_chanspec))
18030                                         wlc_phy_cal_txgainctrl_nphy(pi, 12,
18031                                                                     false);
18032                                 else
18033                                         wlc_phy_cal_txgainctrl_nphy(pi, 14,
18034                                                                     false);
18035                         } else {
18036                                 wlc_phy_internal_cal_txgain_nphy(pi);
18037                                 save_bbmult = true;
18038                         }
18039                 }
18040
18041         } else {
18042                 wlc_phy_cal_txgainctrl_nphy(pi, 10, false);
18043         }
18044
18045         if (save_bbmult)
18046                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
18047                                         &pi->nphy_txcal_bbmult);
18048 }
18049
18050 static void
18051 wlc_phy_rfctrlintc_override_nphy(struct brcms_phy *pi, u8 field, u16 value,
18052                                  u8 core_code)
18053 {
18054         u16 mask;
18055         u16 val;
18056         u8 core;
18057
18058         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18059                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18060                         if (core_code == RADIO_MIMO_CORESEL_CORE1
18061                             && core == PHY_CORE_1)
18062                                 continue;
18063                         else if (core_code == RADIO_MIMO_CORESEL_CORE2
18064                                  && core == PHY_CORE_0)
18065                                 continue;
18066
18067                         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
18068
18069                                 mask = (0x1 << 10);
18070                                 val = 1 << 10;
18071                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18072                                             0x92, mask, val);
18073                         }
18074
18075                         if (field == NPHY_RfctrlIntc_override_OFF) {
18076
18077                                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0x91 :
18078                                               0x92, 0);
18079
18080                                 wlc_phy_force_rfseq_nphy(pi,
18081                                                          NPHY_RFSEQ_RESET2RX);
18082                         } else if (field == NPHY_RfctrlIntc_override_TRSW) {
18083
18084                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18085
18086                                         mask = (0x1 << 6) | (0x1 << 7);
18087
18088                                         val = value << 6;
18089                                         mod_phy_reg(pi,
18090                                                     (core ==
18091                                                      PHY_CORE_0) ? 0x91 : 0x92,
18092                                                     mask, val);
18093
18094                                         or_phy_reg(pi,
18095                                                    (core ==
18096                                                     PHY_CORE_0) ? 0x91 : 0x92,
18097                                                    (0x1 << 10));
18098
18099                                         and_phy_reg(pi, 0x2ff, (u16)
18100                                                     ~(0x3 << 14));
18101                                         or_phy_reg(pi, 0x2ff, (0x1 << 13));
18102                                         or_phy_reg(pi, 0x2ff, (0x1 << 0));
18103                                 } else {
18104
18105                                         mask = (0x1 << 6) |
18106                                                (0x1 << 7) |
18107                                                (0x1 << 8) | (0x1 << 9);
18108                                         val = value << 6;
18109                                         mod_phy_reg(pi,
18110                                                     (core ==
18111                                                      PHY_CORE_0) ? 0x91 : 0x92,
18112                                                     mask, val);
18113
18114                                         mask = (0x1 << 0);
18115                                         val = 1 << 0;
18116                                         mod_phy_reg(pi,
18117                                                     (core ==
18118                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18119                                                     mask, val);
18120
18121                                         mask = (core == PHY_CORE_0) ?
18122                                                (0x1 << 0) : (0x1 << 1);
18123                                         val = 1 << ((core == PHY_CORE_0) ?
18124                                                     0 : 1);
18125                                         mod_phy_reg(pi, 0x78, mask, val);
18126
18127                                         SPINWAIT(((read_phy_reg(pi, 0x78) & val)
18128                                                   != 0), 10000);
18129                                         if (WARN(read_phy_reg(pi, 0x78) & val,
18130                                                  "HW error: override failed"))
18131                                                 return;
18132
18133                                         mask = (0x1 << 0);
18134                                         val = 0 << 0;
18135                                         mod_phy_reg(pi,
18136                                                     (core ==
18137                                                      PHY_CORE_0) ? 0xe7 : 0xec,
18138                                                     mask, val);
18139                                 }
18140                         } else if (field == NPHY_RfctrlIntc_override_PA) {
18141                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18142
18143                                         mask = (0x1 << 4) | (0x1 << 5);
18144
18145                                         if (CHSPEC_IS5G(pi->radio_chanspec))
18146                                                 val = value << 5;
18147                                         else
18148                                                 val = value << 4;
18149
18150                                         mod_phy_reg(pi,
18151                                                     (core ==
18152                                                      PHY_CORE_0) ? 0x91 : 0x92,
18153                                                     mask, val);
18154
18155                                         or_phy_reg(pi,
18156                                                    (core ==
18157                                                     PHY_CORE_0) ? 0x91 : 0x92,
18158                                                    (0x1 << 12));
18159                                 } else {
18160
18161                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18162                                                 mask = (0x1 << 5);
18163                                                 val = value << 5;
18164                                         } else {
18165                                                 mask = (0x1 << 4);
18166                                                 val = value << 4;
18167                                         }
18168                                         mod_phy_reg(pi,
18169                                                     (core ==
18170                                                      PHY_CORE_0) ? 0x91 : 0x92,
18171                                                     mask, val);
18172                                 }
18173                         } else if (field ==
18174                                    NPHY_RfctrlIntc_override_EXT_LNA_PU) {
18175                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18176                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18177
18178                                                 mask = (0x1 << 0);
18179                                                 val = value << 0;
18180                                                 mod_phy_reg(pi,
18181                                                             (core ==
18182                                                              PHY_CORE_0) ? 0x91
18183                                                             : 0x92, mask, val);
18184
18185                                                 mask = (0x1 << 2);
18186                                                 mod_phy_reg(pi,
18187                                                             (core ==
18188                                                              PHY_CORE_0) ? 0x91
18189                                                             : 0x92, mask, 0);
18190                                         } else {
18191
18192                                                 mask = (0x1 << 2);
18193                                                 val = value << 2;
18194                                                 mod_phy_reg(pi,
18195                                                             (core ==
18196                                                              PHY_CORE_0) ? 0x91
18197                                                             : 0x92, mask, val);
18198
18199                                                 mask = (0x1 << 0);
18200                                                 mod_phy_reg(pi,
18201                                                             (core ==
18202                                                              PHY_CORE_0) ? 0x91
18203                                                             : 0x92, mask, 0);
18204                                         }
18205
18206                                         mask = (0x1 << 11);
18207                                         val = 1 << 11;
18208                                         mod_phy_reg(pi,
18209                                                     (core ==
18210                                                      PHY_CORE_0) ? 0x91 : 0x92,
18211                                                     mask, val);
18212                                 } else {
18213
18214                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18215                                                 mask = (0x1 << 0);
18216                                                 val = value << 0;
18217                                         } else {
18218                                                 mask = (0x1 << 2);
18219                                                 val = value << 2;
18220                                         }
18221                                         mod_phy_reg(pi,
18222                                                     (core ==
18223                                                      PHY_CORE_0) ? 0x91 : 0x92,
18224                                                     mask, val);
18225                                 }
18226                         } else if (field ==
18227                                    NPHY_RfctrlIntc_override_EXT_LNA_GAIN) {
18228                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18229                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18230
18231                                                 mask = (0x1 << 1);
18232                                                 val = value << 1;
18233                                                 mod_phy_reg(pi,
18234                                                             (core ==
18235                                                              PHY_CORE_0) ? 0x91
18236                                                             : 0x92, mask, val);
18237
18238                                                 mask = (0x1 << 3);
18239                                                 mod_phy_reg(pi,
18240                                                             (core ==
18241                                                              PHY_CORE_0) ? 0x91
18242                                                             : 0x92, mask, 0);
18243                                         } else {
18244
18245                                                 mask = (0x1 << 3);
18246                                                 val = value << 3;
18247                                                 mod_phy_reg(pi,
18248                                                             (core ==
18249                                                              PHY_CORE_0) ? 0x91
18250                                                             : 0x92, mask, val);
18251
18252                                                 mask = (0x1 << 1);
18253                                                 mod_phy_reg(pi,
18254                                                             (core ==
18255                                                              PHY_CORE_0) ? 0x91
18256                                                             : 0x92, mask, 0);
18257                                         }
18258
18259                                         mask = (0x1 << 11);
18260                                         val = 1 << 11;
18261                                         mod_phy_reg(pi,
18262                                                     (core ==
18263                                                      PHY_CORE_0) ? 0x91 : 0x92,
18264                                                     mask, val);
18265                                 } else {
18266
18267                                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18268                                                 mask = (0x1 << 1);
18269                                                 val = value << 1;
18270                                         } else {
18271                                                 mask = (0x1 << 3);
18272                                                 val = value << 3;
18273                                         }
18274                                         mod_phy_reg(pi,
18275                                                     (core ==
18276                                                      PHY_CORE_0) ? 0x91 : 0x92,
18277                                                     mask, val);
18278                                 }
18279                         }
18280                 }
18281         }
18282 }
18283
18284 void
18285 wlc_phy_cal_txgainctrl_nphy(struct brcms_phy *pi, s32 dBm_targetpower,
18286                             bool debug)
18287 {
18288         int gainctrl_loopidx;
18289         uint core;
18290         u16 m0m1, curr_m0m1;
18291         s32 delta_power;
18292         s32 txpwrindex;
18293         s32 qdBm_power[2];
18294         u16 orig_BBConfig;
18295         u16 phy_saveregs[4];
18296         u32 freq_test;
18297         u16 ampl_test = 250;
18298         uint stepsize;
18299         bool phyhang_avoid_state = false;
18300
18301         if (NREV_GE(pi->pubpi.phy_rev, 7))
18302                 stepsize = 2;
18303         else
18304                 stepsize = 1;
18305
18306         if (CHSPEC_IS40(pi->radio_chanspec))
18307                 freq_test = 5000;
18308         else
18309                 freq_test = 2500;
18310
18311         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_cal_orig_pwr_idx[0], true);
18312         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_cal_orig_pwr_idx[1], true);
18313
18314         if (pi->phyhang_avoid)
18315                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18316
18317         phyhang_avoid_state = pi->phyhang_avoid;
18318         pi->phyhang_avoid = false;
18319
18320         phy_saveregs[0] = read_phy_reg(pi, 0x91);
18321         phy_saveregs[1] = read_phy_reg(pi, 0x92);
18322         phy_saveregs[2] = read_phy_reg(pi, 0xe7);
18323         phy_saveregs[3] = read_phy_reg(pi, 0xec);
18324         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 1,
18325                                          RADIO_MIMO_CORESEL_CORE1 |
18326                                          RADIO_MIMO_CORESEL_CORE2);
18327
18328         if (!debug) {
18329                 wlc_phy_rfctrlintc_override_nphy(pi,
18330                                                  NPHY_RfctrlIntc_override_TRSW,
18331                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
18332                 wlc_phy_rfctrlintc_override_nphy(pi,
18333                                                  NPHY_RfctrlIntc_override_TRSW,
18334                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
18335         } else {
18336                 wlc_phy_rfctrlintc_override_nphy(pi,
18337                                                  NPHY_RfctrlIntc_override_TRSW,
18338                                                  0x1, RADIO_MIMO_CORESEL_CORE1);
18339                 wlc_phy_rfctrlintc_override_nphy(pi,
18340                                                  NPHY_RfctrlIntc_override_TRSW,
18341                                                  0x7, RADIO_MIMO_CORESEL_CORE2);
18342         }
18343
18344         orig_BBConfig = read_phy_reg(pi, 0x01);
18345         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
18346
18347         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
18348
18349         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
18350                 txpwrindex = (s32) pi->nphy_cal_orig_pwr_idx[core];
18351
18352                 for (gainctrl_loopidx = 0; gainctrl_loopidx < 2;
18353                      gainctrl_loopidx++) {
18354                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18355                                              false);
18356
18357                         if (core == PHY_CORE_0)
18358                                 curr_m0m1 = m0m1 & 0xff00;
18359                         else
18360                                 curr_m0m1 = m0m1 & 0x00ff;
18361
18362                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &curr_m0m1);
18363                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &curr_m0m1);
18364
18365                         udelay(50);
18366
18367                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18368                                                  NPHY_CAL_TSSISAMPS);
18369
18370                         pi->nphy_bb_mult_save = 0;
18371                         wlc_phy_stopplayback_nphy(pi);
18372
18373                         delta_power = (dBm_targetpower * 4) - qdBm_power[core];
18374
18375                         txpwrindex -= stepsize * delta_power;
18376                         if (txpwrindex < 0)
18377                                 txpwrindex = 0;
18378                         else if (txpwrindex > 127)
18379                                 txpwrindex = 127;
18380
18381                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
18382                                 if (NREV_IS(pi->pubpi.phy_rev, 4) &&
18383                                     (pi->srom_fem5g.extpagain == 3)) {
18384                                         if (txpwrindex < 30)
18385                                                 txpwrindex = 30;
18386                                 }
18387                         } else {
18388                                 if (NREV_GE(pi->pubpi.phy_rev, 5) &&
18389                                     (pi->srom_fem2g.extpagain == 3)) {
18390                                         if (txpwrindex < 50)
18391                                                 txpwrindex = 50;
18392                                 }
18393                         }
18394
18395                         wlc_phy_txpwr_index_nphy(pi, (1 << core),
18396                                                  (u8) txpwrindex, true);
18397                 }
18398
18399                 pi->nphy_txcal_pwr_idx[core] = (u8) txpwrindex;
18400
18401                 if (debug) {
18402                         u16 radio_gain;
18403                         u16 dbg_m0m1;
18404
18405                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18406
18407                         wlc_phy_tx_tone_nphy(pi, freq_test, ampl_test, 0, 0,
18408                                              false);
18409
18410                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &dbg_m0m1);
18411                         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &dbg_m0m1);
18412
18413                         udelay(100);
18414
18415                         wlc_phy_est_tonepwr_nphy(pi, qdBm_power,
18416                                                  NPHY_CAL_TSSISAMPS);
18417
18418                         wlc_phy_table_read_nphy(pi, 7, 1, (0x110 + core), 16,
18419                                                 &radio_gain);
18420
18421                         mdelay(4000);
18422                         pi->nphy_bb_mult_save = 0;
18423                         wlc_phy_stopplayback_nphy(pi);
18424                 }
18425         }
18426
18427         wlc_phy_txpwr_index_nphy(pi, 1, pi->nphy_txcal_pwr_idx[0], true);
18428         wlc_phy_txpwr_index_nphy(pi, 2, pi->nphy_txcal_pwr_idx[1], true);
18429
18430         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &pi->nphy_txcal_bbmult);
18431
18432         write_phy_reg(pi, 0x01, orig_BBConfig);
18433
18434         write_phy_reg(pi, 0x91, phy_saveregs[0]);
18435         write_phy_reg(pi, 0x92, phy_saveregs[1]);
18436         write_phy_reg(pi, 0xe7, phy_saveregs[2]);
18437         write_phy_reg(pi, 0xec, phy_saveregs[3]);
18438
18439         pi->phyhang_avoid = phyhang_avoid_state;
18440
18441         if (pi->phyhang_avoid)
18442                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18443 }
18444
18445 static void wlc_phy_savecal_nphy(struct brcms_phy *pi)
18446 {
18447         void *tbl_ptr;
18448         int coreNum;
18449         u16 *txcal_radio_regs = NULL;
18450
18451         if (pi->phyhang_avoid)
18452                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18453
18454         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18455
18456                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18457                                           &pi->calibration_cache.
18458                                           rxcal_coeffs_2G);
18459
18460                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18461                         txcal_radio_regs =
18462                                 pi->calibration_cache.txcal_radio_regs_2G;
18463                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18464
18465                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18466                                 read_radio_reg(pi,
18467                                                RADIO_2056_TX_LOFT_FINE_I |
18468                                                RADIO_2056_TX0);
18469                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18470                                 read_radio_reg(pi,
18471                                                RADIO_2056_TX_LOFT_FINE_Q |
18472                                                RADIO_2056_TX0);
18473                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18474                                 read_radio_reg(pi,
18475                                                RADIO_2056_TX_LOFT_FINE_I |
18476                                                RADIO_2056_TX1);
18477                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18478                                 read_radio_reg(pi,
18479                                                RADIO_2056_TX_LOFT_FINE_Q |
18480                                                RADIO_2056_TX1);
18481
18482                         pi->calibration_cache.txcal_radio_regs_2G[4] =
18483                                 read_radio_reg(pi,
18484                                                RADIO_2056_TX_LOFT_COARSE_I |
18485                                                RADIO_2056_TX0);
18486                         pi->calibration_cache.txcal_radio_regs_2G[5] =
18487                                 read_radio_reg(pi,
18488                                                RADIO_2056_TX_LOFT_COARSE_Q |
18489                                                RADIO_2056_TX0);
18490                         pi->calibration_cache.txcal_radio_regs_2G[6] =
18491                                 read_radio_reg(pi,
18492                                                RADIO_2056_TX_LOFT_COARSE_I |
18493                                                RADIO_2056_TX1);
18494                         pi->calibration_cache.txcal_radio_regs_2G[7] =
18495                                 read_radio_reg(pi,
18496                                                RADIO_2056_TX_LOFT_COARSE_Q |
18497                                                RADIO_2056_TX1);
18498                 } else {
18499                         pi->calibration_cache.txcal_radio_regs_2G[0] =
18500                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18501                         pi->calibration_cache.txcal_radio_regs_2G[1] =
18502                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18503                         pi->calibration_cache.txcal_radio_regs_2G[2] =
18504                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18505                         pi->calibration_cache.txcal_radio_regs_2G[3] =
18506                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18507                 }
18508
18509                 pi->nphy_iqcal_chanspec_2G = pi->radio_chanspec;
18510                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18511         } else {
18512
18513                 wlc_phy_rx_iq_coeffs_nphy(pi, 0,
18514                                           &pi->calibration_cache.
18515                                           rxcal_coeffs_5G);
18516
18517                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18518                         txcal_radio_regs =
18519                                 pi->calibration_cache.txcal_radio_regs_5G;
18520                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18521
18522                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18523                                 read_radio_reg(pi,
18524                                                RADIO_2056_TX_LOFT_FINE_I |
18525                                                RADIO_2056_TX0);
18526                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18527                                 read_radio_reg(pi,
18528                                                RADIO_2056_TX_LOFT_FINE_Q |
18529                                                RADIO_2056_TX0);
18530                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18531                                 read_radio_reg(pi,
18532                                                RADIO_2056_TX_LOFT_FINE_I |
18533                                                RADIO_2056_TX1);
18534                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18535                                 read_radio_reg(pi,
18536                                                RADIO_2056_TX_LOFT_FINE_Q |
18537                                                RADIO_2056_TX1);
18538
18539                         pi->calibration_cache.txcal_radio_regs_5G[4] =
18540                                 read_radio_reg(pi,
18541                                                RADIO_2056_TX_LOFT_COARSE_I |
18542                                                RADIO_2056_TX0);
18543                         pi->calibration_cache.txcal_radio_regs_5G[5] =
18544                                 read_radio_reg(pi,
18545                                                RADIO_2056_TX_LOFT_COARSE_Q |
18546                                                RADIO_2056_TX0);
18547                         pi->calibration_cache.txcal_radio_regs_5G[6] =
18548                                 read_radio_reg(pi,
18549                                                RADIO_2056_TX_LOFT_COARSE_I |
18550                                                RADIO_2056_TX1);
18551                         pi->calibration_cache.txcal_radio_regs_5G[7] =
18552                                 read_radio_reg(pi,
18553                                                RADIO_2056_TX_LOFT_COARSE_Q |
18554                                                RADIO_2056_TX1);
18555                 } else {
18556                         pi->calibration_cache.txcal_radio_regs_5G[0] =
18557                                read_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL);
18558                         pi->calibration_cache.txcal_radio_regs_5G[1] =
18559                                read_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL);
18560                         pi->calibration_cache.txcal_radio_regs_5G[2] =
18561                                read_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM);
18562                         pi->calibration_cache.txcal_radio_regs_5G[3] =
18563                                read_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM);
18564                 }
18565
18566                 pi->nphy_iqcal_chanspec_5G = pi->radio_chanspec;
18567                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18568         }
18569         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18570                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18571
18572                         txcal_radio_regs[2 * coreNum] =
18573                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18574                                                 LOFT_FINE_I);
18575                         txcal_radio_regs[2 * coreNum + 1] =
18576                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18577                                                 LOFT_FINE_Q);
18578
18579                         txcal_radio_regs[2 * coreNum + 4] =
18580                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18581                                                 LOFT_COARSE_I);
18582                         txcal_radio_regs[2 * coreNum + 5] =
18583                                 READ_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18584                                                 LOFT_COARSE_Q);
18585                 }
18586         }
18587
18588         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 8, 80, 16, tbl_ptr);
18589
18590         if (pi->phyhang_avoid)
18591                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18592 }
18593
18594 static void wlc_phy_tx_iq_war_nphy(struct brcms_phy *pi)
18595 {
18596         struct nphy_iq_comp tx_comp;
18597
18598         wlc_phy_table_read_nphy(pi, 15, 4, 0x50, 16, &tx_comp);
18599
18600         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ, tx_comp.a0);
18601         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 2, tx_comp.b0);
18602         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 4, tx_comp.a1);
18603         wlapi_bmac_write_shm(pi->sh->physhim, M_20IN40_IQ + 6, tx_comp.b1);
18604 }
18605
18606 static void wlc_phy_restorecal_nphy(struct brcms_phy *pi)
18607 {
18608         u16 *loft_comp;
18609         u16 txcal_coeffs_bphy[4];
18610         u16 *tbl_ptr;
18611         int coreNum;
18612         u16 *txcal_radio_regs = NULL;
18613
18614         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18615                 if (pi->nphy_iqcal_chanspec_2G == 0)
18616                         return;
18617
18618                 tbl_ptr = pi->calibration_cache.txcal_coeffs_2G;
18619                 loft_comp = &pi->calibration_cache.txcal_coeffs_2G[5];
18620         } else {
18621                 if (pi->nphy_iqcal_chanspec_5G == 0)
18622                         return;
18623
18624                 tbl_ptr = pi->calibration_cache.txcal_coeffs_5G;
18625                 loft_comp = &pi->calibration_cache.txcal_coeffs_5G[5];
18626         }
18627
18628         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80, 16, tbl_ptr);
18629
18630         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18631                 txcal_coeffs_bphy[0] = tbl_ptr[0];
18632                 txcal_coeffs_bphy[1] = tbl_ptr[1];
18633                 txcal_coeffs_bphy[2] = tbl_ptr[2];
18634                 txcal_coeffs_bphy[3] = tbl_ptr[3];
18635         } else {
18636                 txcal_coeffs_bphy[0] = 0;
18637                 txcal_coeffs_bphy[1] = 0;
18638                 txcal_coeffs_bphy[2] = 0;
18639                 txcal_coeffs_bphy[3] = 0;
18640         }
18641
18642         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88, 16,
18643                                  txcal_coeffs_bphy);
18644
18645         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85, 16, loft_comp);
18646
18647         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93, 16, loft_comp);
18648
18649         if (NREV_LT(pi->pubpi.phy_rev, 2))
18650                 wlc_phy_tx_iq_war_nphy(pi);
18651
18652         if (CHSPEC_IS2G(pi->radio_chanspec)) {
18653                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18654                         txcal_radio_regs =
18655                                 pi->calibration_cache.txcal_radio_regs_2G;
18656                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18657
18658                         write_radio_reg(pi,
18659                                         RADIO_2056_TX_LOFT_FINE_I |
18660                                         RADIO_2056_TX0,
18661                                         pi->calibration_cache.
18662                                         txcal_radio_regs_2G[0]);
18663                         write_radio_reg(pi,
18664                                         RADIO_2056_TX_LOFT_FINE_Q |
18665                                         RADIO_2056_TX0,
18666                                         pi->calibration_cache.
18667                                         txcal_radio_regs_2G[1]);
18668                         write_radio_reg(pi,
18669                                         RADIO_2056_TX_LOFT_FINE_I |
18670                                         RADIO_2056_TX1,
18671                                         pi->calibration_cache.
18672                                         txcal_radio_regs_2G[2]);
18673                         write_radio_reg(pi,
18674                                         RADIO_2056_TX_LOFT_FINE_Q |
18675                                         RADIO_2056_TX1,
18676                                         pi->calibration_cache.
18677                                         txcal_radio_regs_2G[3]);
18678
18679                         write_radio_reg(pi,
18680                                         RADIO_2056_TX_LOFT_COARSE_I |
18681                                         RADIO_2056_TX0,
18682                                         pi->calibration_cache.
18683                                         txcal_radio_regs_2G[4]);
18684                         write_radio_reg(pi,
18685                                         RADIO_2056_TX_LOFT_COARSE_Q |
18686                                         RADIO_2056_TX0,
18687                                         pi->calibration_cache.
18688                                         txcal_radio_regs_2G[5]);
18689                         write_radio_reg(pi,
18690                                         RADIO_2056_TX_LOFT_COARSE_I |
18691                                         RADIO_2056_TX1,
18692                                         pi->calibration_cache.
18693                                         txcal_radio_regs_2G[6]);
18694                         write_radio_reg(pi,
18695                                         RADIO_2056_TX_LOFT_COARSE_Q |
18696                                         RADIO_2056_TX1,
18697                                         pi->calibration_cache.
18698                                         txcal_radio_regs_2G[7]);
18699                 } else {
18700                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18701                                         pi->calibration_cache.
18702                                         txcal_radio_regs_2G[0]);
18703                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18704                                         pi->calibration_cache.
18705                                         txcal_radio_regs_2G[1]);
18706                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18707                                         pi->calibration_cache.
18708                                         txcal_radio_regs_2G[2]);
18709                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18710                                         pi->calibration_cache.
18711                                         txcal_radio_regs_2G[3]);
18712                 }
18713
18714                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18715                                           &pi->calibration_cache.
18716                                           rxcal_coeffs_2G);
18717         } else {
18718                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18719                         txcal_radio_regs =
18720                                 pi->calibration_cache.txcal_radio_regs_5G;
18721                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18722
18723                         write_radio_reg(pi,
18724                                         RADIO_2056_TX_LOFT_FINE_I |
18725                                         RADIO_2056_TX0,
18726                                         pi->calibration_cache.
18727                                         txcal_radio_regs_5G[0]);
18728                         write_radio_reg(pi,
18729                                         RADIO_2056_TX_LOFT_FINE_Q |
18730                                         RADIO_2056_TX0,
18731                                         pi->calibration_cache.
18732                                         txcal_radio_regs_5G[1]);
18733                         write_radio_reg(pi,
18734                                         RADIO_2056_TX_LOFT_FINE_I |
18735                                         RADIO_2056_TX1,
18736                                         pi->calibration_cache.
18737                                         txcal_radio_regs_5G[2]);
18738                         write_radio_reg(pi,
18739                                         RADIO_2056_TX_LOFT_FINE_Q |
18740                                         RADIO_2056_TX1,
18741                                         pi->calibration_cache.
18742                                         txcal_radio_regs_5G[3]);
18743
18744                         write_radio_reg(pi,
18745                                         RADIO_2056_TX_LOFT_COARSE_I |
18746                                         RADIO_2056_TX0,
18747                                         pi->calibration_cache.
18748                                         txcal_radio_regs_5G[4]);
18749                         write_radio_reg(pi,
18750                                         RADIO_2056_TX_LOFT_COARSE_Q |
18751                                         RADIO_2056_TX0,
18752                                         pi->calibration_cache.
18753                                         txcal_radio_regs_5G[5]);
18754                         write_radio_reg(pi,
18755                                         RADIO_2056_TX_LOFT_COARSE_I |
18756                                         RADIO_2056_TX1,
18757                                         pi->calibration_cache.
18758                                         txcal_radio_regs_5G[6]);
18759                         write_radio_reg(pi,
18760                                         RADIO_2056_TX_LOFT_COARSE_Q |
18761                                         RADIO_2056_TX1,
18762                                         pi->calibration_cache.
18763                                         txcal_radio_regs_5G[7]);
18764                 } else {
18765                         write_radio_reg(pi, RADIO_2055_CORE1_TX_VOS_CNCL,
18766                                         pi->calibration_cache.
18767                                         txcal_radio_regs_5G[0]);
18768                         write_radio_reg(pi, RADIO_2055_CORE2_TX_VOS_CNCL,
18769                                         pi->calibration_cache.
18770                                         txcal_radio_regs_5G[1]);
18771                         write_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM,
18772                                         pi->calibration_cache.
18773                                         txcal_radio_regs_5G[2]);
18774                         write_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM,
18775                                         pi->calibration_cache.
18776                                         txcal_radio_regs_5G[3]);
18777                 }
18778
18779                 wlc_phy_rx_iq_coeffs_nphy(pi, 1,
18780                                           &pi->calibration_cache.
18781                                           rxcal_coeffs_5G);
18782         }
18783
18784         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
18785                 for (coreNum = 0; coreNum <= 1; coreNum++) {
18786
18787                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18788                                          LOFT_FINE_I,
18789                                          txcal_radio_regs[2 * coreNum]);
18790                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18791                                          LOFT_FINE_Q,
18792                                          txcal_radio_regs[2 * coreNum + 1]);
18793
18794                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18795                                          LOFT_COARSE_I,
18796                                          txcal_radio_regs[2 * coreNum + 4]);
18797                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, coreNum,
18798                                          LOFT_COARSE_Q,
18799                                          txcal_radio_regs[2 * coreNum + 5]);
18800                 }
18801         }
18802 }
18803
18804 static void wlc_phy_txpwrctrl_coeff_setup_nphy(struct brcms_phy *pi)
18805 {
18806         u32 idx;
18807         u16 iqloCalbuf[7];
18808         u32 iqcomp, locomp, curr_locomp;
18809         s8 locomp_i, locomp_q;
18810         s8 curr_locomp_i, curr_locomp_q;
18811         u32 tbl_id, tbl_len, tbl_offset;
18812         u32 regval[128];
18813
18814         if (pi->phyhang_avoid)
18815                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
18816
18817         wlc_phy_table_read_nphy(pi, 15, 7, 80, 16, iqloCalbuf);
18818
18819         tbl_len = 128;
18820         tbl_offset = 320;
18821         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18822              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18823                 iqcomp =
18824                         (tbl_id ==
18825                          26) ? (((u32) (iqloCalbuf[0] & 0x3ff)) << 10) |
18826                         (iqloCalbuf[1] & 0x3ff)
18827                         : (((u32) (iqloCalbuf[2] & 0x3ff)) << 10) |
18828                         (iqloCalbuf[3] & 0x3ff);
18829
18830                 for (idx = 0; idx < tbl_len; idx++)
18831                         regval[idx] = iqcomp;
18832                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18833                                          regval);
18834         }
18835
18836         tbl_offset = 448;
18837         for (tbl_id = NPHY_TBL_ID_CORE1TXPWRCTL;
18838              tbl_id <= NPHY_TBL_ID_CORE2TXPWRCTL; tbl_id++) {
18839
18840                 locomp =
18841                         (u32) ((tbl_id == 26) ? iqloCalbuf[5] : iqloCalbuf[6]);
18842                 locomp_i = (s8) ((locomp >> 8) & 0xff);
18843                 locomp_q = (s8) ((locomp) & 0xff);
18844                 for (idx = 0; idx < tbl_len; idx++) {
18845                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18846                                 curr_locomp_i = locomp_i;
18847                                 curr_locomp_q = locomp_q;
18848                         } else {
18849                                 curr_locomp_i = (s8) ((locomp_i *
18850                                                        nphy_tpc_loscale[idx] +
18851                                                        128) >> 8);
18852                                 curr_locomp_q =
18853                                         (s8) ((locomp_q *
18854                                                nphy_tpc_loscale[idx] +
18855                                                128) >> 8);
18856                         }
18857                         curr_locomp = (u32) ((curr_locomp_i & 0xff) << 8);
18858                         curr_locomp |= (u32) (curr_locomp_q & 0xff);
18859                         regval[idx] = curr_locomp;
18860                 }
18861                 wlc_phy_table_write_nphy(pi, tbl_id, tbl_len, tbl_offset, 32,
18862                                          regval);
18863         }
18864
18865         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
18866
18867                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX1, 0xFFFF);
18868                 wlapi_bmac_write_shm(pi->sh->physhim, M_CURR_IDX2, 0xFFFF);
18869         }
18870
18871         if (pi->phyhang_avoid)
18872                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
18873 }
18874
18875 static void wlc_phy_txlpfbw_nphy(struct brcms_phy *pi)
18876 {
18877         u8 tx_lpf_bw = 0;
18878
18879         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18880                 if (CHSPEC_IS40(pi->radio_chanspec))
18881                         tx_lpf_bw = 3;
18882                 else
18883                         tx_lpf_bw = 1;
18884
18885                 if (PHY_IPA(pi)) {
18886                         if (CHSPEC_IS40(pi->radio_chanspec))
18887                                 tx_lpf_bw = 5;
18888                         else
18889                                 tx_lpf_bw = 4;
18890                 }
18891
18892                 write_phy_reg(pi, 0xe8,
18893                               (tx_lpf_bw << 0) |
18894                               (tx_lpf_bw << 3) |
18895                               (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18896
18897                 if (PHY_IPA(pi)) {
18898
18899                         if (CHSPEC_IS40(pi->radio_chanspec))
18900                                 tx_lpf_bw = 4;
18901                         else
18902                                 tx_lpf_bw = 1;
18903
18904                         write_phy_reg(pi, 0xe9,
18905                                       (tx_lpf_bw << 0) |
18906                                       (tx_lpf_bw << 3) |
18907                                       (tx_lpf_bw << 6) | (tx_lpf_bw << 9));
18908                 }
18909         }
18910 }
18911
18912 static void
18913 wlc_phy_adjust_rx_analpfbw_nphy(struct brcms_phy *pi, u16 reduction_factr)
18914 {
18915         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LT(pi->pubpi.phy_rev, 7)) {
18916                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18917                     CHSPEC_IS40(pi->radio_chanspec)) {
18918                         if (!pi->nphy_anarxlpf_adjusted) {
18919                                 write_radio_reg(pi,
18920                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18921                                                  RADIO_2056_RX0),
18922                                                 ((pi->nphy_rccal_value +
18923                                                   reduction_factr) | 0x80));
18924
18925                                 pi->nphy_anarxlpf_adjusted = true;
18926                         }
18927                 } else {
18928                         if (pi->nphy_anarxlpf_adjusted) {
18929                                 write_radio_reg(pi,
18930                                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
18931                                                  RADIO_2056_RX0),
18932                                                 (pi->nphy_rccal_value | 0x80));
18933
18934                                 pi->nphy_anarxlpf_adjusted = false;
18935                         }
18936                 }
18937         }
18938 }
18939
18940 static void
18941 wlc_phy_adjust_min_noisevar_nphy(struct brcms_phy *pi, int ntones,
18942                                  int *tone_id_buf, u32 *noise_var_buf)
18943 {
18944         int i;
18945         u32 offset;
18946         int tone_id;
18947         int tbllen =
18948                 CHSPEC_IS40(pi->radio_chanspec) ?
18949                 NPHY_NOISEVAR_TBLLEN40 : NPHY_NOISEVAR_TBLLEN20;
18950
18951         if (pi->nphy_noisevars_adjusted) {
18952                 for (i = 0; i < pi->nphy_saved_noisevars.bufcount; i++) {
18953                         tone_id = pi->nphy_saved_noisevars.tone_id[i];
18954                         offset = (tone_id >= 0) ?
18955                                  ((tone_id *
18956                                    2) + 1) : (tbllen + (tone_id * 2) + 1);
18957                         wlc_phy_table_write_nphy(
18958                                 pi, NPHY_TBL_ID_NOISEVAR, 1,
18959                                 offset, 32,
18960                                 &pi->nphy_saved_noisevars.min_noise_vars[i]);
18961                 }
18962
18963                 pi->nphy_saved_noisevars.bufcount = 0;
18964                 pi->nphy_noisevars_adjusted = false;
18965         }
18966
18967         if ((noise_var_buf != NULL) && (tone_id_buf != NULL)) {
18968                 pi->nphy_saved_noisevars.bufcount = 0;
18969
18970                 for (i = 0; i < ntones; i++) {
18971                         tone_id = tone_id_buf[i];
18972                         offset = (tone_id >= 0) ?
18973                                  ((tone_id * 2) + 1) :
18974                                  (tbllen + (tone_id * 2) + 1);
18975                         pi->nphy_saved_noisevars.tone_id[i] = tone_id;
18976                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18977                                                 offset, 32,
18978                                                 &pi->nphy_saved_noisevars.
18979                                                 min_noise_vars[i]);
18980                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_NOISEVAR, 1,
18981                                                  offset, 32, &noise_var_buf[i]);
18982                         pi->nphy_saved_noisevars.bufcount++;
18983                 }
18984
18985                 pi->nphy_noisevars_adjusted = true;
18986         }
18987 }
18988
18989 static void wlc_phy_adjust_crsminpwr_nphy(struct brcms_phy *pi, u8 minpwr)
18990 {
18991         u16 regval;
18992
18993         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
18994                 if ((CHSPEC_CHANNEL(pi->radio_chanspec) == 11) &&
18995                     CHSPEC_IS40(pi->radio_chanspec)) {
18996                         if (!pi->nphy_crsminpwr_adjusted) {
18997                                 regval = read_phy_reg(pi, 0x27d);
18998                                 pi->nphy_crsminpwr[0] = regval & 0xff;
18999                                 regval &= 0xff00;
19000                                 regval |= (u16) minpwr;
19001                                 write_phy_reg(pi, 0x27d, regval);
19002
19003                                 regval = read_phy_reg(pi, 0x280);
19004                                 pi->nphy_crsminpwr[1] = regval & 0xff;
19005                                 regval &= 0xff00;
19006                                 regval |= (u16) minpwr;
19007                                 write_phy_reg(pi, 0x280, regval);
19008
19009                                 regval = read_phy_reg(pi, 0x283);
19010                                 pi->nphy_crsminpwr[2] = regval & 0xff;
19011                                 regval &= 0xff00;
19012                                 regval |= (u16) minpwr;
19013                                 write_phy_reg(pi, 0x283, regval);
19014
19015                                 pi->nphy_crsminpwr_adjusted = true;
19016                         }
19017                 } else {
19018                         if (pi->nphy_crsminpwr_adjusted) {
19019                                 regval = read_phy_reg(pi, 0x27d);
19020                                 regval &= 0xff00;
19021                                 regval |= pi->nphy_crsminpwr[0];
19022                                 write_phy_reg(pi, 0x27d, regval);
19023
19024                                 regval = read_phy_reg(pi, 0x280);
19025                                 regval &= 0xff00;
19026                                 regval |= pi->nphy_crsminpwr[1];
19027                                 write_phy_reg(pi, 0x280, regval);
19028
19029                                 regval = read_phy_reg(pi, 0x283);
19030                                 regval &= 0xff00;
19031                                 regval |= pi->nphy_crsminpwr[2];
19032                                 write_phy_reg(pi, 0x283, regval);
19033
19034                                 pi->nphy_crsminpwr_adjusted = false;
19035                         }
19036                 }
19037         }
19038 }
19039
19040 static void wlc_phy_spurwar_nphy(struct brcms_phy *pi)
19041 {
19042         u16 cur_channel = 0;
19043         int nphy_adj_tone_id_buf[] = { 57, 58 };
19044         u32 nphy_adj_noise_var_buf[] = { 0x3ff, 0x3ff };
19045         bool isAdjustNoiseVar = false;
19046         uint numTonesAdjust = 0;
19047         u32 tempval = 0;
19048
19049         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19050                 if (pi->phyhang_avoid)
19051                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
19052
19053                 cur_channel = CHSPEC_CHANNEL(pi->radio_chanspec);
19054
19055                 if (pi->nphy_gband_spurwar_en) {
19056
19057                         wlc_phy_adjust_rx_analpfbw_nphy(
19058                                 pi,
19059                                 NPHY_ANARXLPFBW_REDUCTIONFACT);
19060
19061                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
19062                                 if ((cur_channel == 11)
19063                                     && CHSPEC_IS40(pi->radio_chanspec))
19064                                         wlc_phy_adjust_min_noisevar_nphy(
19065                                                 pi, 2,
19066                                                 nphy_adj_tone_id_buf,
19067                                                 nphy_adj_noise_var_buf);
19068                                 else
19069                                         wlc_phy_adjust_min_noisevar_nphy(pi, 0,
19070                                                                          NULL,
19071                                                                          NULL);
19072                         }
19073
19074                         wlc_phy_adjust_crsminpwr_nphy(pi,
19075                                                      NPHY_ADJUSTED_MINCRSPOWER);
19076                 }
19077
19078                 if ((pi->nphy_gband_spurwar2_en)
19079                     && CHSPEC_IS2G(pi->radio_chanspec)) {
19080
19081                         if (CHSPEC_IS40(pi->radio_chanspec)) {
19082                                 switch (cur_channel) {
19083                                 case 3:
19084                                         nphy_adj_tone_id_buf[0] = 57;
19085                                         nphy_adj_tone_id_buf[1] = 58;
19086                                         nphy_adj_noise_var_buf[0] = 0x22f;
19087                                         nphy_adj_noise_var_buf[1] = 0x25f;
19088                                         isAdjustNoiseVar = true;
19089                                         break;
19090                                 case 4:
19091                                         nphy_adj_tone_id_buf[0] = 41;
19092                                         nphy_adj_tone_id_buf[1] = 42;
19093                                         nphy_adj_noise_var_buf[0] = 0x22f;
19094                                         nphy_adj_noise_var_buf[1] = 0x25f;
19095                                         isAdjustNoiseVar = true;
19096                                         break;
19097                                 case 5:
19098                                         nphy_adj_tone_id_buf[0] = 25;
19099                                         nphy_adj_tone_id_buf[1] = 26;
19100                                         nphy_adj_noise_var_buf[0] = 0x24f;
19101                                         nphy_adj_noise_var_buf[1] = 0x25f;
19102                                         isAdjustNoiseVar = true;
19103                                         break;
19104                                 case 6:
19105                                         nphy_adj_tone_id_buf[0] = 9;
19106                                         nphy_adj_tone_id_buf[1] = 10;
19107                                         nphy_adj_noise_var_buf[0] = 0x22f;
19108                                         nphy_adj_noise_var_buf[1] = 0x24f;
19109                                         isAdjustNoiseVar = true;
19110                                         break;
19111                                 case 7:
19112                                         nphy_adj_tone_id_buf[0] = 121;
19113                                         nphy_adj_tone_id_buf[1] = 122;
19114                                         nphy_adj_noise_var_buf[0] = 0x18f;
19115                                         nphy_adj_noise_var_buf[1] = 0x24f;
19116                                         isAdjustNoiseVar = true;
19117                                         break;
19118                                 case 8:
19119                                         nphy_adj_tone_id_buf[0] = 105;
19120                                         nphy_adj_tone_id_buf[1] = 106;
19121                                         nphy_adj_noise_var_buf[0] = 0x22f;
19122                                         nphy_adj_noise_var_buf[1] = 0x25f;
19123                                         isAdjustNoiseVar = true;
19124                                         break;
19125                                 case 9:
19126                                         nphy_adj_tone_id_buf[0] = 89;
19127                                         nphy_adj_tone_id_buf[1] = 90;
19128                                         nphy_adj_noise_var_buf[0] = 0x22f;
19129                                         nphy_adj_noise_var_buf[1] = 0x24f;
19130                                         isAdjustNoiseVar = true;
19131                                         break;
19132                                 case 10:
19133                                         nphy_adj_tone_id_buf[0] = 73;
19134                                         nphy_adj_tone_id_buf[1] = 74;
19135                                         nphy_adj_noise_var_buf[0] = 0x22f;
19136                                         nphy_adj_noise_var_buf[1] = 0x24f;
19137                                         isAdjustNoiseVar = true;
19138                                         break;
19139                                 default:
19140                                         isAdjustNoiseVar = false;
19141                                         break;
19142                                 }
19143                         }
19144
19145                         if (isAdjustNoiseVar) {
19146                                 numTonesAdjust = ARRAY_SIZE(nphy_adj_tone_id_buf);
19147
19148                                 wlc_phy_adjust_min_noisevar_nphy(
19149                                         pi,
19150                                         numTonesAdjust,
19151                                         nphy_adj_tone_id_buf,
19152                                         nphy_adj_noise_var_buf);
19153
19154                                 tempval = 0;
19155
19156                         } else {
19157                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19158                                                                  NULL);
19159                         }
19160                 }
19161
19162                 if ((pi->nphy_aband_spurwar_en) &&
19163                     (CHSPEC_IS5G(pi->radio_chanspec))) {
19164                         switch (cur_channel) {
19165                         case 54:
19166                                 nphy_adj_tone_id_buf[0] = 32;
19167                                 nphy_adj_noise_var_buf[0] = 0x25f;
19168                                 break;
19169                         case 38:
19170                         case 102:
19171                         case 118:
19172                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) &&
19173                                     (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
19174                                         nphy_adj_tone_id_buf[0] = 32;
19175                                         nphy_adj_noise_var_buf[0] = 0x21f;
19176                                 } else {
19177                                         nphy_adj_tone_id_buf[0] = 0;
19178                                         nphy_adj_noise_var_buf[0] = 0x0;
19179                                 }
19180                                 break;
19181                         case 134:
19182                                 nphy_adj_tone_id_buf[0] = 32;
19183                                 nphy_adj_noise_var_buf[0] = 0x21f;
19184                                 break;
19185                         case 151:
19186                                 nphy_adj_tone_id_buf[0] = 16;
19187                                 nphy_adj_noise_var_buf[0] = 0x23f;
19188                                 break;
19189                         case 153:
19190                         case 161:
19191                                 nphy_adj_tone_id_buf[0] = 48;
19192                                 nphy_adj_noise_var_buf[0] = 0x23f;
19193                                 break;
19194                         default:
19195                                 nphy_adj_tone_id_buf[0] = 0;
19196                                 nphy_adj_noise_var_buf[0] = 0x0;
19197                                 break;
19198                         }
19199
19200                         if (nphy_adj_tone_id_buf[0]
19201                             && nphy_adj_noise_var_buf[0])
19202                                 wlc_phy_adjust_min_noisevar_nphy(
19203                                         pi, 1,
19204                                         nphy_adj_tone_id_buf,
19205                                         nphy_adj_noise_var_buf);
19206                         else
19207                                 wlc_phy_adjust_min_noisevar_nphy(pi, 0, NULL,
19208                                                                  NULL);
19209                 }
19210
19211                 if (pi->phyhang_avoid)
19212                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
19213         }
19214 }
19215
19216 void wlc_phy_init_nphy(struct brcms_phy *pi)
19217 {
19218         u16 val;
19219         u16 clip1_ths[2];
19220         struct nphy_txgains target_gain;
19221         u8 tx_pwr_ctrl_state;
19222         bool do_nphy_cal = false;
19223         uint core;
19224         u32 d11_clk_ctl_st;
19225         bool do_rssi_cal = false;
19226
19227         core = 0;
19228
19229         if (!(pi->measure_hold & PHY_HOLD_FOR_SCAN))
19230                 pi->measure_hold |= PHY_HOLD_FOR_NOT_ASSOC;
19231
19232         if ((ISNPHY(pi)) && (NREV_GE(pi->pubpi.phy_rev, 5)) &&
19233             ((pi->sh->chippkg == BCMA_PKG_ID_BCM4717) ||
19234              (pi->sh->chippkg == BCMA_PKG_ID_BCM4718))) {
19235                 if ((pi->sh->boardflags & BFL_EXTLNA) &&
19236                     (CHSPEC_IS2G(pi->radio_chanspec)))
19237                         bcma_cc_set32(&pi->d11core->bus->drv_cc,
19238                                       BCMA_CC_CHIPCTL, 0x40);
19239         }
19240
19241         if ((!PHY_IPA(pi)) && (pi->sh->chip == BCMA_CHIP_ID_BCM5357))
19242                 bcma_chipco_chipctl_maskset(&pi->d11core->bus->drv_cc, 1,
19243                                             ~CCTRL5357_EXTPA, CCTRL5357_EXTPA);
19244
19245         if ((pi->nphy_gband_spurwar2_en) && CHSPEC_IS2G(pi->radio_chanspec) &&
19246             CHSPEC_IS40(pi->radio_chanspec)) {
19247
19248                 d11_clk_ctl_st = bcma_read32(pi->d11core,
19249                                              D11REGOFFS(clk_ctl_st));
19250                 bcma_mask32(pi->d11core, D11REGOFFS(clk_ctl_st),
19251                             ~(CCS_FORCEHT | CCS_HTAREQ));
19252
19253                 bcma_write32(pi->d11core, D11REGOFFS(clk_ctl_st),
19254                              d11_clk_ctl_st);
19255         }
19256
19257         pi->use_int_tx_iqlo_cal_nphy =
19258                 (PHY_IPA(pi) ||
19259                  (NREV_GE(pi->pubpi.phy_rev, 7) ||
19260                   (NREV_GE(pi->pubpi.phy_rev, 5)
19261                    && pi->sh->boardflags2 & BFL2_INTERNDET_TXIQCAL)));
19262
19263         pi->internal_tx_iqlo_cal_tapoff_intpa_nphy = false;
19264
19265         pi->nphy_deaf_count = 0;
19266
19267         wlc_phy_tbl_init_nphy(pi);
19268
19269         pi->nphy_crsminpwr_adjusted = false;
19270         pi->nphy_noisevars_adjusted = false;
19271
19272         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19273                 write_phy_reg(pi, 0xe7, 0);
19274                 write_phy_reg(pi, 0xec, 0);
19275                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19276                         write_phy_reg(pi, 0x342, 0);
19277                         write_phy_reg(pi, 0x343, 0);
19278                         write_phy_reg(pi, 0x346, 0);
19279                         write_phy_reg(pi, 0x347, 0);
19280                 }
19281                 write_phy_reg(pi, 0xe5, 0);
19282                 write_phy_reg(pi, 0xe6, 0);
19283         } else {
19284                 write_phy_reg(pi, 0xec, 0);
19285         }
19286
19287         write_phy_reg(pi, 0x91, 0);
19288         write_phy_reg(pi, 0x92, 0);
19289         if (NREV_LT(pi->pubpi.phy_rev, 6)) {
19290                 write_phy_reg(pi, 0x93, 0);
19291                 write_phy_reg(pi, 0x94, 0);
19292         }
19293
19294         and_phy_reg(pi, 0xa1, ~3);
19295
19296         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19297                 write_phy_reg(pi, 0x8f, 0);
19298                 write_phy_reg(pi, 0xa5, 0);
19299         } else {
19300                 write_phy_reg(pi, 0xa5, 0);
19301         }
19302
19303         if (NREV_IS(pi->pubpi.phy_rev, 2))
19304                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
19305         else if (NREV_LT(pi->pubpi.phy_rev, 2))
19306                 mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
19307
19308         write_phy_reg(pi, 0x203, 32);
19309         write_phy_reg(pi, 0x201, 32);
19310
19311         if (pi->sh->boardflags2 & BFL2_SKWRKFEM_BRD)
19312                 write_phy_reg(pi, 0x20d, 160);
19313         else
19314                 write_phy_reg(pi, 0x20d, 184);
19315
19316         write_phy_reg(pi, 0x13a, 200);
19317
19318         write_phy_reg(pi, 0x70, 80);
19319
19320         write_phy_reg(pi, 0x1ff, 48);
19321
19322         if (NREV_LT(pi->pubpi.phy_rev, 8))
19323                 wlc_phy_update_mimoconfig_nphy(pi, pi->n_preamble_override);
19324
19325         wlc_phy_stf_chain_upd_nphy(pi);
19326
19327         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
19328                 write_phy_reg(pi, 0x180, 0xaa8);
19329                 write_phy_reg(pi, 0x181, 0x9a4);
19330         }
19331
19332         if (PHY_IPA(pi)) {
19333                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
19334
19335                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
19336                                     0x29b, (0x1 << 0), (1) << 0);
19337
19338                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x298 :
19339                                     0x29c, (0x1ff << 7),
19340                                     (pi->nphy_papd_epsilon_offset[core]) << 7);
19341
19342                 }
19343
19344                 wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
19345         } else if (NREV_GE(pi->pubpi.phy_rev, 5)) {
19346                 wlc_phy_extpa_set_tx_digi_filts_nphy(pi);
19347         }
19348
19349         wlc_phy_workarounds_nphy(pi);
19350
19351         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19352
19353         val = read_phy_reg(pi, 0x01);
19354         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19355         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19356         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19357
19358         wlapi_bmac_macphyclk_set(pi->sh->physhim, ON);
19359
19360         wlc_phy_pa_override_nphy(pi, OFF);
19361         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
19362         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19363         wlc_phy_pa_override_nphy(pi, ON);
19364
19365         wlc_phy_classifier_nphy(pi, 0, 0);
19366         wlc_phy_clip_det_nphy(pi, 0, clip1_ths);
19367
19368         if (CHSPEC_IS2G(pi->radio_chanspec))
19369                 wlc_phy_bphy_init_nphy(pi);
19370
19371         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
19372         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
19373
19374         wlc_phy_txpwr_fixpower_nphy(pi);
19375
19376         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
19377
19378         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
19379
19380         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19381                 u32 *tx_pwrctrl_tbl = NULL;
19382                 u16 idx;
19383                 s16 pga_gn = 0;
19384                 s16 pad_gn = 0;
19385                 s32 rfpwr_offset;
19386
19387                 if (PHY_IPA(pi)) {
19388                         tx_pwrctrl_tbl = wlc_phy_get_ipa_gaintbl_nphy(pi);
19389                 } else {
19390                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
19391                                 if (NREV_IS(pi->pubpi.phy_rev, 3))
19392                                         tx_pwrctrl_tbl =
19393                                                 nphy_tpc_5GHz_txgain_rev3;
19394                                 else if (NREV_IS(pi->pubpi.phy_rev, 4))
19395                                         tx_pwrctrl_tbl =
19396                                                 (pi->srom_fem5g.extpagain ==
19397                                                  3) ?
19398                                                 nphy_tpc_5GHz_txgain_HiPwrEPA :
19399                                                 nphy_tpc_5GHz_txgain_rev4;
19400                                 else
19401                                         tx_pwrctrl_tbl =
19402                                                 nphy_tpc_5GHz_txgain_rev5;
19403                         } else {
19404                                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19405                                         if (pi->pubpi.radiorev == 5)
19406                                                 tx_pwrctrl_tbl =
19407                                                    nphy_tpc_txgain_epa_2057rev5;
19408                                         else if (pi->pubpi.radiorev == 3)
19409                                                 tx_pwrctrl_tbl =
19410                                                    nphy_tpc_txgain_epa_2057rev3;
19411                                 } else {
19412                                         if (NREV_GE(pi->pubpi.phy_rev, 5) &&
19413                                             (pi->srom_fem2g.extpagain == 3))
19414                                                 tx_pwrctrl_tbl =
19415                                                        nphy_tpc_txgain_HiPwrEPA;
19416                                         else
19417                                                 tx_pwrctrl_tbl =
19418                                                         nphy_tpc_txgain_rev3;
19419                                 }
19420                         }
19421                 }
19422
19423                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19424                                          192, 32, tx_pwrctrl_tbl);
19425                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19426                                          192, 32, tx_pwrctrl_tbl);
19427
19428                 pi->nphy_gmval = (u16) ((*tx_pwrctrl_tbl >> 16) & 0x7000);
19429
19430                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19431
19432                         for (idx = 0; idx < 128; idx++) {
19433                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19434                                 pad_gn = (tx_pwrctrl_tbl[idx] >> 19) & 0x1f;
19435                                 rfpwr_offset = get_rf_pwr_offset(pi, pga_gn,
19436                                                                  pad_gn);
19437                                 wlc_phy_table_write_nphy(
19438                                         pi,
19439                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19440                                         1, 576 + idx, 32,
19441                                         &rfpwr_offset);
19442                                 wlc_phy_table_write_nphy(
19443                                         pi,
19444                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19445                                         1, 576 + idx, 32,
19446                                         &rfpwr_offset);
19447                         }
19448                 } else {
19449
19450                         for (idx = 0; idx < 128; idx++) {
19451                                 pga_gn = (tx_pwrctrl_tbl[idx] >> 24) & 0xf;
19452                                 if (CHSPEC_IS2G(pi->radio_chanspec))
19453                                         rfpwr_offset = (s16)
19454                                                  nphy_papd_pga_gain_delta_ipa_2g
19455                                                                        [pga_gn];
19456                                 else
19457                                         rfpwr_offset = (s16)
19458                                                  nphy_papd_pga_gain_delta_ipa_5g
19459                                                                        [pga_gn];
19460
19461                                 wlc_phy_table_write_nphy(
19462                                         pi,
19463                                         NPHY_TBL_ID_CORE1TXPWRCTL,
19464                                         1, 576 + idx, 32,
19465                                         &rfpwr_offset);
19466                                 wlc_phy_table_write_nphy(
19467                                         pi,
19468                                         NPHY_TBL_ID_CORE2TXPWRCTL,
19469                                         1, 576 + idx, 32,
19470                                         &rfpwr_offset);
19471                         }
19472
19473                 }
19474         } else {
19475
19476                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 128,
19477                                          192, 32, nphy_tpc_txgain);
19478                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 128,
19479                                          192, 32, nphy_tpc_txgain);
19480         }
19481
19482         if (pi->sh->phyrxchain != 0x3)
19483                 wlc_phy_rxcore_setstate_nphy((struct brcms_phy_pub *) pi,
19484                                              pi->sh->phyrxchain);
19485
19486         if (PHY_PERICAL_MPHASE_PENDING(pi))
19487                 wlc_phy_cal_perical_mphase_restart(pi);
19488
19489         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19490                 do_rssi_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19491                               (pi->nphy_rssical_chanspec_2G == 0) :
19492                               (pi->nphy_rssical_chanspec_5G == 0);
19493
19494                 if (do_rssi_cal)
19495                         wlc_phy_rssi_cal_nphy(pi);
19496                 else
19497                         wlc_phy_restore_rssical_nphy(pi);
19498         } else {
19499                 wlc_phy_rssi_cal_nphy(pi);
19500         }
19501
19502         if (!SCAN_RM_IN_PROGRESS(pi))
19503                 do_nphy_cal = (CHSPEC_IS2G(pi->radio_chanspec)) ?
19504                               (pi->nphy_iqcal_chanspec_2G == 0) :
19505                               (pi->nphy_iqcal_chanspec_5G == 0);
19506
19507         if (!pi->do_initcal)
19508                 do_nphy_cal = false;
19509
19510         if (do_nphy_cal) {
19511
19512                 target_gain = wlc_phy_get_tx_gain_nphy(pi);
19513
19514                 if (pi->antsel_type == ANTSEL_2x3)
19515                         wlc_phy_antsel_init((struct brcms_phy_pub *) pi,
19516                                             true);
19517
19518                 if (pi->nphy_perical != PHY_PERICAL_MPHASE) {
19519                         wlc_phy_rssi_cal_nphy(pi);
19520
19521                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19522                                 pi->nphy_cal_orig_pwr_idx[0] =
19523                                         pi->nphy_txpwrindex[PHY_CORE_0]
19524                                         .
19525                                         index_internal;
19526                                 pi->nphy_cal_orig_pwr_idx[1] =
19527                                         pi->nphy_txpwrindex[PHY_CORE_1]
19528                                         .
19529                                         index_internal;
19530
19531                                 wlc_phy_precal_txgain_nphy(pi);
19532                                 target_gain =
19533                                         wlc_phy_get_tx_gain_nphy(pi);
19534                         }
19535
19536                         if (wlc_phy_cal_txiqlo_nphy
19537                                     (pi, target_gain, true,
19538                                     false) == 0) {
19539                                 if (wlc_phy_cal_rxiq_nphy
19540                                             (pi, target_gain, 2,
19541                                             false) == 0)
19542                                         wlc_phy_savecal_nphy(pi);
19543
19544                         }
19545                 } else if (pi->mphase_cal_phase_id ==
19546                            MPHASE_CAL_STATE_IDLE) {
19547                         wlc_phy_cal_perical((struct brcms_phy_pub *) pi,
19548                                             PHY_PERICAL_PHYINIT);
19549                 }
19550         } else {
19551                 wlc_phy_restorecal_nphy(pi);
19552         }
19553
19554         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
19555
19556         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
19557
19558         wlc_phy_nphy_tkip_rifs_war(pi, pi->sh->_rifs_phy);
19559
19560         if (NREV_GE(pi->pubpi.phy_rev, 3) && NREV_LE(pi->pubpi.phy_rev, 6))
19561
19562                 write_phy_reg(pi, 0x70, 50);
19563
19564         wlc_phy_txlpfbw_nphy(pi);
19565
19566         wlc_phy_spurwar_nphy(pi);
19567
19568 }
19569
19570 static void wlc_phy_resetcca_nphy(struct brcms_phy *pi)
19571 {
19572         u16 val;
19573
19574         wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
19575
19576         val = read_phy_reg(pi, 0x01);
19577         write_phy_reg(pi, 0x01, val | BBCFG_RESETCCA);
19578         udelay(1);
19579         write_phy_reg(pi, 0x01, val & (~BBCFG_RESETCCA));
19580
19581         wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
19582
19583         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19584 }
19585
19586 void wlc_phy_pa_override_nphy(struct brcms_phy *pi, bool en)
19587 {
19588         u16 rfctrlintc_override_val;
19589
19590         if (!en) {
19591
19592                 pi->rfctrlIntc1_save = read_phy_reg(pi, 0x91);
19593                 pi->rfctrlIntc2_save = read_phy_reg(pi, 0x92);
19594
19595                 if (NREV_GE(pi->pubpi.phy_rev, 7))
19596                         rfctrlintc_override_val = 0x1480;
19597                 else if (NREV_GE(pi->pubpi.phy_rev, 3))
19598                         rfctrlintc_override_val =
19599                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x600 : 0x480;
19600                 else
19601                         rfctrlintc_override_val =
19602                                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
19603
19604                 write_phy_reg(pi, 0x91, rfctrlintc_override_val);
19605                 write_phy_reg(pi, 0x92, rfctrlintc_override_val);
19606         } else {
19607                 write_phy_reg(pi, 0x91, pi->rfctrlIntc1_save);
19608                 write_phy_reg(pi, 0x92, pi->rfctrlIntc2_save);
19609         }
19610
19611 }
19612
19613 void wlc_phy_stf_chain_upd_nphy(struct brcms_phy *pi)
19614 {
19615
19616         u16 txrx_chain =
19617                 (NPHY_RfseqCoreActv_TxRxChain0 | NPHY_RfseqCoreActv_TxRxChain1);
19618         bool CoreActv_override = false;
19619
19620         if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN0) {
19621                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain0;
19622                 CoreActv_override = true;
19623
19624                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19625                         and_phy_reg(pi, 0xa0, ~0x20);
19626         } else if (pi->nphy_txrx_chain == BRCMS_N_TXRX_CHAIN1) {
19627                 txrx_chain = NPHY_RfseqCoreActv_TxRxChain1;
19628                 CoreActv_override = true;
19629
19630                 if (NREV_LE(pi->pubpi.phy_rev, 2))
19631                         or_phy_reg(pi, 0xa0, 0x20);
19632         }
19633
19634         mod_phy_reg(pi, 0xa2, ((0xf << 0) | (0xf << 4)), txrx_chain);
19635
19636         if (CoreActv_override) {
19637                 pi->nphy_perical = PHY_PERICAL_DISABLE;
19638                 or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
19639         } else {
19640                 pi->nphy_perical = PHY_PERICAL_MPHASE;
19641                 and_phy_reg(pi, 0xa1, ~NPHY_RfseqMode_CoreActv_override);
19642         }
19643 }
19644
19645 void wlc_phy_rxcore_setstate_nphy(struct brcms_phy_pub *pih, u8 rxcore_bitmask)
19646 {
19647         u16 regval;
19648         u16 tbl_buf[16];
19649         uint i;
19650         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19651         u16 tbl_opcode;
19652         bool suspend;
19653
19654         pi->sh->phyrxchain = rxcore_bitmask;
19655
19656         if (!pi->sh->clk)
19657                 return;
19658
19659         suspend = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
19660                          MCTL_EN_MAC));
19661         if (!suspend)
19662                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
19663
19664         if (pi->phyhang_avoid)
19665                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
19666
19667         regval = read_phy_reg(pi, 0xa2);
19668         regval &= ~(0xf << 4);
19669         regval |= ((u16) (rxcore_bitmask & 0x3)) << 4;
19670         write_phy_reg(pi, 0xa2, regval);
19671
19672         if ((rxcore_bitmask & 0x3) != 0x3) {
19673
19674                 write_phy_reg(pi, 0x20e, 1);
19675
19676                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19677                         if (pi->rx2tx_biasentry == -1) {
19678                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ,
19679                                                         ARRAY_SIZE(tbl_buf), 80,
19680                                                         16, tbl_buf);
19681
19682                                 for (i = 0; i < ARRAY_SIZE(tbl_buf); i++) {
19683                                         if (tbl_buf[i] ==
19684                                             NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS) {
19685                                                 pi->rx2tx_biasentry = (u8) i;
19686                                                 tbl_opcode =
19687                                                         NPHY_REV3_RFSEQ_CMD_NOP;
19688                                                 wlc_phy_table_write_nphy(
19689                                                         pi,
19690                                                         NPHY_TBL_ID_RFSEQ,
19691                                                         1, i,
19692                                                         16,
19693                                                         &tbl_opcode);
19694                                                 break;
19695                                         } else if (tbl_buf[i] ==
19696                                                    NPHY_REV3_RFSEQ_CMD_END)
19697                                                 break;
19698                                 }
19699                         }
19700                 }
19701         } else {
19702
19703                 write_phy_reg(pi, 0x20e, 30);
19704
19705                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
19706                         if (pi->rx2tx_biasentry != -1) {
19707                                 tbl_opcode = NPHY_REV3_RFSEQ_CMD_CLR_RXRX_BIAS;
19708                                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
19709                                                          1, pi->rx2tx_biasentry,
19710                                                          16, &tbl_opcode);
19711                                 pi->rx2tx_biasentry = -1;
19712                         }
19713                 }
19714         }
19715
19716         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
19717
19718         if (pi->phyhang_avoid)
19719                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
19720
19721         if (!suspend)
19722                 wlapi_enable_mac(pi->sh->physhim);
19723 }
19724
19725 u8 wlc_phy_rxcore_getstate_nphy(struct brcms_phy_pub *pih)
19726 {
19727         u16 regval, rxen_bits;
19728         struct brcms_phy *pi = container_of(pih, struct brcms_phy, pubpi_ro);
19729
19730         regval = read_phy_reg(pi, 0xa2);
19731         rxen_bits = (regval >> 4) & 0xf;
19732
19733         return (u8) rxen_bits;
19734 }
19735
19736 bool wlc_phy_n_txpower_ipa_ison(struct brcms_phy *pi)
19737 {
19738         return PHY_IPA(pi);
19739 }
19740
19741 void wlc_phy_cal_init_nphy(struct brcms_phy *pi)
19742 {
19743 }
19744
19745 static void wlc_phy_radio_preinit_205x(struct brcms_phy *pi)
19746 {
19747
19748         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
19749         and_phy_reg(pi, 0x78, RFCC_OE_POR_FORCE);
19750
19751         or_phy_reg(pi, 0x78, ~RFCC_OE_POR_FORCE);
19752         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU);
19753
19754 }
19755
19756 static void wlc_phy_radio_init_2057(struct brcms_phy *pi)
19757 {
19758         struct radio_20xx_regs *regs_2057_ptr = NULL;
19759
19760         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
19761                 regs_2057_ptr = regs_2057_rev4;
19762         } else if (NREV_IS(pi->pubpi.phy_rev, 8)
19763                    || NREV_IS(pi->pubpi.phy_rev, 9)) {
19764                 switch (pi->pubpi.radiorev) {
19765                 case 5:
19766
19767                         if (NREV_IS(pi->pubpi.phy_rev, 8))
19768                                 regs_2057_ptr = regs_2057_rev5;
19769                         else if (NREV_IS(pi->pubpi.phy_rev, 9))
19770                                 regs_2057_ptr = regs_2057_rev5v1;
19771                         break;
19772
19773                 case 7:
19774
19775                         regs_2057_ptr = regs_2057_rev7;
19776                         break;
19777
19778                 case 8:
19779
19780                         regs_2057_ptr = regs_2057_rev8;
19781                         break;
19782
19783                 default:
19784                         break;
19785                 }
19786         }
19787
19788         wlc_phy_init_radio_regs_allbands(pi, regs_2057_ptr);
19789 }
19790
19791 static u16 wlc_phy_radio205x_rcal(struct brcms_phy *pi)
19792 {
19793         u16 rcal_reg = 0;
19794         int i;
19795
19796         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
19797
19798                 if (pi->pubpi.radiorev == 5) {
19799
19800                         and_phy_reg(pi, 0x342, ~(0x1 << 1));
19801
19802                         udelay(10);
19803
19804                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x1);
19805                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19806                                       0x1);
19807                 }
19808                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x1);
19809
19810                 udelay(10);
19811
19812                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x3, 0x3);
19813
19814                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19815                         rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS);
19816                         if (rcal_reg & 0x1)
19817                                 break;
19818
19819                         udelay(100);
19820                 }
19821
19822                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19823                          "HW error: radio calib2"))
19824                         return 0;
19825
19826                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x2, 0x0);
19827
19828                 rcal_reg = read_radio_reg(pi, RADIO_2057_RCAL_STATUS) & 0x3e;
19829
19830                 mod_radio_reg(pi, RADIO_2057_RCAL_CONFIG, 0x1, 0x0);
19831                 if (pi->pubpi.radiorev == 5) {
19832
19833                         mod_radio_reg(pi, RADIO_2057_IQTEST_SEL_PU, 0x1, 0x0);
19834                         mod_radio_reg(pi, RADIO_2057v7_IQTEST_SEL_PU2, 0x2,
19835                                       0x0);
19836                 }
19837
19838                 if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
19839
19840                         mod_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x3c,
19841                                       rcal_reg);
19842                         mod_radio_reg(pi, RADIO_2057_BANDGAP_RCAL_TRIM, 0xf0,
19843                                       rcal_reg << 2);
19844                 }
19845
19846         } else if (NREV_IS(pi->pubpi.phy_rev, 3)) {
19847                 u16 savereg;
19848
19849                 savereg =
19850                         read_radio_reg(
19851                                 pi,
19852                                 RADIO_2056_SYN_PLL_MAST2 |
19853                                 RADIO_2056_SYN);
19854                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19855                                 savereg | 0x7);
19856                 udelay(10);
19857
19858                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19859                                 0x1);
19860                 udelay(10);
19861
19862                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19863                                 0x9);
19864
19865                 for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19866                         rcal_reg = read_radio_reg(
19867                                 pi,
19868                                 RADIO_2056_SYN_RCAL_CODE_OUT |
19869                                 RADIO_2056_SYN);
19870                         if (rcal_reg & 0x80)
19871                                 break;
19872
19873                         udelay(100);
19874                 }
19875
19876                 if (WARN(i == MAX_205x_RCAL_WAITLOOPS,
19877                          "HW error: radio calib3"))
19878                         return 0;
19879
19880                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19881                                 0x1);
19882
19883                 rcal_reg =
19884                         read_radio_reg(pi,
19885                                        RADIO_2056_SYN_RCAL_CODE_OUT |
19886                                        RADIO_2056_SYN);
19887
19888                 write_radio_reg(pi, RADIO_2056_SYN_RCAL_MASTER | RADIO_2056_SYN,
19889                                 0x0);
19890
19891                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2 | RADIO_2056_SYN,
19892                                 savereg);
19893
19894                 return rcal_reg & 0x1f;
19895         }
19896         return rcal_reg & 0x3e;
19897 }
19898
19899 static u16 wlc_phy_radio2057_rccal(struct brcms_phy *pi)
19900 {
19901         u16 rccal_valid;
19902         int i;
19903         bool chip43226_6362A0;
19904
19905         chip43226_6362A0 = ((pi->pubpi.radiorev == 3)
19906                             || (pi->pubpi.radiorev == 4)
19907                             || (pi->pubpi.radiorev == 6));
19908
19909         rccal_valid = 0;
19910         if (chip43226_6362A0) {
19911                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x61);
19912                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xc0);
19913         } else {
19914                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x61);
19915
19916                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xe9);
19917         }
19918         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19919         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19920
19921         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19922                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19923                 if (rccal_valid & 0x2)
19924                         break;
19925
19926                 udelay(500);
19927         }
19928
19929         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19930
19931         rccal_valid = 0;
19932         if (chip43226_6362A0) {
19933                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x69);
19934                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19935         } else {
19936                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x69);
19937
19938                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xd5);
19939         }
19940         write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19941         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19942
19943         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19944                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19945                 if (rccal_valid & 0x2)
19946                         break;
19947
19948                 udelay(500);
19949         }
19950
19951         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19952
19953         rccal_valid = 0;
19954         if (chip43226_6362A0) {
19955                 write_radio_reg(pi, RADIO_2057_RCCAL_MASTER, 0x73);
19956
19957                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x28);
19958                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0xb0);
19959         } else {
19960                 write_radio_reg(pi, RADIO_2057v7_RCCAL_MASTER, 0x73);
19961                 write_radio_reg(pi, RADIO_2057_RCCAL_X1, 0x6e);
19962                 write_radio_reg(pi, RADIO_2057_RCCAL_TRC0, 0x99);
19963         }
19964         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x55);
19965
19966         for (i = 0; i < MAX_205x_RCAL_WAITLOOPS; i++) {
19967                 rccal_valid = read_radio_reg(pi, RADIO_2057_RCCAL_DONE_OSCCAP);
19968                 if (rccal_valid & 0x2)
19969                         break;
19970
19971                 udelay(500);
19972         }
19973
19974         if (WARN(!(rccal_valid & 0x2), "HW error: radio calib4"))
19975                 return 0;
19976
19977         write_radio_reg(pi, RADIO_2057_RCCAL_START_R1_Q1_P1, 0x15);
19978
19979         return rccal_valid;
19980 }
19981
19982 static void wlc_phy_radio_postinit_2057(struct brcms_phy *pi)
19983 {
19984
19985         mod_radio_reg(pi, RADIO_2057_XTALPUOVR_PINCTRL, 0x1, 0x1);
19986
19987         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x78);
19988         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x80);
19989         mdelay(2);
19990         mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x78, 0x0);
19991         mod_radio_reg(pi, RADIO_2057_XTAL_CONFIG2, 0x80, 0x0);
19992
19993         if (pi->phy_init_por) {
19994                 wlc_phy_radio205x_rcal(pi);
19995                 wlc_phy_radio2057_rccal(pi);
19996         }
19997
19998         mod_radio_reg(pi, RADIO_2057_RFPLL_MASTER, 0x8, 0x0);
19999 }
20000
20001 static void wlc_phy_radio_init_2056(struct brcms_phy *pi)
20002 {
20003         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20004         const struct radio_regs *regs_TX_2056_ptr = NULL;
20005         const struct radio_regs *regs_RX_2056_ptr = NULL;
20006
20007         if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20008                 regs_SYN_2056_ptr = regs_SYN_2056;
20009                 regs_TX_2056_ptr = regs_TX_2056;
20010                 regs_RX_2056_ptr = regs_RX_2056;
20011         } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20012                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20013                 regs_TX_2056_ptr = regs_TX_2056_A1;
20014                 regs_RX_2056_ptr = regs_RX_2056_A1;
20015         } else {
20016                 switch (pi->pubpi.radiorev) {
20017                 case 5:
20018                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20019                         regs_TX_2056_ptr = regs_TX_2056_rev5;
20020                         regs_RX_2056_ptr = regs_RX_2056_rev5;
20021                         break;
20022
20023                 case 6:
20024                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20025                         regs_TX_2056_ptr = regs_TX_2056_rev6;
20026                         regs_RX_2056_ptr = regs_RX_2056_rev6;
20027                         break;
20028
20029                 case 7:
20030                 case 9:
20031                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20032                         regs_TX_2056_ptr = regs_TX_2056_rev7;
20033                         regs_RX_2056_ptr = regs_RX_2056_rev7;
20034                         break;
20035
20036                 case 8:
20037                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20038                         regs_TX_2056_ptr = regs_TX_2056_rev8;
20039                         regs_RX_2056_ptr = regs_RX_2056_rev8;
20040                         break;
20041
20042                 case 11:
20043                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20044                         regs_TX_2056_ptr = regs_TX_2056_rev11;
20045                         regs_RX_2056_ptr = regs_RX_2056_rev11;
20046                         break;
20047
20048                 default:
20049                         break;
20050                 }
20051         }
20052
20053         wlc_phy_init_radio_regs(pi, regs_SYN_2056_ptr, (u16) RADIO_2056_SYN);
20054
20055         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX0);
20056
20057         wlc_phy_init_radio_regs(pi, regs_TX_2056_ptr, (u16) RADIO_2056_TX1);
20058
20059         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX0);
20060
20061         wlc_phy_init_radio_regs(pi, regs_RX_2056_ptr, (u16) RADIO_2056_RX1);
20062 }
20063
20064 static void wlc_phy_radio_postinit_2056(struct brcms_phy *pi)
20065 {
20066         mod_radio_reg(pi, RADIO_2056_SYN_COM_CTRL, 0xb, 0xb);
20067
20068         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x2);
20069         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x2);
20070         udelay(1000);
20071         mod_radio_reg(pi, RADIO_2056_SYN_COM_RESET, 0x2, 0x0);
20072
20073         if ((pi->sh->boardflags2 & BFL2_LEGACY)
20074             || (pi->sh->boardflags2 & BFL2_XTALBUFOUTEN))
20075                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xf4, 0x0);
20076         else
20077                 mod_radio_reg(pi, RADIO_2056_SYN_PLL_MAST2, 0xfc, 0x0);
20078
20079         mod_radio_reg(pi, RADIO_2056_SYN_RCCAL_CTRL0, 0x1, 0x0);
20080
20081         if (pi->phy_init_por)
20082                 wlc_phy_radio205x_rcal(pi);
20083 }
20084
20085 static void wlc_phy_radio_preinit_2055(struct brcms_phy *pi)
20086 {
20087
20088         and_phy_reg(pi, 0x78, ~RFCC_POR_FORCE);
20089         or_phy_reg(pi, 0x78, RFCC_CHIP0_PU | RFCC_OE_POR_FORCE);
20090
20091         or_phy_reg(pi, 0x78, RFCC_POR_FORCE);
20092 }
20093
20094 static void wlc_phy_radio_init_2055(struct brcms_phy *pi)
20095 {
20096         wlc_phy_init_radio_regs(pi, regs_2055, RADIO_DEFAULT_CORE);
20097 }
20098
20099 static void wlc_phy_radio_postinit_2055(struct brcms_phy *pi)
20100 {
20101
20102         and_radio_reg(pi, RADIO_2055_MASTER_CNTRL1,
20103                       ~(RADIO_2055_JTAGCTRL_MASK | RADIO_2055_JTAGSYNC_MASK));
20104
20105         if (((pi->sh->sromrev >= 4)
20106              && !(pi->sh->boardflags2 & BFL2_RXBB_INT_REG_DIS))
20107             || ((pi->sh->sromrev < 4))) {
20108                 and_radio_reg(pi, RADIO_2055_CORE1_RXBB_REGULATOR, 0x7F);
20109                 and_radio_reg(pi, RADIO_2055_CORE2_RXBB_REGULATOR, 0x7F);
20110         }
20111
20112         mod_radio_reg(pi, RADIO_2055_RRCCAL_N_OPT_SEL, 0x3F, 0x2C);
20113         write_radio_reg(pi, RADIO_2055_CAL_MISC, 0x3C);
20114
20115         and_radio_reg(pi, RADIO_2055_CAL_MISC,
20116                       ~(RADIO_2055_RRCAL_START | RADIO_2055_RRCAL_RST_N));
20117
20118         or_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL, RADIO_2055_CAL_LPO_ENABLE);
20119
20120         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_RST_N);
20121
20122         udelay(1000);
20123
20124         or_radio_reg(pi, RADIO_2055_CAL_MISC, RADIO_2055_RRCAL_START);
20125
20126         SPINWAIT(((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20127                    RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE), 2000);
20128
20129         if (WARN((read_radio_reg(pi, RADIO_2055_CAL_COUNTER_OUT2) &
20130                   RADIO_2055_RCAL_DONE) != RADIO_2055_RCAL_DONE,
20131                  "HW error: radio calibration1\n"))
20132                 return;
20133
20134         and_radio_reg(pi, RADIO_2055_CAL_LPO_CNTRL,
20135                       ~(RADIO_2055_CAL_LPO_ENABLE));
20136
20137         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi, pi->radio_chanspec);
20138
20139         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_LPF, 9);
20140         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_LPF, 9);
20141
20142         write_radio_reg(pi, RADIO_2055_CORE1_RXBB_MIDAC_HIPAS, 0x83);
20143         write_radio_reg(pi, RADIO_2055_CORE2_RXBB_MIDAC_HIPAS, 0x83);
20144
20145         mod_radio_reg(pi, RADIO_2055_CORE1_LNA_GAINBST,
20146                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20147         mod_radio_reg(pi, RADIO_2055_CORE2_LNA_GAINBST,
20148                       RADIO_2055_GAINBST_VAL_MASK, RADIO_2055_GAINBST_CODE);
20149         if (pi->nphy_gain_boost) {
20150                 and_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20151                               ~(RADIO_2055_GAINBST_DISABLE));
20152                 and_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20153                               ~(RADIO_2055_GAINBST_DISABLE));
20154         } else {
20155                 or_radio_reg(pi, RADIO_2055_CORE1_RXRF_SPC1,
20156                              RADIO_2055_GAINBST_DISABLE);
20157                 or_radio_reg(pi, RADIO_2055_CORE2_RXRF_SPC1,
20158                              RADIO_2055_GAINBST_DISABLE);
20159         }
20160
20161         udelay(2);
20162 }
20163
20164 void wlc_phy_switch_radio_nphy(struct brcms_phy *pi, bool on)
20165 {
20166         if (on) {
20167                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20168                         if (!pi->radio_is_on) {
20169                                 wlc_phy_radio_preinit_205x(pi);
20170                                 wlc_phy_radio_init_2057(pi);
20171                                 wlc_phy_radio_postinit_2057(pi);
20172                         }
20173
20174                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20175                                              pi->radio_chanspec);
20176                 } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20177                         wlc_phy_radio_preinit_205x(pi);
20178                         wlc_phy_radio_init_2056(pi);
20179                         wlc_phy_radio_postinit_2056(pi);
20180
20181                         wlc_phy_chanspec_set((struct brcms_phy_pub *) pi,
20182                                              pi->radio_chanspec);
20183                 } else {
20184                         wlc_phy_radio_preinit_2055(pi);
20185                         wlc_phy_radio_init_2055(pi);
20186                         wlc_phy_radio_postinit_2055(pi);
20187                 }
20188
20189                 pi->radio_is_on = true;
20190
20191         } else {
20192
20193                 if (NREV_GE(pi->pubpi.phy_rev, 3)
20194                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
20195                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20196                         mod_radio_reg(pi, RADIO_2056_SYN_COM_PU, 0x2, 0x0);
20197
20198                         write_radio_reg(pi,
20199                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20200                                         RADIO_2056_TX0, 0);
20201                         write_radio_reg(pi,
20202                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20203                                         RADIO_2056_TX0, 0);
20204                         write_radio_reg(pi,
20205                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20206                                         RADIO_2056_TX0, 0);
20207                         write_radio_reg(pi,
20208                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20209                                         RADIO_2056_TX0, 0);
20210                         mod_radio_reg(pi,
20211                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20212                                       RADIO_2056_TX0, 0xf0, 0);
20213                         write_radio_reg(pi,
20214                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20215                                         RADIO_2056_TX0, 0);
20216
20217                         write_radio_reg(pi,
20218                                         RADIO_2056_TX_PADA_BOOST_TUNE |
20219                                         RADIO_2056_TX1, 0);
20220                         write_radio_reg(pi,
20221                                         RADIO_2056_TX_PADG_BOOST_TUNE |
20222                                         RADIO_2056_TX1, 0);
20223                         write_radio_reg(pi,
20224                                         RADIO_2056_TX_PGAA_BOOST_TUNE |
20225                                         RADIO_2056_TX1, 0);
20226                         write_radio_reg(pi,
20227                                         RADIO_2056_TX_PGAG_BOOST_TUNE |
20228                                         RADIO_2056_TX1, 0);
20229                         mod_radio_reg(pi,
20230                                       RADIO_2056_TX_MIXA_BOOST_TUNE |
20231                                       RADIO_2056_TX1, 0xf0, 0);
20232                         write_radio_reg(pi,
20233                                         RADIO_2056_TX_MIXG_BOOST_TUNE |
20234                                         RADIO_2056_TX1, 0);
20235
20236                         pi->radio_is_on = false;
20237                 }
20238
20239                 if (NREV_GE(pi->pubpi.phy_rev, 8)) {
20240                         and_phy_reg(pi, 0x78, ~RFCC_CHIP0_PU);
20241                         pi->radio_is_on = false;
20242                 }
20243
20244         }
20245 }
20246
20247 static bool
20248 wlc_phy_chan2freq_nphy(struct brcms_phy *pi, uint channel, int *f,
20249                        const struct chan_info_nphy_radio2057 **t0,
20250                        const struct chan_info_nphy_radio205x **t1,
20251                        const struct chan_info_nphy_radio2057_rev5 **t2,
20252                        const struct chan_info_nphy_2055 **t3)
20253 {
20254         uint i;
20255         const struct chan_info_nphy_radio2057 *chan_info_tbl_p_0 = NULL;
20256         const struct chan_info_nphy_radio205x *chan_info_tbl_p_1 = NULL;
20257         const struct chan_info_nphy_radio2057_rev5 *chan_info_tbl_p_2 = NULL;
20258         u32 tbl_len = 0;
20259
20260         int freq = 0;
20261
20262         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20263
20264                 if (NREV_IS(pi->pubpi.phy_rev, 7)) {
20265
20266                         chan_info_tbl_p_0 = chan_info_nphyrev7_2057_rev4;
20267                         tbl_len = ARRAY_SIZE(chan_info_nphyrev7_2057_rev4);
20268
20269                 } else if (NREV_IS(pi->pubpi.phy_rev, 8)
20270                            || NREV_IS(pi->pubpi.phy_rev, 9)) {
20271                         switch (pi->pubpi.radiorev) {
20272
20273                         case 5:
20274
20275                                 if (pi->pubpi.radiover == 0x0) {
20276
20277                                         chan_info_tbl_p_2 =
20278                                                 chan_info_nphyrev8_2057_rev5;
20279                                         tbl_len = ARRAY_SIZE(
20280                                                   chan_info_nphyrev8_2057_rev5);
20281
20282                                 } else if (pi->pubpi.radiover == 0x1) {
20283
20284                                         chan_info_tbl_p_2 =
20285                                                 chan_info_nphyrev9_2057_rev5v1;
20286                                         tbl_len = ARRAY_SIZE(
20287                                                 chan_info_nphyrev9_2057_rev5v1);
20288
20289                                 }
20290                                 break;
20291
20292                         case 7:
20293                                 chan_info_tbl_p_0 =
20294                                         chan_info_nphyrev8_2057_rev7;
20295                                 tbl_len = ARRAY_SIZE(
20296                                                   chan_info_nphyrev8_2057_rev7);
20297                                 break;
20298
20299                         case 8:
20300                                 chan_info_tbl_p_0 =
20301                                         chan_info_nphyrev8_2057_rev8;
20302                                 tbl_len = ARRAY_SIZE(
20303                                                   chan_info_nphyrev8_2057_rev8);
20304                                 break;
20305
20306                         default:
20307                                 break;
20308                         }
20309                 } else if (NREV_IS(pi->pubpi.phy_rev, 16)) {
20310
20311                         chan_info_tbl_p_0 = chan_info_nphyrev8_2057_rev8;
20312                         tbl_len = ARRAY_SIZE(chan_info_nphyrev8_2057_rev8);
20313                 } else {
20314                         goto fail;
20315                 }
20316
20317                 for (i = 0; i < tbl_len; i++) {
20318                         if (pi->pubpi.radiorev == 5) {
20319
20320                                 if (chan_info_tbl_p_2[i].chan == channel)
20321                                         break;
20322                         } else {
20323
20324                                 if (chan_info_tbl_p_0[i].chan == channel)
20325                                         break;
20326                         }
20327                 }
20328
20329                 if (i >= tbl_len)
20330                         goto fail;
20331
20332                 if (pi->pubpi.radiorev == 5) {
20333                         *t2 = &chan_info_tbl_p_2[i];
20334                         freq = chan_info_tbl_p_2[i].freq;
20335                 } else {
20336                         *t0 = &chan_info_tbl_p_0[i];
20337                         freq = chan_info_tbl_p_0[i].freq;
20338                 }
20339
20340         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20341                 if (NREV_IS(pi->pubpi.phy_rev, 3)) {
20342                         chan_info_tbl_p_1 = chan_info_nphyrev3_2056;
20343                         tbl_len = ARRAY_SIZE(chan_info_nphyrev3_2056);
20344                 } else if (NREV_IS(pi->pubpi.phy_rev, 4)) {
20345                         chan_info_tbl_p_1 = chan_info_nphyrev4_2056_A1;
20346                         tbl_len = ARRAY_SIZE(chan_info_nphyrev4_2056_A1);
20347                 } else if (NREV_IS(pi->pubpi.phy_rev, 5)
20348                            || NREV_IS(pi->pubpi.phy_rev, 6)) {
20349                         switch (pi->pubpi.radiorev) {
20350                         case 5:
20351                                 chan_info_tbl_p_1 = chan_info_nphyrev5_2056v5;
20352                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev5_2056v5);
20353                                 break;
20354                         case 6:
20355                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v6;
20356                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v6);
20357                                 break;
20358                         case 7:
20359                         case 9:
20360                                 chan_info_tbl_p_1 = chan_info_nphyrev5n6_2056v7;
20361                                 tbl_len =
20362                                         ARRAY_SIZE(chan_info_nphyrev5n6_2056v7);
20363                                 break;
20364                         case 8:
20365                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v8;
20366                                 tbl_len = ARRAY_SIZE(chan_info_nphyrev6_2056v8);
20367                                 break;
20368                         case 11:
20369                                 chan_info_tbl_p_1 = chan_info_nphyrev6_2056v11;
20370                                 tbl_len = ARRAY_SIZE(
20371                                                     chan_info_nphyrev6_2056v11);
20372                                 break;
20373                         default:
20374                                 break;
20375                         }
20376                 }
20377
20378                 for (i = 0; i < tbl_len; i++) {
20379                         if (chan_info_tbl_p_1[i].chan == channel)
20380                                 break;
20381                 }
20382
20383                 if (i >= tbl_len)
20384                         goto fail;
20385
20386                 *t1 = &chan_info_tbl_p_1[i];
20387                 freq = chan_info_tbl_p_1[i].freq;
20388
20389         } else {
20390                 for (i = 0; i < ARRAY_SIZE(chan_info_nphy_2055); i++)
20391                         if (chan_info_nphy_2055[i].chan == channel)
20392                                 break;
20393
20394                 if (i >= ARRAY_SIZE(chan_info_nphy_2055))
20395                         goto fail;
20396
20397                 *t3 = &chan_info_nphy_2055[i];
20398                 freq = chan_info_nphy_2055[i].freq;
20399         }
20400
20401         *f = freq;
20402         return true;
20403
20404 fail:
20405         *f = WL_CHAN_FREQ_RANGE_2G;
20406         return false;
20407 }
20408
20409 u8 wlc_phy_get_chan_freq_range_nphy(struct brcms_phy *pi, uint channel)
20410 {
20411         int freq;
20412         const struct chan_info_nphy_radio2057 *t0 = NULL;
20413         const struct chan_info_nphy_radio205x *t1 = NULL;
20414         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
20415         const struct chan_info_nphy_2055 *t3 = NULL;
20416
20417         if (channel == 0)
20418                 channel = CHSPEC_CHANNEL(pi->radio_chanspec);
20419
20420         wlc_phy_chan2freq_nphy(pi, channel, &freq, &t0, &t1, &t2, &t3);
20421
20422         if (CHSPEC_IS2G(pi->radio_chanspec))
20423                 return WL_CHAN_FREQ_RANGE_2G;
20424
20425         if ((freq >= BASE_LOW_5G_CHAN) && (freq < BASE_MID_5G_CHAN))
20426                 return WL_CHAN_FREQ_RANGE_5GL;
20427         else if ((freq >= BASE_MID_5G_CHAN) && (freq < BASE_HIGH_5G_CHAN))
20428                 return WL_CHAN_FREQ_RANGE_5GM;
20429         else
20430                 return WL_CHAN_FREQ_RANGE_5GH;
20431 }
20432
20433 static void
20434 wlc_phy_chanspec_radio2055_setup(struct brcms_phy *pi,
20435                                  const struct chan_info_nphy_2055 *ci)
20436 {
20437
20438         write_radio_reg(pi, RADIO_2055_PLL_REF, ci->RF_pll_ref);
20439         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD0, ci->RF_rf_pll_mod0);
20440         write_radio_reg(pi, RADIO_2055_RF_PLL_MOD1, ci->RF_rf_pll_mod1);
20441         write_radio_reg(pi, RADIO_2055_VCO_CAP_TAIL, ci->RF_vco_cap_tail);
20442
20443         BRCMS_PHY_WAR_PR51571(pi);
20444
20445         write_radio_reg(pi, RADIO_2055_VCO_CAL1, ci->RF_vco_cal1);
20446         write_radio_reg(pi, RADIO_2055_VCO_CAL2, ci->RF_vco_cal2);
20447         write_radio_reg(pi, RADIO_2055_PLL_LF_C1, ci->RF_pll_lf_c1);
20448         write_radio_reg(pi, RADIO_2055_PLL_LF_R1, ci->RF_pll_lf_r1);
20449
20450         BRCMS_PHY_WAR_PR51571(pi);
20451
20452         write_radio_reg(pi, RADIO_2055_PLL_LF_C2, ci->RF_pll_lf_c2);
20453         write_radio_reg(pi, RADIO_2055_LGBUF_CEN_BUF, ci->RF_lgbuf_cen_buf);
20454         write_radio_reg(pi, RADIO_2055_LGEN_TUNE1, ci->RF_lgen_tune1);
20455         write_radio_reg(pi, RADIO_2055_LGEN_TUNE2, ci->RF_lgen_tune2);
20456
20457         BRCMS_PHY_WAR_PR51571(pi);
20458
20459         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_A_TUNE,
20460                         ci->RF_core1_lgbuf_a_tune);
20461         write_radio_reg(pi, RADIO_2055_CORE1_LGBUF_G_TUNE,
20462                         ci->RF_core1_lgbuf_g_tune);
20463         write_radio_reg(pi, RADIO_2055_CORE1_RXRF_REG1, ci->RF_core1_rxrf_reg1);
20464         write_radio_reg(pi, RADIO_2055_CORE1_TX_PGA_PAD_TN,
20465                         ci->RF_core1_tx_pga_pad_tn);
20466
20467         BRCMS_PHY_WAR_PR51571(pi);
20468
20469         write_radio_reg(pi, RADIO_2055_CORE1_TX_MX_BGTRIM,
20470                         ci->RF_core1_tx_mx_bgtrim);
20471         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_A_TUNE,
20472                         ci->RF_core2_lgbuf_a_tune);
20473         write_radio_reg(pi, RADIO_2055_CORE2_LGBUF_G_TUNE,
20474                         ci->RF_core2_lgbuf_g_tune);
20475         write_radio_reg(pi, RADIO_2055_CORE2_RXRF_REG1, ci->RF_core2_rxrf_reg1);
20476
20477         BRCMS_PHY_WAR_PR51571(pi);
20478
20479         write_radio_reg(pi, RADIO_2055_CORE2_TX_PGA_PAD_TN,
20480                         ci->RF_core2_tx_pga_pad_tn);
20481         write_radio_reg(pi, RADIO_2055_CORE2_TX_MX_BGTRIM,
20482                         ci->RF_core2_tx_mx_bgtrim);
20483
20484         udelay(50);
20485
20486         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x05);
20487         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x45);
20488
20489         BRCMS_PHY_WAR_PR51571(pi);
20490
20491         write_radio_reg(pi, RADIO_2055_VCO_CAL10, 0x65);
20492
20493         udelay(300);
20494 }
20495
20496 static void
20497 wlc_phy_chanspec_radio2056_setup(struct brcms_phy *pi,
20498                                  const struct chan_info_nphy_radio205x *ci)
20499 {
20500         const struct radio_regs *regs_SYN_2056_ptr = NULL;
20501
20502         write_radio_reg(pi,
20503                         RADIO_2056_SYN_PLL_VCOCAL1 | RADIO_2056_SYN,
20504                         ci->RF_SYN_pll_vcocal1);
20505         write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL2 | RADIO_2056_SYN,
20506                         ci->RF_SYN_pll_vcocal2);
20507         write_radio_reg(pi, RADIO_2056_SYN_PLL_REFDIV | RADIO_2056_SYN,
20508                         ci->RF_SYN_pll_refdiv);
20509         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD2 | RADIO_2056_SYN,
20510                         ci->RF_SYN_pll_mmd2);
20511         write_radio_reg(pi, RADIO_2056_SYN_PLL_MMD1 | RADIO_2056_SYN,
20512                         ci->RF_SYN_pll_mmd1);
20513         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20514                         ci->RF_SYN_pll_loopfilter1);
20515         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20516                         ci->RF_SYN_pll_loopfilter2);
20517         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER3 | RADIO_2056_SYN,
20518                         ci->RF_SYN_pll_loopfilter3);
20519         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20520                         ci->RF_SYN_pll_loopfilter4);
20521         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER5 | RADIO_2056_SYN,
20522                         ci->RF_SYN_pll_loopfilter5);
20523         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR27 | RADIO_2056_SYN,
20524                         ci->RF_SYN_reserved_addr27);
20525         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR28 | RADIO_2056_SYN,
20526                         ci->RF_SYN_reserved_addr28);
20527         write_radio_reg(pi, RADIO_2056_SYN_RESERVED_ADDR29 | RADIO_2056_SYN,
20528                         ci->RF_SYN_reserved_addr29);
20529         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_VCOBUF1 | RADIO_2056_SYN,
20530                         ci->RF_SYN_logen_VCOBUF1);
20531         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_MIXER2 | RADIO_2056_SYN,
20532                         ci->RF_SYN_logen_MIXER2);
20533         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF3 | RADIO_2056_SYN,
20534                         ci->RF_SYN_logen_BUF3);
20535         write_radio_reg(pi, RADIO_2056_SYN_LOGEN_BUF4 | RADIO_2056_SYN,
20536                         ci->RF_SYN_logen_BUF4);
20537
20538         write_radio_reg(pi,
20539                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX0,
20540                         ci->RF_RX0_lnaa_tune);
20541         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX0,
20542                         ci->RF_RX0_lnag_tune);
20543         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX0,
20544                         ci->RF_TX0_intpaa_boost_tune);
20545         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX0,
20546                         ci->RF_TX0_intpag_boost_tune);
20547         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX0,
20548                         ci->RF_TX0_pada_boost_tune);
20549         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX0,
20550                         ci->RF_TX0_padg_boost_tune);
20551         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX0,
20552                         ci->RF_TX0_pgaa_boost_tune);
20553         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX0,
20554                         ci->RF_TX0_pgag_boost_tune);
20555         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX0,
20556                         ci->RF_TX0_mixa_boost_tune);
20557         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX0,
20558                         ci->RF_TX0_mixg_boost_tune);
20559
20560         write_radio_reg(pi,
20561                         RADIO_2056_RX_LNAA_TUNE | RADIO_2056_RX1,
20562                         ci->RF_RX1_lnaa_tune);
20563         write_radio_reg(pi, RADIO_2056_RX_LNAG_TUNE | RADIO_2056_RX1,
20564                         ci->RF_RX1_lnag_tune);
20565         write_radio_reg(pi, RADIO_2056_TX_INTPAA_BOOST_TUNE | RADIO_2056_TX1,
20566                         ci->RF_TX1_intpaa_boost_tune);
20567         write_radio_reg(pi, RADIO_2056_TX_INTPAG_BOOST_TUNE | RADIO_2056_TX1,
20568                         ci->RF_TX1_intpag_boost_tune);
20569         write_radio_reg(pi, RADIO_2056_TX_PADA_BOOST_TUNE | RADIO_2056_TX1,
20570                         ci->RF_TX1_pada_boost_tune);
20571         write_radio_reg(pi, RADIO_2056_TX_PADG_BOOST_TUNE | RADIO_2056_TX1,
20572                         ci->RF_TX1_padg_boost_tune);
20573         write_radio_reg(pi, RADIO_2056_TX_PGAA_BOOST_TUNE | RADIO_2056_TX1,
20574                         ci->RF_TX1_pgaa_boost_tune);
20575         write_radio_reg(pi, RADIO_2056_TX_PGAG_BOOST_TUNE | RADIO_2056_TX1,
20576                         ci->RF_TX1_pgag_boost_tune);
20577         write_radio_reg(pi, RADIO_2056_TX_MIXA_BOOST_TUNE | RADIO_2056_TX1,
20578                         ci->RF_TX1_mixa_boost_tune);
20579         write_radio_reg(pi, RADIO_2056_TX_MIXG_BOOST_TUNE | RADIO_2056_TX1,
20580                         ci->RF_TX1_mixg_boost_tune);
20581
20582         if (NREV_IS(pi->pubpi.phy_rev, 3))
20583                 regs_SYN_2056_ptr = regs_SYN_2056;
20584         else if (NREV_IS(pi->pubpi.phy_rev, 4))
20585                 regs_SYN_2056_ptr = regs_SYN_2056_A1;
20586         else {
20587                 switch (pi->pubpi.radiorev) {
20588                 case 5:
20589                         regs_SYN_2056_ptr = regs_SYN_2056_rev5;
20590                         break;
20591                 case 6:
20592                         regs_SYN_2056_ptr = regs_SYN_2056_rev6;
20593                         break;
20594                 case 7:
20595                 case 9:
20596                         regs_SYN_2056_ptr = regs_SYN_2056_rev7;
20597                         break;
20598                 case 8:
20599                         regs_SYN_2056_ptr = regs_SYN_2056_rev8;
20600                         break;
20601                 case 11:
20602                         regs_SYN_2056_ptr = regs_SYN_2056_rev11;
20603                         break;
20604                 }
20605         }
20606         if (CHSPEC_IS2G(pi->radio_chanspec))
20607                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20608                                 RADIO_2056_SYN,
20609                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_g);
20610         else
20611                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20612                                 RADIO_2056_SYN,
20613                                 (u16) regs_SYN_2056_ptr[0x49 - 2].init_a);
20614
20615         if (pi->sh->boardflags2 & BFL2_GPLL_WAR) {
20616                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20617                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20618                                         RADIO_2056_SYN, 0x1f);
20619                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20620                                         RADIO_2056_SYN, 0x1f);
20621
20622                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20623                             (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20624                                 write_radio_reg(pi,
20625                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20626                                                 RADIO_2056_SYN, 0x14);
20627                                 write_radio_reg(pi,
20628                                                 RADIO_2056_SYN_PLL_CP2 |
20629                                                 RADIO_2056_SYN, 0x00);
20630                         } else {
20631                                 write_radio_reg(pi,
20632                                                 RADIO_2056_SYN_PLL_LOOPFILTER4 |
20633                                                 RADIO_2056_SYN, 0xb);
20634                                 write_radio_reg(pi,
20635                                                 RADIO_2056_SYN_PLL_CP2 |
20636                                                 RADIO_2056_SYN, 0x14);
20637                         }
20638                 }
20639         }
20640
20641         if ((pi->sh->boardflags2 & BFL2_GPLL_WAR2) &&
20642             (CHSPEC_IS2G(pi->radio_chanspec))) {
20643                 write_radio_reg(pi,
20644                                 RADIO_2056_SYN_PLL_LOOPFILTER1 | RADIO_2056_SYN,
20645                                 0x1f);
20646                 write_radio_reg(pi,
20647                                 RADIO_2056_SYN_PLL_LOOPFILTER2 | RADIO_2056_SYN,
20648                                 0x1f);
20649                 write_radio_reg(pi,
20650                                 RADIO_2056_SYN_PLL_LOOPFILTER4 | RADIO_2056_SYN,
20651                                 0xb);
20652                 write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 | RADIO_2056_SYN,
20653                                 0x20);
20654         }
20655
20656         if (pi->sh->boardflags2 & BFL2_APLL_WAR) {
20657                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
20658                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER1 |
20659                                         RADIO_2056_SYN, 0x1f);
20660                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER2 |
20661                                         RADIO_2056_SYN, 0x1f);
20662                         write_radio_reg(pi, RADIO_2056_SYN_PLL_LOOPFILTER4 |
20663                                         RADIO_2056_SYN, 0x5);
20664                         write_radio_reg(pi, RADIO_2056_SYN_PLL_CP2 |
20665                                         RADIO_2056_SYN, 0xc);
20666                 }
20667         }
20668
20669         if (PHY_IPA(pi) && CHSPEC_IS2G(pi->radio_chanspec)) {
20670                 u16 pag_boost_tune;
20671                 u16 padg_boost_tune;
20672                 u16 pgag_boost_tune;
20673                 u16 mixg_boost_tune;
20674                 u16 bias, cascbias;
20675                 uint core;
20676
20677                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20678
20679                         if (NREV_GE(pi->pubpi.phy_rev, 5)) {
20680
20681                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20682                                                  PADG_IDAC, 0xcc);
20683
20684                                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
20685                                     (pi->sh->chip == BCMA_CHIP_ID_BCM47162)) {
20686                                         bias = 0x40;
20687                                         cascbias = 0x45;
20688                                         pag_boost_tune = 0x5;
20689                                         pgag_boost_tune = 0x33;
20690                                         padg_boost_tune = 0x77;
20691                                         mixg_boost_tune = 0x55;
20692                                 } else {
20693                                         bias = 0x25;
20694                                         cascbias = 0x20;
20695
20696                                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20697                                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20698                                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC) {
20699                                                 bias = 0x2a;
20700                                                 cascbias = 0x38;
20701                                         }
20702
20703                                         pag_boost_tune = 0x4;
20704                                         pgag_boost_tune = 0x03;
20705                                         padg_boost_tune = 0x77;
20706                                         mixg_boost_tune = 0x65;
20707                                 }
20708
20709                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20710                                                  INTPAG_IMAIN_STAT, bias);
20711                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20712                                                  INTPAG_IAUX_STAT, bias);
20713                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20714                                                  INTPAG_CASCBIAS, cascbias);
20715
20716                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20717                                                  INTPAG_BOOST_TUNE,
20718                                                  pag_boost_tune);
20719                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20720                                                  PGAG_BOOST_TUNE,
20721                                                  pgag_boost_tune);
20722                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20723                                                  PADG_BOOST_TUNE,
20724                                                  padg_boost_tune);
20725                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20726                                                  MIXG_BOOST_TUNE,
20727                                                  mixg_boost_tune);
20728                         } else {
20729
20730                                 bias = (pi->bw == WL_CHANSPEC_BW_40) ?
20731                                        0x40 : 0x20;
20732
20733                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20734                                                  INTPAG_IMAIN_STAT, bias);
20735                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20736                                                  INTPAG_IAUX_STAT, bias);
20737                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20738                                                  INTPAG_CASCBIAS, 0x30);
20739                         }
20740                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core, PA_SPARE1,
20741                                          0xee);
20742                 }
20743         }
20744
20745         if (PHY_IPA(pi) && NREV_IS(pi->pubpi.phy_rev, 6)
20746             && CHSPEC_IS5G(pi->radio_chanspec)) {
20747                 u16 paa_boost_tune;
20748                 u16 pada_boost_tune;
20749                 u16 pgaa_boost_tune;
20750                 u16 mixa_boost_tune;
20751                 u16 freq, pabias, cascbias;
20752                 uint core;
20753
20754                 freq = CHAN5G_FREQ(CHSPEC_CHANNEL(pi->radio_chanspec));
20755
20756                 if (freq < 5150) {
20757
20758                         paa_boost_tune = 0xa;
20759                         pada_boost_tune = 0x77;
20760                         pgaa_boost_tune = 0xf;
20761                         mixa_boost_tune = 0xf;
20762                 } else if (freq < 5340) {
20763
20764                         paa_boost_tune = 0x8;
20765                         pada_boost_tune = 0x77;
20766                         pgaa_boost_tune = 0xfb;
20767                         mixa_boost_tune = 0xf;
20768                 } else if (freq < 5650) {
20769
20770                         paa_boost_tune = 0x0;
20771                         pada_boost_tune = 0x77;
20772                         pgaa_boost_tune = 0xb;
20773                         mixa_boost_tune = 0xf;
20774                 } else {
20775
20776                         paa_boost_tune = 0x0;
20777                         pada_boost_tune = 0x77;
20778                         if (freq != 5825)
20779                                 pgaa_boost_tune = -(int)(freq - 18) / 36 + 168;
20780                         else
20781                                 pgaa_boost_tune = 6;
20782
20783                         mixa_boost_tune = 0xf;
20784                 }
20785
20786                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
20787                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20788                                          INTPAA_BOOST_TUNE, paa_boost_tune);
20789                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20790                                          PADA_BOOST_TUNE, pada_boost_tune);
20791                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20792                                          PGAA_BOOST_TUNE, pgaa_boost_tune);
20793                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20794                                          MIXA_BOOST_TUNE, mixa_boost_tune);
20795
20796                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20797                                          TXSPARE1, 0x30);
20798                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20799                                          PA_SPARE2, 0xee);
20800
20801                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20802                                          PADA_CASCBIAS, 0x3);
20803
20804                         cascbias = 0x30;
20805
20806                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224 ||
20807                              pi->sh->chip == BCMA_CHIP_ID_BCM43225) &&
20808                             pi->sh->chippkg == BCMA_PKG_ID_BCM43224_FAB_SMIC)
20809                                 cascbias = 0x35;
20810
20811                         pabias = (pi->phy_pabias == 0) ? 0x30 : pi->phy_pabias;
20812
20813                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20814                                          INTPAA_IAUX_STAT, pabias);
20815                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20816                                          INTPAA_IMAIN_STAT, pabias);
20817                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
20818                                          INTPAA_CASCBIAS, cascbias);
20819                 }
20820         }
20821
20822         udelay(50);
20823
20824         wlc_phy_radio205x_vcocal_nphy(pi);
20825 }
20826
20827 void wlc_phy_radio205x_vcocal_nphy(struct brcms_phy *pi)
20828 {
20829         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
20830                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x0);
20831                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04, 0x0);
20832                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_CAL_RESETN, 0x04,
20833                               (1 << 2));
20834                 mod_radio_reg(pi, RADIO_2057_RFPLL_MISC_EN, 0x01, 0x01);
20835         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
20836                 write_radio_reg(pi, RADIO_2056_SYN_PLL_VCOCAL12, 0x0);
20837                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20838                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x18);
20839                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x38);
20840                 write_radio_reg(pi, RADIO_2056_SYN_PLL_MAST3, 0x39);
20841         }
20842
20843         udelay(300);
20844 }
20845
20846 static void
20847 wlc_phy_chanspec_radio2057_setup(
20848         struct brcms_phy *pi,
20849         const struct chan_info_nphy_radio2057 *ci,
20850         const struct chan_info_nphy_radio2057_rev5 *
20851         ci2)
20852 {
20853         int coreNum;
20854         u16 txmix2g_tune_boost_pu = 0;
20855         u16 pad2g_tune_pus = 0;
20856
20857         if (pi->pubpi.radiorev == 5) {
20858
20859                 write_radio_reg(pi,
20860                                 RADIO_2057_VCOCAL_COUNTVAL0,
20861                                 ci2->RF_vcocal_countval0);
20862                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20863                                 ci2->RF_vcocal_countval1);
20864                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20865                                 ci2->RF_rfpll_refmaster_sparextalsize);
20866                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20867                                 ci2->RF_rfpll_loopfilter_r1);
20868                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20869                                 ci2->RF_rfpll_loopfilter_c2);
20870                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20871                                 ci2->RF_rfpll_loopfilter_c1);
20872                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC,
20873                                 ci2->RF_cp_kpd_idac);
20874                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci2->RF_rfpll_mmd0);
20875                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci2->RF_rfpll_mmd1);
20876                 write_radio_reg(pi,
20877                                 RADIO_2057_VCOBUF_TUNE, ci2->RF_vcobuf_tune);
20878                 write_radio_reg(pi,
20879                                 RADIO_2057_LOGEN_MX2G_TUNE,
20880                                 ci2->RF_logen_mx2g_tune);
20881                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20882                                 ci2->RF_logen_indbuf2g_tune);
20883
20884                 write_radio_reg(pi,
20885                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20886                                 ci2->RF_txmix2g_tune_boost_pu_core0);
20887                 write_radio_reg(pi,
20888                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20889                                 ci2->RF_pad2g_tune_pus_core0);
20890                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20891                                 ci2->RF_lna2g_tune_core0);
20892
20893                 write_radio_reg(pi,
20894                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20895                                 ci2->RF_txmix2g_tune_boost_pu_core1);
20896                 write_radio_reg(pi,
20897                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20898                                 ci2->RF_pad2g_tune_pus_core1);
20899                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20900                                 ci2->RF_lna2g_tune_core1);
20901
20902         } else {
20903
20904                 write_radio_reg(pi,
20905                                 RADIO_2057_VCOCAL_COUNTVAL0,
20906                                 ci->RF_vcocal_countval0);
20907                 write_radio_reg(pi, RADIO_2057_VCOCAL_COUNTVAL1,
20908                                 ci->RF_vcocal_countval1);
20909                 write_radio_reg(pi, RADIO_2057_RFPLL_REFMASTER_SPAREXTALSIZE,
20910                                 ci->RF_rfpll_refmaster_sparextalsize);
20911                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20912                                 ci->RF_rfpll_loopfilter_r1);
20913                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20914                                 ci->RF_rfpll_loopfilter_c2);
20915                 write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20916                                 ci->RF_rfpll_loopfilter_c1);
20917                 write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, ci->RF_cp_kpd_idac);
20918                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD0, ci->RF_rfpll_mmd0);
20919                 write_radio_reg(pi, RADIO_2057_RFPLL_MMD1, ci->RF_rfpll_mmd1);
20920                 write_radio_reg(pi, RADIO_2057_VCOBUF_TUNE, ci->RF_vcobuf_tune);
20921                 write_radio_reg(pi,
20922                                 RADIO_2057_LOGEN_MX2G_TUNE,
20923                                 ci->RF_logen_mx2g_tune);
20924                 write_radio_reg(pi, RADIO_2057_LOGEN_MX5G_TUNE,
20925                                 ci->RF_logen_mx5g_tune);
20926                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF2G_TUNE,
20927                                 ci->RF_logen_indbuf2g_tune);
20928                 write_radio_reg(pi, RADIO_2057_LOGEN_INDBUF5G_TUNE,
20929                                 ci->RF_logen_indbuf5g_tune);
20930
20931                 write_radio_reg(pi,
20932                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE0,
20933                                 ci->RF_txmix2g_tune_boost_pu_core0);
20934                 write_radio_reg(pi,
20935                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
20936                                 ci->RF_pad2g_tune_pus_core0);
20937                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE0,
20938                                 ci->RF_pga_boost_tune_core0);
20939                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE0,
20940                                 ci->RF_txmix5g_boost_tune_core0);
20941                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE0,
20942                                 ci->RF_pad5g_tune_misc_pus_core0);
20943                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE0,
20944                                 ci->RF_lna2g_tune_core0);
20945                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE0,
20946                                 ci->RF_lna5g_tune_core0);
20947
20948                 write_radio_reg(pi,
20949                                 RADIO_2057_TXMIX2G_TUNE_BOOST_PU_CORE1,
20950                                 ci->RF_txmix2g_tune_boost_pu_core1);
20951                 write_radio_reg(pi,
20952                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
20953                                 ci->RF_pad2g_tune_pus_core1);
20954                 write_radio_reg(pi, RADIO_2057_PGA_BOOST_TUNE_CORE1,
20955                                 ci->RF_pga_boost_tune_core1);
20956                 write_radio_reg(pi, RADIO_2057_TXMIX5G_BOOST_TUNE_CORE1,
20957                                 ci->RF_txmix5g_boost_tune_core1);
20958                 write_radio_reg(pi, RADIO_2057_PAD5G_TUNE_MISC_PUS_CORE1,
20959                                 ci->RF_pad5g_tune_misc_pus_core1);
20960                 write_radio_reg(pi, RADIO_2057_LNA2G_TUNE_CORE1,
20961                                 ci->RF_lna2g_tune_core1);
20962                 write_radio_reg(pi, RADIO_2057_LNA5G_TUNE_CORE1,
20963                                 ci->RF_lna5g_tune_core1);
20964         }
20965
20966         if ((pi->pubpi.radiorev <= 4) || (pi->pubpi.radiorev == 6)) {
20967
20968                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20969                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20970                                         0x3f);
20971                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20972                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20973                                         0x8);
20974                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20975                                         0x8);
20976                 } else {
20977                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20978                                         0x1f);
20979                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
20980                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20981                                         0x8);
20982                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20983                                         0x8);
20984                 }
20985         } else if ((pi->pubpi.radiorev == 5) || (pi->pubpi.radiorev == 7) ||
20986                    (pi->pubpi.radiorev == 8)) {
20987
20988                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
20989                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20990                                         0x1b);
20991                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x30);
20992                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
20993                                         0xa);
20994                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
20995                                         0xa);
20996                 } else {
20997                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_R1,
20998                                         0x1f);
20999                         write_radio_reg(pi, RADIO_2057_CP_KPD_IDAC, 0x3f);
21000                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C1,
21001                                         0x8);
21002                         write_radio_reg(pi, RADIO_2057_RFPLL_LOOPFILTER_C2,
21003                                         0x8);
21004                 }
21005
21006         }
21007
21008         if (CHSPEC_IS2G(pi->radio_chanspec)) {
21009                 if (PHY_IPA(pi)) {
21010                         if (pi->pubpi.radiorev == 3)
21011                                 txmix2g_tune_boost_pu = 0x6b;
21012
21013                         if (pi->pubpi.radiorev == 5)
21014                                 pad2g_tune_pus = 0x73;
21015
21016                 } else {
21017                         if (pi->pubpi.radiorev != 5) {
21018                                 pad2g_tune_pus = 0x3;
21019
21020                                 txmix2g_tune_boost_pu = 0x61;
21021                         }
21022                 }
21023
21024                 for (coreNum = 0; coreNum <= 1; coreNum++) {
21025
21026                         if (txmix2g_tune_boost_pu != 0)
21027                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21028                                                  TXMIX2G_TUNE_BOOST_PU,
21029                                                  txmix2g_tune_boost_pu);
21030
21031                         if (pad2g_tune_pus != 0)
21032                                 WRITE_RADIO_REG4(pi, RADIO_2057, CORE, coreNum,
21033                                                  PAD2G_TUNE_PUS,
21034                                                  pad2g_tune_pus);
21035                 }
21036         }
21037
21038         udelay(50);
21039
21040         wlc_phy_radio205x_vcocal_nphy(pi);
21041 }
21042
21043 static void
21044 wlc_phy_chanspec_nphy_setup(struct brcms_phy *pi, u16 chanspec,
21045                             const struct nphy_sfo_cfg *ci)
21046 {
21047         u16 val;
21048
21049         val = read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand;
21050         if (CHSPEC_IS5G(chanspec) && !val) {
21051
21052                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21053                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21054                       (val | MAC_PHY_FORCE_CLK));
21055
21056                 or_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21057                            (BBCFG_RESETCCA | BBCFG_RESETRX));
21058
21059                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21060
21061                 or_phy_reg(pi, 0x09, NPHY_BandControl_currentBand);
21062         } else if (!CHSPEC_IS5G(chanspec) && val) {
21063
21064                 and_phy_reg(pi, 0x09, ~NPHY_BandControl_currentBand);
21065
21066                 val = bcma_read16(pi->d11core, D11REGOFFS(psm_phy_hdr_param));
21067                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param),
21068                       (val | MAC_PHY_FORCE_CLK));
21069
21070                 and_phy_reg(pi, (NPHY_TO_BPHY_OFF + BPHY_BB_CONFIG),
21071                             (u16) (~(BBCFG_RESETCCA | BBCFG_RESETRX)));
21072
21073                 bcma_write16(pi->d11core, D11REGOFFS(psm_phy_hdr_param), val);
21074         }
21075
21076         write_phy_reg(pi, 0x1ce, ci->PHY_BW1a);
21077         write_phy_reg(pi, 0x1cf, ci->PHY_BW2);
21078         write_phy_reg(pi, 0x1d0, ci->PHY_BW3);
21079
21080         write_phy_reg(pi, 0x1d1, ci->PHY_BW4);
21081         write_phy_reg(pi, 0x1d2, ci->PHY_BW5);
21082         write_phy_reg(pi, 0x1d3, ci->PHY_BW6);
21083
21084         if (CHSPEC_CHANNEL(pi->radio_chanspec) == 14) {
21085                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en, 0);
21086
21087                 or_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, 0x800);
21088         } else {
21089                 wlc_phy_classifier_nphy(pi, NPHY_ClassifierCtrl_ofdm_en,
21090                                         NPHY_ClassifierCtrl_ofdm_en);
21091
21092                 if (CHSPEC_IS2G(chanspec))
21093                         and_phy_reg(pi, NPHY_TO_BPHY_OFF + BPHY_TEST, ~0x840);
21094         }
21095
21096         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF)
21097                 wlc_phy_txpwr_fixpower_nphy(pi);
21098
21099         if (NREV_LT(pi->pubpi.phy_rev, 3))
21100                 wlc_phy_adjust_lnagaintbl_nphy(pi);
21101
21102         wlc_phy_txlpfbw_nphy(pi);
21103
21104         if (NREV_GE(pi->pubpi.phy_rev, 3)
21105             && (pi->phy_spuravoid != SPURAVOID_DISABLE)) {
21106                 u8 spuravoid = 0;
21107
21108                 val = CHSPEC_CHANNEL(chanspec);
21109                 if (!CHSPEC_IS40(pi->radio_chanspec)) {
21110                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21111                                 if ((val == 13) || (val == 14) || (val == 153))
21112                                         spuravoid = 1;
21113                         } else if (((val >= 5) && (val <= 8)) || (val == 13)
21114                                    || (val == 14)) {
21115                                 spuravoid = 1;
21116                         }
21117                 } else if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21118                         if (val == 54)
21119                                 spuravoid = 1;
21120                 } else if (pi->nphy_aband_spurwar_en &&
21121                     ((val == 38) || (val == 102) || (val == 118))) {
21122                         if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716)
21123                             && (pi->sh->chippkg == BCMA_PKG_ID_BCM4717)) {
21124                                 spuravoid = 0;
21125                         } else {
21126                                 spuravoid = 1;
21127                         }
21128                 }
21129
21130                 if (pi->phy_spuravoid == SPURAVOID_FORCEON)
21131                         spuravoid = 1;
21132
21133                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21134                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21135                         bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21136                                                      spuravoid);
21137                 } else {
21138                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, false);
21139                         bcma_pmu_spuravoid_pllupdate(&pi->d11core->bus->drv_cc,
21140                                                      spuravoid);
21141                         wlapi_bmac_core_phypll_ctl(pi->sh->physhim, true);
21142                 }
21143
21144                 if ((pi->sh->chip == BCMA_CHIP_ID_BCM43224) ||
21145                     (pi->sh->chip == BCMA_CHIP_ID_BCM43225)) {
21146                         if (spuravoid == 1) {
21147                                 bcma_write16(pi->d11core,
21148                                              D11REGOFFS(tsf_clk_frac_l),
21149                                              0x5341);
21150                                 bcma_write16(pi->d11core,
21151                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21152                         } else {
21153                                 bcma_write16(pi->d11core,
21154                                              D11REGOFFS(tsf_clk_frac_l),
21155                                              0x8889);
21156                                 bcma_write16(pi->d11core,
21157                                              D11REGOFFS(tsf_clk_frac_h), 0x8);
21158                         }
21159                 }
21160
21161                 if (!((pi->sh->chip == BCMA_CHIP_ID_BCM4716) ||
21162                       (pi->sh->chip == BCMA_CHIP_ID_BCM47162)))
21163                         wlapi_bmac_core_phypll_reset(pi->sh->physhim);
21164
21165                 mod_phy_reg(pi, 0x01, (0x1 << 15),
21166                             ((spuravoid > 0) ? (0x1 << 15) : 0));
21167
21168                 wlc_phy_resetcca_nphy(pi);
21169
21170                 pi->phy_isspuravoid = (spuravoid > 0);
21171         }
21172
21173         if (NREV_LT(pi->pubpi.phy_rev, 7))
21174                 write_phy_reg(pi, 0x17e, 0x3830);
21175
21176         wlc_phy_spurwar_nphy(pi);
21177 }
21178
21179 void wlc_phy_chanspec_set_nphy(struct brcms_phy *pi, u16 chanspec)
21180 {
21181         int freq;
21182         const struct chan_info_nphy_radio2057 *t0 = NULL;
21183         const struct chan_info_nphy_radio205x *t1 = NULL;
21184         const struct chan_info_nphy_radio2057_rev5 *t2 = NULL;
21185         const struct chan_info_nphy_2055 *t3 = NULL;
21186
21187         if (!wlc_phy_chan2freq_nphy
21188                     (pi, CHSPEC_CHANNEL(chanspec), &freq, &t0, &t1, &t2, &t3))
21189                 return;
21190
21191         wlc_phy_chanspec_radio_set((struct brcms_phy_pub *) pi, chanspec);
21192
21193         if (CHSPEC_BW(chanspec) != pi->bw)
21194                 wlapi_bmac_bw_set(pi->sh->physhim, CHSPEC_BW(chanspec));
21195
21196         if (CHSPEC_IS40(chanspec)) {
21197                 if (CHSPEC_SB_UPPER(chanspec)) {
21198                         or_phy_reg(pi, 0xa0, BPHY_BAND_SEL_UP20);
21199                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21200                                 or_phy_reg(pi, 0x310, PRIM_SEL_UP20);
21201                 } else {
21202                         and_phy_reg(pi, 0xa0, ~BPHY_BAND_SEL_UP20);
21203                         if (NREV_GE(pi->pubpi.phy_rev, 7))
21204                                 and_phy_reg(pi, 0x310,
21205                                             (~PRIM_SEL_UP20 & 0xffff));
21206                 }
21207         }
21208
21209         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21210                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21211
21212                         if ((pi->pubpi.radiorev <= 4)
21213                             || (pi->pubpi.radiorev == 6)) {
21214                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE0,
21215                                               0x2,
21216                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21217                                                : 0));
21218                                 mod_radio_reg(pi, RADIO_2057_TIA_CONFIG_CORE1,
21219                                               0x2,
21220                                               (CHSPEC_IS5G(chanspec) ? (1 << 1)
21221                                                : 0));
21222                         }
21223
21224                         wlc_phy_chanspec_radio2057_setup(pi, t0, t2);
21225                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21226                                 (pi->pubpi.radiorev == 5) ?
21227                                 (const struct nphy_sfo_cfg *)&(t2->PHY_BW1a) :
21228                                 (const struct nphy_sfo_cfg *)&(t0->PHY_BW1a));
21229
21230                 } else {
21231
21232                         mod_radio_reg(pi,
21233                                       RADIO_2056_SYN_COM_CTRL | RADIO_2056_SYN,
21234                                       0x4,
21235                                       (CHSPEC_IS5G(chanspec) ? (0x1 << 2) : 0));
21236                         wlc_phy_chanspec_radio2056_setup(pi, t1);
21237
21238                         wlc_phy_chanspec_nphy_setup(pi, chanspec,
21239                                 (const struct nphy_sfo_cfg *) &(t1->PHY_BW1a));
21240                 }
21241
21242         } else {
21243
21244                 mod_radio_reg(pi, RADIO_2055_MASTER_CNTRL1, 0x70,
21245                               (CHSPEC_IS5G(chanspec) ? (0x02 << 4)
21246                                : (0x05 << 4)));
21247
21248                 wlc_phy_chanspec_radio2055_setup(pi, t3);
21249                 wlc_phy_chanspec_nphy_setup(pi, chanspec,
21250                                             (const struct nphy_sfo_cfg *)
21251                                              &(t3->PHY_BW1a));
21252         }
21253
21254 }
21255
21256 void wlc_phy_antsel_init(struct brcms_phy_pub *ppi, bool lut_init)
21257 {
21258         struct brcms_phy *pi = container_of(ppi, struct brcms_phy, pubpi_ro);
21259         u16 mask = 0xfc00;
21260         u32 mc = 0;
21261
21262         if (NREV_GE(pi->pubpi.phy_rev, 7))
21263                 return;
21264
21265         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21266                 u16 v0 = 0x211, v1 = 0x222, v2 = 0x144, v3 = 0x188;
21267
21268                 if (!lut_init)
21269                         return;
21270
21271                 if (pi->srom_fem2g.antswctrllut == 0) {
21272                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21273                                                  1, 0x02, 16, &v0);
21274                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21275                                                  1, 0x03, 16, &v1);
21276                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21277                                                  1, 0x08, 16, &v2);
21278                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21279                                                  1, 0x0C, 16, &v3);
21280                 }
21281
21282                 if (pi->srom_fem5g.antswctrllut == 0) {
21283                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21284                                                  1, 0x12, 16, &v0);
21285                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21286                                                  1, 0x13, 16, &v1);
21287                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21288                                                  1, 0x18, 16, &v2);
21289                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_ANTSWCTRLLUT,
21290                                                  1, 0x1C, 16, &v3);
21291                 }
21292         } else {
21293
21294                 write_phy_reg(pi, 0xc8, 0x0);
21295                 write_phy_reg(pi, 0xc9, 0x0);
21296
21297                 bcma_chipco_gpio_control(&pi->d11core->bus->drv_cc, mask, mask);
21298
21299                 mc = bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
21300                 mc &= ~MCTL_GPOUT_SEL_MASK;
21301                 bcma_write32(pi->d11core, D11REGOFFS(maccontrol), mc);
21302
21303                 bcma_set16(pi->d11core, D11REGOFFS(psm_gpio_oe), mask);
21304
21305                 bcma_mask16(pi->d11core, D11REGOFFS(psm_gpio_out), ~mask);
21306
21307                 if (lut_init) {
21308                         write_phy_reg(pi, 0xf8, 0x02d8);
21309                         write_phy_reg(pi, 0xf9, 0x0301);
21310                         write_phy_reg(pi, 0xfa, 0x02d8);
21311                         write_phy_reg(pi, 0xfb, 0x0301);
21312                 }
21313         }
21314 }
21315
21316 u16 wlc_phy_classifier_nphy(struct brcms_phy *pi, u16 mask, u16 val)
21317 {
21318         u16 curr_ctl, new_ctl;
21319         bool suspended = false;
21320
21321         if (D11REV_IS(pi->sh->corerev, 16)) {
21322                 suspended = (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
21323                              MCTL_EN_MAC) ? false : true;
21324                 if (!suspended)
21325                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
21326         }
21327
21328         curr_ctl = read_phy_reg(pi, 0xb0) & (0x7 << 0);
21329
21330         new_ctl = (curr_ctl & (~mask)) | (val & mask);
21331
21332         mod_phy_reg(pi, 0xb0, (0x7 << 0), new_ctl);
21333
21334         if (D11REV_IS(pi->sh->corerev, 16) && !suspended)
21335                 wlapi_enable_mac(pi->sh->physhim);
21336
21337         return new_ctl;
21338 }
21339
21340 void wlc_phy_force_rfseq_nphy(struct brcms_phy *pi, u8 cmd)
21341 {
21342         u16 trigger_mask, status_mask;
21343         u16 orig_RfseqCoreActv;
21344
21345         switch (cmd) {
21346         case NPHY_RFSEQ_RX2TX:
21347                 trigger_mask = NPHY_RfseqTrigger_rx2tx;
21348                 status_mask = NPHY_RfseqStatus_rx2tx;
21349                 break;
21350         case NPHY_RFSEQ_TX2RX:
21351                 trigger_mask = NPHY_RfseqTrigger_tx2rx;
21352                 status_mask = NPHY_RfseqStatus_tx2rx;
21353                 break;
21354         case NPHY_RFSEQ_RESET2RX:
21355                 trigger_mask = NPHY_RfseqTrigger_reset2rx;
21356                 status_mask = NPHY_RfseqStatus_reset2rx;
21357                 break;
21358         case NPHY_RFSEQ_UPDATEGAINH:
21359                 trigger_mask = NPHY_RfseqTrigger_updategainh;
21360                 status_mask = NPHY_RfseqStatus_updategainh;
21361                 break;
21362         case NPHY_RFSEQ_UPDATEGAINL:
21363                 trigger_mask = NPHY_RfseqTrigger_updategainl;
21364                 status_mask = NPHY_RfseqStatus_updategainl;
21365                 break;
21366         case NPHY_RFSEQ_UPDATEGAINU:
21367                 trigger_mask = NPHY_RfseqTrigger_updategainu;
21368                 status_mask = NPHY_RfseqStatus_updategainu;
21369                 break;
21370         default:
21371                 return;
21372         }
21373
21374         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
21375         or_phy_reg(pi, 0xa1,
21376                    (NPHY_RfseqMode_CoreActv_override |
21377                     NPHY_RfseqMode_Trigger_override));
21378         or_phy_reg(pi, 0xa3, trigger_mask);
21379         SPINWAIT((read_phy_reg(pi, 0xa4) & status_mask), 200000);
21380         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
21381         WARN(read_phy_reg(pi, 0xa4) & status_mask, "HW error in rf");
21382 }
21383
21384 static void
21385 wlc_phy_rfctrl_override_1tomany_nphy(struct brcms_phy *pi, u16 cmd, u16 value,
21386                                      u8 core_mask, u8 off)
21387 {
21388         u16 rfmxgain = 0, lpfgain = 0;
21389         u16 tgain = 0;
21390
21391         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21392
21393                 switch (cmd) {
21394                 case NPHY_REV7_RfctrlOverride_cmd_rxrf_pu:
21395                         wlc_phy_rfctrl_override_nphy_rev7(
21396                                 pi, (0x1 << 5),
21397                                 value, core_mask, off,
21398                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21399                         wlc_phy_rfctrl_override_nphy_rev7(
21400                                 pi, (0x1 << 4), value,
21401                                 core_mask, off,
21402                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21403                         wlc_phy_rfctrl_override_nphy_rev7(
21404                                 pi, (0x1 << 3), value,
21405                                 core_mask, off,
21406                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21407                         break;
21408                 case NPHY_REV7_RfctrlOverride_cmd_rx_pu:
21409                         wlc_phy_rfctrl_override_nphy_rev7(
21410                                 pi, (0x1 << 2),
21411                                 value, core_mask, off,
21412                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21413                         wlc_phy_rfctrl_override_nphy_rev7(
21414                                 pi, (0x1 << 1), value,
21415                                 core_mask, off,
21416                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21417                         wlc_phy_rfctrl_override_nphy_rev7(
21418                                 pi, (0x1 << 0), value,
21419                                 core_mask, off,
21420                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21421                         wlc_phy_rfctrl_override_nphy_rev7(
21422                                 pi, (0x1 << 1), value,
21423                                 core_mask, off,
21424                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21425                         wlc_phy_rfctrl_override_nphy_rev7(
21426                                 pi, (0x1 << 11), 0,
21427                                 core_mask, off,
21428                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21429                         break;
21430                 case NPHY_REV7_RfctrlOverride_cmd_tx_pu:
21431                         wlc_phy_rfctrl_override_nphy_rev7(
21432                                 pi, (0x1 << 2),
21433                                 value, core_mask, off,
21434                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21435                         wlc_phy_rfctrl_override_nphy_rev7(
21436                                 pi, (0x1 << 1), value,
21437                                 core_mask, off,
21438                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21439                         wlc_phy_rfctrl_override_nphy_rev7(
21440                                 pi, (0x1 << 0), value,
21441                                 core_mask, off,
21442                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21443                         wlc_phy_rfctrl_override_nphy_rev7(
21444                                 pi, (0x1 << 2), value,
21445                                 core_mask, off,
21446                                 NPHY_REV7_RFCTRLOVERRIDE_ID2);
21447                         wlc_phy_rfctrl_override_nphy_rev7(
21448                                 pi, (0x1 << 11), 1,
21449                                 core_mask, off,
21450                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
21451                         break;
21452                 case NPHY_REV7_RfctrlOverride_cmd_rxgain:
21453                         rfmxgain = value & 0x000ff;
21454                         lpfgain = value & 0x0ff00;
21455                         lpfgain = lpfgain >> 8;
21456
21457                         wlc_phy_rfctrl_override_nphy_rev7(
21458                                 pi, (0x1 << 11),
21459                                 rfmxgain, core_mask,
21460                                 off,
21461                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21462                         wlc_phy_rfctrl_override_nphy_rev7(
21463                                 pi, (0x3 << 13),
21464                                 lpfgain, core_mask,
21465                                 off,
21466                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21467                         break;
21468                 case NPHY_REV7_RfctrlOverride_cmd_txgain:
21469                         tgain = value & 0x7fff;
21470                         lpfgain = value & 0x8000;
21471                         lpfgain = lpfgain >> 14;
21472
21473                         wlc_phy_rfctrl_override_nphy_rev7(
21474                                 pi, (0x1 << 12),
21475                                 tgain, core_mask, off,
21476                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21477                         wlc_phy_rfctrl_override_nphy_rev7(
21478                                 pi, (0x1 << 13),
21479                                 lpfgain, core_mask,
21480                                 off,
21481                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
21482                         break;
21483                 }
21484         }
21485 }
21486
21487 static void
21488 wlc_phy_scale_offset_rssi_nphy(struct brcms_phy *pi, u16 scale, s8 offset,
21489                                u8 coresel, u8 rail, u8 rssi_type)
21490 {
21491         u16 valuetostuff;
21492
21493         offset = (offset > NPHY_RSSICAL_MAXREAD) ?
21494                  NPHY_RSSICAL_MAXREAD : offset;
21495         offset = (offset < (-NPHY_RSSICAL_MAXREAD - 1)) ?
21496                  -NPHY_RSSICAL_MAXREAD - 1 : offset;
21497
21498         valuetostuff = ((scale & 0x3f) << 8) | (offset & 0x3f);
21499
21500         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21501              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21502             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21503                 write_phy_reg(pi, 0x1a6, valuetostuff);
21504
21505         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21506              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21507             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21508                 write_phy_reg(pi, 0x1ac, valuetostuff);
21509
21510         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21511              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21512             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_NB))
21513                 write_phy_reg(pi, 0x1b2, valuetostuff);
21514
21515         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21516              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21517             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_NB))
21518                 write_phy_reg(pi, 0x1b8, valuetostuff);
21519
21520         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21521              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21522             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21523                 write_phy_reg(pi, 0x1a4, valuetostuff);
21524
21525         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21526              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21527             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21528                 write_phy_reg(pi, 0x1aa, valuetostuff);
21529
21530         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21531              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21532             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W1))
21533                 write_phy_reg(pi, 0x1b0, valuetostuff);
21534
21535         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21536              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21537             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W1))
21538                 write_phy_reg(pi, 0x1b6, valuetostuff);
21539
21540         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21541              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21542             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21543                 write_phy_reg(pi, 0x1a5, valuetostuff);
21544         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21545              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21546             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21547                 write_phy_reg(pi, 0x1ab, valuetostuff);
21548
21549         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21550              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21551             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_W2))
21552                 write_phy_reg(pi, 0x1b1, valuetostuff);
21553
21554         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21555              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21556             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_W2))
21557                 write_phy_reg(pi, 0x1b7, valuetostuff);
21558
21559         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21560              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21561             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21562                 write_phy_reg(pi, 0x1a7, valuetostuff);
21563         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21564              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21565             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21566                 write_phy_reg(pi, 0x1ad, valuetostuff);
21567         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21568              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21569             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_TBD))
21570                 write_phy_reg(pi, 0x1b3, valuetostuff);
21571         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21572              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21573             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_TBD))
21574                 write_phy_reg(pi, 0x1b9, valuetostuff);
21575
21576         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21577              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21578             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21579                 write_phy_reg(pi, 0x1a8, valuetostuff);
21580
21581         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21582              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21583             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21584                 write_phy_reg(pi, 0x1ae, valuetostuff);
21585
21586         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21587              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21588             (rail == NPHY_RAIL_I) && (rssi_type == NPHY_RSSI_SEL_IQ))
21589                 write_phy_reg(pi, 0x1b4, valuetostuff);
21590
21591         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21592              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21593             (rail == NPHY_RAIL_Q) && (rssi_type == NPHY_RSSI_SEL_IQ))
21594                 write_phy_reg(pi, 0x1ba, valuetostuff);
21595
21596         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21597              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21598             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21599                 write_phy_reg(pi, 0x1a9, valuetostuff);
21600         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21601              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21602             (rssi_type == NPHY_RSSI_SEL_TSSI_2G))
21603                 write_phy_reg(pi, 0x1b5, valuetostuff);
21604
21605         if (((coresel == RADIO_MIMO_CORESEL_CORE1) ||
21606              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21607             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21608                 write_phy_reg(pi, 0x1af, valuetostuff);
21609
21610         if (((coresel == RADIO_MIMO_CORESEL_CORE2) ||
21611              (coresel == RADIO_MIMO_CORESEL_ALLRX)) &&
21612             (rssi_type == NPHY_RSSI_SEL_TSSI_5G))
21613                 write_phy_reg(pi, 0x1bb, valuetostuff);
21614 }
21615
21616 static void brcms_phy_wr_tx_mux(struct brcms_phy *pi, u8 core)
21617 {
21618         if (PHY_IPA(pi)) {
21619                 if (NREV_GE(pi->pubpi.phy_rev, 7))
21620                         write_radio_reg(pi,
21621                                         ((core == PHY_CORE_0) ?
21622                                          RADIO_2057_TX0_TX_SSI_MUX :
21623                                          RADIO_2057_TX1_TX_SSI_MUX),
21624                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21625                                         0xc : 0xe));
21626                 else
21627                         write_radio_reg(pi,
21628                                         RADIO_2056_TX_TX_SSI_MUX |
21629                                         ((core == PHY_CORE_0) ?
21630                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21631                                         (CHSPEC_IS5G(pi->radio_chanspec) ?
21632                                         0xc : 0xe));
21633         } else {
21634                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21635                         write_radio_reg(pi,
21636                                         ((core == PHY_CORE_0) ?
21637                                          RADIO_2057_TX0_TX_SSI_MUX :
21638                                          RADIO_2057_TX1_TX_SSI_MUX),
21639                                         0x11);
21640
21641                         if (pi->pubpi.radioid == BCM2057_ID)
21642                                 write_radio_reg(pi,
21643                                                 RADIO_2057_IQTEST_SEL_PU, 0x1);
21644
21645                 } else {
21646                         write_radio_reg(pi,
21647                                         RADIO_2056_TX_TX_SSI_MUX |
21648                                         ((core == PHY_CORE_0) ?
21649                                          RADIO_2056_TX0 : RADIO_2056_TX1),
21650                                         0x11);
21651                 }
21652         }
21653 }
21654
21655 void wlc_phy_rssisel_nphy(struct brcms_phy *pi, u8 core_code, u8 rssi_type)
21656 {
21657         u16 mask, val;
21658         u16 afectrlovr_rssi_val, rfctrlcmd_rxen_val, rfctrlcmd_coresel_val,
21659             startseq;
21660         u16 rfctrlovr_rssi_val, rfctrlovr_rxen_val, rfctrlovr_coresel_val,
21661             rfctrlovr_trigger_val;
21662         u16 afectrlovr_rssi_mask, rfctrlcmd_mask, rfctrlovr_mask;
21663         u16 rfctrlcmd_val, rfctrlovr_val;
21664         u8 core;
21665
21666         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21667                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21668                         mod_phy_reg(pi, 0x8f, (0x1 << 9), 0);
21669                         mod_phy_reg(pi, 0xa5, (0x1 << 9), 0);
21670
21671                         mod_phy_reg(pi, 0xa6, (0x3 << 8), 0);
21672                         mod_phy_reg(pi, 0xa7, (0x3 << 8), 0);
21673
21674                         mod_phy_reg(pi, 0xe5, (0x1 << 5), 0);
21675                         mod_phy_reg(pi, 0xe6, (0x1 << 5), 0);
21676
21677                         mask = (0x1 << 2) |
21678                                (0x1 << 3) | (0x1 << 4) | (0x1 << 5);
21679                         mod_phy_reg(pi, 0xf9, mask, 0);
21680                         mod_phy_reg(pi, 0xfb, mask, 0);
21681
21682                 } else {
21683                         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
21684                                 if (core_code == RADIO_MIMO_CORESEL_CORE1
21685                                     && core == PHY_CORE_1)
21686                                         continue;
21687                                 else if (core_code == RADIO_MIMO_CORESEL_CORE2
21688                                          && core == PHY_CORE_0)
21689                                         continue;
21690
21691                                 mod_phy_reg(pi, (core == PHY_CORE_0) ?
21692                                             0x8f : 0xa5, (0x1 << 9), 1 << 9);
21693
21694                                 if (rssi_type == NPHY_RSSI_SEL_W1 ||
21695                                     rssi_type == NPHY_RSSI_SEL_W2 ||
21696                                     rssi_type == NPHY_RSSI_SEL_NB) {
21697                                         mod_phy_reg(pi,
21698                                                     (core ==
21699                                                      PHY_CORE_0) ? 0xa6 : 0xa7,
21700                                                     (0x3 << 8), 0);
21701
21702                                         mask = (0x1 << 2) |
21703                                                (0x1 << 3) |
21704                                                (0x1 << 4) | (0x1 << 5);
21705                                         mod_phy_reg(pi,
21706                                                     (core ==
21707                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21708                                                     mask, 0);
21709
21710                                         if (rssi_type == NPHY_RSSI_SEL_W1) {
21711                                                 if (CHSPEC_IS5G(
21712                                                           pi->radio_chanspec)) {
21713                                                         mask = (0x1 << 2);
21714                                                         val = 1 << 2;
21715                                                 } else {
21716                                                         mask = (0x1 << 3);
21717                                                         val = 1 << 3;
21718                                                 }
21719                                         } else if (rssi_type ==
21720                                                    NPHY_RSSI_SEL_W2) {
21721                                                 mask = (0x1 << 4);
21722                                                 val = 1 << 4;
21723                                         } else {
21724                                                 mask = (0x1 << 5);
21725                                                 val = 1 << 5;
21726                                         }
21727                                         mod_phy_reg(pi,
21728                                                     (core ==
21729                                                      PHY_CORE_0) ? 0xf9 : 0xfb,
21730                                                     mask, val);
21731
21732                                         mask = (0x1 << 5);
21733                                         val = 1 << 5;
21734                                         mod_phy_reg(pi, (core == PHY_CORE_0) ?
21735                                                     0xe5 : 0xe6, mask, val);
21736                                 } else {
21737                                         if (rssi_type == NPHY_RSSI_SEL_TBD) {
21738                                                 mask = (0x3 << 8);
21739                                                 val = 1 << 8;
21740                                                 mod_phy_reg(pi,
21741                                                             (core ==
21742                                                              PHY_CORE_0) ? 0xa6
21743                                                             : 0xa7, mask, val);
21744                                                 mask = (0x3 << 10);
21745                                                 val = 1 << 10;
21746                                                 mod_phy_reg(pi,
21747                                                             (core ==
21748                                                              PHY_CORE_0) ? 0xa6
21749                                                             : 0xa7, mask, val);
21750                                         } else if (rssi_type ==
21751                                                    NPHY_RSSI_SEL_IQ) {
21752                                                 mask = (0x3 << 8);
21753                                                 val = 2 << 8;
21754                                                 mod_phy_reg(pi,
21755                                                             (core ==
21756                                                              PHY_CORE_0) ? 0xa6
21757                                                             : 0xa7, mask, val);
21758                                                 mask = (0x3 << 10);
21759                                                 val = 2 << 10;
21760                                                 mod_phy_reg(pi,
21761                                                             (core ==
21762                                                              PHY_CORE_0) ? 0xa6
21763                                                             : 0xa7, mask, val);
21764                                         } else {
21765                                                 mask = (0x3 << 8);
21766                                                 val = 3 << 8;
21767                                                 mod_phy_reg(pi,
21768                                                             (core ==
21769                                                              PHY_CORE_0) ? 0xa6
21770                                                             : 0xa7, mask, val);
21771                                                 mask = (0x3 << 10);
21772                                                 val = 3 << 10;
21773                                                 mod_phy_reg(pi,
21774                                                             (core ==
21775                                                              PHY_CORE_0) ? 0xa6
21776                                                             : 0xa7, mask, val);
21777                                                 brcms_phy_wr_tx_mux(pi, core);
21778                                                 afectrlovr_rssi_val = 1 << 9;
21779                                                 mod_phy_reg(pi,
21780                                                            (core ==
21781                                                             PHY_CORE_0) ? 0x8f
21782                                                            : 0xa5, (0x1 << 9),
21783                                                            afectrlovr_rssi_val);
21784                                         }
21785                                 }
21786                         }
21787                 }
21788         } else {
21789
21790                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21791                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21792                     (rssi_type == NPHY_RSSI_SEL_NB))
21793                         val = 0x0;
21794                 else if (rssi_type == NPHY_RSSI_SEL_TBD)
21795                         val = 0x1;
21796                 else if (rssi_type == NPHY_RSSI_SEL_IQ)
21797                         val = 0x2;
21798                 else
21799                         val = 0x3;
21800
21801                 mask = ((0x3 << 12) | (0x3 << 14));
21802                 val = (val << 12) | (val << 14);
21803                 mod_phy_reg(pi, 0xa6, mask, val);
21804                 mod_phy_reg(pi, 0xa7, mask, val);
21805
21806                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21807                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21808                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21809                         if (rssi_type == NPHY_RSSI_SEL_W1)
21810                                 val = 0x1;
21811                         if (rssi_type == NPHY_RSSI_SEL_W2)
21812                                 val = 0x2;
21813                         if (rssi_type == NPHY_RSSI_SEL_NB)
21814                                 val = 0x3;
21815
21816                         mask = (0x3 << 4);
21817                         val = (val << 4);
21818                         mod_phy_reg(pi, 0x7a, mask, val);
21819                         mod_phy_reg(pi, 0x7d, mask, val);
21820                 }
21821
21822                 if (core_code == RADIO_MIMO_CORESEL_OFF) {
21823                         afectrlovr_rssi_val = 0;
21824                         rfctrlcmd_rxen_val = 0;
21825                         rfctrlcmd_coresel_val = 0;
21826                         rfctrlovr_rssi_val = 0;
21827                         rfctrlovr_rxen_val = 0;
21828                         rfctrlovr_coresel_val = 0;
21829                         rfctrlovr_trigger_val = 0;
21830                         startseq = 0;
21831                 } else {
21832                         afectrlovr_rssi_val = 1;
21833                         rfctrlcmd_rxen_val = 1;
21834                         rfctrlcmd_coresel_val = core_code;
21835                         rfctrlovr_rssi_val = 1;
21836                         rfctrlovr_rxen_val = 1;
21837                         rfctrlovr_coresel_val = 1;
21838                         rfctrlovr_trigger_val = 1;
21839                         startseq = 1;
21840                 }
21841
21842                 afectrlovr_rssi_mask = ((0x1 << 12) | (0x1 << 13));
21843                 afectrlovr_rssi_val = (afectrlovr_rssi_val <<
21844                                        12) | (afectrlovr_rssi_val << 13);
21845                 mod_phy_reg(pi, 0xa5, afectrlovr_rssi_mask,
21846                             afectrlovr_rssi_val);
21847
21848                 if ((rssi_type == NPHY_RSSI_SEL_W1) ||
21849                     (rssi_type == NPHY_RSSI_SEL_W2) ||
21850                     (rssi_type == NPHY_RSSI_SEL_NB)) {
21851                         rfctrlcmd_mask = ((0x1 << 8) | (0x7 << 3));
21852                         rfctrlcmd_val = (rfctrlcmd_rxen_val << 8) |
21853                                         (rfctrlcmd_coresel_val << 3);
21854
21855                         rfctrlovr_mask = ((0x1 << 5) |
21856                                           (0x1 << 12) |
21857                                           (0x1 << 1) | (0x1 << 0));
21858                         rfctrlovr_val = (rfctrlovr_rssi_val <<
21859                                          5) |
21860                                         (rfctrlovr_rxen_val << 12) |
21861                                         (rfctrlovr_coresel_val << 1) |
21862                                         (rfctrlovr_trigger_val << 0);
21863
21864                         mod_phy_reg(pi, 0x78, rfctrlcmd_mask, rfctrlcmd_val);
21865                         mod_phy_reg(pi, 0xec, rfctrlovr_mask, rfctrlovr_val);
21866
21867                         mod_phy_reg(pi, 0x78, (0x1 << 0), (startseq << 0));
21868                         udelay(20);
21869
21870                         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
21871                 }
21872         }
21873 }
21874
21875 int
21876 wlc_phy_poll_rssi_nphy(struct brcms_phy *pi, u8 rssi_type, s32 *rssi_buf,
21877                        u8 nsamps)
21878 {
21879         s16 rssi0, rssi1;
21880         u16 afectrlCore1_save = 0;
21881         u16 afectrlCore2_save = 0;
21882         u16 afectrlOverride1_save = 0;
21883         u16 afectrlOverride2_save = 0;
21884         u16 rfctrlOverrideAux0_save = 0;
21885         u16 rfctrlOverrideAux1_save = 0;
21886         u16 rfctrlMiscReg1_save = 0;
21887         u16 rfctrlMiscReg2_save = 0;
21888         u16 rfctrlcmd_save = 0;
21889         u16 rfctrloverride_save = 0;
21890         u16 rfctrlrssiothers1_save = 0;
21891         u16 rfctrlrssiothers2_save = 0;
21892         s8 tmp_buf[4];
21893         u8 ctr = 0, samp = 0;
21894         s32 rssi_out_val;
21895         u16 gpiosel_orig;
21896
21897         afectrlCore1_save = read_phy_reg(pi, 0xa6);
21898         afectrlCore2_save = read_phy_reg(pi, 0xa7);
21899         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21900                 rfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
21901                 rfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
21902                 afectrlOverride1_save = read_phy_reg(pi, 0x8f);
21903                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
21904                 rfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
21905                 rfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
21906         } else {
21907                 afectrlOverride1_save = read_phy_reg(pi, 0xa5);
21908                 rfctrlcmd_save = read_phy_reg(pi, 0x78);
21909                 rfctrloverride_save = read_phy_reg(pi, 0xec);
21910                 rfctrlrssiothers1_save = read_phy_reg(pi, 0x7a);
21911                 rfctrlrssiothers2_save = read_phy_reg(pi, 0x7d);
21912         }
21913
21914         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
21915
21916         gpiosel_orig = read_phy_reg(pi, 0xca);
21917         if (NREV_LT(pi->pubpi.phy_rev, 2))
21918                 write_phy_reg(pi, 0xca, 5);
21919
21920         for (ctr = 0; ctr < 4; ctr++)
21921                 rssi_buf[ctr] = 0;
21922
21923         for (samp = 0; samp < nsamps; samp++) {
21924                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
21925                         rssi0 = read_phy_reg(pi, 0x1c9);
21926                         rssi1 = read_phy_reg(pi, 0x1ca);
21927                 } else {
21928                         rssi0 = read_phy_reg(pi, 0x219);
21929                         rssi1 = read_phy_reg(pi, 0x21a);
21930                 }
21931
21932                 ctr = 0;
21933                 tmp_buf[ctr++] = ((s8) ((rssi0 & 0x3f) << 2)) >> 2;
21934                 tmp_buf[ctr++] = ((s8) (((rssi0 >> 8) & 0x3f) << 2)) >> 2;
21935                 tmp_buf[ctr++] = ((s8) ((rssi1 & 0x3f) << 2)) >> 2;
21936                 tmp_buf[ctr++] = ((s8) (((rssi1 >> 8) & 0x3f) << 2)) >> 2;
21937
21938                 for (ctr = 0; ctr < 4; ctr++)
21939                         rssi_buf[ctr] += tmp_buf[ctr];
21940
21941         }
21942
21943         rssi_out_val = rssi_buf[3] & 0xff;
21944         rssi_out_val |= (rssi_buf[2] & 0xff) << 8;
21945         rssi_out_val |= (rssi_buf[1] & 0xff) << 16;
21946         rssi_out_val |= (rssi_buf[0] & 0xff) << 24;
21947
21948         if (NREV_LT(pi->pubpi.phy_rev, 2))
21949                 write_phy_reg(pi, 0xca, gpiosel_orig);
21950
21951         write_phy_reg(pi, 0xa6, afectrlCore1_save);
21952         write_phy_reg(pi, 0xa7, afectrlCore2_save);
21953         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
21954                 write_phy_reg(pi, 0xf9, rfctrlMiscReg1_save);
21955                 write_phy_reg(pi, 0xfb, rfctrlMiscReg2_save);
21956                 write_phy_reg(pi, 0x8f, afectrlOverride1_save);
21957                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
21958                 write_phy_reg(pi, 0xe5, rfctrlOverrideAux0_save);
21959                 write_phy_reg(pi, 0xe6, rfctrlOverrideAux1_save);
21960         } else {
21961                 write_phy_reg(pi, 0xa5, afectrlOverride1_save);
21962                 write_phy_reg(pi, 0x78, rfctrlcmd_save);
21963                 write_phy_reg(pi, 0xec, rfctrloverride_save);
21964                 write_phy_reg(pi, 0x7a, rfctrlrssiothers1_save);
21965                 write_phy_reg(pi, 0x7d, rfctrlrssiothers2_save);
21966         }
21967
21968         return rssi_out_val;
21969 }
21970
21971 s16 wlc_phy_tempsense_nphy(struct brcms_phy *pi)
21972 {
21973         u16 core1_txrf_iqcal1_save, core1_txrf_iqcal2_save;
21974         u16 core2_txrf_iqcal1_save, core2_txrf_iqcal2_save;
21975         u16 pwrdet_rxtx_core1_save;
21976         u16 pwrdet_rxtx_core2_save;
21977         u16 afectrlCore1_save;
21978         u16 afectrlCore2_save;
21979         u16 afectrlOverride_save;
21980         u16 afectrlOverride2_save;
21981         u16 pd_pll_ts_save;
21982         u16 gpioSel_save;
21983         s32 radio_temp[4];
21984         s32 radio_temp2[4];
21985         u16 syn_tempprocsense_save;
21986         s16 offset = 0;
21987
21988         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
21989                 u16 auxADC_Vmid, auxADC_Av, auxADC_Vmid_save, auxADC_Av_save;
21990                 u16 auxADC_rssi_ctrlL_save, auxADC_rssi_ctrlH_save;
21991                 u16 auxADC_rssi_ctrlL, auxADC_rssi_ctrlH;
21992                 s32 auxADC_Vl;
21993                 u16 RfctrlOverride5_save, RfctrlOverride6_save;
21994                 u16 RfctrlMiscReg5_save, RfctrlMiscReg6_save;
21995                 u16 RSSIMultCoef0QPowerDet_save;
21996                 u16 tempsense_Rcal;
21997
21998                 syn_tempprocsense_save =
21999                         read_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG);
22000
22001                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22002                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22003                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22004                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22005                 RSSIMultCoef0QPowerDet_save = read_phy_reg(pi, 0x1ae);
22006                 RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22007                 RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22008                 RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22009                 RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22010
22011                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22012                                         &auxADC_Vmid_save);
22013                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22014                                         &auxADC_Av_save);
22015                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22016                                         &auxADC_rssi_ctrlL_save);
22017                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22018                                         &auxADC_rssi_ctrlH_save);
22019
22020                 write_phy_reg(pi, 0x1ae, 0x0);
22021
22022                 auxADC_rssi_ctrlL = 0x0;
22023                 auxADC_rssi_ctrlH = 0x20;
22024                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22025                                          &auxADC_rssi_ctrlL);
22026                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22027                                          &auxADC_rssi_ctrlH);
22028
22029                 tempsense_Rcal = syn_tempprocsense_save & 0x1c;
22030
22031                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22032                                 tempsense_Rcal | 0x01);
22033
22034                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
22035                                                   1, 0, 0,
22036                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
22037                 mod_phy_reg(pi, 0xa6, (0x1 << 7), 0);
22038                 mod_phy_reg(pi, 0xa7, (0x1 << 7), 0);
22039                 mod_phy_reg(pi, 0x8f, (0x1 << 7), (0x1 << 7));
22040                 mod_phy_reg(pi, 0xa5, (0x1 << 7), (0x1 << 7));
22041
22042                 mod_phy_reg(pi, 0xa6, (0x1 << 2), (0x1 << 2));
22043                 mod_phy_reg(pi, 0xa7, (0x1 << 2), (0x1 << 2));
22044                 mod_phy_reg(pi, 0x8f, (0x1 << 2), (0x1 << 2));
22045                 mod_phy_reg(pi, 0xa5, (0x1 << 2), (0x1 << 2));
22046                 udelay(5);
22047                 mod_phy_reg(pi, 0xa6, (0x1 << 2), 0);
22048                 mod_phy_reg(pi, 0xa7, (0x1 << 2), 0);
22049                 mod_phy_reg(pi, 0xa6, (0x1 << 3), 0);
22050                 mod_phy_reg(pi, 0xa7, (0x1 << 3), 0);
22051                 mod_phy_reg(pi, 0x8f, (0x1 << 3), (0x1 << 3));
22052                 mod_phy_reg(pi, 0xa5, (0x1 << 3), (0x1 << 3));
22053                 mod_phy_reg(pi, 0xa6, (0x1 << 6), 0);
22054                 mod_phy_reg(pi, 0xa7, (0x1 << 6), 0);
22055                 mod_phy_reg(pi, 0x8f, (0x1 << 6), (0x1 << 6));
22056                 mod_phy_reg(pi, 0xa5, (0x1 << 6), (0x1 << 6));
22057
22058                 auxADC_Vmid = 0xA3;
22059                 auxADC_Av = 0x0;
22060                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22061                                          &auxADC_Vmid);
22062                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22063                                          &auxADC_Av);
22064
22065                 udelay(3);
22066
22067                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22068                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22069                                 tempsense_Rcal | 0x03);
22070
22071                 udelay(5);
22072                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22073
22074                 auxADC_Av = 0x7;
22075                 if (radio_temp[1] + radio_temp2[1] < -30) {
22076                         auxADC_Vmid = 0x45;
22077                         auxADC_Vl = 263;
22078                 } else if (radio_temp[1] + radio_temp2[1] < -9) {
22079                         auxADC_Vmid = 0x200;
22080                         auxADC_Vl = 467;
22081                 } else if (radio_temp[1] + radio_temp2[1] < 11) {
22082                         auxADC_Vmid = 0x266;
22083                         auxADC_Vl = 634;
22084                 } else {
22085                         auxADC_Vmid = 0x2D5;
22086                         auxADC_Vl = 816;
22087                 }
22088
22089                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22090                                          &auxADC_Vmid);
22091                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22092                                          &auxADC_Av);
22093
22094                 udelay(3);
22095
22096                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22097                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22098                                 tempsense_Rcal | 0x01);
22099
22100                 udelay(5);
22101                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22102
22103                 write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG,
22104                                 syn_tempprocsense_save);
22105
22106                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22107                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22108                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22109                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22110                 write_phy_reg(pi, 0x1ae, RSSIMultCoef0QPowerDet_save);
22111                 write_phy_reg(pi, 0x346, RfctrlOverride5_save);
22112                 write_phy_reg(pi, 0x347, RfctrlOverride6_save);
22113                 write_phy_reg(pi, 0x344, RfctrlMiscReg5_save);
22114                 write_phy_reg(pi, 0x345, RfctrlMiscReg5_save);
22115
22116                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0A, 16,
22117                                          &auxADC_Vmid_save);
22118                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x0E, 16,
22119                                          &auxADC_Av_save);
22120                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x02, 16,
22121                                          &auxADC_rssi_ctrlL_save);
22122                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 0x03, 16,
22123                                          &auxADC_rssi_ctrlH_save);
22124
22125                 if (pi->sh->chip == BCMA_CHIP_ID_BCM5357) {
22126                         radio_temp[0] = (193 * (radio_temp[1] + radio_temp2[1])
22127                                          + 88 * (auxADC_Vl) - 27111 +
22128                                          128) / 256;
22129                 } else {
22130                         radio_temp[0] = (179 * (radio_temp[1] + radio_temp2[1])
22131                                          + 82 * (auxADC_Vl) - 28861 +
22132                                          128) / 256;
22133                 }
22134
22135                 offset = (s16) pi->phy_tempsense_offset;
22136
22137         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22138                 syn_tempprocsense_save =
22139                         read_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE);
22140
22141                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22142                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22143                 afectrlOverride_save = read_phy_reg(pi, 0x8f);
22144                 afectrlOverride2_save = read_phy_reg(pi, 0xa5);
22145                 gpioSel_save = read_phy_reg(pi, 0xca);
22146
22147                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22148
22149                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22150                 if (NREV_LT(pi->pubpi.phy_rev, 7))
22151                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x05);
22152
22153                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22154                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22155                         write_radio_reg(pi, RADIO_2057_TEMPSENSE_CONFIG, 0x01);
22156                 else
22157                         write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE, 0x01);
22158
22159                 radio_temp[0] =
22160                         (126 * (radio_temp[1] + radio_temp2[1]) + 3987) / 64;
22161
22162                 write_radio_reg(pi, RADIO_2056_SYN_TEMPPROCSENSE,
22163                                 syn_tempprocsense_save);
22164
22165                 write_phy_reg(pi, 0xca, gpioSel_save);
22166                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22167                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22168                 write_phy_reg(pi, 0x8f, afectrlOverride_save);
22169                 write_phy_reg(pi, 0xa5, afectrlOverride2_save);
22170
22171                 offset = (s16) pi->phy_tempsense_offset;
22172         } else {
22173
22174                 pwrdet_rxtx_core1_save =
22175                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
22176                 pwrdet_rxtx_core2_save =
22177                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
22178                 core1_txrf_iqcal1_save =
22179                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
22180                 core1_txrf_iqcal2_save =
22181                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
22182                 core2_txrf_iqcal1_save =
22183                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
22184                 core2_txrf_iqcal2_save =
22185                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
22186                 pd_pll_ts_save = read_radio_reg(pi, RADIO_2055_PD_PLL_TS);
22187
22188                 afectrlCore1_save = read_phy_reg(pi, 0xa6);
22189                 afectrlCore2_save = read_phy_reg(pi, 0xa7);
22190                 afectrlOverride_save = read_phy_reg(pi, 0xa5);
22191                 gpioSel_save = read_phy_reg(pi, 0xca);
22192
22193                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x01);
22194                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x01);
22195                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x08);
22196                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x08);
22197                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
22198                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
22199                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, 0x00);
22200
22201                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22202                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22203
22204                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp, 1);
22205                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22206
22207                 wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_IQ, radio_temp2, 1);
22208                 xor_radio_reg(pi, RADIO_2055_CAL_TS, 0x80);
22209
22210                 radio_temp[0] = (radio_temp[0] + radio_temp2[0]);
22211                 radio_temp[1] = (radio_temp[1] + radio_temp2[1]);
22212                 radio_temp[2] = (radio_temp[2] + radio_temp2[2]);
22213                 radio_temp[3] = (radio_temp[3] + radio_temp2[3]);
22214
22215                 radio_temp[0] =
22216                         (radio_temp[0] + radio_temp[1] + radio_temp[2] +
22217                          radio_temp[3]);
22218
22219                 radio_temp[0] =
22220                         (radio_temp[0] +
22221                          (8 * 32)) * (950 - 350) / 63 + (350 * 8);
22222
22223                 radio_temp[0] = (radio_temp[0] - (8 * 420)) / 38;
22224
22225                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
22226                                 pwrdet_rxtx_core1_save);
22227                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
22228                                 pwrdet_rxtx_core2_save);
22229                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
22230                                 core1_txrf_iqcal1_save);
22231                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
22232                                 core2_txrf_iqcal1_save);
22233                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
22234                                 core1_txrf_iqcal2_save);
22235                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
22236                                 core2_txrf_iqcal2_save);
22237                 write_radio_reg(pi, RADIO_2055_PD_PLL_TS, pd_pll_ts_save);
22238
22239                 write_phy_reg(pi, 0xca, gpioSel_save);
22240                 write_phy_reg(pi, 0xa6, afectrlCore1_save);
22241                 write_phy_reg(pi, 0xa7, afectrlCore2_save);
22242                 write_phy_reg(pi, 0xa5, afectrlOverride_save);
22243         }
22244
22245         return (s16) radio_temp[0] + offset;
22246 }
22247
22248 static void
22249 wlc_phy_set_rssi_2055_vcm(struct brcms_phy *pi, u8 rssi_type, u8 *vcm_buf)
22250 {
22251         u8 core;
22252
22253         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22254                 if (rssi_type == NPHY_RSSI_SEL_NB) {
22255                         if (core == PHY_CORE_0) {
22256                                 mod_radio_reg(pi,
22257                                               RADIO_2055_CORE1_B0_NBRSSI_VCM,
22258                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22259                                               vcm_buf[2 *
22260                                                       core] <<
22261                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22262                                 mod_radio_reg(pi,
22263                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22264                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22265                                               vcm_buf[2 * core +
22266                                                       1] <<
22267                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22268                         } else {
22269                                 mod_radio_reg(pi,
22270                                               RADIO_2055_CORE2_B0_NBRSSI_VCM,
22271                                               RADIO_2055_NBRSSI_VCM_I_MASK,
22272                                               vcm_buf[2 *
22273                                                       core] <<
22274                                               RADIO_2055_NBRSSI_VCM_I_SHIFT);
22275                                 mod_radio_reg(pi,
22276                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22277                                               RADIO_2055_NBRSSI_VCM_Q_MASK,
22278                                               vcm_buf[2 * core +
22279                                                       1] <<
22280                                               RADIO_2055_NBRSSI_VCM_Q_SHIFT);
22281                         }
22282                 } else {
22283                         if (core == PHY_CORE_0)
22284                                 mod_radio_reg(pi,
22285                                               RADIO_2055_CORE1_RXBB_RSSI_CTRL5,
22286                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22287                                               vcm_buf[2 *
22288                                                       core] <<
22289                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22290                         else
22291                                 mod_radio_reg(pi,
22292                                               RADIO_2055_CORE2_RXBB_RSSI_CTRL5,
22293                                               RADIO_2055_WBRSSI_VCM_IQ_MASK,
22294                                               vcm_buf[2 *
22295                                                       core] <<
22296                                               RADIO_2055_WBRSSI_VCM_IQ_SHIFT);
22297                 }
22298         }
22299 }
22300
22301 static void wlc_phy_rssi_cal_nphy_rev3(struct brcms_phy *pi)
22302 {
22303         u16 classif_state;
22304         u16 clip_state[2];
22305         u16 clip_off[] = { 0xffff, 0xffff };
22306         s32 target_code;
22307         u8 vcm, min_vcm;
22308         u8 vcm_final = 0;
22309         u8 result_idx;
22310         s32 poll_results[8][4] = {
22311                 {0, 0, 0, 0},
22312                 {0, 0, 0, 0},
22313                 {0, 0, 0, 0},
22314                 {0, 0, 0, 0},
22315                 {0, 0, 0, 0},
22316                 {0, 0, 0, 0},
22317                 {0, 0, 0, 0},
22318                 {0, 0, 0, 0}
22319         };
22320         s32 poll_result_core[4] = { 0, 0, 0, 0 };
22321         s32 min_d = NPHY_RSSICAL_MAXD, curr_d;
22322         s32 fine_digital_offset[4];
22323         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22324         s32 min_poll;
22325         u8 vcm_level_max;
22326         u8 core;
22327         u8 wb_cnt;
22328         u8 rssi_type;
22329         u16 NPHY_Rfctrlintc1_save, NPHY_Rfctrlintc2_save;
22330         u16 NPHY_AfectrlOverride1_save, NPHY_AfectrlOverride2_save;
22331         u16 NPHY_AfectrlCore1_save, NPHY_AfectrlCore2_save;
22332         u16 NPHY_RfctrlOverride0_save, NPHY_RfctrlOverride1_save;
22333         u16 NPHY_RfctrlOverrideAux0_save, NPHY_RfctrlOverrideAux1_save;
22334         u16 NPHY_RfctrlCmd_save;
22335         u16 NPHY_RfctrlMiscReg1_save, NPHY_RfctrlMiscReg2_save;
22336         u16 NPHY_RfctrlRSSIOTHERS1_save, NPHY_RfctrlRSSIOTHERS2_save;
22337         u8 rxcore_state;
22338         u16 NPHY_REV7_RfctrlOverride3_save, NPHY_REV7_RfctrlOverride4_save;
22339         u16 NPHY_REV7_RfctrlOverride5_save, NPHY_REV7_RfctrlOverride6_save;
22340         u16 NPHY_REV7_RfctrlMiscReg3_save, NPHY_REV7_RfctrlMiscReg4_save;
22341         u16 NPHY_REV7_RfctrlMiscReg5_save, NPHY_REV7_RfctrlMiscReg6_save;
22342
22343         NPHY_REV7_RfctrlOverride3_save =
22344                 NPHY_REV7_RfctrlOverride4_save =
22345                 NPHY_REV7_RfctrlOverride5_save =
22346                 NPHY_REV7_RfctrlOverride6_save =
22347                 NPHY_REV7_RfctrlMiscReg3_save =
22348                 NPHY_REV7_RfctrlMiscReg4_save =
22349                 NPHY_REV7_RfctrlMiscReg5_save =
22350                 NPHY_REV7_RfctrlMiscReg6_save = 0;
22351
22352         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22353         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22354         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22355         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22356
22357         NPHY_Rfctrlintc1_save = read_phy_reg(pi, 0x91);
22358         NPHY_Rfctrlintc2_save = read_phy_reg(pi, 0x92);
22359         NPHY_AfectrlOverride1_save = read_phy_reg(pi, 0x8f);
22360         NPHY_AfectrlOverride2_save = read_phy_reg(pi, 0xa5);
22361         NPHY_AfectrlCore1_save = read_phy_reg(pi, 0xa6);
22362         NPHY_AfectrlCore2_save = read_phy_reg(pi, 0xa7);
22363         NPHY_RfctrlOverride0_save = read_phy_reg(pi, 0xe7);
22364         NPHY_RfctrlOverride1_save = read_phy_reg(pi, 0xec);
22365         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22366                 NPHY_REV7_RfctrlOverride3_save = read_phy_reg(pi, 0x342);
22367                 NPHY_REV7_RfctrlOverride4_save = read_phy_reg(pi, 0x343);
22368                 NPHY_REV7_RfctrlOverride5_save = read_phy_reg(pi, 0x346);
22369                 NPHY_REV7_RfctrlOverride6_save = read_phy_reg(pi, 0x347);
22370         }
22371         NPHY_RfctrlOverrideAux0_save = read_phy_reg(pi, 0xe5);
22372         NPHY_RfctrlOverrideAux1_save = read_phy_reg(pi, 0xe6);
22373         NPHY_RfctrlCmd_save = read_phy_reg(pi, 0x78);
22374         NPHY_RfctrlMiscReg1_save = read_phy_reg(pi, 0xf9);
22375         NPHY_RfctrlMiscReg2_save = read_phy_reg(pi, 0xfb);
22376         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22377                 NPHY_REV7_RfctrlMiscReg3_save = read_phy_reg(pi, 0x340);
22378                 NPHY_REV7_RfctrlMiscReg4_save = read_phy_reg(pi, 0x341);
22379                 NPHY_REV7_RfctrlMiscReg5_save = read_phy_reg(pi, 0x344);
22380                 NPHY_REV7_RfctrlMiscReg6_save = read_phy_reg(pi, 0x345);
22381         }
22382         NPHY_RfctrlRSSIOTHERS1_save = read_phy_reg(pi, 0x7a);
22383         NPHY_RfctrlRSSIOTHERS2_save = read_phy_reg(pi, 0x7d);
22384
22385         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_OFF, 0,
22386                                          RADIO_MIMO_CORESEL_ALLRXTX);
22387         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_TRSW, 1,
22388                                          RADIO_MIMO_CORESEL_ALLRXTX);
22389
22390         if (NREV_GE(pi->pubpi.phy_rev, 7))
22391                 wlc_phy_rfctrl_override_1tomany_nphy(
22392                         pi,
22393                         NPHY_REV7_RfctrlOverride_cmd_rxrf_pu,
22394                         0, 0, 0);
22395         else
22396                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0, 0);
22397
22398         if (NREV_GE(pi->pubpi.phy_rev, 7))
22399                 wlc_phy_rfctrl_override_1tomany_nphy(
22400                         pi,
22401                         NPHY_REV7_RfctrlOverride_cmd_rx_pu,
22402                         1, 0, 0);
22403         else
22404                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0, 0);
22405
22406         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22407                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
22408                                                   1, 0, 0,
22409                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22410                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 6), 1, 0, 0,
22411                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
22412         } else {
22413                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 7), 1, 0, 0);
22414                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 6), 1, 0, 0);
22415         }
22416
22417         if (CHSPEC_IS5G(pi->radio_chanspec)) {
22418                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22419                         wlc_phy_rfctrl_override_nphy_rev7(
22420                                 pi, (0x1 << 5),
22421                                 0, 0, 0,
22422                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22423                         wlc_phy_rfctrl_override_nphy_rev7(
22424                                 pi, (0x1 << 4), 1, 0,
22425                                 0,
22426                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22427                 } else {
22428                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 0, 0, 0);
22429                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 1, 0, 0);
22430                 }
22431
22432         } else {
22433                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22434                         wlc_phy_rfctrl_override_nphy_rev7(
22435                                 pi, (0x1 << 4),
22436                                 0, 0, 0,
22437                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22438                         wlc_phy_rfctrl_override_nphy_rev7(
22439                                 pi, (0x1 << 5), 1, 0,
22440                                 0,
22441                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
22442                 } else {
22443                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 4), 0, 0, 0);
22444                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 5), 1, 0, 0);
22445                 }
22446         }
22447
22448         rxcore_state = wlc_phy_rxcore_getstate_nphy(
22449                 (struct brcms_phy_pub *) pi);
22450
22451         vcm_level_max = 8;
22452
22453         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22454
22455                 if ((rxcore_state & (1 << core)) == 0)
22456                         continue;
22457
22458                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22459                                                core ==
22460                                                PHY_CORE_0 ?
22461                                                RADIO_MIMO_CORESEL_CORE1 :
22462                                                RADIO_MIMO_CORESEL_CORE2,
22463                                                NPHY_RAIL_I, NPHY_RSSI_SEL_NB);
22464                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22465                                                core ==
22466                                                PHY_CORE_0 ?
22467                                                RADIO_MIMO_CORESEL_CORE1 :
22468                                                RADIO_MIMO_CORESEL_CORE2,
22469                                                NPHY_RAIL_Q, NPHY_RSSI_SEL_NB);
22470
22471                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22472                         if (NREV_GE(pi->pubpi.phy_rev, 7))
22473                                 mod_radio_reg(pi, (core == PHY_CORE_0) ?
22474                                               RADIO_2057_NB_MASTER_CORE0 :
22475                                               RADIO_2057_NB_MASTER_CORE1,
22476                                               RADIO_2057_VCM_MASK, vcm);
22477                         else
22478                                 mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22479                                               ((core ==
22480                                                 PHY_CORE_0) ? RADIO_2056_RX0 :
22481                                                RADIO_2056_RX1),
22482                                               RADIO_2056_VCM_MASK,
22483                                               vcm << RADIO_2056_RSSI_VCM_SHIFT);
22484
22485                         wlc_phy_poll_rssi_nphy(pi, NPHY_RSSI_SEL_NB,
22486                                                &poll_results[vcm][0],
22487                                                NPHY_RSSICAL_NPOLL);
22488                 }
22489
22490                 for (result_idx = 0; result_idx < 4; result_idx++) {
22491                         if ((core == result_idx / 2) &&
22492                             (result_idx % 2 == 0)) {
22493
22494                                 min_d = NPHY_RSSICAL_MAXD;
22495                                 min_vcm = 0;
22496                                 min_poll =
22497                                         NPHY_RSSICAL_MAXREAD *
22498                                         NPHY_RSSICAL_NPOLL + 1;
22499                                 for (vcm = 0; vcm < vcm_level_max; vcm++) {
22500                                         curr_d =
22501                                                 poll_results[vcm][result_idx] *
22502                                                 poll_results[vcm][result_idx] +
22503                                                 poll_results[vcm][result_idx +
22504                                                                   1] *
22505                                                 poll_results[vcm][result_idx +
22506                                                                   1];
22507                                         if (curr_d < min_d) {
22508                                                 min_d = curr_d;
22509                                                 min_vcm = vcm;
22510                                         }
22511                                         if (poll_results[vcm][result_idx] <
22512                                             min_poll)
22513                                                 min_poll =
22514                                                         poll_results[vcm]
22515                                                         [result_idx];
22516                                 }
22517                                 vcm_final = min_vcm;
22518                                 poll_results_min[result_idx] = min_poll;
22519                         }
22520                 }
22521
22522                 if (NREV_GE(pi->pubpi.phy_rev, 7))
22523                         mod_radio_reg(pi, (core == PHY_CORE_0) ?
22524                                       RADIO_2057_NB_MASTER_CORE0 :
22525                                       RADIO_2057_NB_MASTER_CORE1,
22526                                       RADIO_2057_VCM_MASK, vcm_final);
22527                 else
22528                         mod_radio_reg(pi, RADIO_2056_RX_RSSI_MISC |
22529                                       ((core ==
22530                                         PHY_CORE_0) ? RADIO_2056_RX0 :
22531                                        RADIO_2056_RX1), RADIO_2056_VCM_MASK,
22532                                       vcm_final << RADIO_2056_RSSI_VCM_SHIFT);
22533
22534                 for (result_idx = 0; result_idx < 4; result_idx++) {
22535                         if (core == result_idx / 2) {
22536                                 fine_digital_offset[result_idx] =
22537                                         (NPHY_RSSICAL_NB_TARGET *
22538                                          NPHY_RSSICAL_NPOLL) -
22539                                         poll_results[vcm_final][result_idx];
22540                                 if (fine_digital_offset[result_idx] < 0) {
22541                                         fine_digital_offset[result_idx] =
22542                                                 abs(fine_digital_offset
22543                                                     [result_idx]);
22544                                         fine_digital_offset[result_idx] +=
22545                                                 (NPHY_RSSICAL_NPOLL / 2);
22546                                         fine_digital_offset[result_idx] /=
22547                                                 NPHY_RSSICAL_NPOLL;
22548                                         fine_digital_offset[result_idx] =
22549                                                 -fine_digital_offset[
22550                                                                     result_idx];
22551                                 } else {
22552                                         fine_digital_offset[result_idx] +=
22553                                                 (NPHY_RSSICAL_NPOLL / 2);
22554                                         fine_digital_offset[result_idx] /=
22555                                                 NPHY_RSSICAL_NPOLL;
22556                                 }
22557
22558                                 if (poll_results_min[result_idx] ==
22559                                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22560                                         fine_digital_offset[result_idx] =
22561                                                 (NPHY_RSSICAL_NB_TARGET -
22562                                                  NPHY_RSSICAL_MAXREAD - 1);
22563
22564                                 wlc_phy_scale_offset_rssi_nphy(
22565                                         pi, 0x0,
22566                                         (s8)
22567                                         fine_digital_offset
22568                                         [result_idx],
22569                                         (result_idx / 2 == 0) ?
22570                                         RADIO_MIMO_CORESEL_CORE1 :
22571                                         RADIO_MIMO_CORESEL_CORE2,
22572                                         (result_idx % 2 == 0) ?
22573                                         NPHY_RAIL_I : NPHY_RAIL_Q,
22574                                         NPHY_RSSI_SEL_NB);
22575                         }
22576                 }
22577
22578         }
22579
22580         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
22581
22582                 if ((rxcore_state & (1 << core)) == 0)
22583                         continue;
22584
22585                 for (wb_cnt = 0; wb_cnt < 2; wb_cnt++) {
22586                         if (wb_cnt == 0) {
22587                                 rssi_type = NPHY_RSSI_SEL_W1;
22588                                 target_code = NPHY_RSSICAL_W1_TARGET_REV3;
22589                         } else {
22590                                 rssi_type = NPHY_RSSI_SEL_W2;
22591                                 target_code = NPHY_RSSICAL_W2_TARGET_REV3;
22592                         }
22593
22594                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22595                                                        core ==
22596                                                        PHY_CORE_0 ?
22597                                                        RADIO_MIMO_CORESEL_CORE1
22598                                                        :
22599                                                        RADIO_MIMO_CORESEL_CORE2,
22600                                                        NPHY_RAIL_I, rssi_type);
22601                         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0,
22602                                                        core ==
22603                                                        PHY_CORE_0 ?
22604                                                        RADIO_MIMO_CORESEL_CORE1
22605                                                        :
22606                                                        RADIO_MIMO_CORESEL_CORE2,
22607                                                        NPHY_RAIL_Q, rssi_type);
22608
22609                         wlc_phy_poll_rssi_nphy(pi, rssi_type, poll_result_core,
22610                                                NPHY_RSSICAL_NPOLL);
22611
22612                         for (result_idx = 0; result_idx < 4; result_idx++) {
22613                                 if (core == result_idx / 2) {
22614                                         fine_digital_offset[result_idx] =
22615                                                 (target_code *
22616                                                  NPHY_RSSICAL_NPOLL) -
22617                                                 poll_result_core[result_idx];
22618                                         if (fine_digital_offset[result_idx] <
22619                                             0) {
22620                                                 fine_digital_offset[result_idx]
22621                                                         = abs(
22622                                                             fine_digital_offset
22623                                                             [result_idx]);
22624                                                 fine_digital_offset[result_idx]
22625                                                         += (NPHY_RSSICAL_NPOLL
22626                                                             / 2);
22627                                                 fine_digital_offset[result_idx]
22628                                                         /= NPHY_RSSICAL_NPOLL;
22629                                                 fine_digital_offset[result_idx]
22630                                                         = -fine_digital_offset
22631                                                                 [result_idx];
22632                                         } else {
22633                                                 fine_digital_offset[result_idx]
22634                                                         += (NPHY_RSSICAL_NPOLL
22635                                                             / 2);
22636                                                 fine_digital_offset[result_idx]
22637                                                         /= NPHY_RSSICAL_NPOLL;
22638                                         }
22639
22640                                         wlc_phy_scale_offset_rssi_nphy(
22641                                                 pi, 0x0,
22642                                                 (s8)
22643                                                 fine_digital_offset
22644                                                 [core *
22645                                                  2],
22646                                                 (core == PHY_CORE_0) ?
22647                                                 RADIO_MIMO_CORESEL_CORE1 :
22648                                                 RADIO_MIMO_CORESEL_CORE2,
22649                                                 (result_idx % 2 == 0) ?
22650                                                 NPHY_RAIL_I :
22651                                                 NPHY_RAIL_Q,
22652                                                 rssi_type);
22653                                 }
22654                         }
22655
22656                 }
22657         }
22658
22659         write_phy_reg(pi, 0x91, NPHY_Rfctrlintc1_save);
22660         write_phy_reg(pi, 0x92, NPHY_Rfctrlintc2_save);
22661
22662         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
22663
22664         mod_phy_reg(pi, 0xe7, (0x1 << 0), 1 << 0);
22665         mod_phy_reg(pi, 0x78, (0x1 << 0), 1 << 0);
22666         mod_phy_reg(pi, 0xe7, (0x1 << 0), 0);
22667
22668         mod_phy_reg(pi, 0xec, (0x1 << 0), 1 << 0);
22669         mod_phy_reg(pi, 0x78, (0x1 << 1), 1 << 1);
22670         mod_phy_reg(pi, 0xec, (0x1 << 0), 0);
22671
22672         write_phy_reg(pi, 0x8f, NPHY_AfectrlOverride1_save);
22673         write_phy_reg(pi, 0xa5, NPHY_AfectrlOverride2_save);
22674         write_phy_reg(pi, 0xa6, NPHY_AfectrlCore1_save);
22675         write_phy_reg(pi, 0xa7, NPHY_AfectrlCore2_save);
22676         write_phy_reg(pi, 0xe7, NPHY_RfctrlOverride0_save);
22677         write_phy_reg(pi, 0xec, NPHY_RfctrlOverride1_save);
22678         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22679                 write_phy_reg(pi, 0x342, NPHY_REV7_RfctrlOverride3_save);
22680                 write_phy_reg(pi, 0x343, NPHY_REV7_RfctrlOverride4_save);
22681                 write_phy_reg(pi, 0x346, NPHY_REV7_RfctrlOverride5_save);
22682                 write_phy_reg(pi, 0x347, NPHY_REV7_RfctrlOverride6_save);
22683         }
22684         write_phy_reg(pi, 0xe5, NPHY_RfctrlOverrideAux0_save);
22685         write_phy_reg(pi, 0xe6, NPHY_RfctrlOverrideAux1_save);
22686         write_phy_reg(pi, 0x78, NPHY_RfctrlCmd_save);
22687         write_phy_reg(pi, 0xf9, NPHY_RfctrlMiscReg1_save);
22688         write_phy_reg(pi, 0xfb, NPHY_RfctrlMiscReg2_save);
22689         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22690                 write_phy_reg(pi, 0x340, NPHY_REV7_RfctrlMiscReg3_save);
22691                 write_phy_reg(pi, 0x341, NPHY_REV7_RfctrlMiscReg4_save);
22692                 write_phy_reg(pi, 0x344, NPHY_REV7_RfctrlMiscReg5_save);
22693                 write_phy_reg(pi, 0x345, NPHY_REV7_RfctrlMiscReg6_save);
22694         }
22695         write_phy_reg(pi, 0x7a, NPHY_RfctrlRSSIOTHERS1_save);
22696         write_phy_reg(pi, 0x7d, NPHY_RfctrlRSSIOTHERS2_save);
22697
22698         if (CHSPEC_IS2G(pi->radio_chanspec)) {
22699                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22700                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22701                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22702                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22703                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22704                 } else {
22705                         pi->rssical_cache.rssical_radio_regs_2G[0] =
22706                                 read_radio_reg(pi,
22707                                                RADIO_2056_RX_RSSI_MISC |
22708                                                RADIO_2056_RX0);
22709                         pi->rssical_cache.rssical_radio_regs_2G[1] =
22710                                 read_radio_reg(pi,
22711                                                RADIO_2056_RX_RSSI_MISC |
22712                                                RADIO_2056_RX1);
22713                 }
22714
22715                 pi->rssical_cache.rssical_phyregs_2G[0] =
22716                         read_phy_reg(pi, 0x1a6);
22717                 pi->rssical_cache.rssical_phyregs_2G[1] =
22718                         read_phy_reg(pi, 0x1ac);
22719                 pi->rssical_cache.rssical_phyregs_2G[2] =
22720                         read_phy_reg(pi, 0x1b2);
22721                 pi->rssical_cache.rssical_phyregs_2G[3] =
22722                         read_phy_reg(pi, 0x1b8);
22723                 pi->rssical_cache.rssical_phyregs_2G[4] =
22724                         read_phy_reg(pi, 0x1a4);
22725                 pi->rssical_cache.rssical_phyregs_2G[5] =
22726                         read_phy_reg(pi, 0x1aa);
22727                 pi->rssical_cache.rssical_phyregs_2G[6] =
22728                         read_phy_reg(pi, 0x1b0);
22729                 pi->rssical_cache.rssical_phyregs_2G[7] =
22730                         read_phy_reg(pi, 0x1b6);
22731                 pi->rssical_cache.rssical_phyregs_2G[8] =
22732                         read_phy_reg(pi, 0x1a5);
22733                 pi->rssical_cache.rssical_phyregs_2G[9] =
22734                         read_phy_reg(pi, 0x1ab);
22735                 pi->rssical_cache.rssical_phyregs_2G[10] =
22736                         read_phy_reg(pi, 0x1b1);
22737                 pi->rssical_cache.rssical_phyregs_2G[11] =
22738                         read_phy_reg(pi, 0x1b7);
22739
22740                 pi->nphy_rssical_chanspec_2G = pi->radio_chanspec;
22741         } else {
22742                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
22743                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22744                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE0);
22745                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22746                                 read_radio_reg(pi, RADIO_2057_NB_MASTER_CORE1);
22747                 } else {
22748                         pi->rssical_cache.rssical_radio_regs_5G[0] =
22749                                 read_radio_reg(pi,
22750                                                RADIO_2056_RX_RSSI_MISC |
22751                                                RADIO_2056_RX0);
22752                         pi->rssical_cache.rssical_radio_regs_5G[1] =
22753                                 read_radio_reg(pi,
22754                                                RADIO_2056_RX_RSSI_MISC |
22755                                                RADIO_2056_RX1);
22756                 }
22757
22758                 pi->rssical_cache.rssical_phyregs_5G[0] =
22759                         read_phy_reg(pi, 0x1a6);
22760                 pi->rssical_cache.rssical_phyregs_5G[1] =
22761                         read_phy_reg(pi, 0x1ac);
22762                 pi->rssical_cache.rssical_phyregs_5G[2] =
22763                         read_phy_reg(pi, 0x1b2);
22764                 pi->rssical_cache.rssical_phyregs_5G[3] =
22765                         read_phy_reg(pi, 0x1b8);
22766                 pi->rssical_cache.rssical_phyregs_5G[4] =
22767                         read_phy_reg(pi, 0x1a4);
22768                 pi->rssical_cache.rssical_phyregs_5G[5] =
22769                         read_phy_reg(pi, 0x1aa);
22770                 pi->rssical_cache.rssical_phyregs_5G[6] =
22771                         read_phy_reg(pi, 0x1b0);
22772                 pi->rssical_cache.rssical_phyregs_5G[7] =
22773                         read_phy_reg(pi, 0x1b6);
22774                 pi->rssical_cache.rssical_phyregs_5G[8] =
22775                         read_phy_reg(pi, 0x1a5);
22776                 pi->rssical_cache.rssical_phyregs_5G[9] =
22777                         read_phy_reg(pi, 0x1ab);
22778                 pi->rssical_cache.rssical_phyregs_5G[10] =
22779                         read_phy_reg(pi, 0x1b1);
22780                 pi->rssical_cache.rssical_phyregs_5G[11] =
22781                         read_phy_reg(pi, 0x1b7);
22782
22783                 pi->nphy_rssical_chanspec_5G = pi->radio_chanspec;
22784         }
22785
22786         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22787         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22788 }
22789
22790 static void wlc_phy_rssi_cal_nphy_rev2(struct brcms_phy *pi, u8 rssi_type)
22791 {
22792         s32 target_code;
22793         u16 classif_state;
22794         u16 clip_state[2];
22795         u16 rssi_ctrl_state[2], pd_state[2];
22796         u16 rfctrlintc_state[2], rfpdcorerxtx_state[2];
22797         u16 rfctrlintc_override_val;
22798         u16 clip_off[] = { 0xffff, 0xffff };
22799         u16 rf_pd_val, pd_mask, rssi_ctrl_mask;
22800         u8 vcm, min_vcm, vcm_tmp[4];
22801         u8 vcm_final[4] = { 0, 0, 0, 0 };
22802         u8 result_idx, ctr;
22803         s32 poll_results[4][4] = {
22804                 {0, 0, 0, 0},
22805                 {0, 0, 0, 0},
22806                 {0, 0, 0, 0},
22807                 {0, 0, 0, 0}
22808         };
22809         s32 poll_miniq[4][2] = {
22810                 {0, 0},
22811                 {0, 0},
22812                 {0, 0},
22813                 {0, 0}
22814         };
22815         s32 min_d, curr_d;
22816         s32 fine_digital_offset[4];
22817         s32 poll_results_min[4] = { 0, 0, 0, 0 };
22818         s32 min_poll;
22819
22820         switch (rssi_type) {
22821         case NPHY_RSSI_SEL_NB:
22822                 target_code = NPHY_RSSICAL_NB_TARGET;
22823                 break;
22824         case NPHY_RSSI_SEL_W1:
22825                 target_code = NPHY_RSSICAL_W1_TARGET;
22826                 break;
22827         case NPHY_RSSI_SEL_W2:
22828                 target_code = NPHY_RSSICAL_W2_TARGET;
22829                 break;
22830         default:
22831                 return;
22832         }
22833
22834         classif_state = wlc_phy_classifier_nphy(pi, 0, 0);
22835         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
22836         wlc_phy_clip_det_nphy(pi, 0, clip_state);
22837         wlc_phy_clip_det_nphy(pi, 1, clip_off);
22838
22839         rf_pd_val = (rssi_type == NPHY_RSSI_SEL_NB) ? 0x6 : 0x4;
22840         rfctrlintc_override_val =
22841                 CHSPEC_IS5G(pi->radio_chanspec) ? 0x140 : 0x110;
22842
22843         rfctrlintc_state[0] = read_phy_reg(pi, 0x91);
22844         rfpdcorerxtx_state[0] = read_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX);
22845         write_phy_reg(pi, 0x91, rfctrlintc_override_val);
22846         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rf_pd_val);
22847
22848         rfctrlintc_state[1] = read_phy_reg(pi, 0x92);
22849         rfpdcorerxtx_state[1] = read_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX);
22850         write_phy_reg(pi, 0x92, rfctrlintc_override_val);
22851         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rf_pd_val);
22852
22853         pd_mask = RADIO_2055_NBRSSI_PD | RADIO_2055_WBRSSI_G1_PD |
22854                   RADIO_2055_WBRSSI_G2_PD;
22855         pd_state[0] =
22856                 read_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC) & pd_mask;
22857         pd_state[1] =
22858                 read_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC) & pd_mask;
22859         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, 0);
22860         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, 0);
22861         rssi_ctrl_mask = RADIO_2055_NBRSSI_SEL | RADIO_2055_WBRSSI_G1_SEL |
22862                          RADIO_2055_WBRSSI_G2_SEL;
22863         rssi_ctrl_state[0] =
22864                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE1) & rssi_ctrl_mask;
22865         rssi_ctrl_state[1] =
22866                 read_radio_reg(pi, RADIO_2055_SP_RSSI_CORE2) & rssi_ctrl_mask;
22867         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_ALLRX, rssi_type);
22868
22869         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22870                                        NPHY_RAIL_I, rssi_type);
22871         wlc_phy_scale_offset_rssi_nphy(pi, 0x0, 0x0, RADIO_MIMO_CORESEL_ALLRX,
22872                                        NPHY_RAIL_Q, rssi_type);
22873
22874         for (vcm = 0; vcm < 4; vcm++) {
22875
22876                 vcm_tmp[0] = vcm_tmp[1] = vcm_tmp[2] = vcm_tmp[3] = vcm;
22877                 if (rssi_type != NPHY_RSSI_SEL_W2)
22878                         wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_tmp);
22879
22880                 wlc_phy_poll_rssi_nphy(pi, rssi_type, &poll_results[vcm][0],
22881                                        NPHY_RSSICAL_NPOLL);
22882
22883                 if ((rssi_type == NPHY_RSSI_SEL_W1)
22884                     || (rssi_type == NPHY_RSSI_SEL_W2)) {
22885                         for (ctr = 0; ctr < 2; ctr++)
22886                                 poll_miniq[vcm][ctr] =
22887                                         min(poll_results[vcm][ctr * 2 + 0],
22888                                             poll_results[vcm][ctr * 2 + 1]);
22889                 }
22890         }
22891
22892         for (result_idx = 0; result_idx < 4; result_idx++) {
22893                 min_d = NPHY_RSSICAL_MAXD;
22894                 min_vcm = 0;
22895                 min_poll = NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL + 1;
22896                 for (vcm = 0; vcm < 4; vcm++) {
22897                         curr_d = abs(((rssi_type == NPHY_RSSI_SEL_NB) ?
22898                                       poll_results[vcm][result_idx] :
22899                                       poll_miniq[vcm][result_idx / 2]) -
22900                                      (target_code * NPHY_RSSICAL_NPOLL));
22901                         if (curr_d < min_d) {
22902                                 min_d = curr_d;
22903                                 min_vcm = vcm;
22904                         }
22905                         if (poll_results[vcm][result_idx] < min_poll)
22906                                 min_poll = poll_results[vcm][result_idx];
22907                 }
22908                 vcm_final[result_idx] = min_vcm;
22909                 poll_results_min[result_idx] = min_poll;
22910         }
22911
22912         if (rssi_type != NPHY_RSSI_SEL_W2)
22913                 wlc_phy_set_rssi_2055_vcm(pi, rssi_type, vcm_final);
22914
22915         for (result_idx = 0; result_idx < 4; result_idx++) {
22916                 fine_digital_offset[result_idx] =
22917                         (target_code * NPHY_RSSICAL_NPOLL) -
22918                         poll_results[vcm_final[result_idx]][result_idx];
22919                 if (fine_digital_offset[result_idx] < 0) {
22920                         fine_digital_offset[result_idx] =
22921                                 abs(fine_digital_offset[result_idx]);
22922                         fine_digital_offset[result_idx] +=
22923                                 (NPHY_RSSICAL_NPOLL / 2);
22924                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22925                         fine_digital_offset[result_idx] =
22926                                 -fine_digital_offset[result_idx];
22927                 } else {
22928                         fine_digital_offset[result_idx] +=
22929                                 (NPHY_RSSICAL_NPOLL / 2);
22930                         fine_digital_offset[result_idx] /= NPHY_RSSICAL_NPOLL;
22931                 }
22932
22933                 if (poll_results_min[result_idx] ==
22934                     NPHY_RSSICAL_MAXREAD * NPHY_RSSICAL_NPOLL)
22935                         fine_digital_offset[result_idx] =
22936                                 (target_code - NPHY_RSSICAL_MAXREAD - 1);
22937
22938                 wlc_phy_scale_offset_rssi_nphy(pi, 0x0,
22939                                                (s8)
22940                                                fine_digital_offset[result_idx],
22941                                                (result_idx / 2 ==
22942                                                 0) ? RADIO_MIMO_CORESEL_CORE1 :
22943                                                RADIO_MIMO_CORESEL_CORE2,
22944                                                (result_idx % 2 ==
22945                                                 0) ? NPHY_RAIL_I : NPHY_RAIL_Q,
22946                                                rssi_type);
22947         }
22948
22949         mod_radio_reg(pi, RADIO_2055_PD_CORE1_RSSI_MISC, pd_mask, pd_state[0]);
22950         mod_radio_reg(pi, RADIO_2055_PD_CORE2_RSSI_MISC, pd_mask, pd_state[1]);
22951         if (rssi_ctrl_state[0] == RADIO_2055_NBRSSI_SEL)
22952                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22953                                      NPHY_RSSI_SEL_NB);
22954         else if (rssi_ctrl_state[0] == RADIO_2055_WBRSSI_G1_SEL)
22955                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22956                                      NPHY_RSSI_SEL_W1);
22957         else /* RADIO_2055_WBRSSI_G2_SEL */
22958                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE1,
22959                                      NPHY_RSSI_SEL_W2);
22960         if (rssi_ctrl_state[1] == RADIO_2055_NBRSSI_SEL)
22961                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22962                                      NPHY_RSSI_SEL_NB);
22963         else if (rssi_ctrl_state[1] == RADIO_2055_WBRSSI_G1_SEL)
22964                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22965                                      NPHY_RSSI_SEL_W1);
22966         else /* RADIO_2055_WBRSSI_G1_SEL */
22967                 wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_CORE2,
22968                                      NPHY_RSSI_SEL_W2);
22969         wlc_phy_rssisel_nphy(pi, RADIO_MIMO_CORESEL_OFF, rssi_type);
22970
22971         write_phy_reg(pi, 0x91, rfctrlintc_state[0]);
22972         write_radio_reg(pi, RADIO_2055_PD_CORE1_RXTX, rfpdcorerxtx_state[0]);
22973         write_phy_reg(pi, 0x92, rfctrlintc_state[1]);
22974         write_radio_reg(pi, RADIO_2055_PD_CORE2_RXTX, rfpdcorerxtx_state[1]);
22975
22976         wlc_phy_classifier_nphy(pi, (0x7 << 0), classif_state);
22977         wlc_phy_clip_det_nphy(pi, 1, clip_state);
22978
22979         wlc_phy_resetcca_nphy(pi);
22980 }
22981
22982 void wlc_phy_rssi_cal_nphy(struct brcms_phy *pi)
22983 {
22984         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
22985                 wlc_phy_rssi_cal_nphy_rev3(pi);
22986         } else {
22987                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_NB);
22988                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W1);
22989                 wlc_phy_rssi_cal_nphy_rev2(pi, NPHY_RSSI_SEL_W2);
22990         }
22991 }
22992
22993 int
22994 wlc_phy_rssi_compute_nphy(struct brcms_phy *pi, struct d11rxhdr *rxh)
22995 {
22996         s16 rxpwr, rxpwr0, rxpwr1;
22997         s16 phyRx0_l, phyRx2_l;
22998
22999         rxpwr = 0;
23000         rxpwr0 = rxh->PhyRxStatus_1 & PRXS1_nphy_PWR0_MASK;
23001         rxpwr1 = (rxh->PhyRxStatus_1 & PRXS1_nphy_PWR1_MASK) >> 8;
23002
23003         if (rxpwr0 > 127)
23004                 rxpwr0 -= 256;
23005         if (rxpwr1 > 127)
23006                 rxpwr1 -= 256;
23007
23008         phyRx0_l = rxh->PhyRxStatus_0 & 0x00ff;
23009         phyRx2_l = rxh->PhyRxStatus_2 & 0x00ff;
23010         if (phyRx2_l > 127)
23011                 phyRx2_l -= 256;
23012
23013         if (((rxpwr0 == 16) || (rxpwr0 == 32))) {
23014                 rxpwr0 = rxpwr1;
23015                 rxpwr1 = phyRx2_l;
23016         }
23017
23018         if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MAX)
23019                 rxpwr = (rxpwr0 > rxpwr1) ? rxpwr0 : rxpwr1;
23020         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_MIN)
23021                 rxpwr = (rxpwr0 < rxpwr1) ? rxpwr0 : rxpwr1;
23022         else if (pi->sh->rssi_mode == RSSI_ANT_MERGE_AVG)
23023                 rxpwr = (rxpwr0 + rxpwr1) >> 1;
23024
23025         return rxpwr;
23026 }
23027
23028 static void
23029 wlc_phy_loadsampletable_nphy(struct brcms_phy *pi, struct cordic_iq *tone_buf,
23030                              u16 num_samps)
23031 {
23032         u16 t;
23033         u32 *data_buf = NULL;
23034
23035         data_buf = kmalloc_array(num_samps, sizeof(u32), GFP_ATOMIC);
23036         if (data_buf == NULL)
23037                 return;
23038
23039         if (pi->phyhang_avoid)
23040                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23041
23042         for (t = 0; t < num_samps; t++)
23043                 data_buf[t] = ((((unsigned int)tone_buf[t].i) & 0x3ff) << 10) |
23044                               (((unsigned int)tone_buf[t].q) & 0x3ff);
23045         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SAMPLEPLAY, num_samps, 0, 32,
23046                                  data_buf);
23047
23048         kfree(data_buf);
23049
23050         if (pi->phyhang_avoid)
23051                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23052 }
23053
23054 static u16
23055 wlc_phy_gen_load_samples_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23056                               u8 dac_test_mode)
23057 {
23058         u8 phy_bw, is_phybw40;
23059         u16 num_samps, t, spur;
23060         s32 theta = 0, rot = 0;
23061         u32 tbl_len;
23062         struct cordic_iq *tone_buf = NULL;
23063
23064         is_phybw40 = CHSPEC_IS40(pi->radio_chanspec);
23065         phy_bw = (is_phybw40 == 1) ? 40 : 20;
23066         tbl_len = (phy_bw << 3);
23067
23068         if (dac_test_mode == 1) {
23069                 spur = read_phy_reg(pi, 0x01);
23070                 spur = (spur >> 15) & 1;
23071                 phy_bw = (spur == 1) ? 82 : 80;
23072                 phy_bw = (is_phybw40 == 1) ? (phy_bw << 1) : phy_bw;
23073
23074                 tbl_len = (phy_bw << 1);
23075         }
23076
23077         tone_buf = kmalloc_array(tbl_len, sizeof(struct cordic_iq),
23078                                  GFP_ATOMIC);
23079         if (tone_buf == NULL)
23080                 return 0;
23081
23082         num_samps = (u16) tbl_len;
23083         rot = ((f_kHz * 36) / phy_bw) / 100;
23084         theta = 0;
23085
23086         for (t = 0; t < num_samps; t++) {
23087
23088                 tone_buf[t] = cordic_calc_iq(theta);
23089
23090                 theta += rot;
23091
23092                 tone_buf[t].q = (s32) FLOAT(tone_buf[t].q * max_val);
23093                 tone_buf[t].i = (s32) FLOAT(tone_buf[t].i * max_val);
23094         }
23095
23096         wlc_phy_loadsampletable_nphy(pi, tone_buf, num_samps);
23097
23098         kfree(tone_buf);
23099
23100         return num_samps;
23101 }
23102
23103 static void
23104 wlc_phy_runsamples_nphy(struct brcms_phy *pi, u16 num_samps, u16 loops,
23105                         u16 wait, u8 iqmode, u8 dac_test_mode,
23106                         bool modify_bbmult)
23107 {
23108         u16 bb_mult;
23109         u8 phy_bw, sample_cmd;
23110         u16 orig_RfseqCoreActv;
23111         u16 lpf_bw_ctl_override3, lpf_bw_ctl_override4, lpf_bw_ctl_miscreg3,
23112             lpf_bw_ctl_miscreg4;
23113
23114         if (pi->phyhang_avoid)
23115                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23116
23117         phy_bw = 20;
23118         if (CHSPEC_IS40(pi->radio_chanspec))
23119                 phy_bw = 40;
23120
23121         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23122
23123                 lpf_bw_ctl_override3 = read_phy_reg(pi, 0x342) & (0x1 << 7);
23124                 lpf_bw_ctl_override4 = read_phy_reg(pi, 0x343) & (0x1 << 7);
23125                 if (lpf_bw_ctl_override3 | lpf_bw_ctl_override4) {
23126                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23127                                               (0x7 << 8);
23128                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23129                                               (0x7 << 8);
23130                 } else {
23131                         wlc_phy_rfctrl_override_nphy_rev7(
23132                                 pi,
23133                                 (0x1 << 7),
23134                                 wlc_phy_read_lpf_bw_ctl_nphy
23135                                         (pi,
23136                                         0), 0, 0,
23137                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23138
23139                         pi->nphy_sample_play_lpf_bw_ctl_ovr = true;
23140
23141                         lpf_bw_ctl_miscreg3 = read_phy_reg(pi, 0x340) &
23142                                               (0x7 << 8);
23143                         lpf_bw_ctl_miscreg4 = read_phy_reg(pi, 0x341) &
23144                                               (0x7 << 8);
23145                 }
23146         }
23147
23148         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) == 0) {
23149
23150                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23151                                         &bb_mult);
23152                 pi->nphy_bb_mult_save =
23153                         BB_MULT_VALID_MASK | (bb_mult & BB_MULT_MASK);
23154         }
23155
23156         if (modify_bbmult) {
23157                 bb_mult = (phy_bw == 20) ? 100 : 71;
23158                 bb_mult = (bb_mult << 8) + bb_mult;
23159                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23160                                          &bb_mult);
23161         }
23162
23163         if (pi->phyhang_avoid)
23164                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23165
23166         write_phy_reg(pi, 0xc6, num_samps - 1);
23167
23168         if (loops != 0xffff)
23169                 write_phy_reg(pi, 0xc4, loops - 1);
23170         else
23171                 write_phy_reg(pi, 0xc4, loops);
23172
23173         write_phy_reg(pi, 0xc5, wait);
23174
23175         orig_RfseqCoreActv = read_phy_reg(pi, 0xa1);
23176         or_phy_reg(pi, 0xa1, NPHY_RfseqMode_CoreActv_override);
23177         if (iqmode) {
23178
23179                 and_phy_reg(pi, 0xc2, 0x7FFF);
23180
23181                 or_phy_reg(pi, 0xc2, 0x8000);
23182         } else {
23183
23184                 sample_cmd = (dac_test_mode == 1) ? 0x5 : 0x1;
23185                 write_phy_reg(pi, 0xc3, sample_cmd);
23186         }
23187
23188         SPINWAIT(((read_phy_reg(pi, 0xa4) & 0x1) == 1), 1000);
23189
23190         write_phy_reg(pi, 0xa1, orig_RfseqCoreActv);
23191 }
23192
23193 int
23194 wlc_phy_tx_tone_nphy(struct brcms_phy *pi, u32 f_kHz, u16 max_val,
23195                      u8 iqmode, u8 dac_test_mode, bool modify_bbmult)
23196 {
23197         u16 num_samps;
23198         u16 loops = 0xffff;
23199         u16 wait = 0;
23200
23201         num_samps = wlc_phy_gen_load_samples_nphy(pi, f_kHz, max_val,
23202                                                   dac_test_mode);
23203         if (num_samps == 0)
23204                 return -EBADE;
23205
23206         wlc_phy_runsamples_nphy(pi, num_samps, loops, wait, iqmode,
23207                                 dac_test_mode, modify_bbmult);
23208
23209         return 0;
23210 }
23211
23212 void wlc_phy_stopplayback_nphy(struct brcms_phy *pi)
23213 {
23214         u16 playback_status;
23215         u16 bb_mult;
23216
23217         if (pi->phyhang_avoid)
23218                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
23219
23220         playback_status = read_phy_reg(pi, 0xc7);
23221         if (playback_status & 0x1)
23222                 or_phy_reg(pi, 0xc3, NPHY_sampleCmd_STOP);
23223         else if (playback_status & 0x2)
23224                 and_phy_reg(pi, 0xc2,
23225                             (u16) ~NPHY_iqloCalCmdGctl_IQLO_CAL_EN);
23226
23227         and_phy_reg(pi, 0xc3, (u16) ~(0x1 << 2));
23228
23229         if ((pi->nphy_bb_mult_save & BB_MULT_VALID_MASK) != 0) {
23230
23231                 bb_mult = pi->nphy_bb_mult_save & BB_MULT_MASK;
23232                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, 87, 16,
23233                                          &bb_mult);
23234
23235                 pi->nphy_bb_mult_save = 0;
23236         }
23237
23238         if (NREV_IS(pi->pubpi.phy_rev, 7) || NREV_GE(pi->pubpi.phy_rev, 8)) {
23239                 if (pi->nphy_sample_play_lpf_bw_ctl_ovr) {
23240                         wlc_phy_rfctrl_override_nphy_rev7(
23241                                 pi,
23242                                 (0x1 << 7),
23243                                 0, 0, 1,
23244                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
23245                         pi->nphy_sample_play_lpf_bw_ctl_ovr = false;
23246                 }
23247         }
23248
23249         if (pi->phyhang_avoid)
23250                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
23251 }
23252
23253 static u32 *brcms_phy_get_tx_pwrctrl_tbl(struct brcms_phy *pi)
23254 {
23255         u32 *tx_pwrctrl_tbl = NULL;
23256         uint phyrev = pi->pubpi.phy_rev;
23257
23258         if (PHY_IPA(pi)) {
23259                 tx_pwrctrl_tbl =
23260                         wlc_phy_get_ipa_gaintbl_nphy(pi);
23261         } else {
23262                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
23263                         if (NREV_IS(phyrev, 3))
23264                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev3;
23265                         else if (NREV_IS(phyrev, 4))
23266                                 tx_pwrctrl_tbl =
23267                                         (pi->srom_fem5g.extpagain == 3) ?
23268                                         nphy_tpc_5GHz_txgain_HiPwrEPA :
23269                                         nphy_tpc_5GHz_txgain_rev4;
23270                         else
23271                                 tx_pwrctrl_tbl = nphy_tpc_5GHz_txgain_rev5;
23272                 } else {
23273                         if (NREV_GE(phyrev, 7)) {
23274                                 if (pi->pubpi.radiorev == 3)
23275                                         tx_pwrctrl_tbl =
23276                                                 nphy_tpc_txgain_epa_2057rev3;
23277                                 else if (pi->pubpi.radiorev == 5)
23278                                         tx_pwrctrl_tbl =
23279                                                 nphy_tpc_txgain_epa_2057rev5;
23280                         } else {
23281                                 if (NREV_GE(phyrev, 5) &&
23282                                    (pi->srom_fem2g.extpagain == 3))
23283                                         tx_pwrctrl_tbl =
23284                                                 nphy_tpc_txgain_HiPwrEPA;
23285                                 else
23286                                         tx_pwrctrl_tbl =
23287                                                 nphy_tpc_txgain_rev3;
23288                         }
23289                 }
23290         }
23291         return tx_pwrctrl_tbl;
23292 }
23293
23294 struct nphy_txgains wlc_phy_get_tx_gain_nphy(struct brcms_phy *pi)
23295 {
23296         u16 base_idx[2], curr_gain[2];
23297         u8 core_no;
23298         struct nphy_txgains target_gain;
23299         u32 *tx_pwrctrl_tbl = NULL;
23300
23301         if (pi->nphy_txpwrctrl == PHY_TPC_HW_OFF) {
23302                 if (pi->phyhang_avoid)
23303                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
23304
23305                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
23306                                         curr_gain);
23307
23308                 if (pi->phyhang_avoid)
23309                         wlc_phy_stay_in_carriersearch_nphy(pi, false);
23310
23311                 for (core_no = 0; core_no < 2; core_no++) {
23312                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23313                                 target_gain.ipa[core_no] =
23314                                         curr_gain[core_no] & 0x0007;
23315                                 target_gain.pad[core_no] =
23316                                         ((curr_gain[core_no] & 0x00F8) >> 3);
23317                                 target_gain.pga[core_no] =
23318                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23319                                 target_gain.txgm[core_no] =
23320                                         ((curr_gain[core_no] & 0x7000) >> 12);
23321                                 target_gain.txlpf[core_no] =
23322                                         ((curr_gain[core_no] & 0x8000) >> 15);
23323                         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23324                                 target_gain.ipa[core_no] =
23325                                         curr_gain[core_no] & 0x000F;
23326                                 target_gain.pad[core_no] =
23327                                         ((curr_gain[core_no] & 0x00F0) >> 4);
23328                                 target_gain.pga[core_no] =
23329                                         ((curr_gain[core_no] & 0x0F00) >> 8);
23330                                 target_gain.txgm[core_no] =
23331                                         ((curr_gain[core_no] & 0x7000) >> 12);
23332                         } else {
23333                                 target_gain.ipa[core_no] =
23334                                         curr_gain[core_no] & 0x0003;
23335                                 target_gain.pad[core_no] =
23336                                         ((curr_gain[core_no] & 0x000C) >> 2);
23337                                 target_gain.pga[core_no] =
23338                                         ((curr_gain[core_no] & 0x0070) >> 4);
23339                                 target_gain.txgm[core_no] =
23340                                         ((curr_gain[core_no] & 0x0380) >> 7);
23341                         }
23342                 }
23343         } else {
23344                 uint phyrev = pi->pubpi.phy_rev;
23345
23346                 base_idx[0] = (read_phy_reg(pi, 0x1ed) >> 8) & 0x7f;
23347                 base_idx[1] = (read_phy_reg(pi, 0x1ee) >> 8) & 0x7f;
23348                 for (core_no = 0; core_no < 2; core_no++) {
23349                         if (NREV_GE(phyrev, 3)) {
23350                                 tx_pwrctrl_tbl =
23351                                         brcms_phy_get_tx_pwrctrl_tbl(pi);
23352                                 if (NREV_GE(phyrev, 7)) {
23353                                         target_gain.ipa[core_no] =
23354                                                 (tx_pwrctrl_tbl
23355                                                  [base_idx[core_no]]
23356                                                  >> 16) & 0x7;
23357                                         target_gain.pad[core_no] =
23358                                                 (tx_pwrctrl_tbl
23359                                                  [base_idx[core_no]]
23360                                                  >> 19) & 0x1f;
23361                                         target_gain.pga[core_no] =
23362                                                 (tx_pwrctrl_tbl
23363                                                  [base_idx[core_no]]
23364                                                  >> 24) & 0xf;
23365                                         target_gain.txgm[core_no] =
23366                                                 (tx_pwrctrl_tbl
23367                                                  [base_idx[core_no]]
23368                                                  >> 28) & 0x7;
23369                                         target_gain.txlpf[core_no] =
23370                                                 (tx_pwrctrl_tbl
23371                                                  [base_idx[core_no]]
23372                                                  >> 31) & 0x1;
23373                                 } else {
23374                                         target_gain.ipa[core_no] =
23375                                                 (tx_pwrctrl_tbl
23376                                                  [base_idx[core_no]]
23377                                                  >> 16) & 0xf;
23378                                         target_gain.pad[core_no] =
23379                                                 (tx_pwrctrl_tbl
23380                                                  [base_idx[core_no]]
23381                                                  >> 20) & 0xf;
23382                                         target_gain.pga[core_no] =
23383                                                 (tx_pwrctrl_tbl
23384                                                  [base_idx[core_no]]
23385                                                  >> 24) & 0xf;
23386                                         target_gain.txgm[core_no] =
23387                                                 (tx_pwrctrl_tbl
23388                                                 [base_idx[core_no]]
23389                                                  >> 28) & 0x7;
23390                                 }
23391                         } else {
23392                                 target_gain.ipa[core_no] =
23393                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23394                                          16) & 0x3;
23395                                 target_gain.pad[core_no] =
23396                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23397                                          18) & 0x3;
23398                                 target_gain.pga[core_no] =
23399                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23400                                          20) & 0x7;
23401                                 target_gain.txgm[core_no] =
23402                                         (nphy_tpc_txgain[base_idx[core_no]] >>
23403                                          23) & 0x7;
23404                         }
23405                 }
23406         }
23407
23408         return target_gain;
23409 }
23410
23411 static void
23412 wlc_phy_iqcal_gainparams_nphy(struct brcms_phy *pi, u16 core_no,
23413                               struct nphy_txgains target_gain,
23414                               struct nphy_iqcal_params *params)
23415 {
23416         u8 k;
23417         int idx;
23418         u16 gain_index;
23419         u8 band_idx = (CHSPEC_IS5G(pi->radio_chanspec) ? 1 : 0);
23420
23421         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23422                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23423                         params->txlpf = target_gain.txlpf[core_no];
23424
23425                 params->txgm = target_gain.txgm[core_no];
23426                 params->pga = target_gain.pga[core_no];
23427                 params->pad = target_gain.pad[core_no];
23428                 params->ipa = target_gain.ipa[core_no];
23429                 if (NREV_GE(pi->pubpi.phy_rev, 7))
23430                         params->cal_gain =
23431                                 ((params->txlpf << 15) | (params->txgm << 12) |
23432                                  (params->pga << 8) |
23433                                  (params->pad << 3) | (params->ipa));
23434                 else
23435                         params->cal_gain =
23436                                 ((params->txgm << 12) | (params->pga << 8) |
23437                                  (params->pad << 4) | (params->ipa));
23438
23439                 params->ncorr[0] = 0x79;
23440                 params->ncorr[1] = 0x79;
23441                 params->ncorr[2] = 0x79;
23442                 params->ncorr[3] = 0x79;
23443                 params->ncorr[4] = 0x79;
23444         } else {
23445
23446                 gain_index = ((target_gain.pad[core_no] << 0) |
23447                               (target_gain.pga[core_no] << 4) |
23448                               (target_gain.txgm[core_no] << 8));
23449
23450                 idx = -1;
23451                 for (k = 0; k < NPHY_IQCAL_NUMGAINS; k++) {
23452                         if (tbl_iqcal_gainparams_nphy[band_idx][k][0] ==
23453                             gain_index) {
23454                                 idx = k;
23455                                 break;
23456                         }
23457                 }
23458
23459                 params->txgm = tbl_iqcal_gainparams_nphy[band_idx][k][1];
23460                 params->pga = tbl_iqcal_gainparams_nphy[band_idx][k][2];
23461                 params->pad = tbl_iqcal_gainparams_nphy[band_idx][k][3];
23462                 params->cal_gain = ((params->txgm << 7) | (params->pga << 4) |
23463                                     (params->pad << 2));
23464                 params->ncorr[0] = tbl_iqcal_gainparams_nphy[band_idx][k][4];
23465                 params->ncorr[1] = tbl_iqcal_gainparams_nphy[band_idx][k][5];
23466                 params->ncorr[2] = tbl_iqcal_gainparams_nphy[band_idx][k][6];
23467                 params->ncorr[3] = tbl_iqcal_gainparams_nphy[band_idx][k][7];
23468         }
23469 }
23470
23471 static void wlc_phy_txcal_radio_setup_nphy(struct brcms_phy *pi)
23472 {
23473         u16 jtag_core, core;
23474
23475         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23476
23477                 for (core = 0; core <= 1; core++) {
23478
23479                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23480                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23481                                                 TX_SSI_MASTER);
23482
23483                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23484                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23485                                                 IQCAL_VCM_HG);
23486
23487                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23488                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23489                                                 IQCAL_IDAC);
23490
23491                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23492                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23493                                                 TSSI_VCM);
23494
23495                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] = 0;
23496
23497                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23498                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23499                                                 TX_SSI_MUX);
23500
23501                         if (pi->pubpi.radiorev != 5)
23502                                 pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23503                                         READ_RADIO_REG3(pi, RADIO_2057, TX,
23504                                                         core,
23505                                                         TSSIA);
23506
23507                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23508                                READ_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG);
23509
23510                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23511                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
23512                                                 TSSI_MISC1);
23513
23514                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23515                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23516                                                  TX_SSI_MASTER, 0x0a);
23517                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23518                                                  IQCAL_VCM_HG, 0x43);
23519                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23520                                                  IQCAL_IDAC, 0x55);
23521                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23522                                                  TSSI_VCM, 0x00);
23523                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23524                                                  TSSIG, 0x00);
23525                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23526                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23527                                                          core, TX_SSI_MUX, 0x4);
23528                                         if (!(pi->
23529                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23530                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23531                                                                  TX, core,
23532                                                                  TSSIA, 0x31);
23533                                         else
23534                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23535                                                                  TX, core,
23536                                                                  TSSIA, 0x21);
23537                                 }
23538                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23539                                                  TSSI_MISC1, 0x00);
23540                         } else {
23541                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23542                                                  TX_SSI_MASTER, 0x06);
23543                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23544                                                  IQCAL_VCM_HG, 0x43);
23545                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23546                                                  IQCAL_IDAC, 0x55);
23547                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23548                                                  TSSI_VCM, 0x00);
23549
23550                                 if (pi->pubpi.radiorev != 5)
23551                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23552                                                          core, TSSIA, 0x00);
23553                                 if (pi->use_int_tx_iqlo_cal_nphy) {
23554                                         WRITE_RADIO_REG3(pi, RADIO_2057, TX,
23555                                                          core, TX_SSI_MUX,
23556                                                          0x06);
23557                                         if (!(pi->
23558                                         internal_tx_iqlo_cal_tapoff_intpa_nphy))
23559                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23560                                                                  TX, core,
23561                                                                  TSSIG, 0x31);
23562                                         else
23563                                                 WRITE_RADIO_REG3(pi, RADIO_2057,
23564                                                                  TX, core,
23565                                                                  TSSIG, 0x21);
23566                                 }
23567                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23568                                                  TSSI_MISC1, 0x00);
23569                         }
23570                 }
23571         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23572
23573                 for (core = 0; core <= 1; core++) {
23574                         jtag_core =
23575                                 (core ==
23576                                  PHY_CORE_0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
23577
23578                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 0] =
23579                                 read_radio_reg(pi,
23580                                                RADIO_2056_TX_TX_SSI_MASTER |
23581                                                jtag_core);
23582
23583                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 1] =
23584                                 read_radio_reg(pi,
23585                                                RADIO_2056_TX_IQCAL_VCM_HG |
23586                                                jtag_core);
23587
23588                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 2] =
23589                                 read_radio_reg(pi,
23590                                                RADIO_2056_TX_IQCAL_IDAC |
23591                                                jtag_core);
23592
23593                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 3] =
23594                                 read_radio_reg(
23595                                         pi,
23596                                         RADIO_2056_TX_TSSI_VCM |
23597                                         jtag_core);
23598
23599                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 4] =
23600                                 read_radio_reg(pi,
23601                                                RADIO_2056_TX_TX_AMP_DET |
23602                                                jtag_core);
23603
23604                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 5] =
23605                                 read_radio_reg(pi,
23606                                                RADIO_2056_TX_TX_SSI_MUX |
23607                                                jtag_core);
23608
23609                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 6] =
23610                                 read_radio_reg(pi,
23611                                                RADIO_2056_TX_TSSIA | jtag_core);
23612
23613                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 7] =
23614                                 read_radio_reg(pi,
23615                                                RADIO_2056_TX_TSSIG | jtag_core);
23616
23617                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 8] =
23618                                 read_radio_reg(pi,
23619                                                RADIO_2056_TX_TSSI_MISC1 |
23620                                                jtag_core);
23621
23622                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 9] =
23623                                 read_radio_reg(pi,
23624                                                RADIO_2056_TX_TSSI_MISC2 |
23625                                                jtag_core);
23626
23627                         pi->tx_rx_cal_radio_saveregs[(core * 11) + 10] =
23628                                 read_radio_reg(pi,
23629                                                RADIO_2056_TX_TSSI_MISC3 |
23630                                                jtag_core);
23631
23632                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
23633                                 write_radio_reg(pi,
23634                                                 RADIO_2056_TX_TX_SSI_MASTER |
23635                                                 jtag_core, 0x0a);
23636                                 write_radio_reg(pi,
23637                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23638                                                 jtag_core, 0x40);
23639                                 write_radio_reg(pi,
23640                                                 RADIO_2056_TX_IQCAL_IDAC |
23641                                                 jtag_core, 0x55);
23642                                 write_radio_reg(pi,
23643                                                 RADIO_2056_TX_TSSI_VCM |
23644                                                 jtag_core, 0x00);
23645                                 write_radio_reg(pi,
23646                                                 RADIO_2056_TX_TX_AMP_DET |
23647                                                 jtag_core, 0x00);
23648
23649                                 if (PHY_IPA(pi)) {
23650                                         write_radio_reg(
23651                                                 pi,
23652                                                 RADIO_2056_TX_TX_SSI_MUX
23653                                                 | jtag_core, 0x4);
23654                                         write_radio_reg(pi,
23655                                                         RADIO_2056_TX_TSSIA |
23656                                                         jtag_core, 0x1);
23657                                 } else {
23658                                         write_radio_reg(
23659                                                 pi,
23660                                                 RADIO_2056_TX_TX_SSI_MUX
23661                                                 | jtag_core, 0x00);
23662                                         write_radio_reg(pi,
23663                                                         RADIO_2056_TX_TSSIA |
23664                                                         jtag_core, 0x2f);
23665                                 }
23666                                 write_radio_reg(pi,
23667                                                 RADIO_2056_TX_TSSIG | jtag_core,
23668                                                 0x00);
23669                                 write_radio_reg(pi,
23670                                                 RADIO_2056_TX_TSSI_MISC1 |
23671                                                 jtag_core, 0x00);
23672
23673                                 write_radio_reg(pi,
23674                                                 RADIO_2056_TX_TSSI_MISC2 |
23675                                                 jtag_core, 0x00);
23676                                 write_radio_reg(pi,
23677                                                 RADIO_2056_TX_TSSI_MISC3 |
23678                                                 jtag_core, 0x00);
23679                         } else {
23680                                 write_radio_reg(pi,
23681                                                 RADIO_2056_TX_TX_SSI_MASTER |
23682                                                 jtag_core, 0x06);
23683                                 write_radio_reg(pi,
23684                                                 RADIO_2056_TX_IQCAL_VCM_HG |
23685                                                 jtag_core, 0x40);
23686                                 write_radio_reg(pi,
23687                                                 RADIO_2056_TX_IQCAL_IDAC |
23688                                                 jtag_core, 0x55);
23689                                 write_radio_reg(pi,
23690                                                 RADIO_2056_TX_TSSI_VCM |
23691                                                 jtag_core, 0x00);
23692                                 write_radio_reg(pi,
23693                                                 RADIO_2056_TX_TX_AMP_DET |
23694                                                 jtag_core, 0x00);
23695                                 write_radio_reg(pi,
23696                                                 RADIO_2056_TX_TSSIA | jtag_core,
23697                                                 0x00);
23698
23699                                 if (PHY_IPA(pi)) {
23700
23701                                         write_radio_reg(
23702                                                 pi,
23703                                                 RADIO_2056_TX_TX_SSI_MUX
23704                                                 | jtag_core, 0x06);
23705                                         if (NREV_LT(pi->pubpi.phy_rev, 5))
23706                                                 write_radio_reg(
23707                                                         pi,
23708                                                         RADIO_2056_TX_TSSIG
23709                                                         | jtag_core,
23710                                                         0x11);
23711                                         else
23712                                                 write_radio_reg(
23713                                                         pi,
23714                                                         RADIO_2056_TX_TSSIG
23715                                                         | jtag_core,
23716                                                         0x1);
23717                                 } else {
23718                                         write_radio_reg(
23719                                                 pi,
23720                                                 RADIO_2056_TX_TX_SSI_MUX
23721                                                 | jtag_core, 0x00);
23722                                         write_radio_reg(pi,
23723                                                         RADIO_2056_TX_TSSIG |
23724                                                         jtag_core, 0x20);
23725                                 }
23726
23727                                 write_radio_reg(pi,
23728                                                 RADIO_2056_TX_TSSI_MISC1 |
23729                                                 jtag_core, 0x00);
23730                                 write_radio_reg(pi,
23731                                                 RADIO_2056_TX_TSSI_MISC2 |
23732                                                 jtag_core, 0x00);
23733                                 write_radio_reg(pi,
23734                                                 RADIO_2056_TX_TSSI_MISC3 |
23735                                                 jtag_core, 0x00);
23736                         }
23737                 }
23738         } else {
23739
23740                 pi->tx_rx_cal_radio_saveregs[0] =
23741                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1);
23742                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1, 0x29);
23743                 pi->tx_rx_cal_radio_saveregs[1] =
23744                         read_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2);
23745                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2, 0x54);
23746
23747                 pi->tx_rx_cal_radio_saveregs[2] =
23748                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1);
23749                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1, 0x29);
23750                 pi->tx_rx_cal_radio_saveregs[3] =
23751                         read_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2);
23752                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2, 0x54);
23753
23754                 pi->tx_rx_cal_radio_saveregs[4] =
23755                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1);
23756                 pi->tx_rx_cal_radio_saveregs[5] =
23757                         read_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2);
23758
23759                 if ((read_phy_reg(pi, 0x09) & NPHY_BandControl_currentBand) ==
23760                     0) {
23761
23762                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x04);
23763                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x04);
23764                 } else {
23765
23766                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1, 0x20);
23767                         write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2, 0x20);
23768                 }
23769
23770                 if (NREV_LT(pi->pubpi.phy_rev, 2)) {
23771
23772                         or_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0x20);
23773                         or_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0x20);
23774                 } else {
23775
23776                         and_radio_reg(pi, RADIO_2055_CORE1_TX_BB_MXGM, 0xdf);
23777                         and_radio_reg(pi, RADIO_2055_CORE2_TX_BB_MXGM, 0xdf);
23778                 }
23779         }
23780 }
23781
23782 static void wlc_phy_txcal_radio_cleanup_nphy(struct brcms_phy *pi)
23783 {
23784         u16 jtag_core, core;
23785
23786         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
23787                 for (core = 0; core <= 1; core++) {
23788
23789                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23790                                          TX_SSI_MASTER,
23791                                          pi->
23792                                          tx_rx_cal_radio_saveregs[(core * 11) +
23793                                                                   0]);
23794
23795                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_VCM_HG,
23796                                          pi->
23797                                          tx_rx_cal_radio_saveregs[(core * 11) +
23798                                                                   1]);
23799
23800                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, IQCAL_IDAC,
23801                                          pi->
23802                                          tx_rx_cal_radio_saveregs[(core * 11) +
23803                                                                   2]);
23804
23805                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_VCM,
23806                                          pi->
23807                                          tx_rx_cal_radio_saveregs[(core * 11) +
23808                                                                   3]);
23809
23810                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TX_SSI_MUX,
23811                                          pi->
23812                                          tx_rx_cal_radio_saveregs[(core * 11) +
23813                                                                   5]);
23814
23815                         if (pi->pubpi.radiorev != 5)
23816                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
23817                                                  TSSIA,
23818                                                  pi->tx_rx_cal_radio_saveregs
23819                                                              [(core * 11) + 6]);
23820
23821                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSIG,
23822                                          pi->
23823                                          tx_rx_cal_radio_saveregs[(core * 11) +
23824                                                                   7]);
23825
23826                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core, TSSI_MISC1,
23827                                          pi->
23828                                          tx_rx_cal_radio_saveregs[(core * 11) +
23829                                                                   8]);
23830                 }
23831         } else if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23832                 for (core = 0; core <= 1; core++) {
23833                         jtag_core = (core == PHY_CORE_0) ?
23834                                      RADIO_2056_TX0 : RADIO_2056_TX1;
23835
23836                         write_radio_reg(pi,
23837                                         RADIO_2056_TX_TX_SSI_MASTER | jtag_core,
23838                                         pi->
23839                                         tx_rx_cal_radio_saveregs[(core * 11) +
23840                                                                  0]);
23841
23842                         write_radio_reg(pi,
23843                                         RADIO_2056_TX_IQCAL_VCM_HG | jtag_core,
23844                                         pi->
23845                                         tx_rx_cal_radio_saveregs[(core * 11) +
23846                                                                  1]);
23847
23848                         write_radio_reg(pi,
23849                                         RADIO_2056_TX_IQCAL_IDAC | jtag_core,
23850                                         pi->
23851                                         tx_rx_cal_radio_saveregs[(core * 11) +
23852                                                                  2]);
23853
23854                         write_radio_reg(pi, RADIO_2056_TX_TSSI_VCM | jtag_core,
23855                                         pi->
23856                                         tx_rx_cal_radio_saveregs[(core * 11) +
23857                                                                  3]);
23858
23859                         write_radio_reg(pi,
23860                                         RADIO_2056_TX_TX_AMP_DET | jtag_core,
23861                                         pi->
23862                                         tx_rx_cal_radio_saveregs[(core * 11) +
23863                                                                  4]);
23864
23865                         write_radio_reg(pi,
23866                                         RADIO_2056_TX_TX_SSI_MUX | jtag_core,
23867                                         pi->
23868                                         tx_rx_cal_radio_saveregs[(core * 11) +
23869                                                                  5]);
23870
23871                         write_radio_reg(pi, RADIO_2056_TX_TSSIA | jtag_core,
23872                                         pi->
23873                                         tx_rx_cal_radio_saveregs[(core * 11) +
23874                                                                  6]);
23875
23876                         write_radio_reg(pi, RADIO_2056_TX_TSSIG | jtag_core,
23877                                         pi->
23878                                         tx_rx_cal_radio_saveregs[(core * 11) +
23879                                                                  7]);
23880
23881                         write_radio_reg(pi,
23882                                         RADIO_2056_TX_TSSI_MISC1 | jtag_core,
23883                                         pi->
23884                                         tx_rx_cal_radio_saveregs[(core * 11) +
23885                                                                  8]);
23886
23887                         write_radio_reg(pi,
23888                                         RADIO_2056_TX_TSSI_MISC2 | jtag_core,
23889                                         pi->
23890                                         tx_rx_cal_radio_saveregs[(core * 11) +
23891                                                                  9]);
23892
23893                         write_radio_reg(pi,
23894                                         RADIO_2056_TX_TSSI_MISC3 | jtag_core,
23895                                         pi->
23896                                         tx_rx_cal_radio_saveregs[(core * 11) +
23897                                                                  10]);
23898                 }
23899         } else {
23900
23901                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL1,
23902                                 pi->tx_rx_cal_radio_saveregs[0]);
23903                 write_radio_reg(pi, RADIO_2055_CORE1_TXRF_IQCAL2,
23904                                 pi->tx_rx_cal_radio_saveregs[1]);
23905                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL1,
23906                                 pi->tx_rx_cal_radio_saveregs[2]);
23907                 write_radio_reg(pi, RADIO_2055_CORE2_TXRF_IQCAL2,
23908                                 pi->tx_rx_cal_radio_saveregs[3]);
23909                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE1,
23910                                 pi->tx_rx_cal_radio_saveregs[4]);
23911                 write_radio_reg(pi, RADIO_2055_PWRDET_RXTX_CORE2,
23912                                 pi->tx_rx_cal_radio_saveregs[5]);
23913         }
23914 }
23915
23916 static void wlc_phy_txcal_physetup_nphy(struct brcms_phy *pi)
23917 {
23918         u16 val, mask;
23919
23920         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
23921                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
23922                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
23923
23924                 mask = ((0x3 << 8) | (0x3 << 10));
23925                 val = (0x2 << 8);
23926                 val |= (0x2 << 10);
23927                 mod_phy_reg(pi, 0xa6, mask, val);
23928                 mod_phy_reg(pi, 0xa7, mask, val);
23929
23930                 val = read_phy_reg(pi, 0x8f);
23931                 pi->tx_rx_cal_phy_saveregs[2] = val;
23932                 val |= ((0x1 << 9) | (0x1 << 10));
23933                 write_phy_reg(pi, 0x8f, val);
23934
23935                 val = read_phy_reg(pi, 0xa5);
23936                 pi->tx_rx_cal_phy_saveregs[3] = val;
23937                 val |= ((0x1 << 9) | (0x1 << 10));
23938                 write_phy_reg(pi, 0xa5, val);
23939
23940                 pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x01);
23941                 mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
23942
23943                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23944                                         &val);
23945                 pi->tx_rx_cal_phy_saveregs[5] = val;
23946                 val = 0;
23947                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
23948                                          &val);
23949
23950                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23951                                         &val);
23952                 pi->tx_rx_cal_phy_saveregs[6] = val;
23953                 val = 0;
23954                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
23955                                          &val);
23956
23957                 pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0x91);
23958                 pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0x92);
23959
23960                 if (!(pi->use_int_tx_iqlo_cal_nphy))
23961                         wlc_phy_rfctrlintc_override_nphy(
23962                                 pi,
23963                                 NPHY_RfctrlIntc_override_PA,
23964                                 1,
23965                                 RADIO_MIMO_CORESEL_CORE1
23966                                 |
23967                                 RADIO_MIMO_CORESEL_CORE2);
23968                 else
23969                         wlc_phy_rfctrlintc_override_nphy(
23970                                 pi,
23971                                 NPHY_RfctrlIntc_override_PA,
23972                                 0,
23973                                 RADIO_MIMO_CORESEL_CORE1
23974                                 |
23975                                 RADIO_MIMO_CORESEL_CORE2);
23976
23977                 wlc_phy_rfctrlintc_override_nphy(pi,
23978                                                  NPHY_RfctrlIntc_override_TRSW,
23979                                                  0x2, RADIO_MIMO_CORESEL_CORE1);
23980                 wlc_phy_rfctrlintc_override_nphy(pi,
23981                                                  NPHY_RfctrlIntc_override_TRSW,
23982                                                  0x8, RADIO_MIMO_CORESEL_CORE2);
23983
23984                 pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
23985                 pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
23986                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
23987                             0x29b, (0x1 << 0), (0) << 0);
23988
23989                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
23990                             0x29b, (0x1 << 0), (0) << 0);
23991
23992                 if (NREV_IS(pi->pubpi.phy_rev, 7)
23993                     || NREV_GE(pi->pubpi.phy_rev, 8))
23994                         wlc_phy_rfctrl_override_nphy_rev7(
23995                                 pi, (0x1 << 7),
23996                                 wlc_phy_read_lpf_bw_ctl_nphy
23997                                         (pi,
23998                                         0), 0, 0,
23999                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24000
24001                 if (pi->use_int_tx_iqlo_cal_nphy
24002                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24003
24004                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24005
24006                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24007                                               1 << 4);
24008
24009                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24010                                         mod_radio_reg(
24011                                                 pi,
24012                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24013                                                 1, 0);
24014                                         mod_radio_reg(
24015                                                 pi,
24016                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24017                                                 1, 0);
24018                                 } else {
24019                                         mod_radio_reg(
24020                                              pi,
24021                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24022                                              1, 0);
24023                                         mod_radio_reg(
24024                                              pi,
24025                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24026                                              1, 0);
24027                                 }
24028                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24029                                 wlc_phy_rfctrl_override_nphy_rev7(
24030                                         pi,
24031                                         (0x1 << 3), 0,
24032                                         0x3, 0,
24033                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24034                         }
24035                 }
24036         } else {
24037                 pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa6);
24038                 pi->tx_rx_cal_phy_saveregs[1] = read_phy_reg(pi, 0xa7);
24039
24040                 mask = ((0x3 << 12) | (0x3 << 14));
24041                 val = (0x2 << 12);
24042                 val |= (0x2 << 14);
24043                 mod_phy_reg(pi, 0xa6, mask, val);
24044                 mod_phy_reg(pi, 0xa7, mask, val);
24045
24046                 val = read_phy_reg(pi, 0xa5);
24047                 pi->tx_rx_cal_phy_saveregs[2] = val;
24048                 val |= ((0x1 << 12) | (0x1 << 13));
24049                 write_phy_reg(pi, 0xa5, val);
24050
24051                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24052                                         &val);
24053                 pi->tx_rx_cal_phy_saveregs[3] = val;
24054                 val |= 0x2000;
24055                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24056                                          &val);
24057
24058                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24059                                         &val);
24060                 pi->tx_rx_cal_phy_saveregs[4] = val;
24061                 val |= 0x2000;
24062                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24063                                          &val);
24064
24065                 pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x91);
24066                 pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x92);
24067                 val = CHSPEC_IS5G(pi->radio_chanspec) ? 0x180 : 0x120;
24068                 write_phy_reg(pi, 0x91, val);
24069                 write_phy_reg(pi, 0x92, val);
24070         }
24071 }
24072
24073 static void wlc_phy_txcal_phycleanup_nphy(struct brcms_phy *pi)
24074 {
24075         u16 mask;
24076
24077         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
24078                 write_phy_reg(pi, 0xa6, pi->tx_rx_cal_phy_saveregs[0]);
24079                 write_phy_reg(pi, 0xa7, pi->tx_rx_cal_phy_saveregs[1]);
24080                 write_phy_reg(pi, 0x8f, pi->tx_rx_cal_phy_saveregs[2]);
24081                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[3]);
24082                 write_phy_reg(pi, 0x01, pi->tx_rx_cal_phy_saveregs[4]);
24083
24084                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 3, 16,
24085                                          &pi->tx_rx_cal_phy_saveregs[5]);
24086                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 19, 16,
24087                                          &pi->tx_rx_cal_phy_saveregs[6]);
24088
24089                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[7]);
24090                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[8]);
24091
24092                 write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
24093                 write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
24094
24095                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24096                     || NREV_GE(pi->pubpi.phy_rev, 8))
24097                         wlc_phy_rfctrl_override_nphy_rev7(
24098                                 pi, (0x1 << 7), 0, 0,
24099                                 1,
24100                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24101
24102                 wlc_phy_resetcca_nphy(pi);
24103
24104                 if (pi->use_int_tx_iqlo_cal_nphy
24105                     && !(pi->internal_tx_iqlo_cal_tapoff_intpa_nphy)) {
24106
24107                         if (NREV_IS(pi->pubpi.phy_rev, 7)) {
24108                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24109                                         mod_radio_reg(
24110                                                 pi,
24111                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE0,
24112                                                 1, 1);
24113                                         mod_radio_reg(
24114                                                 pi,
24115                                                 RADIO_2057_PAD2G_TUNE_PUS_CORE1,
24116                                                 1, 1);
24117                                 } else {
24118                                         mod_radio_reg(
24119                                              pi,
24120                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE0,
24121                                              1, 1);
24122                                         mod_radio_reg(
24123                                              pi,
24124                                              RADIO_2057_IPA5G_CASCOFFV_PU_CORE1,
24125                                              1, 1);
24126                                 }
24127
24128                                 mod_radio_reg(pi, RADIO_2057_OVR_REG0, 1 << 4,
24129                                               0);
24130                         } else if (NREV_GE(pi->pubpi.phy_rev, 8)) {
24131                                 wlc_phy_rfctrl_override_nphy_rev7(
24132                                         pi,
24133                                         (0x1 << 3), 0,
24134                                         0x3, 1,
24135                                         NPHY_REV7_RFCTRLOVERRIDE_ID0);
24136                         }
24137                 }
24138         } else {
24139                 mask = ((0x3 << 12) | (0x3 << 14));
24140                 mod_phy_reg(pi, 0xa6, mask, pi->tx_rx_cal_phy_saveregs[0]);
24141                 mod_phy_reg(pi, 0xa7, mask, pi->tx_rx_cal_phy_saveregs[1]);
24142                 write_phy_reg(pi, 0xa5, pi->tx_rx_cal_phy_saveregs[2]);
24143
24144                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 2, 16,
24145                                          &pi->tx_rx_cal_phy_saveregs[3]);
24146
24147                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_AFECTRL, 1, 18, 16,
24148                                          &pi->tx_rx_cal_phy_saveregs[4]);
24149
24150                 write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[5]);
24151                 write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[6]);
24152         }
24153 }
24154
24155 void
24156 wlc_phy_est_tonepwr_nphy(struct brcms_phy *pi, s32 *qdBm_pwrbuf, u8 num_samps)
24157 {
24158         u16 tssi_reg;
24159         s32 temp, pwrindex[2];
24160         s32 idle_tssi[2];
24161         s32 rssi_buf[4];
24162         s32 tssival[2];
24163         u8 tssi_type;
24164
24165         tssi_reg = read_phy_reg(pi, 0x1e9);
24166
24167         temp = (s32) (tssi_reg & 0x3f);
24168         idle_tssi[0] = (temp <= 31) ? temp : (temp - 64);
24169
24170         temp = (s32) ((tssi_reg >> 8) & 0x3f);
24171         idle_tssi[1] = (temp <= 31) ? temp : (temp - 64);
24172
24173         tssi_type =
24174                 CHSPEC_IS5G(pi->radio_chanspec) ?
24175                 (u8)NPHY_RSSI_SEL_TSSI_5G : (u8)NPHY_RSSI_SEL_TSSI_2G;
24176
24177         wlc_phy_poll_rssi_nphy(pi, tssi_type, rssi_buf, num_samps);
24178
24179         tssival[0] = rssi_buf[0] / ((s32) num_samps);
24180         tssival[1] = rssi_buf[2] / ((s32) num_samps);
24181
24182         pwrindex[0] = idle_tssi[0] - tssival[0] + 64;
24183         pwrindex[1] = idle_tssi[1] - tssival[1] + 64;
24184
24185         if (pwrindex[0] < 0)
24186                 pwrindex[0] = 0;
24187         else if (pwrindex[0] > 63)
24188                 pwrindex[0] = 63;
24189
24190         if (pwrindex[1] < 0)
24191                 pwrindex[1] = 0;
24192         else if (pwrindex[1] > 63)
24193                 pwrindex[1] = 63;
24194
24195         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 1,
24196                                 (u32) pwrindex[0], 32, &qdBm_pwrbuf[0]);
24197         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 1,
24198                                 (u32) pwrindex[1], 32, &qdBm_pwrbuf[1]);
24199 }
24200
24201 static void wlc_phy_update_txcal_ladder_nphy(struct brcms_phy *pi, u16 core)
24202 {
24203         int index;
24204         u32 bbmult_scale;
24205         u16 bbmult;
24206         u16 tblentry;
24207
24208         static const struct nphy_txiqcal_ladder ladder_lo[] = {
24209                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24210                 {25, 0}, {25, 1}, {25, 2}, {25, 3}, {25, 4}, {25, 5},
24211                 {25, 6}, {25, 7}, {35, 7}, {50, 7}, {71, 7}, {100, 7}
24212         };
24213
24214         static const struct nphy_txiqcal_ladder ladder_iq[] = {
24215                 {3, 0}, {4, 0}, {6, 0}, {9, 0}, {13, 0}, {18, 0},
24216                 {25, 0}, {35, 0}, {50, 0}, {71, 0}, {100, 0}, {100, 1},
24217                 {100, 2}, {100, 3}, {100, 4}, {100, 5}, {100, 6}, {100, 7}
24218         };
24219
24220         bbmult = (core == PHY_CORE_0) ?
24221                  ((pi->nphy_txcal_bbmult >> 8) & 0xff) :
24222                  (pi->nphy_txcal_bbmult & 0xff);
24223
24224         for (index = 0; index < 18; index++) {
24225                 bbmult_scale = ladder_lo[index].percent * bbmult;
24226                 bbmult_scale /= 100;
24227
24228                 tblentry =
24229                         ((bbmult_scale & 0xff) << 8) | ladder_lo[index].g_env;
24230                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index, 16,
24231                                          &tblentry);
24232
24233                 bbmult_scale = ladder_iq[index].percent * bbmult;
24234                 bbmult_scale /= 100;
24235
24236                 tblentry =
24237                         ((bbmult_scale & 0xff) << 8) | ladder_iq[index].g_env;
24238                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 1, index + 32,
24239                                          16, &tblentry);
24240         }
24241 }
24242
24243 static u8 wlc_phy_txpwr_idx_cur_get_nphy(struct brcms_phy *pi, u8 core)
24244 {
24245         u16 tmp;
24246         tmp = read_phy_reg(pi, ((core == PHY_CORE_0) ? 0x1ed : 0x1ee));
24247
24248         tmp = (tmp & (0x7f << 8)) >> 8;
24249         return (u8) tmp;
24250 }
24251
24252 static void
24253 wlc_phy_txpwr_idx_cur_set_nphy(struct brcms_phy *pi, u8 idx0, u8 idx1)
24254 {
24255         mod_phy_reg(pi, 0x1e7, (0x7f << 0), idx0);
24256
24257         if (NREV_GT(pi->pubpi.phy_rev, 1))
24258                 mod_phy_reg(pi, 0x222, (0xff << 0), idx1);
24259 }
24260
24261 static u16 wlc_phy_ipa_get_bbmult_nphy(struct brcms_phy *pi)
24262 {
24263         u16 m0m1;
24264
24265         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m0m1);
24266
24267         return m0m1;
24268 }
24269
24270 static void wlc_phy_ipa_set_bbmult_nphy(struct brcms_phy *pi, u8 m0, u8 m1)
24271 {
24272         u16 m0m1 = (u16) ((m0 << 8) | m1);
24273
24274         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m0m1);
24275         wlc_phy_table_write_nphy(pi, 15, 1, 95, 16, &m0m1);
24276 }
24277
24278 static void
24279 wlc_phy_papd_cal_setup_nphy(struct brcms_phy *pi,
24280                             struct nphy_papd_restore_state *state, u8 core)
24281 {
24282         s32 tone_freq;
24283         u8 off_core;
24284         u16 mixgain = 0;
24285
24286         off_core = core ^ 0x1;
24287         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24288
24289                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24290                     || NREV_GE(pi->pubpi.phy_rev, 8))
24291                         wlc_phy_rfctrl_override_nphy_rev7(
24292                                 pi, (0x1 << 7),
24293                                 wlc_phy_read_lpf_bw_ctl_nphy
24294                                         (pi,
24295                                         0), 0, 0,
24296                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24297
24298                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24299                         if (pi->pubpi.radiorev == 5)
24300                                 mixgain = (core == 0) ? 0x20 : 0x00;
24301                         else if ((pi->pubpi.radiorev == 7)
24302                                  || (pi->pubpi.radiorev == 8))
24303                                 mixgain = 0x00;
24304                         else if ((pi->pubpi.radiorev <= 4)
24305                                  || (pi->pubpi.radiorev == 6))
24306                                 mixgain = 0x00;
24307                 } else {
24308                         if ((pi->pubpi.radiorev == 4) ||
24309                             (pi->pubpi.radiorev == 6))
24310                                 mixgain = 0x50;
24311                         else if ((pi->pubpi.radiorev == 3)
24312                                  || (pi->pubpi.radiorev == 7)
24313                                  || (pi->pubpi.radiorev == 8))
24314                                 mixgain = 0x0;
24315                 }
24316
24317                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11),
24318                                                   mixgain, (1 << core), 0,
24319                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24320
24321                 wlc_phy_rfctrl_override_1tomany_nphy(
24322                         pi,
24323                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24324                         1, (1 << core), 0);
24325                 wlc_phy_rfctrl_override_1tomany_nphy(
24326                         pi,
24327                         NPHY_REV7_RfctrlOverride_cmd_tx_pu,
24328                         0, (1 << off_core), 0);
24329
24330                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24331                                                   0, 0x3, 0,
24332                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24333                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1,
24334                                                   (1 << core), 0,
24335                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24336                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0,
24337                                                   (1 << core), 0,
24338                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24339                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1,
24340                                                   (1 << core), 0,
24341                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24342                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0,
24343                                                   (1 << core), 0,
24344                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24345                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1,
24346                                                   (1 << core), 0,
24347                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24348                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0,
24349                                                   (1 << core), 0,
24350                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24351                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1,
24352                                                   (1 << core), 0,
24353                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24354
24355                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5),
24356                                                   0, (1 << core), 0,
24357                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24358                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0,
24359                                                   (1 << core), 0,
24360                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24361
24362                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24363                                                     0xa6 : 0xa7);
24364                 state->afeoverride[core] =
24365                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24366                 state->afectrl[off_core] =
24367                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa7 : 0xa6);
24368                 state->afeoverride[off_core] =
24369                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0xa5 : 0x8f);
24370
24371                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24372                             (0x1 << 2), 0);
24373                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24374                                  0xa5), (0x1 << 2), (0x1 << 2));
24375
24376                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa7 : 0xa6),
24377                             (0x1 << 2), (0x1 << 2));
24378                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa5 :
24379                                  0x8f), (0x1 << 2), (0x1 << 2));
24380
24381                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24382                         state->pwrup[core] =
24383                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24384                                                 TXRXCOUPLE_2G_PWRUP);
24385                         state->atten[core] =
24386                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24387                                                 TXRXCOUPLE_2G_ATTEN);
24388                         state->pwrup[off_core] =
24389                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24390                                                 TXRXCOUPLE_2G_PWRUP);
24391                         state->atten[off_core] =
24392                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24393                                                 TXRXCOUPLE_2G_ATTEN);
24394
24395                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24396                                          TXRXCOUPLE_2G_PWRUP, 0xc);
24397
24398                         if ((pi->pubpi.radiorev == 3) ||
24399                             (pi->pubpi.radiorev == 4) ||
24400                             (pi->pubpi.radiorev == 6))
24401                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24402                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24403                         else if (pi->pubpi.radiorev == 5)
24404                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24405                                                  TXRXCOUPLE_2G_ATTEN,
24406                                                  (core == 0) ? 0xf7 : 0xf2);
24407                         else if ((pi->pubpi.radiorev == 7)
24408                                  || (pi->pubpi.radiorev == 8))
24409                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24410                                                  TXRXCOUPLE_2G_ATTEN, 0xf0);
24411
24412                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24413                                          TXRXCOUPLE_2G_PWRUP, 0x0);
24414                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24415                                          TXRXCOUPLE_2G_ATTEN, 0xff);
24416                 } else {
24417                         state->pwrup[core] =
24418                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24419                                                 TXRXCOUPLE_5G_PWRUP);
24420                         state->atten[core] =
24421                                 READ_RADIO_REG3(pi, RADIO_2057, TX, core,
24422                                                 TXRXCOUPLE_5G_ATTEN);
24423                         state->pwrup[off_core] =
24424                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24425                                                 TXRXCOUPLE_5G_PWRUP);
24426                         state->atten[off_core] =
24427                                 READ_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24428                                                 TXRXCOUPLE_5G_ATTEN);
24429
24430                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24431                                          TXRXCOUPLE_5G_PWRUP, 0xc);
24432
24433                         if ((pi->pubpi.radiorev == 7)
24434                             || (pi->pubpi.radiorev == 8))
24435                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24436                                                  TXRXCOUPLE_5G_ATTEN, 0xf4);
24437
24438                         else
24439                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24440                                                  TXRXCOUPLE_5G_ATTEN, 0xf0);
24441
24442                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24443                                          TXRXCOUPLE_5G_PWRUP, 0x0);
24444                         WRITE_RADIO_REG3(pi, RADIO_2057, TX, off_core,
24445                                          TXRXCOUPLE_5G_ATTEN, 0xff);
24446                 }
24447
24448                 tone_freq = 4000;
24449
24450                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24451
24452                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24453                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
24454
24455                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24456                             0x2a4, (0x1 << 13), (1) << 13);
24457
24458                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24459                             0x29b, (0x1 << 0), (NPHY_PAPD_COMP_OFF) << 0);
24460
24461                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x2a3 :
24462                             0x2a4, (0x1 << 13), (0) << 13);
24463
24464         } else {
24465
24466                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 0);
24467
24468                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0, 0);
24469
24470                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 0);
24471
24472                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 1, 0x3, 0);
24473                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 1, 0x3, 0);
24474
24475                 state->afectrl[core] = read_phy_reg(pi, (core == PHY_CORE_0) ?
24476                                                     0xa6 : 0xa7);
24477                 state->afeoverride[core] =
24478                         read_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f : 0xa5);
24479
24480                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0xa6 : 0xa7),
24481                             (0x1 << 0) | (0x1 << 1) | (0x1 << 2), 0);
24482                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
24483                                  0xa5),
24484                             (0x1 << 0) |
24485                             (0x1 << 1) |
24486                             (0x1 << 2), (0x1 << 0) | (0x1 << 1) | (0x1 << 2));
24487
24488                 state->vga_master[core] =
24489                         READ_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER);
24490                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER, 0x2b);
24491                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24492                         state->fbmix[core] =
24493                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24494                                                 TXFBMIX_G);
24495                         state->intpa_master[core] =
24496                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24497                                                 INTPAG_MASTER);
24498
24499                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_G,
24500                                          0x03);
24501                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24502                                          INTPAG_MASTER, 0x04);
24503                 } else {
24504                         state->fbmix[core] =
24505                                 READ_RADIO_REG2(pi, RADIO_2056, RX, core,
24506                                                 TXFBMIX_A);
24507                         state->intpa_master[core] =
24508                                 READ_RADIO_REG2(pi, RADIO_2056, TX, core,
24509                                                 INTPAA_MASTER);
24510
24511                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, TXFBMIX_A,
24512                                          0x03);
24513                         WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24514                                          INTPAA_MASTER, 0x04);
24515
24516                 }
24517
24518                 tone_freq = 4000;
24519
24520                 wlc_phy_tx_tone_nphy(pi, tone_freq, 181, 0, 0, false);
24521
24522                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24523                             0x29b, (0x1 << 0), (1) << 0);
24524
24525                 mod_phy_reg(pi, (off_core == PHY_CORE_0) ? 0x297 :
24526                             0x29b, (0x1 << 0), (0) << 0);
24527
24528                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24529         }
24530 }
24531
24532 static void
24533 wlc_phy_papd_cal_cleanup_nphy(struct brcms_phy *pi,
24534                               struct nphy_papd_restore_state *state)
24535 {
24536         u8 core;
24537
24538         wlc_phy_stopplayback_nphy(pi);
24539
24540         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24541
24542                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24543
24544                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24545                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24546                                                  TXRXCOUPLE_2G_PWRUP, 0);
24547                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24548                                                  TXRXCOUPLE_2G_ATTEN,
24549                                                  state->atten[core]);
24550                         } else {
24551                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24552                                                  TXRXCOUPLE_5G_PWRUP, 0);
24553                                 WRITE_RADIO_REG3(pi, RADIO_2057, TX, core,
24554                                                  TXRXCOUPLE_5G_ATTEN,
24555                                                  state->atten[core]);
24556                         }
24557                 }
24558
24559                 if ((pi->pubpi.radiorev == 4) || (pi->pubpi.radiorev == 6))
24560                         wlc_phy_rfctrl_override_nphy_rev7(
24561                                 pi, (0x1 << 2),
24562                                 1, 0x3, 0,
24563                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24564                 else
24565                         wlc_phy_rfctrl_override_nphy_rev7(
24566                                 pi, (0x1 << 2),
24567                                 0, 0x3, 1,
24568                                 NPHY_REV7_RFCTRLOVERRIDE_ID0);
24569
24570                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1),
24571                                                   0, 0x3, 1,
24572                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24573                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24574                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24575                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 0, 0x3, 1,
24576                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24577                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 1, 0x3, 1,
24578                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24579                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 0, 0x3, 1,
24580                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24581                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0x3, 1,
24582                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24583                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 12), 0, 0x3, 1,
24584                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24585                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 2), 1, 0x3, 1,
24586                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24587                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 0, 0x3, 1,
24588                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24589                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0x3, 1,
24590                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
24591                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 8), 0, 0x3, 1,
24592                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24593                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 1, 0x3, 1,
24594                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24595                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 0, 0x3, 1,
24596                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24597                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3), 1, 0x3, 1,
24598                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24599                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0x3, 1,
24600                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24601                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 4), 0, 0x3, 1,
24602                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
24603
24604                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24605
24606                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24607                                       0xa6 : 0xa7, state->afectrl[core]);
24608                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24609                                       0xa5, state->afeoverride[core]);
24610                 }
24611
24612                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24613                                             (state->mm & 0xff));
24614
24615                 if (NREV_IS(pi->pubpi.phy_rev, 7)
24616                     || NREV_GE(pi->pubpi.phy_rev, 8))
24617                         wlc_phy_rfctrl_override_nphy_rev7(
24618                                 pi, (0x1 << 7), 0, 0,
24619                                 1,
24620                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
24621         } else {
24622                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
24623                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 13), 0, 0x3, 1);
24624                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 0), 0, 0x3, 1);
24625
24626                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 2), 0, 0x3, 1);
24627                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 1), 0, 0x3, 1);
24628
24629                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
24630
24631                         WRITE_RADIO_REG2(pi, RADIO_2056, RX, core, VGA_MASTER,
24632                                          state->vga_master[core]);
24633                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
24634                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24635                                                  TXFBMIX_G, state->fbmix[core]);
24636                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24637                                                  INTPAG_MASTER,
24638                                                  state->intpa_master[core]);
24639                         } else {
24640                                 WRITE_RADIO_REG2(pi, RADIO_2056, RX, core,
24641                                                  TXFBMIX_A, state->fbmix[core]);
24642                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, core,
24643                                                  INTPAA_MASTER,
24644                                                  state->intpa_master[core]);
24645                         }
24646
24647                         write_phy_reg(pi, (core == PHY_CORE_0) ?
24648                                       0xa6 : 0xa7, state->afectrl[core]);
24649                         write_phy_reg(pi, (core == PHY_CORE_0) ? 0x8f :
24650                                       0xa5, state->afeoverride[core]);
24651                 }
24652
24653                 wlc_phy_ipa_set_bbmult_nphy(pi, (state->mm >> 8) & 0xff,
24654                                             (state->mm & 0xff));
24655
24656                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 1);
24657         }
24658 }
24659
24660 static void
24661 wlc_phy_a1_nphy(struct brcms_phy *pi, u8 core, u32 winsz, u32 start,
24662                 u32 end)
24663 {
24664         u32 *buf, *src, *dst, sz;
24665
24666         sz = end - start + 1;
24667
24668         buf = kmalloc(2 * sizeof(u32) * NPHY_PAPD_EPS_TBL_SIZE, GFP_ATOMIC);
24669         if (NULL == buf)
24670                 return;
24671
24672         src = buf;
24673         dst = buf + NPHY_PAPD_EPS_TBL_SIZE;
24674
24675         wlc_phy_table_read_nphy(pi,
24676                                 (core ==
24677                                  PHY_CORE_0 ? NPHY_TBL_ID_EPSILONTBL0 :
24678                                  NPHY_TBL_ID_EPSILONTBL1),
24679                                 NPHY_PAPD_EPS_TBL_SIZE, 0, 32, src);
24680
24681         do {
24682                 u32 phy_a1, phy_a2;
24683                 s32 phy_a3, phy_a4, phy_a5, phy_a6, phy_a7;
24684
24685                 phy_a1 = end - min(end, (winsz >> 1));
24686                 phy_a2 = min_t(u32, NPHY_PAPD_EPS_TBL_SIZE - 1,
24687                                end + (winsz >> 1));
24688                 phy_a3 = phy_a2 - phy_a1 + 1;
24689                 phy_a6 = 0;
24690                 phy_a7 = 0;
24691
24692                 do {
24693                         wlc_phy_papd_decode_epsilon(src[phy_a2], &phy_a4,
24694                                                     &phy_a5);
24695                         phy_a6 += phy_a4;
24696                         phy_a7 += phy_a5;
24697                 } while (phy_a2-- != phy_a1);
24698
24699                 phy_a6 /= phy_a3;
24700                 phy_a7 /= phy_a3;
24701                 dst[end] = ((u32) phy_a7 << 13) | ((u32) phy_a6 & 0x1fff);
24702         } while (end-- != start);
24703
24704         wlc_phy_table_write_nphy(pi,
24705                                  (core ==
24706                                   PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0 :
24707                                  NPHY_TBL_ID_EPSILONTBL1, sz, start, 32, dst);
24708
24709         kfree(buf);
24710 }
24711
24712 static void
24713 wlc_phy_a2_nphy(struct brcms_phy *pi, struct nphy_ipa_txcalgains *txgains,
24714                 enum phy_cal_mode cal_mode, u8 core)
24715 {
24716         u16 phy_a1, phy_a2, phy_a3;
24717         u16 phy_a4, phy_a5;
24718         bool phy_a6;
24719         u8 phy_a7, m[2];
24720         u32 phy_a8 = 0;
24721         struct nphy_txgains phy_a9;
24722
24723         if (NREV_LT(pi->pubpi.phy_rev, 3))
24724                 return;
24725
24726         phy_a7 = (core == PHY_CORE_0) ? 1 : 0;
24727
24728         phy_a6 = ((cal_mode == CAL_GCTRL)
24729                   || (cal_mode == CAL_SOFT)) ? true : false;
24730
24731         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
24732
24733                 phy_a9 = wlc_phy_get_tx_gain_nphy(pi);
24734
24735                 if (CHSPEC_IS2G(pi->radio_chanspec))
24736                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24737                                   (phy_a9.txgm[core] << 12) |
24738                                   (phy_a9.pga[core] << 8) |
24739                                   (txgains->gains.pad[core] << 3) |
24740                                   (phy_a9.ipa[core]));
24741                 else
24742                         phy_a5 = ((phy_a9.txlpf[core] << 15) |
24743                                   (phy_a9.txgm[core] << 12) |
24744                                   (txgains->gains.pga[core] << 8) |
24745                                   (phy_a9.pad[core] << 3) | (phy_a9.ipa[core]));
24746
24747                 wlc_phy_rfctrl_override_1tomany_nphy(
24748                         pi,
24749                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24750                         phy_a5, (1 << core), 0);
24751
24752                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24753                         if ((pi->pubpi.radiorev <= 4)
24754                             || (pi->pubpi.radiorev == 6))
24755                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24756                                           60 : 79;
24757                         else
24758                                 m[core] = (pi->bw == WL_CHANSPEC_BW_40) ?
24759                                           45 : 64;
24760                 } else {
24761                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24762                 }
24763
24764                 m[phy_a7] = 0;
24765                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24766
24767                 phy_a2 = 63;
24768
24769                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24770                         if ((pi->pubpi.radiorev == 4)
24771                             || (pi->pubpi.radiorev == 6)) {
24772                                 phy_a1 = 30;
24773                                 phy_a3 = 30;
24774                         } else {
24775                                 phy_a1 = 25;
24776                                 phy_a3 = 25;
24777                         }
24778                 } else {
24779                         if ((pi->pubpi.radiorev == 5)
24780                             || (pi->pubpi.radiorev == 7)
24781                             || (pi->pubpi.radiorev == 8)) {
24782                                 phy_a1 = 25;
24783                                 phy_a3 = 25;
24784                         } else {
24785                                 phy_a1 = 35;
24786                                 phy_a3 = 35;
24787                         }
24788                 }
24789
24790                 if (cal_mode == CAL_GCTRL) {
24791                         if ((pi->pubpi.radiorev == 5)
24792                             && (CHSPEC_IS2G(pi->radio_chanspec)))
24793                                 phy_a1 = 55;
24794                         else if (((pi->pubpi.radiorev == 7) &&
24795                                   (CHSPEC_IS2G(pi->radio_chanspec))) ||
24796                                  ((pi->pubpi.radiorev == 8) &&
24797                                   (CHSPEC_IS2G(pi->radio_chanspec))))
24798                                 phy_a1 = 60;
24799                         else
24800                                 phy_a1 = 63;
24801
24802                 } else if ((cal_mode != CAL_FULL) && (cal_mode != CAL_SOFT)) {
24803
24804                         phy_a1 = 35;
24805                         phy_a3 = 35;
24806                 }
24807
24808                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24809                             0x29b, (0x1 << 0), (1) << 0);
24810
24811                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24812                             0x29b, (0x1 << 0), (0) << 0);
24813
24814                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24815                             0x2a4, (0x1 << 13), (1) << 13);
24816
24817                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24818                             0x2a4, (0x1 << 13), (0) << 13);
24819
24820                 write_phy_reg(pi, 0x2a1, 0x80);
24821                 write_phy_reg(pi, 0x2a2, 0x100);
24822
24823                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24824                             0x2a4, (0x7 << 4), (11) << 4);
24825
24826                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24827                             0x2a4, (0x7 << 8), (11) << 8);
24828
24829                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24830                             0x2a4, (0x7 << 0), (0x3) << 0);
24831
24832                 write_phy_reg(pi, 0x2e5, 0x20);
24833
24834                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24835
24836                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24837
24838                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24839
24840                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24841                                                   1, ((core == 0) ? 1 : 2), 0,
24842                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24843                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24844                                                   0, ((core == 0) ? 2 : 1), 0,
24845                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24846
24847                 write_phy_reg(pi, 0x2be, 1);
24848                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24849
24850                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
24851                                                   0, 0x3, 0,
24852                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
24853
24854                 wlc_phy_table_write_nphy(pi,
24855                                          (core ==
24856                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24857                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24858                                          32, &phy_a8);
24859
24860                 if (cal_mode != CAL_GCTRL) {
24861                         if (CHSPEC_IS5G(pi->radio_chanspec))
24862                                 wlc_phy_a1_nphy(pi, core, 5, 0, 35);
24863                 }
24864
24865                 wlc_phy_rfctrl_override_1tomany_nphy(
24866                         pi,
24867                         NPHY_REV7_RfctrlOverride_cmd_txgain,
24868                         phy_a5, (1 << core), 1);
24869
24870         } else {
24871
24872                 if (txgains) {
24873                         if (txgains->useindex) {
24874                                 phy_a4 = 15 - ((txgains->index) >> 3);
24875                                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
24876                                         if (NREV_GE(pi->pubpi.phy_rev, 6) &&
24877                                             pi->sh->chip == BCMA_CHIP_ID_BCM47162) {
24878                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24879                                         } else if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24880                                                 phy_a5 = 0x00f7 | (phy_a4 << 8);
24881                                         } else if (NREV_IS(pi->pubpi.phy_rev, 5)) {
24882                                                 phy_a5 = 0x10f7 | (phy_a4 << 8);
24883                                         } else {
24884                                                 phy_a5 = 0x50f7 | (phy_a4 << 8);
24885                                         }
24886                                 } else {
24887                                         phy_a5 = 0x70f7 | (phy_a4 << 8);
24888                                 }
24889                                 wlc_phy_rfctrl_override_nphy(pi,
24890                                                              (0x1 << 13),
24891                                                              phy_a5,
24892                                                              (1 << core), 0);
24893                         } else {
24894                                 wlc_phy_rfctrl_override_nphy(pi,
24895                                                              (0x1 << 13),
24896                                                              0x5bf7,
24897                                                              (1 << core), 0);
24898                         }
24899                 }
24900
24901                 if (CHSPEC_IS2G(pi->radio_chanspec))
24902                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 45 : 64;
24903                 else
24904                         m[core] = (pi->bw == WL_CHANSPEC_BW_40) ? 75 : 107;
24905
24906                 m[phy_a7] = 0;
24907                 wlc_phy_ipa_set_bbmult_nphy(pi, m[0], m[1]);
24908
24909                 phy_a2 = 63;
24910
24911                 if (cal_mode == CAL_FULL) {
24912                         phy_a1 = 25;
24913                         phy_a3 = 25;
24914                 } else if (cal_mode == CAL_SOFT) {
24915                         phy_a1 = 25;
24916                         phy_a3 = 25;
24917                 } else if (cal_mode == CAL_GCTRL) {
24918                         phy_a1 = 63;
24919                         phy_a3 = 25;
24920                 } else {
24921
24922                         phy_a1 = 25;
24923                         phy_a3 = 25;
24924                 }
24925
24926                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
24927                             0x29b, (0x1 << 0), (1) << 0);
24928
24929                 mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x297 :
24930                             0x29b, (0x1 << 0), (0) << 0);
24931
24932                 if (NREV_GE(pi->pubpi.phy_rev, 6)) {
24933                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24934                                     0x2a4, (0x1 << 13), (1) << 13);
24935
24936                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24937                                     0x2a4, (0x1 << 13), (0) << 13);
24938
24939                         write_phy_reg(pi, 0x2a1, 0x20);
24940                         write_phy_reg(pi, 0x2a2, 0x60);
24941
24942                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24943                                     0x2a4, (0xf << 4), (9) << 4);
24944
24945                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24946                                     0x2a4, (0xf << 8), (9) << 8);
24947
24948                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24949                                     0x2a4, (0xf << 0), (0x2) << 0);
24950
24951                         write_phy_reg(pi, 0x2e5, 0x20);
24952                 } else {
24953                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24954                                     0x2a4, (0x1 << 11), (1) << 11);
24955
24956                         mod_phy_reg(pi, (phy_a7 == PHY_CORE_0) ? 0x2a3 :
24957                                     0x2a4, (0x1 << 11), (0) << 11);
24958
24959                         write_phy_reg(pi, 0x2a1, 0x80);
24960                         write_phy_reg(pi, 0x2a2, 0x600);
24961
24962                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24963                                     0x2a4, (0x7 << 4), (0) << 4);
24964
24965                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24966                                     0x2a4, (0x7 << 8), (0) << 8);
24967
24968                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x2a3 :
24969                                     0x2a4, (0x7 << 0), (0x3) << 0);
24970
24971                         mod_phy_reg(pi, 0x2a0, (0x3f << 8), (0x20) << 8);
24972
24973                 }
24974
24975                 mod_phy_reg(pi, 0x2a0, (0x3f << 0), (phy_a3) << 0);
24976
24977                 mod_phy_reg(pi, 0x29f, (0x3f << 0), (phy_a1) << 0);
24978
24979                 mod_phy_reg(pi, 0x29f, (0x3f << 8), (phy_a2) << 8);
24980
24981                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 1, 0x3, 0);
24982
24983                 write_phy_reg(pi, 0x2be, 1);
24984                 SPINWAIT(read_phy_reg(pi, 0x2be), 10 * 1000 * 1000);
24985
24986                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 0x3, 0);
24987
24988                 wlc_phy_table_write_nphy(pi,
24989                                          (core ==
24990                                           PHY_CORE_0) ? NPHY_TBL_ID_EPSILONTBL0
24991                                          : NPHY_TBL_ID_EPSILONTBL1, 1, phy_a3,
24992                                          32, &phy_a8);
24993
24994                 if (cal_mode != CAL_GCTRL)
24995                         wlc_phy_a1_nphy(pi, core, 5, 0, 40);
24996         }
24997 }
24998
24999 static u8 wlc_phy_a3_nphy(struct brcms_phy *pi, u8 start_gain, u8 core)
25000 {
25001         int phy_a1;
25002         int phy_a2;
25003         bool phy_a3;
25004         struct nphy_ipa_txcalgains phy_a4;
25005         bool phy_a5 = false;
25006         bool phy_a6 = true;
25007         s32 phy_a7, phy_a8;
25008         u32 phy_a9;
25009         int phy_a10;
25010         bool phy_a11 = false;
25011         int phy_a12;
25012         u8 phy_a13 = 0;
25013         u8 phy_a14;
25014         u8 *phy_a15 = NULL;
25015
25016         phy_a4.useindex = true;
25017         phy_a12 = start_gain;
25018
25019         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25020
25021                 phy_a2 = 20;
25022                 phy_a1 = 1;
25023
25024                 if (CHSPEC_IS2G(pi->radio_chanspec)) {
25025                         if (pi->pubpi.radiorev == 5) {
25026
25027                                 phy_a15 = pad_gain_codes_used_2057rev5;
25028                                 phy_a13 =
25029                                         ARRAY_SIZE(pad_gain_codes_used_2057rev5) - 1;
25030
25031                         } else if ((pi->pubpi.radiorev == 7)
25032                                    || (pi->pubpi.radiorev == 8)) {
25033
25034                                 phy_a15 = pad_gain_codes_used_2057rev7;
25035                                 phy_a13 =
25036                                         ARRAY_SIZE(pad_gain_codes_used_2057rev7) - 1;
25037
25038                         } else {
25039
25040                                 phy_a15 = pad_all_gain_codes_2057;
25041                                 phy_a13 = ARRAY_SIZE(pad_all_gain_codes_2057) -
25042                                           1;
25043                         }
25044
25045                 } else {
25046
25047                         phy_a15 = pga_all_gain_codes_2057;
25048                         phy_a13 = ARRAY_SIZE(pga_all_gain_codes_2057) - 1;
25049                 }
25050
25051                 phy_a14 = 0;
25052
25053                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25054                         if (CHSPEC_IS2G(pi->radio_chanspec))
25055                                 phy_a4.gains.pad[core] =
25056                                         (u16) phy_a15[phy_a12];
25057                         else
25058                                 phy_a4.gains.pga[core] =
25059                                         (u16) phy_a15[phy_a12];
25060
25061                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25062
25063                         wlc_phy_table_read_nphy(pi,
25064                                                 (core ==
25065                                                  PHY_CORE_0 ?
25066                                                  NPHY_TBL_ID_EPSILONTBL0 :
25067                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25068                                                 63, 32, &phy_a9);
25069
25070                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25071
25072                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25073                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25074
25075                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25076                                 if (!phy_a3)
25077                                         phy_a12 -= (u8) phy_a1;
25078
25079                                 phy_a11 = true;
25080                                 break;
25081                         }
25082
25083                         if (phy_a3)
25084                                 phy_a12 += (u8) phy_a1;
25085                         else
25086                                 phy_a12 -= (u8) phy_a1;
25087
25088                         if ((phy_a12 < phy_a14) || (phy_a12 > phy_a13)) {
25089                                 if (phy_a12 < phy_a14)
25090                                         phy_a12 = phy_a14;
25091                                 else
25092                                         phy_a12 = phy_a13;
25093
25094                                 phy_a11 = true;
25095                                 break;
25096                         }
25097
25098                         phy_a6 = false;
25099                         phy_a5 = phy_a3;
25100                 }
25101
25102         } else {
25103                 phy_a2 = 10;
25104                 phy_a1 = 8;
25105                 for (phy_a10 = 0; phy_a10 < phy_a2; phy_a10++) {
25106                         phy_a4.index = (u8) phy_a12;
25107                         wlc_phy_a2_nphy(pi, &phy_a4, CAL_GCTRL, core);
25108
25109                         wlc_phy_table_read_nphy(pi,
25110                                                 (core ==
25111                                                  PHY_CORE_0 ?
25112                                                  NPHY_TBL_ID_EPSILONTBL0 :
25113                                                  NPHY_TBL_ID_EPSILONTBL1), 1,
25114                                                 63, 32, &phy_a9);
25115
25116                         wlc_phy_papd_decode_epsilon(phy_a9, &phy_a7, &phy_a8);
25117
25118                         phy_a3 = ((phy_a7 == 4095) || (phy_a7 == -4096) ||
25119                                   (phy_a8 == 4095) || (phy_a8 == -4096));
25120
25121                         if (!phy_a6 && (phy_a3 != phy_a5)) {
25122                                 if (!phy_a3)
25123                                         phy_a12 -= (u8) phy_a1;
25124
25125                                 phy_a11 = true;
25126                                 break;
25127                         }
25128
25129                         if (phy_a3)
25130                                 phy_a12 += (u8) phy_a1;
25131                         else
25132                                 phy_a12 -= (u8) phy_a1;
25133
25134                         if ((phy_a12 < 0) || (phy_a12 > 127)) {
25135                                 if (phy_a12 < 0)
25136                                         phy_a12 = 0;
25137                                 else
25138                                         phy_a12 = 127;
25139
25140                                 phy_a11 = true;
25141                                 break;
25142                         }
25143
25144                         phy_a6 = false;
25145                         phy_a5 = phy_a3;
25146                 }
25147
25148         }
25149
25150         if (NREV_GE(pi->pubpi.phy_rev, 7))
25151                 return (u8) phy_a15[phy_a12];
25152         else
25153                 return (u8) phy_a12;
25154
25155 }
25156
25157 static void wlc_phy_a4(struct brcms_phy *pi, bool full_cal)
25158 {
25159         struct nphy_ipa_txcalgains phy_b1[2];
25160         struct nphy_papd_restore_state phy_b2;
25161         bool phy_b3;
25162         u8 phy_b4;
25163         u8 phy_b5;
25164         s16 phy_b6, phy_b7, phy_b8;
25165         u16 phy_b9;
25166         s16 phy_b10, phy_b11, phy_b12;
25167
25168         phy_b11 = 0;
25169         phy_b12 = 0;
25170         phy_b7 = 0;
25171         phy_b8 = 0;
25172         phy_b6 = 0;
25173
25174         if (pi->nphy_papd_skip == 1)
25175                 return;
25176
25177         phy_b3 = (0 == (bcma_read32(pi->d11core, D11REGOFFS(maccontrol)) &
25178                         MCTL_EN_MAC));
25179         if (!phy_b3)
25180                 wlapi_suspend_mac_and_wait(pi->sh->physhim);
25181
25182         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25183
25184         pi->nphy_force_papd_cal = false;
25185
25186         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++)
25187                 pi->nphy_papd_tx_gain_at_last_cal[phy_b5] =
25188                         wlc_phy_txpwr_idx_cur_get_nphy(pi, phy_b5);
25189
25190         pi->nphy_papd_last_cal = pi->sh->now;
25191         pi->nphy_papd_recal_counter++;
25192
25193         phy_b4 = pi->nphy_txpwrctrl;
25194         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25195
25196         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL0, 64, 0, 32,
25197                                  nphy_papd_scaltbl);
25198         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_SCALARTBL1, 64, 0, 32,
25199                                  nphy_papd_scaltbl);
25200
25201         phy_b9 = read_phy_reg(pi, 0x01);
25202         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
25203
25204         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25205                 s32 i, val = 0;
25206                 for (i = 0; i < 64; i++)
25207                         wlc_phy_table_write_nphy(pi,
25208                                                  ((phy_b5 ==
25209                                                    PHY_CORE_0) ?
25210                                                   NPHY_TBL_ID_EPSILONTBL0 :
25211                                                   NPHY_TBL_ID_EPSILONTBL1), 1,
25212                                                  i, 32, &val);
25213         }
25214
25215         wlc_phy_ipa_restore_tx_digi_filts_nphy(pi);
25216
25217         phy_b2.mm = wlc_phy_ipa_get_bbmult_nphy(pi);
25218         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25219                 wlc_phy_papd_cal_setup_nphy(pi, &phy_b2, phy_b5);
25220
25221                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25222                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25223                                 if ((pi->pubpi.radiorev == 3)
25224                                     || (pi->pubpi.radiorev == 4)
25225                                     || (pi->pubpi.radiorev == 6)) {
25226                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25227                                                 23;
25228                                 } else if (pi->pubpi.radiorev == 5) {
25229                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25230                                                 0;
25231                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25232                                                 wlc_phy_a3_nphy(
25233                                                         pi,
25234                                                         pi->
25235                                                         nphy_papd_cal_gain_index
25236                                                         [phy_b5],
25237                                                         phy_b5);
25238
25239                                 } else if ((pi->pubpi.radiorev == 7)
25240                                            || (pi->pubpi.radiorev == 8)) {
25241
25242                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25243                                                 0;
25244                                         pi->nphy_papd_cal_gain_index[phy_b5] =
25245                                                 wlc_phy_a3_nphy(
25246                                                         pi,
25247                                                         pi->
25248                                                         nphy_papd_cal_gain_index
25249                                                         [phy_b5],
25250                                                         phy_b5);
25251
25252                                 }
25253
25254                                 phy_b1[phy_b5].gains.pad[phy_b5] =
25255                                         pi->nphy_papd_cal_gain_index[phy_b5];
25256
25257                         } else {
25258                                 pi->nphy_papd_cal_gain_index[phy_b5] = 0;
25259                                 pi->nphy_papd_cal_gain_index[phy_b5] =
25260                                         wlc_phy_a3_nphy(
25261                                                 pi,
25262                                                 pi->
25263                                                 nphy_papd_cal_gain_index
25264                                                 [phy_b5], phy_b5);
25265                                 phy_b1[phy_b5].gains.pga[phy_b5] =
25266                                         pi->nphy_papd_cal_gain_index[phy_b5];
25267                         }
25268                 } else {
25269                         phy_b1[phy_b5].useindex = true;
25270                         phy_b1[phy_b5].index = 16;
25271                         phy_b1[phy_b5].index =
25272                                 wlc_phy_a3_nphy(pi, phy_b1[phy_b5].index,
25273                                                 phy_b5);
25274
25275                         pi->nphy_papd_cal_gain_index[phy_b5] =
25276                                 15 - ((phy_b1[phy_b5].index) >> 3);
25277                 }
25278
25279                 switch (pi->nphy_papd_cal_type) {
25280                 case 0:
25281                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_FULL, phy_b5);
25282                         break;
25283                 case 1:
25284                         wlc_phy_a2_nphy(pi, &phy_b1[phy_b5], CAL_SOFT, phy_b5);
25285                         break;
25286                 }
25287
25288                 if (NREV_GE(pi->pubpi.phy_rev, 7))
25289                         wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25290         }
25291
25292         if (NREV_LT(pi->pubpi.phy_rev, 7))
25293                 wlc_phy_papd_cal_cleanup_nphy(pi, &phy_b2);
25294
25295         for (phy_b5 = 0; phy_b5 < pi->pubpi.phy_corenum; phy_b5++) {
25296                 int eps_offset = 0;
25297
25298                 if (NREV_GE(pi->pubpi.phy_rev, 7)) {
25299                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25300                                 if (pi->pubpi.radiorev == 3)
25301                                         eps_offset = -2;
25302                                 else if (pi->pubpi.radiorev == 5)
25303                                         eps_offset = 3;
25304                                 else
25305                                         eps_offset = -1;
25306                         } else {
25307                                 eps_offset = 2;
25308                         }
25309
25310                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25311                                 phy_b8 = phy_b1[phy_b5].gains.pad[phy_b5];
25312                                 phy_b10 = 0;
25313                                 if ((pi->pubpi.radiorev == 3) ||
25314                                     (pi->pubpi.radiorev == 4) ||
25315                                     (pi->pubpi.radiorev == 6)) {
25316                                         phy_b12 = -(
25317                                             nphy_papd_padgain_dlt_2g_2057rev3n4
25318                                                              [phy_b8] + 1) / 2;
25319                                         phy_b10 = -1;
25320                                 } else if (pi->pubpi.radiorev == 5) {
25321                                         phy_b12 = -(
25322                                             nphy_papd_padgain_dlt_2g_2057rev5
25323                                                              [phy_b8] + 1) / 2;
25324                                 } else if ((pi->pubpi.radiorev == 7) ||
25325                                            (pi->pubpi.radiorev == 8)) {
25326                                         phy_b12 = -(
25327                                             nphy_papd_padgain_dlt_2g_2057rev7
25328                                                              [phy_b8] + 1) / 2;
25329                                 }
25330                         } else {
25331                                 phy_b7 = phy_b1[phy_b5].gains.pga[phy_b5];
25332                                 if ((pi->pubpi.radiorev == 3) ||
25333                                     (pi->pubpi.radiorev == 4) ||
25334                                     (pi->pubpi.radiorev == 6))
25335                                         phy_b11 =
25336                                                 -(nphy_papd_pgagain_dlt_5g_2057
25337                                                   [phy_b7]
25338                                                   + 1) / 2;
25339                                 else if ((pi->pubpi.radiorev == 7)
25340                                          || (pi->pubpi.radiorev == 8))
25341                                         phy_b11 = -(
25342                                               nphy_papd_pgagain_dlt_5g_2057rev7
25343                                                              [phy_b7] + 1) / 2;
25344
25345                                 phy_b10 = -9;
25346                         }
25347
25348                         if (CHSPEC_IS2G(pi->radio_chanspec))
25349                                 phy_b6 =
25350                                         -60 + 27 + eps_offset + phy_b12 +
25351                                         phy_b10;
25352                         else
25353                                 phy_b6 =
25354                                         -60 + 27 + eps_offset + phy_b11 +
25355                                         phy_b10;
25356
25357                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25358                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25359
25360                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25361                 } else {
25362                         if (NREV_LT(pi->pubpi.phy_rev, 5))
25363                                 eps_offset = 4;
25364                         else
25365                                 eps_offset = 2;
25366
25367                         phy_b7 = 15 - ((phy_b1[phy_b5].index) >> 3);
25368
25369                         if (CHSPEC_IS2G(pi->radio_chanspec)) {
25370                                 phy_b11 =
25371                                         -(nphy_papd_pga_gain_delta_ipa_2g[
25372                                                   phy_b7] +
25373                                           1) / 2;
25374                                 phy_b10 = 0;
25375                         } else {
25376                                 phy_b11 =
25377                                         -(nphy_papd_pga_gain_delta_ipa_5g[
25378                                                   phy_b7] +
25379                                           1) / 2;
25380                                 phy_b10 = -9;
25381                         }
25382
25383                         phy_b6 = -60 + 27 + eps_offset + phy_b11 + phy_b10;
25384
25385                         mod_phy_reg(pi, (phy_b5 == PHY_CORE_0) ? 0x298 :
25386                                     0x29c, (0x1ff << 7), (phy_b6) << 7);
25387
25388                         pi->nphy_papd_epsilon_offset[phy_b5] = phy_b6;
25389                 }
25390         }
25391
25392         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
25393                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25394
25395         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
25396                     0x29b, (0x1 << 0), (NPHY_PAPD_COMP_ON) << 0);
25397
25398         if (NREV_GE(pi->pubpi.phy_rev, 6)) {
25399                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25400                             0x2a4, (0x1 << 13), (0) << 13);
25401
25402                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25403                             0x2a4, (0x1 << 13), (0) << 13);
25404
25405         } else {
25406                 mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x2a3 :
25407                             0x2a4, (0x1 << 11), (0) << 11);
25408
25409                 mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x2a3 :
25410                             0x2a4, (0x1 << 11), (0) << 11);
25411
25412         }
25413         pi->nphy_papdcomp = NPHY_PAPD_COMP_ON;
25414
25415         write_phy_reg(pi, 0x01, phy_b9);
25416
25417         wlc_phy_ipa_set_tx_digi_filts_nphy(pi);
25418
25419         wlc_phy_txpwrctrl_enable_nphy(pi, phy_b4);
25420         if (phy_b4 == PHY_TPC_HW_OFF) {
25421                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25422                                          (s8) (pi->nphy_txpwrindex[0].
25423                                                index_internal), false);
25424                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25425                                          (s8) (pi->nphy_txpwrindex[1].
25426                                                index_internal), false);
25427         }
25428
25429         wlc_phy_stay_in_carriersearch_nphy(pi, false);
25430
25431         if (!phy_b3)
25432                 wlapi_enable_mac(pi->sh->physhim);
25433 }
25434
25435 void wlc_phy_cal_perical_nphy_run(struct brcms_phy *pi, u8 caltype)
25436 {
25437         struct nphy_txgains target_gain;
25438         u8 tx_pwr_ctrl_state;
25439         bool fullcal = true;
25440         bool restore_tx_gain = false;
25441         bool mphase;
25442
25443         if (PHY_MUTED(pi))
25444                 return;
25445
25446         if (caltype == PHY_PERICAL_AUTO)
25447                 fullcal = (pi->radio_chanspec != pi->nphy_txiqlocal_chanspec);
25448         else if (caltype == PHY_PERICAL_PARTIAL)
25449                 fullcal = false;
25450
25451         if (pi->cal_type_override != PHY_PERICAL_AUTO)
25452                 fullcal =
25453                         (pi->cal_type_override ==
25454                          PHY_PERICAL_FULL) ? true : false;
25455
25456         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_INIT) {
25457                 if (pi->nphy_txiqlocal_chanspec != pi->radio_chanspec)
25458                         wlc_phy_cal_perical_mphase_restart(pi);
25459         }
25460
25461         if (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_RXCAL)
25462                 wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION, 10000);
25463
25464         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25465
25466         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25467
25468         if ((pi->mphase_cal_phase_id == MPHASE_CAL_STATE_IDLE) ||
25469             (pi->mphase_cal_phase_id == MPHASE_CAL_STATE_INIT)) {
25470                 pi->nphy_cal_orig_pwr_idx[0] =
25471                         (u8) ((read_phy_reg(pi, 0x1ed) >> 8) & 0x7f);
25472                 pi->nphy_cal_orig_pwr_idx[1] =
25473                         (u8) ((read_phy_reg(pi, 0x1ee) >> 8) & 0x7f);
25474
25475                 if (pi->nphy_txpwrctrl != PHY_TPC_HW_OFF) {
25476                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2,
25477                                                 0x110, 16,
25478                                                 pi->nphy_cal_orig_tx_gain);
25479                 } else {
25480                         pi->nphy_cal_orig_tx_gain[0] = 0;
25481                         pi->nphy_cal_orig_tx_gain[1] = 0;
25482                 }
25483         }
25484         target_gain = wlc_phy_get_tx_gain_nphy(pi);
25485         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
25486         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
25487
25488         if (pi->antsel_type == ANTSEL_2x3)
25489                 wlc_phy_antsel_init((struct brcms_phy_pub *) pi, true);
25490
25491         mphase = (pi->mphase_cal_phase_id != MPHASE_CAL_STATE_IDLE);
25492         if (!mphase) {
25493
25494                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25495                         wlc_phy_precal_txgain_nphy(pi);
25496                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25497                         restore_tx_gain = true;
25498
25499                         target_gain = pi->nphy_cal_target_gain;
25500                 }
25501                 if (0 ==
25502                     wlc_phy_cal_txiqlo_nphy(pi, target_gain, fullcal,
25503                                             mphase)) {
25504                         if (PHY_IPA(pi))
25505                                 wlc_phy_a4(pi, true);
25506
25507                         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25508                         wlapi_enable_mac(pi->sh->physhim);
25509                         wlapi_bmac_write_shm(pi->sh->physhim, M_CTS_DURATION,
25510                                              10000);
25511                         wlapi_suspend_mac_and_wait(pi->sh->physhim);
25512                         wlc_phyreg_enter((struct brcms_phy_pub *) pi);
25513
25514                         if (0 == wlc_phy_cal_rxiq_nphy(pi, target_gain,
25515                                         (pi->first_cal_after_assoc ||
25516                                         (pi->cal_type_override ==
25517                                          PHY_PERICAL_FULL)) ? 2 : 0, false)) {
25518                                 wlc_phy_savecal_nphy(pi);
25519
25520                                 wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25521
25522                                 pi->nphy_perical_last = pi->sh->now;
25523                         }
25524                 }
25525                 if (caltype != PHY_PERICAL_AUTO)
25526                         wlc_phy_rssi_cal_nphy(pi);
25527
25528                 if (pi->first_cal_after_assoc
25529                     || (pi->cal_type_override == PHY_PERICAL_FULL)) {
25530                         pi->first_cal_after_assoc = false;
25531                         wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25532                         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25533                 }
25534
25535                 if (NREV_GE(pi->pubpi.phy_rev, 3))
25536                         wlc_phy_radio205x_vcocal_nphy(pi);
25537         } else {
25538                 switch (pi->mphase_cal_phase_id) {
25539                 case MPHASE_CAL_STATE_INIT:
25540                         pi->nphy_perical_last = pi->sh->now;
25541                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25542
25543                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25544                                 wlc_phy_precal_txgain_nphy(pi);
25545
25546                         pi->nphy_cal_target_gain = wlc_phy_get_tx_gain_nphy(pi);
25547                         pi->mphase_cal_phase_id++;
25548                         break;
25549
25550                 case MPHASE_CAL_STATE_TXPHASE0:
25551                 case MPHASE_CAL_STATE_TXPHASE1:
25552                 case MPHASE_CAL_STATE_TXPHASE2:
25553                 case MPHASE_CAL_STATE_TXPHASE3:
25554                 case MPHASE_CAL_STATE_TXPHASE4:
25555                 case MPHASE_CAL_STATE_TXPHASE5:
25556                         if ((pi->radar_percal_mask & 0x10) != 0)
25557                                 pi->nphy_rxcal_active = true;
25558
25559                         if (wlc_phy_cal_txiqlo_nphy
25560                                     (pi, pi->nphy_cal_target_gain, fullcal,
25561                                     true) != 0) {
25562
25563                                 wlc_phy_cal_perical_mphase_reset(pi);
25564                                 break;
25565                         }
25566
25567                         if (NREV_LE(pi->pubpi.phy_rev, 2) &&
25568                             (pi->mphase_cal_phase_id ==
25569                              MPHASE_CAL_STATE_TXPHASE4))
25570                                 pi->mphase_cal_phase_id += 2;
25571                         else
25572                                 pi->mphase_cal_phase_id++;
25573                         break;
25574
25575                 case MPHASE_CAL_STATE_PAPDCAL:
25576                         if ((pi->radar_percal_mask & 0x2) != 0)
25577                                 pi->nphy_rxcal_active = true;
25578
25579                         if (PHY_IPA(pi))
25580                                 wlc_phy_a4(pi, true);
25581
25582                         pi->mphase_cal_phase_id++;
25583                         break;
25584
25585                 case MPHASE_CAL_STATE_RXCAL:
25586                         if ((pi->radar_percal_mask & 0x1) != 0)
25587                                 pi->nphy_rxcal_active = true;
25588                         if (wlc_phy_cal_rxiq_nphy(pi, target_gain,
25589                                                   (pi->first_cal_after_assoc ||
25590                                                    (pi->cal_type_override ==
25591                                                     PHY_PERICAL_FULL)) ? 2 : 0,
25592                                                   false) == 0)
25593                                 wlc_phy_savecal_nphy(pi);
25594
25595                         pi->mphase_cal_phase_id++;
25596                         break;
25597
25598                 case MPHASE_CAL_STATE_RSSICAL:
25599                         if ((pi->radar_percal_mask & 0x4) != 0)
25600                                 pi->nphy_rxcal_active = true;
25601                         wlc_phy_txpwrctrl_coeff_setup_nphy(pi);
25602                         wlc_phy_rssi_cal_nphy(pi);
25603
25604                         if (NREV_GE(pi->pubpi.phy_rev, 3))
25605                                 wlc_phy_radio205x_vcocal_nphy(pi);
25606
25607                         restore_tx_gain = true;
25608
25609                         if (pi->first_cal_after_assoc)
25610                                 pi->mphase_cal_phase_id++;
25611                         else
25612                                 wlc_phy_cal_perical_mphase_reset(pi);
25613
25614                         break;
25615
25616                 case MPHASE_CAL_STATE_IDLETSSI:
25617                         if ((pi->radar_percal_mask & 0x8) != 0)
25618                                 pi->nphy_rxcal_active = true;
25619
25620                         if (pi->first_cal_after_assoc) {
25621                                 pi->first_cal_after_assoc = false;
25622                                 wlc_phy_txpwrctrl_idle_tssi_nphy(pi);
25623                                 wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
25624                         }
25625
25626                         wlc_phy_cal_perical_mphase_reset(pi);
25627                         break;
25628
25629                 default:
25630                         wlc_phy_cal_perical_mphase_reset(pi);
25631                         break;
25632                 }
25633         }
25634
25635         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25636                 if (restore_tx_gain) {
25637                         if (tx_pwr_ctrl_state != PHY_TPC_HW_OFF) {
25638
25639                                 wlc_phy_txpwr_index_nphy(pi, 1,
25640                                                          pi->
25641                                                          nphy_cal_orig_pwr_idx
25642                                                          [0], false);
25643                                 wlc_phy_txpwr_index_nphy(pi, 2,
25644                                                          pi->
25645                                                          nphy_cal_orig_pwr_idx
25646                                                          [1], false);
25647
25648                                 pi->nphy_txpwrindex[0].index = -1;
25649                                 pi->nphy_txpwrindex[1].index = -1;
25650                         } else {
25651                                 wlc_phy_txpwr_index_nphy(pi, (1 << 0),
25652                                                          (s8) (pi->
25653                                                                nphy_txpwrindex
25654                                                                [0].
25655                                                                index_internal),
25656                                                          false);
25657                                 wlc_phy_txpwr_index_nphy(pi, (1 << 1),
25658                                                          (s8) (pi->
25659                                                                nphy_txpwrindex
25660                                                                [1].
25661                                                                index_internal),
25662                                                          false);
25663                         }
25664                 }
25665         }
25666
25667         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
25668         wlc_phyreg_exit((struct brcms_phy_pub *) pi);
25669         wlapi_enable_mac(pi->sh->physhim);
25670 }
25671
25672 int
25673 wlc_phy_cal_txiqlo_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
25674                         bool fullcal, bool mphase)
25675 {
25676         u16 val;
25677         u16 tbl_buf[11];
25678         u8 cal_cnt;
25679         u16 cal_cmd;
25680         u8 num_cals, max_cal_cmds;
25681         u16 core_no, cal_type;
25682         u16 diq_start = 0;
25683         u8 phy_bw;
25684         u16 max_val;
25685         u16 tone_freq;
25686         u16 gain_save[2];
25687         u16 cal_gain[2];
25688         struct nphy_iqcal_params cal_params[2];
25689         u32 tbl_len;
25690         const void *tbl_ptr;
25691         bool ladder_updated[2];
25692         u8 mphase_cal_lastphase = 0;
25693         int bcmerror = 0;
25694         bool phyhang_avoid_state = false;
25695
25696         static const u16 tbl_tx_iqlo_cal_loft_ladder_20[] = {
25697                 0x0300, 0x0500, 0x0700, 0x0900, 0x0d00, 0x1100, 0x1900, 0x1901,
25698                 0x1902,
25699                 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, 0x2407, 0x3207, 0x4607,
25700                 0x6407
25701         };
25702
25703         static const u16 tbl_tx_iqlo_cal_iqimb_ladder_20[] = {
25704                 0x0200, 0x0300, 0x0600, 0x0900, 0x0d00, 0x1100, 0x1900, 0x2400,
25705                 0x3200,
25706                 0x4600, 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406,
25707                 0x6407
25708         };
25709
25710         static const u16 tbl_tx_iqlo_cal_loft_ladder_40[] = {
25711                 0x0200, 0x0300, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1201,
25712                 0x1202,
25713                 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1907, 0x2307, 0x3207,
25714                 0x4707
25715         };
25716
25717         static const u16 tbl_tx_iqlo_cal_iqimb_ladder_40[] = {
25718                 0x0100, 0x0200, 0x0400, 0x0700, 0x0900, 0x0c00, 0x1200, 0x1900,
25719                 0x2300,
25720                 0x3200, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706,
25721                 0x4707
25722         };
25723
25724         static const u16 tbl_tx_iqlo_cal_startcoefs[] = {
25725                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25726                 0x0000
25727         };
25728
25729         static const u16 tbl_tx_iqlo_cal_cmds_fullcal[] = {
25730                 0x8123, 0x8264, 0x8086, 0x8245, 0x8056,
25731                 0x9123, 0x9264, 0x9086, 0x9245, 0x9056
25732         };
25733
25734         static const u16 tbl_tx_iqlo_cal_cmds_recal[] = {
25735                 0x8101, 0x8253, 0x8053, 0x8234, 0x8034,
25736                 0x9101, 0x9253, 0x9053, 0x9234, 0x9034
25737         };
25738
25739         static const u16 tbl_tx_iqlo_cal_startcoefs_nphyrev3[] = {
25740                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25741                 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
25742                 0x0000
25743         };
25744
25745         static const u16 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3[] = {
25746                 0x8434, 0x8334, 0x8084, 0x8267, 0x8056, 0x8234,
25747                 0x9434, 0x9334, 0x9084, 0x9267, 0x9056, 0x9234
25748         };
25749
25750         static const u16 tbl_tx_iqlo_cal_cmds_recal_nphyrev3[] = {
25751                 0x8423, 0x8323, 0x8073, 0x8256, 0x8045, 0x8223,
25752                 0x9423, 0x9323, 0x9073, 0x9256, 0x9045, 0x9223
25753         };
25754
25755         wlc_phy_stay_in_carriersearch_nphy(pi, true);
25756
25757         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
25758                 phyhang_avoid_state = pi->phyhang_avoid;
25759                 pi->phyhang_avoid = false;
25760         }
25761
25762         if (CHSPEC_IS40(pi->radio_chanspec))
25763                 phy_bw = 40;
25764         else
25765                 phy_bw = 20;
25766
25767         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
25768
25769         for (core_no = 0; core_no <= 1; core_no++) {
25770                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
25771                                               &cal_params[core_no]);
25772                 cal_gain[core_no] = cal_params[core_no].cal_gain;
25773         }
25774
25775         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
25776
25777         wlc_phy_txcal_radio_setup_nphy(pi);
25778
25779         wlc_phy_txcal_physetup_nphy(pi);
25780
25781         ladder_updated[0] = ladder_updated[1] = false;
25782         if (!(NREV_GE(pi->pubpi.phy_rev, 6) ||
25783               (NREV_IS(pi->pubpi.phy_rev, 5) && PHY_IPA(pi)
25784                && (CHSPEC_IS2G(pi->radio_chanspec))))) {
25785
25786                 if (phy_bw == 40) {
25787                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_40;
25788                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_40);
25789                 } else {
25790                         tbl_ptr = tbl_tx_iqlo_cal_loft_ladder_20;
25791                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_loft_ladder_20);
25792                 }
25793                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 0,
25794                                          16, tbl_ptr);
25795
25796                 if (phy_bw == 40) {
25797                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_40;
25798                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_40);
25799                 } else {
25800                         tbl_ptr = tbl_tx_iqlo_cal_iqimb_ladder_20;
25801                         tbl_len = ARRAY_SIZE(tbl_tx_iqlo_cal_iqimb_ladder_20);
25802                 }
25803                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 32,
25804                                          16, tbl_ptr);
25805         }
25806
25807         if (NREV_GE(pi->pubpi.phy_rev, 7))
25808                 write_phy_reg(pi, 0xc2, 0x8ad9);
25809         else
25810                 write_phy_reg(pi, 0xc2, 0x8aa9);
25811
25812         max_val = 250;
25813         tone_freq = (phy_bw == 20) ? 2500 : 5000;
25814
25815         if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25816                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff, 0, 1, 0, false);
25817                 bcmerror = 0;
25818         } else {
25819                 bcmerror =
25820                         wlc_phy_tx_tone_nphy(pi, tone_freq, max_val, 1, 0,
25821                                              false);
25822         }
25823
25824         if (bcmerror == 0) {
25825
25826                 if (pi->mphase_cal_phase_id > MPHASE_CAL_STATE_TXPHASE0) {
25827                         tbl_ptr = pi->mphase_txcal_bestcoeffs;
25828                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
25829                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25830                                 tbl_len -= 2;
25831                 } else {
25832                         if ((!fullcal) && (pi->nphy_txiqlocal_coeffsvalid)) {
25833
25834                                 tbl_ptr = pi->nphy_txiqlocal_bestc;
25835                                 tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25836                                 if (NREV_LT(pi->pubpi.phy_rev, 3))
25837                                         tbl_len -= 2;
25838                         } else {
25839
25840                                 fullcal = true;
25841
25842                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
25843                                         tbl_ptr =
25844                                             tbl_tx_iqlo_cal_startcoefs_nphyrev3;
25845                                         tbl_len = ARRAY_SIZE(
25846                                            tbl_tx_iqlo_cal_startcoefs_nphyrev3);
25847                                 } else {
25848                                         tbl_ptr = tbl_tx_iqlo_cal_startcoefs;
25849                                         tbl_len = ARRAY_SIZE(
25850                                                     tbl_tx_iqlo_cal_startcoefs);
25851                                 }
25852                         }
25853                 }
25854                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, tbl_len, 64,
25855                                          16, tbl_ptr);
25856
25857                 if (fullcal) {
25858                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25859                                        ARRAY_SIZE(
25860                                 tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3) :
25861                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_fullcal);
25862                 } else {
25863                         max_cal_cmds = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25864                                        ARRAY_SIZE(
25865                                 tbl_tx_iqlo_cal_cmds_recal_nphyrev3) :
25866                                        ARRAY_SIZE(tbl_tx_iqlo_cal_cmds_recal);
25867                 }
25868
25869                 if (mphase) {
25870                         cal_cnt = pi->mphase_txcal_cmdidx;
25871                         if ((cal_cnt + pi->mphase_txcal_numcmds) < max_cal_cmds)
25872                                 num_cals = cal_cnt + pi->mphase_txcal_numcmds;
25873                         else
25874                                 num_cals = max_cal_cmds;
25875                 } else {
25876                         cal_cnt = 0;
25877                         num_cals = max_cal_cmds;
25878                 }
25879
25880                 for (; cal_cnt < num_cals; cal_cnt++) {
25881
25882                         if (fullcal) {
25883                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25884                                           tbl_tx_iqlo_cal_cmds_fullcal_nphyrev3
25885                                           [cal_cnt] :
25886                                           tbl_tx_iqlo_cal_cmds_fullcal[cal_cnt];
25887                         } else {
25888                                 cal_cmd = (NREV_GE(pi->pubpi.phy_rev, 3)) ?
25889                                           tbl_tx_iqlo_cal_cmds_recal_nphyrev3[
25890                                         cal_cnt]
25891                                           : tbl_tx_iqlo_cal_cmds_recal[cal_cnt];
25892                         }
25893
25894                         core_no = ((cal_cmd & 0x3000) >> 12);
25895                         cal_type = ((cal_cmd & 0x0F00) >> 8);
25896
25897                         if (NREV_GE(pi->pubpi.phy_rev, 6) ||
25898                             (NREV_IS(pi->pubpi.phy_rev, 5) &&
25899                              PHY_IPA(pi)
25900                              && (CHSPEC_IS2G(pi->radio_chanspec)))) {
25901                                 if (!ladder_updated[core_no]) {
25902                                         wlc_phy_update_txcal_ladder_nphy(
25903                                                 pi,
25904                                                 core_no);
25905                                         ladder_updated[core_no] = true;
25906                                 }
25907                         }
25908
25909                         val =
25910                                 (cal_params[core_no].
25911                                  ncorr[cal_type] << 8) | NPHY_N_GCTL;
25912                         write_phy_reg(pi, 0xc1, val);
25913
25914                         if ((cal_type == 1) || (cal_type == 3)
25915                             || (cal_type == 4)) {
25916
25917                                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25918                                                         1, 69 + core_no, 16,
25919                                                         tbl_buf);
25920
25921                                 diq_start = tbl_buf[0];
25922
25923                                 tbl_buf[0] = 0;
25924                                 wlc_phy_table_write_nphy(pi,
25925                                                          NPHY_TBL_ID_IQLOCAL, 1,
25926                                                          69 + core_no, 16,
25927                                                          tbl_buf);
25928                         }
25929
25930                         write_phy_reg(pi, 0xc0, cal_cmd);
25931
25932                         SPINWAIT(((read_phy_reg(pi, 0xc0) & 0xc000) != 0),
25933                                  20000);
25934                         if (WARN(read_phy_reg(pi, 0xc0) & 0xc000,
25935                                  "HW error: txiq calib"))
25936                                 return -EIO;
25937
25938                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25939                                                 tbl_len, 96, 16, tbl_buf);
25940                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25941                                                  tbl_len, 64, 16, tbl_buf);
25942
25943                         if ((cal_type == 1) || (cal_type == 3)
25944                             || (cal_type == 4)) {
25945
25946                                 tbl_buf[0] = diq_start;
25947
25948                         }
25949
25950                 }
25951
25952                 if (mphase) {
25953                         pi->mphase_txcal_cmdidx = num_cals;
25954                         if (pi->mphase_txcal_cmdidx >= max_cal_cmds)
25955                                 pi->mphase_txcal_cmdidx = 0;
25956                 }
25957
25958                 mphase_cal_lastphase =
25959                         (NREV_LE(pi->pubpi.phy_rev, 2)) ?
25960                         MPHASE_CAL_STATE_TXPHASE4 : MPHASE_CAL_STATE_TXPHASE5;
25961
25962                 if (!mphase
25963                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase)) {
25964
25965                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 96,
25966                                                 16, tbl_buf);
25967                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
25968                                                  16, tbl_buf);
25969
25970                         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
25971
25972                                 tbl_buf[0] = 0;
25973                                 tbl_buf[1] = 0;
25974                                 tbl_buf[2] = 0;
25975                                 tbl_buf[3] = 0;
25976
25977                         }
25978                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
25979                                                  16, tbl_buf);
25980
25981                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 101,
25982                                                 16, tbl_buf);
25983                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
25984                                                  16, tbl_buf);
25985
25986                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
25987                                                  16, tbl_buf);
25988
25989                         tbl_len = ARRAY_SIZE(pi->nphy_txiqlocal_bestc);
25990                         if (NREV_LT(pi->pubpi.phy_rev, 3))
25991                                 tbl_len -= 2;
25992
25993                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
25994                                                 tbl_len, 96, 16,
25995                                                 pi->nphy_txiqlocal_bestc);
25996
25997                         pi->nphy_txiqlocal_coeffsvalid = true;
25998                         pi->nphy_txiqlocal_chanspec = pi->radio_chanspec;
25999                 } else {
26000                         tbl_len = ARRAY_SIZE(pi->mphase_txcal_bestcoeffs);
26001                         if (NREV_LT(pi->pubpi.phy_rev, 3))
26002                                 tbl_len -= 2;
26003
26004                         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26005                                                 tbl_len, 96, 16,
26006                                                 pi->mphase_txcal_bestcoeffs);
26007                 }
26008
26009                 wlc_phy_stopplayback_nphy(pi);
26010
26011                 write_phy_reg(pi, 0xc2, 0x0000);
26012
26013         }
26014
26015         wlc_phy_txcal_phycleanup_nphy(pi);
26016
26017         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
26018                                  gain_save);
26019
26020         wlc_phy_txcal_radio_cleanup_nphy(pi);
26021
26022         if (NREV_LT(pi->pubpi.phy_rev, 2)) {
26023                 if (!mphase
26024                     || (pi->mphase_cal_phase_id == mphase_cal_lastphase))
26025                         wlc_phy_tx_iq_war_nphy(pi);
26026         }
26027
26028         if (NREV_GE(pi->pubpi.phy_rev, 4))
26029                 pi->phyhang_avoid = phyhang_avoid_state;
26030
26031         wlc_phy_stay_in_carriersearch_nphy(pi, false);
26032
26033         return bcmerror;
26034 }
26035
26036 static void wlc_phy_reapply_txcal_coeffs_nphy(struct brcms_phy *pi)
26037 {
26038         u16 tbl_buf[7];
26039
26040         if ((pi->nphy_txiqlocal_chanspec == pi->radio_chanspec) &&
26041             (pi->nphy_txiqlocal_coeffsvalid)) {
26042                 wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_IQLOCAL,
26043                                         ARRAY_SIZE(tbl_buf), 80, 16, tbl_buf);
26044
26045                 if ((pi->nphy_txiqlocal_bestc[0] != tbl_buf[0]) ||
26046                     (pi->nphy_txiqlocal_bestc[1] != tbl_buf[1]) ||
26047                     (pi->nphy_txiqlocal_bestc[2] != tbl_buf[2]) ||
26048                     (pi->nphy_txiqlocal_bestc[3] != tbl_buf[3])) {
26049
26050                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 80,
26051                                                  16, pi->nphy_txiqlocal_bestc);
26052
26053                         tbl_buf[0] = 0;
26054                         tbl_buf[1] = 0;
26055                         tbl_buf[2] = 0;
26056                         tbl_buf[3] = 0;
26057                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 4, 88,
26058                                                  16, tbl_buf);
26059
26060                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 85,
26061                                                  16,
26062                                                  &pi->nphy_txiqlocal_bestc[5]);
26063
26064                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_IQLOCAL, 2, 93,
26065                                                  16,
26066                                                  &pi->nphy_txiqlocal_bestc[5]);
26067                 }
26068         }
26069 }
26070
26071 void
26072 wlc_phy_rx_iq_coeffs_nphy(struct brcms_phy *pi, u8 write,
26073                           struct nphy_iq_comp *pcomp)
26074 {
26075         if (write) {
26076                 write_phy_reg(pi, 0x9a, pcomp->a0);
26077                 write_phy_reg(pi, 0x9b, pcomp->b0);
26078                 write_phy_reg(pi, 0x9c, pcomp->a1);
26079                 write_phy_reg(pi, 0x9d, pcomp->b1);
26080         } else {
26081                 pcomp->a0 = read_phy_reg(pi, 0x9a);
26082                 pcomp->b0 = read_phy_reg(pi, 0x9b);
26083                 pcomp->a1 = read_phy_reg(pi, 0x9c);
26084                 pcomp->b1 = read_phy_reg(pi, 0x9d);
26085         }
26086 }
26087
26088 void
26089 wlc_phy_rx_iq_est_nphy(struct brcms_phy *pi, struct phy_iq_est *est,
26090                        u16 num_samps, u8 wait_time, u8 wait_for_crs)
26091 {
26092         u8 core;
26093
26094         write_phy_reg(pi, 0x12b, num_samps);
26095         mod_phy_reg(pi, 0x12a, (0xff << 0), (wait_time << 0));
26096         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqMode,
26097                     (wait_for_crs) ? NPHY_IqestCmd_iqMode : 0);
26098
26099         mod_phy_reg(pi, 0x129, NPHY_IqestCmd_iqstart, NPHY_IqestCmd_iqstart);
26100
26101         SPINWAIT(((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) != 0),
26102                  10000);
26103         if (WARN(read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart,
26104                  "HW error: rxiq est"))
26105                 return;
26106
26107         if ((read_phy_reg(pi, 0x129) & NPHY_IqestCmd_iqstart) == 0) {
26108                 for (core = 0; core < pi->pubpi.phy_corenum; core++) {
26109                         est[core].i_pwr =
26110                                 (read_phy_reg(pi,
26111                                               NPHY_IqestipwrAccHi(core)) << 16)
26112                                 | read_phy_reg(pi, NPHY_IqestipwrAccLo(core));
26113                         est[core].q_pwr =
26114                                 (read_phy_reg(pi,
26115                                               NPHY_IqestqpwrAccHi(core)) << 16)
26116                                 | read_phy_reg(pi, NPHY_IqestqpwrAccLo(core));
26117                         est[core].iq_prod =
26118                                 (read_phy_reg(pi,
26119                                               NPHY_IqestIqAccHi(core)) << 16) |
26120                                 read_phy_reg(pi, NPHY_IqestIqAccLo(core));
26121                 }
26122         }
26123 }
26124
26125 #define CAL_RETRY_CNT 2
26126 static void wlc_phy_calc_rx_iq_comp_nphy(struct brcms_phy *pi, u8 core_mask)
26127 {
26128         u8 curr_core;
26129         struct phy_iq_est est[PHY_CORE_MAX];
26130         struct nphy_iq_comp old_comp, new_comp;
26131         s32 iq = 0;
26132         u32 ii = 0, qq = 0;
26133         s16 iq_nbits, qq_nbits, brsh, arsh;
26134         s32 a, b, temp;
26135         int bcmerror = 0;
26136         uint cal_retry = 0;
26137
26138         if (core_mask == 0x0)
26139                 return;
26140
26141         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &old_comp);
26142         new_comp.a0 = new_comp.b0 = new_comp.a1 = new_comp.b1 = 0x0;
26143         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26144
26145 cal_try:
26146         wlc_phy_rx_iq_est_nphy(pi, est, 0x4000, 32, 0);
26147
26148         new_comp = old_comp;
26149
26150         for (curr_core = 0; curr_core < pi->pubpi.phy_corenum; curr_core++) {
26151
26152                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26153                         iq = est[curr_core].iq_prod;
26154                         ii = est[curr_core].i_pwr;
26155                         qq = est[curr_core].q_pwr;
26156                 } else if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26157                         iq = est[curr_core].iq_prod;
26158                         ii = est[curr_core].i_pwr;
26159                         qq = est[curr_core].q_pwr;
26160                 } else {
26161                         continue;
26162                 }
26163
26164                 if ((ii + qq) < NPHY_MIN_RXIQ_PWR) {
26165                         bcmerror = -EBADE;
26166                         break;
26167                 }
26168
26169                 iq_nbits = wlc_phy_nbits(iq);
26170                 qq_nbits = wlc_phy_nbits(qq);
26171
26172                 arsh = 10 - (30 - iq_nbits);
26173                 if (arsh >= 0) {
26174                         a = (-(iq << (30 - iq_nbits)) + (ii >> (1 + arsh)));
26175                         temp = (s32) (ii >> arsh);
26176                         if (temp == 0) {
26177                                 bcmerror = -EBADE;
26178                                 break;
26179                         }
26180                 } else {
26181                         a = (-(iq << (30 - iq_nbits)) + (ii << (-1 - arsh)));
26182                         temp = (s32) (ii << -arsh);
26183                         if (temp == 0) {
26184                                 bcmerror = -EBADE;
26185                                 break;
26186                         }
26187                 }
26188
26189                 a /= temp;
26190
26191                 brsh = qq_nbits - 31 + 20;
26192                 if (brsh >= 0) {
26193                         b = (qq << (31 - qq_nbits));
26194                         temp = (s32) (ii >> brsh);
26195                         if (temp == 0) {
26196                                 bcmerror = -EBADE;
26197                                 break;
26198                         }
26199                 } else {
26200                         b = (qq << (31 - qq_nbits));
26201                         temp = (s32) (ii << -brsh);
26202                         if (temp == 0) {
26203                                 bcmerror = -EBADE;
26204                                 break;
26205                         }
26206                 }
26207                 b /= temp;
26208                 b -= a * a;
26209                 b = (s32) int_sqrt((unsigned long) b);
26210                 b -= (1 << 10);
26211
26212                 if ((curr_core == PHY_CORE_0) && (core_mask & 0x1)) {
26213                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26214                                 new_comp.a0 = (s16) a & 0x3ff;
26215                                 new_comp.b0 = (s16) b & 0x3ff;
26216                         } else {
26217
26218                                 new_comp.a0 = (s16) b & 0x3ff;
26219                                 new_comp.b0 = (s16) a & 0x3ff;
26220                         }
26221                 }
26222                 if ((curr_core == PHY_CORE_1) && (core_mask & 0x2)) {
26223                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
26224                                 new_comp.a1 = (s16) a & 0x3ff;
26225                                 new_comp.b1 = (s16) b & 0x3ff;
26226                         } else {
26227
26228                                 new_comp.a1 = (s16) b & 0x3ff;
26229                                 new_comp.b1 = (s16) a & 0x3ff;
26230                         }
26231                 }
26232         }
26233
26234         if (bcmerror != 0) {
26235                 pr_debug("%s: Failed, cnt = %d\n", __func__, cal_retry);
26236
26237                 if (cal_retry < CAL_RETRY_CNT) {
26238                         cal_retry++;
26239                         goto cal_try;
26240                 }
26241
26242                 new_comp = old_comp;
26243         }
26244
26245         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &new_comp);
26246 }
26247
26248 static void wlc_phy_rxcal_radio_setup_nphy(struct brcms_phy *pi, u8 rx_core)
26249 {
26250         u16 offtune_val;
26251         u16 bias_g = 0;
26252         u16 bias_a = 0;
26253
26254         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26255                 if (rx_core == PHY_CORE_0) {
26256                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26257                                 pi->tx_rx_cal_radio_saveregs[0] =
26258                                         read_radio_reg(pi,
26259                                             RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP);
26260                                 pi->tx_rx_cal_radio_saveregs[1] =
26261                                         read_radio_reg(pi,
26262                                             RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN);
26263
26264                                 write_radio_reg(pi,
26265                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26266                                         0x3);
26267                                 write_radio_reg(pi,
26268                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26269                                         0xaf);
26270
26271                         } else {
26272                                 pi->tx_rx_cal_radio_saveregs[0] =
26273                                         read_radio_reg(pi,
26274                                             RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP);
26275                                 pi->tx_rx_cal_radio_saveregs[1] =
26276                                         read_radio_reg(pi,
26277                                             RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN);
26278
26279                                 write_radio_reg(
26280                                         pi,
26281                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26282                                         0x3);
26283                                 write_radio_reg(
26284                                         pi,
26285                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26286                                         0x7f);
26287                         }
26288
26289                 } else {
26290                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26291                                 pi->tx_rx_cal_radio_saveregs[0] =
26292                                         read_radio_reg(pi,
26293                                             RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP);
26294                                 pi->tx_rx_cal_radio_saveregs[1] =
26295                                         read_radio_reg(pi,
26296                                             RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN);
26297
26298                                 write_radio_reg(
26299                                         pi,
26300                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26301                                         0x3);
26302                                 write_radio_reg(
26303                                         pi,
26304                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26305                                         0xaf);
26306
26307                         } else {
26308                                 pi->tx_rx_cal_radio_saveregs[0] =
26309                                         read_radio_reg(pi,
26310                                             RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP);
26311                                 pi->tx_rx_cal_radio_saveregs[1] =
26312                                         read_radio_reg(pi,
26313                                             RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN);
26314
26315                                 write_radio_reg(pi,
26316                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26317                                         0x3);
26318                                 write_radio_reg(pi,
26319                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26320                                         0x7f);
26321                         }
26322                 }
26323
26324         } else {
26325                 if (rx_core == PHY_CORE_0) {
26326                         pi->tx_rx_cal_radio_saveregs[0] =
26327                                 read_radio_reg(pi,
26328                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26329                                                RADIO_2056_TX1);
26330                         pi->tx_rx_cal_radio_saveregs[1] =
26331                                 read_radio_reg(pi,
26332                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26333                                                RADIO_2056_RX0);
26334
26335                         if (pi->pubpi.radiorev >= 5) {
26336                                 pi->tx_rx_cal_radio_saveregs[2] =
26337                                         read_radio_reg(pi,
26338                                                        RADIO_2056_RX_RXSPARE2 |
26339                                                        RADIO_2056_RX0);
26340                                 pi->tx_rx_cal_radio_saveregs[3] =
26341                                         read_radio_reg(pi,
26342                                                        RADIO_2056_TX_TXSPARE2 |
26343                                                        RADIO_2056_TX1);
26344                         }
26345
26346                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26347
26348                                 if (pi->pubpi.radiorev >= 5) {
26349                                         pi->tx_rx_cal_radio_saveregs[4] =
26350                                                 read_radio_reg(pi,
26351                                                       RADIO_2056_RX_LNAA_MASTER
26352                                                       | RADIO_2056_RX0);
26353
26354                                         write_radio_reg(
26355                                                 pi,
26356                                                 RADIO_2056_RX_LNAA_MASTER
26357                                                 | RADIO_2056_RX0, 0x40);
26358
26359                                         write_radio_reg(pi,
26360                                                 RADIO_2056_TX_TXSPARE2 |
26361                                                 RADIO_2056_TX1, bias_a);
26362
26363                                         write_radio_reg(pi,
26364                                                 RADIO_2056_RX_RXSPARE2 |
26365                                                 RADIO_2056_RX0, bias_a);
26366                                 } else {
26367                                         pi->tx_rx_cal_radio_saveregs[4] =
26368                                                 read_radio_reg(pi,
26369                                                         RADIO_2056_RX_LNAA_TUNE
26370                                                         | RADIO_2056_RX0);
26371
26372                                         offtune_val =
26373                                                 (pi->tx_rx_cal_radio_saveregs
26374                                                  [2] & 0xF0) >> 8;
26375                                         offtune_val =
26376                                                 (offtune_val <= 0x7) ? 0xF : 0;
26377
26378                                         mod_radio_reg(pi,
26379                                                       RADIO_2056_RX_LNAA_TUNE |
26380                                                       RADIO_2056_RX0, 0xF0,
26381                                                       (offtune_val << 8));
26382                                 }
26383
26384                                 write_radio_reg(pi,
26385                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26386                                                 RADIO_2056_TX1, 0x9);
26387                                 write_radio_reg(pi,
26388                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26389                                                 RADIO_2056_RX0, 0x9);
26390                         } else {
26391                                 if (pi->pubpi.radiorev >= 5) {
26392                                         pi->tx_rx_cal_radio_saveregs[4] =
26393                                                 read_radio_reg(
26394                                                       pi,
26395                                                       RADIO_2056_RX_LNAG_MASTER
26396                                                     | RADIO_2056_RX0);
26397
26398                                         write_radio_reg(
26399                                                 pi,
26400                                                 RADIO_2056_RX_LNAG_MASTER
26401                                                 | RADIO_2056_RX0, 0x40);
26402
26403                                         write_radio_reg(
26404                                                 pi,
26405                                                 RADIO_2056_TX_TXSPARE2
26406                                                 |
26407                                                 RADIO_2056_TX1, bias_g);
26408
26409                                         write_radio_reg(
26410                                                 pi,
26411                                                 RADIO_2056_RX_RXSPARE2
26412                                                 |
26413                                                 RADIO_2056_RX0, bias_g);
26414
26415                                 } else {
26416                                         pi->tx_rx_cal_radio_saveregs[4] =
26417                                                 read_radio_reg(
26418                                                         pi,
26419                                                         RADIO_2056_RX_LNAG_TUNE
26420                                                         | RADIO_2056_RX0);
26421
26422                                         offtune_val =
26423                                                 (pi->
26424                                                  tx_rx_cal_radio_saveregs[2] &
26425                                                  0xF0) >> 8;
26426                                         offtune_val =
26427                                                 (offtune_val <= 0x7) ? 0xF : 0;
26428
26429                                         mod_radio_reg(pi,
26430                                                       RADIO_2056_RX_LNAG_TUNE |
26431                                                       RADIO_2056_RX0, 0xF0,
26432                                                       (offtune_val << 8));
26433                                 }
26434
26435                                 write_radio_reg(pi,
26436                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26437                                                 RADIO_2056_TX1, 0x6);
26438                                 write_radio_reg(pi,
26439                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26440                                                 RADIO_2056_RX0, 0x6);
26441                         }
26442
26443                 } else {
26444                         pi->tx_rx_cal_radio_saveregs[0] =
26445                                 read_radio_reg(pi,
26446                                                RADIO_2056_TX_RXIQCAL_TXMUX |
26447                                                RADIO_2056_TX0);
26448                         pi->tx_rx_cal_radio_saveregs[1] =
26449                                 read_radio_reg(pi,
26450                                                RADIO_2056_RX_RXIQCAL_RXMUX |
26451                                                RADIO_2056_RX1);
26452
26453                         if (pi->pubpi.radiorev >= 5) {
26454                                 pi->tx_rx_cal_radio_saveregs[2] =
26455                                         read_radio_reg(pi,
26456                                                        RADIO_2056_RX_RXSPARE2 |
26457                                                        RADIO_2056_RX1);
26458                                 pi->tx_rx_cal_radio_saveregs[3] =
26459                                         read_radio_reg(pi,
26460                                                        RADIO_2056_TX_TXSPARE2 |
26461                                                        RADIO_2056_TX0);
26462                         }
26463
26464                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26465
26466                                 if (pi->pubpi.radiorev >= 5) {
26467                                         pi->tx_rx_cal_radio_saveregs[4] =
26468                                                 read_radio_reg(
26469                                                        pi,
26470                                                        RADIO_2056_RX_LNAA_MASTER
26471                                                        | RADIO_2056_RX1);
26472
26473                                         write_radio_reg(
26474                                                 pi,
26475                                                 RADIO_2056_RX_LNAA_MASTER |
26476                                                 RADIO_2056_RX1, 0x40);
26477
26478                                         write_radio_reg(
26479                                                 pi,
26480                                                 RADIO_2056_TX_TXSPARE2
26481                                                 |
26482                                                 RADIO_2056_TX0, bias_a);
26483
26484                                         write_radio_reg(
26485                                                 pi,
26486                                                 RADIO_2056_RX_RXSPARE2
26487                                                 |
26488                                                 RADIO_2056_RX1, bias_a);
26489                                 } else {
26490                                         pi->tx_rx_cal_radio_saveregs[4] =
26491                                                 read_radio_reg(
26492                                                         pi,
26493                                                         RADIO_2056_RX_LNAA_TUNE
26494                                                         | RADIO_2056_RX1);
26495
26496                                         offtune_val =
26497                                                 (pi->
26498                                                  tx_rx_cal_radio_saveregs[2] &
26499                                                  0xF0) >> 8;
26500                                         offtune_val =
26501                                                 (offtune_val <= 0x7) ? 0xF : 0;
26502
26503                                         mod_radio_reg(pi,
26504                                                       RADIO_2056_RX_LNAA_TUNE |
26505                                                       RADIO_2056_RX1, 0xF0,
26506                                                       (offtune_val << 8));
26507                                 }
26508
26509                                 write_radio_reg(pi,
26510                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26511                                                 RADIO_2056_TX0, 0x9);
26512                                 write_radio_reg(pi,
26513                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26514                                                 RADIO_2056_RX1, 0x9);
26515                         } else {
26516                                 if (pi->pubpi.radiorev >= 5) {
26517                                         pi->tx_rx_cal_radio_saveregs[4] =
26518                                                 read_radio_reg(
26519                                                       pi,
26520                                                       RADIO_2056_RX_LNAG_MASTER
26521                                                     | RADIO_2056_RX1);
26522
26523                                         write_radio_reg(
26524                                                 pi,
26525                                                 RADIO_2056_RX_LNAG_MASTER
26526                                                 | RADIO_2056_RX1, 0x40);
26527
26528                                         write_radio_reg(
26529                                                 pi,
26530                                                 RADIO_2056_TX_TXSPARE2
26531                                                 |
26532                                                 RADIO_2056_TX0, bias_g);
26533
26534                                         write_radio_reg(
26535                                                 pi,
26536                                                 RADIO_2056_RX_RXSPARE2
26537                                                 |
26538                                                 RADIO_2056_RX1, bias_g);
26539                                 } else {
26540                                         pi->tx_rx_cal_radio_saveregs[4] =
26541                                                 read_radio_reg(
26542                                                         pi,
26543                                                         RADIO_2056_RX_LNAG_TUNE
26544                                                         | RADIO_2056_RX1);
26545
26546                                         offtune_val =
26547                                                 (pi->
26548                                                  tx_rx_cal_radio_saveregs[2] &
26549                                                  0xF0) >> 8;
26550                                         offtune_val =
26551                                                 (offtune_val <= 0x7) ? 0xF : 0;
26552
26553                                         mod_radio_reg(pi,
26554                                                       RADIO_2056_RX_LNAG_TUNE |
26555                                                       RADIO_2056_RX1, 0xF0,
26556                                                       (offtune_val << 8));
26557                                 }
26558
26559                                 write_radio_reg(pi,
26560                                                 RADIO_2056_TX_RXIQCAL_TXMUX |
26561                                                 RADIO_2056_TX0, 0x6);
26562                                 write_radio_reg(pi,
26563                                                 RADIO_2056_RX_RXIQCAL_RXMUX |
26564                                                 RADIO_2056_RX1, 0x6);
26565                         }
26566                 }
26567         }
26568 }
26569
26570 static void wlc_phy_rxcal_radio_cleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26571 {
26572         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26573                 if (rx_core == PHY_CORE_0) {
26574                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26575                                 write_radio_reg(
26576                                         pi,
26577                                         RADIO_2057_TX0_TXRXCOUPLE_5G_PWRUP,
26578                                         pi->
26579                                         tx_rx_cal_radio_saveregs[0]);
26580                                 write_radio_reg(
26581                                         pi,
26582                                         RADIO_2057_TX0_TXRXCOUPLE_5G_ATTEN,
26583                                         pi->
26584                                         tx_rx_cal_radio_saveregs[1]);
26585
26586                         } else {
26587                                 write_radio_reg(
26588                                         pi,
26589                                         RADIO_2057_TX0_TXRXCOUPLE_2G_PWRUP,
26590                                         pi->
26591                                         tx_rx_cal_radio_saveregs[0]);
26592                                 write_radio_reg(
26593                                         pi,
26594                                         RADIO_2057_TX0_TXRXCOUPLE_2G_ATTEN,
26595                                         pi->
26596                                         tx_rx_cal_radio_saveregs[1]);
26597                         }
26598
26599                 } else {
26600                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26601                                 write_radio_reg(
26602                                         pi,
26603                                         RADIO_2057_TX1_TXRXCOUPLE_5G_PWRUP,
26604                                         pi->
26605                                         tx_rx_cal_radio_saveregs[0]);
26606                                 write_radio_reg(
26607                                         pi,
26608                                         RADIO_2057_TX1_TXRXCOUPLE_5G_ATTEN,
26609                                         pi->
26610                                         tx_rx_cal_radio_saveregs[1]);
26611
26612                         } else {
26613                                 write_radio_reg(
26614                                         pi,
26615                                         RADIO_2057_TX1_TXRXCOUPLE_2G_PWRUP,
26616                                         pi->
26617                                         tx_rx_cal_radio_saveregs[0]);
26618                                 write_radio_reg(
26619                                         pi,
26620                                         RADIO_2057_TX1_TXRXCOUPLE_2G_ATTEN,
26621                                         pi->
26622                                         tx_rx_cal_radio_saveregs[1]);
26623                         }
26624                 }
26625
26626         } else {
26627                 if (rx_core == PHY_CORE_0) {
26628                         write_radio_reg(pi,
26629                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26630                                         RADIO_2056_TX1,
26631                                         pi->tx_rx_cal_radio_saveregs[0]);
26632
26633                         write_radio_reg(pi,
26634                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26635                                         RADIO_2056_RX0,
26636                                         pi->tx_rx_cal_radio_saveregs[1]);
26637
26638                         if (pi->pubpi.radiorev >= 5) {
26639                                 write_radio_reg(pi,
26640                                                 RADIO_2056_RX_RXSPARE2 |
26641                                                 RADIO_2056_RX0,
26642                                                 pi->
26643                                                 tx_rx_cal_radio_saveregs[2]);
26644
26645                                 write_radio_reg(pi,
26646                                                 RADIO_2056_TX_TXSPARE2 |
26647                                                 RADIO_2056_TX1,
26648                                                 pi->
26649                                                 tx_rx_cal_radio_saveregs[3]);
26650                         }
26651
26652                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26653                                 if (pi->pubpi.radiorev >= 5)
26654                                         write_radio_reg(
26655                                                 pi,
26656                                                 RADIO_2056_RX_LNAA_MASTER
26657                                                 | RADIO_2056_RX0,
26658                                                 pi->
26659                                                 tx_rx_cal_radio_saveregs
26660                                                 [4]);
26661                                 else
26662                                         write_radio_reg(
26663                                                 pi,
26664                                                 RADIO_2056_RX_LNAA_TUNE
26665                                                 | RADIO_2056_RX0,
26666                                                 pi->
26667                                                 tx_rx_cal_radio_saveregs
26668                                                 [4]);
26669                         } else {
26670                                 if (pi->pubpi.radiorev >= 5)
26671                                         write_radio_reg(
26672                                                 pi,
26673                                                 RADIO_2056_RX_LNAG_MASTER
26674                                                 | RADIO_2056_RX0,
26675                                                 pi->
26676                                                 tx_rx_cal_radio_saveregs
26677                                                 [4]);
26678                                 else
26679                                         write_radio_reg(
26680                                                 pi,
26681                                                 RADIO_2056_RX_LNAG_TUNE
26682                                                 | RADIO_2056_RX0,
26683                                                 pi->
26684                                                 tx_rx_cal_radio_saveregs
26685                                                 [4]);
26686                         }
26687
26688                 } else {
26689                         write_radio_reg(pi,
26690                                         RADIO_2056_TX_RXIQCAL_TXMUX |
26691                                         RADIO_2056_TX0,
26692                                         pi->tx_rx_cal_radio_saveregs[0]);
26693
26694                         write_radio_reg(pi,
26695                                         RADIO_2056_RX_RXIQCAL_RXMUX |
26696                                         RADIO_2056_RX1,
26697                                         pi->tx_rx_cal_radio_saveregs[1]);
26698
26699                         if (pi->pubpi.radiorev >= 5) {
26700                                 write_radio_reg(pi,
26701                                                 RADIO_2056_RX_RXSPARE2 |
26702                                                 RADIO_2056_RX1,
26703                                                 pi->
26704                                                 tx_rx_cal_radio_saveregs[2]);
26705
26706                                 write_radio_reg(pi,
26707                                                 RADIO_2056_TX_TXSPARE2 |
26708                                                 RADIO_2056_TX0,
26709                                                 pi->
26710                                                 tx_rx_cal_radio_saveregs[3]);
26711                         }
26712
26713                         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26714                                 if (pi->pubpi.radiorev >= 5)
26715                                         write_radio_reg(
26716                                                 pi,
26717                                                 RADIO_2056_RX_LNAA_MASTER
26718                                                 | RADIO_2056_RX1,
26719                                                 pi->
26720                                                 tx_rx_cal_radio_saveregs
26721                                                 [4]);
26722                                 else
26723                                         write_radio_reg(
26724                                                 pi,
26725                                                 RADIO_2056_RX_LNAA_TUNE
26726                                                 | RADIO_2056_RX1,
26727                                                 pi->
26728                                                 tx_rx_cal_radio_saveregs
26729                                                 [4]);
26730                         } else {
26731                                 if (pi->pubpi.radiorev >= 5)
26732                                         write_radio_reg(
26733                                                 pi,
26734                                                 RADIO_2056_RX_LNAG_MASTER
26735                                                 | RADIO_2056_RX1,
26736                                                 pi->
26737                                                 tx_rx_cal_radio_saveregs
26738                                                 [4]);
26739                                 else
26740                                         write_radio_reg(
26741                                                 pi,
26742                                                 RADIO_2056_RX_LNAG_TUNE
26743                                                 | RADIO_2056_RX1,
26744                                                 pi->
26745                                                 tx_rx_cal_radio_saveregs
26746                                                 [4]);
26747                         }
26748                 }
26749         }
26750 }
26751
26752 static void wlc_phy_rxcal_physetup_nphy(struct brcms_phy *pi, u8 rx_core)
26753 {
26754         u8 tx_core;
26755         u16 rx_antval, tx_antval;
26756
26757         if (NREV_GE(pi->pubpi.phy_rev, 7))
26758                 tx_core = rx_core;
26759         else
26760                 tx_core = (rx_core == PHY_CORE_0) ? 1 : 0;
26761
26762         pi->tx_rx_cal_phy_saveregs[0] = read_phy_reg(pi, 0xa2);
26763         pi->tx_rx_cal_phy_saveregs[1] =
26764                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7);
26765         pi->tx_rx_cal_phy_saveregs[2] =
26766                 read_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5);
26767         pi->tx_rx_cal_phy_saveregs[3] = read_phy_reg(pi, 0x91);
26768         pi->tx_rx_cal_phy_saveregs[4] = read_phy_reg(pi, 0x92);
26769         pi->tx_rx_cal_phy_saveregs[5] = read_phy_reg(pi, 0x7a);
26770         pi->tx_rx_cal_phy_saveregs[6] = read_phy_reg(pi, 0x7d);
26771         pi->tx_rx_cal_phy_saveregs[7] = read_phy_reg(pi, 0xe7);
26772         pi->tx_rx_cal_phy_saveregs[8] = read_phy_reg(pi, 0xec);
26773         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26774                 pi->tx_rx_cal_phy_saveregs[11] = read_phy_reg(pi, 0x342);
26775                 pi->tx_rx_cal_phy_saveregs[12] = read_phy_reg(pi, 0x343);
26776                 pi->tx_rx_cal_phy_saveregs[13] = read_phy_reg(pi, 0x346);
26777                 pi->tx_rx_cal_phy_saveregs[14] = read_phy_reg(pi, 0x347);
26778         }
26779
26780         pi->tx_rx_cal_phy_saveregs[9] = read_phy_reg(pi, 0x297);
26781         pi->tx_rx_cal_phy_saveregs[10] = read_phy_reg(pi, 0x29b);
26782         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
26783                     0x29b, (0x1 << 0), (0) << 0);
26784
26785         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
26786                     0x29b, (0x1 << 0), (0) << 0);
26787
26788         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26789
26790                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26791
26792                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << (1 - rx_core)) << 12);
26793
26794         } else {
26795
26796                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
26797                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
26798                 mod_phy_reg(pi, 0xa2, (0xf << 4), (1 << rx_core) << 4);
26799                 mod_phy_reg(pi, 0xa2, (0xf << 8), (1 << rx_core) << 8);
26800         }
26801
26802         mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7), (0x1 << 2), 0);
26803         mod_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26804                     (0x1 << 2), (0x1 << 2));
26805         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
26806                 mod_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
26807                             (0x1 << 0) | (0x1 << 1), 0);
26808                 mod_phy_reg(pi, (rx_core == PHY_CORE_0) ?
26809                             0x8f : 0xa5,
26810                             (0x1 << 0) | (0x1 << 1), (0x1 << 0) | (0x1 << 1));
26811         }
26812
26813         wlc_phy_rfctrlintc_override_nphy(pi, NPHY_RfctrlIntc_override_PA, 0,
26814                                          RADIO_MIMO_CORESEL_CORE1 |
26815                                          RADIO_MIMO_CORESEL_CORE2);
26816
26817         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26818                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 3),
26819                                                   0, 0, 0,
26820                                                   NPHY_REV7_RFCTRLOVERRIDE_ID0);
26821                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 9), 0, 0, 0,
26822                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26823                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 10), 1, 0, 0,
26824                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26825                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 0), 1, 0, 0,
26826                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26827                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 1), 1, 0, 0,
26828                                                   NPHY_REV7_RFCTRLOVERRIDE_ID2);
26829                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 11), 0, 0, 0,
26830                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26831                 if (CHSPEC_IS40(pi->radio_chanspec))
26832                         wlc_phy_rfctrl_override_nphy_rev7(
26833                                 pi,
26834                                 (0x1 << 7),
26835                                 2, 0, 0,
26836                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26837                 else
26838                         wlc_phy_rfctrl_override_nphy_rev7(
26839                                 pi,
26840                                 (0x1 << 7),
26841                                 0, 0, 0,
26842                                 NPHY_REV7_RFCTRLOVERRIDE_ID1);
26843
26844                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 7),
26845                                                   0, 0, 0,
26846                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26847                 wlc_phy_rfctrl_override_nphy_rev7(pi, (0x1 << 5), 0, 0, 0,
26848                                                   NPHY_REV7_RFCTRLOVERRIDE_ID1);
26849         } else {
26850                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 3), 0, 3, 0);
26851         }
26852
26853         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RX2TX);
26854
26855         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26856
26857                 wlc_phy_rfctrlintc_override_nphy(pi,
26858                                                  NPHY_RfctrlIntc_override_TRSW,
26859                                                  0x1, rx_core + 1);
26860         } else {
26861
26862                 if (rx_core == PHY_CORE_0) {
26863                         rx_antval = 0x1;
26864                         tx_antval = 0x8;
26865                 } else {
26866                         rx_antval = 0x4;
26867                         tx_antval = 0x2;
26868                 }
26869
26870                 wlc_phy_rfctrlintc_override_nphy(pi,
26871                                                  NPHY_RfctrlIntc_override_TRSW,
26872                                                  rx_antval, rx_core + 1);
26873                 wlc_phy_rfctrlintc_override_nphy(pi,
26874                                                  NPHY_RfctrlIntc_override_TRSW,
26875                                                  tx_antval, tx_core + 1);
26876         }
26877 }
26878
26879 static void wlc_phy_rxcal_phycleanup_nphy(struct brcms_phy *pi, u8 rx_core)
26880 {
26881
26882         write_phy_reg(pi, 0xa2, pi->tx_rx_cal_phy_saveregs[0]);
26883         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 : 0xa7,
26884                       pi->tx_rx_cal_phy_saveregs[1]);
26885         write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x8f : 0xa5,
26886                       pi->tx_rx_cal_phy_saveregs[2]);
26887         write_phy_reg(pi, 0x91, pi->tx_rx_cal_phy_saveregs[3]);
26888         write_phy_reg(pi, 0x92, pi->tx_rx_cal_phy_saveregs[4]);
26889
26890         write_phy_reg(pi, 0x7a, pi->tx_rx_cal_phy_saveregs[5]);
26891         write_phy_reg(pi, 0x7d, pi->tx_rx_cal_phy_saveregs[6]);
26892         write_phy_reg(pi, 0xe7, pi->tx_rx_cal_phy_saveregs[7]);
26893         write_phy_reg(pi, 0xec, pi->tx_rx_cal_phy_saveregs[8]);
26894         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
26895                 write_phy_reg(pi, 0x342, pi->tx_rx_cal_phy_saveregs[11]);
26896                 write_phy_reg(pi, 0x343, pi->tx_rx_cal_phy_saveregs[12]);
26897                 write_phy_reg(pi, 0x346, pi->tx_rx_cal_phy_saveregs[13]);
26898                 write_phy_reg(pi, 0x347, pi->tx_rx_cal_phy_saveregs[14]);
26899         }
26900
26901         write_phy_reg(pi, 0x297, pi->tx_rx_cal_phy_saveregs[9]);
26902         write_phy_reg(pi, 0x29b, pi->tx_rx_cal_phy_saveregs[10]);
26903 }
26904
26905 static void
26906 wlc_phy_rxcal_gainctrl_nphy_rev5(struct brcms_phy *pi, u8 rx_core,
26907                                  u16 *rxgain, u8 cal_type)
26908 {
26909
26910         u16 num_samps;
26911         struct phy_iq_est est[PHY_CORE_MAX];
26912         u8 tx_core;
26913         struct nphy_iq_comp save_comp, zero_comp;
26914         u32 i_pwr, q_pwr, curr_pwr, optim_pwr = 0, prev_pwr = 0,
26915             thresh_pwr = 10000;
26916         s16 desired_log2_pwr, actual_log2_pwr, delta_pwr;
26917         bool gainctrl_done = false;
26918         u8 mix_tia_gain = 3;
26919         s8 optim_gaintbl_index = 0, prev_gaintbl_index = 0;
26920         s8 curr_gaintbl_index = 3;
26921         u8 gainctrl_dirn = NPHY_RXCAL_GAIN_INIT;
26922         const struct nphy_ipa_txrxgain *nphy_rxcal_gaintbl;
26923         u16 hpvga, lpf_biq1, lpf_biq0, lna2, lna1;
26924         int fine_gain_idx;
26925         s8 txpwrindex;
26926         u16 nphy_rxcal_txgain[2];
26927
26928         if (NREV_GE(pi->pubpi.phy_rev, 7))
26929                 tx_core = rx_core;
26930         else
26931                 tx_core = 1 - rx_core;
26932
26933         num_samps = 1024;
26934         desired_log2_pwr = 13;
26935
26936         wlc_phy_rx_iq_coeffs_nphy(pi, 0, &save_comp);
26937         zero_comp.a0 = zero_comp.b0 = zero_comp.a1 = zero_comp.b1 = 0x0;
26938         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &zero_comp);
26939
26940         if (CHSPEC_IS5G(pi->radio_chanspec)) {
26941                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26942                         mix_tia_gain = 3;
26943                 else if (NREV_GE(pi->pubpi.phy_rev, 4))
26944                         mix_tia_gain = 4;
26945                 else
26946                         mix_tia_gain = 6;
26947                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26948                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz_rev7;
26949                 else
26950                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_5GHz;
26951         } else {
26952                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26953                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz_rev7;
26954                 else
26955                         nphy_rxcal_gaintbl = nphy_ipa_rxcal_gaintbl_2GHz;
26956         }
26957
26958         do {
26959
26960                 hpvga = (NREV_GE(pi->pubpi.phy_rev, 7)) ?
26961                         0 : nphy_rxcal_gaintbl[curr_gaintbl_index].hpvga;
26962                 lpf_biq1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq1;
26963                 lpf_biq0 = nphy_rxcal_gaintbl[curr_gaintbl_index].lpf_biq0;
26964                 lna2 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna2;
26965                 lna1 = nphy_rxcal_gaintbl[curr_gaintbl_index].lna1;
26966                 txpwrindex = nphy_rxcal_gaintbl[curr_gaintbl_index].txpwrindex;
26967
26968                 if (NREV_GE(pi->pubpi.phy_rev, 7))
26969                         wlc_phy_rfctrl_override_1tomany_nphy(
26970                                 pi,
26971                                 NPHY_REV7_RfctrlOverride_cmd_rxgain,
26972                                 ((lpf_biq1 << 12) |
26973                                  (lpf_biq0 << 8) |
26974                                  (mix_tia_gain << 4) | (lna2 << 2)
26975                                  | lna1), 0x3, 0);
26976                 else
26977                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
26978                                                      ((hpvga << 12) |
26979                                                       (lpf_biq1 << 10) |
26980                                                       (lpf_biq0 << 8) |
26981                                                       (mix_tia_gain << 4) |
26982                                                       (lna2 << 2) | lna1), 0x3,
26983                                                      0);
26984
26985                 pi->nphy_rxcal_pwr_idx[tx_core] = txpwrindex;
26986
26987                 if (txpwrindex == -1) {
26988                         nphy_rxcal_txgain[0] = 0x8ff0 | pi->nphy_gmval;
26989                         nphy_rxcal_txgain[1] = 0x8ff0 | pi->nphy_gmval;
26990                         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ,
26991                                                  2, 0x110, 16,
26992                                                  nphy_rxcal_txgain);
26993                 } else {
26994                         wlc_phy_txpwr_index_nphy(pi, tx_core + 1, txpwrindex,
26995                                                  false);
26996                 }
26997
26998                 wlc_phy_tx_tone_nphy(pi, (CHSPEC_IS40(pi->radio_chanspec)) ?
26999                                      NPHY_RXCAL_TONEFREQ_40MHz :
27000                                      NPHY_RXCAL_TONEFREQ_20MHz,
27001                                      NPHY_RXCAL_TONEAMP, 0, cal_type, false);
27002
27003                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27004                 i_pwr = (est[rx_core].i_pwr + num_samps / 2) / num_samps;
27005                 q_pwr = (est[rx_core].q_pwr + num_samps / 2) / num_samps;
27006                 curr_pwr = i_pwr + q_pwr;
27007
27008                 switch (gainctrl_dirn) {
27009                 case NPHY_RXCAL_GAIN_INIT:
27010                         if (curr_pwr > thresh_pwr) {
27011                                 gainctrl_dirn = NPHY_RXCAL_GAIN_DOWN;
27012                                 prev_gaintbl_index = curr_gaintbl_index;
27013                                 curr_gaintbl_index--;
27014                         } else {
27015                                 gainctrl_dirn = NPHY_RXCAL_GAIN_UP;
27016                                 prev_gaintbl_index = curr_gaintbl_index;
27017                                 curr_gaintbl_index++;
27018                         }
27019                         break;
27020
27021                 case NPHY_RXCAL_GAIN_UP:
27022                         if (curr_pwr > thresh_pwr) {
27023                                 gainctrl_done = true;
27024                                 optim_pwr = prev_pwr;
27025                                 optim_gaintbl_index = prev_gaintbl_index;
27026                         } else {
27027                                 prev_gaintbl_index = curr_gaintbl_index;
27028                                 curr_gaintbl_index++;
27029                         }
27030                         break;
27031
27032                 case NPHY_RXCAL_GAIN_DOWN:
27033                         if (curr_pwr > thresh_pwr) {
27034                                 prev_gaintbl_index = curr_gaintbl_index;
27035                                 curr_gaintbl_index--;
27036                         } else {
27037                                 gainctrl_done = true;
27038                                 optim_pwr = curr_pwr;
27039                                 optim_gaintbl_index = curr_gaintbl_index;
27040                         }
27041                         break;
27042
27043                 default:
27044                         break;
27045                 }
27046
27047                 if ((curr_gaintbl_index < 0) ||
27048                     (curr_gaintbl_index > NPHY_IPA_RXCAL_MAXGAININDEX)) {
27049                         gainctrl_done = true;
27050                         optim_pwr = curr_pwr;
27051                         optim_gaintbl_index = prev_gaintbl_index;
27052                 } else {
27053                         prev_pwr = curr_pwr;
27054                 }
27055
27056                 wlc_phy_stopplayback_nphy(pi);
27057         } while (!gainctrl_done);
27058
27059         hpvga = nphy_rxcal_gaintbl[optim_gaintbl_index].hpvga;
27060         lpf_biq1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq1;
27061         lpf_biq0 = nphy_rxcal_gaintbl[optim_gaintbl_index].lpf_biq0;
27062         lna2 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna2;
27063         lna1 = nphy_rxcal_gaintbl[optim_gaintbl_index].lna1;
27064         txpwrindex = nphy_rxcal_gaintbl[optim_gaintbl_index].txpwrindex;
27065
27066         actual_log2_pwr = wlc_phy_nbits(optim_pwr);
27067         delta_pwr = desired_log2_pwr - actual_log2_pwr;
27068
27069         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
27070                 fine_gain_idx = (int)lpf_biq1 + delta_pwr;
27071
27072                 if (fine_gain_idx + (int)lpf_biq0 > 10)
27073                         lpf_biq1 = 10 - lpf_biq0;
27074                 else
27075                         lpf_biq1 = (u16) max(fine_gain_idx, 0);
27076
27077                 wlc_phy_rfctrl_override_1tomany_nphy(
27078                         pi,
27079                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27080                         ((lpf_biq1 << 12) |
27081                          (lpf_biq0 << 8) |
27082                          (mix_tia_gain << 4) |
27083                          (lna2 << 2) | lna1), 0x3,
27084                         0);
27085         } else {
27086                 hpvga = (u16) max(min(((int)hpvga) + delta_pwr, 10), 0);
27087                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12),
27088                                              ((hpvga << 12) |
27089                                               (lpf_biq1 << 10) |
27090                                               (lpf_biq0 << 8) |
27091                                               (mix_tia_gain << 4) |
27092                                               (lna2 << 2) |
27093                                               lna1), 0x3, 0);
27094         }
27095
27096         if (rxgain != NULL) {
27097                 *rxgain++ = lna1;
27098                 *rxgain++ = lna2;
27099                 *rxgain++ = mix_tia_gain;
27100                 *rxgain++ = lpf_biq0;
27101                 *rxgain++ = lpf_biq1;
27102                 *rxgain = hpvga;
27103         }
27104
27105         wlc_phy_rx_iq_coeffs_nphy(pi, 1, &save_comp);
27106 }
27107
27108 static void
27109 wlc_phy_rxcal_gainctrl_nphy(struct brcms_phy *pi, u8 rx_core, u16 *rxgain,
27110                             u8 cal_type)
27111 {
27112         wlc_phy_rxcal_gainctrl_nphy_rev5(pi, rx_core, rxgain, cal_type);
27113 }
27114
27115 static u8
27116 wlc_phy_rc_sweep_nphy(struct brcms_phy *pi, u8 core_idx, u8 loopback_type)
27117 {
27118         u32 target_bws[2] = { 9500, 21000 };
27119         u32 ref_tones[2] = { 3000, 6000 };
27120         u32 target_bw, ref_tone;
27121
27122         u32 target_pwr_ratios[2] = { 28606, 18468 };
27123         u32 target_pwr_ratio, pwr_ratio, last_pwr_ratio = 0;
27124
27125         u16 start_rccal_ovr_val = 128;
27126         u16 txlpf_rccal_lpc_ovr_val = 128;
27127         u16 rxlpf_rccal_hpc_ovr_val = 159;
27128
27129         u16 orig_txlpf_rccal_lpc_ovr_val;
27130         u16 orig_rxlpf_rccal_hpc_ovr_val;
27131         u16 radio_addr_offset_rx;
27132         u16 radio_addr_offset_tx;
27133         u16 orig_dcBypass;
27134         u16 orig_RxStrnFilt40Num[6];
27135         u16 orig_RxStrnFilt40Den[4];
27136         u16 orig_rfctrloverride[2];
27137         u16 orig_rfctrlauxreg[2];
27138         u16 orig_rfctrlrssiothers;
27139         u16 tx_lpf_bw = 4;
27140
27141         u16 rx_lpf_bw, rx_lpf_bws[2] = { 2, 4 };
27142         u16 lpf_hpc = 7, hpvga_hpc = 7;
27143
27144         s8 rccal_stepsize;
27145         u16 rccal_val, last_rccal_val = 0, best_rccal_val = 0;
27146         u32 ref_iq_vals = 0, target_iq_vals = 0;
27147         u16 num_samps, log_num_samps = 10;
27148         struct phy_iq_est est[PHY_CORE_MAX];
27149
27150         if (NREV_GE(pi->pubpi.phy_rev, 7))
27151                 return 0;
27152
27153         num_samps = (1 << log_num_samps);
27154
27155         if (CHSPEC_IS40(pi->radio_chanspec)) {
27156                 target_bw = target_bws[1];
27157                 target_pwr_ratio = target_pwr_ratios[1];
27158                 ref_tone = ref_tones[1];
27159                 rx_lpf_bw = rx_lpf_bws[1];
27160         } else {
27161                 target_bw = target_bws[0];
27162                 target_pwr_ratio = target_pwr_ratios[0];
27163                 ref_tone = ref_tones[0];
27164                 rx_lpf_bw = rx_lpf_bws[0];
27165         }
27166
27167         if (core_idx == 0) {
27168                 radio_addr_offset_rx = RADIO_2056_RX0;
27169                 radio_addr_offset_tx =
27170                         (loopback_type == 0) ? RADIO_2056_TX0 : RADIO_2056_TX1;
27171         } else {
27172                 radio_addr_offset_rx = RADIO_2056_RX1;
27173                 radio_addr_offset_tx =
27174                         (loopback_type == 0) ? RADIO_2056_TX1 : RADIO_2056_TX0;
27175         }
27176
27177         orig_txlpf_rccal_lpc_ovr_val =
27178                 read_radio_reg(pi,
27179                                (RADIO_2056_TX_TXLPF_RCCAL |
27180                                 radio_addr_offset_tx));
27181         orig_rxlpf_rccal_hpc_ovr_val =
27182                 read_radio_reg(pi,
27183                                (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27184                                 radio_addr_offset_rx));
27185
27186         orig_dcBypass = ((read_phy_reg(pi, 0x48) >> 8) & 1);
27187
27188         orig_RxStrnFilt40Num[0] = read_phy_reg(pi, 0x267);
27189         orig_RxStrnFilt40Num[1] = read_phy_reg(pi, 0x268);
27190         orig_RxStrnFilt40Num[2] = read_phy_reg(pi, 0x269);
27191         orig_RxStrnFilt40Den[0] = read_phy_reg(pi, 0x26a);
27192         orig_RxStrnFilt40Den[1] = read_phy_reg(pi, 0x26b);
27193         orig_RxStrnFilt40Num[3] = read_phy_reg(pi, 0x26c);
27194         orig_RxStrnFilt40Num[4] = read_phy_reg(pi, 0x26d);
27195         orig_RxStrnFilt40Num[5] = read_phy_reg(pi, 0x26e);
27196         orig_RxStrnFilt40Den[2] = read_phy_reg(pi, 0x26f);
27197         orig_RxStrnFilt40Den[3] = read_phy_reg(pi, 0x270);
27198
27199         orig_rfctrloverride[0] = read_phy_reg(pi, 0xe7);
27200         orig_rfctrloverride[1] = read_phy_reg(pi, 0xec);
27201         orig_rfctrlauxreg[0] = read_phy_reg(pi, 0xf8);
27202         orig_rfctrlauxreg[1] = read_phy_reg(pi, 0xfa);
27203         orig_rfctrlrssiothers = read_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d);
27204
27205         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27206                         txlpf_rccal_lpc_ovr_val);
27207
27208         write_radio_reg(pi,
27209                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27210                         rxlpf_rccal_hpc_ovr_val);
27211
27212         mod_phy_reg(pi, 0x48, (0x1 << 8), (0x1 << 8));
27213
27214         write_phy_reg(pi, 0x267, 0x02d4);
27215         write_phy_reg(pi, 0x268, 0x0000);
27216         write_phy_reg(pi, 0x269, 0x0000);
27217         write_phy_reg(pi, 0x26a, 0x0000);
27218         write_phy_reg(pi, 0x26b, 0x0000);
27219         write_phy_reg(pi, 0x26c, 0x02d4);
27220         write_phy_reg(pi, 0x26d, 0x0000);
27221         write_phy_reg(pi, 0x26e, 0x0000);
27222         write_phy_reg(pi, 0x26f, 0x0000);
27223         write_phy_reg(pi, 0x270, 0x0000);
27224
27225         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 8));
27226         or_phy_reg(pi, (core_idx == 0) ? 0xec : 0xe7, (0x1 << 15));
27227         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 9));
27228         or_phy_reg(pi, (core_idx == 0) ? 0xe7 : 0xec, (0x1 << 10));
27229
27230         mod_phy_reg(pi, (core_idx == 0) ? 0xfa : 0xf8,
27231                     (0x7 << 10), (tx_lpf_bw << 10));
27232         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27233                     (0x7 << 0), (hpvga_hpc << 0));
27234         mod_phy_reg(pi, (core_idx == 0) ? 0xf8 : 0xfa,
27235                     (0x7 << 4), (lpf_hpc << 4));
27236         mod_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d,
27237                     (0x7 << 8), (rx_lpf_bw << 8));
27238
27239         rccal_stepsize = 16;
27240         rccal_val = start_rccal_ovr_val + rccal_stepsize;
27241
27242         while (rccal_stepsize >= 0) {
27243                 write_radio_reg(pi,
27244                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27245                                  radio_addr_offset_rx), rccal_val);
27246
27247                 if (rccal_stepsize == 16) {
27248
27249                         wlc_phy_tx_tone_nphy(pi, ref_tone, NPHY_RXCAL_TONEAMP,
27250                                              0, 1, false);
27251                         udelay(2);
27252
27253                         wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27254
27255                         if (core_idx == 0)
27256                                 ref_iq_vals =
27257                                         max_t(u32, (est[0].i_pwr +
27258                                                     est[0].q_pwr) >>
27259                                               (log_num_samps + 1),
27260                                               1);
27261                         else
27262                                 ref_iq_vals =
27263                                         max_t(u32, (est[1].i_pwr +
27264                                                     est[1].q_pwr) >>
27265                                               (log_num_samps + 1),
27266                                               1);
27267
27268                         wlc_phy_tx_tone_nphy(pi, target_bw, NPHY_RXCAL_TONEAMP,
27269                                              0, 1, false);
27270                         udelay(2);
27271                 }
27272
27273                 wlc_phy_rx_iq_est_nphy(pi, est, num_samps, 32, 0);
27274
27275                 if (core_idx == 0)
27276                         target_iq_vals = (est[0].i_pwr + est[0].q_pwr) >>
27277                                          (log_num_samps + 1);
27278                 else
27279                         target_iq_vals =
27280                                 (est[1].i_pwr +
27281                                  est[1].q_pwr) >> (log_num_samps + 1);
27282
27283                 pwr_ratio = (uint) ((target_iq_vals << 16) / ref_iq_vals);
27284
27285                 if (rccal_stepsize == 0)
27286                         rccal_stepsize--;
27287                 else if (rccal_stepsize == 1) {
27288                         last_rccal_val = rccal_val;
27289                         rccal_val += (pwr_ratio > target_pwr_ratio) ? 1 : -1;
27290                         last_pwr_ratio = pwr_ratio;
27291                         rccal_stepsize--;
27292                 } else {
27293                         rccal_stepsize = (rccal_stepsize >> 1);
27294                         rccal_val += ((pwr_ratio > target_pwr_ratio) ?
27295                                       rccal_stepsize : (-rccal_stepsize));
27296                 }
27297
27298                 if (rccal_stepsize == -1) {
27299                         best_rccal_val =
27300                                 (abs((int)last_pwr_ratio -
27301                                      (int)target_pwr_ratio) <
27302                                  abs((int)pwr_ratio -
27303                                      (int)target_pwr_ratio)) ? last_rccal_val :
27304                                 rccal_val;
27305
27306                         if (CHSPEC_IS40(pi->radio_chanspec)) {
27307                                 if ((best_rccal_val > 140)
27308                                     || (best_rccal_val < 135))
27309                                         best_rccal_val = 138;
27310                         } else {
27311                                 if ((best_rccal_val > 142)
27312                                     || (best_rccal_val < 137))
27313                                         best_rccal_val = 140;
27314                         }
27315
27316                         write_radio_reg(pi,
27317                                         (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27318                                          radio_addr_offset_rx), best_rccal_val);
27319                 }
27320         }
27321
27322         wlc_phy_stopplayback_nphy(pi);
27323
27324         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL | radio_addr_offset_tx),
27325                         orig_txlpf_rccal_lpc_ovr_val);
27326         write_radio_reg(pi,
27327                         (RADIO_2056_RX_RXLPF_RCCAL_HPC | radio_addr_offset_rx),
27328                         orig_rxlpf_rccal_hpc_ovr_val);
27329
27330         mod_phy_reg(pi, 0x48, (0x1 << 8), (orig_dcBypass << 8));
27331
27332         write_phy_reg(pi, 0x267, orig_RxStrnFilt40Num[0]);
27333         write_phy_reg(pi, 0x268, orig_RxStrnFilt40Num[1]);
27334         write_phy_reg(pi, 0x269, orig_RxStrnFilt40Num[2]);
27335         write_phy_reg(pi, 0x26a, orig_RxStrnFilt40Den[0]);
27336         write_phy_reg(pi, 0x26b, orig_RxStrnFilt40Den[1]);
27337         write_phy_reg(pi, 0x26c, orig_RxStrnFilt40Num[3]);
27338         write_phy_reg(pi, 0x26d, orig_RxStrnFilt40Num[4]);
27339         write_phy_reg(pi, 0x26e, orig_RxStrnFilt40Num[5]);
27340         write_phy_reg(pi, 0x26f, orig_RxStrnFilt40Den[2]);
27341         write_phy_reg(pi, 0x270, orig_RxStrnFilt40Den[3]);
27342
27343         write_phy_reg(pi, 0xe7, orig_rfctrloverride[0]);
27344         write_phy_reg(pi, 0xec, orig_rfctrloverride[1]);
27345         write_phy_reg(pi, 0xf8, orig_rfctrlauxreg[0]);
27346         write_phy_reg(pi, 0xfa, orig_rfctrlauxreg[1]);
27347         write_phy_reg(pi, (core_idx == 0) ? 0x7a : 0x7d, orig_rfctrlrssiothers);
27348
27349         pi->nphy_anarxlpf_adjusted = false;
27350
27351         return best_rccal_val - 0x80;
27352 }
27353
27354 #define WAIT_FOR_SCOPE  4000
27355 static int wlc_phy_cal_rxiq_nphy_rev3(struct brcms_phy *pi,
27356                                       struct nphy_txgains target_gain,
27357                                       u8 cal_type, bool debug)
27358 {
27359         u16 orig_BBConfig;
27360         u8 core_no, rx_core;
27361         u8 best_rccal[2];
27362         u16 gain_save[2];
27363         u16 cal_gain[2];
27364         struct nphy_iqcal_params cal_params[2];
27365         u8 rxcore_state;
27366         s8 rxlpf_rccal_hpc, txlpf_rccal_lpc;
27367         s8 txlpf_idac;
27368         bool phyhang_avoid_state = false;
27369         bool skip_rxiqcal = false;
27370
27371         orig_BBConfig = read_phy_reg(pi, 0x01);
27372         mod_phy_reg(pi, 0x01, (0x1 << 15), 0);
27373
27374         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27375
27376         if (NREV_GE(pi->pubpi.phy_rev, 4)) {
27377                 phyhang_avoid_state = pi->phyhang_avoid;
27378                 pi->phyhang_avoid = false;
27379         }
27380
27381         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27382
27383         for (core_no = 0; core_no <= 1; core_no++) {
27384                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27385                                               &cal_params[core_no]);
27386                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27387         }
27388
27389         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27390
27391         rxcore_state = wlc_phy_rxcore_getstate_nphy(
27392                 (struct brcms_phy_pub *) pi);
27393
27394         for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27395
27396                 skip_rxiqcal =
27397                         ((rxcore_state & (1 << rx_core)) == 0) ? true : false;
27398
27399                 wlc_phy_rxcal_physetup_nphy(pi, rx_core);
27400
27401                 wlc_phy_rxcal_radio_setup_nphy(pi, rx_core);
27402
27403                 if ((!skip_rxiqcal) && ((cal_type == 0) || (cal_type == 2))) {
27404
27405                         wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL, 0);
27406
27407                         wlc_phy_tx_tone_nphy(pi,
27408                                              (CHSPEC_IS40(
27409                                                       pi->radio_chanspec)) ?
27410                                              NPHY_RXCAL_TONEFREQ_40MHz :
27411                                              NPHY_RXCAL_TONEFREQ_20MHz,
27412                                              NPHY_RXCAL_TONEAMP, 0, cal_type,
27413                                              false);
27414
27415                         if (debug)
27416                                 mdelay(WAIT_FOR_SCOPE);
27417
27418                         wlc_phy_calc_rx_iq_comp_nphy(pi, rx_core + 1);
27419                         wlc_phy_stopplayback_nphy(pi);
27420                 }
27421
27422                 if (((cal_type == 1) || (cal_type == 2))
27423                     && NREV_LT(pi->pubpi.phy_rev, 7)) {
27424
27425                         if (rx_core == PHY_CORE_1) {
27426
27427                                 if (rxcore_state == 1)
27428                                         wlc_phy_rxcore_setstate_nphy(
27429                                                 (struct brcms_phy_pub *) pi, 3);
27430
27431                                 wlc_phy_rxcal_gainctrl_nphy(pi, rx_core, NULL,
27432                                                             1);
27433
27434                                 best_rccal[rx_core] =
27435                                         wlc_phy_rc_sweep_nphy(pi, rx_core, 1);
27436                                 pi->nphy_rccal_value = best_rccal[rx_core];
27437
27438                                 if (rxcore_state == 1)
27439                                         wlc_phy_rxcore_setstate_nphy(
27440                                                 (struct brcms_phy_pub *) pi,
27441                                                 rxcore_state);
27442                         }
27443                 }
27444
27445                 wlc_phy_rxcal_radio_cleanup_nphy(pi, rx_core);
27446
27447                 wlc_phy_rxcal_phycleanup_nphy(pi, rx_core);
27448                 wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27449         }
27450
27451         if ((cal_type == 1) || (cal_type == 2)) {
27452
27453                 best_rccal[0] = best_rccal[1];
27454                 write_radio_reg(pi,
27455                                 (RADIO_2056_RX_RXLPF_RCCAL_LPC |
27456                                  RADIO_2056_RX0), (best_rccal[0] | 0x80));
27457
27458                 for (rx_core = 0; rx_core < pi->pubpi.phy_corenum; rx_core++) {
27459                         rxlpf_rccal_hpc =
27460                                 (((int)best_rccal[rx_core] - 12) >> 1) + 10;
27461                         txlpf_rccal_lpc = ((int)best_rccal[rx_core] - 12) + 10;
27462
27463                         if (PHY_IPA(pi)) {
27464                                 txlpf_rccal_lpc +=
27465                                         (pi->bw == WL_CHANSPEC_BW_40) ? 24 : 12;
27466                                 txlpf_idac = (pi->bw == WL_CHANSPEC_BW_40) ?
27467                                              0x0e : 0x13;
27468                                 WRITE_RADIO_REG2(pi, RADIO_2056, TX, rx_core,
27469                                                  TXLPF_IDAC_4, txlpf_idac);
27470                         }
27471
27472                         rxlpf_rccal_hpc = max(min_t(u8, rxlpf_rccal_hpc, 31),
27473                                               0);
27474                         txlpf_rccal_lpc = max(min_t(u8, txlpf_rccal_lpc, 31),
27475                                               0);
27476
27477                         write_radio_reg(pi, (RADIO_2056_RX_RXLPF_RCCAL_HPC |
27478                                              ((rx_core ==
27479                                                PHY_CORE_0) ? RADIO_2056_RX0 :
27480                                               RADIO_2056_RX1)),
27481                                         (rxlpf_rccal_hpc | 0x80));
27482
27483                         write_radio_reg(pi, (RADIO_2056_TX_TXLPF_RCCAL |
27484                                              ((rx_core ==
27485                                                PHY_CORE_0) ? RADIO_2056_TX0 :
27486                                               RADIO_2056_TX1)),
27487                                         (txlpf_rccal_lpc | 0x80));
27488                 }
27489         }
27490
27491         write_phy_reg(pi, 0x01, orig_BBConfig);
27492
27493         wlc_phy_resetcca_nphy(pi);
27494
27495         if (NREV_GE(pi->pubpi.phy_rev, 7))
27496                 wlc_phy_rfctrl_override_1tomany_nphy(
27497                         pi,
27498                         NPHY_REV7_RfctrlOverride_cmd_rxgain,
27499                         0, 0x3, 1);
27500         else
27501                 wlc_phy_rfctrl_override_nphy(pi, (0x1 << 12), 0, 0x3, 1);
27502
27503         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27504
27505         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27506                                  gain_save);
27507
27508         if (NREV_GE(pi->pubpi.phy_rev, 4))
27509                 pi->phyhang_avoid = phyhang_avoid_state;
27510
27511         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27512
27513         return 0;
27514 }
27515
27516 static int
27517 wlc_phy_cal_rxiq_nphy_rev2(struct brcms_phy *pi,
27518                            struct nphy_txgains target_gain, bool debug)
27519 {
27520         struct phy_iq_est est[PHY_CORE_MAX];
27521         u8 core_num, rx_core, tx_core;
27522         u16 lna_vals[] = { 0x3, 0x3, 0x1 };
27523         u16 hpf1_vals[] = { 0x7, 0x2, 0x0 };
27524         u16 hpf2_vals[] = { 0x2, 0x0, 0x0 };
27525         s16 curr_hpf1, curr_hpf2, curr_hpf, curr_lna;
27526         s16 desired_log2_pwr, actual_log2_pwr, hpf_change;
27527         u16 orig_RfseqCoreActv, orig_AfectrlCore, orig_AfectrlOverride;
27528         u16 orig_RfctrlIntcRx, orig_RfctrlIntcTx;
27529         u16 num_samps;
27530         u32 i_pwr, q_pwr, tot_pwr[3];
27531         u8 gain_pass, use_hpf_num;
27532         u16 mask, val1, val2;
27533         u16 core_no;
27534         u16 gain_save[2];
27535         u16 cal_gain[2];
27536         struct nphy_iqcal_params cal_params[2];
27537         u8 phy_bw;
27538         int bcmerror = 0;
27539         bool first_playtone = true;
27540
27541         wlc_phy_stay_in_carriersearch_nphy(pi, true);
27542
27543         if (NREV_LT(pi->pubpi.phy_rev, 2))
27544                 wlc_phy_reapply_txcal_coeffs_nphy(pi);
27545
27546         wlc_phy_table_read_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, gain_save);
27547
27548         for (core_no = 0; core_no <= 1; core_no++) {
27549                 wlc_phy_iqcal_gainparams_nphy(pi, core_no, target_gain,
27550                                               &cal_params[core_no]);
27551                 cal_gain[core_no] = cal_params[core_no].cal_gain;
27552         }
27553
27554         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16, cal_gain);
27555
27556         num_samps = 1024;
27557         desired_log2_pwr = 13;
27558
27559         for (core_num = 0; core_num < 2; core_num++) {
27560
27561                 rx_core = core_num;
27562                 tx_core = 1 - core_num;
27563
27564                 orig_RfseqCoreActv = read_phy_reg(pi, 0xa2);
27565                 orig_AfectrlCore = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27566                                                 0xa6 : 0xa7);
27567                 orig_AfectrlOverride = read_phy_reg(pi, 0xa5);
27568                 orig_RfctrlIntcRx = read_phy_reg(pi, (rx_core == PHY_CORE_0) ?
27569                                                  0x91 : 0x92);
27570                 orig_RfctrlIntcTx = read_phy_reg(pi, (tx_core == PHY_CORE_0) ?
27571                                                  0x91 : 0x92);
27572
27573                 mod_phy_reg(pi, 0xa2, (0xf << 12), (1 << tx_core) << 12);
27574                 mod_phy_reg(pi, 0xa2, (0xf << 0), (1 << tx_core) << 0);
27575
27576                 or_phy_reg(pi, ((rx_core == PHY_CORE_0) ? 0xa6 : 0xa7),
27577                            ((0x1 << 1) | (0x1 << 2)));
27578                 or_phy_reg(pi, 0xa5, ((0x1 << 1) | (0x1 << 2)));
27579
27580                 if (((pi->nphy_rxcalparams) & 0xff000000))
27581                         write_phy_reg(pi,
27582                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27583                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27584                                         0x140 : 0x110));
27585                 else
27586                         write_phy_reg(pi,
27587                                       (rx_core == PHY_CORE_0) ? 0x91 : 0x92,
27588                                       (CHSPEC_IS5G(pi->radio_chanspec) ?
27589                                        0x180 : 0x120));
27590
27591                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 : 0x92,
27592                               (CHSPEC_IS5G(pi->radio_chanspec) ? 0x148 :
27593                                0x114));
27594
27595                 mask = RADIO_2055_COUPLE_RX_MASK | RADIO_2055_COUPLE_TX_MASK;
27596                 if (rx_core == PHY_CORE_0) {
27597                         val1 = RADIO_2055_COUPLE_RX_MASK;
27598                         val2 = RADIO_2055_COUPLE_TX_MASK;
27599                 } else {
27600                         val1 = RADIO_2055_COUPLE_TX_MASK;
27601                         val2 = RADIO_2055_COUPLE_RX_MASK;
27602                 }
27603
27604                 if ((pi->nphy_rxcalparams & 0x10000)) {
27605                         mod_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, mask,
27606                                       val1);
27607                         mod_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, mask,
27608                                       val2);
27609                 }
27610
27611                 for (gain_pass = 0; gain_pass < 4; gain_pass++) {
27612
27613                         if (debug)
27614                                 mdelay(WAIT_FOR_SCOPE);
27615
27616                         if (gain_pass < 3) {
27617                                 curr_lna = lna_vals[gain_pass];
27618                                 curr_hpf1 = hpf1_vals[gain_pass];
27619                                 curr_hpf2 = hpf2_vals[gain_pass];
27620                         } else {
27621
27622                                 if (tot_pwr[1] > 10000) {
27623                                         curr_lna = lna_vals[2];
27624                                         curr_hpf1 = hpf1_vals[2];
27625                                         curr_hpf2 = hpf2_vals[2];
27626                                         use_hpf_num = 1;
27627                                         curr_hpf = curr_hpf1;
27628                                         actual_log2_pwr =
27629                                                 wlc_phy_nbits(tot_pwr[2]);
27630                                 } else {
27631                                         if (tot_pwr[0] > 10000) {
27632                                                 curr_lna = lna_vals[1];
27633                                                 curr_hpf1 = hpf1_vals[1];
27634                                                 curr_hpf2 = hpf2_vals[1];
27635                                                 use_hpf_num = 1;
27636                                                 curr_hpf = curr_hpf1;
27637                                                 actual_log2_pwr =
27638                                                         wlc_phy_nbits(
27639                                                                 tot_pwr[1]);
27640                                         } else {
27641                                                 curr_lna = lna_vals[0];
27642                                                 curr_hpf1 = hpf1_vals[0];
27643                                                 curr_hpf2 = hpf2_vals[0];
27644                                                 use_hpf_num = 2;
27645                                                 curr_hpf = curr_hpf2;
27646                                                 actual_log2_pwr =
27647                                                         wlc_phy_nbits(
27648                                                                 tot_pwr[0]);
27649                                         }
27650                                 }
27651
27652                                 hpf_change = desired_log2_pwr - actual_log2_pwr;
27653                                 curr_hpf += hpf_change;
27654                                 curr_hpf = max(min_t(u16, curr_hpf, 10), 0);
27655                                 if (use_hpf_num == 1)
27656                                         curr_hpf1 = curr_hpf;
27657                                 else
27658                                         curr_hpf2 = curr_hpf;
27659                         }
27660
27661                         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10),
27662                                                      ((curr_hpf2 << 8) |
27663                                                       (curr_hpf1 << 4) |
27664                                                       (curr_lna << 2)), 0x3, 0);
27665                         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27666
27667                         wlc_phy_stopplayback_nphy(pi);
27668
27669                         if (first_playtone) {
27670                                 bcmerror = wlc_phy_tx_tone_nphy(pi, 4000,
27671                                                 (u16) (pi->nphy_rxcalparams &
27672                                                        0xffff), 0, 0, true);
27673                                 first_playtone = false;
27674                         } else {
27675                                 phy_bw = (CHSPEC_IS40(pi->radio_chanspec)) ?
27676                                           40 : 20;
27677                                 wlc_phy_runsamples_nphy(pi, phy_bw * 8, 0xffff,
27678                                                         0, 0, 0, true);
27679                         }
27680
27681                         if (bcmerror == 0) {
27682                                 if (gain_pass < 3) {
27683
27684                                         wlc_phy_rx_iq_est_nphy(pi, est,
27685                                                                num_samps, 32,
27686                                                                0);
27687                                         i_pwr = (est[rx_core].i_pwr +
27688                                                  num_samps / 2) / num_samps;
27689                                         q_pwr = (est[rx_core].q_pwr +
27690                                                  num_samps / 2) / num_samps;
27691                                         tot_pwr[gain_pass] = i_pwr + q_pwr;
27692                                 } else {
27693
27694                                         wlc_phy_calc_rx_iq_comp_nphy(pi,
27695                                                                      (1 <<
27696                                                                       rx_core));
27697                                 }
27698
27699                                 wlc_phy_stopplayback_nphy(pi);
27700                         }
27701
27702                         if (bcmerror != 0)
27703                                 break;
27704                 }
27705
27706                 and_radio_reg(pi, RADIO_2055_CORE1_GEN_SPARE2, ~mask);
27707                 and_radio_reg(pi, RADIO_2055_CORE2_GEN_SPARE2, ~mask);
27708
27709                 write_phy_reg(pi, (tx_core == PHY_CORE_0) ? 0x91 :
27710                               0x92, orig_RfctrlIntcTx);
27711                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0x91 :
27712                               0x92, orig_RfctrlIntcRx);
27713                 write_phy_reg(pi, 0xa5, orig_AfectrlOverride);
27714                 write_phy_reg(pi, (rx_core == PHY_CORE_0) ? 0xa6 :
27715                               0xa7, orig_AfectrlCore);
27716                 write_phy_reg(pi, 0xa2, orig_RfseqCoreActv);
27717
27718                 if (bcmerror != 0)
27719                         break;
27720         }
27721
27722         wlc_phy_rfctrl_override_nphy(pi, (0x1 << 10), 0, 0x3, 1);
27723         wlc_phy_force_rfseq_nphy(pi, NPHY_RFSEQ_RESET2RX);
27724
27725         wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_RFSEQ, 2, 0x110, 16,
27726                                  gain_save);
27727
27728         wlc_phy_stay_in_carriersearch_nphy(pi, false);
27729
27730         return bcmerror;
27731 }
27732
27733 int
27734 wlc_phy_cal_rxiq_nphy(struct brcms_phy *pi, struct nphy_txgains target_gain,
27735                       u8 cal_type, bool debug)
27736 {
27737         if (NREV_GE(pi->pubpi.phy_rev, 7))
27738                 cal_type = 0;
27739
27740         if (NREV_GE(pi->pubpi.phy_rev, 3))
27741                 return wlc_phy_cal_rxiq_nphy_rev3(pi, target_gain, cal_type,
27742                                                   debug);
27743         else
27744                 return wlc_phy_cal_rxiq_nphy_rev2(pi, target_gain, debug);
27745 }
27746
27747 void wlc_phy_txpwr_fixpower_nphy(struct brcms_phy *pi)
27748 {
27749         uint core;
27750         u32 txgain;
27751         u16 rad_gain, dac_gain, bbmult, m1m2;
27752         u8 txpi[2], chan_freq_range;
27753         s32 rfpwr_offset;
27754
27755         if (pi->phyhang_avoid)
27756                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
27757
27758         if (pi->sh->sromrev < 4) {
27759                 txpi[0] = txpi[1] = 72;
27760         } else {
27761
27762                 chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, 0);
27763                 switch (chan_freq_range) {
27764                 case WL_CHAN_FREQ_RANGE_2G:
27765                 case WL_CHAN_FREQ_RANGE_5GL:
27766                 case WL_CHAN_FREQ_RANGE_5GM:
27767                 case WL_CHAN_FREQ_RANGE_5GH:
27768                         txpi[0] = 0;
27769                         txpi[1] = 0;
27770                         break;
27771                 default:
27772                         txpi[0] = txpi[1] = 91;
27773                         break;
27774                 }
27775         }
27776
27777         if (NREV_GE(pi->pubpi.phy_rev, 7))
27778                 txpi[0] = txpi[1] = 30;
27779         else if (NREV_GE(pi->pubpi.phy_rev, 3))
27780                 txpi[0] = txpi[1] = 40;
27781
27782         if (NREV_LT(pi->pubpi.phy_rev, 7)) {
27783
27784                 if ((txpi[0] < 40) || (txpi[0] > 100) ||
27785                     (txpi[1] < 40) || (txpi[1] > 100))
27786                         txpi[0] = txpi[1] = 91;
27787         }
27788
27789         pi->nphy_txpwrindex[PHY_CORE_0].index_internal = txpi[0];
27790         pi->nphy_txpwrindex[PHY_CORE_1].index_internal = txpi[1];
27791         pi->nphy_txpwrindex[PHY_CORE_0].index_internal_save = txpi[0];
27792         pi->nphy_txpwrindex[PHY_CORE_1].index_internal_save = txpi[1];
27793
27794         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
27795                 uint phyrev = pi->pubpi.phy_rev;
27796
27797                 if (NREV_GE(phyrev, 3)) {
27798                         if (PHY_IPA(pi)) {
27799                                 u32 *tx_gaintbl =
27800                                         wlc_phy_get_ipa_gaintbl_nphy(pi);
27801                                 txgain = tx_gaintbl[txpi[core]];
27802                         } else {
27803                                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
27804                                         if (NREV_IS(phyrev, 3)) {
27805                                                 txgain =
27806                                                       nphy_tpc_5GHz_txgain_rev3
27807                                                                    [txpi[core]];
27808                                         } else if (NREV_IS(phyrev, 4)) {
27809                                                 txgain = (
27810                                                   pi->srom_fem5g.extpagain ==
27811                                                   3) ?
27812                                                   nphy_tpc_5GHz_txgain_HiPwrEPA
27813                                                  [txpi[core]] :
27814                                                  nphy_tpc_5GHz_txgain_rev4
27815                                                  [txpi[core]];
27816                                         } else {
27817                                                 txgain =
27818                                                       nphy_tpc_5GHz_txgain_rev5
27819                                                                    [txpi[core]];
27820                                         }
27821                                 } else {
27822                                         if (NREV_GE(phyrev, 5) &&
27823                                             (pi->srom_fem2g.extpagain == 3)) {
27824                                                 txgain =
27825                                                         nphy_tpc_txgain_HiPwrEPA
27826                                                         [txpi[core]];
27827                                         } else {
27828                                                 txgain = nphy_tpc_txgain_rev3
27829                                                          [txpi[core]];
27830                                         }
27831                                 }
27832                         }
27833                 } else {
27834                         txgain = nphy_tpc_txgain[txpi[core]];
27835                 }
27836
27837                 if (NREV_GE(phyrev, 3))
27838                         rad_gain = (txgain >> 16) & ((1 << (32 - 16 + 1)) - 1);
27839                 else
27840                         rad_gain = (txgain >> 16) & ((1 << (28 - 16 + 1)) - 1);
27841
27842                 if (NREV_GE(phyrev, 7))
27843                         dac_gain = (txgain >> 8) & ((1 << (10 - 8 + 1)) - 1);
27844                 else
27845                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
27846
27847                 bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
27848
27849                 if (NREV_GE(phyrev, 3))
27850                         mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
27851                                          0xa5), (0x1 << 8), (0x1 << 8));
27852                 else
27853                         mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
27854
27855                 write_phy_reg(pi, (core == PHY_CORE_0) ? 0xaa : 0xab, dac_gain);
27856
27857                 wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
27858                                          &rad_gain);
27859
27860                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
27861                 m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
27862                 m1m2 |= ((core == PHY_CORE_0) ? (bbmult << 8) : (bbmult << 0));
27863                 wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
27864
27865                 if (PHY_IPA(pi)) {
27866                         wlc_phy_table_read_nphy(pi,
27867                                                 (core ==
27868                                                  PHY_CORE_0 ?
27869                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
27870                                                  NPHY_TBL_ID_CORE2TXPWRCTL), 1,
27871                                                 576 + txpi[core], 32,
27872                                                 &rfpwr_offset);
27873
27874                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27875                                     0x29b, (0x1ff << 4),
27876                                     ((s16) rfpwr_offset) << 4);
27877
27878                         mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
27879                                     0x29b, (0x1 << 2), (1) << 2);
27880
27881                 }
27882         }
27883
27884         and_phy_reg(pi, 0xbf, (u16) (~(0x1f << 0)));
27885
27886         if (pi->phyhang_avoid)
27887                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
27888 }
27889
27890 static void
27891 wlc_phy_txpwr_nphy_srom_convert(u8 *srom_max, u16 *pwr_offset,
27892                                 u8 tmp_max_pwr, u8 rate_start,
27893                                 u8 rate_end)
27894 {
27895         u8 rate;
27896         u8 word_num, nibble_num;
27897         u8 tmp_nibble;
27898
27899         for (rate = rate_start; rate <= rate_end; rate++) {
27900                 word_num = (rate - rate_start) >> 2;
27901                 nibble_num = (rate - rate_start) & 0x3;
27902                 tmp_nibble = (pwr_offset[word_num] >> 4 * nibble_num) & 0xf;
27903
27904                 srom_max[rate] = tmp_max_pwr - 2 * tmp_nibble;
27905         }
27906 }
27907
27908 static void
27909 wlc_phy_txpwr_nphy_po_apply(u8 *srom_max, u8 pwr_offset,
27910                             u8 rate_start, u8 rate_end)
27911 {
27912         u8 rate;
27913
27914         for (rate = rate_start; rate <= rate_end; rate++)
27915                 srom_max[rate] -= 2 * pwr_offset;
27916 }
27917
27918 void
27919 wlc_phy_ofdm_to_mcs_powers_nphy(u8 *power, u8 rate_mcs_start,
27920                                 u8 rate_mcs_end, u8 rate_ofdm_start)
27921 {
27922         u8 rate1, rate2;
27923
27924         rate2 = rate_ofdm_start;
27925         for (rate1 = rate_mcs_start; rate1 <= rate_mcs_end - 1; rate1++) {
27926                 power[rate1] = power[rate2];
27927                 rate2 += (rate1 == rate_mcs_start) ? 2 : 1;
27928         }
27929         power[rate_mcs_end] = power[rate_mcs_end - 1];
27930 }
27931
27932 void
27933 wlc_phy_mcs_to_ofdm_powers_nphy(u8 *power, u8 rate_ofdm_start,
27934                                 u8 rate_ofdm_end, u8 rate_mcs_start)
27935 {
27936         u8 rate1, rate2;
27937
27938         for (rate1 = rate_ofdm_start, rate2 = rate_mcs_start;
27939              rate1 <= rate_ofdm_end; rate1++, rate2++) {
27940                 power[rate1] = power[rate2];
27941                 if (rate1 == rate_ofdm_start)
27942                         power[++rate1] = power[rate2];
27943         }
27944 }
27945
27946 void wlc_phy_txpwr_apply_nphy(struct brcms_phy *pi)
27947 {
27948         uint rate1, rate2, band_num;
27949         u8 tmp_bw40po = 0, tmp_cddpo = 0, tmp_stbcpo = 0;
27950         u8 tmp_max_pwr = 0;
27951         u16 pwr_offsets1[2], *pwr_offsets2 = NULL;
27952         u8 *tx_srom_max_rate = NULL;
27953
27954         for (band_num = 0; band_num < (CH_2G_GROUP + CH_5G_GROUP);
27955              band_num++) {
27956                 switch (band_num) {
27957                 case 0:
27958
27959                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_2g,
27960                                           pi->nphy_pwrctrl_info[1].max_pwr_2g);
27961
27962                         pwr_offsets1[0] = pi->cck2gpo;
27963                         wlc_phy_txpwr_nphy_srom_convert(pi->tx_srom_max_rate_2g,
27964                                                         pwr_offsets1,
27965                                                         tmp_max_pwr,
27966                                                         TXP_FIRST_CCK,
27967                                                         TXP_LAST_CCK);
27968
27969                         pwr_offsets1[0] = (u16) (pi->ofdm2gpo & 0xffff);
27970                         pwr_offsets1[1] =
27971                                 (u16) (pi->ofdm2gpo >> 16) & 0xffff;
27972
27973                         pwr_offsets2 = pi->mcs2gpo;
27974
27975                         tmp_cddpo = pi->cdd2gpo;
27976                         tmp_stbcpo = pi->stbc2gpo;
27977                         tmp_bw40po = pi->bw402gpo;
27978
27979                         tx_srom_max_rate = pi->tx_srom_max_rate_2g;
27980                         break;
27981                 case 1:
27982
27983                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gm,
27984                                           pi->nphy_pwrctrl_info[1].max_pwr_5gm);
27985
27986                         pwr_offsets1[0] = (u16) (pi->ofdm5gpo & 0xffff);
27987                         pwr_offsets1[1] =
27988                                 (u16) (pi->ofdm5gpo >> 16) & 0xffff;
27989
27990                         pwr_offsets2 = pi->mcs5gpo;
27991
27992                         tmp_cddpo = pi->cdd5gpo;
27993                         tmp_stbcpo = pi->stbc5gpo;
27994                         tmp_bw40po = pi->bw405gpo;
27995
27996                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_mid;
27997                         break;
27998                 case 2:
27999
28000                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gl,
28001                                           pi->nphy_pwrctrl_info[1].max_pwr_5gl);
28002
28003                         pwr_offsets1[0] = (u16) (pi->ofdm5glpo & 0xffff);
28004                         pwr_offsets1[1] =
28005                                 (u16) (pi->ofdm5glpo >> 16) & 0xffff;
28006
28007                         pwr_offsets2 = pi->mcs5glpo;
28008
28009                         tmp_cddpo = pi->cdd5glpo;
28010                         tmp_stbcpo = pi->stbc5glpo;
28011                         tmp_bw40po = pi->bw405glpo;
28012
28013                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_low;
28014                         break;
28015                 case 3:
28016
28017                         tmp_max_pwr = min(pi->nphy_pwrctrl_info[0].max_pwr_5gh,
28018                                           pi->nphy_pwrctrl_info[1].max_pwr_5gh);
28019
28020                         pwr_offsets1[0] = (u16) (pi->ofdm5ghpo & 0xffff);
28021                         pwr_offsets1[1] =
28022                                 (u16) (pi->ofdm5ghpo >> 16) & 0xffff;
28023
28024                         pwr_offsets2 = pi->mcs5ghpo;
28025
28026                         tmp_cddpo = pi->cdd5ghpo;
28027                         tmp_stbcpo = pi->stbc5ghpo;
28028                         tmp_bw40po = pi->bw405ghpo;
28029
28030                         tx_srom_max_rate = pi->tx_srom_max_rate_5g_hi;
28031                         break;
28032                 }
28033
28034                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets1,
28035                                                 tmp_max_pwr, TXP_FIRST_OFDM,
28036                                                 TXP_LAST_OFDM);
28037
28038                 wlc_phy_ofdm_to_mcs_powers_nphy(tx_srom_max_rate,
28039                                                 TXP_FIRST_MCS_20_SISO,
28040                                                 TXP_LAST_MCS_20_SISO,
28041                                                 TXP_FIRST_OFDM);
28042
28043                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28044                                                 tmp_max_pwr,
28045                                                 TXP_FIRST_MCS_20_CDD,
28046                                                 TXP_LAST_MCS_20_CDD);
28047
28048                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28049                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28050                                                     TXP_FIRST_MCS_20_CDD,
28051                                                     TXP_LAST_MCS_20_CDD);
28052
28053                 wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28054                                                 TXP_FIRST_OFDM_20_CDD,
28055                                                 TXP_LAST_OFDM_20_CDD,
28056                                                 TXP_FIRST_MCS_20_CDD);
28057
28058                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate, pwr_offsets2,
28059                                                 tmp_max_pwr,
28060                                                 TXP_FIRST_MCS_20_STBC,
28061                                                 TXP_LAST_MCS_20_STBC);
28062
28063                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28064                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28065                                                     tmp_stbcpo,
28066                                                     TXP_FIRST_MCS_20_STBC,
28067                                                     TXP_LAST_MCS_20_STBC);
28068
28069                 wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28070                                                 &pwr_offsets2[2], tmp_max_pwr,
28071                                                 TXP_FIRST_MCS_20_SDM,
28072                                                 TXP_LAST_MCS_20_SDM);
28073
28074                 if (NPHY_IS_SROM_REINTERPRET) {
28075
28076                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28077                                                         &pwr_offsets2[4],
28078                                                         tmp_max_pwr,
28079                                                         TXP_FIRST_MCS_40_SISO,
28080                                                         TXP_LAST_MCS_40_SISO);
28081
28082                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28083                                                         TXP_FIRST_OFDM_40_SISO,
28084                                                         TXP_LAST_OFDM_40_SISO,
28085                                                         TXP_FIRST_MCS_40_SISO);
28086
28087                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28088                                                         &pwr_offsets2[4],
28089                                                         tmp_max_pwr,
28090                                                         TXP_FIRST_MCS_40_CDD,
28091                                                         TXP_LAST_MCS_40_CDD);
28092
28093                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate, tmp_cddpo,
28094                                                     TXP_FIRST_MCS_40_CDD,
28095                                                     TXP_LAST_MCS_40_CDD);
28096
28097                         wlc_phy_mcs_to_ofdm_powers_nphy(tx_srom_max_rate,
28098                                                         TXP_FIRST_OFDM_40_CDD,
28099                                                         TXP_LAST_OFDM_40_CDD,
28100                                                         TXP_FIRST_MCS_40_CDD);
28101
28102                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28103                                                         &pwr_offsets2[4],
28104                                                         tmp_max_pwr,
28105                                                         TXP_FIRST_MCS_40_STBC,
28106                                                         TXP_LAST_MCS_40_STBC);
28107
28108                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28109                                                     tmp_stbcpo,
28110                                                     TXP_FIRST_MCS_40_STBC,
28111                                                     TXP_LAST_MCS_40_STBC);
28112
28113                         wlc_phy_txpwr_nphy_srom_convert(tx_srom_max_rate,
28114                                                         &pwr_offsets2[6],
28115                                                         tmp_max_pwr,
28116                                                         TXP_FIRST_MCS_40_SDM,
28117                                                         TXP_LAST_MCS_40_SDM);
28118                 } else {
28119
28120                         for (rate1 = TXP_FIRST_OFDM_40_SISO, rate2 =
28121                                      TXP_FIRST_OFDM;
28122                              rate1 <= TXP_LAST_MCS_40_SDM;
28123                              rate1++, rate2++)
28124                                 tx_srom_max_rate[rate1] =
28125                                         tx_srom_max_rate[rate2];
28126                 }
28127
28128                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28129                         wlc_phy_txpwr_nphy_po_apply(tx_srom_max_rate,
28130                                                     tmp_bw40po,
28131                                                     TXP_FIRST_OFDM_40_SISO,
28132                                                     TXP_LAST_MCS_40_SDM);
28133
28134                 tx_srom_max_rate[TXP_MCS_32] =
28135                         tx_srom_max_rate[TXP_FIRST_MCS_40_CDD];
28136         }
28137
28138         return;
28139 }
28140
28141 void wlc_phy_txpower_recalc_target_nphy(struct brcms_phy *pi)
28142 {
28143         u8 tx_pwr_ctrl_state;
28144         wlc_phy_txpwr_limit_to_tbl_nphy(pi);
28145         wlc_phy_txpwrctrl_pwr_setup_nphy(pi);
28146
28147         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28148
28149         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12)) {
28150                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, MCTL_PHYLOCK);
28151                 (void)bcma_read32(pi->d11core, D11REGOFFS(maccontrol));
28152                 udelay(1);
28153         }
28154
28155         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28156
28157         if (D11REV_IS(pi->sh->corerev, 11) || D11REV_IS(pi->sh->corerev, 12))
28158                 wlapi_bmac_mctrl(pi->sh->physhim, MCTL_PHYLOCK, 0);
28159 }
28160
28161 static bool wlc_phy_txpwr_ison_nphy(struct brcms_phy *pi)
28162 {
28163         return read_phy_reg((pi), 0x1e7) & ((0x1 << 15) |
28164                                             (0x1 << 14) | (0x1 << 13));
28165 }
28166
28167 u16 wlc_phy_txpwr_idx_get_nphy(struct brcms_phy *pi)
28168 {
28169         u16 tmp;
28170         u16 pwr_idx[2];
28171
28172         if (wlc_phy_txpwr_ison_nphy(pi)) {
28173                 pwr_idx[0] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_0);
28174                 pwr_idx[1] = wlc_phy_txpwr_idx_cur_get_nphy(pi, PHY_CORE_1);
28175
28176                 tmp = (pwr_idx[0] << 8) | pwr_idx[1];
28177         } else {
28178                 tmp = ((pi->nphy_txpwrindex[PHY_CORE_0].index_internal & 0xff)
28179                         << 8) |
28180                         (pi->nphy_txpwrindex[PHY_CORE_1].index_internal & 0xff);
28181         }
28182
28183         return tmp;
28184 }
28185
28186 void wlc_phy_txpwr_papd_cal_nphy(struct brcms_phy *pi)
28187 {
28188         if (PHY_IPA(pi)
28189             && (pi->nphy_force_papd_cal
28190                 || (wlc_phy_txpwr_ison_nphy(pi)
28191                     &&
28192                     (((u32)
28193                       abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 0) -
28194                           pi->nphy_papd_tx_gain_at_last_cal[0]) >= 4)
28195                      || ((u32)
28196                          abs(wlc_phy_txpwr_idx_cur_get_nphy(pi, 1) -
28197                              pi->nphy_papd_tx_gain_at_last_cal[1]) >= 4)))))
28198                 wlc_phy_a4(pi, true);
28199 }
28200
28201 void wlc_phy_txpwrctrl_enable_nphy(struct brcms_phy *pi, u8 ctrl_type)
28202 {
28203         u16 mask = 0, val = 0, ishw = 0;
28204         u8 ctr;
28205         uint core;
28206         u32 tbl_offset;
28207         u32 tbl_len;
28208         u16 regval[84];
28209
28210         if (pi->phyhang_avoid)
28211                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28212
28213         switch (ctrl_type) {
28214         case PHY_TPC_HW_OFF:
28215         case PHY_TPC_HW_ON:
28216                 pi->nphy_txpwrctrl = ctrl_type;
28217                 break;
28218         default:
28219                 break;
28220         }
28221
28222         if (ctrl_type == PHY_TPC_HW_OFF) {
28223                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28224
28225                         if (wlc_phy_txpwr_ison_nphy(pi)) {
28226                                 for (core = 0; core < pi->pubpi.phy_corenum;
28227                                      core++)
28228                                         pi->nphy_txpwr_idx[core] =
28229                                                 wlc_phy_txpwr_idx_cur_get_nphy(
28230                                                         pi,
28231                                                         (u8) core);
28232                         }
28233
28234                 }
28235
28236                 tbl_len = 84;
28237                 tbl_offset = 64;
28238                 for (ctr = 0; ctr < tbl_len; ctr++)
28239                         regval[ctr] = 0;
28240                 wlc_phy_table_write_nphy(pi, 26, tbl_len, tbl_offset, 16,
28241                                          regval);
28242                 wlc_phy_table_write_nphy(pi, 27, tbl_len, tbl_offset, 16,
28243                                          regval);
28244
28245                 if (NREV_GE(pi->pubpi.phy_rev, 3))
28246                         and_phy_reg(pi, 0x1e7,
28247                                     (u16) (~((0x1 << 15) |
28248                                              (0x1 << 14) | (0x1 << 13))));
28249                 else
28250                         and_phy_reg(pi, 0x1e7,
28251                                     (u16) (~((0x1 << 14) | (0x1 << 13))));
28252
28253                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28254                         or_phy_reg(pi, 0x8f, (0x1 << 8));
28255                         or_phy_reg(pi, 0xa5, (0x1 << 8));
28256                 } else {
28257                         or_phy_reg(pi, 0xa5, (0x1 << 14));
28258                 }
28259
28260                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28261                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x53);
28262                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28263                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x5a);
28264
28265                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28266                     pi->bw == WL_CHANSPEC_BW_40)
28267                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28268                                        MHF1_IQSWAP_WAR, BRCM_BAND_ALL);
28269
28270         } else {
28271
28272                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE1TXPWRCTL, 84, 64,
28273                                          8, pi->adj_pwr_tbl_nphy);
28274                 wlc_phy_table_write_nphy(pi, NPHY_TBL_ID_CORE2TXPWRCTL, 84, 64,
28275                                          8, pi->adj_pwr_tbl_nphy);
28276
28277                 ishw = (ctrl_type == PHY_TPC_HW_ON) ? 0x1 : 0x0;
28278                 mask = (0x1 << 14) | (0x1 << 13);
28279                 val = (ishw << 14) | (ishw << 13);
28280
28281                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28282                         mask |= (0x1 << 15);
28283                         val |= (ishw << 15);
28284                 }
28285
28286                 mod_phy_reg(pi, 0x1e7, mask, val);
28287
28288                 if (CHSPEC_IS5G(pi->radio_chanspec)) {
28289                         if (NREV_GE(pi->pubpi.phy_rev, 7)) {
28290                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x32);
28291                                 mod_phy_reg(pi, 0x222, (0xff << 0), 0x32);
28292                         } else {
28293                                 mod_phy_reg(pi, 0x1e7, (0x7f << 0), 0x64);
28294                                 if (NREV_GT(pi->pubpi.phy_rev, 1))
28295                                         mod_phy_reg(pi, 0x222,
28296                                                     (0xff << 0), 0x64);
28297                         }
28298                 }
28299
28300                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28301                         if ((pi->nphy_txpwr_idx[0] != 128)
28302                             && (pi->nphy_txpwr_idx[1] != 128))
28303                                 wlc_phy_txpwr_idx_cur_set_nphy(pi,
28304                                                                pi->
28305                                                                nphy_txpwr_idx
28306                                                                [0],
28307                                                                pi->
28308                                                                nphy_txpwr_idx
28309                                                                [1]);
28310                 }
28311
28312                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28313                         and_phy_reg(pi, 0x8f, ~(0x1 << 8));
28314                         and_phy_reg(pi, 0xa5, ~(0x1 << 8));
28315                 } else {
28316                         and_phy_reg(pi, 0xa5, ~(0x1 << 14));
28317                 }
28318
28319                 if (NREV_IS(pi->pubpi.phy_rev, 2))
28320                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x3b);
28321                 else if (NREV_LT(pi->pubpi.phy_rev, 2))
28322                         mod_phy_reg(pi, 0xdc, 0x00ff, 0x40);
28323
28324                 if (NREV_LT(pi->pubpi.phy_rev, 2) &&
28325                     pi->bw == WL_CHANSPEC_BW_40)
28326                         wlapi_bmac_mhf(pi->sh->physhim, MHF1, MHF1_IQSWAP_WAR,
28327                                        0x0, BRCM_BAND_ALL);
28328
28329                 if (PHY_IPA(pi)) {
28330                         mod_phy_reg(pi, (0 == PHY_CORE_0) ? 0x297 :
28331                                     0x29b, (0x1 << 2), (0) << 2);
28332
28333                         mod_phy_reg(pi, (1 == PHY_CORE_0) ? 0x297 :
28334                                     0x29b, (0x1 << 2), (0) << 2);
28335
28336                 }
28337
28338         }
28339
28340         if (pi->phyhang_avoid)
28341                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28342 }
28343
28344 void
28345 wlc_phy_txpwr_index_nphy(struct brcms_phy *pi, u8 core_mask, s8 txpwrindex,
28346                          bool restore_cals)
28347 {
28348         u8 core, txpwrctl_tbl;
28349         u16 tx_ind0, iq_ind0, lo_ind0;
28350         u16 m1m2;
28351         u32 txgain;
28352         u16 rad_gain, dac_gain;
28353         u8 bbmult;
28354         u32 iqcomp;
28355         u16 iqcomp_a, iqcomp_b;
28356         u32 locomp;
28357         u16 tmpval;
28358         u8 tx_pwr_ctrl_state;
28359         s32 rfpwr_offset;
28360         u16 regval[2];
28361
28362         if (pi->phyhang_avoid)
28363                 wlc_phy_stay_in_carriersearch_nphy(pi, true);
28364
28365         tx_ind0 = 192;
28366         iq_ind0 = 320;
28367         lo_ind0 = 448;
28368
28369         for (core = 0; core < pi->pubpi.phy_corenum; core++) {
28370
28371                 if ((core_mask & (1 << core)) == 0)
28372                         continue;
28373
28374                 txpwrctl_tbl = (core == PHY_CORE_0) ? 26 : 27;
28375
28376                 if (txpwrindex < 0) {
28377                         if (pi->nphy_txpwrindex[core].index < 0)
28378                                 continue;
28379
28380                         if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28381                                 mod_phy_reg(pi, 0x8f,
28382                                             (0x1 << 8),
28383                                             pi->nphy_txpwrindex[core].
28384                                             AfectrlOverride);
28385                                 mod_phy_reg(pi, 0xa5, (0x1 << 8),
28386                                             pi->nphy_txpwrindex[core].
28387                                             AfectrlOverride);
28388                         } else {
28389                                 mod_phy_reg(pi, 0xa5,
28390                                             (0x1 << 14),
28391                                             pi->nphy_txpwrindex[core].
28392                                             AfectrlOverride);
28393                         }
28394
28395                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28396                                       0xaa : 0xab,
28397                                       pi->nphy_txpwrindex[core].AfeCtrlDacGain);
28398
28399                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28400                                                  &pi->nphy_txpwrindex[core].
28401                                                  rad_gain);
28402
28403                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28404                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28405                         m1m2 |= ((core == PHY_CORE_0) ?
28406                                  (pi->nphy_txpwrindex[core].bbmult << 8) :
28407                                  (pi->nphy_txpwrindex[core].bbmult << 0));
28408                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28409
28410                         if (restore_cals) {
28411                                 wlc_phy_table_write_nphy(
28412                                         pi, 15, 2, (80 + 2 * core), 16,
28413                                         &pi->nphy_txpwrindex[core].iqcomp_a);
28414                                 wlc_phy_table_write_nphy(
28415                                         pi, 15, 1, (85 + core), 16,
28416                                         &pi->nphy_txpwrindex[core].locomp);
28417                                 wlc_phy_table_write_nphy(
28418                                         pi, 15, 1, (93 + core), 16,
28419                                         &pi->nphy_txpwrindex[core].locomp);
28420                         }
28421
28422                         wlc_phy_txpwrctrl_enable_nphy(pi, pi->nphy_txpwrctrl);
28423
28424                         pi->nphy_txpwrindex[core].index_internal =
28425                                 pi->nphy_txpwrindex[core].index_internal_save;
28426                 } else {
28427
28428                         if (pi->nphy_txpwrindex[core].index < 0) {
28429
28430                                 if (NREV_GE(pi->pubpi.phy_rev, 3)) {
28431                                         mod_phy_reg(pi, 0x8f,
28432                                                     (0x1 << 8),
28433                                                     pi->nphy_txpwrindex[core].
28434                                                     AfectrlOverride);
28435                                         mod_phy_reg(pi, 0xa5, (0x1 << 8),
28436                                                     pi->nphy_txpwrindex[core].
28437                                                     AfectrlOverride);
28438                                 } else {
28439                                         pi->nphy_txpwrindex[core].
28440                                         AfectrlOverride =
28441                                                 read_phy_reg(pi, 0xa5);
28442                                 }
28443
28444                                 pi->nphy_txpwrindex[core].AfeCtrlDacGain =
28445                                         read_phy_reg(pi, (core == PHY_CORE_0) ?
28446                                                          0xaa : 0xab);
28447
28448                                 wlc_phy_table_read_nphy(pi, 7, 1,
28449                                                         (0x110 + core), 16,
28450                                                         &pi->
28451                                                         nphy_txpwrindex[core].
28452                                                         rad_gain);
28453
28454                                 wlc_phy_table_read_nphy(pi, 15, 1, 87, 16,
28455                                                         &tmpval);
28456                                 tmpval >>= ((core == PHY_CORE_0) ? 8 : 0);
28457                                 tmpval &= 0xff;
28458                                 pi->nphy_txpwrindex[core].bbmult = (u8) tmpval;
28459
28460                                 wlc_phy_table_read_nphy(pi, 15, 2,
28461                                                         (80 + 2 * core), 16,
28462                                                         &pi->
28463                                                         nphy_txpwrindex[core].
28464                                                         iqcomp_a);
28465
28466                                 wlc_phy_table_read_nphy(pi, 15, 1, (85 + core),
28467                                                         16,
28468                                                         &pi->
28469                                                         nphy_txpwrindex[core].
28470                                                         locomp);
28471
28472                                 pi->nphy_txpwrindex[core].index_internal_save =
28473                                         pi->nphy_txpwrindex[core].
28474                                         index_internal;
28475                         }
28476
28477                         tx_pwr_ctrl_state = pi->nphy_txpwrctrl;
28478                         wlc_phy_txpwrctrl_enable_nphy(pi, PHY_TPC_HW_OFF);
28479
28480                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28481                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, ON);
28482
28483                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28484                                                 (tx_ind0 + txpwrindex), 32,
28485                                                 &txgain);
28486
28487                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28488                                 rad_gain = (txgain >> 16) &
28489                                            ((1 << (32 - 16 + 1)) - 1);
28490                         else
28491                                 rad_gain = (txgain >> 16) &
28492                                            ((1 << (28 - 16 + 1)) - 1);
28493
28494                         dac_gain = (txgain >> 8) & ((1 << (13 - 8 + 1)) - 1);
28495                         bbmult = (txgain >> 0) & ((1 << (7 - 0 + 1)) - 1);
28496
28497                         if (NREV_GE(pi->pubpi.phy_rev, 3))
28498                                 mod_phy_reg(pi, ((core == PHY_CORE_0) ? 0x8f :
28499                                                  0xa5), (0x1 << 8), (0x1 << 8));
28500                         else
28501                                 mod_phy_reg(pi, 0xa5, (0x1 << 14), (0x1 << 14));
28502
28503                         write_phy_reg(pi, (core == PHY_CORE_0) ?
28504                                       0xaa : 0xab, dac_gain);
28505
28506                         wlc_phy_table_write_nphy(pi, 7, 1, (0x110 + core), 16,
28507                                                  &rad_gain);
28508
28509                         wlc_phy_table_read_nphy(pi, 15, 1, 87, 16, &m1m2);
28510                         m1m2 &= ((core == PHY_CORE_0) ? 0x00ff : 0xff00);
28511                         m1m2 |= ((core == PHY_CORE_0) ?
28512                                 (bbmult << 8) : (bbmult << 0));
28513
28514                         wlc_phy_table_write_nphy(pi, 15, 1, 87, 16, &m1m2);
28515
28516                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28517                                                 (iq_ind0 + txpwrindex), 32,
28518                                                 &iqcomp);
28519                         iqcomp_a = (iqcomp >> 10) & ((1 << (19 - 10 + 1)) - 1);
28520                         iqcomp_b = (iqcomp >> 0) & ((1 << (9 - 0 + 1)) - 1);
28521
28522                         if (restore_cals) {
28523                                 regval[0] = (u16) iqcomp_a;
28524                                 regval[1] = (u16) iqcomp_b;
28525                                 wlc_phy_table_write_nphy(pi, 15, 2,
28526                                                          (80 + 2 * core), 16,
28527                                                          regval);
28528                         }
28529
28530                         wlc_phy_table_read_nphy(pi, txpwrctl_tbl, 1,
28531                                                 (lo_ind0 + txpwrindex), 32,
28532                                                 &locomp);
28533                         if (restore_cals)
28534                                 wlc_phy_table_write_nphy(pi, 15, 1, (85 + core),
28535                                                          16, &locomp);
28536
28537                         if (NREV_IS(pi->pubpi.phy_rev, 1))
28538                                 wlapi_bmac_phyclk_fgc(pi->sh->physhim, OFF);
28539
28540                         if (PHY_IPA(pi)) {
28541                                 wlc_phy_table_read_nphy(pi,
28542                                                 (core == PHY_CORE_0 ?
28543                                                  NPHY_TBL_ID_CORE1TXPWRCTL :
28544                                                  NPHY_TBL_ID_CORE2TXPWRCTL),
28545                                                 1, 576 + txpwrindex, 32,
28546                                                 &rfpwr_offset);
28547
28548                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28549                                             0x29b, (0x1ff << 4),
28550                                             ((s16) rfpwr_offset) << 4);
28551
28552                                 mod_phy_reg(pi, (core == PHY_CORE_0) ? 0x297 :
28553                                             0x29b, (0x1 << 2), (1) << 2);
28554
28555                         }
28556
28557                         wlc_phy_txpwrctrl_enable_nphy(pi, tx_pwr_ctrl_state);
28558                 }
28559
28560                 pi->nphy_txpwrindex[core].index = txpwrindex;
28561         }
28562
28563         if (pi->phyhang_avoid)
28564                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28565 }
28566
28567 void
28568 wlc_phy_txpower_sromlimit_get_nphy(struct brcms_phy *pi, uint chan, u8 *max_pwr,
28569                                    u8 txp_rate_idx)
28570 {
28571         u8 chan_freq_range;
28572
28573         chan_freq_range = wlc_phy_get_chan_freq_range_nphy(pi, chan);
28574         switch (chan_freq_range) {
28575         case WL_CHAN_FREQ_RANGE_2G:
28576                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28577                 break;
28578         case WL_CHAN_FREQ_RANGE_5GM:
28579                 *max_pwr = pi->tx_srom_max_rate_5g_mid[txp_rate_idx];
28580                 break;
28581         case WL_CHAN_FREQ_RANGE_5GL:
28582                 *max_pwr = pi->tx_srom_max_rate_5g_low[txp_rate_idx];
28583                 break;
28584         case WL_CHAN_FREQ_RANGE_5GH:
28585                 *max_pwr = pi->tx_srom_max_rate_5g_hi[txp_rate_idx];
28586                 break;
28587         default:
28588                 *max_pwr = pi->tx_srom_max_rate_2g[txp_rate_idx];
28589                 break;
28590         }
28591
28592         return;
28593 }
28594
28595 void wlc_phy_stay_in_carriersearch_nphy(struct brcms_phy *pi, bool enable)
28596 {
28597         u16 clip_off[] = { 0xffff, 0xffff };
28598
28599         if (enable) {
28600                 if (pi->nphy_deaf_count == 0) {
28601                         pi->classifier_state =
28602                                 wlc_phy_classifier_nphy(pi, 0, 0);
28603                         wlc_phy_classifier_nphy(pi, (0x7 << 0), 4);
28604                         wlc_phy_clip_det_nphy(pi, 0, pi->clip_state);
28605                         wlc_phy_clip_det_nphy(pi, 1, clip_off);
28606                 }
28607
28608                 pi->nphy_deaf_count++;
28609
28610                 wlc_phy_resetcca_nphy(pi);
28611
28612         } else {
28613                 pi->nphy_deaf_count--;
28614
28615                 if (pi->nphy_deaf_count == 0) {
28616                         wlc_phy_classifier_nphy(pi, (0x7 << 0),
28617                                                 pi->classifier_state);
28618                         wlc_phy_clip_det_nphy(pi, 1, pi->clip_state);
28619                 }
28620         }
28621 }
28622
28623 void wlc_nphy_deaf_mode(struct brcms_phy *pi, bool mode)
28624 {
28625         wlapi_suspend_mac_and_wait(pi->sh->physhim);
28626
28627         if (mode) {
28628                 if (pi->nphy_deaf_count == 0)
28629                         wlc_phy_stay_in_carriersearch_nphy(pi, true);
28630         } else if (pi->nphy_deaf_count > 0) {
28631                 wlc_phy_stay_in_carriersearch_nphy(pi, false);
28632         }
28633
28634         wlapi_enable_mac(pi->sh->physhim);
28635 }